Byla vydána nová major verze 5.0.0 svobodného multiplatformního nástroje BleachBit (GitHub, Wikipedie) určeného především k efektivnímu čištění disku od nepotřebných souborů.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za duben (YouTube).
Provozovatel čínské sociální sítě TikTok dostal v Evropské unii pokutu 530 milionů eur (13,2 miliardy Kč) za nedostatky při ochraně osobních údajů. Ve svém oznámení to dnes uvedla irská Komise pro ochranu údajů (DPC), která jedná jménem EU. Zároveň TikToku nařídila, že pokud správu dat neuvede do šesti měsíců do souladu s požadavky, musí přestat posílat data o unijních uživatelích do Číny. TikTok uvedl, že se proti rozhodnutí odvolá.
Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.
Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.
V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.
Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).
Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Jsem od přírody strašně hravý člověk Hraju si programováním, baví mě to. Teď si programuji takovou C++ nadstavbu nad Gtk. Ano, existuje Gtkmm, ale dle mého názoru má strašně hnusné API. Nadstavbu jsem pojmenoval jedinečným názvem Toolkit. Cílem Toolkitu je rychle a jednoduše vytvářet GUI ve stylu knihovny Qt. Toolkit následně využiji pro JXP Commander. Toolkit nevyužívá žádné dynamické knihovny (kromě Gtk a závislostí), je přímo slinkován s binárkou, a tudíž by nemělo docházet k žádným pomalostem, jako je tomu v případě Gtkmm. Zde je menší příklad:
#include <Toolkit/Toolkit.h> class AppWindow: public Window{ protected: Toolkit::Button *button; Toolkit::Label *label; Toolkit::Entry *entry; void onButtonClick() { Toolkit::MsgBox( this, entry->getText(), L"Your name", mbOk | mbInformation ); } public: AppWindow() { Toolkit::VBox *vbox = new Toolkit::VBox(this); label = new Toolkit::Label(vbox, L"Some text"); label->setText( L"Enter your name" ); entry = new Toolkit::Entry(vbox); button = new Toolkit::Button(vbox, L"OK"); CONNECT_BUTTON_CLICK( button, onButtonClick ); showAll(); } virtual ~AppWindow() { puts("Bye"); Toolkit::App->quit( 0 ); } }; void ToolkitMain() { AppWindow *window; Toolkit::App->init( L"JXP Commander" ); StringArray args = Toolkit::App->getArgs(); window = new AppWindow; Toolkit::App->run(); }
Toolkit má již deklarovánu funkci main (popř. WinMain), kde se inicializuje Gtk, vytvoří se instance třídy Toolkit::Application (App) a předá se řízení funkci ToolkitMain(). App->init nastaví jméno programu. Argumenty programu jsou v poli stringů App->getArgs(). App-> spustí hlavní smyčku programu (gtk_main()). App->quit(navratovyKod) ukončí smyčku zavoláním gtk_main_quit(), pak už jen nastane zrušení objektu App a konec programu.
Nastavení rodičovského objektu se může provést v konstruktoru nebo pomocí funkce Widget::setParent. Vše má ještě další parametry odpovídající parametrům funkcí gtk_box_pack_start, gtk_container_add a gtk_table_attach. Typ rodičovského prvku je zjištěn a zavolá se vždy správná funkce.
Ještě jsem si vzpomněl na jeden prográmek, jež jsem programoval na praxi. Parsuje binární eventlogy Windows (*.evt) a ukládá je v textovém formátu. Čtení eventlogů je to řešeno jako třída, mohla by se to někomu hodit. Program pak tuto třídu využívá a ukládá pak informace do texťáku v kódování cp1250. Ve třídě jsou ale stringy uloženy v ucs2, takže s převodem do libovolného jiného nebude problém. Délka řetězců ve výstupním texťáku je omezena, z důvodu vkládání do databáze.
Tiskni
Sdílej:
Hraju si programováním, baví mě to.Docela změna. Ty seš člověče jak korouhvička. Ne že by na téhle změně bylo něco špatného, ba naopak. Na přečtení a vstřebání celého příspěvku už nemám sílu a klížej se mi oči, ale podle nadšeného tónu to bude asi opravdu super. Těším se, až si to zítra prostuduju.
Toolkit … je přímo slinkován s binárkou, a tudíž by nemělo docházet k žádným pomalostem, jako je tomu v případě Gtkmm.
Nerozumím. Můžete, prosím, tuto úvahu trochu rozvést?
Kdyby někdo měl velký zájem tak jsem napsal článek o výpočtu gradientu přes MMX. Zatím není publikováno, možná se někdy dočkáteA co to nabídnout Robertovi k vydání tady na abíčku? Určitě by měl zájem
Nemyslel jsem to proti čtenářům, určitě je tady hodně programátorů, ale koho zajímá tak odborná věc, tak asi použije první vyhledávačTady si to ale určitě přečtou i lidé, kteří takovou věc v té chvíli zrovna nepotřebují (a tudíž by ten vyhledávač nepoužili), ale určitě k tomu mají co podnětného říci.
$ du -h vlak.com 16K vlak.com
Hudba se vejde na pár bajtů, zvuky totéž. Podívej se jak velké jsou mod, it, mid,...Z pár mod/mid bajtov rozhodne nedostanete peknú hudbu a rozhodne jej nedostanete dosť na to, aby vás po piatich minútach nebolela hlava z jej opakovania. Pojem pekná hudba je relatívny, ale obávam sa, že ak niekto nazve pár bajtov peknou hudbou, tak ho budem musieť považovať za hluchého.
Rozlišení bylo tehdy mrňavé a tím pádem i obrázky byly mrňavé. Při použití mála barev a indexované palety se lze vejít opravdu do mála i bez komprese.Tak s tým súhlasím, nenapadlo ma, že na tom tie hry kedysi boli až tak zle
10 instrukcí je celkem dost. Minimálně na počítání skóre to stačíLen či ešte zostane aj nejaká inštrukcia na inicializáciu a zobrazenie toho, čo počíta.![]()
Vlastně s těma 20KB celkem přeháněl...V tejto hre nebola pekná grafika, zvuky boli odporné a hudba žiadna. A opať, ja za hru považujem niečo trochu zložitejšie, takže aj kódu tam bolo málo. Ale už začínam veriť, že v rádoch desiatok kilobajotv sa dajú robiť nejaké hry$ du -h vlak.com 16K vlak.com
/* xwindow.h */ XWINDOW * xwindow_init(void); void xwindow_load_widgets(XWINDOW *xwin, char *filename); void xwindow_destroy(XWINDOW *xwin); void xwindow_process_events(XWINDOW *xwin); void xwindow_reposition (XWINDOW *xwin, int now); void xwindow_recalculate(XWINDOW *xwin); void xwindow_redraw(XWINDOW *xwin, int recalculate); #define xwindow_get_fd(xwin) {ConnectionNumber((xwin)->disp);} #define xwindow_is_broken(xwin) ((xwin)->is_broken) /* xdraw.h */ void xdraw_frame(XWINDOW *xwin, long x, long y, long w, long h, int is_raised); void xdraw_frame_color(XWINDOW *xwin, long x, long y, long w, long h, int is_raised, int cl, int cs, int draw_border); int xdraw_select_font(XWINDOW *xwin, int fid); void xdraw_text(XWINDOW *xwin, long x, long y, char* text, float align, int shadow); void xdraw_bar(XWINDOW *xwin, long x, long y, long w, long h, float fill); void xdraw_vsep(XWINDOW *xwin, long x, long y, long len); void xdraw_hsep(XWINDOW *xwin, long x, long y, long len);Prostě jen nakresli tohle támhle. Nic víc pro ten program nepotřebuju. A aby to trošku ladilo s desktopem, vypdadá to jako kdyby to bylo podle defaultního témata gtk2 :) Chybějící podpora jakéhokoliv vstupu je naprosto záměrná. Předpokládám, že to dopíšu koncem prázdnin, případně v září. Teď na to nemám moc času. Chybí tam jen část, která bude sbírat data. Kreslení a načítání rozložení widgetů lze víceméně považovat za hotové. Adresa: http://jk.myserver.cz/programy/icebuteo/
#include <wpp/core/core.h> using namespace WPP; WPP_MAIN() { FileStream fileStream("out.txt", IO::Create | IO::Write | IO::Truncate); TextStream textStream(&fileStream); Directory d; if ( d.open( User::homeDirectory() ).ok() ) { const Directory::Entry* e; while ( (e = d.read()) != NULL ) { textStream.writeLine(e->name()); } } textStream.end(); return ExitSuccess; }Tento kód běhá na Win/Lin, výsledný soubor je v UTF8 kódování, pro současné kódování stačí před zápisem napsat:
textStream.setTextCodec(TextCodec::local());Lomítka v cestách jsou vždy v posix tvaru '/' atd, ... Šlo mi jen o to maximálně sjednotit API dvou různých OS a až naněm něco stavět. Jestli bude čas tak o tom napíšu blog, ale v současnosti mám dočasnou práci v .IE takže to nejde ahoj
používala standardní datové typyHovoríme o tom istom C/C++, kde ešte stále v štandarde nie je popísaná veľkosť základných dátových typov, o unicode ani nehovoriac? Ak ten toolkit má byť multiplatformný, tak nevidím lepšiu cestu, vy áno?
String
, ale API ho používá a ví, že má pokaždé stejné kódování, že může zjistit rychle jeho délku a používat jeho metody.
Třeba když jsme u zmíněného příkladu, tak jak byste vypsal obsah domácího adresáře na těchto platformách do souboru v UTF8 nebo jiném kódování, kolik knihoven byste musel použít?
Nechci se přít, glib/gtk+ to řeší Vaším způsobem, ale když chci napsat opravdu jednodušší aplikaci tak proč použivat 10 knihoven na to, abych si přečetl konfiguraci, zobrazil nějaké ovládací prvky a při ukončení zase zapsal konfiguraci (xml).
Celá binárka má po zkompilování asi 300kb a je tam opravdu veškeré non-gui co pro gui potřebuji tak proč z toho dělat samostatný balík?
String
:
Příklad:
char* asciiText = "neco"; char* utf8Text = "neco"; char* localText = "neco"; wchar_t* wcharText = L"neco"; String s1(asciiText, TextCodec::ascii()); // nebo String s1(asciiText); String s2(utf8Text, TextCodec::utf8()); String s3(localText, TextCodec::local()); String s4(wcharText, TextCodec::localWChar());A pokud chcete zpět
ByteArray a = s1.to(TextCodec::utf8()); // pokud chcete opravdu char* char* text = malloc(a.length() + 1); memcpy(text, a.constStr(), a.length()); text[a.length()] = 0;Ale právě takovým věcem jsem se chtěl vyhnout. To co jsem zde napsal mě normálně funguje a je to standardní postup. Navíc je zde možnost implicitního sdílení jako třeba u Qt což dodává programování ještě další rozměr
StringList sl = String("a|b|c|d|e|f").split("|");Myslím že jednotný Char na všech platformách má svou výhodu, wchar_t je pro mě nepoužitelný protože na linuxu je 32 bit a ve win 16 bit, s tím ale nikdo z nás nic neudělá. Ale multiplatformnost není jenom problém se strings (kéž by), problém jsou třeba cesty k souborům (lomítka / \, pracovní adresář atd...), o GUI rači mlčím
*((unsigned long *)NULL) = 0UL;
- licencia nieje problem, kludne to dam aj pod public domain, bsd licencia nieje problem (z mojej strany urcite nie)
- ano, kazdy widget ma vlastne okno (teraz je STK 2.x) predtym som to robil v inak (STK v1.0) a zistil som ze to nieje dobre riesenie (najme s pohladu obsluhy udalosti a z hladiska rychlosti). Tak som to cele prepisal.
- k prenositelnosti: uz dlhsie planujem port na FBUI (framebuffer user interface) to je 26kB kernel modul ktory robi to co X Server. Pisal som aj toolkit pre SDL, ale ten som nedotiahol...
- Inak pisat toolkit v xlib je docela porod. Je to tak trochu alchimia. Mizerna dokumentacia. Asi najhorsie bolo dokopat X Windows-ovi fokus handling na pouzitelnu uroven (defakto pouzivam vlastny).
- Urcite mozeme pokecat, aj ked teraz som menil ICQ klienta na SIM a neviem ci je 100% funkcni ale kludne - icq:284233649 alebo na moj email...
Nejlepší toolkit je ten co ti vyhovuje a to bude s největší pravděpodobností pouze ten co si napíšeš.To je samozřejmě pravda a platí to obecně. Ale při pohledu na to, kolik se mi během let nahromadilo kostlivců ve skříni, raději každého předem varuji. Napsat něco většího (což takový toolkit bezpochyby je) znamená překonávat řadu situací, kdy má člověk tendenci se na to vykašlat.
XDrawLine()
napsal XCreateWindow()
, protože bez XDrawLine()
se dá obejítMoveTo()
a LineTo()
ale Qt a Gtk+ je úplně jinde. Nejhorší na tom je, že ten builder jsem měl ješte tehdy na 486 s 8MB ram a jelo úplně krásně.
Třeba tehdejší ZoneRings32 - hezký prográmek na naučení, sice v Delphi ale hukotTohle není toolkit, ale wrapper.To nic nemění na faktu, že za půl hodiny se to nenapíše