Diskuze v závislostech - tvorba stromu
January 5, 2007 on 1:36 pm | In Programing | 2 CommentsDiskuze v závislostech mám o dost raději než jen souhrn příspěvků pod nějakým článkem či zápiskem. Asi to i mnozí víte, vždyť jsem už o tom psal krátký zápisek. Přes tuto mou oblibu jsem je zatím na všech stránkách a projektech řešil dosti ošklivým způsobem. Vlastně dvěma ošklivými způsoby najednou. Nástin mého postupu si můžete prohlédnout níže:
function RekurzePrispevek($ID, $odsazeni)
{
$Q = MySQL_Query("SELECT * FROM diskuze WHERE zavislost=$ID");
// Ted vytiskni kazdeho nasledovnika a jejich nasledovniky
while($row = MySQL_Fetch_assoc($Q))
{
pseudokod_vytiskni_komentar();
RekurzePrispevek($row['ID'], $odsazeni + 10);
}
}
Porovnávání řetezců v jazyku C
January 4, 2007 on 5:34 pm | In Programing | No CommentsTohle je určitě další zápisek, za který mě bude opět mnoho lidí zatracovat. Ano píšu o něčem co je už tisíckrát opakované a co už všichni dávno vědí. Jenže problém je, že nevědí. Sem tam se někdo ozve z mých kamaradů a zeptá se pročpak jim nefunguje porovnávání řetězců. Nikdy se mi nechce na webu hledat vysvětlení, takže to každému vysvětluji zvlášť. A takříkajíc už mě to nebaví, tak si napíši vysvětlení tady a další lidi s tímto problémem pošlu sem. No není to nádhera?
Předávání proměné hodnotou a odkazem
December 29, 2006 on 9:56 pm | In Programing | No CommentsPři výuce programování se dříve či později dostanete do fáze, kdy začnete učit dělit program na nějaké celky - funkce či pascalovské procedury. S tím taky souvisí docela podstatné “učivo” a sice předávání proměných hodnotou a odkazem. Předpokládám, že již jste se s tímto setkali, ale i přesto uvedu pár příkladů:
int fukce(int promena_hodnotou, int *promena_odkazem);
procedure funkce(promena_hodnotou : integer; var promena_odkazem : integer);
První fce je zapsána v C, druhá v pascalu. První proměná je předána hodnotou, druhá odkazem. Změním-li uvnitř fce proměnou promena_hodnotou, tak se to vně fce vůbec neprojeví a opačně, změním-li uvnitř fce proměnou promena_odkazem, tak změny se projeví i navenek. Toto je rozdíl mezi těmito způsoby a vlastně taky důvod proč existují dvě různé metody předávání parametrů. Jak je vidět z hlavičky první fce, pokud v jazyce C potřebujeme předat fci proměnou odkazem, tak používáme ukazatele. Jak toto řeší pascal bohužel nevím, ale předpokládám, že hodně podobně (ono to ani mnoha jinými způsoby nejde).
Vylepšení diskuzí se závislostmi
December 28, 2006 on 1:33 am | In Programing | 6 CommentsJiste znáte diskuze, kde máte možnost reagovat v závislostech. Příkladem může být abclinuxu.cz, root.cz, či zive.cz. Problémem těchto diskuzí je přidávání nových komentářů, kdy při psaní komentáře nemáte k dispozici celou diskuzi, protože ho píšete na separované stránce. Tato vlastnost mě mnohdy štve, protože bych se potřeboval vracet k těm příspěvkům, na které reaguji. Samozdřejmě mohu dát tlačítko zpět, ale to je dosti nepohodlný způsob.
To mě dneska napadl o dost lepší způsob - dát to na starost JavaScriptu. V poslední době si občas hraju s AJAXem, takže JavaScript pro mě není úplnou neznámou, ale i tak vytvořit plně funkční kód mě stálo hodně času a sil. Ono hledat v něm chyby je dosti složité, když nemáte chybové hlášky z compileru nebo interpretera. Tímto děkuju JRmu za morální podporu, kterou mi poskytl
Jak to funguje si můžete prohlédnout zde. Pokud chcete ragovat na nějaký komentář, tak klikněte na text “answer” v jeho hlavičce v pravém dolním rohu a pod komentářem se Vám objeví formulář pro sepsání odpovědi. Diskuze ještě není zcela vychytaná - je to jen prvnotní implementace nápadu na vylepšení toho typu diskuzí, ale tak na prezentaci snad stačí. Pro zvídavé lidičky, zde jsou k mání i zdrojové kódy.
One little, two little, three little endians…
December 24, 2006 on 12:58 pm | In Programing | 3 CommentsVíte co mají společného čísla -2030043136 a 135? Taky jsem nevěděl, přišel jsem na to až po více než 40 minutách.
Continue reading One little, two little, three little endians……
Bitová pole
December 21, 2006 on 5:24 pm | In Poznámečky | No CommentsV tvorbě BitTorrent klienta jsem došel do stavu, kdy jsem potřeboval bitové pole. Nahradit ho za char nepřipadalo v úvahu, protože by to znamena enormní plýtvání místem (7 bitů by vždy šlo nazmar a to potřebuji pole, které může šahat co do velikosti až do tisíců). Proto jsem požádal JR zda-li nějaký kód nemá. Měl - ovšem ten jsem odmítl, protože se mi zdál přiliš nepřehledný (opět chyba - ale o tom až za chvíli). Proto jsem si v dnešní “vánoční hodině” programování vytvořil svůj vlastní algoritmus na práci s bitovým polem. No a postupným zjednodušováním jsem v podstatě došel ke kódu, který se v mnoha ohledech podobá tomu co stvořil JR. Ale tak aspoň vím přesně proč a jak to funguje…
A zase ten pascal II
December 18, 2006 on 6:27 pm | In Programing | 7 CommentsUz je mi to pomalinku trapné, ale stejně musím. Do série zápisků o pascalu (která by klidně mohla mít jako motto “Co nejvíce špíny na pascal”) dnes přídám další zápisek (v pořadí již čtvrtý, počítám-li dobře). Ja vím, asi už můžu rovnou založit i novou kategorii čistě jen pro pascal. Omlouvám se za to, ale mi to prostě nedá. Jsem člověk, který je zvyklý programovat, ale to co můžete v pascalu je prostě všechno jen ne programování. Asi jsem holt příliš náročný…
A zase ten pascal
December 12, 2006 on 5:50 pm | In Programing | No CommentsKdybych měl v době psaní referátu o rozdílech mezi pascalem a C informace se kterými se chci s Vámi dnes podělit, tak se asi na rovinu zeptám proč se učíme něco co se nejen nehodí do běžného “života”, ale navíc co se opravdu nehodí ani k té výuce.
Konec řádku v HTTP
December 9, 2006 on 12:52 pm | In Poznámečky | No CommentsPři pokračování mých pokusů o naprogramování vlastního jednoduchého BitTorrent klienta jsem se docela dlouho zdržel při implementaci “komunikátoru” s tracker serverem. Tracker server udržuje informace o jednotlivých členech a jeho role je nezastupitelná. Pro komunikaci používá asi všem známý HTTP protokol.
A teď kde přesně byl zakopaný pes. S většinou tracker serverů jsem se domluvil, ovšem můj lokalní azureus na můj požadavek nijak nereagoval. Což mi přislo strašně podivné. Nakonec jsem skončil u pročítaní RFC a problém úspěšně identifikoval. Jde o to, že linux používá pro označení konce řádků jeden znak LF (známá escape sekvence \n). No a HTTP vyžaduje windowsackou konvenci označení konce řádků, kdy je první CR a pak až LF (tedy \r\n), což mě docela překvapilo, ale po této úpravě již vše funguje jak má.
No a teď technická vložka - vzhledem k tomu, že od některých serverů jsem dostal odpověď ve tvaru v jakém jsem ji posílal, tak i oni museli trpět stejnou chybou jako můj “soft” a nebo byli natolik dokonalí, že rozpoznali, že se můj “soft” nechová přesně podle RFC a tak mi poslali odpoveď ve stejném tvaru v jakém jsem jim poslal požadavek. Zajimavé…
Pascal a řetězce
December 7, 2006 on 10:22 pm | In Programing | 2 CommentsV referátu o rozdílech mezi pascalem a C jsem (jsme - referát se mnou připravoval i Mira) se zmínil o rozdílech v řetězcích. V C je řetězec pole znaků. Aby jednotlivé fce, které s řetězci pracují nemuseli znát pokaždé i délku, tak je dáno, že řetězec je zakončen takzvaným nulovým bytem (známá escape sekvence ‘\0′). V době psaní a přednášení referátu jsem neměl tušení jak s tímto nakládá pascal. I když malé tušení jsem měl - o možnosti spojit dva řetězce vložením znaku + mezi ně jsem věděl. Právě díky tomu mi bylo jasné, že pascal s tím musí operovat hodně, hodně pofidérně.
Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^