Programistyczne WTF jakie Was spotkały

Programistyczne WTF jakie Was spotkały
KR
Moderator
  • Rejestracja:prawie 21 lat
  • Ostatnio:około 19 godzin
  • Postów:2964
10

MongoDB jednak mnie zadziwia.
Za dużo błędów w logach leci? To odfiltrujmy je losowo:

https://github.com/mongodb/mongo-java-driver/blob/1d2e6faa80aeb5287a26d0348f18f4b51d566759/src/main/com/mongodb/ConnectionStatus.java#L213

Muszę to dopisać do mojej listy innowacyjnego użycia random().
Na liście mam już Thread.sleep(random) do leczenia problemów z wielowątkowością.

dzek69
było zdaje się :)
KR
Synchronizację wątków sleepem kiedyś tu wrzucałem.
MO
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 5 godzin
2

ej Eclipse a mój KOD to gdzie, PIS pogonił?

d625278ce6.png

edytowany 1x, ostatnio: moskitek
Zobacz pozostałe 2 komentarze
SW
@moskitek co to za konwencja nazewnicza z tym 'T' - z deplhi? :P
dzek69
Wtrącenie polityczne zupełnie bez sensu, bo tylko utrudniło zorientowanie się o co w tym chodzi ;]
MO
@Swr - otwarte hashowanie w javie bez boxingu, no niestety potrzebny lib - trove4j @dzek69 - akurat mi się tak skojażyło, a że trudniej się zorientować - a myślisz ile mi w nocy zajęło zorientowanie się dlaczego mogę sobie definiować zmienne "poza" klasą i to się kompiluje? Pierwsza myśl że umknął mi jakiś ficzer javy 8 :D
SP
public int size() == pis ;p
MO
oj to już przekaz podprogowy....
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
20
Kopiuj
moment("1.1.2001", "YYYY-MM-DD").isValid()
true
moment("1.13.2001", "YYYY-MM-DD").isValid()
false
moment("13.1.2001", "YYYY-MM-DD").isValid()
true
moment("1.13.2001", "YYYY-MM-DD").isValid()
false
moment("1.13.2001", "YYYY-DD-DD").isValid()
true
moment("1.13.2001", "YYYY-DD-MM").isValid()
false

I to jest niby najlepsza biblioteka do obsługi dat w JanuszSkrypcie.


Po dopracowaniu rozwiązania każdy będzie mógł założyć własny drzewiasty wątek.
Zobacz pozostałe 3 komentarze
dzek69
Z jednej strony fajnie jak libka wybacza małe błędy, ale jak olewa wszystko i próbuje na siłę wszystko naprawić to jest jeszcze gorzej. Tu zachowanie bardzo przypomina to z PHP, gdzie mktime przyjmie prawie wszystko i zrobi z tego datę.
Marooned
So, I have to pass third parameter with constant value equals 'true' to force moment.js to use the second parameter, otherwise second parameter is not used? :D
Marooned
Komentarz z podlinkowanej strony, rozbawił mnie.
DE
  • Rejestracja:ponad 9 lat
  • Ostatnio:10 miesięcy
  • Postów:1788
7
Kopiuj
// Jeżeli pole lastname jest puste wróć ze statusem -10
		if (!trim($inp['lastname'])) return -10;
//		if (empty($inp['tel'][0])) return -7;
		// if (!empty($inp['nip']) && !eregi("^[0-9]{10}$", $inp['nip'])) return -11;
        if (!empty($inp['pesel']) && !eregi("^[0-9]{11}$", $inp['pesel'])) return -12;

// (...)
if (empty($crm_user_id)) {
				return -666;
			}
if($stmt->execute()) {
				$customerId = $this->system->pdo->lastInsertID('customers_id_seq');
			} else {
				return -665;
			}

Dobry patent :D metoda zwraca - 11 i od razu wiem, że brakuje nipu, a jak brakuje user'a to zwraca samego szatana.

