Programistyczne WTF jakie Was spotkały

Programistyczne WTF jakie Was spotkały
Xarviel
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 9 godzin
  • Postów:847
13

Strona ZUS wzięła sobie dość mocno do serca informację, że "dobry komunikat o błędzie jest podstawą dobrej aplikacji" i wyświetla zwykłym użytkownikom errory informujące, że zmienna czySaDokumentyRudPlatnikZamawiajacy w linii 107 jest null lub nie istnieje :D :D

Zrzut ekranu z 2022-09-18 22-20-44.png

edytowany 1x, ostatnio: Xarviel
axelbest
czySaDokumentyRudPlatnikZamawiajacy ja 3.14-erdole
hzmzp
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 11 godzin
  • Postów:620
5

W nowej wersji FF nie można już edytować requestów bo jakiś pajac pozmieniał UI.
Zeszło mi zanim się zorientowałem że Content-Length się nie zmienia przy wprowadzeniu innych danych
screenshot-20220919153243.png
UPDATE: w wersji 105.0 poprawili ten błąd

edytowany 1x, ostatnio: hzmzp
RU
  • Rejestracja:ponad 2 lata
  • Ostatnio:10 miesięcy
  • Postów:22
0

Robię tam sobie jakąś ważną funkcjonalność. Po drodze wiele rzeczy komunikuje się między sobą (środowisko devowe) . Powoli trzeba konfrontować testowe dane z produkcją więc niektóre środowiska (read only) odczytują proda. I oczywiście klasyka - jak tylko lecą dane z proda to wchodzi user o nazwie dupa-elo.

KamilAdam
El Dupa i La Curva. BTW ciekawe czy antyradio gra jeszcze tą piosenkę
somekind
Bar la Curva to nie jest piosenka El d**y.
1programmer
  • Rejestracja:prawie 5 lat
  • Ostatnio:około 13 godzin
  • Lokalizacja:Wrocław
  • Postów:498
11

Sprawdzałem opinie na gowork o byłym pracodawcy i znalazłem takie coś XD

screenshot-20220930091006.png


Programować muszę, bo się uduszę
Zobacz pozostały 1 komentarz
KamilAdam
Takie myki z tablicą to Uncle Bob opisywał w projektach sprzed 40 lat
VA
Co do VCS - parę lat temu zespół z którym pracowałem postanowił przejść z TFS na GIT. Niestety nie udało się zrobić tego mądrze i przez jakiś czas część zespołu korzystała z tfsa a druga z gita - oczywiście mam na myśli ten sam projekt. Jak przychodziło do merge'owania to był istny cyrk bo wyglądało to dokładnie tak samo - zmiany przeklejane do plików w kolejności modyfikacji. Dało się tę migrację zrobić lepiej, no ale cóż zrobić...
Sensacyjny Sebastian
Zanim doszedłem do wzmianki o braku VCS, przez tę krótką chwilę obawiałem się, że to może być opinia o mojej starej firmie.
CZ
Brzmi jak przeciętna utrzymaniowka w PL. W projektach c++ bywają podobnie śmieszne rzeczy.
LitwinWileński
daj linka co to za firma
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10056
6

Nadal utrzymuję że żeby programować w JS trzeba być szalonym, nie mówiąc o tym ze narzędzia do JS'a są mega słabe.

Mam sobie test suite około 1000 testów w Jest, odpalam test .html.test.js, i widzę testy z innego pliku, z table.test.js!
screenshot-20221001001518.png

Pisałem testy chyba w 10 językach, łącznie chyba w około 25-30 frameworkach/bibliotekach do testów, i nigdy nie widziałem czegoś takiego.

Powód: W teście html.test.js użyłem consta z innego testu. W jakiś sposób importowanie consta z innego testu, jest chyba importuje cały test suite który się potem uruchamia drugi raz, jako swój? Batko boska, co za burdel.

Zaraz się zlecą obrońcy JS'a: "To po co importuje jeden test w drugim?" - odpowiadam, no nie mogę - wydzieliłem consta do innego pliku. Ale to nie zmienia w żaden sposób że to jest powalone żeby import z testu z innego pliku odpalał testy tak jakby były w uruchamianym pliku. Nawet PHP takiego czegoś nie odwala.

