
- Rejestracja:około 11 lat
- Ostatnio:2 minuty
- Postów:8410
Nie wiem, o co chodzi, ale jakoś mnie to nie dziwi, że utrzymywacz mega popularnego projektu open source rządzi twardą ręką.
W projektach open source zwykle się dzieje dzicz - ktoś tam zakłada wątki z dziwnymi ficzer requestami, ktoś chce coś zmieniać bez potrzeby, ktoś ma pretensję do autorów, tam są jakieś zgłoszone bugi, tam trwa dyskusja techniczna nad rzeczą, która będzie wymagać zaorania dużej części projektu (mówię ogólnie, a nie o Linuksie teraz), tutaj SJW trolluje, że słowo black mu nie pasuje itp.
Więc bardzo często utrzymywacze open source stają się gruboskórni. I to widać już w osobach, które mają kilka lat doświadczenia w open source, więc nie dziwię się Linusowi, że mając tyle lat doświadczenia w open source, nauczył się chamstwa. Widocznie tak jest efektywniej.




- Rejestracja:prawie 15 lat
- Ostatnio:około 2 godziny
- Lokalizacja:Laska, z Polski
- Postów:10056
Dlaczego, żeby podać typ funkcji w TypeScript trzeba podawać nazwę argumentu? Przecież to nie ma sensu:
function acceptCallabk(callback: (argument:string) => void): void {
}
// zamiast
function acceptCallabk(callback: (string) => void): void {
}


accept(callaback){}
, to spoko. Ale ja mówię o deklaracji typu funkcji, czyli ktoś dodaje coś TSowego - accept(callback: () => void){}
, i w ramach tej deklaracji typu TS'owego, mówisz że ktoś chciałby pisać coś JS'sowego, czyli accept(callback: (arg) => void){}
, zamiast TSowego accept(callback: (arg:string)=>void){}
? No to faktycznie, brawo.

function f(...pars)
i potem odwoływać się pars[0]
, pars[1]
jeśli się w tym połapiesz to brawo


a
w a => b
raz oznaczało by typ a
a raz nazwę zmiennej w zależności od kontekstu i byłoby to niewygodne bo nie można by było przekleić definicji funkcji do typu argumentu tylko trzeba by było ją przerabiać. To nie żadna zaszłość tylko udogodnienie, tak samo możesz nazywać składowe tupla (tablicy) i IDE później je podpowiada https://4programmers.net/uploads/98598/nLxU5TZkVwvGbf1QuKnfFfpVLFVPbjZMkxLiGXlJ.png
- Rejestracja:około 7 lat
- Ostatnio:około 2 miesiące
- Postów:33
Chodzi o Krajowy System e-Faktur:
(...) w procesie wyboru Wykonawcy najwięcej punktów dostają firmy, które audytowały największe projekty, przykład: „20 punktów za wykazanie się doświadczeniem tego Audytora w wykonaniu audytu polegającego na przeprowadzeniu testów wydajnościowych systemu informatycznego, o wartości nie mniejszej niż 40 000 000,00 zł brutto”.
źródło: https://testerzy.pl/news/wydarzenia/przetarg-na-audyt-ksef




- Rejestracja:ponad 13 lat
- Ostatnio:około 3 godziny
- Lokalizacja:Tuchów
- Postów:12167




- Rejestracja:około 7 lat
- Ostatnio:około 2 miesiące
- Postów:33
furious programming napisał(a):
NaN:NaN
… litości…
U mnie YouTube pozwala zapisać coś na liście do obejrzenia coś co na niej jest:
Pomyślałem, że zgłoszę to im bo jest taka opcja bezpośrednio na stronie gdzie można zrobić też zrzut ekranu (opcja prześlij opinię z menu po kliknięciu w swoje konto w prawym górnym rogu). Tylko że do tego zrobienia zrzutu ekranu muszę klikać a więc menu gdzie jest "Zapisz na liście Do obejrzenia" zamyka się, więc nie mam jak zescreenshotować problemu. A załączyć grafiki z dysku nie można.
- screenshot-20240204002630.png (110 KB) - ściągnięć: 19




- Rejestracja:około 17 lat
- Ostatnio:2 minuty
C++
Kiedyś naskrobałem taką funkcję pomocniczą:
template<typename T, typename... Args>
[[nodiscard]] constexpr bool isAnyOf(T&& a, Args&&... args) noexcept
{
return ((std::forward<T>(a) == std::forward<Args>(args)) || ...);
}
template<typename T, typename... Args>
[[nodiscard]] constexpr bool isNoneOf(T&& a, Args&&... args) noexcept
{
return !isAnyOf(std::forward<T>(a), std::forward<Args>(args)...);
}
I teraz ktoś użył tego w taki sposób:
const bool isParentProcessKnown = utils::isNoneOf(nullptr, onProcess, onProcess->getParent());
Czyli miało być zabezpieczanie przed użyciem nullptr
, a tak naprawdę zawsze używane było nulptr->getParent()
:/.
Prościej było po prostu zrobić:
const bool isParentProcessKnown = onProcess && onProcess->getParent();