edytowany 3x, ostatnio: Desu
Zobacz pozostałe 2 komentarze
dzek69
eregi. Jak zaczynałem się uczyć php 10 lat temu to już wtedy było deprecated. Wciąż tego nie wypieprzyli w cholerę?
dzek69
Miałem przyjemność pracować z kodem, gdzie ktoś wpadł na identyczny pomysł z ujemnymi liczbami jako statusy akcji.
DE
@dzek69 tutaj się nie da niczego ruszyć. Jenga driven development pełną gębą
dzek69
Wszystko się da :) Utrzymywałem taki system przez ponad rok, bo na początku myślałem, że tam tylko małe zmiany/poprawki będą i mi dadzą inny projekt :p Potem powiedziałem, że odchodzę z firmy, chyba że zdecydują się porzucić to g**no i napisać coś od zera (co sugerowałem mniej więcej w czwartym miesiącu tam jak zorientowałem się, że to jednak nie tylko na chwilę) :p
DE
No ba, wiem że się da, ale jak patrzę na kontroler, który u nas to zwykły plik np. dane_klienta.php w którym zamiast klasy jest switch:case z zagnieżdzonymi ifami to mi sie odechciewa :D
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 godziny
0

Dlaczego position: fixed to zuo i nie zmienię zdania?

wtf.png

  • wtf.png (200 KB) - ściągnięć: 115
Zobacz pozostałe 16 komentarzy
Azarien
@aurel: jak już napisałem, chodzi o ideę sticky headera (niezależnie od użytej metody), a nie konkretną składnię.
aurel
Rozumiem, ale sama idea IMHO nie jest zła - używam sticky headera na 4p. Po prostu złe jest robienie go na wysokość połowy ekranu... Podręczne menu z linkami to przydatna rzecz.
Azarien
nie jest zła jeśli da się wyłączyć, wtedy denerwuje tylko za pierwszym razem ;-)
stasinek
np. allegro.pl o ile byłoby szybciej gdyby pewne elementy były umieszczone na panelu position fixed typu: filtry wyników wyszukiwania, albo numery stron, wybór sposobu sortowania. W pewnych sytuacjach możliwość przypięcia ich na stałe znacznie przyspieszyła by.. rolkowanie rolkowanie rolkowanie... by przejść do strony z wynikami bardziej adekwatynymi do potrzeb(np. inny zakres cen bez ustawiania sztywnego filtra) Na facebooku: ile byłoby łatwiej gdyby istniał fixed panel z możliwością wybrania zakresu dat i czasu, dobrze że chociaż notyfikacje są fixed ;)
Azarien
@stasinek: kiedyś Allegro było lepsze.
DE
  • Rejestracja:ponad 9 lat
  • Ostatnio:10 miesięcy
  • Postów:1788
6

Tak wielkiego kloca to jeszcze w swojej rocznej karierze nie widziałem.

#clean_code

clean_code.jpg

Zobacz pozostałe 2 komentarze
Sarrus
No nie zazdroszczę. Ja miałem do czynienia z kilkoma "samplami" do pewnych SDK/API. To jest dopiero miazga. Klasa na jakieś 9k linii no i fajnie ;)
dzek69
o, znam gościa, który tak pisze, masakra :D
kate87
PiEjczPi brrrrrrry.
DE
@dzek69 ten sam gość po całym projekcie rozsiał $_SESSION. Jak chce użyć w cronie jakiegos "modelu" to sie zaczyna zabawa :D
vpiotr
Tak wygląda zderzenie profesjonalisty z kodem lidera jednoosobowej grupy. "case 3", 'NULL'/'null' itd - to się kwalifikuje do refaktoringu. Tylko jak to wytłumaczyć autorowi kodu?
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:2 minuty
13

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
Zobacz pozostały 1 komentarz
Azarien
najbardziej chory interfejs miały stare, tekstowe wersje programu MAK do wyszukiwania książek w bibliotekach.
vpiotr
nie wierzę. Może soft oddany 1 kwietnia?
Riddle
Można jakoś odnowić link?
dam1an
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa
  • Postów:1589
0

617ba64c70.png
b55264636b.png
Na wyszukiwarce cena 5000zł, wchodzę na ofertę a tam cena już 10000zł
W pierwszej chwili wtf, co się dzieje? Po zastanowieniu zrozumiałem że prawdopodobnie cena w otomoto się zmieniła a do allegro nie poszedł jeszcze update, nic szczególnego. Z tym że to było tydzień temu, dziś natknąłem się jeszcze raz na tą samą ofertę, tym razem postanowiłem to uwiecznić :D
http://allegro.pl/passat-b5-1996-2000-12763?order=p&a_enum%5B16%5D%5B4%5D=4&price_to=5500&price_from=4000&state=7

