Monthly Archives: September 2005

Jak jsem jednou referencoval na Firebirdu

Byl krásný zářijový den a já se večer rozhodl přepsat svůj model DB do SQL skriptu a vyzkoušet. Nebylo to nic těžkého, měl jsem to pěkně namalované, takže jsem byl za hodinku hotov. Po přezkoumání všech vztahů a “znovuzamyšleníse” nad jejich smysluplností jsem nechal skript přechroustat Firebird. Raz, dva a bylo hotovo. Hnedle jsem tam “insertnul” testovací řádky a jedem. Vše vypadalo OK, no ještě zkusím přidávání loginu přímo z kódu. Hups a je tam, bez problému. Skvělé, říkám si, tak ty blbiny smažu a zase někdy (až bude čas) se na to podívám (neb je to moje soukromá hračka :-) ). Chci smazat login který jsem vytořil a hle, nejde. Firebird pořád mele o problému s konverzí stringu na jiný datový typ. Hledám, hledám a nic (a říkám si, že ten FB je ale blbec). Nejprve zkouším zrušit vazby u “jasných” tabulek. Pořád nejde. Hmm, že by kód vložil něco špatně a “rozbil” DB, zdá se mi to nemožné. No nic, spouštím GFIX, a nic, vše je OK. Začínám lehce šílet. Pracuji dál, systematicky hledám chybu. Po několika nesystematických :-) dropech všeho co šlo mě to napadá. Metoda min-max. Začínám pomalu odstraňovat objekty v DB. A hle jednu tabulku jsem smázl a už to jde. Hmm, koukneme, kde je problém. Ano! Jedna z tabulek při tvorbě měla zadefinován typ integer, ovšem nadřazená tabulka byla varchar(12). Opravit. Tak a je to. Ještě rychle v mozku prolétnu SQL skript, jestli tam není takováto chyba ještě někde (vznikla při vytváření struktury a přidávání implementačních věcí, jako např. umělé id pro PK, atp.). Ne nic tam není (snad). OK, pro jistotu ješte udělám pro login vlastní doménu, aby se to náhodou při nějakém rozšiřování nestalo. Done.

Bye.

Špatný postup???

Dnes jsem se dostal k projektu na kterém jsem mohl nadále pracovat. Po několika úvodních formalitách a technických detailech jsem dostal zdrojové texty k prozkoumání. Na první pohled mne zarazil poměrně divny “coding style”, ale každý má svůj rukopis, takže jsem to přešel.

Hned další problém který jsem viděl bylo prapodivné organizování souborů resp. jejich svázání do větších celků a začlenění do projektů v IDE. Nebylo tedy možné hned najít kořen apod. O další zkoumání jsem se ani nepokusil.

Poté co jsem několik těchto “drobností” a pár dalších (např. výsledky kompilace a soubory které u toho vznikají se cpaly do stejného adr., který se synchronizoval přes SVN) napsal vedoucímu projektu (lze-li to tak řící), jsem byl odpálen tím, že je to prostě jedno a hlavně že to jde přeložit u něj a že nemá čas ani chuť to nějak řešit. Pak mi bylo vysvětleno, že program se dělá tak, že “se sedí půl dne se zákazníkem a pak se na to vlítne”. Tohle mě totálně dorazilo. Neudělat si i pro střední (klidně i menší) projekt analýzu a nějaké návrhy, to je síla (podle mého názoru). Šel jsem tedy “domu”.

Co myslíte Vy? Děláte u projektů analýzy? Udržujete “morálku” kódu? Šli byste do podobných věcí?

Jak GUI ovlivňuje.

Zajímavý nadpis že?. ;)

Je až s podivem, jak výsledné GUI některých programů ovlivňuje naše myšlení a orientaci a vůbec celou práci s programem. Dva dny před jsem se rozhodl nainstalovat nový program (záměrně vynechám typ případně název). Původní program mi na 98% vyhovoval, ovšem měl několik much, které zpomalovaly moji práci (pracuji s ním již asi 5 let). Nový program jsem nainstaloval a všechny nedostatky, které mě u původního programu tížily nebyly. Našlo se sice několik jiných, ale vadily méně, neměly takový dopad na práci. Po nastavení a pochopení některých specifických vlastností, jsem jej začal používat. Avšak večer jsem ho celkem náhle odinstaloval. Ač se mi práce s ním líbila, velice špatně jsem se orientoval, což byla nutná vlastnost pro pohodlnou práci. Toto jsem právě zjistil, díky tomu, že během večera již vše fungovalo a nesoustředil jsem se na přemýšlení o nastavení, atp., které celkově brzdilo práci. No což, rychle jsem ho odinstaloval, neboť mě to celkem rozhodilo. Dnes – dva dny poté – ulehla mlha šílenství a já zjistil, že práce s novým byla opravdu super a že to budu muset překousnout a zvyknout si (opravdu některé fce, prováděné v threadech (=nebrzdící práci) byly lázní pro ducha). Měl jsem ještě několik problémů s figurkami a tak jsem pro jistotu ještě hledal na Internetu (různá ruční nastavení přímo v konfiguráku), než se dám znova do práce. Náhodou se mi podařilo najít skin pro tento program, který věrně simuloval původní. Podle obrázku to vypadalo opravdu super. Nainstaloval jsem tedy program znovu a nasucho aplikoval skin. Wow. Bylo to super. 90% věcí vypadalo stejně. Vše jsem tedy znova “naladil”. Nyní ho již používám celý den a orientuji se skvěle, práce mi jde od ruky, no zkrátka paráda.

Sám jsem nemohl uveřit tomu, že jen změna barev a pár pozic (minimum, hlavně barvy) udělá tolik. Zvyk je holt železná košile a nic s tím člověk nenadělá.

Poučení pro příště – makat pořádně na GUI (i když to mnohé z nás nebaví).

PS: Podělte se o své zážitky/postřehy s GUI.

…DataAdapter.Fill(dataSet…)

Tak jsem si dneska opět krásně naběhl. Připravil jsem si vše pro připojení k Firebirdu a začal jsem psát takové ty kravinky pro buttony (na testování). Přidal jsem si tam:

fbConnection1.Open();

fbDataAdapter1.Fill(dataSet1);

a začal testovat. Kompilace – OK, bežíme. Kliknu na tlačítko a ono nic. He, kde je chyba. Hmm, asi něco s dataSetem. Celé vše projdu, nic podezřelého. No nic, zkusím to znovu. Zase nic. Několikrát jsem to celé prošel a stále nic. Hmmm. Umm. Zoufalství. No nic, udělal jsem si tam vlastní DataTable a zkouším. dataGridView pořád nereaguje. Ještě větší zoufalství, kopíruji starší (fungující) kód. Upravím pár stringů a hle. Kompilace, jedem, nic. Ummm. Tak to už snad může bát jen Firebird .NET Data Provider. Stáhl jsem 2.0 Alpha. Zdá se mi divné, že takováto základní věc by nefungovala. Jdu do kuchyně a hle. Po cestě me to napadlo. Mám prázdnou databázi. Jasný, proto v gridu nic nebylo. Provizorně z konzole zapíšu dummy data do DB a jedem. Wow, je to tam. ;)

Co z toho plyne? Až zase nebude něco fungovat, radši nejdříve kontrolovat, jestli tam ma vůbec něco být, než to dvě hodiny ladit. :)