Programistyczne WTF jakie Was spotkały

Programistyczne WTF jakie Was spotkały
Sarrus
  • Rejestracja:prawie 14 lat
  • Ostatnio:2 dni
  • Postów:2512
2

Przykład jak nie należy projektować klasy, która może być przez kogoś używana:

https://github.com/JoshClose/CsvHelper/blob/master/src/CsvHelper/Configuration/ClassMapCollection.cs

Co jest w niej nie tak? Ano tak się składa, że potrzebuję zawartość tej kolekcji skopiować. Jedyny dostęp do zasobów tej "kolekcji" jest przez indekser. Tak więc musiałbym znać dokładnie zawartość tej "kolekcji". Ręce mi opadły. A wystarczyłoby zaimplementować interfejs IEnumerable<KeyValuePair<....>>.

edytowany 1x, ostatnio: Sarrus
KamilAdam
Hermetyzacja danych to brzydka łata na mutowalne dane. Jakby wszystkie dane były niemutowalne hermetyzacja danych nie byłaby potrzebna
KR
@KamilAdam Nie zgodzę się. Brak hermetyzacji spowodowałby, że nie mógłbyś zmienić sygnatury żadnej metody, bo ktoś mógłby już jej gdzieś używać.
Sarrus
@KamilAdam: niby dlaczego brzydka łata? Enkapsulacja jest przydatna w wielu momentach. Ale przy projektowaniu klas, jak ze wszystkim, trzeba używać mózgu. To, że ktoś używa nierozsądnie, jak w przytoczonym przykładzie, nie oznacza, że sama technika jest zła.
Freja Draco
Freja Draco
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
11

Chciałam sobie założyć githuba.

Po kilku minutach obracania jakichś debilnych piesków za pomocą strzałek, które umieszczone są z nielogicznej d... strony zupełnie sprzecznie z intuicją. Piesków które należy ustawić pionowo, ale githubowe pionowo to najwidoczniej coś innego niż moje pionowo, bo w kółko system mi mówił, że przynajmniej jedna moja odpowiedź jest niepoprawna. Po kilku minutach takiego debilnego kręcenia psami udało mi się w końcu utrafić i odpowiedzieć zgodnie z oczekiwaniami systemu. I co wtedy zobaczyłam?

title

K... nic już więcej nie będę próbować, myślałam, że to jakiś serwis dla programistów a nie dla cyrkowców.

p.s. Chciałam im nawet napisać, że są skończeni kretyni, ale żeby im to napisać, trzeba najpierw poobracać pieski. Pieprzeni zoofile :p


edytowany 1x, ostatnio: Freja Draco
Zobacz pozostałe 20 komentarzy
dzek69
@vpiotr: GitLab (do tego Bitbucket i tyle znam z głośnych pojektów. Jakieś self-hosted open source jeszcze są inne, ale nie kojarzę nazw)
Anna Lisik
@vpiotr: a i owszem ma :) całkiem zacną rzekłabym :) @dzek69 skoro firma daje ( tym bardziej za free ) to może warto się skusić? || Dokładnie :) chodzi o GitLab ( który btw też może być selfhosted ). Oprócz tego takie zapominajki jak Gitea, GitNow ( czy jakoś tak ).....
dzek69
@Anna Lisik jakby dawali na własność to bym wziął, żeby sprzedać ;) A tak to nie widzę sensu. Na Makach spodarycznie pracowałem na uczelni - zupełnie mi nie podeszło. Wszystko "tak jak Pan Jobs powiedział" do tego zupełnie inne niż rzeczy znane od gówniarza z DOS/Windows/Linux. Strata czasu na przestawianie się i brak znanych zalet, dla których miałbym rozważać tę stratę czasu (w sensie co mi da Mak czego nie da mi cokolwiek na Win/Lin), za to znalazłoby się parę rzeczy, które stracę po zmianie. Nie przeczę, że inni się w tym odnajdą i skorzystają, ale ja nie.
Anna Lisik
@dzek69: zupełnie się nie zgodzę z brak innych zalet..... kup (nie trzeba od razu najdroższy model), poużywaj dłużej niż miesiąc jako jedyny sprzęt.... ciekawe co wtedy powiedziałbyś.....
dzek69
A możesz przedstawić mi te zalety z Twojej perspektywy? Aktualnie mam czasu "dla siebie" jakieś minus pięć godzin dziennie :)
Marooned
Administrator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 5 godzin
  • Lokalizacja:Poznań
20

Jednym krótkim a === b ? c : d zamiast a === (b ? c : d) zająłem na zdalnym kompie 100% procka, 100% RAMu (16GB), Chrome dobił do 6GB zanim padł :D


vpiotr
Jakim cudem?
Anna Lisik
@vpiotr: po polsku?
vpiotr
Po prostu?
Marooned
Bo pierwsze przyrównuje a do b, a drugie przyrównuje do c bądź d w zależności od wartości b.
BraVolt
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Warszawa
  • Postów:2918
6

Aplikacja mobilna mBank
Przyszły trzy wiadomości jedna po drugiej. Jedna treści mniej więcej "Zespół mBanku pozdrawia"

Następna
wiadomość testowa
*test wiadomości push
*
i trzecia
test wiadomości push
ęśąćż

Panie panowie testerzy z mBanku źle robicie copy paste z wikipedii - ą, ć, ę, ł, ń, ó, ś, ź, ż.
więc brakuje wam testu na ł, ń, ó, ź

DISCLAIMER Nie jestem beta testerem, nie używam wersji beta aplikacji, tylko oficjalne stabilne


"Kiedy wiedzieć czy zacząć nauke Springa? bo w czystej Javie to nic ciekawego nie zrobie chyba"
Ein Volk, ein Reich, ein Kwa-Kwa ***** ***
stivens
kurde juz w trzy rozne miejsca to trafilo na tym forum
KamilAdam
Znalazłem dopiero dwa
BraVolt
1. tu - WTF, 2. Humor, 3. Microblog
BraVolt
„Przepraszamy za wysyłanie do Was wiadomości push w aplikacji. Prosimy, nie reagujcie na nie. Klikanie w powiadomienia powoduje spowolnienie działania aplikacji. Prosimy o chwilę cierpliwości. Mogą wystąpić również opóźnienia w połączeniach z call center” mBank Twitter
vpiotr
To do dzieła :)
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10047
2

