Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Mirek Prýmek

Stran: 1 ... 68 69 [70] 71 72 ... 618
1036
Vývoj / Re:Naučení se asynchronnímu programování
« kdy: 07. 10. 2019, 16:52:14 »
Vždyť async/await jsou právě taky jen korutiny, jen se zbytečně složitou syntaxí (proto to tolik lidí mate). Právě Go má v podstatě to samé, ale transparentně.
Asi podle toho, na jake urovni se na to divas. Async/await je hlavne cukr pro futures, zatimco goroutiny spis davaji pocit plne oddelenych vlaken provadeni - jako plnohodnotna OS vlakna. Implementacne to muze byt dost podobne, hlavne na urovni event loopu, ale ten koncept jako takovy je imho dost jiny - async/await je matouci a otravne, gorutiny jsou naprosto v pohode.

BTW scheduler v Go je kooperativní doposud, jede nad kqueue/IO ports apod. podle OS.
Dik. Mel jsem matny pocit, ze jsem nekde cetl, ze s tim cosi v posledni dobe delali. Bud se pletu, nebo to mozna byl nejaky plan pro Go 2? Nevim.

v provnání s vlákny
Ok. V porovnani s vlakny ale imho async/await samo o sobe negarantuje nemoznost race conditions. Porad je tam nejake prepinani kontextu, ke kteremu pri trose fantazie muze dojit v nevhodny okamzik. Tim spis, cim vic k tomu prepinani dochazi. Jestli je tam nejaky vyrazny rozdil oproti vlaknum, tak prave v tom, ze se prepina jenom v urcite okamziky, takze k race condition nemusi vubec nikdy dojit. To ale neni garance, to je (vicemene) nahoda, coz je mozna jeste horsi...

v tom jsou lepší jazyky, kde je asynchronní vše.
Bez diskuse. Vubec nechapu, proc Python touhle cestou nesel. Imho si tim pekne nabehl na vidle a co je horsi, potahne si tuhle zatez ssebou jeste pekne dlouho, protoze se z toho dost dobre ted uz neda vybrednout :(

Částečné řešení je volání sync variant blokujících funkcí v threadpoolu. https://docs.python.org/3/library/asyncio-eventloop.html#executing-code-in-thread-or-process-pools . Většinou si vystačíte s použitím čistě async funkcí jen pro socketovou komunikaci a ostatními IO funkcemi volanými v threadpoolu. I rozšiřující "async" knihovny například pro přístup k DB jsou většinou implementovány obalením sync funkcí run_in_executor.
Jo, ale to je strasnej opruz. Odstranuje to tu jedinou potencialni vyhodu async/await - prehlednost kodu. Dalsi problem je, ze v Pythonni implementaci doted chybi zakladni primitiva k tomu, aby to mohl clovek opravdu vyuzivat. Kdyz clovek zna Erlang s jeho linky, monitory, signaly, supervizory, ... tak si v Pythonu pripada, jako by mu nekdo urizl ruku, vytrhl jazyk, zavazal oci a jeste ho jenom tak jakoze ze srandy pichal spendlikama pod nehty...

Další problém je existence několika nekompatibilních základních async knihoven (asyncio, trio, curio). Existuje snaha sjednotit API minimálně mezi trio a asyncio. Dost rozšiřujících knihoven podporuje obojí.
No to je uplnej pruser, kterej jsem ani nezminil, abych se nerozcilil vic nez je nutne :) Par let zpatky to byla vylozene tragedie. Dneska nastesti asyncio hodne dobrych featur z ostatnich implementaci pohltilo a jelikoz je ve standardni knihovne, nejspis do budoucna vyhraje. Takze uz to takova traga neni. Nejlepsi je proste imho smirit se s asyncio.

