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 - wsh wsh

Stran: [1]
1
Vývoj / Re:Trendy v PHP
« kdy: 07. 09. 2022, 13:07:18 »
Ano, napsal jsem to bez vyzkoušení. Ale už vím, že php neumožňuje přetížit operátory a naši php vývojáři na takový styl práce nejsou zvyklí. Proto až na základě mého podnětu v rámci code review přibyla do naší vlastní implementace datetime pomocná funkce max(), která to řeší (do té doby to všichni převáděli na int a porovnávali ve for cyklu). Čili jsem to automaticky u datetime neočekával.

Nicméně na základě naší debaty jsem procházel dokumentaci PHP a nevidím tam, jak poznat, které třídy porovnávání podporují. Našel jsem debatu na StackOverflow, kde dokonce porovnávali date() a spoléhali na to, že proběhne implicitní konverze na string a ty stringy pak budou ve správném formátu. To je přístup, který mě doslova děsí a to že to v PHP prochází mi přijde jako nejhorší, těžko opravitelná vlastnost jazyka.

2
Vývoj / Re:Trendy v PHP
« kdy: 07. 09. 2022, 09:53:01 »
https://www.php.net/manual/en/class.datetime.php

Musím se podívat, proč to kolegové reimplementují, ale počítám, že nějaký vážný důvod to má. Každopádně počítám, že porovnávat to nejde, takže třeba triviální max($datetime1, $datetime2, $datetime3) neuděláš.

Uděláš.

Hele, nebylo by prostě tak nějak férovější prohlásit "já prostě PHP nemám rád, nemám pro to žádný racionální důvod, jenom je mi nesympatický"? Jen takový návrh.

Tak jsem na to koukal a hlavním důvodem bude nedomrlá podpora mikrosekund. PHP se zákeřně tváří, že mikrosekundy podporuje, ale ve skutečnosti

Citace
microtime(true) loses precision in conversion to float. I think you only end up getting precision to 1/10th of a millisecond.

Plus tyhle rady jsou taky skvělé

Citace
You can specify that your input contains microseconds when constructing a DateTime object, and use microtime(true) directly as the input.

Unfortunately, this will fail if you hit an exact second, because there will be no . in the microtime output; so use sprintf to force it to contain a .0 in that case: date_create_from_format(     'U.u', sprintf('%.f', microtime(true)) )->format('Y-m-d\TH:i:s.uO');

Opravdu ti připadá, že tohle není racioální argument - ten jazyk je plný podobných záludných chování, kdy kód většinou funguje, ale pak někam přijde nula a ono to spadne. Případně se ti magicky ztratí přesnost.

3
Vývoj / Re:Trendy v PHP
« kdy: 06. 09. 2022, 17:58:11 »
https://www.php.net/manual/en/class.datetime.php

Musím se podívat, proč to kolegové reimplementují, ale počítám, že nějaký vážný důvod to má. Každopádně počítám, že porovnávat to nejde, takže třeba triviální max($datetime1, $datetime2, $datetime3) neuděláš.


Tak já třeba Tester ignoruju, vesele používám PHPUnit, a nijak mě neuráží, že Nette má svoje vlastní řešení. Kdo jsem abych jim kecal do jejich štěstí.

Akorát, když otevřeš dokumentaci Nette, tak tam najdeš jen Tester. A když chceš testovat presentery, musíš si to napsat sám, ani dokumentace ti nepomůže. Když potřebuješ v testech DB, jsi nahraný a píšeš si sám celé řešení pro bootstrap databáze a pro pouštění testů v transakcích.

