Programistyczne WTF jakie Was spotkały

Programistyczne WTF jakie Was spotkały
WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5227
2

Due to the way that RSC hydrates elements during client-side rendering, Next.js has to provide all their property data using JSON

https://github.com/vercel/next.js/discussions/42170

screenshot-20231015141759.png

We recently transitioned to app router and are struggling with the increased page sizes (on Vercel there is a 4.5MB limit on page response size). We render as much as possible using Server Components, and the RSC payload is often over 40-50% of the total HTML page size, which for large pages is a lot of overhad. Additionally, pages are routinely 30% larger than their previous pages directory counterpart (after optimizing everything I could; Removing duplication, classNames, attributes, etc.).

screenshot-20231015141814.png

I gdy zerkniemy ile osób używa Next.js

screenshot-20231015141947.png

to zaczynamy się zastanawiać o ile niepotrzebnie napuchnięty jest web :D

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
1

W PHP funkcja która nazywa się "merge" tak na prawdę dodaje, a operator + tak na prawdę łączy :|

  • array_merge(['a','b'], ['c', 'd']) daje ['a','b','c','d'] (czyli tak na prawdę dodaje, to powinien być +)
  • ['a', 'b'] + ['x', 'x', 'x'] daje ['a', 'b', 'x'] (czyli tak na prawdę robi takiego merge'a, to powinien być array_merge())

WTF? Przecież to powinno być odwrotnie.

Miang
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1793
4
Riddle napisał(a):

W PHP funkcja która nazywa się "merge" tak na prawdę dodaje, a operator + tak na prawdę łączy :|

  • array_merge(['a','b'], ['c', 'd']) daje ['a','b','c','d'] (czyli tak na prawdę dodaje, to powinien być +)
  • ['a', 'b'] + ['x', 'x', 'x'] daje ['a', 'b', 'x'] (czyli tak na prawdę robi takiego merge'a, to powinien być array_merge())

WTF? Przecież to powinno być odwrotnie.

dodawanie zgodne z zasadami dodawania zbiorów

mamrzeczy.pl
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

W rust jest 10 różnych typów string :P

SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1452
1

Smuteczki związane z atrybutami w C#:

  1. parametry nie mogą być nullable, można to obejść przez przeciążanie konstruktura, ale przy większej liczbie parametrów liczba potencjalnych konstruktorów rośnie wykładniczo
  2. parametr nie może być typu decimal.
SE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 321
4

Poznałem gościa, który tak bardzo nie ogarnia debuggera, że zamiast wstawić zwykły breakpoint dzieli funkcje na kilka mniejszych, po to żeby, uwaga cytuję : "wywołac je do pewnego momentu" :D

Nie, nie jest to żaden stażysta ani nawet junior.

TO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 33
KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
0

Wielkim WTF dla mnie jest słaby poziom opisywania zadań w jirze. Przykład z ostatniego tygodnia:

  1. testerka znalazła buga iż walidacja nie działa i szcześliwie po groomingu dorzuciła do ticketa plik dla którego to się dzieje
  2. bug trafił do sprintu i zaczałem to robić, załadowełem plik i widzę iż wszystko świeci się na zielono i jest pięknie. Zdziwiony o co tu chodzi przenoszę do kolumny blocked. Nie mogę spytać testerki bo poszła na urlop
  3. na daily PO przypomina sobie iż chodzi o to iż program powinien świecić na czerwolo bo plik jest nie poprawny jednak
  4. Włączam walidację w konfigu dla tego klienta, aplikacja świeci na czerwono po załadowaniu pliku, plik nie przechodzi, przesuwam do testing
  5. następnego dnia inny tester pisze mówi mi na daily iż dalej nie działa bo nie da się załadować pliku i wszystko świeci się na czerwoni i trzeba mu tłumaczyć iż to jest poprawne zachowanie i na tym właśnie polega fix :D

nie chce tu się czepiać testerek, testerów, hindusów czy innych grup. Połowa zadań jakie dostaję do zrobienia jest jakoś tak magicznie opisana iż nie wiadomo co w nich trzeba zrobić :D żadnych kryteriów akceptacji zadania czy innych podobnych pierdół :D

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
7

Kto pracował w korpo ten w cyrku się nie śmieje

  1. Ja - import dla klienta X nie działa bo połączenie do zewnętrznej bazy z której czytanie nie działa
  2. PO - jak to nie działa, przecież działało, więc musi działać. Niech sprawdzi to tester
  3. dzien później, tester - połączenie do zewnętrznej bazy danych X nie działa
  4. PO jak to nie działa, musi działać bo działało. Niech sprawdzi to Kamil

Eh, byle do halloween a potem krótki urlop na prace ogrodowe

TO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 33
0

Redge Technologies tłumaczy dlaczego padł streaming gali Clout MMA
Ciekawy zbieg zdarzeń:

W trakcie trwania gali, żaden z zewnętrznych systemów nie działał prawidłowo

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8488
8

Twórcy Angulara używają w zmiennych dziwnego znaczka unicode: ɵ
I mają zmienne typu:
ɵɵdefineInjectable
ɵprov
ɵɵdeferWhen
https://github.com/angular/angular/blob/3cf18bb6f2798020cbe8633fae79f920cf98816b/packages/core/src/defer/idle_scheduler.ts#L9C17-L9C35
https://github.com/angular/angular/blob/3cf18bb6f2798020cbe8633fae79f920cf98816b/packages/core/src/defer/instructions.ts#L290

wygląda jak theta, ale wg wikipedii to nie jest theta https://en.wikipedia.org/wiki/%C6%9F chociaż podobne. Oto, co o tym piszą:
https://stackoverflow.com/questions/45466017/%C9%B5-theta-like-symbol-in-angular-2-source-code
https://medium.com/angular-in-depth/a-deep-deep-deep-deep-deep-dive-into-the-angular-compiler-5379171ffb7a

Ogólnie chodzi o to, że pokazują tym znaczkiem prywatne rzeczy, które nie powinny być importowane...
co dla mnie jest kolejnym WTFem. Dlaczego sięgać po egzotyczne znaczki, zamiast użyć choćby underscore? Albo po prostu - nie eksportować?

Chociaż podobno specjalnie używają tego znaczka, żeby użytkownik miał problem z jego wpisaniem: https://github.com/angular/angular/issues/30694
:D

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
2

Albo po prostu - nie eksportować?

@LukeJL:
może dlatego, że bundlery i inne narzędzia często nie respektują właściwości exports z package.json nawet dziś, a co dopiero, gdy ten ficzer się pojawił. Więc da(ło) się zrobić deep import typu import { ɵɵdefineInjectable } from "angular/dist/defer/idle_scheduler"

Dlaczego sięgać po egzotyczne znaczki, zamiast użyć choćby underscore?

Mając w świadomości powyższe - nie da się tego wklepać z palca i dostać propozycję od IDE, żeby to zaimportować.

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
1

Patrzę w stary kod i znów widze to samo (przepraszam jak kogoś nudzi):

Kopiuj
  type Attributes = Map[(String, String, String), (Int, String, String)]

Na usprawiedliwienie programisty co napisał to 3 lata temu mogę powiedzieć tylko iż pewnie zakładali iż zaimportują dane tylko raz. A teraz dane dla nowego klienta też trzeba importować, ale z lekkimi zmianami i ja się zastanawiam czy to te dane co potrzebuje zmienić czy jakies inne :D

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
2

"Każda aplikacja dąży do tego żeby wysyłać maile" Czy jakoś tak. Nasza wysyła dla niektórych jobów jak jest błąd. Techniczna tabelka żeby było widać co niezadziałało. Niestetyy czasem maile przychodzą bez tematu/subjectu. Co się stało? Okazuje się iż jak generator wygeneruje za długi subject to biblioteka nie obcina go tylko zastępuje nullem :D taka sprytna :D

Biblioteka to javax.mail. W dokumentacji nie widzę żeby było ograniczenia na subject, ale może to ograniczenie ze specyfikacji maila? albo jakaś wada naszej skrzynki?

For most email the technical limitation on subject line length is 988 characters. :(

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
7

Ilekroć słyszę tą piosenkę Lisowskiej (https://open.spotify.com/track/6bQxR9kqimYzkcSvdLIZxS), jak w w 0:38 śpiewa "brak mi Twego widoku" to oczami wyobraźni widzę to:

screenshot-20231120154041.png

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
2

Od dawna wiedziałem że goły CSS jest lepszy niż bootstrap, ale tego już za wiele. Bootstrap dostarcza breakpointy do media query "w górę" i w "dół".

Np możemy mieć element który się wyświetla na średnich ekranach i większych

Kopiuj
.element {
  display: none;

  @include media-breakpoint-up(md) {
    display: block;
  }
}

Wszystko spoko.

Ale! Normalna osoba spodziewałaby się że można odwrócić breakpoint, tak:

Kopiuj
.element {
  display: block;

  @include media-breakpoint-down(md) {
    display: none;
  }
}

Ale oczywiście media-breakpoint-up(md) nie jest odwrotnością media-breakpoint-down(md) :| Jest nią media-breakpoint-up(sm) :| Kto to wymyślił, że oba breakpointy są inclusive. Co za slaby design.

A9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 411
1

Nie wiem czy to błąd w Linkedin czy na prawdę bez +3 lat expa nie ma czego szukać na rynku :D
Zrzut ekranu 2023-11-26 213805.png

RJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 480
1

Przyjęcie mnie na stanowisko Angular developer i rzucenie w projekt .NET/React 😂

Łapie się to?

TerazOdpowiemNaKomcie
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 401
6

screenshot-20231205085812.png

Pracuję w projekcie, który powstaje od ponad 10 lat i ma absolutne zero dokumentacji. Seniorzy, którzy zbudowali ten produkt nadal tutaj pracują i to jest wymówka jednego z nich na brak dokumentacji. On jej nie pisze, bo jej nie potrzebuje xD Dokumentację pisać powinien ten, kto jej potrzebuje.

(jak co to jestem na wypowiedzeniu już)

WhiteLightning
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3257
4

Bank Paribas -> dostaje telefon z nieznanego numeru wyswietlajacego sie jako spam,
Pani sie przedstawia i mowi ze dzwoni z banku i zebym podal dane w celu autoryzacji (nawet nie wiem jakie bo powiedzialem ze nie podam).
Oczywiscie odmowilem, pytam na chacie banku -> tam nie wiedza o co chodzi i nie moga sprawdzic, ale moga zlecic kolejny telefon.
Pytam z jakiego numeru beda dzwonic -> nie ma jednolitego numeru z ktorego moga dzwonic.

Masakra. Z ktoregos banku (chyba tez od nich) mialem taki telefon i pytali o PESEL.

Serio nie mozna zrobic w pelni elektronicznej asynchronicznej komunikacji z klientem?

Manna5
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 667
0

Mogliby dać listę numerów, żeby można było zrobić grupę kontaktów.

jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4712
9
WhiteLightning napisał(a):

Bank Paribas -> dostaje telefon z nieznanego numeru wyswietlajacego sie jako spam,
Pani sie przedstawia i mowi ze dzwoni z banku i zebym podal dane w celu autoryzacji (nawet nie wiem jakie bo powiedzialem ze nie podam).
Oczywiscie odmowilem, pytam na chacie banku -> tam nie wiedza o co chodzi i nie moga sprawdzic, ale moga zlecic kolejny telefon.
Pytam z jakiego numeru beda dzwonic -> nie ma jednolitego numeru z ktorego moga dzwonic.

Przynajmniej od razu widać, że to faktycznie bank. Prawdziwi scammerzy nie mieli by problemu, żeby zadzwonić z oficjalnego numeru banku.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
5

Odkop tysiąclecia. Ciekawe, czy OP jeszcze w ogóle żyje. :D

screenshot-20231211022251.png

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
2

Chciałem się dowiedzieć jak testować komponenty napisane we Vue, otworzyłem sobie ich dokumentację odnośnie testowania: https://vuejs.org/guide/scaling-up/testing

Połowa rzeczy napisanych tam o testach jest całkowitą nieprawdą i sugeruje złe praktyki :| Wtf.

LitwinWileński
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 763
0

Pierwszy raz widzę, by projekt wygenerowany przez springowy initializer nie działał zaraz po skompilowaniu.

screenshot-20231230141801.png

Kopiuj
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.2.1</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>17</java.version>
		<kotlin.version>1.9.21</kotlin.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.jetbrains.kotlin</groupId>
			<artifactId>kotlin-reflect</artifactId>
		</dependency>
		<dependency>
			<groupId>org.jetbrains.kotlin</groupId>
			<artifactId>kotlin-stdlib</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
		<testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.jetbrains.kotlin</groupId>
				<artifactId>kotlin-maven-plugin</artifactId>
				<configuration>
					<args>
						<arg>-Xjsr305=strict</arg>
					</args>
					<compilerPlugins>
						<plugin>spring</plugin>
					</compilerPlugins>
				</configuration>
				<dependencies>
					<dependency>
						<groupId>org.jetbrains.kotlin</groupId>
						<artifactId>kotlin-maven-allopen</artifactId>
						<version>${kotlin.version}</version>
					</dependency>
				</dependencies>
			</plugin>
		</plugins>
	</build>

</project>
TerazOdpowiemNaKomcie
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 401
7

screenshot-20240125092005.png
#java

mrxormul
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 248
0

Duże globalne korpo ma swoją chmurę bazującą na customowym Kubernetesie który działa na infrze Azure i AWS. Panowie devopsi z aspiracjami do programowania wzięli się za pisanie swojego systemu podobnego do StackStorm który ma pomagać w zarządzaniu tym całym bałaganem.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
2

Dla kontrastu dodam, że w Lazarusie diagram zależności między pakietami czy modułami projektu lepiej nie wygląda. Np. tak jak niżej wygląda diagram powiązań modułów w projekcie mojego silnika. Jest to domyślny widok, bez dodatkowego zoomu, można wejść w ustawienia i co nieco poustawiać, np. dodatkowe odstępy między węzłami grafu. Rozmiaru fontu zmienić nie można — taki mikroskopijny jest nawet na giga-zoomie. Czerwone linie to nie błędy, a wzajemne odwołanie pomiędzy modułami (bez circular reference).

Strzałek nie ma, ale są po prostu linie, tym razem łączą się, jeśli biegną do tego samego węzła. Mimo wszystko choćby nie wiem jak to poustawiał i powiększył, renderowanie tego grafu jest fatalne i totalnie nieczytelne.

screenshot-20240128041601.png

screenshot-20240129141842.png

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8488
1

Bo w takich grafach brakuje często ważnej rzeczy, jaką jest ukrywanie tego całego "visual clutter".
Jeśli dałoby się np.:

  • swobodnie eksplorować graf (przesuwać, zoomować itp.), być może w 3D
  • zaznaczyć jakieś moduły jako ignorowane (albo odwrotnie - wybrać tylko kilka modułów widocznych, a reszta domyślnie niewidoczna)
  • dać możliwość jakiegoś innego oznaczania widoczności (np. pokaż tylko moduły zawierające daną frazę)
  • zróżnicować sposób wyświetlania poszczególnych modułów - np. moduły, które mają więcej linijek kodu (albo do których się więcej innych modułów odwołuje itp.) rysowane jako większe, a małe/mniej ważne moduły mniejsze
  • zmniejszyć wartość alpha rysowanych linii (a jak user najedzie na dany moduł, to pokazywać mocniej tylko te odchodzące od danego modułu).

to by było to bardziej czytelne.
plus zależności między modułami to tylko jeden sposób wizualizacji codebase'u, na jaki można wpaść. A są też inne.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.