1037
Vývoj / Re:Naučení se asynchronnímu programování
« kdy: 07. 10. 2019, 12:55:16 »
To ale není chyba technologie/konceptu, že to lidi nechápou. Takových témat se najde mnohem víc, třeba “the M word” ve FP.
Jak se to veme. Já moc nemám rád koncepty, které něco relativně složitého zabalí tak, že to vypadá jednoduše, člověk může nabýt dojmu, že tomu rozumí, ale ve skutečnosti nerozumí a tímpádem právě není schopnej toho reasoningu* nad kódem. Proto osobně async/await nemám rád. Daleko lepší mi přijdou ty korutiny, to je koncept, kterej nic neschovává, člověk na první pohled vidí, co se tam děje. A ještě lepší jsou úplně ne-kooperativní procesy v Erlangu (korutiny v Go, alespoň donedávna, byly částečně kooperativní, IIRC - přepínalo se jenom na některých místech).


* sorry za opakování tohodle slova, ale přijde mi výstižný a neznám podobně dobrý český ekvivalent

1038
Vývoj / Re:Naučení se asynchronnímu programování
« kdy: 07. 10. 2019, 11:55:50 »
Byla delší, vypadala hustě, kolega jí nerozuměl.
s async/await se dá psát stejně stručně jako s vlákny. Většinou stručněji
Stručnost je pravda. Zároveň ale potenciální nesrozumitelnost kolegovi je taky realita. Obávám se, že developerů, kteří opravdu chápou, co async/await dělá, bude relativně málo. Obávám se, že velká část těch, kdo async/await umí použít, se budou jenom řídit takovými těmi pravidly palce typu "když je uvnitř někde await, funkce musí být async" apod.

nehrozí data races a jiné chyby.
V jakém smyslu? V porovnání s čím? Jaký přesně mechanismus zaručuje, že k nim nemůže dojít?

---
Konkrétně třeba pro Python: zápis je pěkný, na první pohled čitelný. Reasoning o chování většího kódu je ale pořád složitější než u "jednovláknového" programu (čemuž se dost dobře nedá vyhnout, není to tak úplně chyba Pythonu). Dost katastrofa je to ale na úrovni infrastruktury: Pokud chci async/await použít, musím mít úplně jiné, "async" knihovny. A ty jsou oproti jejich starším "sync" variantám většinou daleko víc zabugované nebo nedodělané. Navíc neustále budu narážet na problém "červeného a modrého světa" [1], často se stane, že kvůli tomu nepůjde dobře zrealizovat návrh, který jsem měl namyšlený - že je tam problém si všimnu až při psaní, dopředu se to odhaduje fakt těžko. Problémy typu "aha, __init__ vlastně nemůže být async! Doprčic!"


[1] https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/

1039
Vývoj / Re:Naučení se asynchronnímu programování
« kdy: 05. 10. 2019, 20:09:47 »
Chtěl bych se naučit asynchronímu stylu programování.
Imho bys musel říct trochu konkrétněji, o co ti vlastně jde, co by ses chtěl naučit a proč.

Protože "asynchronní styl" může znamenat různý věci v různých kontextech. Většina z nich spolu nějak souvisí, ale není to totéž a pokud chceš radu, musíš to trochu líp specifikovat.

Jenom tak pro ilustraci, kolik různých věcí může "asynchronní styl" znamenat:

1. chci se v Pythonu naučit používat "async" a "await"
2. chci se naučit programovat multi-taskové aplikace ve FreeRTOSu a komunikaci mezi tasky
3. chci pochopit goroutiny a komunikaci mezi nimi
4. chci umět napsat multi-agentní (-servisovou, -komponentovou, distribuovanou...) aplikaci, kde jednotlivé komponenty jsou sice "synchronní", ale business logika celkového systému je z principu věci "asynchronní"
5. chci systému z předchozího bodu rozumět včetně nějaké té teorie kolem toho (všichni ti byzantští generálové apod.)
6. zajímá mě, jak se ty runtimy, na kterých ty "asynchronní jazyky" běží, píšou
7. zaujal mě actor model (nebo CSP, ...) a chtěl bych ho pochopit teoreticky i naučit se ho používat
atd. atp. ... možností je bambilion.

