-
Data: 2020-06-09 23:15:48
Temat: Re: Embedded HTTP Server
Od: heby <h...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 09/06/2020 22:43, Maciej Sobczak wrote:
>> Programowania defensywnego na inpucie.
> Rzucam tezą, że ktoś z dobrą intencją ulepił koncept a cała masa ludzi ten koncept
powiela, już bez zastanowienia o co autorowi chodziło.
> Weź sobie funkcję std::sort. Ma trzy argumenty, trzeci to właśnie callback
komparatora (zwany w kręgach zbliżonych do akademickich "predykatem"). Otwórz sobie
header "algorithm" ze swojego kompilatora i poszukaj tam co robi funkcja std::sort ze
swoim trzecim argumentem (czyli "inputem", jak to nazywasz).
> Sprawdza, czy programista nie podał pustego wskaźnika/funktora/itp.?
Teraz weź dowolny nagłówek z Qt i poszukaj sobie Q_ASSERT. Niezłe
głupki, nie? Kto by traciła na to czas, Paaaanie...
> Tak więc biblioteka HTTP jest właśnie w takim towarzystwie (przynajmniej w tej
konkretnej kwestii...).
No ale to kiepskie towarzystwo. Co by o std:: nie mówić, jakościowo to
jest takie sobie, że nie wspomnę już że ma co najmniej kilka implementacji.
>>> Od kiedy to biblioteki HTTP służą do weryfikacji programów?
>> W każdym inpucie powinna być weryfikacja,
> To nie jest input, tylko część programu. Inputem jest URL z przeglądarki albo dane
z formatki w POST. I *to* należy walidować.
Więc mamy różne pojęcie o inpucie. Jako klient bibliteki widzę to
inaczej, nic nie poradzę.
>> ponieważ *ułatwia* to
>> debugowanie klientowi.
> Debugowanie ułatwia fakt, że gdybyś faktycznie spróbował zrobić taki błąd w tej
bibliotece, zamiast trollować na rympał, to byś zobaczył, że std::function rzuca
wtedy wyjątek, który biblioteka uczciwie wypisuje na podanym strumieniu do logowania
błędów.
Exceptions to nie asercje. Nie służa do tego samego. Narzekanie jest na
asercje a raczej ich brak. Asercje to rodzaj dokumentacji dla klienta.
Przydają się w debugu. Nic nie kosztują w runtime. Gdzie są wady które
powodują że nie warto?
> To programowanie defensywne, podobnie jak paranoja wokół unit testów, to niestety
efekt braku refleksji nad własnym warsztatem.
Paranoja wokół unit testów oznacza po drugiej stronie luzacki kod bez
śladu testowania. Rozsądek nakazuje być gdzieś w środku, specyfikacja
nakazuje czasem mieć prawie 100% pokrycia. Trudno tu doszukiwac się
refleksji, choć często muszę stopować młodych gniewnych którym wszystko
zawsze wychodzi dobrze od razu, tylko troche nie działa. Jednak pisanie
unit testów czasem się przydaje. Jak coś zapraszam do mnie, sam zobaczysz.
>>> Targetem są świadomi inżynierowie, którzy nie oczekują od biblioteki HTTP, że im
zrobi weryfikację poprawności programu...
>> Chyba takich jest relatywnie mało. Sądzepo ilości assertów w poważnych
>> biblitekach.
> No to ile assertów znalazłeś w std::sort na trzecim argumencie?
Trudno nazwać std:: poważną bibliteką pod kątem jakości. Obserwowałem
kiedyś rozwój stlport i muszę przyznać że podejście z gatunku "chyba
dobrze, komituj na produkcję" dało mi dużo do myślenia i zmianę własnego
warsztatu ze zwrotem przeciwnym.
> Ja sprawdziłem w bibliotekach standardowych z trzech różnych kompilatorów.
To sprawdź jeszcze resztę świata. Zacznij od Qt. Spodoba Ci się, tam
pracują sami nadprzyrodzeni hackerzy którzy mają reglamentowane asserty.
Ale i tak można ich tam troszkę znaleźć. Widocznie ktoś stwierdził że
czasem warto pilnować czy coś nie jest nullem, nawet jeśli klient tej
biblioteki jest nadprzyrodzonym superkoderem z kontraktem i +10 do
szczęścia.
Następne wpisy z tego wątku
- 09.06.20 23:32 heby
- 10.06.20 07:50 Tomasz Kaczanowski
- 10.06.20 08:09 heby
- 10.06.20 20:57 Maciej Sobczak
- 10.06.20 21:13 Maciej Sobczak
- 10.06.20 22:35 Maciej Sobczak
- 10.06.20 22:52 heby
- 10.06.20 22:54 heby
- 10.06.20 22:55 heby
- 23.06.20 09:33 Wojciech Muła
- 23.06.20 23:13 Maciej Sobczak
Najnowsze wątki z tej grupy
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
- Nowa ustawa o ochronie praw autorskich - opis problemu i szkic ustawy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
Najnowsze wątki
- 2025-04-04 Prezydium Sejmu Tuskiego orzekło: Poseł KO mecenas Roman Giertych NIE jest mordercą (w żadnym sensie tego słowa?)
- 2025-04-04 Reset komóry
- 2025-04-04 Lublin => JavaScript / Node / Fullstack Developer <=
- 2025-04-04 Zielonka => Key Account Manager IT <=
- 2025-04-04 Warszawa => Ekspert IT (obszar systemów sieciowych) <=
- 2025-04-04 Warszawa => Mid/Senior IT Recruiter <=
- 2025-04-04 Białystok => NMS System Administrator <=
- 2025-04-04 Warszawa => Spedytor Międzynarodowy <=
- 2025-04-04 Warszawa => Generative AI Engineer <=
- 2025-04-04 Warszawa => Gen AI Engineer <=
- 2025-04-04 Warszawa => Senior Programmer C <=
- 2025-04-04 Jak odróżnić myjki wibrujące od ultradźwiękowych.
- 2025-04-03 Ledy na wyłączniku czasowym błyskają
- 2025-04-03 Mapy w android-auto
- 2025-04-03 Czy [polityka] wolno wyzywać od idiotów ale nie od morderców? Czy posłowi wolno mniej niż obywatelowi?