Zdjęcie w tle
vrkr

vrkr

Osobistość
  • 362wpisy
  • 906komentarzy

ad mortem defecatam

vrkr

@trixx.420 najlepszy plan

Zaloguj się aby komentować

nyszom

Takie wieczorki już by były, gdyby pogoda była normalna w tym roku

Zaloguj się aby komentować

Lubiepatrzec

... ktoś nie śpi, aby spać mógł ktoś.

Zaloguj się aby komentować

Dochodzi 12:00, może pora na wyborczą #listaobecnosci


#wybory #polityka #ankieta

Czy byłeś na wyborach?

221 Głosów
vrkr

Btw. nie dałem opcji "Sprawdzam", bo raz oddanego głosu w ankiecie nie można zmienić, a ciekawość to pierwszy stopień do piekła i wypaczania statystyk

Zaloguj się aby komentować

mannoroth

@vrkr niech się bawi dłońmi póki ma całe xD

Komenda_Miejska_Polucji

@mannoroth a nie odwrotnie przypadkiem? XDDDDDDDDDDDDDDDDD

Zaloguj się aby komentować

Zaloguj się aby komentować

Zaloguj się aby komentować

Zaloguj się aby komentować

koszotorobur

@vrkr - za duck.ai:

Oto lista "głupich" rzeczy związanych z operatorami porównywania w JavaScript:


1. **Używanie `==` zamiast `===`**: Operator `==` wykonuje konwersję typów, co może prowadzić do nieoczekiwanych wyników. Zawsze lepiej używać `===`, aby porównywać zarówno wartość, jak i typ.


2. **Porównywanie różnych typów bez zrozumienia**: Porównywanie wartości różnych typów (np. liczby i stringi) może prowadzić do zaskakujących wyników, np. `0 == '0'` zwraca `true`, ale `0 === '0'` zwraca `false`.


3. **Używanie `!=` zamiast `!==`**: Podobnie jak w przypadku `==`, operator `!=` wykonuje konwersję typów, co może prowadzić do błędów. Zawsze lepiej używać `!==`.


4. **Porównywanie obiektów**: Porównywanie obiektów za pomocą operatorów porównania (np. `obj1 == obj2`) porównuje referencje, a nie zawartość obiektów, co może prowadzić do nieporozumień.


5. **Używanie `Object.is()` bez zrozumienia**: `Object.is()` ma swoje specyficzne zasady porównywania (np. `NaN` jest równe `NaN`, a `-0` nie jest równe `+0`), co może być mylące.


6. **Porównywanie wartości `null` i `undefined`**: Używanie `==` do porównania `null` i `undefined` zwraca `true`, co może prowadzić do niejasności, gdy nie jest to zamierzone.


7. **Zbyt skomplikowane wyrażenia porównawcze**: Tworzenie złożonych wyrażeń porównawczych, które są trudne do zrozumienia, może prowadzić do błędów i utrudniać czytelność kodu.


8. **Ignorowanie kontekstu logicznego**: Używanie operatorów porównania w kontekście logicznym (np. w instrukcjach warunkowych) bez zrozumienia, jak działają, może prowadzić do błędnych założeń.


9. **Porównywanie z `NaN`**: `NaN` nie jest równe żadnej wartości, w tym samemu sobie, co może prowadzić do nieoczekiwanych wyników w porównaniach.


10. **Używanie operatorów porównania w pętlach bez zrozumienia**: Używanie operatorów porównania w pętlach (np. `for`) bez zrozumienia ich działania może prowadzić do nieskończonych pętli lub błędów logicznych.


Unikanie tych pułapek może pomóc w pisaniu bardziej niezawodnego i przewidywalnego kodu w JavaScript.

koszotorobur

@vrkr - pociągnąłem tylko temat nie psując zabawy

nbzwdsdzbcps

@vrkr Tak na oko to obstawiłbym C. Myślę, że A zwraca true, B jest ciekawszym przypadkiem bo bez podania argumentów Math.min() będzie infinity, a Math.max() będzie -infinity także również będzie to true. NaN nie jest równy innemu obiektowi NaN i dalej nie muszę myśleć.

AureliaNova

@nbzwdsdzbcps jeszcze bym obstawiał, że wszystkie są prawdziwe, ale c wygląda zbyt logicznie jak na js XD

vrkr

@nbzwdsdzbcps ( ͡° ͜ʖ ͡°)


~ $ node

Welcome to Node.js v23.11.1.

Type ".help" for more information.

> Math.min() > Math.max()

true

> Math.min > Math.max

true

131314f5-6432-48f6-81a7-0c5fb9eee364
Catharsis

Metodą wykreślania poprawnych odpowiedzi:

A - w JS prawie wszystko jest obiektem więc to zwróci true

