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 - Miloslav Ponkrác

Stran: 1 [2] 3 4 ... 8
16
Studium a uplatnění / PHP - výjimky, best practices
« kdy: 07. 09. 2018, 23:00:31 »
Citace
Pro výjimky platí to co všude.

a) Pokud víte, jak výjimku ošetřit, a dostat se do rozumného stavu - použijte try/catch, a výjimku chyťte a ošetřete.
b) Pokud nevíte, jak výjimku ošetřit, ale je třeba změnit typ/zprávu výjimky na něco jiného, pro volající vrstvy vhodnějšího - použijte try/catch, výjimku chytněte a vyhoďte namísto ní vhodnější výjimku.
c) Pokud nevíte co s výjimkou, nechte jí proplavat výše.

V mojom prípade by to malo byť a. Ale mne sa jednoducho nepáči kód "zasvinený" try/catch blokmi. Preto by som rád to nechal plávať vyššie. Neviem či sa dajú priamočiaro preniesť best practices z Javy to PHP; Java zásadne vždy robí všetko komplexne a zložito. Rád by som našiel aj k výnimkám niečo ako the PHP way, ale nepodarilo sa. Pozdával sa mi názor z PHP delusions, ktorý som uviedol, avšak to je názor len z jedného zdroja a tak som opatrný.

PHP si samo se sebou neví moc rady. Doporučuji prostě přenést obecné best practices, jen tak dáte PHP štábní kulturu.

Java některé věci dělá dobře, jinými věcmi zase spíše kompenzuje to, že jazyk nic neumí, je příliš jednoduchý. Ale ve výjimkách to dělá spíše dobře.

Osobně se nevyhýbám kódu plnému try/catch, když to má smysl. Myslím, že nejlepší co se dá udělat je vyřešit chybu/výjimku co nejblíže místu, kde vznikla. Tedy, pokud umím na nějakém místě ošetřit chybu/výjimku, tak to udělám.

1) Pokud mohu šíření výjimky zcela zastavit a převést program do stabilního stavu, je to moje první snaha.

2) Pokud chytám výjimku, jejíž typ a popis je příliš low level, a směrem nahoru se nehodí, tak výjimku zachytím a vyhodím vhodnější. Například pro funkci getCachedImage() se příliš nehodí vyhodit výjimku FileNotFoundError(), ale je lépe ji změnit na CachedImageNotFoundError(). Funkce výše nemusejí vědět, jak je kešovaný obrázek uložen, je zajímá, že ho nelze získat.

Cílem je posílat nahoru co nejméně chyb a výjimek. Pokud je možné něco vyřešit na místě, nechť je to vyřešeno. Ošetřování chyb je vždy "nehezké", nehledím proto na počet try/catch, či počet if/elseif či dalšího. Nejlepší možný stav je mít kód, který generuje co nejméně chyb směrem nahoru, a posílá chyby/výjimky jen tehdy, když to nejde řešit jinak.

Dalším cílem je posílat nahoru (volajícím) chyby, kterým "hořejšek" (volající) rozumí. Viz ad 2).

Každý framework/program by měl mít na úrovni funkce main() zachytávač všech nezpracovaných výjimek, které převede do nějakého rozumného hlášení uživateli a případně zaloguje. To je ale věc frameworku, to by uživatel řešit neměl.

***

Co by se nikdy dít nemělo, je zachycovat všechny výjimky bez ošetření. Toto je prasárna hrubého zrna, za kterou by měl jít programátor klečet na hrách:

try { ... } catch (Throwable/Exception $e) {} # PHP 7 = Throwable, PHP 5 = Exception

***

Nejtěžší je u projektu vymyslet vlastní strom tříd výjimek, aby byl logický a dobře, přitom jednoduše, vyjadřoval možné chyby v kódu.



17
Studium a uplatnění / Zavírání databázového spojení
« kdy: 07. 09. 2018, 22:41:49 »
Citace
Já se ve všech programovacích jazycích a frameworcích řídím tím, že kdo objekt vytvořil, ten ho má zavřít. Je to takové nepsané pravidlo. Pokud je nutné zrušit objekt někým jiným - bývá to popsáno a zdůrazněno.

