Programistyczne WTF jakie Was spotkały

Programistyczne WTF jakie Was spotkały
V-2
  • Rejestracja:prawie 8 lat
  • Ostatnio:9 miesięcy
  • Postów:671
5

Prawie wszystkie wpisy na tej stronie dotyczą łotdafaków UX-owych, a nie programistycznych. Może powinien być osobny temat?


Nie ma najmniejszego powodu, aby w CV pisać "email" przed swoim adresem mailowym, "imię i nazwisko" przed imieniem i nazwiskiem, ani "zdjęcie mojej głowy od przedniej strony" obok ewentualnego zdjęcia. W drugiej firmie której już pracuję mam palących marihuanę programistów [...] piszą kod "leniwie", często nie wysilając się, rozwlekając ten kod, unikając np. programowania funkcyjnego (mówię tutaj o lambdach w javie).
Zobacz pozostałe 6 komentarzy
Miang
@axelbest: backend wie jakie są wejścia i wyjścia z jego części i powinien dbać żeby one miały troche sensu
somekind
No, ale jaki backendowy developer ma wpływ na to, co jakiś manager od frontendu wymyśli?
vpiotr
Jak ktoś jest trybikiem w korpo to nie ma wpływu poza tym że czasem może zakładać tickety na UX. Ale czy go ktoś wysłucha to inna kwestia.
somekind
Pod warunkiem, że ma prawo zakładać tickety w backlogu ludzi od UX. A to może nie być prawdą.
vpiotr
@somekind: zdarza się, chociaż kompletnie nie rozumiem skąd mogą się brać takie obostrzenia.
S9
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 2 lata
  • Lokalizacja:Warszawa
  • Postów:1092
10

Zobacz pozostałe 11 komentarzy
superdurszlak
@somekind: pretensje za kreatywną interpretację miej do garbatego i Chińczyka :P
PerlMonk
Sitko, co ty chcesz? :D
somekind
@superdurszlak: jaką interpretację? I ja nawet nie czytam, co oni piszą, Tobie odpisywałem.
WeiXiao
@superdurszlak: halo? pretensje do 🐫🐪
PerlMonk
Ja tylko pytałem kto ssie.
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
3

Niby rekrutacja, ale dla mnie bardziej UX WTF
Wejdźcie na stronę https://workeo.dev/offer/bitclear-scaladeveloper i kliknijcie sobie Aplikuj. Na jednym ekranie tylko jedno pytanie, po wypełnieniu pytania przechodzi się do następnego. Bo programista jest za głupi żeby wypełniać kilka pytań na raz.
Piersze pytanie Jak masz na imię Drugie pytanie Jak się nazywasz. I co ja mam tam podać? Imię i nazwisko czy samo nazwisko?

najgorszy jaki widziałem w życiu formularz do wysyłania CV. Chyba dostosowany do pokolenia Z, W takich momentach czyje się stary :(


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ły 1 komentarz
PI
Widzę że oferta, którą widziałem z 2 tygodnie temu, jest popularna :)
somekind
Nazywasz się Adam, na imię masz Kamil. Nasz prezydent nazywa się Duda, na imię ma Adrian. Nazywasz się nazwiskiem, nie imieniem.
PI
Zależy od kolejności pytań :P jeśli peirwsze pytanie jest Jak masz na imię a drugie Jak się nazywasz to mniej więcej wiadomo, że w drugim chodzi o nazwisko. Ale jeśli od razu by padło pytanie Jak się nazywasz to w sumie nie wiadomo czy chodzi o samo nazwisko czy o imię + nazwisko
somekind
Pytanie jak się nazywasz? to pytanie o nazwisko. To, że niektórzy odpowiadają na nie imieniem i nazwiskiem, to jest ich sprawa, ale to nie jest poprawne.
hauleth
@BDA DVB: jest też darmowy plan. Aczkolwiek używanie Typeform do zgłoszeń o pracę to WTF, to jest super do zastosowań jak Elixir Survey.
Marooned
Administrator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 10 godzin
  • Lokalizacja:Poznań
27

Grzebiemy w czyimś projekcie. W Javie wymyślili nowy typ danych, który leci też na front. Roboczo nazywam to HindiBool. Ma dwie wartości:
"YES", null


Zobacz pozostały 1 komentarz
ZI
To trochę jak canPlayType w przeglądarkach który zwraca "probably", "maybe" albo "" (https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/canPlayType)
Riddle
Jak liczba zapisana w systemie nie dwójkowym (jak bool), ale jedynkowym :D który ma tylko jedną cyfrę.
hauleth
@Zing problem jest taki, że niespecjalnie da się odpowiedzieć, czy dany format można odpalić do momentu aż nie spróbujemy tego zrobić.
KamilAdam
@Wibowit: on/no to proszenie się o problemy :>
Sarrus
  • Rejestracja:prawie 14 lat
  • Ostatnio:3 dni
  • Postów:2512
11