flowCRANE
Może w widoku listy aukcji podają kwotę bez kosztów przesyłki? ;P
dam1an
Reklamę zrobiłem to koleś sprzedał :D
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
0
Kopiuj
var polishCultureExpression = Expression.Constant(new CultureInfo("en-US"));

Moje własne. :)

Dorabianie globalizacji do istniejącej aplikacji boli.


Po dopracowaniu rozwiązania każdy będzie mógł założyć własny drzewiasty wątek.
msm
Czyli to bardziej "programistyczne hacki jakie was spotkały" zamiast WTF.
DE
  • Rejestracja:ponad 9 lat
  • Ostatnio:10 miesięcy
  • Postów:1788
6

Wklejałem już kilka postów z obecnego systemu z którym mam wątpliwą przyjemność pracować, ale teraz już przeszli samych siebie.

Mam za zadanie zrobić import inwestycji. Ogólnie cały proces składa się z 8 kroków. Wszystko już jest zakodowane wystarczy do odpowiednich metod przekazać odpowiednią częśc json'a którego będę dostawał z zewnątrz. Myślę sobie nic trudnego. Gów.. prawda.

Całość owinąłem transakcją z wiadomych przyczyn, Jaja się zaczęły, gdy w pewnym momencie każde zapytanie do samego końca zwracało mi false. WTF myślę sobie, przecież jest try catch, nie wali exception... Co się dzieje? Okazało się, że ktoś sobie ustawił w PDO, że w momencie, w którym będzie "syntax error", czyli jakiś dziwny update na kolumnie która nie istnieje, to po prostu zostanie zwrócony false, transakcja rollbackowana, a do konca każde zapytanie zwraca false. Tyle, że nie rzuca exception i udajemy, że nic się nie stało.

Kolejny WTF nastąpił w momencie, w którym w pewnym momencie po prostu zawieszał mi się skrypt. Po przeczytaniu logów okazało się, że inne połączenie z bazą próbuje wykonać update na tej samej tabeli. Ponieważ jak już mówiłem owinięte to było transakcją i tabela była lockowana, to zapytanie się nie mogło wykonać i wszystko się wieszało. Pozmieniałem część zapytan, tak żęby używały jednego połączenia i myślę sobie, że już działa.

Jednak to nie koniec. Okazało się, że jak zrobie transaction rollback to część zapisanych informacji pozostaje. WTF. W tym momencie zdałem sobie sprawę, że po całym systemie rozsiane jest kolejne połączenie z baza danych tzw. $this->pdo2 (pierwsze połączenie $this->pdo, stąd ta 2 :D), które niezależnie od transakcji dodanie sobie dane do innych tabelek (których dziwnym zbiegiem okoliczności nie rusza połączenie z transakcja, więc jest ok). Oczywiście metody wyglądają jak te kilka postów wyżej i mają setki linii. W każdej metodzie czasami używanę są 3 połączenia do bazy równolegle. Dodatkowo używane są globale $_SESSION, $_REQUEST itd, więc to kolejna mina gdy chcę to wykonać za pomocą crona.

user image

edytowany 4x, ostatnio: Desu
Sarrus
Łączymy się z Tobą w bólu...
msm
Witaj w świecie programistów. :P
DE
Myślałem, że na początku będzie łagodniej :D
somekind
Na początku dostajesz wpierdol od życia, później jest tylko gorzej, a na końcu zakładasz smutnego bloga o programowaniu.
Zellus
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 4 lata
  • Lokalizacja:Wrocław
  • Postów:474
1

Wyobraźmy sobie że mamy wielokrotnie zagnieżdzonego jsona. Teraz chcemy się dostać w JavaScript do jakiegoś szczegółowego parametru np.

Kopiuj
obj.sth.sub[1].sthElse.anything[1].property.value

Ponieważ występuje ryzyko rzucenia wyjątkiem("Cannot read property X of undefined") właśnie widzę kod:

Kopiuj
return obj
&& obj.sth
&& obj.sth[1]
&& obj.sth[1].sthElse
&& obj.sth[1].sthElse.anything
&& obj.sth[1].sthElse.anything[1]
&& obj.sth[1].sthElse.anything[1].property
&& obj.sth[1].sthElse.anything[1].property.value === valueToCompare;

Przynajmniej wyjątkiem nie rzuci...
Btw. I niech mi ktoś wytłumaczy, jak osoba która od blisko roku pracuje w projekcie, gdzie takie struktury wykorzystywane są na każdym kroku, nie wie, że mamy do obsługi takich przypadków wydzieloną bibliotekę...

Zobacz pozostałe 25 komentarzy
Riddle
Nie piszę w Scali więc się nie wypowiem.
Koziołek
Nie ma być takiej zmiennej. Null pochodzi z czasów gdy dynamiczna alokacja pamięci była rzeczą czysto abstrakcyjną i pomiędzy zdefiniowaniem, a przypisaniem wartości były setki kart perforowanych. W językach wysokiego poziomu nie ma potrzeby użycia null. Na niskim poziomie WIEMY, że można definiować zmienne z wartością domyślną, która może być potraktowana jako element neutralny (jak w monoidzie).
Azarien
@TomRiddle: momencik. mówisz że dwa rodzaje typów. w pierwszym nigdy nie ma null, a w drugim może być null. no to jak może, to może. a co do wartości zmiennej niezainicjowanej, to w wielu językach zmienna ma wartość nieokreśloną (przypadkową). od języka zależy, czy użycie niezainicjowanej zmiennej skutkuje błędem kompilacji (Kotlin do tej grupy należy), czy zachowaniem niezdefiniowanym.
Riddle
Nie nie, nie taki był mój zamysł. Jedyne co usiłuję teraz obronić to to że nulle są koniecznie. To co powiedziałem że raz są a raz nie są wywnioskowałem z artykułu podlinkowanego przez Koziołek.
Olamagato
@TomRiddle - Nulle są crapem z jednego powodu: ponieważ jest to jedyna wartość w Javie, którą da się przypisać do referencji dowolnego typu. W efekcie błąd polegający na przypisaniu referencji do jakiegoś typu obiektu zmiennej referencyjnej do innego typu obiektu (choćby pośrednio - poprzez bazę, xmla/jsona lub casta) może pozostać niezauważonym błędem tak długo jak długo wartość ta jest nullem. Jednak w momencie w którym przestanie nim być możemy otrzymać paskudny błąd bardzo stary i rzadki błąd oraz mnóstwo nagromadzonych latami "zależności, które zawsze były ok".
DE
  • Rejestracja:ponad 9 lat
  • Ostatnio:10 miesięcy
  • Postów:1788
4

Rozwiązuje sobie zadanka na uczelnie, aż tu nagle taki babol. Seriously PJWSTK?

Implementacja klasy Hailstone

może zawierać statyczną klasę wewnętrzną, jeśli będzie potrzebna;
nie może tworzyć żadnych tablic, ani używać żadnych kolekcji z bibliotek Jawy.

user image

edytowany 4x, ostatnio: Desu
Riddle
A są klasy statyczne zewnętrzne? xd
Dawid90dd
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 6 lat
  • Postów:196
0
Kopiuj
    //<editor-fold defaultstate="collapsed" desc="TESTS">
    BOOST_AUTO_TEST_SUITE(XormagState)
         BOOST_AUTO_TEST_CASE(fn_test_a_function) {
            //Here you go now you can test!
        } 
    BOOST_AUTO_TEST_SUITE_END()
    //</editor-fold> 

Aż zrobiłem sobie makra w netbeansie, dodające odpowiednie zdania

edytowany 1x, ostatnio: Dawid90dd
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:7 miesięcy
  • Postów:6610
5

Ostatnio mnie taka kapcza przywitała i powiem szczerze, że nie wiedziałem co wpisać...

Captcha WTF.png


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
AF
A to nie działa tak, że trzeba kliknąć dowolną opcję, a dopiero po tym pojawi się tekst do wpisania?
caer
dokładnie, to wbudowana ankieta
abrakadaber
abrakadaber
ale tego nie dało się kliknąć
AF
Może Twoja przeglądarka nie ogarnęła, ja wiele razy rozwiązywałem taką captchę i nie było problemów z przyciskami.
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 godziny
8