edytowany 1x, ostatnio: Riddle
Xarviel
Nie napisałeś jak dokładnie odpalają się testy, ale rozumiem, że próbujesz zawęzić test do tego konkretnego pliku np przez jest /tests/utils/html.test.js i biblioteka nadal dodaje table.test.js?
ledi12
Mam podobne przemyślenia do całego js. Mimo, że ostatnimi czasy często w nim siedzę to nie ma dnia żebym nie porzucał łaciną na prawo i lewo. Jakieś dziwne kruczki, kod wywalający się w randomowych momentach. Nawet mam wrażenie, że zwykła referencja działa inaczej :P
Riddle
@Xarviel: Tak, nie ma znaczenia czy się odpali jeden plik, cały suite, czy nawet pojedynczy test - efekt ten sam.
Riddle
@ledi12: No ja mam wrażenie, że jak biorę dowolne rozwiązanie, to jego autor po prostu wpada na jakiś pomysł, ale nie zastanawia się jakie będzie miało to konsekwencje, i wrzuca.
LukeJL
to nie wina JSa, tylko tego, w jaki sposób są tworzone frameworki do testów w JS (czyli wiń ekosystem, a nie język). Ponieważ frameworki do testów JS każą wrzucać deklaracje testów (describe(....) czy test(....) w zależności, z czego korzystasz) luzem do plików JS i w momencie, kiedy importujesz cokolwiek z modułu, odpalą się te deklaracje. Innymi słowy: praca z modułami = każdy plik *.js to biblioteka, z której wyciągamy to, co nam jest potrzebne. Frameworki do testów = pieprzyć moduły, traktujemy pliki *.js jak skrypty do odpalenia.
WhiteLightning
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 4 godziny
  • Postów:3169
3

Lubie translatory. Przypomnialo mi sie jak bawilismy sie z kuzynami jednym takim jeszcze w czasach Win95. Przetlumaczylismy na angielski: "Ala ma kota" i z powrotem na Polski wybierajac opcje tlumaczenie techniczne. Wyszlo Ala ma spychacz. (mysle ze od nazwy firmy). A dzisiaj taka perelka:

drut.png

KamilAdam
Gdy microsoft office spotyka macrohard onfire :P
K8
K8
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 2 lata
  • Postów:791
0

Czy to normalne, że VSC nie rzuca się gdy odwołam się do nieistniejącej właściwości elementu DOM (w tym przypadku button)? Porównajcie linie 28 i 35.
screenshot-20221014133732.png

Zobacz pozostałe 3 komentarze
Xarviel
TypeScript też sam automatycznie tego nie wykryje, gdy usuwamy element przez np metodę remove (ErrorMessage.remove()). Trzeba dodatkowo ustawić wartość zmiennej na null (ErrorMessage = null)
SA
Powinieneś mieć bana na wstawianie tu wtfów.
K8
kosmonauta80
Bo?
randomize111
Bo wrzucasz posty niezbyt dotyczące tematu
K8
kosmonauta80
Co jest tematem tego wątku?
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10056
8
kosmonauta80 napisał(a):

Czy to normalne, że VSC nie rzuca się gdy odwołam się do nieistniejącej właściwości elementu DOM (w tym przypadku button)? Porównajcie linie 28 i 35.
screenshot-20221014133732.png

W dynamicznie typowanych językach trudno o dobre static checki. Skąd IDE ma wiedzieć czy to pole naprawdę istnieje czy nie.

edytowany 2x, ostatnio: Riddle
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:8 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
4

Może nie WTF programowania, ale pierwszy raz pamiętam kod który mi się snił. Napisałem w Haskellu funkcję parsującą tekst na kolory, ale nie było to proste:

Kopiuj
parseColor :: Text -> Color
parseColor "red" = red
parseColor "blue" = blue
parseColor unknown = error $ "Unknown color: " <> unknown

Tylko za pomocą jakiejś biblioteki porównywałem odległość wyrazu od wzorców i zwracałem najbliższy kolor. Czyli np dla tekstu "rad" zwracałem kolor red XD


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
jarekr000000
@Sensacyjny Sebastian: właśnie szukałem tego linku :-), bo mi tekst przypomniał
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:2 dni
4

Kiedy myślisz że youtube nie może być gorszy. Youtube ostatnio uruchomił swoje youtube shorts które jest miejscem na przeklejanie filmików z tiktoka.
Okazuje się że używają tam tego samego tragicznego algorytmu sugerowania filmików co na zwykłym youtubie a więc tak, zgadza się - w kółko i codziennie pokazują ci te same obejrzane już shorty...


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
dzek69
nie brzmi jak programistyczny wtf
pylaochos
brzmi jak cośdo innego wątku.
Marooned
Administrator
  • Rejestracja:ponad 22 lata
  • Ostatnio:dzień
  • Lokalizacja:Poznań
