В репозитории NPM произошёл (http://blog.npmjs.org/post/169582189317/incident-report-npm-...) инцидент, напоминающий произошедшую в 2016 году историю (https://www.opennet.ru/opennews/art.shtml?num=44104) с модулем left-pad, удаление которого привело к неработоспособности многих проектов из-за потери зависимости. На этот раз причиной проблем стала система автоматизированной борьбы со спамом, из-за которой по ошибке были удалены пользователь floatdrop (https://www.npmjs.com/~floatdrop) и 102 разработанных им модуля.
Многие из заблокированных модулей пользовались популярностью и использовались в качестве зависимостей в других модулях и приложениях. Недоступность данных модулей привела к каскадному обрушению зависимостей и невозможности (https://github.com/npm/registry/issues/255) установить или обновить тысячи пакетов в NPM. Например, модуль require-from-string (https://www.npmjs.com/package/require-from-string), содержащий всего 25 строк кода (https://github.com/floatdrop/require-from-string/blob/master...), насчитывает более 4.5 млн загрузок в месяц.Разбор причин ложного срабатывания антиспам-системы показал, что незадолго до инцидента один из спамеров разместил вредоносный модуль, в который для прикрытия скопировал файл README из легитимного пакета timed-out, принадлежащего пользователю floatdrop. Система распознала вредоносный модуль, но из-за совпадения файлов README посчитала пользователя floatdrop причастным к спаму. Отвечающий за разбор спама персонал халатно отнёсся к своим обязанностям и не разобравшись в сути предупреждения от антиспам-системы подтвердил блокировку учётной записи floatdrop и удалил все его модули из репозитория.
Проблема сразу дала о себе знать и персонал оперативно приступил к устранению неполадок. В течение трёх часов удалось полностью восстановить состояние репозитория. Для предотвращения подобных ситуаций в будущем была введена 24-часовая задержка републикации удалённых пакетов (для защиты от незаметного размещения вредоносных пакетов вместо удалённых), выработаны новые рекомендации и правила по реагированию на проблемы, улучшен инструментарий для борьбы со спамом и добавлены средства для оперативного восстановления ошибочно удалённых пакетов.
URL: http://blog.npmjs.org/post/169582189317/incident-report-npm-...
Новость: http://www.opennet.ru/opennews/art.shtml?num=47891
> напоминающий произошедшую в 2016 году историю с модулем left-padНаконец то ходь кто-то спомнил про npm leftpad...
Подскажите живущему в 2005, какие интересные проги есть на node.js?
http://left-pad.io/
peerflix
https://github.com/icefapper/offdroid
Чувак, покупай биткойны!
Да. Верно!
Хоть один адекватный комментарий!
У кого покупать? Майнить надо! А лучше выложить реализацию раньше Накамото.
> Подскажите живущему в 2005, какие интересные проги есть на node.js?Чувак, прочитай это и сделай как я написал, обогатишься и прославишься:
1. скоро (или уже) у вас появится браузер гуглохром. выковыряй их него потроха, ответственные за clients-side (js, css, html). на это уйдёт наверное несколько месяцев, но время у тебя есть. автоматизируй этот процесс, чтобы при выходе новой версии хрома не тратить на это много времени (так как версии клепаться со временем будут всё чаще).
2. запакуй их в один архив с последней версией nodejs.
3. назови это Electron, объяви это проектом для создания десктоп-приложений. сделай демку, какой-нибудь helloworld. Будет тормозить и жрать память как не в себя, но не переживай: в наше время все уже привыкли к тормозам и ничего не заметят, а памяти если что ещё докупят.
4. сделай для него сайт. основными особенностями должны быть: на сайте должна быть только одна страница (главная), размер шрифта не меньше 18 (можешь просто сделать такой размер, чтобы было комфортно читать, потом нажать три раза Ctrl-+ и захардкодить в css получившийся размер).
5. создай на гитхабе аккаунт electron, в нём - репозиторий electron (если будут заняты, используй electronjs). а чтобы защититься от киберсквоттеров, зарегай домен electron.org (если уже занят, подойдёт electroljs.org, также популярны домены в зоне io, можешь попробовать какой-нибудь electron.io).
6. в начале 2013 года убирай с сайта robots.txt и готовься к наплыву посетителей и пользователей этой штуки.P.S. Должен предостеречь, что с самого начала технически подкованные люди будут тебя ненавидеть за это, так что решай сам, стоит ли оно того: стоит ли ненависть тысяч восхищения миллионов.
Предупреди всех, чтобы не брали интел!
ЫЫЫ!!! Коммент года! :D
353 дня впереди - то ли ещё будет!
Если речь про десктоп проги она всего 1: визуал студия код от майкрософт (хейтеры будут хейтить, но это не поменяет факт что редактор получился хорошим).
Остальные проги на электроне глючные и неудачные, но стоит отметить брейв (браузер от основателя мозилы и создателя жаваскрипт которого оттудавыгнали за то что он голосовал против гей браков) и дискорд (по странное причине популярный крайне глючный мессенджер и войс чат).
Так же много всяких консольных утилит для разработки сайтов написано на ноде.
Но вообще стоит так же отметить что хейтеры ноды правы в одном: большинство нодежс разработчиков пофиг на секурность, соблюдение приватности пользователей их приложений, включение проприетарных модулей и пр. В той же визуал студии телеметрия слалась даже будучи отключенной и так бы дальше и слалась бы если бы какой-то параноик не просканировал трафик и не поднял шум.
визуал студия. хороший редактор. дальше можно не читать, всё равно чушь написана.
Речь не про их ИДЕ которой нет на линукс, а про https://github.com/Microsoft/vscode
то есть, ты решил вообще себя зарыть. воистину: не надо мешать людям говорить, и они сами себя спустят под днище.
Ну там реально всего одна известная проблема, реализация мигания курсора потребляла 70% CPU, а в остальном — хороший редактор же.
> Ну там реально всего одна известная проблема…двигатель браузера под капотом.
p.s.: когда мне надоел тот прискорбный катаклизм, который я наблюдаю в редакторах, я таки сделал себе свой. который жуёт sql-дамп на 200 мегабайт и полностью его расцвечивает за ~300 миллисекунд, сжирая при этом около 500 мб памяти. обновлённая версия, которая в процессе, будет делать это за примерно 500 миллисекунд, но жрать примерно 250 мб памяти, и будет полностью лишена проблемы фрагментации блоков. вот это -- хороший редактор.
> который жуёт sql-дамп на 200 мегабайт и полностью его расцвечивает*, ты читать его собрался? используй grep и не и*и себе и другим моск
а вот это у нас поколение младое прорезалось. думать не умеет, код делать не умеет, но — орёл!
> p.s.: когда мне надоел тот прискорбный катаклизм, который я наблюдаю в редакторах,
> я таки сделал себе свой. который жуёт sql-дамп на 200 мегабайтпопробуй вкурить acme из plan9port - весчь! https://github.com/evbogdanov/acme быстрый старт, http://www.mostlymaths.net/2013/03/extensibility-programming...
размер файлов неважен
мне он идеологически не нравится.
> мне он идеологически не нравится.есть клоны с текстовым режимом и емаксовыми кейбиндингами
>> мне он идеологически не нравится.
> есть клоны с текстовым режимом и емаксовыми кейбиндингамино зачем это, если у меня уже есть свой редактор, который работает именно так, как мне удобно? к тому же я привык к хоткеям из mcedit. ;-)
> но зачем это, если у меня уже есть свой редактор, который работает
> именно так, как мне удобно? к тому же я привык к
> хоткеям из mcedit. ;-)потому что это довольно накладно
>сжирая при этом около 500 мб памятиоднако, если тебя все устраивает, то меня и тем более :-)
> потому что это довольно накладно
>>сжирая при этом около 500 мб памяти~x2.5 памяти на файл, с полным кэшированием раскраски? да нет, не накладно — плата за скорость. очевидно, что это не штатный режим работы, а тест на жирном файле. запихни туда 100 кб файла -- будет примерно 300 кб памяти съедено. вполне приемлемо. хотя и я сделаю меньше, потому что мне такая скорость оказалась не нужна.
Зачем тебе полностью читать файл в память? Или у тебя такой большой экран, что целиком весь дамп вмещает?
затем, что если я захочу медленный редактор, то я знаю, где скачать какое‐нибудь хипсторское гуано.
> затем, что если я захочу медленный редактор, то я знаю, где скачать
> какое‐нибудь хипсторское гуано.Медленный, как vim?
> Медленный, как vim?это ты сейчас решил пошутить на тему скорости вима? грешно убогих пинать: как может — так и работает.
> это ты сейчас решил пошутить на тему скорости вима?Не угадал. Вторая попытка.
а, ты не шутил, ты просто не видел быстрых редакторов. ну, бывает. не отчаивайся: может, тебе ещё повезёт.
> Зачем тебе полностью читать файл в память?Ctrl+F и слушаешь, как винт поскрипывает.
Чтобы винт не поскрипывал, есть дисковый кеш.
> Чтобы винт не поскрипывал, есть дисковый кеш.как хорошо, что когда вы войдёте в полную силу — я уже сдохну.
> Чтобы винт не поскрипывал, есть дисковый кеш.Если вы про кеш самого диска на X мб, то файл туда как попадет, так и выпадет (если ещё уместится).
А если вы про VFS, то пока файл попадет туда полностью, винт будет поскрипывать, а приложение ждать.
И потом оно оттуда может выпасть, если на компьютере что-то ещё делается.
так это надо тоже суметь ;)
И никто в сообществе жепоскриптеров так и не подумал за всё это время плюнуть на криворуких даунов из npmjs.org? Это печально.
Видимо удобство перевешивает периодические проблемы.
Криворукий скорее тот, кто вместо вставки 30 строк кода цепляет отдельный модуль. Самое интересное, жизнь таких модулей в несколько строк кипит https://github.com/floatdrop/require-from-string/releases, выходят новые версии и т.п. хотя в код изменения не вносятся, а так сопутствующие файлы правят.
Та страница показывает последний коммит, а не разницу между релизами.
Вот например https://github.com/floatdrop/require-from-string/compare/v2....
Да пофиг сколько там строчек кода. Плохо - что даже эти пару строчек кода никем не валидируются, да и подвержены поломке по вине пакетного менеджера.
> жепоскриптеров
> подумал/0
> была введена 24-часовая задержка републикации удалённых пакетов (для защиты от незаметного размещения вредоносных пакетов вместо удалённых)они там реально идиоты?
почему 24 часа, а не скажем 365 дней?
>они там реально идиоты?с точки зрения обычного человека, идиоты. С точки зрения современного человека, альтернативные гении.
Нужно блочить навсегда.
Меня больше интересует, почему этого не сделали два года назад.
npm это сброище модулей для node.js, >>> ,js <<<
собственно потому они и в этот раз сделали всего 24 часа, вместо вечной блокировки имени.
>> была введена 24-часовая задержка републикации удалённых пакетов (для защиты от незаметного размещения вредоносных пакетов вместо удалённых)
> они там реально идиоты?
> почему 24 часа, а не скажем 365 дней?просто от них ничего не зависит ;) поэтому они должны страдать ;)
При удалении gmail логин в системе деактивируется навсегда и никогда не будет свободным.
> При удалении gmail логин в системе деактивируется навсегда и никогда не будет
> свободным.А номер телефона через полгода выдадут другому человеку.
Полон опасностей NPM-мирок
обиженные похапешники теперь будут совать это под каждой новостью о любом языке?
А похапешники тут при чем? У них с композером такого не происходит. И lock файлы там были с самого начала, а не с 5 версии, и название вендора в имени пакетов тоже, а не как в npm кто-то с вендором в префиксе, кто-то без.
...и композер нафек не нужен, т.к а) в пхп почти все и так встроено б) если такое количество зависимостей, как обычно в node проектах, засунуть в пхп, оно какнет.
хех, недавно на медиуме была статья на эту тема, эпичное чтиво, рекомендую:https://hackernoon.com/im-harvesting-credit-card-numbers-and...
да, достойно
> хех, недавно на медиуме была статья на эту тема, эпичное чтиво, рекомендую:
> https://hackernoon.com/im-harvesting-credit-card-numbers-and...da zabavno :D
Перевод на хабре
https://m.habrahabr.ru/company/ruvds/blog/346442/
Ещё раз: бездумный депенденс на хипстерские репы - зло. Только статическая сборка, причём каждое обновление библиотек должно проходить ревью.
И regression testing, да.
> И regression testing, да.Прочитал сперва как "aggression testing" -- задумался про defensive programming...
Но вообще да, агрессия в виде халатности с правильным битиком (или сколько там у них занимает отметка о правах) -- это поди ж ещё предусмотри.
Ага, а потом начнут орать про бюрократию, "совок" и про то что "инноватора" ни за что завернули эти "закостенелые политруки".
Сплю и вижу статически собранный дистрибутив ГНУ+Линукс с ревью и тестами на регрессии. И обновления системы потому, что в glibc пропатчили какой-то незначительный минорный баг, проявляющийся на архитектуре с 3,5 пользователей.Хейтеры такие хейтеры. Не нравится nodejs/C/Rust/мамка анона — не пользуйся, делов-то? Вот уж воистину, нет большего гадюшника, чем околоайтишный форум.
RHEL так и собирается, а что? Да и почти любой бинарный дистр GNU/Linux. Под статической сборкой имеется в виду не статическая линковка, а именно что сборка проекта вместе с библиотеками, которая по желанию левой задней ноги третьих лиц не изменяется.
Начинаются манёвры. Под статической сборкой что-то внезапно понимается что-то совершенно не то, что принято понимать.RHEL является RHEL'ом потому, что там есть (достаточно) чёткий процесс, которого придерживаются при разработке. Но изначально код они берут в точно таких же публичных репозиториях, что и все. Ты же не думаешь, что они там свой собственный nodejs командой секретных клонов Поттеринга пишут?
Как бы то ни было, ошибки случаются. Где-то чаще, где-то реже, но они неизбежны. Перефразируя Жеглова, качество сервиса определяется не отсутствием багов, а умением администрации их обезвреживать.
> Сплю и вижу статически собранный дистрибутив ГНУ+ЛинуксМмм... была ведь такая попытка, какие-то детишки-слакваристы вроде с полотна "Утомлённые зависимостями".
>Примечательно, что быстрому восстановлению помешало то, что некоторые предприимчивые пользователи сразу зарегистрировали новые модули с теми же именаминадеюсь, имена этих "героев" известны и все они уже забанены просто так?
> надеюсь, имена этих "героев" известны и все они уже забанены просто так?Стоят в очереди на получение бана сразу после «тупых инженеров из Интела» и «тех дeбилов, которые в OpenSSL Heartbleed проморгали».
Сравнение неуместно. Joyent - коммерческая компания, на своём сайте кого хочет - того и банит. Почему бы ей просто так не захотеть забанить этих пакетосквоттеров?
> надеюсь, имена этих "героев" известны и все они уже забанены просто так?Да вас же, вэб-макак, всех не перебанишь. Тут только дустом можно попробовать справиться...
хорошо, что немакаки-хеловорлдщики только в комментах гядят, а то хана вообще всем инфраструктурам
>незадолго до инцидента один из спамеров разместил вредоносный модульа вот в pipa почему-то такого нет. Потому что модерации нет совсем?
>персоналочень пафосное название для чувака сидящего дома с бутылкой пива в одной руке, и клавиатурой в другой :)
> с бутылкой пивас кружкой смузи // fixed
а какая разница в 21 веке где сидит сотрудник и что он держит в руке?
npm-экосистема конечно впечатляет своей убогостью, но заголовок не соответсвует, ведь> и не разобравшись в сути предупреждения от антиспам-системы подтвердил блокировку
результат рукожопов, а не тупенького спам-фильтра, который, как никак, расстарался и предупредил.
Не удивлюсь если уже существуют или в будущем появятся стартапы про безопасность npmjs репозиториев по типа как с докером было.
Естественно за деньги.
И за деньги есть, и бесплатно, но с é́́блей. Артифактори, например. И множество других аналогов и более узкоспециализированных решений.
Народная мудрость последнего абзаца:Решительный шаг вперед есть результат хорошего пинка взад!