Áno, to je rozumný predpoklad. Nedá sa však na neho spoliehať vždy. Napríklad Java a databázové drivery. Tie by sa mali správať podľa nejakého štandardu, ale v praxi to často neplatí. Našiel som v zdrojáku Spring JdbcTemplate (nadstavba nad JDBC) takýto koment: We don't trust the JDBC driver: It might throw RuntimeException or Error. Preto som chcel nájsť niekde explicitne proste napísané -- netreba uzavierať connection object. Nič také som nenašiel.

Pokud nic nenajdete, tak nic nezavírejte. Pokud máte něco zavřít, tak to bude zmíněno.

Je dost neobvyklé, aby podprogram likvidoval objekty a zdroje, které dostane jako parametr. Patří to ke špatným způsobům. Pokud je to nutné či účelné či očekávané, aby podprogram zavřel/zlikvidoval objekt, většinou se o tom píše, protože to intuitivně nikdo nečeká.

18
Vývoj / Re:Maji tabulkove databaze v dnesni dobe smysl?
« kdy: 07. 09. 2018, 22:35:39 »
Citace
Na jednu stranu jsem rad, ze se ozval odbornik. Na druhou stranu prave kvuli tvemu hobby muze byt tvuj nazor zkresleny.

Proč by relační tabulkové databáze měly zahynout? ...

Vubec nerozumim tvemu zpusobu diskuze.

1) Prvotní otázka byla o tom, že tabulkové databáze mají zahynout.

2) Do toho byla tvá pochybnost, že odborník je příliš hájí a má zkreslený názor.

I přidal jsem další argument, proč má pravdu.

19
Vývoj / Kauza: Částice rychlejší než světlo
« kdy: 07. 09. 2018, 22:34:06 »
Citace
To je ale docela nefér to takto podat zrovna v tomto případě. Já tu "kauzu" sledoval dost zblízka a do hype to tlačili novináři - dost drsně (například vytrháváním vět z kontextu). Všichni vědci to brali velmi seriózně, upozorňovali na to, že je to divné, že se to musí ověřit, očekávají nějakou chybu v měření a tak. Prakticky nikdo neříkal, jaká je to revoluce a že překonali Einsteina. Bohužel novináři to dost otáčeli.

Ať chcete nebo ne, je to dnešní trend - bulvarizace. Dotýká se to dokonce i vědy.

Vědu a vědce bych nehájil, oni v tom nejsou nevinně. Sama vědecká obec si zvolila, že grafomanie (počet publikací/článků + citační index) bude pro vědu a vědce více, než kvalitní vědecká práce a kvalitní věda. Jinak řečeno, sama vědecká obec bez skrupulí přijala bulvární metody a pravidla.

Vědci jsou hodnoceni podle toho, kolik toho napíší a vydají, nikoli podle kvality. Až zase uslyšíte z úst vědců třeba: "Karlova univerzita dělá nejlepší vědu, protože má nejvíce odborných článků" - tak to je přesně bulvární metrika, podle které jede dnešní vědecká obec.

Nejlepší vědec by dnes byl Honore de Balzac.

Jestliže jsou vědci tlačeni do co nejvíce písmenek, jinak mají problém a klesají v hodnocení, tak to není nic jiného než tlačení do vydávání nehotových a neověřených prací, zpráv a výstupů. Za to mohou vědci a vědecká obec sama, nikdo je do toho nenutil si to takto zavést.

20
Vývoj / Re:Maji tabulkove databaze v dnesni dobe smysl?
« kdy: 07. 09. 2018, 22:23:51 »
Citace
Na jednu stranu jsem rad, ze se ozval odbornik. Na druhou stranu prave kvuli tvemu hobby muze byt tvuj nazor zkresleny.

Proč by relační tabulkové databáze měly zahynout? Jednak se SQL databáze rozvíjejí. Jednak získat z relačních databází strom, graf, apod. je často spíše otázkou indexování a pak vhodného SQL dotazu.

Když chci strom/graf, tak si k tabulce X přidám druhou tabulku X_tree_index nebo X_graph_index, kde pomocí triggerů nebo ručně indexuji pár čísel, abych mohl jediným SQL dotazem načíst celou větev stromu či jiné časté operace. Mám už to jako takový "návrhový relační vzor".