2+1
) i odkładasz na stos. Jak masz leniwą ewanuację (np. Call by need) to pod spodem sprowadza się to w zasadzie do tego iż kod (np 2+1
) opakowany w lambdę i dopiero ta bezparametrowa lambda jest odkładana na stos, a że lambda to dodatkowy obiekt to będzie to jakaś dodatkowa alokacja itd itd. Oczywiście jest szansa ż kompilator coś tam poprawi, ale ogólnie myślę iż spadek wydajności będzie. A jak wiadomo C++/Rust to nie Java/Scal i tu chce się mieć szybko kod

std::forward
to zastanawiam się z czego wynikają potrzeby na takie dzikie koncepty When t is a forwarding reference (a function argument that is declared as an rvalue reference to a cv-unqualified function template parameter), this overload forwards the argument to another function with the value category it had when passed to the calling function.


- Rejestracja:około 6 lat
- Ostatnio:4 minuty
Nie wiem na ile to programistyczne a na ile sprzętowe ale muszę się wyżalić.
Flagowy samsung po podłączeniu do ładowarki na początku negocjuje z ładowarką prędkość ładowania, przy czym jest to jakoś zrąbane i czasem nie dogaduje się poprawnie.
Ostatnio miałem sytuację że miałem tylko jak się okazało pustego powerbanka z kablem i musiałem szybko naładować telefon a do dyspozycji znalazłem tylko port usb w komputerze, po straceniu połowy dostępnego czasu telefon zyskał tylko kilka % mocy, na szczęście mam kabel który pokazuje prędkość ładowania i okazało się że ładowanie telefonu bezpośrednio z portu jest mega wolne, za to powerbank ładuje się szybko i telefon z powerbanka też ładuje się z maksymalną prędkością.
Doszło do absurdu że wielokrotnie szybciej podładowałem powerbanka a potem telefon z powerbanka niż bym ładował telefon bezpośrednio - ten sam port usb, ten sam kabel. Jednak noszenie ze sobą pustego powerbanka ma sens...



- Rejestracja:ponad 18 lat
- Ostatnio:7 dni
- Lokalizacja:Rzeszów
Jakby ktoś potrzebował wizualizacji problemu z USB-C
A takim testerem można sobie jeszcze piny posprawdzać:
- screenshot-20240228102602.png (952 KB) - ściągnięć: 5

- Rejestracja:prawie 14 lat
- Ostatnio:około 5 godzin
- Postów:3169
Zapisuje sie na egzamin na prawo jazdy - trzeb uzyc takiego ekstra systemu infocar. Robie platnosc blikiem, ale cos mi przerwalo i nie kliknalem autoryzacji i transakcja nie przeszla po stronie banku (ok). ALE po stronie systemu nie ma opcji zeby przerwac/odwolac zaczac od nowa, tylko trzeba czekac pol godziny az system dojdzie do wniosku ze pieniazkow nie ma i nie bedzie i dopiero mozna zapisywac sie ponownie.


- Rejestracja:ponad 2 lata
- Ostatnio:około 4 godziny
- Postów:92
Miałem podobnie przy kupowaniu biletów MPK w Rzeszowie: po wybraniu szybkiej płatności w pekao i zalogowaniu się powinien się otworzyć wypełniony formularz przelewu, a był pusty. Po wycofaniu się płatność wisiała i musiałem pisać do supportu żeby zresetowali. To było dawno, chyba w 2016, ale od tego czasu kupowałem bilety tylko w automatach.

- Rejestracja:ponad 18 lat
- Ostatnio:7 dni
- Lokalizacja:Rzeszów
@snowflake2137 to samo jest w appce Millenium Bank przy zakupie biletów na autobus. Coś mi nie przeszło przez przypadek i cyk, wal się na ryj, ponowna próba za 5 minut, a autobus już jedzie i tylko czekać aż kanar wejdzie na następnym przystanku
- Rejestracja:ponad 8 lat
- Ostatnio:3 dni
- Postów:2287
Czemu jak ludzie nie korzystacie z "jakdojade" do kupowania biletów?