8

I love this job!
screenshot-20221109112033.png


Zobacz pozostałe 6 komentarzy
YA
@Marooned: tró, teraz już takich nie robią... choć to może oznaka nostalgii za latami '80 ;)
axelbest
Kurde.. a wczoraj widzac komentarz w stylu "temporary fix" datowany na 2020 - myslalem ze to cos mocnego :)
Riddle
@Marooned: Robert Martin często mawia w swoich filmach, że można dodawać TODO w kodzie, ale w momencie w którym się je wypchnie na remote'a to TODO zamienia się w DON'TDO.
MarekR22
@Riddle: +1 - miałem napisać coś w podobnym stylu.
Marooned
Mam idealny utwór do tego komentarza How soon is now? (wersja, którą bardziej lubię od oryginału)
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:8 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
12

Gdy pattern matching wejdzie za mocno:

Kopiuj
   def isEmpty: Boolean = someValue match {
      case EmptyValue => true
      case _          => false
    }

Tak to mój kod sprzed roku, a starczyłoby:

Kopiuj
   def isEmpty: Boolean = someValue == EmptyValue

eh :(


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
MarekR22
takie bardziej zaawansowane if (value) return true; else return false; :).
KamilAdam
@MarekR22: W Scali bardziej def isEmpty: Boolean = if (someValue == EmptyValue) true else false. returny to nadmiarowa rzecz :P
CZ
A to też się nad tym złapałem. Powiedziałbym, że kiedy Asparger wejdzie za mocno :P
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10056
1

Chciałem skorzystać z biblioteki do parsowania phpDoc'ów - https://github.com/jasny/phpdoc-parser

Niestety, okazało się to okropnym błądem. Pomijając to ze biblioteka zwraca klucze z literówkami ('summery' zamiast 'summary'), nie umie parsować poprawnych doków (np dokleja na koniec wartości */), to jeszcze jest napisana w stylu wczesnego gimnazjum.

Około 20h poprawiania libki, żeby była do czegokolwiek pożyteczna: https://github.com/T-Regx/phpdoc-parser

Zobacz pozostałe 4 komentarze
WeiXiao
no tak, ale to forum programistów, to chyba jasne o czym będziemy pisać :D
KamilAdam
nie jestem fanem pisania parserów w oparciu o regexy Dlaczego?
WeiXiao
@KamilAdam: dla mnie masz mniejszą kontrolę nad tym - jak chodzisz po inpucie, jak zgłaszasz błędy
Riddle
@1a2b3c4d5e: Regexpy to po prostu inny sposób iterowania po stringu i wyciągania wartości. Nie mają ani więcej ani mniej możliwości niż iteracyjne podejście - Proponuję podejście które ja wyznaje - tak długo jak "parsowanie" to szczegół implementacyjny, to nie ma co się tym martwić. Jeśli masz odpowiedni test suite pod parser, i obie implementacje przechodzą go to nie ma różnicy.
WeiXiao
Może przy prostych gramatykach to ujdzie, ale im dalej w las, tym gorzej to widzę.
YA
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 10 godzin
  • Postów:2367
14

Chyba, jeszcze się nie obudziłem po weekendzie i śnię. Nowy projekt, nowe spotkanie, wdrażam się i słucham dyskusji..a tam "przy tworzeniu obiektu pojawia się zahardkodowana data 2034.01.01, nie chcemy jej", kilka minut dyskusji i udało się osiągnąć porozumienie... Data będzie hardkodowana, ale jako "2038.01.01".

Zobacz pozostałe 14 komentarzy
KamilAdam
@yarel: Ja tam wolę 19 stycznia 2038 o godz. 03:14:07 UTC :P
jurek1980
Twoje urodziny czy co ? No jakby tak zebrać do kupy dane wszystkich proroków to by się okazało, że koniec świata to już dzisiaj. Może nawet Wełny nie dożyjemy.
KamilAdam
@jurek1980: 32 bitowy zegar "ery Unixa" się przekręca
jurek1980
Wiem wiem... żartuje.
cerrato
@KamilAdam: co do różnych skarpetów - teraz tak moda poszła do przodu, że możesz iść w zaparte, że tak miało być celowo, a jak ktoś ma z tym problem to znaczy, że jest zacofany
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:8 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
4

