Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.programming > #34001
| From | heby <heby@poczta.onet.pl> |
|---|---|
| Newsgroups | pl.comp.programming |
| Subject | Re: Embedded HTTP Server |
| Date | 2020-06-09 23:15 +0200 |
| Organization | A noiseless patient Spider |
| Message-ID | <rbou6c$ikv$1@dont-email.me> (permalink) |
| References | (4 earlier) <d95ffe9d-570f-455c-bb22-0831b8c0a0dfo@googlegroups.com> <rbm3nv$jf$1@dont-email.me> <8aa9011f-5e8a-4ed1-8fbb-47a260945fb8o@googlegroups.com> <rbmdn3$43s$1@dont-email.me> <9bd79264-2d24-4022-8313-db838dd902ceo@googlegroups.com> |
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.
Back to pl.comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-05 13:57 -0700
Re: Embedded HTTP Server Wojciech Muła <wojtek.mula@gmail.com> - 2020-06-06 03:44 -0700
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-06 11:34 -0700
Re: Embedded HTTP Server Wojciech Muła <wojtek.mula@gmail.com> - 2020-06-08 02:39 -0700
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-08 11:33 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-06 14:34 +0200
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-06 11:42 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-06 22:22 +0200
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-06 15:02 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-07 00:36 +0200
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-07 12:46 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-07 23:21 +0200
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-08 00:49 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-08 11:52 +0200
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-08 13:43 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-08 23:24 +0200
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-08 14:52 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-09 00:08 +0200
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-09 13:23 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-09 22:47 +0200
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-09 14:14 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-09 23:32 +0200
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-10 11:57 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-10 22:52 +0200
Re: Embedded HTTP Server Tomasz Kaczanowski <kaczus@poczta.onet.pl> - 2020-06-10 07:50 +0200
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-10 08:09 +0200
Re: Embedded HTTP Server Mateusz Viste <mateusz@xyz.invalid> - 2020-06-08 10:32 +0200
Re: Embedded HTTP Server Wojciech Muła <wojtek.mula@gmail.com> - 2020-06-06 10:10 -0700
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-06 12:00 -0700
Re: Embedded HTTP Server Wojciech Muła <wojtek.mula@gmail.com> - 2020-06-08 03:25 -0700
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-08 12:20 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-08 21:32 +0200
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-08 14:44 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-09 00:22 +0200
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-09 13:43 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-09 23:15 +0200
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-10 12:13 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-10 22:54 +0200
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-10 13:35 -0700
Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-10 22:55 +0200
Re: Embedded HTTP Server Wojciech Muła <wojtek.mula@gmail.com> - 2020-06-23 00:33 -0700
Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-23 14:13 -0700
csiph-web