Parę dni temu wyszło GCC 6.1.0 pod DOS-a.
Jednym z nowych ficzerów są ostrzeżenia o niewłaściwym formatowaniu kodu.

Skompilowałem grę Quake (oryginalna gra była wydana w 1996 pod DOS-a)

Kopiuj
snd_gus.c: In function 'ClearGf1Ints':
snd_gus.c:652:4: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
    for (i=0;i<32;i++);
    ^~~
snd_gus.c:653:7: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'for'
       GetGf18(GET_IRQV);
       ^~~~~~~

Inkryminowany kod wygląda tak:

Kopiuj
   for (i=0;i<32;i++);
      GetGf18(GET_IRQV);
Zobacz pozostały 1 komentarz
no_solution_found
potrzebowałem chwilkę by to zauważyć :)
darkbit
heh, kolega stracił pół dnia kilka lat temu na szukanie takiego buga u siebie w kodzie. Tyle, że w if'ie :)
pylaochos
Widzę, że IdSoftware dbało kiedyś motzno o performance : P Dobrze, że większość kompilatorów po włączeniu optymalizacji wywala "takie cuś".
wasiu
Czy tylko ja to odczytałem, że do 32gich urodzin miałem wyrywać 18stki?
darkbit
Nie, pierwsze 32 wyrwane, to 18stki :P
no_solution_found
  • Rejestracja:prawie 18 lat
  • Ostatnio:około 10 godzin
0

Nie wiem czy to wina JS, embera czy mojej niewiedzy, ale we własnym RESTSerializer nadpisuję metodę serializeIntoHash, gdyż do zapytań RESTowych jest dodawana przestrzeń, a jej nie chcę czyli zamiast

Kopiuj
 
{
  attr: "value",
  attr2: "value"
}

jest robione:

Kopiuj
{
  nazwaModelu: {
    attr: "value",
    attr2: "value"
  }
}

Metoda oryginalnie wygląda tak:

Kopiuj
serializeIntoHash(hash, typeClass, snapshot, options) {
    var normalizedRootKey = this.payloadKeyFromModelName(typeClass.modelName);
    hash[normalizedRootKey] = this.serialize(snapshot, options);
  },

gdzie w normalizedRootKey znajduje się ta nazwaModelu. No to zmodyfikowałem funkcję tak

Kopiuj
  serializeIntoHash(hash, typeClass, snapshot, options) {
    var normalizedRootKey = this.payloadKeyFromModelName(typeClass.modelName);
    hash = this.serialize(snapshot, options);
  },

I teraz do zapytania leci samo {}


hauleth
To Twoja wina. Pomyśl co modyfikujesz jak zapisujesz do hash[value] a do hash. Na co będzie wskazywał obiekt hash. Musisz albo przepisać obiekt do hash albo zamiast tego nadpisać metodę serialize. https://guides.emberjs.com/v2.5.0/models/customizing-serializers/
1
Kopiuj
<?php
 
$count = '9C6';
for ($i = 0; $i < 20; $i++) {
    echo $count++ . "\n";
} 
?>
hzmzp
Normalka $count rzutowanie do inta i dodajemy i do echo z powrotem :D magiczny PHP
no_solution_found
zadziała jak dasz np $count = '8x9C6'; poza tym WTF to jest trzymanie wartości w $count w takiej potaci
DE
  • Rejestracja:ponad 9 lat
  • Ostatnio:10 miesięcy
  • Postów:1788
3

Tak dla pewności :D

Kopiuj
  echo json_encode($ret);
  die;
  exit();
  break;
default:
  break;
hzmzp
i niby w jakimś sensownym kodzie to leży?
DE
Niestety tak wygląda kod systemu crm pewnej dużej firmy. Nie mam pojęcia jak to jeszcze się trzyma.
2
DE
  • Rejestracja:ponad 9 lat
  • Ostatnio:10 miesięcy
  • Postów:1788
3

Co... Jak... Dlaczego?

Selection_001.png