Zaszła potrzeba wysyłania niektórych logów do jakiegoś serwera Syslog. Ok więc jako że korzystamy z log4net, to postanowiłem użyć appendera wbudowanego, a mianowicie RemoteSyslogAppender. Ok wszystko fajnie logi idą - jest git. Jednakże, klient chce wysyłać tekst zawierający polskie litery. No ok, kodowanie UTF-8 i wszystko fajnie. Jest opcja encoding w konfiguracji - super. No nie super, bo okazało się, że log4net wycina polskie znaki. Próbowałem też jakieś niemieckie - też nie ma. Nie to, że krzaki. Ich w ogóle nie było. No to WTF. Sprawdzam w kodzie źródłowym, a tam to:

Kopiuj
// Accept only visible ASCII characters and space. See RFC 3164 section 4.1.3
if (((int)c >= 32) && ((int)c <= 126))
{
   builder.Append(c);
}

Czyli "it's not a bug it's a feature". Sprawdzam rzeczone RFC:

The code set traditionally and most often used has also been seven-bit ASCII in an
eight-bit field like that used in the PRI and HEADER parts. In this
code set, the only allowable characters are the ABNF VCHAR values
(%d33-126) and spaces (SP value %d32). However, no indication of the
code set used within the MSG is required, nor is it expected. Other
code sets MAY be used as long as the characters used in the MSG are
exclusively visible characters and spaces similar to those described
above.

Czyli używanie innych znaków nie jest zakazane lub odradzane, ale ten appender je arbitralnie wycina niezależnie od podanego kodowania. Nic o tym nie ma w dokumentacji https://logging.apache.org/log4net/release/sdk/html/T_log4net_Appender_RemoteSyslogAppender.htm

edytowany 1x, ostatnio: Sarrus
Sarrus
  • Rejestracja:prawie 14 lat
  • Ostatnio:3 dni
  • Postów:2512
2

Kolejne WTF z cyklu. W kodzie źródłowym appendera (log4net) RemoteSyslogAppender natrafiłem na to:

Kopiuj
  #if NET_4_5 || NETSTANDARD
                      Client.SendAsync(buffer, buffer.Length, RemoteEndPoint).Wait();
  #else
                      this.Client.Send(buffer, buffer.Length, this.RemoteEndPoint);
  #endif

gdzie Client to System.Net.Sockets.UdpClient.

Czy potrafi mi ktoś wyjaśnić po kiego używać asynchronicznej wersji i wywoływać na tym Wait jak można po prostu użyć synchronicznej?

somekind
No bo nowe API, to trzeba w async. :D
MarekR22
git blame i zobacz opis commit-a, może będzie wyjaśnienie.
KamilAdam
Ja to znam, ja to widziałem. W Javie co prawda nazywa się inaczej ale też fajne
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
0

Największym WTFem jest chyba używanie log4net po 2005 roku.


Po dopracowaniu rozwiązania każdy będzie mógł założyć własny drzewiasty wątek.
Sarrus
Do tej pory się sprawdzał. Będę cisnął jednak żeby nałożyć abstrakcję w następnej wersji aplikacji i mieć możliwość łatwej zmiany. Obecnie sprawa jest skomplikowana.
somekind
Rozwinąłem. ;)
superdurszlak
  • Rejestracja:prawie 7 lat
  • Ostatnio:2 dni
  • Lokalizacja:Kraków
  • Postów:1999
9

Bardziej UX-owy niż programistyczny...

https://developer.allegro.pl/documentation/#

Spróbujcie zescrollować na dół strony ;)


Zobacz pozostałe 7 komentarzy
superdurszlak
@dzek69: a teraz spróbuj zescrollować na dół "zewnętrznym" scrollem - nie wiem jak w innych przeglądarkach, w FF jak tylko przestaniesz scrollować odbija na górę, i znów ten zielony panel zajmuje 2/3 wysokości strony :D
vpiotr
Jakos wolno scroluje na radio telefonie
dzek69
@superdurszlak: u mnie na Vivladim tego nie ma. W teorii z włączonymi wszystkimi skryptami, możliwe, że jakieś trackingowe wycięło. Na mobile (Kiwi Browser) też ok
AreQrm
"Baby dont hurt me, dont hurt me, no more..."
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Tuchów
  • Postów:12156
8

Coś się te procenty nie zgadzają… :D

CCrasher.png


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
Zobacz pozostałe 46 komentarzy
somekind
masz blue screeny regularnie? może przez czyszczenie rejestru? - no raczej ciężko, żeby nieregularne czyszczenie rejestru powodowało regularne bluescreeny. Natomiast przy pracy z SF różne dziwne rzeczy się dzieją. ja już po prostu z tego wyrosłem - no nie wiem, dzisiaj na pisaniu komentarzy na temat CCleanera spędziłeś więcej czasu niż ja na używaniu go w ciągu kilku lat, chyba jednak wciąż czujesz silną więź z tym programem. :)
obscurity
@somekind: no taki żart z tym rejestrem ;) czasem prokrastynacja jest bezlitosna :( ale to na szczęście w godzinach pracy...
somekind
Rozumiem, buduje się. ;)
WhiteLightning
@obscurity: oczywiscie, ja uzywam winampa 2.95 na zmiane z Foobar2000...
Miang
  • Rejestracja:prawie 7 lat
  • Ostatnio:4 minuty
  • Postów:1659
