Byla vydána verze 1.94.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example. Zveřejněny byly výsledky průzkumu mezi vývojáři v programovacím jazyce Rust: 2025 State of Rust Survey Results.
Google zveřejnil seznam 185 organizací přijatých do letošního Google Summer of Code (GSoC). Dle plánu se zájemci přihlašují od 16. do 31. března. Vydělat si mohou od 750 do 6600 dolarů. V Česku a na Slovensku je to 900 dolarů za malý, 1800 dolarů za střední a 3600 dolarů za velký projekt. Další informace v často kladených otázkách (FAQ). K dispozici jsou také statistiky z minulých let.
Byla vydána únorová aktualizace aneb nová verze 1.110 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.110 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Apple představil 13palcový MacBook Neo s čipem A18 Pro. V základní konfiguraci za 16 990 Kč.
Kalifornský zákon AB 1043 platný od 1. ledna 2027 vyžaduje, aby operační systémy požadovaly po uživatelích věk nebo datum narození a skrze API poskytovaly aplikacím informaci, zda je uživatel mladší 13 let, má 13 až 16 let, má 16 až 18 let nebo má alespoň 18 let. Vývojáři linuxových distribucí řeší, co s tím (Ubuntu, Fedora, …).
Konference LinuxDays 2026 proběhne o víkendu 3. a 4. října v Praze v areálu ČVUT v Dejvicích na FIT. Čekají vás desítky přednášek, workshopy, stánky a setkání se spoustou chytrých lidí.
Nové verze webových prohlížečů Chrome a Firefox jsou vydávány každé 4 týdny. Aktuální verze Chrome je 145. Aktuální verze Firefoxu je 148. Od září přejde Chrome na dvoutýdenní cyklus vydávání. V kterém týdnu bude mít Chrome větší číslo verze než Firefox? 😀
Apple představil nové čipy M5 Pro a M5 Max, MacBook Pro s čipy M5 Pro a M5 Max, MacBook Air s čipem M5 a Studio Display a nový Studio Display XDR.
Bylo spuštěno hlasování o přednáškách a workshopech pro letošní Installfest, jenž proběhne o víkendu 28. a 29. března v Praze na Karlově náměstí 13.
Byla vydána (Mastodon, 𝕏) třetí RC verze GIMPu 3.2. Přehled novinek v oznámení o vydání. Podrobně v souboru NEWS na GitLabu.
Uff. Mozna se to bude pred odevzdanim jeste trochu menit, ale hlavne jsem dokoncil to strasne dokumentovani. Tak jsem si rikal, ze bych to mohl konecne nekde zverejnit.
Mym ukolem bylo vytvorit neco podobneho jako je stara DOSova hra King's Quest 1. Tedy hru na motivy pohadek, kde hrac chodi s panackem a zadava mu slovni prikazy. Vice na strankach tohoto programu.
Tiskni
Sdílej:
1) Uznavam, ze jsem musel resit nektere veci, ktere obvykle resi jine knihovny. To ma ovsem tu vyhodu, ze muzu vsechno udelat tak, jak ja budu chtit a budu presne vedet, jak moje funkce funguji. V nekterych souborech tedy zdanlive zbytecne resim veci kolem X a v jinych se soustredim na hru. Nechapu, co myslite tim, ze to je neprenositelne a pomale. Pomale se mi to tedy nejevi a pokud prenositelnosti myslite kompatibilitu se systemy bez X, tak ta mi nevadi.
2) Cestina bez hacku a carek vubec neni spatny vtip. Program ji podporuje hned ze dvou duvodu. Za prve zvlada cestinu s hacky a carkami jen v pripade, ze vas pocitac umi kodovani, ktere program potrebuje. Za druhe mam (a myslim, ze i nekdo dalsi) obvykle nastavenou anglickou klavesnici a prepinat kvuli hre na ceskou se mi nechce. Obzvlast, kdyz hru testuji a tedy soucasne upravuji zdrojaky. Navic hru spoustim prikazem "./kraluk" a druhy znak bych na ceske klavesnici musel hledat.
3) Uznavam, ze v modulech save a load by se vyjimky docela hodily. Kdyz mam ale cely zbytek v jednoduchem C-cku.
void rescalePixmap (XImage *ximage, Pixmap *pxm)
/*********************************************/
{
XImage *ipom;
GC lgc;
int i,j,x,x2,y;
unsigned long pixel;
if(*pxm) XFreePixmap(display, *pxm); // Neni-li pxm None, odallokuji to
if(ratio == 0 || !ximage){
*pxm = None;
return;
}
cekalose = 1;
// Pripravim novou pixmapu:
*pxm = XCreatePixmap(display, root,
ximage->width*ratio, ximage->height*ratio, ximage->depth);
lgc = XCreateGC(display, *pxm, 0, NULL);
if(ratio <= IMAGRAT){
if(ratio == 1){ // Pomer je 1:1 -> neni treba aplikovat scale:
XPutImage(display, *pxm, lgc, ximage, 0, 0, 0, 0,
ximage->width, ximage->height);
XFreeGC(display, lgc);
return;
}
ipom = XCreateImage (display,
CopyFromParent, ximage->depth,
ximage->format, ximage->xoffset,
malloc(ximage->bytes_per_line*ratio*
ximage->height*ratio),
ximage->width*ratio, ximage->height*ratio,
ximage->bitmap_pad, ximage->bytes_per_line*ratio);
}
for(y=0; y<ximage->height; y++)
for(x=0; x<ximage->width; x++){
pixel = XGetPixel(ximage, x, y); // Pro kazdy pixel ze zdrojoveho obrazku
if(ratio <= IMAGRAT)
for(j=y*ratio; j<(y+1)*ratio; j++)
for(i=x*ratio; i<(x+1)*ratio; i++)
XPutPixel(ipom, i, j, pixel); // vykreslim ctverec do pomocneho ximage
else{
// nebo vykreslim cely radek do pixmapy:
for(x2 = x+1; x2<ximage->width && XGetPixel(ximage, x2, y) == pixel; x2++);
XSetForeground(display, lgc, pixel);
XFillRectangle(display, *pxm, lgc,
x*ratio, y*ratio, ratio*(x2-x), ratio);
x = x2-1;
}
}
if(ratio <= IMAGRAT)
XPutImage(display, *pxm, lgc, ipom, 0, 0, 0, 0,
ipom->width, ipom->height);
XFreeGC(display, lgc);
}
2) Háčky a čárky se dají jednoduše odfiltrovat, ale velmi těžce doplnit. Ale tím, že jste použíl přímo X bych věřil tomu, že jste se vůbec nechtěl zabývat tím, jak korektně zjistit unicode charakter ve všech různých konfiguracích X (a není to vůbec jednoduché), popřípadě jak pracovat s unicode (utf-8,16,32).
3) Asi né jen tam
Já jsem to napsal hlavně v souvislosti s malloc(), kde nikde nekontrolujete, jestli vám náhodou nevrátil NULL. Pro takovou hru je to samozřejmě prkotina, ale je to velmi špatný zvyk a věřím tomu, že v nějakém projektu, na kterém pracuje víc lidí by toto ostatním velice vadilo.
1) Myslim, ze funkci rescalePixmap mam docela dobrou. Predevsim proto, ze tim pomerne rychle nataham pixmapy pres sit na X server. Ja opravdu kvuli teto funkci zadne zpomaleni hry nepocituji, ale mozna mam jen prilis rychly pocitac. Navic nevim, jestli pouziti jinych knihoven prinese vzdy zrychleni. Ty jine knihovny totiz resi obvykle mnohem obecnejsi problemy nez ja.
2) Vim, ze se hacky a carky daji odfiltrovat, ale hure doplnit. Ten program vsak nema za ukol odfiltrovavat hacky a carky. Mam vsak na vyber jak jazyk, kde hacky a carky odfiltrovane jsou, tak jazyk, kde nejsou. Priznavam, ze spravna podpora UTF-8 v X je prilis slozita, takze tento program zvlada cestinu s hacky a carkami pouze v kodovani, iso8859-2.
3) Aha. Ale to uz je skoro jedno jestli program zkolabuje na Segmentation fault nebo na vyjimku, ze se nepodarilo pouzit malloc.
3) Existuje dobrý zvyk programátorů. Klidně si můžete napsat funkci xmalloc(), která spadne při chybě, někteří to tak normálně dělají, ale ignorovat návratové hodnoty u funkcí, které můžou selhat je prostě špatné.
Klidně si můžete napsat funkci xmalloc(), která spadne při chybě, někteří to tak normálně dělají, ale ignorovat návratové hodnoty u funkcí, které můžou selhat je prostě špatné.Kromě toho není běžně důvod, aby to při selhání
malloc() padalo přímo na hubu. Program může běžet dál, třeba chvíli počkat a pak zkusit alokaci znovu. Připomínám, že selhání malloc() je na Linuxu prakticky vyloučené, protože ve výchozím nastavení je povolen overcommit a jádro může tedy zvesela přidělovat paměť, kterou vůbec nemá (přidělí se ve skutečnosti až při výpadku stránky, když se proces do té paměti pokusí něco zapsat).
1) Nechapu, proc obvinujete z pomalosti funkci, ktera vetsinu prace prenecha X serveru. Vy tu pomalost pocitujete nejak lidsky? Nebo jste se jen podival do zdrojaku a shledal, ze to je pomale. Myslim, ze je spousta jinych a pouzivanejsich programu, ktere by se daly zrychlit. Pokud mate pocit, ze muj program dlouho startuje, je to spise tim, ze pri startu nacitam mnohem vice obrazku nez je nezbytne.
3) No dobra s tim mallocem mate asi pravdu. Vypadalo by to profesionalsteji.
Chtěl jsem vám jen vysvětlit, že nemůžete napsat rychlou funkci pro scaling, pokud se tím tématem nezabýváte. Vaše funkce vygeneruje takový traffic, že kdyby jste si ten scaling udělal na klientu a pomocí XPutImage() to přenesl na server, tak uděláte mnohem líp.
PS: Ať se daří :)
Ja jsem to puvodne mel naprogramovane tak, ze udelam scaling na klientu a pak to prenesu na server funkci XPutImage(). Pak jsem ovsem experimentalne zjistil, ze postupne vykreslovani pomoci XFillRectangle() funguje pres sit rychleji, predevsim pri velkych zvetsenich. To, co zdrzovalo, nebyl pomaly scaling na klientu, ale sit. Kdyz program spustim na stejnem pocitaci, jako je X server, je zmena policka okamzita v obou pripadech.
Nicmene dekuji za vase pripominky, priste se mozna pokusim o lepsi optimalizaci rychlosti, nejlepe za pomoci goto konstrukci :)
Oboji bych nepouzil, protoze se mi nejevi dobre mit program zavisly na spouste dalsich knihoven.
Cairo neznam, ale SDL nemam rad. Zkousel jsem nejaky jednoduchy SDL programek a ten vytocil procesor na plne obratky. Je mi jasne, ze se v SDL da nejak zaridit, aby se to nestalo, ale tento priklad ci tutorial me od SDL lehce odradil. Navic vsechny SDL hry, ktere znam, pri fullscreenu zcela zablokuji windowmanager.
.
)
Jo, taky jsem na to čuměl
Rodina Olšáků mě prostě pronásleduje, zavřu Ďábelsky Žlutá Skripta(tm), jdu se odreagovat na abíčko a kdo na mě koukne - Olšák
Vrátil jsem se z dovolené a koukám, syn zveřejnil svůj program. Dovolil bych si pár poznámek.
Čeština v programu funguje, pokud systém dovolí programu lokálně nastavit LC_CTYPE=cs_CZ.ISO8859-2, o což se program při svém startu snaží. Varianta "cestina" je jen v záloze, pokud by toto nevyšlo, nebo pokud uživatel nemá rád, že musí mít pokoněnou klávesnici Husem.
O tom, jaké knihovny by se daly použít a zda je přímé použití jen Xlibu pomalejší nebo rychlejší, bych rád polemizoval, ale do této diskuse to nepatří. Spíše by nás oba zajímalo, zda je hra hratelná bez čítů (cheats). Měl jsem v některých místech hry jiný pocit než Mirek, tj. že na další postup hráč nemůže přijít. Bohužel, u nás doma to nemůžeme vyzkoušet, protože víme, jak se to má hrát (koukali jsme Mirkovi, když to tvořil, pod ruce).
Povedlo se to někomu dohrát do konce?