Jak ja lubię zaokrąglenia XD
Screenshot 2022-12-01 120202.png

Ostatnia kolumna to trend Trend

źródło: https://pypl.github.io/PYPL.html grudzień 2022 XD


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
Riddle
A to nie jest tak że spadło np o 0.04 , a drugie urósł o 0.04, tylko wyświetlanie jest do precyzji 1 miejsca po przecinku?
KamilAdam
Pewnie tak, tylko precyzję za małą wybrali. Np https://madnight.github.io/githut/#/pull_requests/2022/3 ma precyzję do 3 miejsc po przecinku
several
Powód powodem, wygląda to zabawnie, szczególnie w przypadku takiego kotlina, który zaliczył 0.0% zmiany czym zasłużył na aż cztery, groźne, czerwone strzałki w dół :D
opiszon
No ale w przypadku kotlina to jest całkiem inna sytuacja niż Julia vs Delphi. Tam po prostu 4 inne języki urosły gdy Kotlin stał w miejscu.
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10056
7

PHP nie przestaje mnie zaskakiwać. Swoją durnotą.

Jest w PHP funkcja chunk_split(), która nie robi nic innego jak dzieli string na podstringi, każdy o takiej samej długości (plus ostatni, krótszy, jeśli jest za krótki). Dziwne że taka funkcja istnieje, ale skoro już jest, to domyślam się że długość wynikowego stringa będzie ustalana przez argument - i jest, ale można go pominąć i wtedy długość stringa wynosi.... 76 :| Dodatkowo funkcja zakańcza stringi CRLF (tzn \r\n). Po przekopywaniu się przez stertę informacji, znajdujemy info w komentarzu w source-code'zie PHP, że liczba 76 wzięła się stąd, że to była standardowa długość linii w jakichś parserach do base64 to było 74 + 2 znaki na CRLF, i pierwsze użycia chunk_split() były właśnie tam.

Oprócz chunk_split(), jest jeszcze wordwrap(), bliźniacza funkcja, robi niemal to samo co poprzedniczka, tylko że nie ucina słów, tzn. jeśli mamy słowo które akurat było powiedzmy między 73 a 78 znakiem, to chunk_split() by je ucięło, a "mądra" (hoho) funkcja wordwrap() "ciachnie" słowo wcześniej. Ta funkcja również ma parametryzowaną długość, ale też można ją pominąć i wtedy domyślna długość to... 75 :| :| Czemu? No prawdopodobnie dlatego, że mimo że wordwrap() to taka bliźniacza funkcja, to ona jednak dokleja LF (a nie CRLF), i dlatego potrzebuje tylko jednego dodatkowego znaku od 74, a nie dwóch. Aha, dodatkowo, wordwrap() może dostać czwarty parametr (oczywiście true,false) i jak się poda true, to wordwrap() jednak ciachnie słowa w pół - zapytacie wtedy czym się różni od chunk_split()? No właśnie, czym?

edytowany 1x, ostatnio: Riddle
Zobacz pozostałe 3 komentarze
szatkus1
Zgadza się. Ja na przykład bardzo lubię Rusta.
Miang
no są takie funkcje ale w czym problem?
WeiXiao
znajdujemy info w komentarzu w source-code'zie PHP, że liczba 76 wzięła się stąd, że to była standardowa długość linii w jakichś parserach do base64 fuszerka jak cholera
Riddle
@Miang: No, głównie że to jest taki kitchen-sink, sprawia wrażenie że cała biblioteka standardowa przypomina bardziej zlepek śmieci niż zwartą całośc.
Sarrus
@Riddle: ja to samo stwierdziłem już dawno temu. Robienie domyślnego parametru tylko dlatego, że gdzieś akurat się tego używa świadczy o niedojrzałości programistycznej ówczesnych twórców.
axelbest
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Warszawa
  • Postów:2251
12

Litwa tak mocno w programowanie:

Kopiuj
public function _3(): array

te 3 w nazwie tej metody, to jest ID z bazy danych. Id dokumentu, ktory moze z tej bazy zostac wywalony w najmniej oczekiwanym momencie :)

Ciekawie robi się dalej

Kopiuj
public function _19(): array
{
    return $this->_7();
}