PHP jako celek mi moc nepřirostlo k srdci, ale když už, tak třeba Laravel má komplet řešení (https://laravel.com/docs/5.7/database-testing), Symfony má řešení (https://symfony.com/doc/current/testing/database.html), ale v Nette si každý prošlapává svojí cestu sám a objevuje stokrát vymyšlené kolo.

Možná jsem měl jen smůlu, ale ve dvou různých firmách jsem potkal dva (a ne triviálně malé) Nette projekty a v obou to byla zoufalost, věci fungující v jiných frameworcích out-of-the box (autentizace, lokalizace, testy) řešené nějakými vlastními polofunkčními konstrukcemi.

A nejhorší je, že mimo náš píseček, to vlastně nikdo nepoužívá. Integrace Sentry - jen Laravel a Symfony, Loggly - opět Laravel a Sentry, atd. Nic nevygooglíš, nic ti nikdo nepřipravil, pořád řešíš nějaké technikálie místo práce na byznys zadání.

4
Vývoj / Re:Trendy v PHP
« kdy: 06. 09. 2022, 14:05:18 »
Ale postupně se vypracovává, a dneska umí prakticky to samé, co C#, Java, Python.
To je dost silne tvrdenie, hlavne ked veci co som vymenoval maju uz 15 rokov C# aj java vyriesene milionkrat lepsie. Repktive to tam programator nemusi riesit a proste to funguje.
i sa nehodi a este menej sa pouziva.

Ty jiné jazyky si hlavně nenesou tak šílenou zátěž špatného návrhu a mizerné základní knihovny jako php, kde stále ještě spousta knihovních funkcí vrací nulu nebo false při chybě místo, aby vyhodily výjimku. Existuje externí knihovna, která to zkouší řešit, ale při mém zkoušení nefungovala: https://thecodingmachine.io/introducing-safe-php

Také mě překvapilo, že v php není ani tak základní věc jako datový typ pro datetime, takže na projektu, kde jsem dělal, se používaly rovnou tři in-house knihovny pro práci s časem, každá nedomrlá svým způsobem. Navíc v php nejdou přetížit operátory, takže třeba pythonovské datetime(year=2010,month=1,day=1) + timedelta(minutes=60) si ani sám nemůžeš implementovat a u nás se to řešilo podivnými funkcemi jako TimeStamp->addSeconds().

Co mi ale přijde nejhorší, je komunita kolem Nette, které má potřebu ignorovat okolní svět a všechno si dělat samo. Takže máme sice phpUnit, ale Nette si vyvíjí vlastní Tester, který má možná nějaké drobné fíčurky navíc, ale chybí podpora v IDE (polofunkční plugin do PhpStormu nepočitám) a testy v debuggeru si prostě jednoduše nepustíš. Podpora pro NEON v IDE - jde, ale zaplať si propietární plugin. Atd.

Přijde mi, že PHP jde celkem dobrým směrem (třeba typová kontrola a phpstan jsou fajn), ale staví na tak špatných základech, že mě osobně dává větší smysl věnovat se jiným jazykům.

5
Odkladiště / Re:Nefunční zabezpeční Alza.cz
« kdy: 30. 06. 2022, 22:14:48 »
Na supportu jsou neschopáci, kterým je to úplně jedno. Vzhledem k tomu, že Alza nemá kontakt pro hlášení bezpečnostních incidentů, kontaktoval jsem manažera, kterého jsem vygooglil, že už jednou na chybový report reagoval. Napsal jsem:

"Jako IT profesionál si dovedu představit spoustu možných scénářů, jak se na mém účtu objevila nechtěná objednávka, vč. nějaké mé uživatelskéchyby, Vaší technické chyby, ale i bezpečnostního problému. Co mě alezaráží, že Alza nad tím mávne a nestojí ji to za prozkoumání."

Ale odpověď jsem nedostal. Myslím, že Filip Jirsák má pravdu, že optimalizují jen na happy path a nic jiného je nezajímá.

6
Odkladiště / Re:Nefunční zabezpeční Alza.cz
« kdy: 30. 06. 2022, 14:26:33 »
Taky jsem tipoval spíš interní chybu, ale tam bych trochu doufal, že uvidí, kdo to tam interně zadal (aspoň my to vždycky v interních nástrojích logovali) a stačilo to přiznat.

Jestli jim přijde lepší to zatlouct a tvářit se, že se mi někdo nabourává do účtu a oni k tomu neumí zjistit vůbec nic, tak jim na jejich reputaci vůbec nezáleží.

7
Odkladiště / Nefunční zabezpeční Alza.cz
« kdy: 30. 06. 2022, 13:50:28 »
Nesetkali jste se také někdo s problémem, že se vám někdo vloupal do účtu na Alza.cz?

Mám účet zabezpečený náhodně vygenerovaným heslem z password manageru a dvoufázovou autentizací přes SMS. Přesto se mi o víkendu objevila v účtu cizí objednávka za 18 tisíc. Kupodivu ne s použitím uložené karty (omylem jsem ji jednou uložil a pak zapomněl, že ji chci odstranit), ale s platbou při vyzvednutí - takže podvodným úmyslem si nejsem jistý.

Objednávku jsem hned stornoval a kontaktoval support, které mu to bylo naprosto šumák. Druhý den se objevila stejná objednávka, tak jsem ji opět stornoval, změnil si heslo a důrazně kontaktoval support, kterému to opět bylo jedno.

Další den jsem opět urgoval support, jestli něco zjistili a po dalších pár dnech mi přišlo:

"Dobrý deň, bohužiaľ nedokážeme zistiť kto sa pod registráciu nabúral, prajete si Vašu registráiciu prípadne zrušiť, aby ste si mohli vytvoriť novú?"

Od kolegy mám zprávu, že i když má zapnuté 2FA, přihlášení proběhne bez SMS.

Je to jen eshop, ale zase největší u nás a tak by mě zajímalo, jestli se i někdo jiný s tím setkal - zaprvé, že to mají děravá a za druhé, že je jim to zcela jedno. U nás, kdyby zákazník nahlásil, že se mu někdo naboural do účtu, tak se to bude hodně řešit na technické úrovni a ne že necháme support mlžit.

8
Hardware / Re:Chytrý telefon malých rozměrů
« kdy: 22. 04. 2022, 10:40:00 »
Taky jsem hledal malý Android, ale další požadavky (vodotěsnost, rozumná výdrž na baterii) mě dovedly k Pixel 5, což byl o dost dražší telefon, než jsem měl v plánu.

Je docela dobrý, ale u takhle drahého telefonu mě dost štvou výpadky bluetooth audio (v autě i repráčku Flip5 se po pár desítkách minut začne sekat zvuk) a problémy způsobené tím, že se u nás oficiálně neprodává - nefunkční 5G a hlavně WiFi volání (pro mě kritická věc, protože často jsem v místě, kde není mobilní signál, ale je tam WiFi).

Kdybych to řešil teď, abys bych hodně zvažoval ten Galaxy S22.

9
Sítě / Re:Zkušenost multicast (video) a levné switche
« kdy: 19. 12. 2021, 07:49:46 »
Dělal jsem kolem 2005 několik instalací Genetec Omnicast s multicastem a je o přesně jak píšeš. Levné switche nepoužitelné, v podstatě jsme skončili jen u Cisco. A i tam to tehdy nebylo 100% bez problémů. Naštěstí to za nás řešili dodavatelé, ale pamatuju si, že v jednom obchodním centru (pár set kamer) se specialista z Alef0 dost natrápil, než si to nějak sedlo. Bohužel konkrétní fakta ti po takové době nedohledám a ani nevím, jestli by to mělo ještě dneska význam.

10
Hardware / Re:Mrznutí Lenova X230 po probuzení ze spánku
« kdy: 14. 12. 2020, 16:05:59 »
Mám stejný problém s X1 Carbon 6th a myslím, že je to chyba přítomná v nějaké konkrétní verzi kernelu. Na Ubuntu 18.04 s kernelem 4.15 se to nědělo, když jsem zkoušel HWE kernely 4.18.0-15 a 5.3.0-40, tak se vytuhávání projevovalo. Navzdory tomu jsem riskl upgrade na Ubuntu 20.04 s 5.4 a tuhne to - přibližně každé čtvrté probuzení notebooku se nepovede.

Měl jsem pocit, že jsem někde viděl popis trochu podobné chyby s tím, že v novějším kernelu je to opraveno, ale teď to nemůžu dohledat.

Stran: [1]