B - funkcja do zwracania najmniejszej wartości z podanych zwróci domyślnie największą możliwą liczbę a ta przeciwna odwrotnie więc też true

D - koncepcja truthy/falsy w JS gdzie przy takim porównywaniu wartości są "konwertowane" na true albo false, zero jest false a pusty string jest falsy więc zwróci true


No i pozostaje to C, gdym rozwiązywał jakiś test i nie miał dostępu od internetu to bym zaznaczył tę odpowiedź. A teraz podczas pisania tego zdania sprawdziłem na internecie dlaczego NaN != NaN i jak się nad tym pomyśli to ma to sens (jak wszystko w JS gdy zna się odpowiednio ten język, ale wtedy wszelkie te memy przestają bawić).


Dla ciekawskich tutaj są odpowiedzi:

https://www.reddit.com/r/ProgrammerHumor/comments/sh1ji1/stop_pretending_nan_nan_was_a_good_idea_it_wasnt/

https://stackoverflow.com/questions/10034149/why-is-nan-not-equal-to-nan

Zaloguj się aby komentować

Archiwalne zdjęcie przedstawiające radziecką szkołę uprawy gumowca zwyczajnego.


#ciekawostki #heheszki #zdjeciewyrwanezkontekstu

19b0d290-886f-45f1-93c7-f73083337d0c
Fly_agaric

Gdzieś zaraz obok musi być też pole z onucami!

Zaloguj się aby komentować

wielkaberta

@vrkr Bool nie ma warunku definicji rozmiaru, ponieważ rozmiary typów całkowitych też nie mają gwarancji być zawsze takie same. Ma tylko następujące wytyczne:


  • wartości boolean są tego samego rozmiaru przy porównywaniu

  • jest prawdą jeśli wartość jest niezerowa


Taka minimalna logika pozwala różnym językom implementować to jak chcą, dając użytkownikowi tryb "tak bardzo wyjebane" ja tylko używam true i false i am w d⁎⁎ie jak kompilator robi.

ZohanTSW

@wielkaberta ale w praktyce najczęściej zajmuje tego bajta

Jeśli nie robi się w embedded lub nie pracuje się z jakimiś bardzo małymi klockami to w ogóle wszyscy mogą mieć to w dupie xd

wielkaberta

@ZohanTSW Znaczy się ewaluacja/kalkulacja tej wartości w rejestrze można zredukować do jednego bajta. Bo jest cwany trick by upchać 8 boolów w bajcie .

A potem ktoś potrzebuje boola wypromować do enuma XDDDD

TRPEnjoyer

Sorry, ale tzw padding istnieje nie bez powodu, baba jak zwykle robi problem z niczego.

wielkaberta

@TRPEnjoyer Padding to wyrównywanie w strukturze przez dodawanie bajtów w strukturze by łatwiej było dobierać się do zmiennych w kodzie maszynowym..

To co mówisz, to jest "promowanie" i sobie takie rvalue "true" sobie maszynowo zamieni na inta.

osn_jallr

Ale struktura 8 booli nie musi zajmować 8 bajtów.

wielkaberta

@osn_jallr Tak, ale ewaluacja danego boola z bitmaski, na przykład "bitmask & 1<<5" to w rejestrze procesora musi zająć conajmniej jeden bajt. Niżej nie da rady.

Zaloguj się aby komentować

NiebieskiSzpadelNihilizmu

@vrkr nie dobranoc tylko noc dobra, #nocnazmiana się zaczyna powoli

Zaloguj się aby komentować

Wchodzę dziś w gorące i widzę, że pierwszy wpis osiąga woltaż na poziomie 330 pierunów.


O Panie.


A jeszcze niedawno 50 pierunów, to było coś. Ale ten czas zaiwania.


#gownowpis #hejto #nostalgia

jajkosadzone

jak to 330,o czym mowisz @vrkr

hellgihad

@vrkr Niby spoko, ale ja jak mam jakiś quest na rozdawanie piorunów to lecę wszystko z góry na dół więc to takie niezbyt organiczne mi się wydaje

Zaloguj się aby komentować

Lubiepatrzec

Sam fakt tego, że jest jutro powoduje, że jest lepiej.

Zaloguj się aby komentować

Zaloguj się aby komentować

LondoMollari

@vrkr Ahhh.. preprocesor C, czyli jak za pomocą 10 linii kodu wygenerować 10k linii błędów.


Dopiero template'y w C++ miały równie wielkie możliwości w dziedzinie generowania niezrozumiałych błędów.

PanNiepoprawny

@LondoMollari wystarczyło pisać poprawny kod ( ͡° ͜ʖ ͡°)

Chociaż z tym templatkami to faktycznie bardziej na chybił trafił się to debugowało

Zaloguj się aby komentować

Zaloguj się aby komentować

Zaloguj się aby komentować

Zaloguj się aby komentować