Kopiuj
<td width="70%">
   <input id="tel" onkeyup="return autoTab(this, 2, event);" onblur="phoneValidation('phone', this.value, tel1.value, tel2.value, tel3.value);" size="2" maxlength="2" name="tel[0]" value="" style="width:20px; float:left;" type="text" disabled="disabled">
   <input id="tel1" onkeyup="return autoTab(this, 3, event);" onblur="phoneValidation('phone', tel.value, this.value, tel2.value, tel3.value);" size="3" maxlength="3" name="tel[1]" value="" style="width:30px; float:left; margin-left:3px" type="text" disabled="disabled">
   <input id="tel2" onkeyup="return autoTab(this, 2, event);" onblur="phoneValidation('phone', tel.value, tel1.value, this.value, tel3.value);" size="2" maxlength="2" name="tel[2]" value="" style="width:20px; float:left; margin-left:3px" type="text" disabled="disabled">
   <input id="tel3" onkeyup="return autoTab(this, 2, event);" onblur="phoneValidation('phone', tel.value, tel1.value, tel2.value, this.value);" size="2" maxlength="2" name="tel[3]" value="" style="width:20px; float:left; margin-left:3px" type="text" disabled="disabled">
   <span style="margin-left: 10px;">hhhhhhhhh</span>
</td>
Kopiuj
onblur="phoneValidation('phone', this.value, tel1.value, tel2.value, tel3.value);"
Kopiuj
function phoneValidation(kind, part1, part2, part3, part4) {
    {/literal}
    {if !$phoneValid} 
        {* nie sprawdzamy nr telefonu dla tego użytkownika *}
        return true; 
    {/if}
    {literal}
    var number = null;
    if (kind == 'phone' && part1.length == 2 && part2.length == 3 && part3.length == 2 && part4.length == 2) {
        number = new Array(part1 , part2, part3, part4);
    }
    else if (kind == 'cellphone' && part1.length == 3 && part2.length == 3 && part3.length == 3) {
        number = new Array(part1 , part2, part3);
    }
    // .....
}
Riddle
O co chodzi z tym hhhhhhhhhhh?
hzmzp
Debugger i jazda zaczytane skrypty, eventy, etc
DE
@TomRiddle tak działa phoneValidation :D hhhhhhhh to po prostu nr telefonu, który wyświetla się obok inputa po wpisaniu, bo przecież po co zrobić populate.
2
Kopiuj
      
      Loader loader1 = new Loader();
      int num1 = 1;
      loader1.WithExtra = num1 != 0;
      int num2 = 1;
      loader1.WithUI = num2 != 0;
      Loader loader2 = loader1;
Olamagato
  • Rejestracja:ponad 16 lat
  • Ostatnio:2 dni
  • Lokalizacja:Polska, Warszawa
  • Postów:1058
0

