#javascript

17
103

Zaloguj się aby komentować

If an attacker observes two or three consecutive outputs of Math.random(), they can reverse-engineer the internal state of the generator and predict all future (and past) values with 100% accuracy. This has been demonstrated in multiple research projects and open-source tools.

https://www.reddit.com/r/AskProgramming/comments/1qt1n0i/comment/o2ziocg/


Despite its quality, xorshift128+ is not cryptographically secure. For security-sensitive applications, use crypto.getRandomValues() instead

https://www.reddit.com/r/AskProgramming/comments/1qt1n0i/comment/o2ziocg/


W sumie wiadomo, że to pseudolosowe, ale 2-3 outputy żeby wyliczyć seed to trochę mało.


#javascript #js

Zaloguj się aby komentować

Zaloguj się aby komentować

@Deykun - nawet mój ulubiony framework używa Vite.

SvelteKit przeszedł na Vite jako narzędzie do budowy w grudniu 2020 roku, rezygnując z wcześniejszej opcji, którą był Rollup. Ta zmiana została wprowadzona, aby skorzystać z szybszego podglądu w czasie pisania aplikacji, możliwości podmiany modułów oraz ogólnej poprawy wydajności budowania aplikacji, jakie oferuje Vite.

Zaloguj się aby komentować

@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.

@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ć.

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ć

Zaloguj się aby komentować

@fewtoast To jest picture-in-picture, w obydwu przypadkach, ale przez to, że Chrome wspiera API picture-in-picture, to mogli dodać customowy przycisk, który zmienia stan. Na Firefox przycisk do zmiany stanu picture-in-picture zobaczysz na każdym elemencie video (niekoniecznie tylko na TikTok), jeżeli source jest dłuższy niż 45s (można zmienić to w ustawieniach) i jeżeli nie ma ustawionego atrybutu disablePictureInPicture .


Link do API: https://developer.mozilla.org/en-US/docs/Web/API/Picture-in-Picture_API

@renkeri Ale to nie jest samo wideo. No już mam info że jest PiP dla HTML, nie tylko dla wideo.


Mi się PiP dla wideo w stylu Firefoksa w ogóle nie podoba, to jest bardzo zawodne. Takie pełne, pod kontrolą strony, jest lepsze, stabilniejsze.

Mi YouTube czy inne wideo wywala jak coś net przytnie na przykład i to jest męczące wtedy.


A gdyby cały HTML w to wczedł, własny player, tak jak tu na TikTok, to już w ogóle super by było. A nie taki niedorobiony player wideo PiP, gdzie wszystko Firefox musi ręcznie obsługiwać, dublować. A i tak nie działa za dobrze. A to wszystko niby żeby było bezpieczniej chyba.


Kompletnie pusta zmarnowana robota.

Zaloguj się aby komentować

#programowanie

jaki znacie najlżejszy framework #javascript ?

Do tej pory zawsze jak coś pisałem to robiłem to w vanilla js ale to troche masochizm.

Coś absolutnie elementarnego, bo nie planuję iść we frontend ale chce zrobić ładną prostą i lekką stronę wizytówkę

@redve Mamy prawie 2k25, naprawdę przy wyborze frameworka nie kierowałbym się jego wydajnością i lekkością bo pomiędzy topką frameworków na współczesnym sprzęcie nie zauważysz większej różnicy. Przepisywałem rok temu projekt z vanilla na Reacta i chodzi identycznie, zużywa może 15mb ramu więcej.


Tak więc polecam Reacta po prostu bo zwyczajnie jest najpopularniejszy, masz do niego najwięcej bibliotek komponentów. custom hooków i tutoriali. Jeżeli chcesz lżejszą wersje reacta to istnieje Preact ale nigdy się tym nie bawiłem. A jak już ogarniesz Reacta to prosta droga do np Next.js i wtedy dopiero zaczyna się zabawa. Owszem są jeszcze np Vue czy Svelte z takich popularniejszych i przyjemniejszych ale generalnie jak nie znasz żadnego frameworka to nie zrobi ci różnicy którego się będziesz uczyć. Ważne jedynie, abyś się uczył z aktualnych materiałów bo te wszystkie frameworki to co jakiś czas dostają jakieś game breaking zmiany które na nowo definiują jak się w nim pisze (np teraz Svelte i jego runy xd).

