Комментарии 117
Я открыл «babel-core» в VIM, потом перезагрузил компьютер, потому что сочетание Ctrl-C не работало, затем открыл «babel-core» в Sublime.
kill из соседней консоли не пробовали?) Первый раз такое слышу что бы комп перегружали из-за vim в котором ctrl-c не сработал.
Ну а по делу, интересно обстоят ли так дела только с npm или в composer, pip, gem(подставить нужное) та же история. Спасибо за статью
Спокойно открывается текстовый файл на 100 МБайт в режиме редактирования.
Напьются смузи, напрограммируют мышкой, а потом у людей текстовый редактор зависает…
Исходник здорового человека крайне редко больше 1000 строчек. Поэтому у меня вим настроен со всеми возможными свистоперделками и работает быстро пока не попадется такая вот загогулина.
А потом да — если резет не нажать — день программирования потерян.
Не всегда. Мне случалось nodejs-ом резать файлы на куски вменяемого размера...
Хоть сам пользуюсь Notepad++ но sublime с большими файлами справляется лучше (быстрее в том числе).
Вим открывает гигабайтные файлы. Так что странно, что так вышло.
В это реально несложно поверить. Такое ощущение что 95% процентов ноды делают конченные малолетние идиоты, причем специально делают не так как все, чтобы посердить папу. А 95% потребителей ноды и библиотек — это неизбалованные нормальным языком и библиотеками PHP-шники.
Потому что если человек хоть на чем-нибудь кроме PHP писал в жизни, он реально не поймет предложение писать сервер на ноде. Ну реально — это же самое дно из всего что есть вообще (кроме может PHP того же)
И я в шоке от инженерной культуры вокруг node.js. Например, прилетают мажорные релизы библиотек с critical-багами. NPM недетерменировано раскладывает модули по папкам. Все это весит сотни мегабайт, и отжирает гигабайты памяти просто чтобы собрать 1 мегабайт JS-ников. Авторы библиотек ломают совместимость API по три раза за год. Я уж молчу что в NPM-2 папки в винде стереть нельзя было из-за длины имен, спасибо хоть это починили.
На фоне .NET-а (в котором тоже местами адище) — от node волосы на жопе шевелятся. А если уж JS-ники склеить — уже проблема, то я не могу себе даже преставить что творится у тех кто сервера на ноде делает.
есть такое, я вот так привык к культуре кода в руби-сообществе, что прям офигел, когда открыл исходник какого-то npm пакета, а там ни одного коментария =)
Ага. Я хоть и JavaScript-ер, не люблю микромодули. Благо, пока ничего большого писать на nodejs не случалось, пока могу всё просматривать. А у нас-то во front-end'e всё по другому, чисто, аккуратно, без внешних зависимостей (требования — возможность работы в интранате), и в продакшене — пожато в небольшое количество файлов.
npm install -g rimraf
Прекрасно справляется с удалением своих же длинных папок)
Современный PHP это уже не тот язык, что был в далёком 2008. Здесь тоже есть кровавый энтерпрайз (привет, Симфони!) с декомпозицией всего и вся, с поддержкой статической типизации и хорошим пакетным менеджером.
Конечно, можно писать и без фреймворков, по-старинке складывая всё в один файлик, но тут уж всё зависит от программиста.
Экосистема в целом напоминает «зону» Стругацких: поверх враждебной для пользователя среды выросла защита в виде Symfony и иже с ними, но когда приходится выходить за ее пределы, даже старые прожженые сталкеры нет-нет да и напорются на какой-нибудь нежданчик.
К слову, о нежданчиках. В самом начале своей карьеры, помнится, я читал об этом нюансе, но случев «неправильного использования» было крайне мало и эта подробность забылась.
> $var['smth'] = null;
> isset($var['smth']) // false
> array_key_exists('smth', $var) // true
Как-то убил пару часов на отладку этого :)
Удивительно, как много php программистов ни разу не читали мануал php.
Удивительно как много людей не читают чужих сообщений.
Наверное, нужно повторить.
> В самом начале своей карьеры, помнится, я читал об этом нюансе
Но за давностью ознакомления сей нюанс вылетел из головы.
> В самом начале своей карьеры, помнится, я читал об этом нюансе
Но за давностью ознакомления сей нюанс вылетел из головы.
Поэтому я и перечитываю мануалы время от времени. Человеческий мозг несовершенен.
ПДД кстати тоже стоит перечитывать.
«Два часа» из моего сообщения, на самом деле, длились не более 20 минут (хотелось указать на драматизм ситуации с неочевидностями PHP), и, конечно же, я полез читать документацию. Нестоит осуждать людей, если не знаете всей их истории.
К чему это я? К тому, что все имеет свои нюансы и свои тонкости, вот для выявления этих аспектов и нужно читать книги и документацию.
Те неконсистентности, которые можно было исправить, не ломая обратную совместимость, исправили в PHP7.
Остальное большей частью либо исправлено на уровне фреймворков/библиотек (что, кто-то вручную пользуется curl?), либо просто вкусовщина.
Ну реально — это же самое дно из всего что есть вообще
Достаточно аргументировано. Могу предположить, что найдется часть людей, которые будут скидывать статью в аргументы, так как тоже поверят, но не проверят.
95% НОДЫ ДЕЛАЮТ КОНЧЕННЫЕ МАЛОЛЕТКИ-ИДИОТЫ
95% ПОТРЕБИТЕЛЕЙ НОДЫ ЖРУТ ГАВНО
НОДА САМОЕ ДНО — НУ РЕАЛЬНО
РЕАААЛЬНOOО000!!!!111
максимально важно, чтобы мы как сообщество начали заботиться о чистоте кода
Рынок решил, что и так сойдёт.
Если мы заглянем в зависимости эмбера, то увидим библиотеку под названием glimmer. Сама эта библиотека весит 95KB (или 95% кода эмбера)
Не 95%, а (95/112*100) = 85%
Взял на себя смелость проверить доводы в статье.
express (последний релиз 2 месяца назад) не ставит yummy.
Поставил руками yummy (последний релиз 8 месяцев назад) — в нём нет like-tweet.js
Поставил ember — он не ставит glimmer (или я не тот ember поставил), окей, ставлю glimmer (релиз год назад) — в нём нет brittanica
Окей, смотрим babel-core. Есть вот такой коммит: https://github.com/babel/babel/commit/f36d07d30334f86412a9d2771880cb566a82a9b6
Что-то похожее на правду. Открываем историю файла: https://github.com/babel/babel/commits/f36d07d30334f86412a9d2771880cb566a82a9b6/packages/babel-core/src/api/node.js
Берём самую первую версию файла: https://github.com/babel/babel/blob/3ef9bffcc240e60085fbb120de07d884448fbea3/packages/babel-core/src/api/node.js
В нём нет картинки.
Итого — ни один довод из статьи я не смог подтвердить.
Судя по всему статья — просто штука, не принимайте всерьёз :)
Как говорится, за такие шутки...
$ ls -l frontend/app/node_modules/ | wc -l
840
I wanted to start a simple hello world app for AngularJS 2.
When I followed the instructions in the official quickstart the installation created 32,000 files in my project.
I figured this is some mistake or I missed something, so I decided to use angular-cli, but after setting up the project I counted 41,000 files.
Where did I go wrong? Am I missing something really really obvious?
Источник. И это только фронтенд.
Реальный пример: bower и многие другие пакеты npm имеют набор зависимостей, которые в определённый момент содержат пакет «wordwrap», который выставляет папку tests. А там рассказ Бертрана Рассела «In Praise of Idleness».
Apparently this module is quite popular with other NPM authors. I have 202 copies of «In Praise of Idleness» by Bertrand Russell on my computer
Занавес.
А где скриншоты с glitter
? В оригинале были.
Из части про Ember куда-то пропал забавный кусок истории команд:
$ tree node_modules/ | count
zsh: command not found: count
$ tree node_modules/ | lines
zsh: command not found: lines
$ tree node_modules/ | wc -lines
wc: illegal option — i
usage: wc [-clmw] [file …]
$ tree node_modules/ | wc -countlines
wc: illegal option — o
usage: wc [-clmw] [file …]
$ man wc
$ tree node_modules/ | wc -l
292
С бэкэндом: захотели ноду — нате, тут я считаю все честно.
Возникла у меня на днях не гипотетическая а реальная необходимость уменьшить размер node_modules.
Связанная с чем?
В общем по этому поводу добавили npm dedupe — удаляет дубли и может уменьшить глубину вложенности каталогов node_modules.
Говорят, замысел был в том, чтобы иметь возможность каждому модулю поставить нужную ему версию зависимости, если разные модули зависят от разных версий одного и того же модуля. Получилось — что получилось…
Вложенность, кстати, не мешает, npm как-то справляется. А вот штатными средствами винды потом хрен удалишь.
Я начал свое расследование, установив пакет «babel-preset-es2015». Этот пакет позволяет двадцати с лишним веб-разработчикам в мире писать на новом, худшем варианте JavaScript, который никто в их команде не знает.
Тонко подмечено. К сожалению, это не шутка. И пользуются этим недоразумением куда больше 20 человек
Твитор должен быть в консоли npm? или как?
Простили бы, если бы она была под спойлером.
Кроме формальных правил самого хабра есть ещё куча неформальных вещей. Начиная от netiquette (который несколько устарел, но более-менее применим) и заканчивая неформальными правилами конкретного сообщества.
Например, в https://habrahabr.ru/info/help/other/ есть пункт про хабраэтикет. Базовая вещь, описанная ещё в netiquette, — уважайте чужое время. Как думаете, хорошо ли грузится 1.9 MiB при пингах ~1 s по GPRS?
И не рекомендую повторять данный опыт активнообсуждаемой теме, кроме как в качестве хабрасуицида.
Я заглянул в папку node_modules, и вы не поверите, что произошло