screenshot-20200808141946.png

Strona lotto jak coś (miejsce gdzie się trzyma hajs i skan dowodu).

edytowany 1x, ostatnio: Riddle
vpiotr
/troll-mode-on/ WTF polega na tym że hasło jest identyfikatorem użytkownika?
Miang
WTF to ten skan dowodu?
szarotka
że hasło bez znaków specjalnych
somekind
No Millenium, w którym hasło musi mieć dokładnie 8 cyfr i tak nie przebiją.
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
8

"Cielesna nawigacja" w jednym z internetowych sklepów z ciuchami...
Screenshot_2020-08-08 Szczegóły Zamówienia.png

Freja Draco
Freja Draco
Nie marudź, mogli to jeszcze piękniej przetłumaczyć :)
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10047
4

Każdy język jaki znam z podobną składnią (np., JS, Java, C#), kiedy wprowadzało lamdy wprowadziło je jako expression i jako block, tzn:

Kopiuj
arg -> arg;
arg -> { return arg; }

A PHP?

Kopiuj
fn($arg) => $arg; // ok
fn($arg) => { return $arg; } // parse error

Ciekawe czy w PHP 7.5 sobie przypomną i wprowadzą drugie pół feature'a.

Patryk27
Istnieje już składnia do tworzenia lambd z ciałami: function ($arg) { ... }; duplikowanie jej z wykorzystaniem fn byłoby imo bez sensu. Nowa składnia została celowo od początku zaprojektowana jako skrót do function (...) { return expr; }, co jest wprost wskazane w RFC (https://wiki.php.net/rfc/arrow_functions_v2, sekcja Proposal)
Riddle
@Patryk27: Niby tak, ale zauważ: np. w "długiej" funkcji trzeba użyć use żeby coś domknąć, a w lambdzie nie; w "długiej" funkcji można zrobić &$arg, a w lambdzie nie. Więc moim zdaniem, one są różnymi bytami, a nie dwoma składniami na jedną rzecz.
programista_php
Nie przypomną sobie w php 7.5, bo następną wersją będzie 8.0
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
16

Testy są ważne.

Niedawno dostałem do zrobienia małe zadanko w spadkowym projekcie.
Na wstępie zobaczyłem, że testy nie działają - już gdzieś o tym pisałem - w testach było odwołanie do fizycznego hosta (sprawdzenie DNS) ... a przykładowa domena wyparowała.

Podzieliłem się tą uwagą z programistą, który przede mną coś w tym projekcie grzebał. Podumał, podumał... i powiedział, że on by test po prostu oznaczył jako @Ignore, ale nie usuwał. Testy są wartościowe.
Powiedziałem, że usuwam, bo test był w sumie dość bez sensu i nie widzę szansy na sensowne zmienienie tego kodu. Mini kłótnia-dyskusja wyszła.

Kilka dni temu znowu dostałem do zrobienia zadanie w innym spadkowym projekcie (projekciku). W którym wcześniej grzebał ten sa programista - co za pech (od niedawna jest w fimie) - zwróciłem uwagę, że testy dość szybko idą, a znałem już projekt... raczej był dość wolny (testy na fizycznie oddalonym oracle - bryndza).
I co wyszło: 3/4 testów ma wrzucone w ostatnich miesiącach @Ignore. Tadam!
Ale nie są wyrzucone. Bo testy są ważne.

Happy end jest taki, że 3 godziny zajęło mi przywrócenie do życia tych testów - (z 50 ich było) - nie taki duży wymiar kary.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 5x, ostatnio: jarekr000000
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10047
2

Strasznie mnie wkurza jak ktoś mówi "strona frontendu" albo "strona backendu".

Przecież "end" w słowie "backend" to strona :/

Po angielsku jakoś nikt nie mówi "on the end of fronend".

Zobacz pozostałe 15 komentarzy
KamilAdam
@obscurity: racja, mój błąd wynika z tego że jak zaczęto robić grube klienty webowe to uciekłem najdalej jak się da. Nie lubię logiki biznesowej w dynamicznie typowanych językach. Takie zboczenie
Riddle
Skoro nie każdy frontend jest klientem, to czego "frontem" jest ten front? :D i skoro nie każdy backend jest serwerem, to czego backiem jest ten backend?
somekind
Dlatego od zawsze powtarzam - żadnej walidacji. Użytkownik szczęśliwy, bo dane zawsze wchodzą, a programista nie musi się męczyć z opowiadaniem o tym. ;)
KamilAdam
@TomRiddle: Np kompilator też dzieli się na frontend i backend. Na Wikipedii jest więcej przykładów
Sarrus
Zapomnieliście jeszcze o numerze NIP :)
PerlMonk
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa 🐪
  • Postów:1719
0

Do słuchania muzyki używam DACa po USB. W Foobarze wszystko działa ładnie, po ASIO czy WASAPI... ale nie w TIDAL. Po odegraniu pierwszego utworu przez DAC, kolejne puszczane są na domyślny w systemie sprzęt... mimo, że DAC mam wybrany w ustawieniach. W końcu za pierwszym razem zadziałał...
title
Można czasem się zdziwić kiedy na słuchawkach muzyka leci po cichu, żeby za chwilę wydobyć się z głośników...


Nie sztuka uciec gdy w dupie sztuciec. 🐪🐪🐪
katakrowa
Może to jest związanie z ASIO lub WASAPI bo te tryby jednak wymagają wyłączności dostępu do karty dźwiękowej. Być może ta aplikacja przeskakując na kolejny utwór ponownie reinicjuje sprzęt a tu okazuje się, że ma wciąż zablokowanego DAC więc bierze pierwsze lepsze kolejne wolne urządzenie. Samo XMOS też różnie działa w zależności od tego jaki ma wgrany soft. Jest dużo DAC'ów na XMOS, które są napisane zwyczajnie kiepsko.
PerlMonk
Korzystałem z Tidala w ramach oferty Play i tam nie było możliwości ustawienia trybu wyłączności. Teraz przełączyłem na konto z subskrypcją, ustawiłem tryb wyłączności i na działa. Nie wiem, może coś wtedy się pozajączkowało.
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:około 6 godzin
1

