Návrhy zápočtových programů

Pokud studujete informatiku, tak budete muset několikrát za studium pro splnění předmětu něco naprogramovat. Někdy si budete muset vybrat ze striktních návrhů cvičícího, ale často budete mít v tématu úplnou volnost.

Pro tyto příležitosti zde uvádíme několik návrhů témat, která by měla být rozsahem a obtížností adekvátní pro nějaký zápočtový program a zároveň jejich vytvoření bude někomu užitečná. Pokud nějaký z programů vytvoříte, přidejte na tuto stránku prosím odkaz.

Témata

  • Připsat nějakou funkci do této wiki - seznam potenciálních feature zde.

  • Generátor statisticky optimálního rozložení klávesnice à la MessagEase z korpusu textu (třeba pro Unexpected Keyboard).

  • Webová aplikace na tisk ze síťové tiskárny
    Často chceme pomocí tiskového serveru umožnit tisknout z libovolného zařízení na síti, bez dalšího nastavování. Zvlášť pro občasné tisknutí je vhodné mít jednoduchou webovou stránku, kam člověk nahraje svoje PDF, nastaví tiskové možnosti (velikost papíru, oboustranný tisk...) a odesláním formuláře se dokument vytiskne.

    Jako nejrozumnější mi připadá použít pro komunikaci s tiskárnou/tiskovým serverem protokol IPP.

    Bonusové body za rozhraní počítající s problémy a nabízející rozumné chybové hlášky, ne jak je u tisku dnes standard :)

  • Stream.cz plugin pro Grayjay Grayjay je OSS mobilní a desktopová aplikace, pro sledování tvůrců napříč platformami na kterých publikují. Platformy se do aplikace přidávají jako plugin. Vývoj pluginů je velmi dobře zdokumentovaný. Cílem tohoto projektu je napsat plugin, který umožní grayjay interagovat se službou stream.cz.

  • Statický typechecker pro Jinja templaty
    Ač je Python dynamicky typovaný jazyk, vzniklo pro něj několik statických typecheckerů – programů, co se snaží najít pomocí anotací a inference typové chyby. Tento pokrok se bohužel nerozšířil na templatovací jazyky, hojně používané ve vývoji webů.
    Jelikož Jinja kompiluje templaty do Python kódu, mělo by být teoreticky možné jeho výstup upravit natolik, aby i templaty šlo typecheckovat jedním z existujících projektů.

  • GUI kalendář používající vdir: Pro Linux existuje nespočet kalendářových aplikací, avšak většina z nich události ukládá ve vlastním ideálně nezdokumentovaném formátu. Ty nejlepší umí zobrazovat ical (nepříliš praktické mít celý kalendář v jediném souboru) nebo se nějak samy synchronizovat s WebDAV (obvykle zcela bez vyřčených záruk ohledně offline přístupu). Podobně jako ve světě emailu vznikl univerzální textový formát vdir, který ukládá každou událost do samostatného souboru v určeném adresáři, a také vznikla univerzální aplikace, která umí takové adresáře synchronizovat přes nejrůznější protokoly (včetně WebDAV). Pro příkazovou řádku pak existují khal (kalendář), todoman (úkolníček) a khard (kontaktníček). Výhodou takového přístupu je plná offline podpora (včetně úprav), jednoduchý a standardní formát (ať žije grep) a triviální zálohování. Nutno však uznat, že TUI kalendář má poněkud omezenou přehlednost, nedej bože jej používat na Linuxovém telefonu. Nechtělo by se někomu napsat GUI variantu? Na parsování by mohly jít použít knihovny Huga Barrery

  • Úplnější podpora GPG pro Trezor: Trezor je český produkt primárně cílený jako hardwarová peněženka na kryptoměny. V principu je to ale poměrně univerzální bezpečnostní zařízení podobně jako třeba YubiKey, od něhož se liší především dotykovým displejem – uživatel tak přesně ví, co potvrzuje a může se dodatečně identifikovat např. PINem. Zájmy výrobce jsou však jasné a na nekryptoměnovém poli se mnoho let nic neudálo, veškeré funkce jsou poměrně hrubě otesané z dob vydání (SSH, GPG apod.). Neměl by někdo zájem funkcionality rozšířit? Dá se jak modifikovat firmware (a např. obohatit informace, které má uživatel k dispozici při rozhodování, zda žádost o podpis schválit), tak desktopový software, který přes existující protokol s Trezorem vyjednává, co podepsat. Jedním z největších nedostatků součané integrace s GPG je nemožnost uložit si v Trezoru klíč a k němu vygenerovat klasické subklíče bokem (přitom to je ideální kombinace: v počítači mám klíče s několika měsíční expirací, které certifikuji klíčem v Trezoru). Pro tuto funkci existuje komunitní pokus, ale pull-request už se dlouho nikam nepohnul.

Témata učitelů