6

kod pisany w C, zmienna typu int pełniąca rolę booleana niby wszystko normalne, tylko dlaczego TRUE jest oznaczone przez -1


dzisiaj programiści uwielbiają przepisywać kod z jednego języka do drugiego, tylko po to by z projektem nadal stać w miejscu ale na nowej technologii
Zobacz pozostałe 24 komentarze
AL
@Silv paradoksalnie 0-1 na poziomie prądu ma mniejszy sens niż przy umownym opisie konwencji, bo dochodzą Ci takie rzeczy jak różnego typu stany przejściowe (przy analizie dynamicznej np.), wysoka impedancja itd. To można eliminować również w sprzęcie np. dodając mechanizmy synchronizacyjne, ale jakbyś wziął najbardziej podstawową strukturę bramki (bez Schmittów, rejestrów itd.) to tam dzieje się naprawdę sporo więcej niż "napięcie jest/nie ma".
Szalony Programista
Szalony Programista
Ilu programistów kompilatorów tyle rozwiązań, w C nadal 0 == False i 0 < True(oczywiście unsigned), chodź python już respektuje tylko 1/0
Silv
@alagner: kiedy ja to poznam. <wzdycha> (Pewnie nigdy).
jarekr000000
@Silv bym powiedział, że często to wiedza troszkę taka jak ogarnianie działania gazów bojowych. Wiedza to nic złego, ale ogólnie obecnie lepiej się z tym nie spotykać. boolean niejawnie konwertowany z / na int to rak. Starożytny potwór, który za niejeden krytyczny błąd, również w security, odpowiada.
AL
@jarekr000000: ale że elektronika? ;P
SA
  • Rejestracja:około 12 lat
  • Ostatnio:około godziny
  • Postów:1427
1

W .NET 5 dodano rekordy, fajny feature, który docelowo miał pozwalać na szybkie i łatwe tworzenie klas z domyślnym value-based comparision. Szybki check jak to zajebiście działa.

Kopiuj
using System;
					
public class Program
{
	public static void Main()
	{
		var a = new A { Value = "Test" };
		var b = new A { Value = "Test" };
		
		Console.WriteLine(a == b);
		
		IA c = new A { Value = "Test" };
		IA d = new A { Value = "Test" };
		Console.WriteLine(c == d);
	}
	
	public interface IA
	{
	}
	
	public record A : IA
	{
		public string Value {get; init;}
	}
}

Wyniku nie będę zdradzał, ale dla mnie to expectations vs reality.

Zobacz pozostałe 75 komentarzy
KamilAdam
Pytania : a) czy MyMessage jest interfejsem znacznikowym? b) Czy MyMessage jest interfejsem znacznikowym jeśli można zdefiniować aktora tak żeby przyjmował tylko wiadomości dziedziczące po MyMessage (takie typowanie udostępnia TypedAkka, dzięki czemu nie można wysłać innym wiadomości do tego aktora)
Wibowit
Moim zdaniem, z definicji na https://en.wikipedia.org/wiki/Marker_interface_pattern wynika, że marker interface to zaszłość historyczna z czasów, gdy nie było adnotacji i że adnotacje zastępują marker interface w całości. Innymi słowy - jeżeli da się zastąpić interfejs adnotacją to jest to marker interface, a jeśli się nie da to nie jest to marker interface. Pustego sealed traita nie da się zastąpić adnotacją, bo wstawienie adnotacji nie wpływa na możliwość rozszerzania typu.
Wibowit
The marker interface pattern is a design pattern in computer science, used with languages that provide run-time type information about objects. It provides a means to associate metadata with a class where the language does not have explicit support for such metadata. Another solution is for the language to support metadata directly: Both the .NET Framework and Java (as of Java 5 (1.5)) provide support for such metadata. In .NET, they are called "custom attributes", in Java they are called "annotations". Despite the different name, they are conceptually the same thing.
somekind
@KamilAdam: to bardzo filozoficzne pytanie w sumie. :) Powiedziałbym, że trochę tak, a trochę nie.
bakunet
Nie chce mi się czytać wszystkich komentarzy. Kto wygrał? :)
WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:około 3 godziny
  • Postów:5107
8

Pamiętajcie, piszcie długie i opisowe nazwy funkcji aby każdy rozumiał o co chodzi np.

IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr(...)