@Catharsis - ja bym tę listę odwrócił i zaczął od Svelta - teraz z wersją 5 będzie raczej tylko ewolucja - poza tym ze Sveltem migracja do wyższej wersji była w 99% wykonywana automatycznie przez skrypt, który radził sobie nawet z edge cases.

React to kobyła - do tego jak dla mnie nieintuicyjna - nad zrobieniem czegoś średnio prostego musiałem spędzić najwięcej czasu ze wszystkich frameworków - dla początkujących zwłaszcza nie polecam.

@koszotorobur Owszem sam start w Reatcie jest dość ciężki, ale jak się już ogarnie podstawy to kod się potem sam pisze. A tak jak mówię, nie widzę różnicy w działaniu małych projektów w Reactcie czy Vanilla a dużego projektu nikt nie będzie pisać Vanilla więc rozmiar frameworka nie ma znaczenia.


No i jest więcej ofert pracy w Reactcie :D. Ale on w sumie potrzebuje tylko do strony wizytówki, to w sumie moja strona wizytówka jest napisana w czystym HTML + CSS +JS bez użycia żadnych dodatkowych bibliotek, jedynie używam Vite do live preview podczas pisania oraz minifikowania kodu podczas budowania i eksportu xd.

Zaloguj się aby komentować

Zaloguj się aby komentować

Stworzyłem projekt, który wyświetla listę serwerów CS2D, zbudowany w Node.js przy użyciu Fastify. Oto najnowsze zmiany:


  • Zaktualizowany interfejs UI dla lepszego doświadczenia użytkownika

  • Dodano opisy do dokumentacji API

  • Wprowadzono nową stronę statystyk

  • Optymalizacja kodu dla lepszej wydajności

  • Zintegrowano Highlight.js dla lepszego podświetlania składni


Sprawdź to tutaj: https://cs2d-serverlist.erpa.cc/

Zobacz kod na GitHubie: https://github.com/ernestpasnik/cs2d-serverlist


Dajcie znać, co myślicie!


BTW Fastify > Express.js


#nodejs #javascript #opensource #github #programowanie #javascript #fastify

Zaloguj się aby komentować

Koniec IP Box dla programistów, kancelaria premiera opublikowała projekt zmiany ustawy o podatku dochodowym gdzie znalazł się podpunkt 2.b):


zmiany w preferencji IP Box – wprowadzenie wymogu zatrudnienia,


Prawdopodobnie ma to na celu wyłączenie samozatrudnionych programistów z możliwości rozliczania się preferencyjną stawką podatkową 5%, która to została wprowadzona w 2019 roku.


Tekst projektu: https://www.gov.pl/web/premier/projekt-ustawy-o-zmianie-ustawy-o-podatku-dochodowym-od-osob-fizycznych-ustawy-o-podatku-dochodowym-od-osob-prawnych-oraz-niektorych-innych-ustaw6


#programowanie #programista15k #software #technologia #javascript #java c#

Powrót na UoP to była jedna z lepszych decyzji przy zmianie pracy. Żadnego pierdolenia się ze zmianami w podatkach, uszczelnianiem, rozliczaniem, jakimiś kontami bankowymi, żadnych umów gentlemańskich o "liczbę dni płatnych kiedy zleceniobiorca powstrzymuje się od wykonywania pracy". A idź pan w pizdu.

@Maciek no wszystko fajnie, tylko na UOP w podatkach, składkach, daninach ile z tego co za twoje stanowisko płaci pracodawca dostajesz ty, 50%? Jeszcze jakbyś z tego tytułu miał jakieś usługi na poziomie, to dostajesz niewydolną służbę zdrowia gdzie i tak musisz zapłacić prywatnie, emeryturę w ZUS, gdzie twój kapitał zamiast być inwestowany, jest na bieżąco przejadany, a ty na emeryturze otrzymasz jakiś ochłap. Nie ma co się dziwić ludziom że uciekają z UOP na B2B, rozwiązaniem jest zmniejszenie obciążenia UOP, wtedy nikomu nie będzie się opłacało kombinować z żadnym B2B

Zaloguj się aby komentować