aktualnie obslugiwanych jest _104 dokumentów - a takie konstrukcje (jak ta powyzsza 19-stka co zwraca 7) - są tylko dlatego, że te dwa typy dokumentów są takie same, tylko w bazie powstał duplikat, na który naniesiono zmiany nie wpływające akurat na ten kod.

zapytacie dlaczego ktos nazywa funkcje startując od _ - ano jest tak dlatego, że te nazwy funkcji są potem dołączane i uruchamiane
w ten sposób:

Kopiuj
$methodName = "_{$this->data['document_type_id']}";
$getter = new DefaultDataGetter($this->data);

if (!method_exists($getter, $methodName)) {
    return $this->requestData;
}

$result = $getter->$methodName();

[edit]
sorrki jest 105 dokumentow ;) tego nie zauwazylem

Kopiuj
   public function _105(): array
    {
        return $this->_104();
    }
edytowany 2x, ostatnio: axelbest
Zobacz pozostałe 4 komentarze
loza_prowizoryczna
Może to po prostu metaprogramowanie, tylko zapomnieli wam przekazać generatorów?
axelbest
Tu chyba bardziej do gry wchodzi meta-amfetamina :) ew. alkohol z tzw. mety :)
VA
@axelbest: meta-amfetamina - takie coś nie istnieje. Substancja chemiczna o jakiej myślisz to metamfetamina. Przedrostek met bierze się od grupy podstawnika alkilowego grupy aminowej, w tym przypadku jest to grupa metylowa.
loza_prowizoryczna
@var: Mądrego człowieka to i zawsze warto poczytać :)
LitwinWileński
@axelbest: Litwini słabi są? Jakieś info? Bo się rekrutuję właśnie do Litwinów...
LitwinWileński
  • Rejestracja:prawie 3 lata
  • Ostatnio:11 dni
  • Postów:734
6

Następca scruma? https://govno.works

MO
Intuicja mi podpowiada że już używany w wielu organizacjach. A to zaleta ....
wojtekxtx
Platyna xd :) o kurna :) i tak najlepsza jest ostatnia linijka.......
katakrowa
Pamiętam jak ktoś mi sporo lat temu przysłał manifest agile to myślałem, że to taki śmieszny tekst, który ktoś dla jaj napisał... a dzisiaj jestem pewien, że tak właśnie było tylko stado cymbałów wzięło to na serio :-)
wojtekxtx
  • Rejestracja:ponad 2 lata
  • Ostatnio:prawie 2 lata
  • Postów:25
1

To może ja dam solidnego WTF-a. Język to javascript