Kopiuj
[BindingImpl (BindingImplOptions.Optimizable)]
public static IntPtr GetAppearance (IntPtr class_ptr, UITraitCollection traits, params Type [] whenFoundIn)
{
	if (traits == null)
		throw new ArgumentNullException ("traits");

	IntPtr[] ptrs = TypesToPointers (whenFoundIn);

	if (Runtime.IsARM64CallingConvention) {
		// The native function takes a variable number of arguments ('appearanceWhenContainedIn:'), terminated with a nil value.
		// Unfortunately iOS/ARM64 (not the general ARM64 ABI as published by ARM) has a different calling convention for varargs methods
		// than regular methods: all variable arguments are passed on the stack, no matter how many normal arguments there are.
		// Normally 8 arguments are passed in registers, then the subsequent ones are passed on the stack, so what we do is to provide
		// 6 dummy arguments (remember that Objective-C always has two hidden arguments (id, SEL), which are the two first arguments
		// here), in order to push the arguments we care about to the stack.
		return IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr (
			class_ptr, // x0
			Selector.GetHandle (UIAppearance.selAppearanceForTraitCollectionWhenContainedIn), // x1
			traits.Handle, // x2
			ptrs [0], // x3
			IntPtr.Zero, // x4
			IntPtr.Zero, // x5
			IntPtr.Zero, // x6
			IntPtr.Zero, // x7
			ptrs [1], // the rest is on the stack. This is where iOS/ARM64 expects the first varargs arguments.
			ptrs [2], ptrs [3], ptrs [4], IntPtr.Zero);
	} else {
		return Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr (class_ptr, Selector.GetHandle (UIAppearance.selAppearanceForTraitCollectionWhenContainedIn), 
											 traits.Handle, ptrs [0], ptrs [1], ptrs [2], ptrs [3]);
	}
}
edytowany 1x, ostatnio: WeiXiao
Zobacz pozostałe 14 komentarzy
superdurszlak
@WeiXiao: to wygląda jak bebechy wygenerowanego kodu
KR
Niskopoziomowy kod dopasowujący dwa systemy o różnych konwencjach wołania - niekoniecznie WTF. Nazwa też wygląda na wygenerowaną (name mangling). Zapewne bindingi do jakiejś biblioteki wygenerowane automatycznie plus trochę kodu napisanego ręcznie aby właśnie ładniej wyglądało w wyższej warstwie wywołującej tę funkcję.
MarekR22
Z tego co widzę, to jest dziwna próba przesortowania API iOS z Objective C od C#. W poprzedniej firmie robiłem coś podobnego i mieszenie C++CLI z Objective C++ dawało o wiele lepsze i czytelniejsze rezultaty.
Azarien
Komentarz wyjaśnia co się tam dzieje, a taka nazwa funkcji jest uzasadniona. Kod jest pomostem pomiędzy niepasującymi do siebie platformami, więc pewne workaroundy są potrzebne; nikogo nie obchodzi że to nie spełnia zaleceń z mądrej książki jeżeli po prostu nie ma innego wyjścia.
WeiXiao
@Azarien: wiemy, ale mimo wszystko formatowanie kodu tu jest słabe :P
VA
  • Rejestracja:ponad 7 lat
  • Ostatnio:2 dni
3

Może nie programistyczny ale organizacyjny. Zespół w którym pracuję podzielił się na 2. Wynikł z tego poważny problem, ponieważ w moim zespole nie ma certyfikowane sc(r)um-mastera. Dramat w jednym akcie.

edytowany 1x, ostatnio: var
Zobacz pozostałe 17 komentarzy
jarekr000000
Pytanie co za firma wystawia te certyfikaty - ScrumAlliance i jest to masówka. Dużo znajomych porobiło(5-6 lat temu). Faktycznie u Germańców ten certyfikat to taka norma. W Polsce, też jest trochę firm, gdzie ten certyfikat jest popularny (pracodawca dopłaca). Prawcowałem w zespole, gdzie było więcej Certyfikowanych Sado Maso niż Certyfikowanych Jave Developerów (to drugie to jakies stare nudy) :-).
vpiotr
Czesc, mam na imie Piotr, mam certyfikat SM, z Javy i... skonczylem studia informatyczne. Od 2 miesiecy jestem czysty - nie przeczytalem zadnej ksiazki, nie skonczylem zadnego kursu.
VA
@WeiXiao: w teorii scrum jest na tyle dobry, że można go dostosować. W praktyce wygląda to tak, że wszystkich się dostosowuje do scruma, a opornych do współpracy zachęcają oddziały zaporowe scrumowego NKWD
jarekr000000
Swego czasu próbowałem tak dopasować Scruma, żeby tego Scruma nie było - trochę się udało.
AL
@jarekr000000: pracowałem w teamach, gdzie mimo deklaratywnego waterfalla było realnie zwinnie. To się imho sprowadza do zaufania na linii zespół-kierownictwo na tyle dużego, żeby ten pierwszy miał swobodę a drugi się nie wtranżalał za mocno w sprawy techniczne. Tylko i aż. Życie pokazuje, że bardziej aż.
LE
  • Rejestracja:prawie 5 lat
  • Ostatnio:około 3 godziny
  • Postów:264
8

