Portál AbcLinuxu, 2. května 2025 11:19

Mažu, mažeš, mažeme

20.2.2010 17:54 | Přečteno: 1291× | Programování | poslední úprava: 22.2.2010 23:54

Pro Windows je spousta vypalovacích programů, ale jen jediný (konkrétně Nero) umí vypalovat vypalovačkou, co nemá přiřazeno žádné písmenko (je připojena do NTFS adresáře - ano, i to Windows umožňuje), nedej bože není připojena vůbec. Pro Linux je tu jen komerční nero a "příkazový" cdrecord či ten jeho fork jánevímjaksejmenuje a pak nadstavby nad ním. Jenže - k3b je docela dobrý soft, jenom mu to občas nejde, protože cdrecord (cdrecord špatně detekuje rychlosti na mojí palírně a nabízí kraviny typu 3,1x, nebo 16,1x, i když to médium nepodporuje a ono to pak na něj snad i 16x pálí, protože to hučí jakkráva. Takové nero, to rychlosti detekuje dobře, jenomže stojí penízky.

To mě vedlo na myšlenku vytvořit si vlastní vypalovací program. A hle, detekce vypalovačky, co není připojena, či je připojena do adresáře, je na Windows absolutní prkotina o 5 řádcích kódu - nechápu, proč to ty aplikace neumí. Na Linux je to díky žádnému API pro enumeraci zařízení bolest v prdeli, viz diskuse.

No což, něco jsem ubastlil, studoval nějaký ty SCSI standardy a příkazy a momentálně to umí mazat CD-RW, DVD-RW a možná DVD+RW (disk nemám, nemůžu vyzkoušet). Chystá se i podpora BD-RE (ano, můj vypalovací program bude umět vypalovat blu-ray disky. Zatím nemám vypalovačku, ale ve standardech je to hezky zdokumentováno a brzy si ji stejně pořídím.

Kód, co jsem zatím napsal, toho umí víc, ale testovací aplikace je zatím poue okýnko na mazání disků (viz. screenshot).

Snažím se tam používat vlákna, aby se mi to nezasekávalo, ale nějaký ten zásek tamje, né všechno mám zatím implementováno asynchroně.

Nejprve jsem to psal bez použití nějakých knihoven, v C++ s použitím milovaného C++0x. GCC má mizernou podporu a tak jsem si nemohl dovolit lambda funkce a spoustu dalšího. Použil jsem zatím jen move konstruktory, delete na mazání kopírovacích konstruktorů, typed enumy, std::thread a std::function a spol. Jenže pak jsem překládal ve Windows a zjistil, že mingw-w64 nemá podporu pro std::thread. Tak jsem se na std::thread vykašlal a jelikož budu stejně potřebovat nějaký to GUIčko, tak jsem nakonec šáhl po Qt4. To však neznamená, že se zbavím všech hezkých C++0x fíčurek a tak bude ke kompilaci potřeba minimálně GCC 4.4, v budoucnu možná vyšší.

Na obrázku se můžete kouknout, jak vypadá mazací dialog a pokud se najde zájemce o otestování, můžu poslat zkompilovanou binárku, zdrojová kódy zveřejním až to bude v trochu pokročilejším stavu, a to pod licencí Do What The Fuck You Want To Public License. Testovací binárku poskytuji pouze pro osobní potřebu a nesmíte ji dále šířit. Zájemci (jako že jich stejně asi moc nebude) mohou poslat e-mail s žádostí (stačí napsat třeba Hele vole, pošli mi ten burn program, verzi pro Windows/Linux) na jardasmid at gmail dot com. Binárka je určena pouze pro procesory x86_64. Binárku pro Windows posílám bez podpůrných knihoven (Qt4), ty si pro Windows musíte zkompilovat sami - budete potřebovat mingw-w64 a opatchované zdrojáky Qt4 (protože jsou tam prasárny typu pointer na int long, což mingw-w64 odmítá jako errory).

Poznámka: Souboru FogTest.cpp na obráku si nevšímejte, jenom se mi to připletlo do sezení v Kate.

Update

Možná udělám i verzi pro FreeBSD x64, letmo jsem koukal na API a vypadá to, že scanování je oproti linuxu radost.        

Hodnocení: 100 %

        špatnédobré        

Obrázky

Mažu, mažeš, mažeme, obrázek 1

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

David Watzke avatar 20.2.2010 20:54 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Mažu, mažeš, mažeme
Odpovědět | Sbalit | Link | Blokovat | Admin
Respekt. Dobrý by bylo opravit cdrecord, kdybys na to měl skill.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
Jardík avatar 20.2.2010 21:21 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Mažu, mažeš, mažeme
Odesláno. Webmail CVUT to nějak podělal, tak jsem to poslal ješte jednou z gmailu. V zápise změním adresu na gmail, ať nemám na školní bordel :-)
Věřím v jednoho Boha.
kotyz avatar 21.2.2010 00:16 kotyz | skóre: 25 | blog: kotyzblog | Plzeň
Rozbalit Rozbalit vše Re: Mažu, mažeš, mažeme
Odpovědět | Sbalit | Link | Blokovat | Admin
a 32b verze nebude? ;-)
Hrdý člen KERNEL ULTRAS. | Furry/Brony/Otaku | Nemám čas ztrácet čas. | In 'pacman -Syu' we trust!
Jardík avatar 21.2.2010 01:00 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Mažu, mažeš, mažeme
Ne! :-)
Věřím v jednoho Boha.
Jardík avatar 21.2.2010 01:03 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Mažu, mažeš, mažeme
Ale to snad neva, ne? Stačí si do 32bit kernelu dát 64bit emulační vrstvu (ehm :-)), nahrát 64bit knihovny a ono ti to půjde taky.
Věřím v jednoho Boha.
kotyz avatar 21.2.2010 16:23 kotyz | skóre: 25 | blog: kotyzblog | Plzeň
Rozbalit Rozbalit vše Re: Mažu, mažeš, mažeme
na 32b procesoru? silne pochybuju ...
Hrdý člen KERNEL ULTRAS. | Furry/Brony/Otaku | Nemám čas ztrácet čas. | In 'pacman -Syu' we trust!
Jardík avatar 21.2.2010 16:32 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Mažu, mažeš, mažeme
No je tam to "ehm", ale na 64bit procesoru by to šlo, MacOS X 10.5 to tak uměl.
Věřím v jednoho Boha.
Jendа avatar 21.2.2010 17:29 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Mažu, mažeš, mažeme
qemu by to možná nějak umělo. Ale výkon potom bude opravdu mizerný (taková šedesátičtyřbitová 468 :-)).
22.2.2010 19:06 Aminux
Rozbalit Rozbalit vše Re: Mažu, mažeš, mažeme
Odpovědět | Sbalit | Link | Blokovat | Admin
Docela by mě zajímalo, jak se to ve Windows dělá. Tedy připojit mechaniku do adresáře.
kotyz avatar 22.2.2010 19:35 kotyz | skóre: 25 | blog: kotyzblog | Plzeň
Rozbalit Rozbalit vše Re: Mažu, mažeš, mažeme
prekvapive se to dela ve sprave disku (disk management) - 1 2
Hrdý člen KERNEL ULTRAS. | Furry/Brony/Otaku | Nemám čas ztrácet čas. | In 'pacman -Syu' we trust!
22.2.2010 20:24 Aminux
Rozbalit Rozbalit vše Re: Mažu, mažeš, mažeme
Díky. Mě nikdy nenapadlo, že ve Win něco takového jde.
Jardík avatar 22.2.2010 22:15 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Mažu, mažeš, mažeme
Akorát bacha na aplikace. Většina z nich je špatně napsaných, špatně používají WinAPI a s něčím takovým se nedokážou vyrovnat.
Věřím v jednoho Boha.
Jendа avatar 22.2.2010 23:36 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Mažu, mažeš, mažeme
Ano, obzvláště dementní instalátory, které se podívají, kolik místa je na C:, a odmítnou pokračovat, i když je třeba do Program Files připojeno něco dostatečně velkého…
Prcek avatar 28.2.2010 15:07 Prcek | skóre: 43 | Jindřichův Hradec / Brno
Rozbalit Rozbalit vše Re: Mažu, mažeš, mažeme
Odpovědět | Sbalit | Link | Blokovat | Admin
Snažím se tam používat vlákna, aby se mi to nezasekávalo, ale nějaký ten zásek tamje, né všechno mám zatím implementováno asynchroně.
No a na KDE4 nadáváš, že to není plynulý :-D. Tak teď už víš, že to nebude tak lehký zařídit, ne? ;-).

Ale jinak obdivuju, že ses do toho pustil.
Člověk je takový, jak vypadá... A já vypadám jako pravá, nefalšovaná děvka!!!

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.