Objektové databáze zase mají problém v tom, že se nikdo na světě neshodne, co vlastně objekty jsou, a jaké je to správné objektové pojetí. Pokud bude tisíc lidí mluvit o objetech, budete mít tisíc různých neslučitelných názorů, jak správně pojmout objekty. --- Pak další otázka, jak uděláte univerzální objektové API? Zase jak se kterým jazykem.

Citace
Neuvedomuju si, ze bych potkal uzivaka kterej by umel aspon zaklad SQL, nebo si napojit excel na databazi. Mozna mam jen smulu.

Ve Windows existují ODBC ovladače, a připojíte se skrze ně téměř do jakékoli databáze. Získat pak přístup z jakéhokoli program do jakékoli myslitelné databáze není problém. Jednoduchým způsobem tam můžete i svůj program napojit skoro kam chcete.

Excel má napojení na databázový zdroj přímo v hlavním menu Excelu. :-) Stačí to uživateli jen ukázat. :-) Nebo ještě lépe mu to nastavit. (I když pravda, já stále mám Microsoft Office 2003.)

Ještě užitečnější nástroj je, spíše byl, Microsoft Access. Pro zadávání dat přímo ideální.

21
Vývoj / RAM, SSD - jsou také tabulkové databáze
« kdy: 07. 09. 2018, 20:13:19 »
Hele, proč ta RAM nebo SSD nemají tedy úložné místo organizováno do grafů či objektů, když je to tak lepší? Proč i ta RAM a SSD jedou v alokačních blocích? Není to nápověda, proč je univerzálnější a nejpoužitelnější organizovat data a datové úložiště do tabulek?


22
Vývoj / Re:Maji tabulkove databaze v dnesni dobe smysl?
« kdy: 07. 09. 2018, 19:54:02 »
Citace
On v tom videu vlastne rika, ze SSD je takova persistentni RAM. Nicmene.. Pokud mam tolik pameti, ze v ni vsechno udrzim, existuje duvod proc to organizovat do tabulek?

Ano. Protože data mají logiku, mají určenou doménovou a referenční integritu. Mají zaručenou konzistenci dat a konzistenci operací. Máte zajištěno mnohem více.

Jaký existuje důvod organizovat data do grafů nebo objektových sítí? Jak vytvoříte nad těmito strukturami rychlé datové operace? Jaké bude API? Jak zajistíte konzistenci dat a vazeb mezi daty? Jak budete zajišťovat transakce? Jak budete vytvířet jazyk pro hledání dat pro obrovská data?

Jak říkám, nikdo nikomu nebrání, aby udělal databázi na grafových či objektových strukturách. A dotáhl to tak daleko, aby převálcoval relační databáze. Ale ony tu jsou omezující i fyzikální zákony, není to jen o tom, že dokážete co chcete.

***

Důvod organizovat do tabulek je proto, že vám jako aplikaci, která využívá služby databázového stroje není absolutně nic do toho, kde jsou data uložena. Váš to nezajímá. Jestli data jsou uložena na HDD, SDD, RAM, nebo na děrných štítcích, nebo na nové hyperpaměti 22. století - o to se nestaráte. Vy jen požadujete po databázovém stroji vrácení dat či operaci s daty. Tečka. Databázový stroj je abstrakce, kterou neřešíte. Administrátor databázového stroje pak vyřeší implementační detaily.

A až namísto SSD objeví listoper v roce 2020 super nový princip úložiště, za kterou dostane Nobelovu cenu, stále nad tím bude možné provozovat SQL databáze. Banky a korporace budou okamžitě kupovat jeho novou technologii a listoper bude miliardář. To je síla abstrakce - že SQL databáze efektivně fungují prakticky na jakémkoli úložném médiu.

23
Studium a uplatnění / Re:Jaký webový framework zvolit?
« kdy: 07. 09. 2018, 19:37:13 »
jano7: Ano, a přesně takový bordel vzniká, když jazyk nemá svůj standard. Pak se vyvíjí pouze stylem nalepovák na nalepovák, a ve výsledku je jazyk plný nelogičností a nekonzistence.