Amazon uruchomił polską stronę, Amazon.pl. Próbuję wyszukać Philip K. Dick, czyli zgodnie z faktycznym zapisem imienia. Nic. Zero. Null. Strona mówi tylko, że wyszukała nie Philip, ale... Philips, czyli dodała s na końcu imienia. W pierwszej chwili jednak pomyślałem, że coś mi się ubzdurało, więc wpisałem Phillip K. Dick, czyli przez dwa l. Znalazło 21 pozycji. Co ciekawe, właściwe wyniki (setki pozycji) daje dopiero kliknięcie Zamiast tego wyszukaj philip k. dick.

dick1.png
dick2.png

Oczywiście Amazon.com sam poprawia imię przy wyszukiwaniu, przy czym wyszukanie błędnego (Search instead...) zwraca zbliżony zestaw wyników, co wyszukanie poprawnego.

Marooned
"wiemy lepiej" ;-)
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
10
Kopiuj
Hibernate operation: could not prepare statement; SQL [select ....]
(...)
Caused by: java.sql.SQLException: Prepared or callable statement has more than 2000 parameter markers.

(nie mój serwis, ale te logi będę podsyłać każdemu kto twierdzi że Hibernate przecież ładnie ogarnia query i w ogóle o niczym nie trzeba myśleć...)


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Zobacz pozostałe 6 komentarzy
somekind
Pewnie tak. :)
obscurity
@vpiotr: to na oraclu ogarnia tylko do 1000 wartości, jeszcze gorzej niż z markerami
vpiotr
@obs alez czy nie mozna by powtorzyc takiego parametru 2000 razy? W ten sposob przeslac np dwa miliony wartosci? Pytam bo nie testowalem.
obscurity
@vpi: pewnie można, wiem że "UNION ALL" działa na pewno. Szczerze to nie wiem po co takie ograniczenie, skoro nadal można je obchodzić w tym samym query
obscurity
@otr: najbardziej mi się podoba to obejście: https://stackoverflow.com/a/17019130/ okazuje się że limit 1000 nagle zwiększa się do 100'000 jeśli masz "tupla"
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Laska, z Polski
  • Postów:10051
2

W PHP zawołanie funkcji z nadmiarowymi argumentami jest jednocześnie dozwolone i niedozwolone.

Wbudowane funkcje

Kopiuj
ctype_lower("a", "b");              // error: ctype_lower() expects exactly 1 parameter, 2 given
array_unique([], SORT_STRING, []);  // error: array_unique() expects at most 2 parameters, 3 given

Funkcje użytkownika

Kopiuj
$closure =  function ($arg) {};
function my_function($arg) {};

$closure(1, 2);      // works
my_function(1, 2);   // works
edytowany 1x, ostatnio: Riddle
Zobacz pozostałe 21 komentarzy
jarekr000000
JĘZYK PROGRAMOWANIA powinny być predictible i reliable - no fajnie, tylko czemu czepiasz się PHP, który akurat nic wspólnego z predictible i reliable nie ma - by design.
Miang
przecież tyle zapłacił za kompilator i środowisko... nie, czekaj
Silv
@TomRiddle: nie rozumiem Twojej obiekcji. Nie wiem, jak to jest w PHP zaimplementowane, ale podobnie do @jarekr000000 (?) domyślam się, że po prostu wbudowane funkcje mają gdzieś w sobie coś a'la if (func_num_args() > n) throw new Exception("Too many args");. W ten sposób Ty musiałbyś dodać po prostu takie sprawdzenie samodzielnie do każdej swojej funkcji.
Riddle
@Silv: Nie mają, przecież podesłałem Ci rfc który to ogarnia: : https://wiki.php.net/rfc/strict_argcount
Silv
@TomRiddle: OK, moja wina, nie myślałem, że ten link odnosi się do tego, co pisałem. Nie ma ochoty za bardzo czytać całości, więc przyjmę na wiarę to, co mówisz.
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Poznań
  • Postów:8758
5

Może tak nie stricte programistyczne, ale na pewno WTF.
Niedługo minie rocznica komunikatu, który mi wyświetla Windows Update:

screenshot-20210315110948.png


Zobacz pozostałe 8 komentarzy
cerrato
@Pinek: nie, zwykły komp do pracy biurowej. Z wirtualizacji to jedynie mam tam VirtualBox'a.
Riddle
Może założymy wątek "Nie-Programistyczne Wtf jakie was spotkały"? :D
cerrato
@TomRiddle: pomysł nie głupi. Ale pytanie - czy w takim razie będzie tam wszystko inne (np. głupie ustawienie znaków na drodze, dziwne pismo z urzędu itp.) czy tyko rzeczy związane z IT?
vpiotr
@cerrato: np. svchost.exe (jeden wielki WTF)
Azarien
Raz jak coś takiego miałem (nie pamiętam który dokładnie build) ale mimo wszystko ściągnąłem iso i zainstalowałem – to system bsodził na starcie i nie pozostało nic innego jak przywrócić "poprzednią wersję systemu Windows". czyli mieli rację nie dając tego jeszcze do aktualizacji automatycznych…
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:2 minuty
4


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
Azarien
no cóż, odpowiedzi mógłby udzielić tylko jakiś dev z Casio z dostępem do kodu… chyba że znajdzie się ktoś zdolny z nadmiarem wolnego czasu..
Althorion
Moderator C/C++
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 13 godzin
  • Postów:1603