Kopiuj
let x = this.x;
export function getXValue(){
  if (x = this.x){
    console.log(x);
  }
  return console.error(this.x);
}
edytowany 1x, ostatnio: Riddle
Riddle
Mógłbyś wyjaśnić gdzie tu wtf?
Sensacyjny Sebastian
Ale gdzie tu WTF? Masz if(x = this.x), czyli przypisanie, a nie porównanie. Wartością x po tym przypisaniu jest undefined, które jest falsy.
wojtekxtx
Przypisanie zmiennej x swojej wartości; następnie jeśli zmienna = swoja wartość to zaloguj X poczym zwróć wartość x jako błąd. @Sensacyjny Sebastian gdzie tu wtf? Włąśnie dokładnie w tym co napisałeś. Użyteczność funkcji jest zerowa (w naszym codebase)
Xarviel
let x = this.x; do zmniennej trafia wartość undefined, później w if (x = this.x) { przypisujesz ponownieundefined, więc warunek zostaje pominięty i na samym końcu nie zwracasz błędu przez throw new Error(...) tylko ponownie korzystasz z wartości undefined :d
wojtekxtx
@Xarviel: no i w tym cały wtf: cały czas korzystasz z undefined
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10056
5

Zawsze myślałem że \s (whitespace) w PHP to jest połączenie [\h\v] (\h - horizontal whitespace, oraz \v vertical whitespace). ale jak się okazuje \h łapie \xa0 (czyli non-breaking space), ale \s już go nie łapie.

Czyli co to znaczy, że \xa0 jest "horizontal whitespacem" ale nie jest "(zwykłym) whitespacem"? Chociaż z drugiej strony byte 160 wychodzi poza standardowe 127, więc może to jest miejsce na jakieś "undefined behaviour"?

edytowany 3x, ostatnio: Riddle
Zobacz pozostałe 2 komentarze
KamilAdam
No to słaba ta kompatybilność z perlem bo w perlu jest tak https://perldoc.perl.org/perlrecharclass#Whitespace
Riddle
@KamilAdam: W Perlu \s to też nie jest \h\v, nawet piszą to: One might think that \s is equivalent to [\h\v]. This is indeed true starting in Perl v5.18, but prior to that, the sole difference was that the vertical tab ("\cK") was not matched by \s.
KamilAdam
Ja to rozumiem tak że do wersji 5.18 był "bug", albo nieścisłość i od 5.18 jest to "naprawione" i wreszcie \s jest tym odpowiednikiem [\h\v]. Wersja 5.18 was introduced in May 18th, 2013.. Co daje pewną nadzieję dla PHP że może też w końcu poprawią :P
KamilAdam
BTW ciekawe jak to jest w innych językach
Riddle
@KamilAdam: nie ma luja że to poprawią w PHP, za bardzo tam dbają o backwards compatibility. Albo zostawią buga tak jak jest (na 99%), albo dodają jakaś runtime'ową flagę żeby to zmienić (1%), albo naprawią (0% szans).
DE
  • Rejestracja:prawie 8 lat
  • Ostatnio:2 dni
  • Postów:563
6

Pisanie w errorach "please contact admin" bez podania nigdzie informacji kim jest admin

cerrato
A skąd mam wiedzieć - jako twórca oprogramowania, kto u klienta końcowego będzie adminem? Czy mają swojego informatyka na etacie, firmę zewnętrzną która serwisuje ich ERP'a, a może syn właściciela się na tym zna i sam instaluje windowsy na kompach pracowników? Jaki mam dać namiar - na kogo konkretnie? Czy maja do mnie - jako do producenta systemu dzwonić z pretensjami, że nie mają dostępu do dysku sieciowego, albo że ktoś u nich nie zaktualizował SQL'a?
SA
@cerrato: to powinien być field w konfiguracji do ustawienia tego, bo przecież user też może nie wiedzieć kto jest odpowiedzialny.
DE
J.w., albo jakikolwiek reference gdzie tego admina znaleźć. Może jakiś mail uniwersalny admin@domena
Sarrus
Jeżeli użytkownik nie wie kto w firmie administruje sprzętem/oprogramowaniem to jest problem firmy, nie programisty. Swoją drogą czasem przydałoby się więcej informacji o błędzie, bo nie raz sam jestem adminem i nie wiem o co chodzi. To tak na marginesie ;)
cerrato
Zgadzam się z @Sarrus - jeśli w firmie pracownik nie wie, z kim ma się kontaktować w razie awarii/problemów technicznych to znaczy, że coś nie działa w organizacji pracy. Zresztą - nawet jeśli nie wie, to zgłasza swojemu przełożonemu - a on albo powinien wiedzieć, albo wiedzieć gdzie poszukać/jak to sprawdzić, albo przekaże swojemu przełożonemu - aż w końcu trafi się ktoś kompetentny. W każdym razie - to nie zadanie dla programisty, ewentualnie jak już to bardziej temat dla działu UX/UI.
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
9

Architekt (prawdopodobnie) systemu nad którym obecnie pracuję w $work bardzo lubił akronimy - oto części zwrotek, które ten serwis zwraca 😅

Kopiuj
{
  "co": 123.45,
  "gi": true, 
  "nr": true,
  "ti": true,
  "ri": true,
  "pa": true,
  "hoo": true
}
Kopiuj
{
  "adt": {
    "f": 18,
    "t": 30,
    "ag": [ 
      { "f": 1, "t": 3 },
      { "f": 5, "t": 6 }
    ]
  }
}

edytowany 1x, ostatnio: Patryk27
Zobacz pozostałe 6 komentarzy
CP
@WeiXiao: typowy kod javascript na produkcji, automatycznie wygenerowane nazwy.
Patryk27
Rust, identyfikatory raczej napisane z palca - po prostu są to akronimy nazw domenowych: co - commission; gi ("gross included", probably) - czy cena jest brutto; nr - czy cena jest non-refundable; ti ("tax included", probably) czy podatek jest wliczony w cenę itd.
CP
W C i C++ nikt tak nie robi, ale w javascript często taki kod spotykałem na stronach, które chciałem wykorzystać do swoich celów, zwykle dla mniejszej wagi strony, bundlery zmieniają nazwy funkcji na takie jednoliterówki lub jakieś losowe znaki, zależy ile jest tych funkcji i zmiennych. Czy się to trudniej analizuje to bym polemizował, i tak breakpoint rzucasz i patrzysz na stack trace to po chwili analizy dojdzie się do konkluzji jak to działa.
Azarien
ip - isPies…
KA
Obawiam się, że ten rodzaj lubienia niektórzy mogą uznać za zboczenie ;)
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10056
6