24
Vývoj / Re:Maji tabulkove databaze v dnesni dobe smysl?
« kdy: 07. 09. 2018, 19:34:50 »
Citace
Myslim, ze kdyz ma nekdo takovou praxi jako on tak uz ma vuci hype imunitu. Je to videt i v tom videu kdyz srovnava ruzne jazyky.

Dá se to pochopit. Čím větší senzace obchodník či školitel říká - tím více vydělá.

Já slyším rok co rok minimálně: 1) o 20 velice převratných technologiích, co všechno převálcují; 2) alespoň o 5 zavedených technologiích, co bídně zhybou. Jaká myslíte, že je statistika po dlouhé době? Velice žalostná proti předpovědím. Po všech velice převratných technologiích, co úplně změní svět, neštěkne ani pes.

Mimochodem, víte, že podle Linuse Torvaldse už je Windows mnoho let po smrti? Linus Torvalds, podle jeho slov, o zničení Windows nijak neusiloval, byl to pouze vedlejší efekt rozšíření Linuxu.

Problém je, že hype a unáhlené předpovědi už postihují dříve seriózní obory. Například vědu a fyziku, viz zpráva o částici rychlejší než světlo. Holt granty a prachy je třeba získávat uveřejňováním senzací, aby se peněženky pro vědce rychleji otevíraly. Otázkou ovšem je, jestli je toto ještě seriózní věda.

25
Citace
Mimochodem, že ty ses ve škole učil vzorečky z matematiky zpaměti?  :) Zkoušel sis někdy odvodit z kvadratické rovnice kořeny x1 a x2? Bez znalosti vzorce? Stačí mít jen dovednost algebraických úprav. :)

Ne, řadu věcí jsem se naučil zpaměti. Například jsem se zpaměti naučil českou abecedu, jinak bychom si tu nepsali. Naučil jsem se malou násobilku v matematice. A řadu dalších věcí.

Odvodit kořeny jakékoli rovnice, včetně kvadratické, je možné rozkladem na několik výrazů. Protože kvadratická rovnice je obecná rovnice, tedy pravá strana je = 0, stačí rozložit levou stranu rovnice na dva součiny typy (x - kořen).

Jinak řečeno, bez nabiflování se jste v zadeli jak se znalostmi, tak s dovednostmi. Měl byste ovšem využít toho, že se nabiflujete co nejméně. Namísto toho si věci zařadíte do souvislostí. Zrovna v matematice to jde velice snadno.

Dobře zvládnuté znalosti vás za rok práce katapultují třeba v tom IT tak dopředu, jako kdybyste dělal čistou praxi 40 let. Cesta přes čistou praxi funguje, ale cesta přes teorii a trochu praxe je mnohonásobně rychlejší a efektivnější.

26
Citace
Mozek není navržen na to, aby byl encyklopedie, můžeš zkusit se všechno nabiflovat, ale postupuješ neefektivně. Vždy tě předežene někdo, kdo bude schopen si elementární znalosti dát do souvislostí (schopnost chápat věci v souvislostech je cenná dovednost) a z nich zjistit, co potřebuje. Ten, kdo pracuje encyklopedicky, ten bude mít vždy nějaké mezery a chybějící znalosti, který člověk s dovedností vydedukuje.

Já jsem ten poslední, kdo tu obhajoval nabiflování se. Ukázal jsem to na tom příkladu kosínu.

27
Vývoj / Re:Maji tabulkove databaze v dnesni dobe smysl?
« kdy: 07. 09. 2018, 18:50:09 »
Mimochodem, řada SQL databází chodí v paměti. Někdy se prostě server nacpe takovým množství paměti, aby databázový stroj měl celou databázi načtenou v RAM jako v keši. Je to asi nejrychlejší řešení, pokud je hromada čtení. Jak to urychlí SSD? Bude rychlejší než RAM?

28
Vývoj / Re:Maji tabulkove databaze v dnesni dobe smysl?
« kdy: 07. 09. 2018, 18:40:04 »
Lidi toho napovídají a papír/flipchart snese všechno. V každém oboru platí, že je mnoho povolaných a málo vyvolených. Tedy že přibližně jeden ze sta ví co povídá. To je nezávislé na oboru, Gaussova křivka rozložení populace platí všude.