19

https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2007/aa432714(v=office.12)?redirectedfrom=MSDN

Trzystanowy boolean, który ma pięć możliwych wartości, z czego trzy są nie wspierane…

Zobacz pozostałe 3 komentarze
Miang
@PerlMonk: geeki: to są dwie dobre a gdzie jest zła?
somekind
Brzmi jak jakiś Microsoft JavaScript.
chalwa
@Althorion: Czego spodziewałeś się po pakiecie office? :D
PerlMonk
@Miang: zła? Każdy z geeków zna inny język :]
Miang
każdy z geeków zna WSZYSTKIE języki
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
13

Cały dzień nie mogę się skupić na robocie, wręcz odczuwam psychosomatyczny ból spowodowany przez to, że muszę używać pewnej wewnątrzfirmowej libki, której trzon API stanowią takie klasy: EventEnvelope<TPayload> oraz GenericEventEnvelope.
Jak widać niegeneryczna wersja to ta, która ma generic w nazwie. Logiczne.

Architektom przy zatrudnianiu powinni ucinać ręce, żeby nie mogli pisać kodu. Diagramy przecięż można malować trzymając pędzel w zębach, za to oszczędzi się takich wtfów programistom.


Po dopracowaniu rozwiązania każdy będzie mógł założyć własny drzewiasty wątek.
edytowany 1x, ostatnio: somekind
Zobacz pozostałe 3 komentarze
somekind
Niestety mamy, całą wieżę.
somekind
Głównie irlandzcy, ale ten akurat holenderski.
superdurszlak
jak holenderski, to siłą rzeczy germański - i wszystko się zgadza :)
somekind
No ok, ale tym tokiem rozumowania idąc, to brytyjscy i amerykańscy architekci też są germańscy. A nie o to chyba chodziło z germańskim oprawcą. ;)
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:około 4 godziny
6

Jak zaokrąglić liczbę do dwóch miejsc po przecinku w CSS:
https://stackoverflow.com/a/64921523

Kopiuj
div {
    --shf: 4.9406564584124654e-322;
    width: calc(x * var(--shf) / var(--shf));
}

trzeba przyznać że pomysłowe (choć niezupełnie działa jak powinno)


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
edytowany 1x, ostatnio: obscurity
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Laska, z Polski
  • Postów:10051
14

Programistyczny WTF jest takie, kiedy niemal codziennie na spotkaniach programiści używają określeń "base64 encryption" albo "base64 hashing".

Zabawne jest to, że przyznają "base64 is not a very secure encryption", ale utrzymują że b64 to jest enkrypcja tak czy tak :D

(Wyjaśnienie: base64 to nie jest żadna enkrypcja, tylko zapis liczby w systemie 64-kowym, zamiast w binarnym czy dziesiętnym. Nie ma nic wspólnego z bezpieczeństwem danych).

edytowany 1x, ostatnio: Riddle
Zobacz pozostałe 15 komentarzy
Riddle
@Wibowit: Skoro zapist w systemie sześciesięcioczwórkowym to kodowanie, to zarówno zapis w systemie dwójkowym i dziesiętnym również można nazwać kodowaniem. Najbardziej popularne kodowanie: IntToStr().
Wibowit
Kod i kodowanie to bardzo szerokie pojęcia: https://en.wikipedia.org/wiki/Code IntToStr() jest kodowaniem - kodujesz liczbę za pomocą cyfr w kodzie ASCII.
Riddle
@Wibowit: No przecież o to mi chodziło. Próbowałem zażartować, że idąc tym tropem, liczbę 123 też można "zakodować" jako "123" (w dziesiętnym). Chociaż czy to już przypadkiem nie jest serializacja inta? ;D ;)
Wibowit
Nie wiem gdzie tu dowcip, bo zapisanie liczby jako cyfr w kodzie ASCII jest de facto kodowaniem. Według https://en.wikipedia.org/wiki/Code nawet słowa mówione są kodowaniem (w pierwszych zdaniach jest o tym napisane). Wszystko zależy od kontekstu.
Riddle
@Wibowit: No przecież wię :)
PerlMonk
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa 🐪
  • Postów:1719
4

Ja dużo rozumiem... ale żeby Android był tak ciężki? 20210319_081722.jpg


