Khaine
#javascript #programowanie

Czy jest szansa, że JS doczeka się kiedyś standardowej biblioteki narzędziowej do której ludzie po prostu będą dopisywać funkcje i "klasy", których im brakuje, czy szaleństwo node_modules będzie trwać w nieskończoność aż pewnego dnia osiągnie masę krytyczną tworząc czarną dziurę?
  • Najlepsze
  • Wszystkie komentarze
mch0588
@Khaine: tu dwie najgłośniejsze:
https://www.theregister.co.uk/2018/11/26/npm_repo_bitcoin_stealer/
https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/

I tu jeszcze ciekawostka:
Każdy z Was pewnie słyszał o module left-pad i aferze, która wybuchła gdy jego autor Azer Koculu wycofał go z npm. Po wybuchu tej afery każdy programista innego stacku śmiał się do rozpuku, nie rozumiejąc dlaczego tak banalny kod stał się modułem. Ale słuchajcie jest lepiej! Niejaki Jon Schlinkert dodał do npm całe mnóstwo modułów o nazwach typu is-number, is-odd, is-even itd. które zależą
mch0588
@GlassOfJuice: i co w niej masz? Array.length? w porównaniu do Javy, C++ czy .NET to bieda z nędzą (JS powstał w tym samym czasie co Java). W ES6 wprowadzili pare fajnych ficzerów ale i tak większość standardowych rzeczy trzeba ściągać z npma lub pisać z łapy.
Marmite
@sokytsinolop: w kwestii ogólnego ulepszania npm podobał mi się ten pomysł co ostatnio padł, czyli żeby pakiety miały uprawnienia działające na zasadzie uprawnień z systemów mobilnych - ograniczyłoby to trochę zapędy złośliwych pakietów. Natomiast co do tego że ludzie preferują rozbijać funkcje na pierdyliard paczek, które zależą od kolejnego pierdyliarda paczek to już chyba wina ludzi, a nie systemu. I to ludziom powinna się zapalać czerwona lampka w głowie, gdyby
Ragnarokk
@Khaine Ni ma
arysto2011
@Khaine: npm install forever
Khaine
Khaine Autor
1
@mch0588:

Unfortunately, one of those dependencies was left-pad. The code is below. It pads out the lefthand-side of strings with zeroes or spaces. And thousands of projects including Node and Babel relied on it.


XDDD

No to jest właśnie coś, co powinno jak byk siedzieć w bibliotece standardowej. Pierdyliard rzeczy tego używa a jest proste. Tak samo sam fakt, że ściąga się xx wersji przeróżnych rzeczy sygnalizuje fakt, że community
Khaine
Khaine Autor
1
@GlassOfJuice: No to widać albo nie rozszerza się dość szybko, albo ludzie nie korzystają z niej, bo każdy chce być hipsterem i mieć swoją własną bibliotekę (albo framework najlepiej xD) a nie tylko dorzucić się do tej standardowej, która podlega pewnie ostremu code review żeby na pewno nic nie jebło.
Marmite
No to jest właśnie coś, co powinno jak byk siedzieć w bibliotece standardowej


@Khaine: praktycznie wszystko zostało tu już napisane, więc ja tylko dopowiem że to JEST w bibliotece standardowej (String.prototype.padStart), ale dopiero od pewnej wersji (a dokładnie od ES6)

\*flies away\*
Khaine
Khaine Autor
1
@Marmite: Prawda jest taka, że katharsis mogliby zapoczątkować autorzy dużych frameworków. Wystarczy aby Angular, React czy Vue (no ten akurat jest jeszcze taki nie za duży w użyciu) powiedziały "dość" i zaczęły wykorzeniać zbędne zależności, których pewnie też im się nieźle nazbierało. Jednak większość skomplikowanych rzeczy się buduje na Angularze czy React, więc byłby to jakiś start. Zapewne pierwszy framework który się "oczyści" zacząłby wygrywać wydajnościowo (+ przejrzystością co tam
laki1
laki1
0
@Khaine: po co?
stacktrace
stacktrace
@Khaine: Jest. Możesz zwiększyć prawdopodobieństwo takiego zdarzenia tworząc repozytorium np. na githubie i publikując paczkę na npmie (zamiast zalewania tagu swoimi żalami).
Don_Martinio_De_La_San_Escobar
@Khaine: Doprowadzi to do wielkiego wybuchu, a w ten czas powstanie nowa planeta - ZIEMIA ( ͡º ͜ʖ͡º)
mch0588
@Khaine: pewnie jeszcze pare wtopek z npmem i w końcu ktoś ucywilizuje tego jsa( ͡° ͜ʖ ͡°)
Khaine
Khaine Autor
  • adult
0
Treść przeznaczona dla osób powyżej 18 roku życia...
G.....e
G.....e
@Khaine: Przecież istnieje biblioteka standardowa wbudowana w JS i rozszerza się regularnie
Khaine
Khaine Autor
0
@mch0588: Szczególnie, że nikt nie mówi że to ma być jeden w------y w kosmos plik .js. W C# i C++ też mamy masę mini-dllek, ale pogrupowanych w jakieś namespace i pewnego rodzaju rodziny. No ale jak wszystko opiera się na takiej wspólnej bazie i ZAKŁADAMY, że open-closed principle jest zachowany (a za niezachowanie autora walić po łbie) - to jakiś moduł zamiast pojawić się 10 razy w 10 wersjach pojawi
G.....e
G.....e
@Khaine: Ludzkie przyzwyczajenia to już nie wina JS.
@mch0588: Nie wiem co masz na myśli pisząc standardowych, dzisiaj np. JQuery jest już niepotrzebne. Jak chcesz bajeranckie funkcje możesz użyć np. biblioteki jak Lodash która nie ma zależności.
Khaine
Khaine Autor
0
Lodash


@GlassOfJuice: Gdzieś coś czytałem, że Lodash ponoć generuje od cholery nie zawsze potrzebnego kodu. Prawda to? Dla mnie to takie LINQ dla JSa, więc wygląda fajnie ale też niezbyt dobrze jakby coś co da się ręcznie napisać na piechotę aby miało 10 linijek nagle rozpierdzieli na 100+. Tutaj w przeciwieństwie do C++ czy C# fizyczna objętość kodu boli.

https://codeburst.io/why-you-shouldnt-use-lodash-anymore-and-use-pure-javascript-instead-c397df51a66

@Marmite: It's something. Problem w tym, że nawet
G.....e
G.....e
@Khaine: Lodash to tylko biblioteka i sama w sobie nic nie generuje, więc jak linkujesz ją statycznie to masz do wyboru core z podstawowymi funkcjami 4 kB albo full 24 kB. Podejrzewam, że webpack czy czego tam używasz, kiedy buduje na produkcję to wywala wszystko co zbędne.
Marmite
@Khaine: ogólnie za npm już będzie się długo ciągnąć smród, jak dla mnie należałoby to zaorać i posypać solą, no ale co zrobisz, nic nie zrobisz, chcąc nie chcąc nie korzystać z npm się nie da