Tabulkové databáze vznikly mimo jiné proto, že jsou rychlé a umožňují uložit extrémní množství dat. Tato technologie a způsob vznikly podložené matematikou a teorií. Nikoli proto, že existují pomalé hard disky.

Databáze umožňují zvládnout obrovské množství dat a přistupovat k nim, dělat nad nimi operace, a udržet nějaké záruky na konzistenci a přístupnost k těmto datům. Jinak řečeno, je za tím seriózní teorie.

Hurá přístupy a předpovědi jak všechno učiníme progresivní a moderní - těch je na každém rohu pytel. Nikdo nebrání strýčku Bobovi takovou databázi udělat a předvést, že bude mít lepší vlastnosti než klasická. Nicméně řeči strýčka Boba nic nestojí. Oracle zbohatl přesně tak, že udělal SQL databázi podloženou matematickou teorií a výzkumnými pracemi té doby - a finančně se mu to sakra vyplatilo.

Nebojte se, tabulkové databáze tu budou ještě za řadu desetiletí.

Pokud má strýček Bob akcie Oracle, a prodá mi je za pár šupů, protože si myslí, že zkrachuje - já ty akcie od něho rád koupím.




29
Citace
Tak snad si teď rozumíme. Pokud stále ne, tak ti to příště napíšu v pravdivostní tabulce a v Karnaughových mapách

Zapsal jste to špatně. To, co tvrdil předřečník výše je "znalosti jsou k ničemu, jsou živnou půdou pro dovednosti". Což logicky znamená, že bez znalostí jste tak jako tak outsider. Umíte houby, a dovednosti bez znalostí nezískáte.

Velkým benefitem znalostí, a to znalostí, které ovládáte - ne jako předřečník, který tvrdí, že ví co je kosínus, ale hodnotu cos(pi/2) by neodvodil - je, že jich je potřeba relativně málo. Časem zjistíte, že svět, včetně IT, se řídí několika málo principy. Tedy že stačí relativně málo znalostí, abyste zvládli obrovský rozsah činností a oborů.

Ten kosínus budete potřebovat třeba v elektronice, počítačové grafice, a mnoha jiných místech. Bude to naprosto základní věc, bez které se neobejdete.

Můžete na to jít také prakticky. Dělat si jedno školení za druhým, platit za to velké peníze, a pořád budete objevovat nové a nové věci. A nebo to vzít od podlahy, pořádně nastudovat teoretické základy - několik knížek. Pak zjistíte, že většina školení už vám nemá co dát, protože to dávno víte, a hlouběji než to školení, často i hlouběji než školitel sám.

***

Vzdělání v IT byste si měli vybírat podle toho. Pokud někdo hledá IT školu bez matematiky, ať se na to rovnou vykašle. Nemá to smysl, kromě toho titulu. To bych mu raději poradil, ať odjede do Polska, tam jsou školy, které se zaměřují na lidi, co chtějí titul a znalosti nechtějí. Za pár šušňů tam najdou obdobu právnické plzeňské fakulty. Polské tituly jsou uznávány v EU, ač všichni škřípou zuby, protože vědí o co jde.

Spíše se divím, protože v IT po mě nikdo univerzitní titul nepožadoval, ač jej mám. Pokud vám nejde o vzdělání, což v IT bez matematiky naprosto nejde, tak proč se univerzitou zatěžovat? A pokud jste státní zaměstnanec v IT typu správce sítě, kde tabulkový plat závisí na titulu, udělejte si raději pajďák nebo něco jednoduchého.

30
Citace
Ano, obecně to pro floaty platí. Jenže tady je zrovna důvod jiný. 100 je ve floatu exaktní, nedošlo tam k žádnému zaokrouhlení. Takže to porovnání vrací false z jiného důvodu. Podle popisu === bych tipoval, že je to proto, že integer a float to bere jako různé typy.

To máte naprosto pravdu. Jsou to různé typy.


Stran: 1 [2] 3 4 ... 8