Nie sztuka uciec gdy w dupie sztuciec. 🐪🐪🐪
Zobacz pozostałe 2 komentarze
VT
Parę lat temu jak budowaliśmy od zera Androida to źródła z repo gitowym miały coś koło 200GB. Teraz pewnie mają już więcej. Z tego co widziałem to Android nie ma userspace'a Linuxowego czyli to nie jest pełowymiarowy Linux tylko system podobny do Linuxa - zgodny zapewne co do API/ABI.
vpiotr
Pewnie te 200 GB bierze się z braku (lub z luźnego) standardu sprzętowego?
VT
Po części tak, ale ogólnie to straszny bajzel w źródłach Androidów. Każdy producent dorzuca swoje rzeczy gdzie popadnie, bez ładu i składu.
somekind
No cóż, Android po prostu ssie. Ale się rozwija - ostatnio wprowadzili rewolucyjne sterowanie gestami. Szczegół, że to było dostępne na innych platformach już 10 lat temu.
Anna Lisik
@PerlMonk: twierdzisz że Andek jest ciężki? Obczaj zatem https://imgur.com/CpDSp4C
crejk
  • Rejestracja:ponad 6 lat
  • Ostatnio:około godziny
  • Postów:46
4
Kopiuj
    public static final int XD = IntStream.rangeClosed(0, 10)
            .parallel()
            .reduce(0, (a, b) -> a + b);

    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }

Jeśli spróbujemy uruchomić powyższy kod to nic się nie stanie, nie dostaniemy żadnej informacji.
Ale jeśli zmienimy (a, b) -> a + b na Integer::sum to nasza aplikacja już zadziała.

edytowany 1x, ostatnio: crejk
Zobacz pozostałe 10 komentarzy
S9
@Miang: no cóż, zabawne to pisanie ze strony osób piszących w PHP że cieszą się że w Javie nie programują...
Azarien
ta Java to jednak jest zwalona ;)
PerlMonk
@Aleksander32: to jest zabawne w jakimkolwiek kierunku ;)
Wibowit
@Azarien: Może się autorom Javy nie chciało testować na tego typu hello worldach i dlatego przeoczyli? To jest bardzo odosobniony przypadek, no chyba, że czyjaś kariera polega na pakowaniu całego kodu w statyczne pola.
PI
taki WTF na siłę
Ktos
Moderator
  • Rejestracja:prawie 23 lata
  • Ostatnio:około 9 godzin
11

Kolega prosi o pomoc. Ma projekt we Flutterze, ma zdalne API, próbuje z niego dostać dane i dostaje komunikat "API key needed". A klucz API wysyła, w takim nagłówku jak trzeba. Biorę przykładowy kod z dokumentacji API, w C# - działa. Piszę dokładny odpowiednik we Flutterze, korzystając z biblioteki http - nie działa. W czym rzecz?

Stwierdziłem, że podsłucham sobie komunikację sieciową. W Android Studio jest dodatek do tego, instaluję Android Studio. Nie działa - bo wymaga użycia określonej biblioteki w Androidzie. A Flutter robi to sam z siebie, w DevTools jest zakładka network - zawsze się człowiek czegoś uczy. Podglądam komunikację sieciową - wygląda w porządku, klucz API jest wysyłany. Z ciekawości buduję projekt dla weba, nie dla Androida - ta sama sytuacja, "API key needed". Eksportuję żądanie do formatu cURL bezpośrednio z zakładki network w przeglądarce, uruchamiam - nie działa.

Biorę jeszcze jeden przykładowy projekt - w JavaScripcie. Dokumentacja jest źle zrobiona, nawet się nie ma prawa uruchomić. Poprawiam, wysyłam, działa. Eksportuję żądanie do cURL i przyglądam się.

Oprócz nieistotnych nagłówków typu User-Agent znajduję różnicę, wreszcie. Zmieniam - działa. Zmieniam znów - nie działa. A zatem to to.

Flutterowa biblioteka http domyślnie wysyła żądanie z Content-Type ustawionym na application/x-www-form-urlencoded; charset=utf-8. A tymczasem API oczekuje - uwaga uwaga - application/x-www-form-urlencoded. Bez określenia charsetu.

I zgodnie z logiką rzuca kodem 200 OK z komunikatem "API key needed" w JSON-ie.

I teraz najlepszy dowcip - nie mam pojęcia jak zmusić http do nie wysyłania tego nagłówka w ten sposób - jak się ustawia wszystko ręcznie, to i tak dorzuca, encoding ustawione na null nie zmienia (bo domyślnie to UTF-8) i tak dalej. Mogę sobie zmienić encoding, ale nie mogę go wyrzucić. Jest już 23, rzucam to wszytko w diabły, biorę inną bibliotekę niż "oficjalna" - Dio. Działa.

Dzisiaj, kilka dni po rozwiązaniu problemu, z ciekawości zaglądam na dokumentację tego API czy jest jakakolwiek wzmianka o tym. Gdzie tam. Ale jest sekcja "dyskusje". I rok temu ktoś miał ten sam problem, w PHP. Pod tym tylko komentarze "mam to samo, pomuszcie".

API płatne powyżej 300 żądań miesięcznie, minimum 10$ miesięcznie.

