Ačkoliv jsem se v programováni do teď soustředil pouze na Python, tak přece jen na některé věci se určitě hodí i jiné jazyky. Udělal jsem si tedy certifikát na jazyk Dart, který získává na oblibě a to především proto, že v něm jdou tvořit mobilní - ale dnes už i desktopové a webové - aplikace. Dart je Pythonu fakt v mnohém podobný, ale v něčem totálně jiný, nicméně nejde o nic zásadního, co by se člověk nenaučil. Sledujte můj github, doufám, že časem tam přibude nějaká ta Flutter appka :).
Toto je opět změna v blogu, která není na první pohled vidět, ale pro mě je docela dobrá, protože když zadám nějakou adresu z administrace napřímo a nejsem přihlášen, tak mě to přesměruje na přihlášení a po úspěšném přihlášení mě to automaticky přesměruje na adresu, kterou jsem požadoval původně. Funguje to v zásadě dobře, jen mi přijde, že je rozdíl v tom, jak se ke cookies chová Vivaldi a jak se k nim chová Firefox, respektive ve Vivaldi to funguje absolutně vždy, Firefox občas přesměruje na hlavní stránku administrace a těžko se to pak debuguje, když jinde to funguje na první dobrou a vždy.
Postupně plním úkoly, které jsem si dal v tomto zápisku a další je tedy hotov. Konkrétně mi na blogu už začalo fungovat uploadování souborů přímo přes prohlížeč a administraci. Mrkněte zde, jak jsem to vyřešil: https://github.com/jiri-one/easyblog_falcon
To je pro mě, jakožto pro autora tohoto blogu, skvělá funkce, protože nemusím zápisek hned publikovat. Ale čtenáři tuto funkci nevidí, tedy pokud se nepodívají na zdrojový kód blogu, který naleznete zde: https://github.com/jiri-one/easyblog_falcon
Opraveno vyhledávání :). Viz předchozí příspěvek.
Takže blog teď pár hodin neběžel, protože jsem musel přijít na to, co se zase po tom upgradu stalo. Ano, Manjaro upgradovalo na Python 3.10 a tak blog přestal fungovat. Příčina nebyla v blogu samotném, ale v python konektoru na RethinkDB, který nebyl na tuto verzi připraven. Musel jsem ho trochu upravit, aby fungoval. Šlo o malé úpravy, takže nemá cenu dělat pull request, navíc moje úpravy jednoznačně rozbily kompatibilitu se staršími verzemi Pythonu, takže je to řešení jen pro mě.
Nicméně na blogu musím opravit rozbité vyhledávání, chci na něm udělat i pár změn v backendu a chci přidat pár funkcí:
- chtěl bych přidat možnost uložit a nepublikovat zápisek (drafts nebo-li rozepsané zápisky)
- chtěl bych propojit blog s Twitterem
- chtěl bych implementovat možnost nahrávat soubory přímo z administrace
- chtěl bych udělat takovou úpravu, abych se dostal po přihlašování na původní stránku, která mě přepnulana přihlášení
Vrhnu se na to tento týden :-0
Protože jsem člověk, který na sobě rád pracuje, tak jsem se rozhodl, že se zúčastním týmového kurzu Pythonu. Do konce tohoto kurzu už zbývají jen 3 lekce / týdny a zatím zvládám krásně :). Nabyté znalosti využiju při zlepšování tohoto blogu i jinde.
Nicméně přihlásil jsem také proto, že sice umím programovat, respektive umím řešit problémy programováním, ale vlastně neumím programovat v týmu. Oběcně pracovat v týmu umím, protože moje zaměstnání, tedy projektant elektro, je hodně o práci v týmu. Ale programátorský tým není to stejné co projekční či projektantský tým. Rozdíly tam opravdu jsou, ale jdou špatně definovat, proto je zde vyloženě popisovat nebudu. Nicméně to, že to je rozdílné, ještě neznamená, že je to pro mě problematické.
Rychle jsem se do toho dostal a stejně jako při projektování, tak opět jsem se brzy dostal do vedoucí pozice týmu, o kterou vlastně nestojím :). Nicméně je to dáno tím, že já mám s programováním nějaké zkušenosti a další členové týmu toho naprogramovali daleko méně nebo dokonce nic. Navíc jsem hodně aktivní a jsem do programování a řešení problémů zapálený. Není to tedy o tom, že bych byl nějaký "borec programátor" a jasná "vůdčí osobnost", ale tím, že ono to vždycky padne na toho nejzkušenějšího a nejaktivnějšího. V jiné skupině by to tak zřejmě nedopadlo.
Každopádně si to dost užívám, hodně baví mě řešit úkoly, které nám v tomto kurzu "kouči / koučové" přichystali - některé z těch úkolů jsou docela zapeklité - ty mám nejraději :-).
PS: to nejlepší, kromě výše zmíněného, co jsem se v tomto kurzu naučil, je testování kódu. Zjistil jsem, že testování kódu, které jsem do teď nedělal, velmi usnadňuje a zrychluje práci, ale především, odhaluje chyby, které by člověk jinak nepředpokládal. Navíc jsem konečně začal používat debugging kódu, což jsem do té doby vlastně vůbec nedělal a jel jsem, asi trochu pomalou metodou, pokus - omyl - vytisknout proměnné do konzole - další pokus..... . S debuggingem a s testy to jde vše daleko lépe a rychleji.
PPS: moje řešní úkolů dávám i do gitu - https://github.com/jiri-one/Kosoctverci
Ačkoliv jsem to neplánoval, tak jsem chtěl teď večer udělat rychlý update balíčků a najednou koukám a ono se toho aktualizuje nějak hodně a většina z toho jsou pythoní balíčky. Ano, ArchLinux přešel na Python 3.9 a já tedy také. Nicméně ten přechod byl realtivně bezbolestný, šlo jen o pár závislostí, které jsem musel přes pip nainstalovat znovu a už to zase frčí k plné spokojenosti.
Tak doufám, že teď už by to všechno mělo jet správně. Vytvořil jsem si vlastní middleware pro Falcon, který při každém požadavku vytvoří připojení k RethinkDB a po vyřízení požadavku (requestu) ho zase zavře. Zároveň jsem provedl v kódu pár zjednodušení, takže je menší.
Dále jsem zase aktivoval vícevlákno (threads), takže blog by mohl být i o něco svižnější.
Prosím o otestování, refreshujte jak o život, když to spadne, tak budu ladit dále :-)
V posledním postu jsem psal, že je nové CMS v provozu a zbývá ladit. Ona je to pravda, ale to ladění bude trochu náročnější, protože RethinkDB, respektive její python driver není thread-safe. Což znamená, že při produkčním nasazení na serveru musím přístup k databázi vyřešit jinak. Konkrétně pro každý požadavek musím udělat samostatné připojení k databázi a pak ho zase bezpečně zavřít. Moje nezkušenost mě vedla k přesvědčení, že stačí sdílet jedno připojení k databázi a požadovat po něm X výsledků, ale to je velký omyl. Nicméně chybami se člověk učí, trochu to přepíšu, vytvořím nějaký dekorátor(y), který spojení bezpečně otevře a zase potom zavře a bude zase frčet parádně. Nicméně bude to chtít maličko víc času, musím to trochu otestovat a do té doby bude mít blog nějaké výpadky - za to se velmi omlouvám.
Nicméně starý blog na adrese old.jiri.one stále frčí ;-).