Chciałem sobie połączyć wiele plików tekstowych w jeden, użyłem do tego takiej komendy

Kopiuj
Get-Content *.sql > output.sql

Niby spoko, ale output.sql rośnie i rośnie, do gigabajta prawie, a dane wejściowe ważą dużo mniej.

Okazało się, że jak został stworzony output.sql, to on potem pasuje do *.sql, więc jest doklejany do siebie :o

Trzeba było zrobić

Kopiuj
Get-Content *.sql > output.txt

i potem rename na .sql.

WeiXiao
ciekawe zachowanie
Sarrus
Też bym wpadł w tę pułapkę. Potrafię sobie jednak wyobrazić, że dałoby się tę mechanikę wykorzystać.
CP
Ja sobie próbuję to wyobrazić, program wyszukuje pliki z nazwą *.sql, ale w takim razie musiałby najpierw stworzyć plik do zapisu jeśli by nie istniał. Potem jak odczyta powiedzmy ten plik do end of file i potem zapisze do drugiego to jakimś cudem musi stwierdzić, że jednak jeszcze jakieś dane są do odczytania. Dysk nie może wczytywać po 1 bajcie bo to nie optymalne raczej idzie cały sektor 512bajtów. Ciekawe jak kod źródłowy wygląda lub w debuggerze jeśli skompilowane z symbolami debuggera inaczej by było zbyt męczące do analizy. Dynamiczna analiza jest prostsza od static.
enedil
A to ciekawy quirk - na linuksie *sql by był zewaluowany przez shell, i lista by była już ustalona przed stworzeniem. Pod powershellem widocznie to program sam w sobie robi sobie listę, być może już po stworzeniu output.sql
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:4 minuty
1