Samsung S4 Mini. 7 godzin drobiazgowej migracji ze starego telefonu pod androidem przez wifi, wyłączanie śmieci samsunga i google, kopiowanie danych...
Wszystko po to, żeby po włożeniu właściwej karty sim oraz sd z poprzedniego ekrany zostały zresetowane i pokazały się jakieś trzyekranowe ustawienia dla debili, a cały pusty syf nadgrał się na konto google... !@##$$%^


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?
Zobacz pozostałe 6 komentarzy
Olamagato
@dzek69 - android jawnie trzyma konkretne dane aplikacji na karcie i to raportuje. Trzyma też apk jeżeli user jawnie za pomocą tegoż systemu sobie je tam przeniesie. Jaki jednak sens jest w trzymaniu tam danych ekranów i systemu, które w przypadku awarii z założenia wymiennej pamięci masowej mogą tak go rozsypać, że stanie się funkcjonalnie bezużyteczny? Przecież tylko debil tak projektuje system. Nawet Windows nie trzyma takich informacji na czymkolwiek innym niż dysk systemowy. Takie działanie to nic innego jak furtka dla wirusów i innego syfu.
dzek69
Nawet Windows nie trzyma takich informacji na czymkolwiek innym niż dysk systemowy. xDDDD żarcik roku, a dopiero maj. Nieraz znajdowałem jakieś pliki inf, foldery o nazwie wyglądającej jak md5 z czegoś oraz oczywiście podobne nazwane instalki exe/msi - w korzeniu partycji D: (ficzny drugi dysk, nie partycja pierwszego dysku). Najczęściej biorą się one z Office - więc nie jest to bezpośrednio Windows, było też coś z Windows Update zdaje się - ale też nie sprawdzałem wszystkich - jednak zawsze było widać, że to śmiecie Microsoftu.
dzek69
Ostatnio skasowałem takie pliki miesiąc temu, teraz mam Linuksa jako główny system, na Win tylko gram, więc mała szansa, że szybko na to trafię jeszcze raz - bym Ci pokazał.
dzek69
O, uchował się pusty folder msdownld.tmp na tejże partycji ;) http://s32.postimg.org/k71v22k7p/screenshot_area_2016_05_16_181723.png
Olamagato
@dzek69 - To, że Winda tworzy bajzel instalując swoje śmieci z internetu, to nie jest jeszcze trzymaniem informacji systemowych czy konfiguracji. Po prostu windozowe rzeczy szukają największej lub wystarczająco dużej ilości wolnego miejsca na dowolnej partycji. Po instalacji już więcej z tego nie korzystają. Są to śmieci, których po prostu nie kasują bo jakiś koleś kiedyś spieprzył jakąś poprawkę (nie czyści też zresztą folderów temp z tego samego powodu). Tak samo też potraktowałem katalog Android na flashu - jako coś co nie może spieprzyć gui systemu/konfiguracji.
NE
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 8 lat
  • Postów:186
8

(konto nieaktywne)
no_solution_found
  • Rejestracja:prawie 18 lat
  • Ostatnio:około 10 godzin
1

Znalezione w źródłach Symfony

// HHVM does not trigger any warnings and let exceptions
// thrown from a JsonSerializable object pass through.
// If only PHP did the same...


dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:2 dni
  • Lokalizacja:Rzeszów
5

Prawdziwa perełka z PHP:

Kopiuj
$t1 = (float) ($aResult['total_odsetki'] + $aResult['total_kapital']);
$t2 = (float) $aResult['wartosc'];

// $t1 i $t2 zostały castowane na floaty

var_dump($t1); // float 320000
var_dump($t2); // float 320000

// UWAGA, to jest LUŹNE porównanie, poprzez `==`, a nie `===`
var_dump($t1==$t2); // boolean false [!]

/* -------------------------------- */

$t1 = (string) ($aResult['total_odsetki'] + $aResult['total_kapital']);
$t2 = (string) $aResult['wartosc'];

var_dump($t1); // string '320000' (length=6)
var_dump($t2); // string '320000.00' (length=9)

// LUŹNE porównanie
var_dump($t1==$t2); // boolean true [!]

WHAT
THE
ACTUAL
FUCK,
PHP?

Dodam, że nie posiadam już tego kodu, a nie pamiętam jakich typów były dane w $aResult, niemniej - jakieby one nie były, to jednak scastowanie zmiennych na float, które w var_dumpie wyrzuciły to samo powinno dać się porównać, PRZYNAJMNIEJ luźno, w dodatku cast na stringa, który spowodował dopisanie dwóch miejsc po przecinku też jest rozczulający. Zapewne jest to jakiś błąd zaokrągleń.


AF
WTF to porównywanie floatów przez ==, a nie z jakimś epsilonem. W innych językach będziesz miał ten sam problem: https://dotnetfiddle.net/XTNFTc
vpiotr
$t1 lub $t2 to wartość typu '320000.000000000001' - przy wyświetlaniu zaokrąglane, przy porównaniu - nie. Ot i cała tajemnica. Tak samo jest w innych językach programowania. Rozwiązaniem jest praca na integerach (liczba groszy).
dzek69
var_dump powinien pokazać każdą niedokładność, jeżeli tylko ma zastosowanie
1

"dziwne, u mnie działa"
zresztą bez przykładowych danych wejściowych i jakiegoś zaokrąglenia na floatach to możemy tak sobie porównywać cokolwiek

Kopiuj
float(320000)
float(320000)
bool(true) // loose comparison
bool(true)  // strict comparison
string(6) "320000"
string(9) "320000.00"
bool(true) // loose comparison
bool(false) // strict comparison
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:2 dni
  • Lokalizacja:Rzeszów
