Náměty na zápočťáky

Sem píšu věci, které by mi přišly užitečné, ale nevím o tom, že by je někdo naprogramoval, a sám bych to udělal, ale jsem na to líný.

Většinou to rozsahem ± odpovídá zápočťáku, popřípadě bakalářce nebo sw projektu.

Většinou mam celkem představu o tom, jak by to mělo vypadat, takže rád „doupřesním zadání“.

Use freely, ale budu rád, když mi dáte vědět (rur@nikde.eu), když něco z toho uděláte - pak se tu může objevit link :-) Jen pokud by se vám někomu náhodou podařilo na některém z mých nápadů vydělat netriviální peníze, tak, krom toho, že z toho budu mít upřímnou radost, si budu nárokovat 10% zisku za prvních 5 let provozu :-)

Budu-li mít aspoň trošku volného času, rád budu β-testovat.

Vlastně bych možná moh i něco takovýho vést, pokud by z toho mělo bejt něco co potřebuje bejt vedeno.

Diskutér

Nápad na NLP projektík: udělat tool kterej dostane novinovej článek a bude k němu generovat diskuzní příspěvky. Dat je spousta a když se člověk podivá jak ty diskuze vypadaj tak by to mělo bejt celkem jednoduchý.

Bonusová fíčura: zapojit do toho nějaký ty sentimentální věci a umět cíleně generovat buď pozitivní nebo negativní příspěvky.

Bonusová fíčura 2: udělat z toho tool kterej bude automaticky přidávat příspěvky do těch diskuzí, a prodávat to lidem za účelem mírného ovlivňování veřejného mínění.

Rozhodčí pro karetní hru

Při některých karetních hrách, jako je například Mariáš, závisí to, kterou kartu smí hráč zahrát, na tom, jaké karty má v ruce (povinnost přiznat barvu, povinnost přebít…). Dodržení takových pravidel ale ostatní hráči nemohou zkontrolovat okamžitě; porušení pravidla mohou rozpoznat až ve chvíli, kdy hráč později zahraje takovou kartu, která prozradí, že dříve podváděl (například měl přiznat červenou, ale zahrál zelenou, jakoby červenou neměl; později ale zahraje červenou kartu, z čehož vyplývá, že dříve porušil povinnost přiznat barvu). To ovšem vyžaduje, aby si hráči pamatovali, jaké karty kdo v jaké situaci zahrál, což je náročné a zvládají to jen lepší hráči.

Je nasnadě, že doržení takových pravidel by bylo snadné kontrolovat počítačovým programem. Pokud vím, takový program dosud neexistuje.

Požadované řešení má vlastně dvě části, implementovány mohou být obě, nebo jen některá z nich:

Pokročilá kalkulačka zobrazující postup výpočtu

Přivydělávám si doučováním. Každý má dnes kalkulačku, ale ta ho počítat nenaučí, na té si může zkontrolovat výsledek, ale pokud po něm někdo chce postup (nebo dokonce sám od sebe chce ten postup pochopit), kalkulačka mu nepomůže. Ani programy jako Mathematica neříkají, jak došly k výsledku.

Věci jako sčítání a mocnění jsou trapárny, zajímavější je třeba řešení rovnic (lineární, kvadratické, logaritmické, soustavy…) a nerovnic, výpočtu obvodů a obsahů, výpočty v trojúhelníku (strany, úhly, tečny… Pythagorova, Sinova, Cosinova věta…), analytické geometrie, kuželosečky (kružnice, elipsa, parabola, hyperbola; převody rovnic, souřadnice význačných bodů, rovnice tečen… - tady by byl hezký i grafický výstup).

Důraz na uživatelskou přívětivost, klidně na úkor šířky záběru - i pokud to bude jen počítat kvadratické rovnice, ale bude to mít skvělé GUI, má to větší význam než když to bude implementovat všechno, ale ti lidé, pro které je to určené (typicky ti kteří nemají vůbec rádi matematiku a možná ani počítače, jen potřebují prolézt střední), to nebudou schopni používat.

Ideálně jako webová aplikace, tj. PHP/Perl/.NET/Java…

Distribuovaná knihovna (knih)

Asi každý z nás má doma spoustu knih - beletrie, odborné publikace, učebnice... Jistě jsme rádi, že je doma máme, ale přesto většinu času jen bez užitku leží v knihovničce. A jistě znáte i opačnou situaci: chcete nebo potřebujete nějakou knihu, nebo snad dokonce její konkrétní vydání, ale digitalizovaná na internetu nikde není, v knihovně ji nemají nebo je zrovna vypůjčená, a vy ji potřebujete nejlépe hned, nejpozději třeba zítra...