Ktos
Podrzuciłem rozwiązanie, chyba koledze też zadziałało - jego odpowiedź po przesłaniu mu moich opisów jest zbyt niecenzuralna aby cytować ;)
Miang
;) ale w tej dyskusji. problem, na tyle egzotyczny że tylko punkty na SO nabijać ;)
hauleth
A mało to takich API, które kojarzą, że "HTTP" ma jakieś tam nagłówki, ale kto by się przejmował ich poprawną implementacją?
Sarrus
  • Rejestracja:prawie 14 lat
  • Ostatnio:3 dni
  • Postów:2512
1

To mi przypomina pewne api do komunikacji z którym musiałem implementować sam protokół http, bo to coś wymagało podpisania nagłówka http w całości.
Konia z rzędem temu, kto uzyska surową formę http przed wysłaniem żądania w C#. Gdy pierwsze testy nie przechodziły, napisałem prośbę o pomoc do autorów. Dostałem w odpowiedzi, że nie tego się już nie robi, a podpisuje jedynie url :D. No świetnie - dziękuję za aktualną dokumentację. I spora część kodu wyleciała.

Jak już wszystko miałem przewalczone i działające przyszła pora na wdrożenie. Okazało się, że moja aplikacja ma się łączyć ze starszą wersją ich aplikacji, gdzie całe to API nie jest wspierane. Musiałem dopisywać integrację przez SDK. YAFUD

edytowany 1x, ostatnio: Sarrus
hzmzp
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 8 godzin
  • Postów:619
2

Połączyłem się przez RDP z moje kompa do VM managementu i z niej odpalony RDP do innej VM2 na fullscreen. Na VM2 klikam w menu start i zamykam system, bo chcę zmodyfikować konfiguracje i... nagle wywala mi zdalny pulpit! Okazało się że, klikając w menu start na VM2 wyświetliło się menu z managementu. Reszty chyba możecie się domyśleć. VM z managementu jest jedynym dojściem do zażądania całą infrastrukturą a włączyć można ją tylko przez bezpośrednie podpięcie pod servera XD dobrze że kolokacja blisko, a nie na drugim końcu kraju. Kochany M$.

obscurity
dlatego ja na wszelki wypadek robię reboot z konsoli. Ciężko się połapać do której maszyny należy menu start
somekind
A ja minimalizuję, żeby mieć okno, a nie full screen. :) No, ale od wielu już lat nie musiałem takiej ekwilibrystki robić.
hzmzp
@Panczo ja klikam myszką.
Azarien
Dlatego żeby zamknąć albo zrestartować zdalną maszynę używam programiku PC Sleep.
WhiteLightning
  • Rejestracja:prawie 14 lat
  • Ostatnio:4 dni
  • Postów:3168
0

Maven wprowadzil nowa wersje z poprawka security. Ale sposob komunikowania o co chodzi jest po prostu niesamowicie przyjazny:

Generalnie user dostaje w twarz komunikat:

Kopiuj
Downloading from maven-default-http-blocker: http://0.0.0.0/.......

Tutaj zmiana: https://maven.apache.org/docs/3.8.0/release-notes.html

Tutaj komentarz do zmiany:
https://www.mail-archive.com/dev@maven.apache.org/msg123882.html

edytowany 2x, ostatnio: WhiteLightning
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:2 minuty
8

Dzisiejszy WTF z Stackoverflow:

Stackoverflow_copy_limit_april_fool.pngStackoverflow_copy_limit_description_april_fool.png

:)


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
Marooned
Na SO mam JS wyłączony, więc dowcip by mnie ominął. Dzięki.
AreQrm
Nie WTF tylko AFD :)
MarekR22
Żeby było jasne: nie przez przypadek użyłem słowa "dzisiaj" oraz nadałem odpowiednią nawę załącznikom.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Tuchów
  • Postów:12156
5

Ledwo włączyłem, a ten już narzeka, że za długo sesja trwa. :D

Screenshot_20210308-041354.png


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
Zobacz pozostałe 4 komentarze
flowCRANE
@Marooned: to jest systemowa usługa — wrzuca powiadomienie mniej więcej po dwóch, może trzech tygodniach od początku sesji. Zdarzało mi się dostawać takie powiadomieni, bo sesja trwała koło miesiąca, ale nigdy tuż po włączeniu telefonu. :D
KamilAdam
@Marooned: teraz trzeba chodzić z powerBankiem
TerazOdpowiemNaKomcie
serio Android każe restartować się co jakiś czas? xD mein gott
cerrato
@TerazOdpowiemNaKomcie: to nie jest raczej komunikat Androida, tylko jakiś wynalazek konkretnego producenta. Sam miałem do czynienia z kilku(nastoma) Androidami i czegoś takiego nie widziałem nigdy. Jedynie czasem się domagał restartu po aktualizacji.
Marooned
@TerazOdpowiemNaKomcie miałem kilka Androidów, żaden tego nie robił, więc to jakiś wynalazek u @furious programming. Restartu po aktualizacji aplikacji też nie wiedziałem.
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)