- Rejestracja:ponad 11 lat
- Ostatnio:około 6 godzin
- Postów:363
W skyCash przy kupnie biletu apkę wywaliło, a próba ponownego kupienia została okraszona informacja, że mam sobie czekać x minut. Byłem już w autobusie, który jechał. Bilety da się kupić dopiero po wejściu do autobusu i podaniu kodu z autobusu.


- Rejestracja:ponad 22 lata
- Ostatnio:około 5 godzin
- Lokalizacja:Poznań
Dziś przy budowaniu poważnej wewnętrznej appki bankowej zaczęły wywalać się buildy. Okazało się, że jeden z testów backendowych miał mniej więcej taki kod:
obecnaData = Data();
rok = obecnaData.dodaj(1 rok);
i potem rok był porównywany ze stałą i zonk, bo nagle zamiast roku zmienna ma 11M30D :D
No nic, sprawdzimy jutro ]:->


- Rejestracja:prawie 14 lat
- Ostatnio:około 5 godzin
- Postów:3169
Orange - taki malo znany lokalny dostawca internetu. Dzisiaj mieli jakas grubsza awarie. To ze awarie sie zdarzaja - normalne. Ale zeby firma tej wielkosci nie miala status page'a i health checka,gdzie mozna sprawdzic stan uslugi w inny sposob niz na Downdetectorze albo dzwoniac na Party Line i rozmawiajac z niedorozwinietym botem. To jakis niesmieszny zart.
- orange.png (20 KB) - ściągnięć: 4

- Rejestracja:około rok
- Ostatnio:11 miesięcy
- Postów:248
WhiteLightning napisał(a):
Orange - taki malo znany lokalny dostawca internetu. Dzisiaj mieli jakas grubsza awarie. To ze awarie sie zdarzaja - normalne. Ale zeby firma tej wielkosci nie miala status page'a i health checka,gdzie mozna sprawdzic stan uslugi w inny sposob niz na Downdetectorze albo dzwoniac na Party Line i rozmawiajac z niedorozwinietym botem. To jakis niesmieszny zart.
Mieszkam na peryferiach. Gmina światłowodu nie podciągnie no bo się to im nie spina. Samemu to koszt naście tysięcy. Ogólnie rzecz biorąc zostaje taka czy inna radiówka. Antena miktorika z nowymi wersjami lte plus wifi na 5ghz od jakiegoś lokalnego isp. Pan Gienek jest miszczem infosecu. W sieci ma pppoe na trywialne credentiale. Do tego ma pulę publicznych ip oraz prawie wszyskie sprzęty powystawiane na tych ip.


- Rejestracja:około 6 lat
- Ostatnio:4 minuty
Cennik zooma https://zoom.us/pricing pokazuje mi tekst w 3 różnych językach na tej samej stronie - polski, angielski i najwyraźniej niderlandzki
Nie umiem sobie wyobrazić jak to jest w ogóle możliwe od strony programistycznej
- screenshot-20240416194027.png (130 KB) - ściągnięć: 5


Everything in Dla firm
<3



- Rejestracja:ponad 18 lat
- Ostatnio:7 dni
- Lokalizacja:Rzeszów
@obscurity zrobiłem w życiu coś podobnego i to nie raz. Klienci z Polski bardzo chcieli być światowi, i mieć w CMS możliwość tłumaczenia na 666 języków najlepiej. No i płacili za CMS, żeby sobie samemu zmieniać treści, czego nigdy nie robili... podobnie jak uzupełnienia tłumaczeń. Po polsku było wszystko, bo przeniesienie/uzupełnienie treści w tym języku było w cenie. Angielski uzupełniałem dla krótkich tekstów w ramach dobrej woli. Klient czasem uzupełniał trochę angielskiego/niemieckiego/rosyjskiego (zależało to pewnie od znajomości drugiego języka przez klienta lub ludzi z jego otoczenia). Ale dziury były wszędzie.
Więc logika była taka: wybrany język (np. francuski) -> fallback do angielskiego (bo najszerzej znany) -> fallback do polskiego, który będzie uzupełniony zawsze.
Więc dało się mieć na stronie 3 różne języki.
I nie uważam, że to głupie nawet. Lepiej mieć taki misz-masz niż jakieś {{offer.basic.meetings.description}}
lub dziury.



- Rejestracja:ponad 11 lat
- Ostatnio:około 7 godzin
- Postów:620
@obscurity @dzek69 miałem podobny projekt w którym był multilang. Domyślnie polski, ale przetłumaczyło się trochę na ingrisz żeby zobaczyć czy działa poprawnie i jak wygląda (czy dobrze się formatuje). Dobrze że w umowie było że wszystko co dostarczamy jest w pl a resztę klient ma sobie sam uzupełnić, bo pod koniec chcieli żeby im to przetłumaczyć na kolejne 3 języki. Jak to się mówi daj palec a wezmą całą rękę.