Tak przy temacie endianness przypomniał mi się smaczek z .neta: klasa System.Net.IPAddress ma dwie metody NetworkToHostOrder i odwrotnie HostToNetworkOrder - funkcje te zamieniają inty z little endian na big endian i odwrotnie. Tu dam sekundę do namysłu...

 

 

 
Już?
 

Tak - obie funkcje robią to samo, a NetworkToHostOrder po prostu wywołuje HostToNetworkOrder
`https://github.com/microsoft/referencesource/blob/master/System/net/System/Net/IPAddress.cs#L539
Zamiast edukować devów, można ku ich uciesze po prostu zaserwować dwie funkcje robiące to samo


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
Zobacz pozostałe 6 komentarzy
Shalom
Wiadomo ze rzutują typy, ale jak ktoś przyszedł z asemblera to czymże jest typ? :P
KamilAdam
@Shalom: czymże jest typ kiedyś usłyszałem że są to zbiory bez przecięć, bo przecież coś nie może być Intem i Stringiem jednocześnie po czym myślałem o tym przez tydzień i doszedłem do wniosku że przecięcia są, bo coś może jednocześnie implementować typ Number i CharSequence, czyli mamy przecięcie. Więc dalej nie wiem co to są typy :D
somekind
@KamilAdam: dalej nie wiem co to są typy - to pierwszy krok do kariery w RoR. ;)
KamilAdam
@somekind: Dość krótka byłaby to kariera. Słyszałem że RoR wymiera i Rubiowcy przenoszą się do Elixira i Phoenixa, ale nie wiem czy to prawda
somekind
Ci, którzy trwają i ogarniają, koszą teraz miliony naprawiając syf, który powstał 10-15 lat temu.
nalik
  • Rejestracja:około 9 lat
  • Ostatnio:prawie 2 lata
  • Postów:1039
2

Zespół odpowiedzialny za nasz pythonowy framework do testów funkcjonalnych umiłował sobie asyncio. Async / await wszędzie ... pewnie myśleli, że będzie działać szybciej.

A w kodzie testów kwiatki. (Testów pisanych przez innych ludzi, niż Ci odpowiedzialni za framework.)

Przykładowo - ktoś tworzy nowe corutyny startujące serwer https i nigdy nie wywołuje await. Kiedy to się wykona? Czy serwer https zdąży wstać przed próbą połączenia się? No przecież wywołanie zakolejkowanie funkcji (asynchronicznej) jest przed próbą połączenia się więc pewnie zdąży... W dodatku przez asyncio.create_task, będzie dobrze. Niespodzianka - testy niedeterministycznie failują ... no ciekawe dlaczego.

Powinni mi dopłacać za naukę programowania dla testerów :D

edytowany 3x, ostatnio: nalik
Zobacz pozostałe 3 komentarze
PA
@superdurszlak: ja miałem przyjemność pracować z takimi frameworkami. Unikam jak ognia. Jeżeli zmuszą cię do używania, to estymowanie najprostszego taska staje się prorokowaniem - nikt nie wie na jakie bugi się natkniesz.
superdurszlak
@part ja chcąc nie chcąc używałem, używam, bywało nawet że jakieś popełniłem - choć nie wiem, czy można było którykolwiek nazwać "aż" frameworkiem. Generalnie prędzej czy później robi się rak, choć jak się używa cudzego i/lub szpachluje ficzerami/narzędziami i obija paździerzem bez pojęcia co się robi, to prędzej. Na swoją marną obronę powiem, że wszystkie te zbrodnie popełniałem jako głupi stażysta i/lub głupi junior, ani razu nikt mnie w porę nie spróbował powstrzymać i na ogół sam byłem główną ofiarą tych potworków...
AF
Ja tu widzę problem z async, to samo widziałem w C# wielokrotnie. Ludzie myślą, że tu wstawią async, tam raz na jakiś czas await i nagle będzie działa się magia, a potem wątki się blokują, wszystko działa niedeterministycznie, w kodzie syf i pozostaje dłubanie w zrzutach pamięci. Osobną kwestią jest to, że async/await są skopane, ale ukrywają te wady za "prostym" słowem kluczowym i programiści nie są tego świadomi.
nalik
@Afish: Niestety, jak ktoś nie rozumie jak coś działa i nie wie co robi, to uproszczenie poprzez ukrycie trudnych szczegółów mu nie pomoże. Jeszcze jak rozmawiałem z tym testerem, to mu pokazałem inny fragment, gdzie używa asyncio.sleep i mu mówię, że funkcja będzie usunięta bo jest deprecated. Na co on odpowiedział, że zastąpi time.sleep ... tylko time.sleep blokuje cały wątek, a nie corutyne :D
Freja Draco
Freja Draco
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
2

Nie rozumiem dlaczego w filtrach wyboru na Allegro do tej pory nie ma opcji:

  • bez p... światełek

obscurity
a w jakiej kategorii? jeśli chodzi o komputery to w większości można je po prostu wyłączyć
cerrato
Pewnie chodziło o kategorie "motoryzacja -> samochody osobowe"
obscurity
mnie strasznie denerwują kierunkowskazy. gdzie jadę to moja sprawa i nikogo nie powinno to interesować
obscurity
wydaje mi się że nie ma takiej opcji bo w niewielu kategoriach by się przydała. Szczególnie w kategorii "Oświetlenie" tylko zajmowałaby miejsce
JS
JS
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:63
4

Projekt finansowy w Javie, który trwał ze dwa lata i końca nie było widać, osoby, które go robiły trzymały datę w integerze i jakoś na tym operowali, do tej pory nie wiem jak.

edytowany 2x, ostatnio: janek_sawicki
KamilAdam
Integer nie jest za mały? W Javie naturalnym wyborem wydaje się long :p
danek
timestamp? Może się mieścił :D
PA
zakładajac że liczyli liczbę sekund od 1900 to sie miesci w zakresie
KamilAdam
Hm, liczba sekund od 1900 chyba się mieści. Liczba sekund od 1970 już niedługo ( :P ) przestanie się mieścić Problem roku 2038
PA
Wtedy przejdą na longa. Gdzie widzisz problem ;)
somekind
Żeby trzymać datę, wystarczy liczyć dni, a nie sekundy.
PD
@Panczo: nie bardzo, integer mieści około 68 lat w sekundach
PA
Zalozyłem, że to data z godziną
vpiotr
Date czy timestamp? Data jako int obsluguje porownanie bez problemu. Dodawanie/odejmowanie lat rowniez.
PA
Faktycznie sprawdziłem zakres w javie: 2^31-1, a policzyłem dla potegi 32...
Shalom
Bo java ma tylko typu signed a nie unsigned ;)
somekind
wuojowy język, nawet porządnie spieprzyć trzymania daty się nie da :P
KamilAdam
@somekind: mówiłem, użyć longa. To nawet w milisekundach będzie można trzymać czas
Koziołek
Trzymanie daty w int nie jest nowością. W wielu starszych systemach datą 0 jest 1 stycznia 1900r. Jeżeli potrafisz wyliczyć aktualną datę, mając liczbę np. 44444, to jest to „tańsze” niż użycie pamięci na bardziej złożoną strukturę.
vpiotr
2^31-1 > 9999-99-99, nie wiem w czym problem.
katelx
w wielu systemach trzymanie daty w typie calkowitym to norma bo jest to po prostu wygodniejsze, abstrakcje czasem bardziej psuja niz pomagaja. o ile kodowanie ma sens to nie widze problemu
Shalom
@katelx: szczególnie jak wszystkie czasy są trzymane jako jakiś UTC epoch i nie trzeba robić cudów na kiju z przeliczaniem timezone żeby porównać coś.
Delor
No to gdzie tu WTF?
wasiu
Wielu juniorów zauważyłem postrzega dużo rzeczy jako wtf, bo w szkole ich nauczyli inaczej :)
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:około godziny
0

Może nie programistyczne WTF, ale dziwaczny pomysł, UX WTF.
Jeśli wejdziecie na jakikolwiek artykuł na https://www.onet.pl/ i zaczniecie skontrolować do samego dołu, to przeniesie was na główna stronę.
Np tu.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 2x, ostatnio: MarekR22
Zobacz pozostałe 2 komentarze
OK
Na Onecie mi nie działa, ale podobnie jest na to zaimplementowane Filmwebie, wejdźcie sobie na dowolny film, np.: https://www.filmweb.pl/film/Megalodon-2018-808076 i przewińcie na sam dół. I jeszcze URL się zmienia w pasku - koszmar! EDIT: Adblock musi być wyłączony by to działało.
obscurity
no faktycznie - w dodatku url w pasku jest podmieniany bez możliwości cofnięcia w historii
MarekR22
u mnie po prostu ląduje się strona domowa i mogę cofnąć. Używam FF z uBlock. Filmweb dynamicznie doładowuje końcówkę strony, ale mnie nie przenosi nagle do głównej jak docieram do końca.
obscurity
no faktycznie - teraz działa. Wygląda że chrome nie ogarnia dobrze przekierowań - jak otworzę w nowej karcie z czystą historią i szybko przewinę to 1/3 razy się nie da wrócić. Jeśli strzałka wstecz była już aktywna wcześniej to można. Bug w przeglądarce albo w skrypcie
Freja Draco
Freja Draco
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
2
MarekR22 napisał(a):

Może nie programistyczne WTF, ale dziwaczny pomysł, UX WTF.
Jeśli wejdziecie na jakikolwiek artykuł na https://www.onet.pl/ i zaczniecie skontrolować do samego dołu, to przeniesie was na główna stronę.

Na Temat ma podobne rozwiązanie. Doczytuje kolejne artykuły i jeszcze zmienia adres strony w URL, co gorsze, jak się przewiniesz z powrotem na górę, to nie przywraca oryginalnego adresu, więc, jak chcesz np. dodać arta do zakładek, to musisz otworzyć ją jeszcze raz od zera. Greasemonkey’em to sobie blokuję.


edytowany 1x, ostatnio: Freja Draco
MarekR22
U mnie na FF z uBlock, po prostu przeskakuje na stronę domową jakbym ją kliknął. Mogę się normalnie cofnąć. To nie jest dynamiczne doczytywanie strony. Wyłącznie UBlock nic nie zmienia.
Potat0x
Do czego jeszcze używasz Greasemonkey? Pytam w kontekście walki z chamskimi zagrywkami twórców stron. Ostatnio dodaję dużo własnych filtrów w uBlocku, ale niestety nie wszystko można tam zrobić.
Marooned
Administrator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 5 godzin
  • Lokalizacja:Poznań
5

Różne strony z tego korzystają.. ile to razy coś czytałem i jak już dotarłem na koniec, to kopiowałem adres strony by posłać dalej.. tylko po to, by zorientować się, że wysłałem adres do innego artykułu. Taka funkcjonalność to, zaraz za popupami z ciasteczkami, największa zakała obecnego Internetu.


PerlMonk
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa 🐪
  • Postów:1719
4

I przewijanie bez końca. Wchodzę na stronę główną, wybieram artykuł i czytam. Zjeżdżam na koniec a tam kolejne artykuły. Nosz kurde, gdyby nie nagłówek, można by się nie połapać.


Nie sztuka uciec gdy w dupie sztuciec. 🐪🐪🐪
Miang
fajnie jak tak jest w sklepach internetowych gzie na dole szukasz regulaminu.....ooops bez obejrzenia całej listy regulaminu nie znajdziesz
PerlMonk
Pół biedy jak strona się wygenerowała i klawisz END się sprawdza. Gorzej kiedy cieszysz się, że widzisz koniec strony a tu doładowują się kolejne elementy listy i koniec odjeżdża...
obscurity
jeszcze gorzej jak autorzy strony zapomnieli że mają przewijanie bez końca a jednocześnie umieścili informacje które Cię interesują (np "kontakt" albo "regulamin") w stopce. // a już to ktoś napisał w komentarzu ups :)
vpiotr
Stopka sropka. Nie będzie designer pluł nam w twarz.
Potat0x
  • Rejestracja:ponad 8 lat
  • Ostatnio:9 dni
  • Postów:370
2

Współczesny UX to kompletny rak.
Wtf na OLX (nie chodzi o UX, bo tego chyba nie trzeba komentować):
https://www.olx.pl/oferta/rolnik-bigos-wiejski-z-kielbasa-CID757-IDG1Cgq.html#c75d19814e
na końcu linku dodaje jakieś cholerstwo #c75d19814e, które nie jest zawsze takie samo dla danej oferty. Przy obserwowaniu wielu ofert i używaniu zakładek robi się problem - nie wiadomo czy już masz tą ofertę w zakładkach, czy nie.

Zobacz pozostały 1 komentarz
Potat0x
Trzeba wejść z listy wyszukiwania, spróbuj tu https://www.olx.pl/oferty/q-bigos/
MA
Ok, w takim razie to pewnie id kryteriów wyszukiwania tak żeby były odpowiednio dobrane następne oferty
MA
Dokładnie, jak usuniesz to znika link "Następna oferta"
AF
Część po hashu według standardu HTTP nie jest częścią URL, nawet klasy URL w jakiejś javie czy C# nie uwzględniają jej przy porównaniu (przykład dla dotneta https://dotnetfiddle.net/59bp8Q ). Jeżeli gdzieś psuje Ci to zakładki, to według standardu coś "robi to źle", ale OLX tutaj akurat ma dobrą wymówkę.
vpiotr
Ja bym zgłosił tę bigosową aferę do prasy. Zresztą przy ziemniakach to samo: https://www.olx.pl/oferta/pszenzyto-ozime-ziemniaki-CID757-IDGz0oy.html#52184f0a14;promoted a o schabowych nie wspomnę.
Freja Draco
Freja Draco
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
10

@Potat0x:

Do czego jeszcze używasz Greasemonkey? Pytam w kontekście walki z chamskimi zagrywkami twórców stron. Ostatnio dodaję dużo własnych filtrów w uBlocku, ale niestety nie wszystko można tam zrobić.

W sumie mało go używam.

Na Allegro, żeby odkręcić debilne lazy loading i nie czekać jak kretynka po każdym przesunięciu strony, aż mi się łaskawie docztają:

Kopiuj
/* --- pokaż obrazki --- */
var images = document.getElementsByTagName('img');
for(var i = 0; i < images.length; i++) {
  var src   = images[i].getAttribute("data-src");
  /* --- jeśli lazy --- */
  if (src !== null) {
    images[i].src = src;
    console.log(src);
  }
  /* --- /jeśli lazy --- */
}
/* --- /pokaż obrazki --- */

Globalnie na różnych stronach, żeby nadpisać / wyłączyć niektóre funkcje JS

Kopiuj

// --- blokuj manipulacje
// wykryj copy
document.oncopy = event => {console.log('wykryto oncopy');}

// blokuj srocllTo
window.scrollTo = function () {console.log("zablokowano scrollTo");}

// blokuj onbeforeunload
window.onbeforeunload = function () {console.log("zablokowano onbeforeunload");}

// blokuj pushState i replaceState
history.pushState    = function () {console.log("zablokowano pushState :>");}
history.replaceState = function () {console.log("zablokowano replaceState :>");}
// --- /blokuj manipulacje


// --- zachowaj tytuł
function przywroc_tytul() {
  if (document.title!=st_tytul_org) document.title = st_tytul_org;
}

st_tytul_org = document.title;
var st_tytul_el = document.getElementsByTagName("title")[0];
var st_dokument_el = document.documentElement;

if (st_dokument_el && st_dokument_el.addEventListener) {
  st_dokument_el.addEventListener("DOMSubtreeModified", function(evt) {
    var t = evt.target;
    if (t === st_tytul_el || (t.parentNode && t.parentNode === st_tytul_el)) przywroc_tytul();
  }, false);
} else {
  document.onpropertychange = function() {
    if (window.event.propertyName == "title") przywroc_tytul();
  };
}
// --- zachowaj tytuł

Na naTemat, żeby przywrócić treść arta, którą pokazywali na chwilę, żeby zaraz ukryć, jeśli miałeś AdBlocka (ale już chyba zrezygnowali z tego mechanizmu):

Kopiuj
// --- /blokuj bloker adbloka
function przywroc() {
  document.getElementsByTagName("BODY")[0].innerHTML = "a " + html;
}

function test() {
  var qp = document.querySelector(".questo-paywall");
  if (qp) {
    clearInterval(testuj);
		//html = document.getElementsByTagName("BODY")[0].innerHTML;
    html = document.getElementsByTagName("BODY")[0].innerHTML;
  }
	setTimeout(przywroc, 5000);
}

testuj = setInterval(test, 100);
 
// --- /blokuj bloker adbloka

Coś takiego może zabić niektóre zamulające strony, ale może też zabić niezbędne do funkcjonowania skrypty np. w banku:

Kopiuj
// --- zakończ ładowanie każdej strony po 15 sekundach --
setTimeout(function(){
  window.stop();
  console.log("GM - zatrzymao ładowanie www"+" <- "+gm_strona_adres);
}, 15000);
// --- /zakończ ładowanie każdej strony po 15 sekundach --

No i mam jeszcze jakiś zewnętrzny, dawno nie aktualizowany Anti-Adblock Killer | Reek


edytowany 1x, ostatnio: Freja Draco
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
3

Regex \W (duze W aka non-word) matchuje znaki diakrytyczne jak " ł '.
Ahh, jak zyc


λλλ
Zobacz pozostałe 12 komentarzy
loza_wykletych
loza_wykletych
Całe szczęście Jobs był geniuszem i jak tworzył NextStepa to wszystko oparł o UTF-16. No ale on był marketingowcem a nie geekiem od IT.
obscurity
@Koziołek: mam tak samo tylko z linuksami. Myślę że chodzi tu bardziej o doświadczenie w danym systemie niż o system
MarekR22
To jest udokumentowane \w word characters (== [0-9A-Za-z_]), a tu można znaleźć rozwiązanie.
stivens
No ja wiem. A i tak sie zlapalem.
stivens
Poza tym ł jest miedzy a i z. Tylko ze nie w tablicy ascii
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10047
1
stivens napisał(a):

Regex \W (duze W aka non-word) matchuje znaki diakrytyczne jak " ł '.
Ahh, jak zyc

No, a \w (aka "word") nie matchuje. So?

edytowany 1x, ostatnio: Riddle
Zobacz pozostałe 6 komentarzy
hauleth
@Marooned: @somekind: są już takie grupy (zależnie od silnika) \p{Cyrlic}. @stivens nie wbrew intuicji, a zwyczajnie definicja tego co jest "znakiem w słowie" potrafi się różnić między językami, więc nie da się specjalnie określić co miałoby w tym się zawsze zawierać. Dodatkowym powodem jest wydajność, dopasowanie po samym ASCII (1 byte) można zoptymalizować zdecydowanie bardziej (np. używając SIMD) niż jeśli musimy uwzględniać cały Unikod.
Marooned
\p{Grażdanka} ;)
jurek1980
@hauleth: kiedyś walczyłem z hebrajskimi, w PHP i pamiętam, że {hebrew}mi nie działało - nie łapało jakichś znaków. Skończyło się na ręcznym dodaniu alfabetu.
jurek1980
@Marooned: ten słownik w telefonie. Dzięki!
plx211
  • Rejestracja:około 11 lat
  • Ostatnio:2 miesiące
  • Postów:181
7

Przed chwilą:
Odpalam skanowanie kodu pod kątem {czegoś}.
Wchodzę na stronę {czegoś} aby zobaczyć raport ze skanowania, ale wita mnie alert o błędzie, który jest niemożliwy do odczytania w przeglądarce ani w debugerze firefoxa.
Zapisuje stronę na dysku.
Otwieram ją edytorem, patrzę "query timeout".
Łapie WTF?! patrząc na ~45000 linii zapytania sql

plx211
już to naprawili, teraz to zapytanie ma ~10 linijek, był to błąd z ORM :)
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
15

To bardza stara historia - rok 2001
Zgłasza się do mnie kolega i mówi, że jest taki projekt na weekend - dobrze płatny, tylko kolejny już programista po zobaczeniu co jest do zrobienia stwierdził, że ... p... nie robi.
Brzmi ciekawie.
O co chodziło - była jakiś soft zbierający dane pogodowe (temperatura, ciśnienie, poziom wody w rzece...itp) do bazy danych (interbase).
I trzeba było tylko napisać program, który dla zadanego okresu czasowego - np. 1.06.2001 - 1.07.2001 wyciągnie dane z bazy i wstawi je do XML.
XML był dobrze i jasno zdefiniowany.
Baza danych - gorzej. Zleceniodawca dysponował tylko kilkoma screenshotami z aplikacji i zrzutem bazy danych. Wiadomo było, że dane w bazie są, tylko nikt nie mógł zrozumieć jak je wyciągnąć. Coś tam było bardzo średnio.
Ciekawe.
Bierzemy.

Zniszczyłem sobie weekend - ale warto było (wtedy 1.5k pln to było coś).
Była zasadniczo jedna tabela, która miała kolumny
ROW| C0, C1,C2,C3... C7
widać było, że w tych kolumnach sa dane meteo... tylko ładu i składu to nie miało.
były tam dane, które wyglądały na timestamp - ale pojawiały sie w losowych kolumnach,
tak samo temperatura,
ciśnienie - po prostu - wartości typu 10-27 (temperatury) były rozstrzelone po wszystkich kolumnach,
podobnie ciśnienie 900-1100, widać, ze jest w bazie, można znaleźć wyniki jak na screenshotach, ale w zupełnie różnych kolumnach - zero sensu. Co jakiś czas w kolumnach pojawiało się coś co ewidentnie było timestampem.
I do tego jakieś magiczne numerki.

I wtedy zrozumiałem. Chyba pomogły mi lata spędzone na walczeniu o bajty w C64.
Dane były zorganizowane tak:
numer czujnika, data, rodzaj pomiarów:
2- temperatura i ciśnienie,
3 - temperatura, ciśnienie, wiatr,
6-temperatura, poziom wody itd. i teraz kolejne wyniki pomiarów.
z tym że to wszystko... wpakowane w wiersze i kolumny C0,... C7

ROW| C0 | C1| C2|C3|C4|C5|C6|C7
---------------- | -------------------
1 | 1211 (numer urządzenia) | 2001.11.01:19:00| 2 (typ pomiarów) | 23 (temperatura) | 997 (ciśnienie) | **1212 ** (kolejne urządzenie)| 2001.11.01:19:00| 3
2| 23| 996 | 13| 1220| 2 | 21 | 999| 1221
3 | 2001.11.01:19:10 | 6 | 21 | 13 | ...

Tak te dane były tak naprawdę strumieniowe i były wpakowane w tabelę w zupełnie absurdalny sposób. Trzeba było czytać kolumny C0 do C7, a po dojściu co C7 zacząć następny wiersz od C0...
Nie wiem co autorzy mieli na myśli - oszczędność miejsca?
W każdym razie - po odkryciu jak to jest zrobione - zadanie okazało się dość proste.
Oczywiście wyszukiwanie po dacie w tej tabeli było absurdalnie nieefektywne (nie pamiętam - ale pewnie zawsze jechałem od początku )


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 14x, ostatnio: jarekr000000
Zobacz pozostałe 3 komentarze
jarekr000000
@alagner: no ja musiałem efektywnie iterować. Faktycznie nie wiem w czym był napisany oryginalny program, możliwe, że ta baza wspierała jakiś taki absurdalny rodzaj zapisu (strumień wpakowany w tabelę). ... ale raczej strzelam, że to kreatywność była.
vpiotr
Interbase to całkiem normalna baza danych wbrew pozorom, może na rynku pracy nie ma szału, ale z tego co pamiętam więcej WTF/h zaliczałem przy MySQL.
jarekr000000
Pamiętam, że sterowniki jdbc do tego były zrypane - napisałem własny connection pool, który dbał o okresowe kill i wznawianie połączenia (bez tego były zwisy bez końca na wywołaniach jdbc).
vpiotr
Nie wiedziałem że to miało sterowniki do... JDBC(?) już tak dawno :)
jarekr000000
@vpiotr: w sumie to nie musiało miec jdbc sterowników. Mogło być jdbc over odbc. A to były czasy, ze odbc bylo do wszystkiego.
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:2 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
8

Zlecenie od znajomej na FB
sensualna i kobieca


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
edytowany 1x, ostatnio: KamilAdam
Zobacz pozostałe 23 komentarze
purrll
Btw. Każdy z nas czasami potrzebuje kobiecej ręki. Proszę się rozejść.
DE
Może to właściciel tego sklepu potrzebuje strony internetowej dla swojego biznesu? https://www.facebook.com/grafikplakal/posts/2966572593573686
Freja Draco
Freja Draco
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
3

Od przyszłego roku [w dowodach osobistych] obowiązkowo mają się pojawić - zaszyte właśnie w ich warstwie elektronicznej - odciski palców właściciela.

https://spidersweb.pl/2020/09/e-dowody-biometria-odcisk-palca.html

#WszyscyJesteśmyKryminalistami


edytowany 1x, ostatnio: Freja Draco
Zobacz pozostałe 3 komentarze
cerrato
A tak poza tym - czemu to wrzuciłaś do "programistycznych WTF"? Tak średnio to pasuje, bo z programowaniem za wiele wspólnego nie ma :P
somekind
No, wprowadzają te nowe wspaniałe dowody od paru lat, ale sami nawet nie mają jak ich odczytać, więc tym też bym się nie przejmował.
MarekR22
Ale tam nie ma nic napisane, że odciski palca są gromadzone na serwerze (może tak jest, ale nie jest opisane). Piszą o tym, że są w warstwie elektronicznej dowodu osobistego, więc np celnik ma możliwość porównania odcisku palca z tym zapisanym w dowodzie osobistym i w ten sposób upewnić się, że dana osoba jest właścicielem dokumentu.
KamilAdam
Ewentualnie porównać odcisk z paszportu (dowodu osobistego) z bazą osób poszukiwanych. Oczywiście o ile już działa wyszukiwanie na przejściach granicznych
MarekR22
problemem jest raczej skradziony paszport i ktoś się charakteryzujący się na właściciela. To jest standardowa metoda przemytu ludzi (poza statkiem przez morze śródziemne).
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:2 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
2
Freja Draco napisał(a):

Od przyszłego roku [w dowodach osobistych] obowiązkowo mają się pojawić - zaszyte właśnie w ich warstwie elektronicznej - odciski palców właściciela.

https://spidersweb.pl/2020/09/e-dowody-biometria-odcisk-palca.html

#WszyscyJesteśmyKryminalistami

BTW nie wiem jak to teraz wygląda, ale jeszcze niedawno unia europejska tylko gromadziła odciski palców, ale nie potrafiła ich przeszukiwać w przejściach granicznych


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
Zobacz pozostałe 3 komentarze
KamilAdam
@somekind: Gromadzenie bazy odcisków palców których nie jest się w stanie przeszukiwać nie jest WTF samo w sobie?
somekind
Nie jestem pewien, czy to WTF programistyczny. :)
cerrato
No raczej programistyczny - w końcu nikt tego ręcznie nie będzie sprawdzać, tylko jakiś algotytm
somekind
WTF programistyczny to dziwny kod, albo baza bez indeksów. A tutaj to bym powiedział, że WTF odbył się na etapie zbierania specyfikacji albo zarządzania wymaganiami.
MarekR22
coś mi się wydaje, że nie ma gromadzenia odcisków palca na serwerze, ale można je porównywać z tym zapisanym na paszporcie, dlatego nie ma opcji wyszukiwania. Można tylko zweryfikować, że to twój paszport.
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
9

Nie do końca może ten wątek, ale lepszego nie ma...

tl;dr: Stary jestem a nadal głupi i dałem się zbaitować w pracy jak małe dziecko.

Ostatnio miałem mało developmentu w pracy, bo moje systemy sie nie psują, więc nie ma co supportować, a nowy projekt w którym jestem utknął na dość wczesnym etapie, bo nie możemy dojść do porozumienia z astrologami. Klepiemy tylko różne prototypy a oni je odrzucają :D
W międzyczasie brałem udział w review innego projektu który właśnie się zaczyna. Co tam się działo to w sumie historia na osobny wpis w tym wątku, bo pojawiły się tam takie pomysły jak np. wpięcie Kafki do frontendu, bo w wymaganiach jest że mają być event notifications no i ktoś wyczytał w internecie że Kafka jest od eventów... :D (dla jasności, oni chcieli osiągnąć taki efekt jak notyfikacje na 4p jak ktoś was zamałpuje czy coś). Moja reakcja była mniej więcej taka:

No i pojawiła się sugestia, że może bym im pomógł z tym projektem jakoś wystartować póki chwilowo mam trochę czasu, bo oni z backendem słabo. No i ja naiwny się zgodziłem, bo w końcu cośtam mogę poklikać w kąkuter zamiast oglądać memy z kotami.

Dostałem dokument w którym rozrysowano już wszystkie diagramy klas do tego projektu, które już na 1 rzut oka nie mają za bardzo sensu. Jest tam np. takie klasyczne User z którego dziedziczy jakiśtam Admin. Jakem żyw nigdy jeszcze chyba w kodzie logiki domenowej nie miałem potrzeby operowania obiektem Admin, bo jednak takie rzeczy to są ogarniane na poziomie endpointów i ról... No ale idźmy dalej, design to jest takie standardowe JPA/Hibernate encja na twarz i pchasz a żeby było nowocześnie to jeszcze koniecznie musi być GraphQL który pasuje tam jak pięść do nosa.

No ale słowo się rzekło, powiedziałem że pomogę, przyklepali u mojego managera, że mogę im pomagać jak mam czas, więc nie ma zmiłuj. Zrobiłem stuba do tego projektu i zaklepałem na szybko jakieś proste use-case żeby technologicznie wszystko jakoś pospinać. No i dziś robie ziomkom intro co tam wyprodukowałem i czemu właśnie tak no i się zaczęło :D

Uuu a co to za jakieś moduły, czemu nie wszystkie klasy się widzą? Akurat wyjaśnienie że to takie bieda-hexagonal architecture nawet jakoś łyknęli bez zbędnych komentarzy, ale chyba tylko dlatego że nie zauważyli, że psuje to wizje encja na twarz i pchasz, bo domain nie widzi bebechów z repository.

Jak to tak bez hibernate? Jakieś query trzeba pisać? Kto to ten jooq albo querydsl? Przecież w hibernate samo się wszystko robi, nic nie trzeba myśleć, jeszcze nam zoptymalizuje zapytania (xD szczególnie te n+1) i w ogóle. Więc mówie że w sumie to jakoś mnie to bardzo nie boli jak chcą koniecznie JPA to ok. Wydajnościowo będzie bida bo każde query wyciągnie im całą bazę (bo wszystko ze wszystkim połączone) ale tam i tak nie będzie dużego loadu, to może jakoś da radę. Ale mój warunek jest taki, że te obiekty hibernatowe nie wychodzą nigdzie poza repozytorium -> mapuja się do obiektów domenowych albo value objectów i idą do piachu i logika domenowa nic o nich nie wie. No ale jak to tak, przecież można nasrać do tych obiektów i jeszcze potem pchać je na frontend.... Powiedziałem ze ja ręki do takiej abominacji przykładać nie będę, więc w poniedziałek będzie runda 2 bo muszą się zastanowić :D

A co to takie dziwne testy, jakieś wiremocki, jakieś requesty http, my tu chcieliśmy pisać zgodnie z (Londyńskim) TDD, po co jakieś requesty jak można przecież zamockować klienta... No i tłumaczę, że jak tak pomockują wszystko to włączają wyłączają połowę aplikacji z testowania i takie testy to równie dobrze można pozamieniać na assertTrue(true); bo na co mi testy, po których nadal nie mam pewności czy to w ogóle działa. Chciałbym zresztą zobaczyć jak w ten sposób chcą testować np. jakieś authentication.

Oczywiście koniec końców to nie mój projekt, nie ja to będę klepać/supportować, więc nie chce im narzucać swoich pomysłów, ale z drugiej strony jednak chciałem ich uratować przed głupimi błędami.

Przynajmniej mój lead powiedział mi, że jak będą robić jakieś cyrki to można przyjąć taktykę i powiedzieć ze wyskoczyło mi nagle dużo pracy i jednak nie dam rady im pomóc xD


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
Zobacz pozostałe 8 komentarzy
Shalom
@Pinek no bo naiwnie zaproponowałem, że mogę pomóc skoro mam czas, zamiast siedzieć cicho i oglądać sobie dalej memy...
jarekr000000
Co gorsza, tak jak napisałem, za jakiś czas to @Shalom będzie winnym problemów.
Shalom
Tego też sie obawiam, dlatego mimo wszystko decyzje zostawiam odpowiedzialnym za ten projekt, żeby nie było na mnie że ich zmusiłem do użycia xyz i dlatego się coś sypie.
WeiXiao
No i tłumaczę, że jak tak pomockują wszystko to włączają połowę aplikacji z testowania typo?
AreQrm
Czekam na update!
hzmzp
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 2 godziny
  • Postów:619
4

Post wyżej @Shalom skłonił mnie do napisania o moim epizodzie. Klient skapnoł się że pewna funkcjonalność nie działa poprawnie. Po 4 latach działania systemu! Pewna część działania została zafejkowana bo pajac od softu sterownika nie wprowadziła zmian. Pogryźli się i zostało to zapomniane. Spędziłem 8h na tym, żeby zauważyć że kod kończy się wcześniej bo jest fix dla niego. A wszystko dla tego że klient skąpił na support i zamiast zapłacić 300pln miesięcznie i wszystko na bieżąco było by naprawiane (a było), to za samo naprawienie tego zapłacił 8 x 150 netto a to nie koniec jego problemów.

Zobacz pozostałe 2 komentarze
katakrowa
Ze skąpstwa wynikają różne komediowe sytuacje. Mi klient po 10 latach korzystania z aplikacji napisał, ze licencja zobowiązuje by dostarczać mu darmowe aktualizacje systemu "dopóki autor żyje".
Azarien
nie bardzo rozumiem problem @hzmzp (klient zapłacił zamiast zapłacić, coś tam nie działało?) ale @katakrowa - tu należy wyraźnie odróżnić rozwijanie produktu (trudno wymagać by było bezpłatne) od bugfixów (zachowanie niezgodne ze specyfikacją - tu umowa może przewidywać coś w rodzaju gwarancji)
hzmzp
@Azarien: Nie działała kluczowa funkcjonalność.
Azarien
Skoro nie działała kluczowa funkcjonalność to dlaczego klient miał w ogóle cokolwiek dopłacać? Przecież już zapłacił. Za działający system płacił, nie za system w którym nie działała „kluczowa funkcjonalność”.
hzmzp
@Azarien: z tego powodu, że nigdy nie miałem możliwości przetestować jej fizycznie, a dokumentacja to był żart. Ponadto dopisać ją trzeba było jak najszybciej, bo mu groziły kary od firmy której sprzedał produkt. Chętnie podzieliłbym się szczegółami i opisał dokładnie całą historię powstawania aplikacji, ale niestety wiąże mnie tajemnica :(
CR
  • Rejestracja:około 6 lat
  • Ostatnio:około 6 godzin
  • Postów:112
6

My jakiś czas temu przejęliśmy tragiczny projekt robiony przez pewną dużą-i-znaną korporację dla innej dużej-i-znanej korporacji. Ogólnie straszny burdel, wszystko robione przez najtańszych Hindusów, którzy nie mają pojęcia, co właściwie robią.
Niestety, niedługo projekt wraca znowu do korpo-Hindusów, ale mamy przez jakiś czas pracować równolegle z nimi, nadzorować ich pracę i robić im review.
Zerkam wczoraj na jednego pull requesta, a tam takie kwiatki, jak np. front-endowy komponent z jakimiś tam formularzami. Pola tekstowe mają jakieś tam onchange, które wywołuje funkcję strzelającą do back endu i zapisującą nową wartość pola do bazy. Po każdej jednej wpisanej literce jest operacja zapisu do bazy. Optymalizacja wydajności level grandmaster.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)