Záměrně zde neuvádím programovací jazyky ke kterým mám nejblíže, zajímá mne hlas lidu.
To mi moc nedává smysl. Ať už "asynchronní styl" znamená cokoli, dá se zrealizovat v každém rozumném jazyce, ale v každém trochu jinak. Základní principy jsou přenosné, ale nemá smysl se to učit v jazyce, který ti není blízký a nebudeš ho nikdy používat.

1040
Server / Re:Testovací servery v cloudu
« kdy: 18. 09. 2019, 15:04:38 »
Nevíme ale o co se tady jedná, pokud třeba o Apache / nginx + PHP FPM, je to prostředí bez rozdílu.
Spis bysme museli vedet, co vlastne tazatel testuje. Pokud by treba spoustel vylozene interni Python testy (jestli nekde nema nejakou spatne pojmenovanou promennou apod.), tak by to teoreticky slo. U cehokoliv jineho ale moc smysl nevidim, i kdyz jsem dlouholety uzivatel FreeBSD, takze proti nemu rozhodne nejsem zaujaty. Ale testovat se ma imho proste z principu na prostredi, ktere je co nejblizsi produkci. FreeBSD ma jiny kernel, jiny prekladac C, jiny userland a vetsina 3rd party sw je patchovana. Takze na FreeBSD bych otestoval tak leda, jak dobre mi to jede na FreeBSD :)

Jinak ta rychlost nahozeni pres ZFS by mela jit i na Dockeru (protoze ma pro ZFS podporu), ale bohuzel co jsem to zkousel, nebylo to stabilni. Dneska uz muze byt situace zase trochu jinde. Nicmene tady uzke hrdlo nejspis nebude. Udelat si image a pres nej namountovat overlay je plus minus milisekundy stejne rychle.

1041
Server / Re:Testovací servery v cloudu
« kdy: 18. 09. 2019, 09:25:59 »
Další možností je FreeBSD + ZFS + Jails. Jail vytvoří zcela nezávislé prostředí a díky ZFS se to dá deploynout velmi rychle i velmi rychle odstranit. Možnosti konfigurace a nastavení prostředí jsou IMHO lepší než poskytne docker.
FreeBSD je dost odlišné prostředí. Spousta sw na *BSD buď nejede vůbec, nebo se musí patchovat. Nemá moc smysl testovat v jiném prostředí než na jakém to reálně bude provozovat.

1042
Server / Re:Testovací servery v cloudu
« kdy: 17. 09. 2019, 12:16:26 »
Napadlo mě, že bych kvůli snížení nákladů
Musel bys aspoň rámcově napsat, jaké ty náklady jsou, a kolik procent z nich bys rád ušetřil. "Větší množství serverů" je pro někoho deset a pro někoho deset tisíc :)

Jenom tak z placu, bez dalších informací, odhaduju, že žádnou nezanedbatelnou úsporu nedosáhneš. Všechna řešení jsou řádově stejně drahá, pokud nehodláš zásadně změnit workflow. A zásadně změnit workflow je tak drahé, že pokud k němu nemáš jiné důvody, tak se ti to taky nezaplatí :)

1043
Software / Re:Databáze pro Grafanu na Raspberry Pi
« kdy: 16. 09. 2019, 14:51:04 »
Myslim ze tam nekde je moznost si i zobrazit, jake dotazy do DB grafana provadi. Stejny dotaz si pak muzes zkonstruovat pomocí curlu.
V editaci grafu stačí v menu u konkrétní metriky kliknout na "Toggle Edit Mode". To ukáže InfluxDB dotaz. Akorát jsou v něm teda proměnné volící časový rozsah a průměrování časových bucketů, takže se to nedá jenom copy-pejstnout, člověk tomu musí aspoň trochu rozumět a umět si ten dotaz upravit.

