Ostatnio w pracy debatowaliśmy nad pewnym problemem z formularzami - zdarzało się, że zaczynały mocno lagować, szczególnie wtedy, kiedy
a) w formularzu występowało wiele inputów,
b) zmiany na jednym inpucie wpływały na wartość w innym (np. zmiany w polu "Title" wpływały na wartości w polu "Id").
Stack jaki tam aktualnie mamy to Formik + Yup. Z uwagi na fakt, że problem ten był już wcześniej łatany z różnym skutkiem to teraz padła decyzja na zmianę biblioteki obsługującej formularze - nowy stack to react-hook-form + zod.
Ta sytuacja przypomniała mi, że na hejto również korzystamy z Formik + Yup – może więc i u nas przydałaby się zmiana?
Chciałbym zapytać się:
1. Programistów #webdev #frontend #react - czy macie jakieś doświadczenia/przemyślenia w tym temacie?
2. Wszystkich Użytkowników - czy zdarzyło się Wam zauważyć, że formularze na hejto czasem potrafią się przycinać albo działać wolniej? (o problemie w działaniu formularza dodawania komentarza, kiedy jest sporo komentarzy już wiem i jak to ogarnę to będzie o tym osobny wpis )
@kris Z formik i react-hook-form nie korzystałem bardzo długo, ale z zod'a korzystam regularnie i jest super. Z takich swoich doświadczeń, to mi przy dużych formularzach pomagało wywalanie state skąd tylko się da. Kiedy każdy input ma swój state, to zaczyna to trochę mulić, a wszystko na dobrą sprawę w submit można wyciągnąć z FormData . Jeżeli chodzi o czyszczenie formularza, to przydaje się zmiana `key`, wtedy każdy input wraca do `defaultValue`. No ale wiem, że nie zawsze się tak da.
@kris No generalnie najprościej jest nie przechowywać niczego z formularza w React state, wtedy formularz nie laguje bo nie rerenderuje go całego przy każdym inpucie. Mantine w swoich formularzach ma np. opcje "uncontrolled mode" i dosłownie maja napisane: "Controlled mode is not recommended for large forms". Nie wiem jak to u was wygląda w tej bibliotece bo nigdy z niej nie korzystałem. Ogólnie nie jestem też jakimś expertem Reacta żeby nie było xD. https://mantine.dev/form/uncontrolled/
Ostatnio zepsuł mi się monitor i znowu muszę stanąć przed czasochłonnym przeczesywaniem rynku w celu kupienia nowego modelu. Dlatego pytanie, czy ktoś tutaj pracuje na matrycy OLED lub pokrewnej? Podobno producenci mają jakies szacher-machery żeby piksele się nie wypalały na tych panelach, czy ktoś może potwierdzić?
Do tej pory miałem IPS która defacto jest złotym środkiem i sprawdzała się zarówno w graniu oraz pracy biurowej ale może własnie to jest dobry czas żeby wejśc na poziom wyżej.
Kurde, nie wiem jaki będzie odzew do tego co napisze ale w całym swoim życiu nie wydałem więcej niż 250zł na monitor. Po prostu kupuje poleasingowe IPS na allegro z drobnymi rysami na obudowie, ekran igła. Jak wytrzymał te kilka lat w biurze bez awarii to znaczy że przeżyje nas wszystkich. W dodatku idzie dorwać na prawdę fajne biznesowe urządzenia w niskiej cenie.
Kupując tv który używam w sposób wszelaki łącznie z kompem wybrałem mini led - może w monitorach też to jest ? To jest alternatywą dla oledu - brak ryzyka wypaleń przy jednoczesnym wysokim kontraście, jasności itp
Widzę tu masę kolegów, którzy może nie mają pojęcia, ale chętnie się wypowiadają. Też mam TV OLED i komp fajnie na nim wygląda, ale... Nijak ma się przykładanie przypadku TV OLED, do monitora OLED. Z filmów, które oglądałem w temacie, to te drugie wciąż mają problemy wypalania, bo OSy mają mnóstwo elementów, które są stale wyświetlanie. Wciąż trzeba bawić się w takie rzeczy, jak chowanie paska zadań w Windzie, długotrwałe otwieranie okien w trybie pełnoekranowym, itd. Przynajmniej, dotyczy to tych OLEDów dostępnych w przystępnych cenach. Ale i drogie modele wciąż mają problemy. Do długotrwałej pracy biurowej: wciąż jeszcze nie. Do konsumpcji, produkcji mediów: powoli można się przymierzać, ale raczej przeczytałbym najpierw stosy tematów na forach, redditach, itd, zanim wskazałbym konkretny model.
A ja z przyjemnością mogę oznajmić, że dopiero co wydaliśmy nową wersję Godot Rusta, o!
Głodot Rust to, w dużym skrócie, biblioteka która pozwala gadać z Godotem po rustowemu – skupiamy się na tym żeby szybko, efektywnie, bezpiecznie i przyjemnie dało się dostarczać ten słynny value, zamiast bezsensownie utykać. Zero boilerplate, zero rozkmin, większość abstrakcji ułożone tak jak w gdscripcie, siadasz i robisz co trzeba .
W tej wersji wpadły usprawnienia do eksportów, QoL ficzery do Godotowych Callable, `match_class!` do łatwego matchowania danego eventu, ostatnie szlify silnie typowanych sygnałów… i duuuuuuuuuuuużo innych usprawnień >:].
skupiamy się na tym żeby szybko, efektywnie, bezpiecznie i przyjemnie
To szybko i przyjemnie czy w Rustcie? Bo mi tu kolidują te słowa ze sobą xD.
A tak na poważnie bo nie jestem totalnie w temacie. Czy gry napisane w tym będą działać jakoś znacznie szybciej niż napisane w tym czym się domyślnie pisze w Godocie? No bo z tego co pamiętam to Godot używał czegoś podobnego do Pythona, no i to na pewno ma dużo mniejszy próg wejścia niż Rust, więc ciekawi mnie czy warto się męczyć z Rustem. Robił ktoś jakieś porównania wydajności, benchmarki itp?
Jakiś czas temu wpadłem na koncepcję założenia czegoś, co wyeliminuje problem martwego internetu. Na razie to prosty projekt w Laravelu napisany z Chatem GPT, ale wierzę że może znajdą się tu pasjonaci, którzy zechcą zrobić coś z tego więcej niż jest teraz w fazie koncepcji
Idea: powrót do Internetu sprzed ery social mediów. Zero memów, filmików, algorytmów – tylko czysty tekst i realna wymiana myśli. Projekt ma łączyć ludzi wokół słowa pisanego i zachęcać do wychodzenia z domu, przeżywania i opisywania doświadczeń.
Tekst > obraz – cała komunikacja oparta na pisaniu.
Lekkość – brak ciężkich frameworków frontendowych, minimalizm.
Anonimowość i pseudonimy – brak parcia na realne nazwiska, większa swoboda wypowiedzi.
Brak algorytmów – chronologia, tagi i proste wyszukiwanie zamiast feedów sterowanych AI.
Kultura retro – estetyka wczesnych lat 2000 (fora, IRC, ziny).
Założenie tego co stworzyłem polega przede wszystkim na tym, że jest 0 obrazków, memów, zdjęć. Tylko i wyłącznie tekst.
Mamy magazyn zinów, mikroblog, forum (phpBB), irc (teraz jest libera), anonimowe wyznania - czyli user pisze w trybie anonimowym, spotkania (organizacja czegoś jak hejtopiwo)
Obserwowani - czyli lista userów, których obserwujemy i wyświetlają się na feedzie - można ich podświetlić innym kolorem na feedzie z resztą?
BTW: Spojrzałem na kod - jakieś dziwne pliki Ci potworzyło w głównym katalogu, poza tym cała logika w controlerach, włącznie z walidacją, scopem, authem, policy itp. Trochę kupa z tego wyszła
@tosiu Drobna sugestia - może dałoby się napisać front tak żeby działał też na starych przeglądarkach? Myślę że przeglądanie takiej strony na kompie z win98 to by była pełna immersja ʕ•ᴥ•ʔ
@szatkus Zapewne jak odliczysz intro, reklamę swojego kursy Javy, wstępu, zakończenia oraz ostatnich 30 sekund na karty z polecanymi filmami to pewnie wyjdzie 2 min xD.
Klient ma aplikacje w angularze, my mamy dość duży komponent w Reacie. React jest kompilowany do web componentu, web component jest lazy loadowany i osadzany w angularze (bardzo przyjemne rozwiązanie w package.json angulara pojawia się tylko 1 dependency i nie śmieci w angularze zależnościami do tego komponentu). W naszej aplikacji w Reakcie dodałem web worker (żeby liczył na osobnym wątku coś ciężkiego. Liczy to coś biblioteką napisaną chyba w C wykompilowaną do Wasm).
Przed chwilą udało mi się uruchomić logikę napisaną w C wykonwertowaną do Wasm w web workerze w web componecie wygenerowanym z aplikacji reacktowej osadzonym w angularze. WebComponent ma ładny typ w TS który mówi jakich propsów spodziewa się React.
I brzmi to strasznie ale wbrew pozorom bardzo zgrabnie to wszystko działa i ze sobą komunikuje, jest ładne separation of concerns i samo wywołanie zajmuje mniej niż 100 linii na poziomie angulara, a jak jesteśmy w reakcie to budujemy paczkę na wyjście.
@Deykun a jak ten komponent napisany w Reacie pojawia się na stronie? Skoro jest tylko dodany moduł w package.json i nie ma żadnych innych referencji nigdzie to brzmi, jakby appendował się do jakiegoś określonego DOM elementu czy macie to jakoś inaczej rozwiązane?
#automotive to stan umysłu. Nie pracowałem wcześniej w automotive, szczerze mówiąc nie znam reguł tych autosarów, a do projektu trafiłem dość przypadkiem. Po prostu znam wiele reguł programowania i dobrych praktyk i okazuje się, że nawet daję radę. Automotive miałem za dział w którym naprawdę dba się o jakość kodu, no bo kurde, jednak ktoś kiedyś może umrzeć XD ale co się wydarzyło, czego się nauczyłem:
Robię przegląd kodu na finiszu cyklu wydawniczego (korp. przedreleasowe review). Jest sobie funkcja, jako parametr przyjmuje inta i widzę że ten int jest bezrefleksyjnie, bez żadnego sprawdzania rzutowany na na typ enum class. No i cyk, mamy to, tak się nie robi, z tego co wiem, standard nie opisuje co ma się zadziać gdy enum zawiera wartości 1 i 2, a my chcemy rzutować wartość 3 na ten enum - innymi słowy, używamy wartości spoza zakresu. Z tego co wiem, nazywa się to "undefined behavior" i unika się takich rzeczy, no bo teoretycznie każdy kompilator może dowolnie przetworzyć taką operację i nie ma pewności co z tego wyjdzie.
Poprawiam więc aby było po bożemu, ze sprawdzaniem wartości, odpalam testy i co? Nie przechodzą! Sprawdzam scenariusze testów, a tam na legalu, gość sumuje praktycznie wszystkie wartości tego enuma w zmiennej typu int i woła tą funkcję, co w efekcie jest właśnie jawnym gwałceniem tego, co napisałem xD
Okazuje się, że to nie jedyny przypadek, bo są inne testy, które robą podobną rzecz. Wychodzi na to, że możemy w praktyce pakować do jednej zmiennej co się da, bo każda zmienna enuma to inna flaga, a potem maskujemy ją i patrzymy w tej zmiennej jakie flagi są włączone. No wszystko fajnie, ale enum przecież nie do tego służy xD więc albo scenariusze są wadliwe, albo design. Napisałem więc do autora by spytać, co miał na myśli, a ten na to, że wszystko jest w porządku i tak ma być.
Otóż w automotive jest wzorzec zwany flag enum i dosłownie gwałci się enuma w ten sposób, chociaż moim zdaniem powinno się inaczej rozwiązywać tego typu zagadnienie. Niesamowita sprawa, mózg rozjebany. Poniżej wątek na stackoverflow, który prezentuje takie podejście xD
Jestem teraz ciekaw ile analizatorów kodu rozumie taką konstrukcję i ją przepuszcza. Ale też podejrzewam, że ten "undefined behavior" w takim razie jest martwy, bo co najmniej IAR czy inne kompilatory automotive, jasno wiedzą co z tym zrobić. Dlaczego więc GCC czy Clang miałby nie wiedzieć?
@MostlyRenegade no cóż, jak używałem zmiennej jako flag to używałem normalnej zmiennej a nie typu enumeracyjnego. Można np też użyć struktury z polem bitowym. Jest sporo alternatyw i moim zdaniem używanie enuma w ten sposób nie jest najlepszym rozwiązaniem
@ZohanTSW Enumy w C++ to w zasadzie niewiele więcej niż sterta stałych, niestety, enum class jest już trochę lepszy, ale jak chcesz w C++ coś zgwałcić to masz do tego zawsze narzędzia. Szczerze mówiąc to ja bym takich rzeczy nie wpuścił, bo to jest zło, ale nie przeorasz kodu który już istnieje i polega na takich trickach. Sprawdź tylko czy enum class bazuje na int (domyślnie), bo nie musi : P.
A Automotive to tylko działka, przyjmują tam wszystkich co znają odpowiednie technologie.
@Opornik daj frejmworka, gdzie docker czy inne bajery?! Przecie strona ma wazyć 10gb po pobraniu tego wszystkiego, bo akurat muszę wciagnąć 1gb pakiet, bo w tym frejmworku jest taki jeden bajer który musze mieć!
@Tomekku Większość współczesnych technologii potrafi robić standalone export plików strony i nie trzeba koniecznie używać dockera i odpalać strony za pomocą npm install a potem npm start tylko można zbudować projekt i dostać gotowe pliki do wrzucenia na serwer.
Przykładowo sklep który ostatnio napisałem dla klienta w Next.js po standalone exporcie waży ok 60MB a jest tam nasrane frameworków i bibliotek ile się da. A no i przypominam, że to jest fullstack framework więc te 60MB to jest razem z serwerem oraz wszystkimi binarkami.
Well, chciałbym tylko przypomnieć, że react wyszedł w 2013 roku, to było jakieś 12 lat temu. Zaraz zacznie się uczyć nowe pokolenie programistów które urodziło się po wyjściu tego frameworka. Czasy o których piszecie są baaardzo odległe.
Nie twierdze też że ta strona jest słaba czy coś, zwróciłem tylko uwagę, że jest bardzo archaiczna. Nawet podesłałem to znajomym programistom to też byli zdziwieni jak ta animacja była zrobiona. Może nie pisałem stron w tych czasach ale znam mniej więcej ten vibe bo uczyłem się tego trochę jeszcze wcześniej w szkole i wiem jaki to jest ból żeby strona zadziałała np na Internet Explorerze, zresztą ciężko nie wiedzieć jak to wyglądało kiedyś gdy każdy wątek na Stack Overflow odnośnie jakich webowych rzeczy ma pytanie czy będzie to działać na IE i ewentualnie jak zrobić żeby to zadziałało xd. Btw współcześnie to Safari jest takim IE.
A co do nowych stron, to że większość jest nieczytelna lub wolna to nie wina frameworków czy bibliotek tylko tego że programiści są chujowi albo też np zostali zmuszeni do nasrania reklam, śledzenia i funkcji analitycznych do każdej akcji na stronie. Albo też im się po prostu nie chciało bo mają trzaskać te projekty jak najszybciej.
Prosty skrypt AHK do uruchomienia i natychmiastowej minimalizacji #thunderbird do traya.
Wystarczy skompilować kod w AHK2EXE, skopiować EXE np do %LOCALAPPDATA%\Programs i wrzucić skrót do EXE w autostarcie %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
Co to robi?
Uruchamia po prostu Thunderbirda i automatycznie minimalizuje okno.
Wymagania?
Thunderbird
aktywna opcja minimalizacji okna Thunderbird do traya (patrz załączone screeny)
To, co zaczęło się jako poboczny projekt w Amsterdamie w latach 90., stało się silnikiem napędzającym sztuczną inteligencję, obróbkę i naukę o danych oraz największe firmy na świecie.
Pamiętam jak na studiach robiliśmy zadanka z big data, kolega pisał programik w pythonie, ja cpp. Siedzieliśmy na skype i kodziliśmy. Co prawda jemu development zajął połowę tego co mnie, ale za to on czekał 30 minut na wyniki a ja 30 sekund
Ja akurat nie przepadam fes za Pythonem i jak tylko mogę to staram się go unikać xd. Nienawidzę jego składni, braku klamerek czy średników, ogólnie bardzo jest dla mnie nieczytelny.
@Catharsis - wiem, że Ci to już pisałem ale kiedyś Pythona nie lubiłem - ale teraz to mój główny język i język aplikacja do analizy danych z którymi pracuję.
Czasem przy większych klasach czy funkcjach brakuje klamerek - ale nie na tyle często by to był duży problem.
Standardowy wątek o kosztach Google Maps i jak ktoś przypadkiem wtopił kasę. Ale czego ja nie wiedziałem i co jest srogie, to, że Google zabrania cachowania i teoretycznie można to zinterpretować tak, że każdy użytkownik szukający "Kraków" powinien strzelić po wyniki dla "Kra", "Krak" do Google osobno, bo to by było cachowanie autocomplete. XD
Ktoś wie co jest nie tak z Redditem ostatnio bo bez przerwy widzę takie akcje gdzie upvotowane posty są usuwane losowo przez adminów subredditów bez żadnego powodu xd.
The Register niedawno opublikował artykuł zatytułowany Putin on the code: DoD reportedly relies on utility written by Russian dev. Powinni się wstydzić tego tekstu. Ten biedny deweloper open source teraz obrywa, tylko po to, żeby ktoś mógł nabić sobie parę punktów w internecie. To naprawdę przykre.
Ale spójrzmy na fakty. Jeśli nie jesteś zbyt bystry, to może się wydawać, że wskazanie na projekt open source napisany przez jedną osobę w kraju, którego nie lubisz, jest czymś złym. Może tak być. Ale równie dobrze może być tak, że oprogramowanie, na którym działa CAŁA CHOLERNA PLANETA, jest napisane przez jedną osobę. W jakimś kraju. Tylko nie mamy pojęcia, w jakim. To nie jest ta sama osoba, żeby była jasność, ale to zawsze jest jedna osoba.
I tu jest sedno sprawy. Prawie cały open source to dosłownie jedna osoba. To znaczy: jeśli spojrzysz na wszystkie projekty open source na świecie — a jest ich mnóstwo — zobaczysz powtarzający się wzorzec: zawsze jedna osoba, bez względu na to, jak podzielimy czy przeanalizujemy dane.
@Deykun A no też to zauważyłem, że w zasadzie tylko jakieś duże projekty open source, które mają jakiś widoczny "frontend" w postaci strony/programu itp mają dużą ilość aktywnych maintainerów. A jeżeli popatrzymy sobie na losowe libki albo pakiety nodejs/rusta/go/pythona itp to ogromna cześć z nich jest faktycznie utrzymywana przez jedną osobę, ma np z 200-300 gwiazdek na githubie a jednocześnie 18 milionów pobrań z NPM xD.
Moim zdaniem tacy ludzie są ogromnie niedoceniani bo efekty ich pracy są widoczne jedynie przez innych programistów którzy korzystają z ich bibliotek. A końcowy użytkownik widzi jedynie gotowy program/stronę i całą swoją wdzięczność przelewa na twórców tego programu nie widząc nawet o istnieniu ludzi którzy stoją za wszystkimi pakietami które pozwoliły ten program stworzyć.
No więc to chyba najgorsza możliwa pozycja w świecie open source, bycie takim jedynym maintainerem jakiejś popularnej biblioteki. Nie dość, że jest na tobie presja, bo jak coś zepsujesz to możesz wywołać ogromne zamieszanie w świecie IT, to jednocześnie masa ludzi od ciebie oczekuje, że będziesz do końca utrzymywać to za darmo xD. Nie trzeba nawet sięgać daleko żeby zobaczyć do czego takie coś może doprowadzić, przypominam niedawną akcje z backdoorem w linuxowym xz. Dokładnie taka sytuacja, jeden dev który nie ma czasu i siły utrzymywał narzędzie używane przez większość największych dystrybucji Linuxa.
@Catharsis problem bardzo często wałkowany na OSS. Niemiecki rząd się za to wziął i zaczęli fundować takie projekty. Zwłaszcza, że świat się zmienia. Kiedyś ktoś używał tego do pracy (w sensie bibliotek), ale teraz ludzie naprawdę koszą na tym kokosy. A potrafią być w dodatku strasznymi dupkami dla maintainerów.
jeszcze w środę rano nie wiedzialem co robię. dziś, dzieki trójce darmowych botów, gpt, claude i grok mam to https://www.k2racing.team/
rzeczywiście, dużo ludzi z it straci (lub już straciło) chleb.
uprzedzam: wiem, że ta moja zabawka to jakis oczojebny miszmasz, ale powoli dostroję i layout. strach, co te boty potrafią w rękach ludzi, którzy wiedzą, co robią i na co patrzą (ja tam na razie jestem na etapie przestawiania przezroczystości w prostokątach i kwadratach). co do kalendarza, to claude się zatrzymal na 2024 najwidoczniej.
k⁎⁎wa, jakby mi ktoś powiedział na początku roku że będę koderę to bym go wyśmiał.
@Hjuman to "sprzedam" Ci tipa odnośnie AI i robienia stron. Jest takie magiczne coś, co zwie się Lovable. Pobaw się tym.
Opisanie strony zajęło mi 1 minutę. Aplikacja pracowała nad stroną 3 minuty (w zasadzie nie podałem mu nic poza nazwą teamu i paroma linijkami tekstu) -> https://k2-racing-welcome.lovable.app
Oczywiście w ostatecznym rozrachunku lepiej zrobić stronę na wordpressie, bo masz gotowy CRM (panel do edycji) i nie musisz się bawić z kodowanie.
@Zarieln JA PIERDOLE FACET. TOŻ TO.... O KURWA SZOK. SHOCK I SAY. to już teraz... nie wiem jak ci dziękować. może kiedyś cię spotkam, to sie przejdziemy (w ramach rozsądku oczywiście. najlepiej na jakmś poligonie)
@Hjuman Spoko, lubię pokazywać takie zabawki ludziom, bo pomagają właśnie przy takich projektach, gdzie ktoś nie będzie przecież inwestował milionów monet.
Może kiedyś owcen zorganizuje ogólnopolski zlot hejtowiczów, to zobaczymy
Właśnie przed chwilą wrzuciłem crates.io, nową wersję Krokieta(smakowicie brzmiąca nazwa, czyż nie?) i Czkawki, programów do usuwania duplikatów, uszkodzonych plików i tym podobnych rzeczy.
W przeciągu ostatniego miesiąca, przez połowę czasu tego czasu byłem na urlopie, na którym zamiast odpoczywać sobie, dodawałem nowe funkcje do programów(i wrzucałem błędy, bom ciekawy kiedy zostaną znalezione)
Jeśli odbiliście się od Czkawki np. z powodu specyficznego wyglądu, to w Krokiecie... zapewne też się odbijecie bo to nie jest program będący szczytem ergonomicznych rozwiązań, ale i tak według mnie wygląda lepiej niż Czkawka i sam jestem w trakcie przeskakiwania na niego(i też uzupełniania ciągle brakujących funkcji)
W tej wersji udało mi się też poprawić część z rzeczy, które zgłaszaliście pod poprzednim wpisem(jak np. niezbyt widoczne ciemne ikony w ciemnym trybie).
Zapewne część osób po dojściu do tego momentu zapyta się "a po co to komu?".
Jak na użytkownika strony na której postuje się śmieszne obrazki, jest to dość dziwne pytanie, ale odpowiem do czego ja sam tego używam - do zarządzania kolekcją memów i usuwania tych wersji z gorszą rozdzielczością
Gdyby cieśle budowali domy tak, jak programiści tworzą programy, to pierwszy dzięcioł, który by nadleciał, przyniósłby koniec cywilizacji
-- drugie prawo Weinberga, rzekomo (okazuje się, że pochodzenie cytatu samo w sobie jest ciekawe)
Wyobraźcie sobie. Mieszkacie w Wielkiej Brytanii i pracujecie dla tamtejszej poczty - nie na szczycie hierarchii firmowej, ale macie własną placówkę, zatrudniacie pracowników, robicie coś pożytecznego i robicie to dobrze, uczciwie, rzetelnie. Złego słowa nikt o Was do tej pory nie powiedział.
Więc idziecie do biura, słuchając przeróbki znanego wiersza o nocnym pociągu pocztowym w wykonaniu Aphexa Twina a tam jesteście proszeni na dywanik przez samego Dyrektora Regionalnego.
Dalsze słowa wprowadzają Was w takie osłupienie, że nic z nich nie rozumiecie. Poza "malwersacje finansowe", "przywłaszczyłeś", "duże sumy pieniędzy", "audyt komputerowy". Mówicie, że to nieprawda, ale równie dobrze moglibyście się tłumaczyć, że nie jesteście kosmitami.
No i, oczywiście, padają słowa "zwolnieni bez wypowiedzenia" i "zarzuty karne", po czym eskortuje Was policja na zewnątrz budynku prosto na komisariat.
To, jak straszna jest to historia, determinują trzy fakty, o których po kolei. Po pierwsze: macie rację. Nic nie przywłaszczyliście.
Po drugie, w takiej sytuacji stanęły setki pocztowców z Wielkiej Brytanii. Niekoniecznie wszyscy słuchali Aphexa Twina, reszta się zgadza. Część z nich zmuszona była do pokrycia fikcyjnych strat z własnej kieszeni. 236 osób skazano na więzienie, jak się okazało - niesłusznie. Historię powiązano także z trzynastoma dokonanymi skutecznie samobójstwami.
Jak więc do tego mogło dojść? Odpowiedzią było tragicznej jakości oprogramowanie, którego brytyjska poczta używała do księgowości. Oprogramowanie to - Horizon, autorstwa Fujitsu - po prostu źle liczyło. Dla ciekawych, w formie mema, fragment programu w pseudokodzie z raportu odnośnie jakości tego oprogramowania. Raport był druzgocący:
Pomimo że fragmenty EPOSS (systemu Horizon - przyp. red.) są dobrze napisane, istotne sekcje są kombinacją niskiej jakości projektu technicznego, złego programowania i nieprzemyślanych korekcji istniejących błędów. Negatywny wpływ tych czynników będzie narastał tak długo, jak kultura PINICL (zespół odpowiedzialny za produkt - przyp. red.) pozostanie niezmieniona. Wynika to częściowo z natury/rozmiaru zadania naprawy błędów i częściowo z jakości i profesjonalizmu pewnych członków zespołu.
Oficjalny raport poczty brytyjskiej jednak ubiera to w bardzo łagodnych słowach:
1.3 Przed uruchomieniem [systemu], niektórzy pracownicy Fujitsu odkryli że Legacy Horizon był zdolny do produkowania danych, które były fałszywe. Doprecyzowując, pracownicy ci byli świadomi, że oprogramowanie mogło pokazywać zyski lub straty na kontach oddziałów lub placówek, które były iluzoryczne, nie rzeczywiste.
1.5. W 2010, Legacy Horzion został zastąpiony wersją (...) Horizon Online. (...) Tak jak poprzednik, Horizon Online również, od czasu do czasu, był dotknięty błędami, problemami i defektami, które objawiały się pojawianiem zysków i strat (...) które były iluzoryczne.
Skazanych uniewinniono, część z nich w procesie cywilnym otrzymała odszkodowanie. A co z winnymi?
Jest cos takiego jak odbiór programu przez klienta. Klient podpisuje się tam że uważa że program który widział i przetestował działa poprawnie i może go już odebrać
@kodyak Jest, chociaż w latach 90, w których system powstawał, mogło to nie być normą - no ale powinien być w wypadku Horizon Online, z XXI wieku. Zasadnym jest oczywiście zapytać o to, jak wyglądał odbiór w tym wypadku.
Pytanie, jakimi testerami dysponowała poczta, ile było czasu na odbiory i jakie procedury testowe wdrożono. Bo wydaje mi się, że procedurą testową mogło być "sam prezes poklikał, po czym powiedział, że mu się podoba"
@mordaJakZiemniaczek Zauważ, że w tej historii - o zgrozo - mógł to być sukces. Wystarczyło, że program pokazywał "ten wziął do kieszeni, tamten wziął do kieszeni" - bez szczegółów, jak. No i cyk podwyżka i awans dla kierownictwa od systemu, bo skutecznie zapobiegli setkom przypadków defraudacji!
A gwarancje procesowe? Na co komu gwarancje procesowe, jest komputer, przecież Pan widzi, że komputer powiedział, że Pan ukradł, to Pan ukradł.
Im więcej się o tym przeczyta, tym wychodzi że to grubsza sprawa.
Ogółem to szefostwo Post Office się chwilę zastanowiło jak ten ich biznes działa, i doszło do wniosku że... Takie franczyźniane biuro pocztowe to słaby pomysł na biznes jest, kto by się do tego zapisał? Trzeba włożyć w to trochę pieniędzy, a przychody marne. Ile da się na tym zarobić?
Dla takiego pana Johna z Upper Sconeshire to jak najbardziej dobry pomysł, poczta przecież zawsze będzie coś tam robić, można jakieś graty posprzedawać na poczcie, stała fucha i można tak robić do emeryturki i jest średnio, czyli super. Ale jak jest się panem Johnatanem z Londynu, dyrektorem poczty i zarabia tam krocie, to przecież nie będzie się człowiek fatygował i harował w nieludzkich warunkach wydając ludziom kwity żeby dostać śmieszne pieniądze co miesiąc.
No to szefostwo wymyśliło - ewidentnie tylko nieuczciwi ludzie się będą pchać w to i podkradać z kasy albo robić jakieś inne wałki. I dlatego powstał system Horizon, nie po to żeby poczta sprawniej działała albo żeby to mądrzej administrować, tylko żeby znaleźć dokładnie kto i ile kradnie i pociągnąć ich do odpowiedzialności.
I zaraz po odpaleniu systemu znaleźli to czego szukali. A przecież skoro według nich to tylko złodziej by się taką pracą zajął, no i znaleźli tych złodziei, no to elegancko! A po co sprawdzać skoro wyniki im pasują? Systemu do sprawdzenia że wszystko się zgadza przecież nie zamówili, a jakby nie dostali wyników no to Fujitsu ma problem bo system zrobili popsuty.
No a pan John co nigdy pensa nie ukradł teraz się musi ciągać po sądach bo tak wymyślił dyrektor z poczty.
A, no i oczywiście bonus na koniec. W brytyjskim systemie prawnym komputery się nigdy nie mylą i z góry jest założenie że są sprawne i trzeba im wierzyć, chyba że są ewidentnie popsute, więc jak komputer mówi że ukradłeś to ukradłeś. A wglądu do kodu źródłowego lub umiejętności do tego sprawdzenia to pan John z okienka na poczcie nie będzie miał, bo po co jemu. Czyli jednak złodziej!