Jak pracowałem w jednej firmie, gdzie dane kontaktowe klienta były najważniejsze, to tam też było na onchange strzał do bazy, a potem płacz, że znikają numery klientów :(
Albo zasłanianie pesela, numeru telefonu za pomocą podmieniania cyfr w środku ciągu iksami, a potem jak ktoś nie miał uprawnień do wyświetlania danych i niechcący edytował dane (tak, mógł, bo nikt nawet nie zrobił inputa disabled), to do bazy leciały pesel i numery z iksami :D
- Rejestracja:prawie 5 lat
- Ostatnio:prawie 3 lata
- Postów:360

- Rejestracja:około 6 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Warszawa 🐪
- Postów:1719
vitz666 napisał(a):
Kolega zrobił klasycznego dropa u klienta...
Ale nikt sie w firmie nie śmiał.Był przekonany że to baza testowa
Ja w pracy tak dropnąłem tabelkę z danymi klientów. Był to serwer deweloperski, który codziennie jest odświeżany danymi z produkcji, więc nie było problemu. Chciałem po prostu zobaczyć kiedy apka się wysypie. Jakieś dwie godziny później kolega chciał mi coś pokazać i mówił, że mu coś nie działa. Po dziesięciu minutach walki wpadłem na pomysł, żeby spytać go który to serwer. Było ten, który zepsułem. Trochę się zirytował :D .



DROP
deva nie jest jeszcze niczym złym, no może poza przypadkiem gdy jest więcej niż jeden dev zalogowany jednocześnie.

- Rejestracja:około 7 lat
- Ostatnio:około rok
- Postów:109
Jeden z przykładów, dlaczego praca w branży BPO doprowadza do szału :D
Klient, nazwijmy go Pierre, dzwoni, że system nie działa.
Grzebię w logach i dochodzę do wniosku, że brakuje pliku konfiguracyjnego.
Ktoś zdecydował, że konfig ma być wczytywany z OneDrive klienta, w tym samym katalogu co excele z zestawieniami transakcji, no trudno ¯_(ツ)_/¯
Wchodzę do lokalizacji, nic tam nie ma.
Podejrzane.
Sprawdzam "recent changes", a tam: "config.json deleted 3 hours ago by Pierre. xD
Dzwonię do niego i mówię, że naprawiłem. System już działa.
On mi gratuluje, wszystko fajnie i wtedy pytam dlaczego usunął plik na OneDrive?
Zignorował moje pytanie i się pożegnał :D



- Rejestracja:prawie 7 lat
- Ostatnio:ponad 3 lata
- Postów:3394
Cyber Folks po przejęciu linuxpl.com przekonwertował nazwy użytkownika w panelu klienta do małych liter i jest wrażliwe na wielkość liter przy ich wpisywaniu. W panelu logowania nie ma nigdzie o tym wzmianki. Przypadkiem odkryłam o co chodzi, tylko dlatego, że zwątpiłam już w to, czy sobie prawidłowo zanotowałam dane jednego klienta, tak samo mam z innymi kontami.


- Rejestracja:ponad 6 lat
- Ostatnio:3 dni
- Lokalizacja:Silesia/Marki
- Postów:5505
Java nie posiada if
działającego jako wyrażenie (zwracającego wartość), ale posiada operator trójargumentowy.
Operator trójargumentowy nie może zawierać niestety bloków kodu zwracających wartość, tylko pojedyncze wyrażenia.
W Javie implementacja interfejsu w miejscu jest pojedynczym wyrażeniem. Łącznie z wywołaniem metody.
Stąd już tylko krok do kodu:
import java.util.function.Supplier;
public class HelloWorld{
public static void main(String []args){
final String message = true ? (new Supplier<String>() {
@Override
public String get() {
String hello = "hello";
String world = "world";
return hello + " " + world;
}
}).get() : "";
System.out.println(message);
}
}
Co z tobą jest nie tak Javo?
No dobra trochę nagiąłem rzeczywistość, kod bardziej wygląda tak:
someExpression
? new SomeInterface<>() {
@Override
public String someMethod() {
// tutaj długa i skompikowana logika
String hello = "hello";
String world = "world";
return hello + " " + world;
}
}
: null;


switch
a zwracającego wartość to jest nadzieja na if
a zwracającego wartość. Do tego czasu będę narzekać na szpetotę Javy



public class MultilineTernary { public static void main(String[] args) { final String message = true ? ((Supplier<String>) () -> { String hello = "hello"; String world = "world"; return hello + " " + world; }).get() : ""; System.out.println(message); } }
Ehh, formatowanie się popsuło :(

- Rejestracja:prawie 17 lat
- Ostatnio:około 18 godzin
- Postów:2792
Takiego maila dostałem.
EDIT:
A oto i FV. I wcale nie jest na 0 zł...
- Przechwytywanie.JPG (100 KB) - ściągnięć: 8
- Screenshot_2020-10-19-22-08-16-784_com.microsoft.office.outlook.jpg (388 KB) - ściągnięć: 8




- Rejestracja:około 6 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Warszawa 🐪
- Postów:1719
Przeglądam sobie Tidala na telefonie, gadam z kimś a tu wyskakuje
Nosz kur... mało brakowało a bym trafił w OK. Na telefonie jednak łatwo trafić ten chędożony przycisk. Ten głupi komunikat wyskakuje co jakiś czas.





- Rejestracja:prawie 7 lat
- Ostatnio:ponad 3 lata
- Postów:3394
Dostałam spama z ofertą wykonania strony internetowej. No to zajrzałam:
varto.pl
Pozwól, że stworzymy Ci profesjonalną stronę internetową
Zdjęcie pani konsultantki na 400px szerokości waży prawie 1 MB. Nie ono jedyne z resztą.
Cała strona waży ponad 10 MB. Widywałam już takie na 3-5 i zawsze jak mi się wydaje, że widziałam już wszystko, ktoś mnie jednak zaskoczy :]



- Rejestracja:ponad 13 lat
- Ostatnio:prawie 3 lata
- Postów:4882
nie do końca WTF chociaz...
we flutterze w kodzie mozesz miec emoji i normalnie wyswietlaja sie! :D
- screenshot-20201023120901.png (108 KB) - ściągnięć: 11




- Rejestracja:około 7 lat
- Ostatnio:około rok
- Postów:109
Konferencja na .NET developers days: "Frontend in F#? Hold my beer!"
Myślałem, że to jakiś żart, ale faktycznie jest do tego biblioteka :D
Chyba ta sama prezentacja tylko z innej konferencji:





- Rejestracja:około 17 lat
- Ostatnio:2 minuty
Dziś rano patrzę na swojego Smartwatch Amazfit a on pokazuje 10:15 czyli czas letni zamiast zimowy.
Myślę: "ale sprzęt do d...y jeśli nie obsługuję zmiany czasu, dobra przestawię ręcznie".
Ten model ma ekran dotykowy, więc trzeba go odblokować guzikiem. Robię to i na ekranie pojawia się 9:15.
Pierwszy wniosek, że moja interakcja wywołała aktualizację czasu, wiec nic nie muszę robić.
Mija chwila, ekran się blokuje podświetlenie gaśnie (LCD) i na ekranie widać 10:16, czyli znowu czas letni.
Odblokowuję ekran i znowu 9:16, mija chwila wraca 10:16 WTF.
I tak powtarzało się w kółko, aż faktycznie nastąpiła godzina 10:00 i zegarek zaczął pokazywać czas zimowy zarówno, w uśpieniu jak i z odblokowanym ekranem.
Tak się zastanawiam jaki to bug powoduje? Bo jakoś nie wyobrażam tego sobie jako celową funkcjonalność.
Strzelam, że inny kod obsługuje wyświetlanie czasu w trybie bezczynności i gdy ekran jest odblokowany (wrażliwy na dotyk).






- Rejestracja:ponad 6 lat
- Ostatnio:3 dni
- Lokalizacja:Silesia/Marki
- Postów:5505
if (someObject.getSomeValue().isPresent()) {
SomeValue someValue = someObject.getSomeValue().get();
//some other logic
}
Co tu według mnie jest WTF? po pierwsze isPresent/get
, ale to już klasyk. Według mnie WTF jest tu dwukrotne wywołanie getSomeValue()
. Ktoś powie że to tylko getter. No ale przecież mamy OOP czyli abstrakcję, hermetyzację, ukrywanie implementacji i nikt nam nie da żadnej gwarancji że ten getSomeValue
nie jest wyliczany w chory pokrętny sposób. Tak jak w tym wypadku :(




- Rejestracja:ponad 6 lat
- Ostatnio:około godziny
- Postów:46
public class Recipe {
public static List<Recipe> getRecipes = new ArrayList<>();
private String name;
private List<String> requirements;
private String output;
private double craftTime;
public void remove(){
//remove from memory
getRecipes.remove(this);
setName(null);
setRequirements(null);
setOutput(null);
setCraftTime(0);
}
}


- Rejestracja:około 6 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Warszawa 🐪
- Postów:1719
Nie tyle programistycznie co dokumentacja- bełkot https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/stereotype/Service.html
Najpierw odniesienie do książki, potem biznesowy opis... a na koniec
The value may indicate a suggestion for a logical component name, to be turned into a Spring bean in case of an autodetected component.
"Wartość może wskazywać na sugestię"... genialne!

- Rejestracja:prawie 6 lat
- Ostatnio:prawie 4 lata
- Lokalizacja:Warszawa
- Postów:2918
class FooBar{
private String value;
}
result = 31 * result + value == null ? 0 : value.hashCode();
to będzie to
result = (31 * result + value == null) ? 0 : value.hashCode();
czy może to
result = 31 * result + (value == null ? 0 : value.hashCode());
SonarLint czuwa, i dobrze, że czuwa.
Kto pamięta jak zachłanny jest ? i wychwytuje to w lot patrząc na sam kod?




null
.

- Rejestracja:ponad 13 lat
- Ostatnio:prawie 3 lata
Pisałem już o tym ale ciągle mnie to zadziwia.
Budżet w AWS, który po przekroczeniu... uwaga: wysyła maila (i na tym poprzestaje).
https://tenor.com/Foxb.gif
Ludzie nawet piszą poradniki jak sobie tego maila ustawić, to tak jakby się rozpisywać o tym jak szybko trzeba przechodzić przez autostradę.
https://dzone.com/articles/how-to-protect-yourself-from-unexpectedly-high-aws

- Rejestracja:ponad 11 lat
- Ostatnio:około 9 godzin
- Postów:619
vpiotr napisał(a):
Budżet w AWS, który po przekroczeniu... uwaga: wysyła maila (i na tym poprzestaje).
Co w tym dziwnego? Co mają zrobić? Wysłać specjalną delegacje? Zblokować? I np biznes ci staje bo się requesty skończyły?
Według mnie to na devie spoczywa obowiązek by sobie pilnował zużycia!
Co innego że ustawianie całego tego szajsu to patologia podobnie jak upload na google play czy adwordsy?




- Rejestracja:ponad 8 lat
- Ostatnio:około 3 godziny
hzmzp napisał(a):
vpiotr napisał(a):
Budżet w AWS, który po przekroczeniu... uwaga: wysyła maila (i na tym poprzestaje).
Co w tym dziwnego? Co mają zrobić? Wysłać specjalną delegacje? Zblokować? I np biznes ci staje bo się requesty skończyły?
Według mnie to na devie spoczywa obowiązek by sobie pilnował zużycia!Co innego że ustawianie całego tego szajsu to patologia podobnie jak upload na google play czy adwordsy?
No jak ustawiasz limit no to znaczy, ze chcesz zeby nie byl przekroczony.
A powiadomienie powinno byc wyslane odpowiednio wczesniej i wtedy najwyzej sobie limit zwiekszasz.


- Rejestracja:prawie 7 lat
- Ostatnio:ponad 3 lata
- Postów:3394
Aż trudno w to uwierzyć, ale nowy Facebook jest jeszcze głupszy od poprzedniego i jeszcze bardziej obciąża przeglądarkę.






- Rejestracja:około 6 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Warszawa 🐪
- Postów:1719
Właśnie rozkminiam opis skryptu w Lotusie. Jest tam funkcja o nazwie fTestRekImportSiteZglosz
. Oczy mnie bolą, głowa mnie boli, wszystko mnie boli od patrzenia :D


fGetPoczta
:D

- Rejestracja:ponad 22 lata
- Ostatnio:około 11 godzin
- Lokalizacja:Poznań
https://hub.docker.com/r/diginc/pi-hole-multiarch/tags
Obczajcie pole do filtrowania - podwójny WTF:
wpisanie każdego znaku odświeża widok wraz z polem do filtrowania, co gubi focus - trzeba klikać w nie po każdym znaku
wpiszcie coś, czego nie ma (asd
), znika input, trzeba kliknąć w zakładkę Tags
by zacząć od zera





- Rejestracja:ponad 8 lat
- Ostatnio:8 dni
- Postów:1265
Pierwszy WTF z pracy.
Analizujemy sobie przebiegi tras naszych samochodów testowych - są to ciągi lokalizacji geograficznych z GPSa. Każdy punkt ma współrzędne wyrażone w lokalnym układzie Gaussa-Krugera (czyli po prostu metryczne x, y, z). Sprawdzamy sobie czy kolejne punkty zbytnio nie skręcają względem poprzednich, czyli czy taka trasa nie jest zbytnio "połamana". Takie przypadki oznaczamy jako anomalie. Kod który je wykrywa wygląda mniej więcej tak:
boolean isAnomaly(Point firstVector, Point secondVector) {
Preconditions.checkArgument(firstVector.x != 0.0D || firstVector.y != 0.0D || secondVector.x != 0.0D || secondVector.y != 0.0D, "Cannot calculate angle for the same point");
double dotProduct = firstVector.x * secondVector.x + firstVector.y * secondVector.y;
double crossProduct = firstVector.x * secondVector.y - firstVector.y * secondVector.x;
double angle = Math.atan2(crossProduct, dotProduct);
return angle < -1.0D || angle > 1.0D;
}
Wartością graniczną złamania jak widać jest 1 radian.
Na produkcji wychodzi, że trasy się nie procesują, gdzieś coś wybucha. Tydzień analiz, przekopywania się przez różne miejsca, reverse engineeringu na nieudokumentowanych algorytmach. W końcu wniosek - trasy za bardzo się łamią, o wartość PI (czyli 180 stopni jakby ktoś nie pamiętał). Pytanie, czemu nie wykryto ich jako anomalie? Odpowiedź, bo analizowane współrzędne tych punktów były NaN
! Algorytm radośnie sprawdzał sobie czy NaN
nie jest równy 0.0, potem wyliczał iloczyny wektorowe i skalarne z NaN
ów, wyznaczał z nich atan2
a na końcu porównywał z liczbą. Tyle, że okazuje się, że wyrażenie NaN > 1.0D
(czy jakakolwiek inna liczba) to false
, czyli anomalii nie ma :)
Perfidne jest jeszcze to, skąd się tam w ogóle wzięły NaN
y. Otóż analizowane punkty są reprezentowane w różnych postaciach i potem rekonstruowane z jednej reprezentacji do innej. Fakt że kąt między 3ma punktami wynosił 180 stopni powodował potem dzielenie przez 0 przy parametrach rekonstrukcyjnych. Niestety anomalii szukaliśmy za późno, bo po rekonstrukcji. Innymi słowy bug był inteligentny, nie tylko wprowadził błąd do danych, ale też udało mu się oszukać metodę, która miała go wykryć.

- Rejestracja:ponad 11 lat
- Ostatnio:ponad rok
- Postów:607
Bardzo ważna dla klienta informacja! ^.-
- screenshot-20201106214257.png (190 KB) - ściągnięć: 8






- Rejestracja:ponad 7 lat
- Ostatnio:4 miesiące
- Postów:235
heheszki xD
if(ognisko.IsWygaszone()) {
Amen();
}


if(ognisko.IsWygaszone()) { Amen(); }



- Rejestracja:prawie 7 lat
- Ostatnio:ponad 3 lata
- Postów:3394
Zlecenie na Useme:
Motylek wyciągnięty z logo firmy i ożywiony jako reprezentant w korespondencji mailowej i na banerach
Chcielibyśmy komunikować się z klientami naszego sklepu przez motylka wyciągniętego z naszego logo



- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
Z serii pracuje z dzbanami
.
Była dziś w pracy prezentacja na temat one python to rule them all
. Generalnie chodzi o to, że udostępniamy użytkownikom sporo bibliotek i narzędzi opartych o pythona, a sami użytkownicy też bardzo często z pythona korzystają. Problem oczywiście jest taki, że z jednej strony py2 / py3, z drugiej strony jakieś stare nieaktualizowane biblioteki, z trzeciej strony niekompatybilne ze sobą biblioteki itd. No i ziomek generalnie miał wyjaśnić w czym problem i co można z tym zrobić, ale cała jego narracja była mniej wiecej no trudne, cienszko, może trzeba by jakoś odgórnie ustalić na poziomie organizacji z czego korzystamy...
. Na koniec ktoś zdziwiony (nie mniej niż ja xD) pyta go, czemu nie wspomniał nic o virtualenv albo dockerze, które generalnie całkiem nieźle radzą sobie z tymi problemami, a gość z rozbrajającą szczerością mówi, że on przygodę z wirtualizacja zakończył na vmware i nie lubi tych maszyn wirtualnych bo wolno działają...
Kurtyna.






- Rejestracja:ponad 21 lat
- Ostatnio:około 3 godziny
Apfel nie umi w polskie telefony.
No co ja niby mam podać w "Area co[de]"?
- a.png (44 KB) - ściągnięć: 5




- Rejestracja:około 6 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Warszawa 🐪
- Postów:1719
VBA to zuuuoooo. Chcąc rozbić długą linię na kilka, trzeba dodać na końcu linii _
, tj. spacja, podkreślnik (kładka, wichajster, jak zwał tak zwał)
Mam kawałek kodu
Class Myszykiszki
Private s As NotesSession
Public Sub New
Set Me.s = New NotesSession
End Sub
Nie dało się wymyślić normalnego konstruktora?! Brrr, już nawet C# wygląda lepiej.





- Rejestracja:prawie 7 lat
- Ostatnio:ponad 3 lata
- Postów:3394
Siedmioletni Google Earth 7.1.2.2041 przestał działać, bo coś tam się pozmieniało w formatach na serwerze.
I to jeszcze jakoś jestem w stanie zrozumieć, ale upośledziło też interfejs, nie ma dostępu do zapisanych lokacji itp. Przyjdzie mi pewnie z plików konfiguracyjnych je wydłubywać.




SELECT DISTINCT
, który pod spodem wykonuje sort. Przy czym zrobiłem to na tabeli ~1TB, co w efekcie zatkało serwer (8GB RAM). Aplikacja stanęła, ale nie było widać żadnego błędu.