Tim se zabranilo přepisovaní furt stejných sektoru.
Flash disk mi už tak jede 5 roku.
To není moc dobrej postup. Daleko lepší by bylo flashku naformátovat nějakým souborovým systémem s wear levellingem (JFFS2 apod.), nebo koupit flashku, která ho má už v HW (dneska to dost možná bude většina?).

1044
Odkladiště / Re:(Rádoby)frikulínská komunikace firem
« kdy: 13. 09. 2019, 14:42:39 »
Lze to brát i pozitivně jako téma pro přijímací hovor - vyptat se, jak firma v reálu funguje, na co je ochotná přistoupit apod.
To je docela dobrej nápad. Dalo by se to pojmout třeba takhle:

V letáku říkáte, že šéfové týmů jsou se zaměstnanci kámoši a proto dobře chápou jejich potřeby. To je super. Můžeme se teda domluvit na tom, že bych měl jednou za rok měsíc v kuse homeoffice v jiném časovém pásmu? Můžeme to dát do smlouvy?


To by se teprve oddělilo zrno od plev! :)

1045
Odkladiště / Re:(Rádoby)frikulínská komunikace firem
« kdy: 13. 09. 2019, 14:38:31 »
zabrala by na tebe víc nabídka práce [...]?
Falešné dilema.

1046
Odkladiště / Re:(Rádoby)frikulínská komunikace firem
« kdy: 12. 09. 2019, 16:25:01 »
Tak tedy píšu si, nabízet retro automatové hry na pracovišti.
U nás ve firmě bývalí kolegové postavili opravdovej arkádovej automat (velká bedna, televizor, joysticky, tlačítka), dali tam RetroPi, nebo jak se to jmenuje, takže je tam asi tak milion a půl všech možných klasických arkádovek a nikdy jsem neviděl nikoho to hrát. Já jsem to zkusil jenom jednou, když jsem na firmě přespával přes víkend a jeden večer se mi nechtělo nic bastlit :)

1047
na zaklade toho se muze spustit reconfig pomoci ansible (klasicky CI postup).
Spis CD, ale to je jedno.

Jsi si jisty, ze automaticke spousteni Ansiblu v ostrem modu je to, co chces? Ma to minimalne dva problemy:
1. jakakoli chyba v konfiguraci se automaticky promitne na servery (je potreba kontrolovat, co zmena zpusobi, bokem)
2. server s ansiblem musi mit permanentne k dispozici root pristup na vsechny konfigurovane servery - jeho kompromitace znamena kompromitaci vseho

Slo by samozrejme omezit scope pomoci tagu, ale pak by ansible efektivne delal to, co by delal ten rsync, a moc nevidim duvod jeho pouziti.

1048
Ber to s rezervou, psal jsem to z hlavy.
Musí se to ale dělat pravidelně a automaticky - po každém obnovení certifikátu. Ne ručně ansiblem...

1049
Ale nam uz vice veci bezi v HA, takze treba ty certifikaty pro tu samou domenu potrebuji na vice strojich najednou...A to uz ta brnkacka neni.
Tak je to otázka jednoho účtu a jednoho řádku v crotabu :)

Pokud tím HA myslíš master-master a zároveň nechceš nic řešit při výpadku ručně, tak to brnkačka není. Ale pokud fakt máte tenhle setup, tak máte určitě bambilion daleko složitějších problémů než tenhle :)

1050
Rad bych se vyhnul vsemoznym cron/syncthing apod metodam nastavenych primo na danych serverech.
Pokud se vyhneš nejjednodušší a nejpřímočařejší cestě, zbudou ti jenom horší, zbytečně komplikovaná řešení.

A vůbec nejjednodušší cesta je terminovat TLS na jednom stroji. Ale to asi víš.

Stran: 1 ... 68 69 [70] 71 72 ... 618