Blog o programovaní, strojovom učení a počítačovej lingvistike
Don't wanna be here? Send us removal request.
Text
Zas&Zas: začíname
Veľmi rád začínam nové veci. Omnoho radšej ako ich dokončujem. A pretože sa blížime k dokončeniu väčšieho projektu na ktorom sme pracovali vyše roka (a možno ešte budeme), tak nastal čas vytiahnuť zo šuplíku niečo staršie. Máme za sebou jeden pokus o B2C aplikácie pre brnenskú zoo, ktorý čiastočne predbehol dobu (a hlavne technológie, React Native pred pár rokmi) a čaká ho veľký prepis. Kým sa to, ale stane, tak by som si chcel osahať aktuálne verzie.
Pri programovaní sa dá meniť a refaktorovať za behu, ale základný technolický stack je prakticky nevymeniteľný. Pretože sa chystáme na webovú/mobilnú aplikáciu, tak frontend je jasný javascript resp. typescript. Ale čo nad tým? Ponúkajú sa tri platformy s ktorými mám skúsenosti:
* Ember * Angular / Ionic * React / React Native
Keďže náš veľký projekt je písaný nad Angular/Django, tak by dávalo zmysel pokračovať. Ember kvôli absencii rozumnej mobilnej časti nedáva zmysel, hoci ho mám rád. A tretia možnosť je React v ktorom som písal tak dávno, že v lepšom prípade platia aspoň základné patterny. O "novinkách" typu Vue, ... som ani nerozmýšlal, stačí mi fungovať v rozumnom mainstreame, kde očakávam, že to bude fungovať aj za rok.
React vs Angular je večná téma o ktorej už popísali strany textu kvalifikovanejší. V oboch prípadoch to je o tom písať rozumné komponenty a nejako to na seba napasovať. Intuitívne citím, že v Angulari by som bol (dnes) bol rýchlejšie hotový. Nepotreboval by som sa učiť žiadne nové koncepty, niečo by som vylepšil a hotovo. React má zase šancu naučiť má nové veci a hlavne sa mi dosť páči ekosystém testovania, ktorý by som si rád prakticky vyskúšal. Až k extrému, TDD. Kniha "Test Driven React" je tak presvedčivá, že to skúsim. V Angulari nejaké testy máme, ale navrhovaná kombinácie nástrojov v Reacte vyzerá o dosť rozumnejšie (a kompletnejšie). Navrhovaná aplikácia by mala byť tak jednoduchá, že to bude až-moc, ale to si myslím o väčšine aplikácií, aspoň na začiatku.
Vo finále som sa rozhodol, že chcem viac využívať služby tretích strán, takže prvou integrovanou službou bude auth0, aby som nemusel riešit prihlasovanie viac než je nutné.
A backend? Uvidíme, ten bude tiež tak jednoduchý, že to bude skoro jedno. Buď to bude django/psql, alebo node+čosi/psql.
0 notes
Text
Brother MFC-L2710DW & Linux
Atramentovú tlačiareň sme vymenili za čiernobiely laser so skenerom. Z nejakého dôvodu Brother nepredáva variantu bez faxu, takže máme aj ten. Vo Windowse bolo potrebné nainštalovať ovládače, v MacOS nebolo treba urobiť nič, ale Linux (Fedora 30) bol zakliaty. Tlačiareň bola automaticky detekovaná aj s ovládáčom (cez USB), ale miesto toho, aby vytlačila testovacia stránku, tak zvládla “vytlačiť” celý zásobník prázdnych strán. A tak som inštaloval ovládače z webu Brothers. Bezproblémová inštalácia, rovnaký výsledok. Už som to chcel vzdať, ale posledný pokus vyšiel. Pripájam sa k tlačiarni cez wifi a všetko funguje ako má. Neviem, nechápem, ale takto mi zatiaľ stačí.
0 notes
Text
defaultdict : jednoduchšie vkladanie do slovníku
Vkladanie do slovníku (dict, {}) v Pythone je niečo, čo sa pri práci s dátami používa denne. V podstate potrebujeme robiť stále dokola dve veci: vytvorenie nového kľúču a operáciu nad ním. Táto operácia je obvykle jednoduchá, navýšenie počítadla alebo pridanie prvku do zoznamu.
d = dict() key = 'foo' value = 'bar' if not key in d: d[key] = [value] else: d[key].append(value)
Toto je podľa najhoršia varianta, pretože duplikujeme kód na vkladanie do poľa. (Samozrejme, že v takto prehľadnom kóde to je v podstate jedno, ale chceme mať rozumné návyky.)
if not key in d: d[key] = [] d[key].append(value)
Týmto nám vznikol kód, ktorý je kratší a jednoduchší. Existuje možnosť, ako sa zbaviť toho ```if```. Samozrejme, že áno, pretože na prístup ku kľúču v slovníku sa dá použiť metóda ```.get(key, default)``
d[key] = d.get(key, []) d[key].append(value)
Toto riešenie sa mi už celkom páči, ale stále tu je niečo lepšie. Nastavme si tú preddefinovanú hodnotu už pri vytváraní slovníku. Táto preddefinovaná hodnota by mala byť niečo, čo nám vytvára nové elementy (list|dict|int|....). Ak by sme tam totiž dali premennú, tak by sme sa dostávali stále k tej istej referencii.
from collections import defaultdict dd = defaultdict(list) key = 'foo' value = 'bar' dd[key].append(value)
1 note
·
View note