Cuda Teams-a:
Do wiadomości wpiszcie: ``` <spcaja>
Przejdzie do trybu pisania kodu. Ale teraz w ten region wiadomości wklei się coś ze schowka, coś co może zawierać napis przypominający tag html-a, np std::vector<int>::size_type
Pozjada tagi.
No to teraz chcecie wkleić tam xml-a:

Kopiuj
<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note> 

Feature dla programistów, a kodu się nie da wkleić.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 6x, ostatnio: MarekR22
Zobacz pozostałe 10 komentarzy
Riddle
@obscurity no to już było fixnięte. Chyba że masz nową reprodukcję, to podeślij w dziale Coyote.
wojtekxtx
@Klojtex: żeby tylko nie pokazywało statusu. U nas w firmie Teamsy się w ogóle nie odpalają. Bo nie! Żadnego błędu, nic.
G8
Jak wyłączyć potem ten tryb kodu? Nie widzę takiej możliwości, a chcę w jednej wiadomości wysłać kod i tekst
Riddle
@gajusz800: Shift+Enter na masz kursor na końcu kodu?
G8
Wtedy mam kursor na końcu kodu, ale dalej w polu kodu czyli jak będę dalej pisać, to będę pisać kod. Chcę wpisać kawałek kodu a za nim albo przed nim zwykły tekst, nie kod. Można to osiągnąć no wpisując tekst, a za nim wklejając kawałek kodu np z IDE. Jak zrobić to ręcznie?
Manna5
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Kraków
  • Postów:639
0
Kopiuj
nl();nl();		/* print banner */
pl(BANNER);
nl();
pl(AUTHOR);
nl();nl();
pl("Distributed by: __________________");
pl("                Box ___, ______, CA _____");
nl();
pl(VERSION);
nl();
nl();

Funkcja nl robi nową linię, natomiast pl drukuje tekst. Usunąłem dane adresowe.


edytowany 1x, ostatnio: Riddle
Riddle
@Manna5: Na przyszłość użyj skrótu Shift+Tab żeby wciąć odpowiednio kod zanim wrzucisz go na forum, łatwiej się go czyta ;)
Koziołek
Nie takie głupie. Możliwe, że jest to pozostałość po jakiejś starszej wersji, która musiała działać na różnego rodzaju wyświetlaczach w tym np. na drukarkach.
Riddle
A to nie są skróty nl - newLine oraz pl - printLine()?
Koziołek
No zapewne i gdzieś masz linkowaną bibliotekę dla konkretnego modelu urządzenia.
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:3 minuty
  • Postów:8401
3

nie taki wcale WTF, chociaż jeśli to jakaś strona internetowa, to az się prosi o użycie systemu szablonów. W konsolowej apce jeszcze by to przeszło


Manna5
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Kraków
  • Postów:639
0

To jest wypisanie stałego ciągu znaków w 13 wywołaniach jak można w jednym (w 6, jeśli kompilator nie obsługuje konkatenacji łańcuchów).


MA
Imho nie wygląda to na jakąś potencjalnie bottleneckową część aplikacji, a strzelam, że taka forma wynikła stąd, że łatwiej w kodzie (na pierwszy rzut oka już) zobaczyć co się na ekranie wyświetli
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10056
4

Serwis chess.com, okazało się że przepełniła się maksymalna jednoczesnych gier. W szachy. W grze, w której leci obciążenie wielkości jeden request na 10 sekund, może bliz to raz na kilka sekund. Gry online realtime jakoś obsługują więcej graczy; a szachy, gdzie jeden ruch to jest może 2-3 bajty.

screenshot-20230202153835.png

Zobacz pozostałe 14 komentarzy
MD
Może zamiast narzekać, spróbujcie pomóc. Z tego co widzę rekrutują inżynierów Php i java
B1
@stivens: no i tak się robi jak się zapisze partię w typowym dla szachów formacie pgn
Bronzebeard
@several: podeślesz źródło do tego, że .BattleNet Diablo 1 na jednym PC? Lubię czytać o takich rzeczach :-)
several
@Bronzebeard: David Brevik wspomniał o tym na GDC w trakcie Diablo postmortem https://youtu.be/VscdPA6sUkc a konkretnie wspomniał o tym w trakcie Q&A https://youtu.be/VscdPA6sUkc?t=3372 Osobiście nie wiem, czy była o tym jakaś szersza dyskusja w innym miejscu w sieci.
LE
Chess.com ma jakąś hybrydową architekturę (lokalnie + chmura) i cierpi przez decyzje projektowe z jeszcze zeszłego wieku, lichess.org (Scala) jest znacznie nowszy i łatwo się skaluje. Poza tym to nie tylko ruchy w partiach na żywo i z komputerem, które zresztą trzeba zapisać do bazy danych, ale też analiza partii z wykorzystaniem mocy obliczeniowej serwera (preview przy głębokości 18-26 półruchów, opcjonalnie 30, przy czym ta ostatnia jest dostępna także w darmowej wersji), Insights, lekcje wideo, kombinacje, fora, strona z newsami, czat w trakcie gry itd.
orchowskia
  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Zielona Góra
  • Postów:83
2

Ziomeczki kopiowały kodzik jak zwykle. Był sobie powiedzmy profil użytkownika i w relacji one to many zamówienia.

Co może pójść nie tak przy usuwaniu zamówień?
A no CASCADE DELETE
🙂.

Zobacz pozostałe 3 komentarze
WeiXiao
@cerrato: ciekawe co na to GDPR ;)
wojtekxtx
@WeiXiao: nie moje zmartwienie............
cerrato
@WeiXiao: hasło jest bardzo ogólne, ale po to masz jakieś regulaminy przetwarzania danych, do tego jeszcze można anonimozować itp. Także wykręcanie się RODO i w ten sposób uzasadnianie ostrego rżnięcia bazy jest niestosowne ;)
WhiteLightning
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 4 godziny
  • Postów:3169
1

Chcialem sprawdzic jak mi panstwo PITa policzylo. I co? I jak zwykle nikt nie pomyslal zeby zrobic testy wydajnosciowe, albo dodac jakies kolejkowanie userow, bo usluga lezy i kwiczy.

opiszon
Znowu? Po północy leżało i w końcu zdjęli ale o 6 pita rozliczyłem xD
Sarrus
Ja też już bezskutecznie próbowałem.
Sensacyjny Sebastian
Jak już w lutym leży, to pomyśl tylko, co to będzie 30 kwietnia! Zwłaszcza, że w tym roku wypada w niedzielę, więc sysadmin/SRE pewnie będzie sobie smacznie wypoczywał.
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)