0

Jak ja sobie na sztywno wpisałem 320000 pod $t1 i $t2 to oczywiście działa(ło) :) Niestety nie miałem wtedy czasu na szczegółową analizę - w którym momencie się to rozpieprza, ale na pewno PHP w tych zmiennych trzymał sobie coś magicznego, wynik sumowania konkretnych danych, a nie "zwykłe" 320000, stąd też wynik, który nie ma sensu.

Zresztą nawet gdyby ten błąd był jawny, i 320000 nie byłoby równe 320000 ZAWSZE, nawet przy prostym przypisaniu - to przecież do dziś z pewnością byłoby to poprawione :) Ja wtedy na 5.2.X, albo 5.3.X siedziałem, tyle jestem pewien.

Wiem, że już nigdy tego nie powtórzę, nawet nie zamierzam próbować (kod niestety nie należy do mnie, więc go po prostu nie zdobędę), wkleiłem jako ciekawostkę. **Najważniejsze w tym poście nie jest to przy jakich danych to występuje, tylko, że to nigdy nie powinno mieć miejsca. Cast był, var_dump jasno pokazywał, co w zmiennych siedzi, a PHP pomimo swojego porównywania "z d**y" nie potrafił tego poprawnie porównać nawet luźno".

A gdybyś się zastanawiał skąd to nagle wziąłem - w notatkach miałem logi z kanału IRC na który lata temu wkleiłem ten przypadek.


DibbyDum
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Polska, Kraków
3

o.O

Kopiuj
GC.GetTotalMemory(false);
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.GetTotalMemory(true);
KillExcel();

Yubby dibby dibby dibby dibby dibby dibby dum..
edytowany 1x, ostatnio: DibbyDum
no_solution_found
  • Rejestracja:prawie 18 lat
  • Ostatnio:około 10 godzin
0

Kiedyś pracowałem przy projekcie CRM. Przejąłem go od innych programistów. Po pewnym czasie jedna z zakładek zaczęła przymulać. Zbadałem sprawę. Okazało się, że na tej podstronie, gdzie była tabelka były wyświetlane tylko 30 rekordów, ale pobierane były wszystkie 300 i dla każdego z tych rekordów było wykonywane dodatkowe 3-4 zapytania do bazy (z JOINami i GROUP BY) co łącznie dawało około 1 tyś zapytań na wyświetlenie! Jak rekordów było mało, to problemu jeszcze nie było, ale jak ich przybywało, to zaczynały się jazdy. Parę godzin pracy i doszedłem do kilkudziesięciu zapytań, co w porównaniu do całego systemu nie było wiele :)


dzek69
"mó"j rekord (w cudzym kodzie) to ok 8 tys zapytań, najdłuższy czas wykonywania "zwykłej" strony to 45 sekund, a "najlepszy" projekt bazy danych zajmował ok 500MB danych, które dało się zmieścić potem w 32MB (bez ścisłej optymalizacji pól tabel itd)
Pipes
"Mój" rekord to pętla w widoku na przeszło 1000 linii, w których odpalane są stored procedury i kilkanaście zapytań.
no_solution_found
tutaj tak zrobili, bo dla każdego rekordu były obliczane jakieś wartości na podstawie tych dodatkowych zapytań, które później były wykorzystane w filtrowaniu :) więc była jedna wielka pętla, w której były te zapytania i dla tych zapytań były kolejne pętle :)
wasiu
Moja perełka to ~750 zapytań przy wyświetleniu strony z podstawowymi informacjami o kliencie i 10 ostatnich zamówień (6 wartości w wierszu) :) Takie perełki robią Holenderscy programiści z pensją jedyne 37tys zł brutto :)
Zellus
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 4 lata
  • Lokalizacja:Wrocław
  • Postów:474
5

https://support.microsoft.com/en-us/kb/3053711

In Windows 8.1, when the user account name contains the word "user", intermittently you will find the process taskhost.exe keeps consuming high CPU percentage.

Przydałaby się jeszcze informacja, czemu tak się dzieje :) chętnie bym poczytał

Riddle
Powinno być "an interesting" :D
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)