- Rejestracja:około 6 lat
- Ostatnio:4 minuty
Świeżo wydeployowana statyczna strona typu hello world przez interfejs Azure na domyślnej domenie wygenerowanej przez microsoft - przeglądarka i antywirus od tej samej firmy po otworzeniu wygenerowanego przed sekundą urla ostrzegają przed wejściem na nią bo jest niebezpieczna.
Rozumiem że w chmurze zdarzają się scamerskie strony, ale chyba ich zgłaszanie nie powinno blokować całej domeny, zwłaszcza że należy do nich samych
- screenshot-20240418081143.png (28 KB) - ściągnięć: 8


- Rejestracja:ponad 13 lat
- Ostatnio:około 3 godziny
- Lokalizacja:Tuchów
- Postów:12167
- Rejestracja:ponad rok
- Ostatnio:4 dni
- Postów:32
Jest sobie klasa implementująca jakąś encję biznesową, niech będzie, że zamówienie, a więc Order
.
Jest też klasa typu DTO reprezentująca tę encję w kontekście komunikacji z jakimś zewnętrznym API - OrderDTO
.
Jak w skrócie wygląda OrderDTO
:
class OrderDTO {
private string $id;
private int $total;
// itd. jeszcze kilka innych własności - jak na razie spoko
// ojojoj zaczyna się...
private Order $order;
// ale nic, lecimy dalej
// bez getterów się nie obejdzie
public function getId(): int
{
return $this->id;
}
// nie chciało się kopiować iluś tam własności z encji do DTO,
// bo po co kopiować, skoro można trzymać encję w DTO!
// [insert million dollar idea meme here]
public function getPromoCode(): string|null
{
return $this->order->getPromoCode();
}
// settery? hmm... [sus]
public function setId(int $id): void
{
$this->id = $id;
}
// oh nie...
public function setPromoCode(string|null $code): void
{
$this->order->setPromoCode($code);
}
}
Co się stanie, jeśli w kodzie obsługującym komunikację z zewnętrznym API na jakiejś ścieżce mamy $dto->setPromoCode(null)
, podczas gdy encja jest zarządzana przez ORM, ale akurat na tej ścieżce nie ma żadnego zapisu / flushowania encji do bazy?
Co się zmieni, jeśli z jakiegoś niepowiązanego powodu pojawi się tenże zapis?
Bonus round: dlaczego encję wpitolił do DTO senior z 10 letnim stażem w danej firmie, a CR przyklepał jego koleś z 15 letnim?

teraz wszystkie języki wyglądają podobnie
Niby tak, ale dalej niewiele ma TypeClassy (w tym monady) :(


- Rejestracja:około 17 lat
- Ostatnio:2 minuty
MS Teams na Androidzie.
Rozmawiałem z kimś audio przez MS Teams na telefonie, zakończyłem rozmowę i wyskoczył komunikat, że trzeba się zalogować.
No to próbuje się zalogować i wiskacza jakiś błąd, że moje konto nie jest aktywne w ty serwisie. Ok to ignoruje.
Jednak zauważam, że dostaje powiadomienia na telefon o nowych wiadomościach, więc zacząłem dłubać.
Wystarczy kliknąć "Wstecz" na ekranie logowania i pokazuje się ekran z ostatnimi konwersacjami i wyskakuje znowu ekran logowania.
Klikanie "Wstecz" więcej razy po każdym razie jak pokaże się ekran logowania, w pewnym momencie daje więcej czasu i można coś zrobić.
Bez udanego logowania udało mi się wszystko:
- przeczytać wiadomości (widzę, że na PC zmienił się status nieprzeczytanej wiadomości)
- wysłać wiadomość (do kogoś lub do siebie)
- a nawet zadzwonić do kogoś.
Czyli nie jestem zalogowany, ale jednak mogę robić rzeczy, jak zalogowany :). Stara sesja działa, ale równocześnie wywołuje prośbę o ponowne zalogowie.
Dziś wróciło do normy i już nie pyta mnie o zalogowanie - jednak od tego momentu nie widziałem, nigdy udanego logowania, więc stara sesja przetrwała i przestała pokazywać ekran logowania.


- Rejestracja:ponad 22 lata
- Ostatnio:około 5 godzin
- Lokalizacja:Poznań
Absurd Cinema City - nie można wybrać miejsca, z jednym wolnym obok, zatem nie da się wybrać żadnego miejsca z zaznaczonych poniżej
- screenshot-20240508172421.png (142 KB) - ściągnięć: 4