Řešení je jednoduché. Vytvořit po internetu dostupnou databází knih, které mají lidé doma. A když budu potřebovat nějakou knihu, prostě si ji zadám do vyhledávání, a inteligentní vyhledávací algoritmus mi najde všechny známé exempláře knihy, seřazené podle nějakých vhodných kritérií; typicky mě asi nejvíc budou zajímat knihy, které jsou mi fyzicky nejbližší...

Nabízené "služby" mohou kopírovat standardní knihovní služby (krátkodobá zápůjčka, dlouhodobá zápůjčka, prezenční konzultace...), přičemž je každého věc, které služby (a případně pro které knihy) nabídne. Nějakou cennou knihu prostě nikomu nepůjčím domů, tak ho leda někde posadím a nechám ho číst, ale někdo zase nebude chtít doma vysedávající čtenáře a bude knihy jen půjčovat. Navíc je tady možnost dalších služeb, třeba naskenování několika stránek a odeslání elektronicky, zde tedy nezáleží na fyzické vzdálenosti, ale zase ten člověk musí mít doma skener... Tady by se, při vhodné konzultaci autorských práv, nabízelo ukládání těchto scanů na serveru projektu. Přinejmenším by se ta samá stránka nemusela skenovat opakovaně, při dalším vyhledávání tohoto titulu by server zahlásil, které stránky má už v sobě naskenované...

Je třeba se zamyslet nad otázkou finanční a bezpečnostní. Jde to všechno dělal úplně community-style, free, no warantee, ale pak hrozí, že se vyrojí sběratelé knih, kteří prostě budou členy komunity okrádat o knihy. Jde to dělat ala Aukro, kde každý musí být ověřený aspoň adresou - pro plnou registraci musí opsat kód z dopisu, který mu přijde na jím uvedenou adresu. Pak se dá každá ztracená kniha dohledat a hajzlíka případně zažalovat za krádež. Je tady pak potřeba nechat si vždycky podepsat každé předání knihy, aby šlo prokázat, u koho ze zúčastněných by kniha měla být...:-) A každá kniha musí mít stanovenou cenu, kterou uhradí člověk, který ji ztratí nebo zničí. A ten, kdo nemá plnou registraci, složí tuto částku jako vratnou zálohu při půjčování knihy. Cena za výpujčku se pak stanoví asi tak, že každý si pro každou knížku řekne, kolik chce za který typ výpůjčky. Peníze mohou buď jít mimo server, anebo (což je asi bezpečnější) přes server (to má tu výhodu, že si provozovatel serveru může z poplatků strhávat pro sebe desátky a tím financovat provoz serveru, případně dokonce generovat zisk).

Začít by to mohlo jako zápočťák na předmět Internet (= malá podmnožina zadání), šlo by to asi dotáhnout na ročníkový projekt, bakalářku nebo softwarový projekt.

Pisátko matematických výrazů

Matematické výrazy obsahující divné značky, několik abeced, zlomky, sumy a podobné veselé věci, je stále imho řádově jednodušší a rychlejší psát tužkou na papír než jakýmkoliv způsobem vytvářet na počítači. Změň to! Buď kreativní a inventivní (= nemám žádný konkrétnější nápad :-)).

Update o pár let později: s masivním rozvojem dotykových zařízení se přímo nabízí toho využít. Tj. z toho co uživatel načmárá prstem se snažit skládat matematické výrazy (tj. výstupem je matematický výraz v nějakém std formátu, například latexovém.

Překladač ze C# do C++ (or similar)

V C# se líp píše a má širokou paletu vestavěných funkcí, C++ je typicky přenositelnější a efektivnější. Chtěl bych mít možnost napsat program s pohodlností C#, aniž bych musel řešit low-level věci a potřebné knihovny na základní věci, ale pak bych chtěl, aby výsledek běžel kompilovaně, nepotřeboval pro svůj běh .NET (ono to prostředí má pár set mega a je to trochu omezující při distribuci SW) a byl přenositelný.

Jedna z variant, jak to udělat, je napsat program v C# (v určité podporované podmnožině jazyka, pro začátek klidně bez většiny knihoven) a přeložit to do C++, včetně nahrazení C# knihoven použitelnými C++ knihovnami...

V základní verzi (bez "using") by to šlo dělat jako zápočťák (ale i tak by se hodilo vychodit si Principy překladačů), more advanced věci aspirují na ročníkáč, bakalářku a diplomku...