- Rejestracja:prawie 15 lat
- Ostatnio:około 2 godziny
- Lokalizacja:Laska, z Polski
- Postów:10056
Czy to jest żart? https://laravel.com/docs/11.x/upgrade#modifying-columns
Od dawna mówiłem że frameworki to straszna kappa, i dobrze jest budować abstrakcje na nie; ale teraz to chyba przegięli
Dla niewtajemniczonych: weszła breaking change do migracji bazy danych w Laravel 11tce, że jeśli podczas edycji kolumny na nowo nie sprecyzuje się modyfikatorów, to zostaną usunięte. Kolumny która np. była dodana 100 migracji wcześniej...
Co znaczy, że jeśli chcę poprawnie zachować strukturę bazy, to muszę każdą jedną migrację która edytuje kolumnę... wejść do niej, i znaleźć jakie modyfikatory ma ta konkretna kolumna w tym commicie I to muszę zrobić dla każdej migracji, a w projekcie takich jest czasem z 500-1000. Oczywiście goście od Laravela nie dali żadnego toola żeby to zrobić, albo chociaż sprawdzić czy się zrobiło dobrze.
I jak to trzeba niby teraz zrobić? Znaleźć każdą stworzą kolumnę z modyfikatorami, i znaleźć miejsca gdzie jest edytowana? Czy może znaleźć wszystkie edycje kolumn, i zobaczyć gdzie jest tworzona? Tak czy tak - WTF. Łaskawie napisali: Likelihood Of Impact: High
.
Co za żart. Pamiętam słowa klasyka (Robert Martin): "Framework's authors are out to screw you. Or maybe they aren't, but they will". Święte słowa.




- Rejestracja:ponad 2 lata
- Ostatnio:11 miesięcy
- Postów:146
Riddle napisał(a):
Co za żart. Pamiętam słowa klasyka (Robert Martin): "Framework's authors are out to screw you. Or maybe they aren't, but they will". Święte słowa.
Ja natomiast kiedy moje osobiste przekonanie znalazlo potwierdzenie w tym co na temat framework'ow w ogole ma do powiedzenia Rasmus Lerdorf (00'14"):
zaczalem omijac z daleka porjekty oparte o Symfony lub Laravel'a.
Jesli chodzi o php
, nie ma to jak podstawowa rama na psr'ach i mozliwosc integracji dowolnych rozwiazan we framework agnostic
kodzie.
Takie twierdzenia, ze microframweorki nie nadaja sie do rozwiazan enterprise, lub nadaja sie wylacznie do prototypowania lub draftow dla przyszlych bardziej zlozonych rozwiazan, nawet nie bede komentowal.

- Rejestracja:ponad 6 lat
- Ostatnio:5 dni
- Lokalizacja:Silesia/Marki
- Postów:5505
Java to jest jednak poj'bana. Dodali nowy interfejs czyli kolekcje sekwencyjne a tam metoda pobierz ostatni
default E getLast() {
if (this.isEmpty()) {
throw new NoSuchElementException();
} else {
return this.get(this.size() - 1);
}
}
Naprawdę skoro Java ma już tego kompniętego Optionala to nie można było zrobić
default Optional<E> getLastOpt() {
if (this.isEmpty()) {
return Optional()
} else {
return Optional(this.get(this.size() - 1));
}
}
Widać iż podniecanie się w Javie wyjątkami trwa w najlepsze i lepiej nie będzie :(

Nie potrafię sobie wyobrazić kiedy w normalnym kodzie Get last który zwraca optional byłby użyty z czymkolwiek innym niż orElseThrow
O wy programiści sąbej wyobrażni, Są tu jeszcze jacyś miłośnicy checked exceptions? Używacie? Akurat miałem w pracy

A w sumie nie pamiętam, jest getFirst() ?
Jest, to nowa rzecz, świeżo dodana

if empty, return ""; return last.toString
?


- Rejestracja:prawie 3 lata
- Ostatnio:40 minut
- Postów:779
@KamilAdam trzeba jednak wziąć pod uwagę że to nie jest całkiem nowy interfejs z nowymi metodami tylko próba uporządkowania istniejącego bałaganu i zostały wykorzystane istniejące metody (ale tak, mogli dodać takie z Optionalami)
- Screenshot_20240509-192435.png (311 KB) - ściągnięć: 2

- Rejestracja:ponad 13 lat
- Ostatnio:około 3 godziny
- Lokalizacja:Tuchów
- Postów:12167
Responsywne UI jest tak responsywne, że aż skisłem z zachwytu.
- screenshot-20240522030331.png (486 KB) - ściągnięć: 60




