Так корень-то проблемы не в этом. Даже если у пакетного менеджера и нет будет возможности запускать скрипты, то вредоносный код можно с таким же успехом внедрить и в код самого пакета - просто он сработает не на этапе установки зависимостей, а при запуске проекта. Проблема в самом современном подходе к управлению зависимостями. И она характерна не только для экосистемы JS - я недавно начал писать небольшой пет-проект на Rust. Добавил 2 (правда, достаточно крупных) зависимости в Cargo,toml, запустил сборку и в итоге при сборке cargo мне скачал и скомпилировал больше 200 крейтов. Что в большинстве из них и кто их автор - понятия не имею. Достаточно компрометации одного из них - и все.
Возьму на заметку, спасибо 🙂 Просто я не думал, что для того, чтобы навайбкодить программу лишь немногим более сложную, чем Hello world, нужны какие специальные знания.
Ну не знаю. Моя первая попытка "повайбкодить" закончилась довольно-таки неоднозначно.
Знакомый попросил помочь с простой задачей: нужно было получить полное содержимое memcached - вывести в консоль все ключи и их значения в заданном формате. Веб-разработка даже близко не моя специализация, да и задача относилась к разряду "сделал и забыл", поэтому, поразмыслив, я решил, что разбираться со всей этой катавасией мне лень - пусть код за меня напишет ИИ. Тем более что задача казалась элементарной: максимум строк двадцать на python.
ИИ без труда сгенерировал нужный скрипт, который использовал библиотеку python-memcached. Ок. На первый взгляд код выглядел вполне разумно. Однако при запуске он упал уже на одной из первых строк - import не смог найти нужный класс в указанном модуле. Я подумал: возможно, в новой версии изменился API. Не вопрос, установил предыдущую. Результат тот же. Полез в документацию - а там такого класса вообще не существует. И не было никогда.
В итоге выяснилось, что для python есть три разные библиотеки (может, и болше) для работы с memcached: python-memcached, memcache и pymemcache. ИИ взял все три и собрал из них какого-то монстра Франкенштейна: имена модулей и классов - из одной библиотеки, методы и константы - из другой.
Впечатление осталось двойственным. С одной стороны, обладай я нужными знаниями, я легко увидел и исправил бы ошибки ИИ и, возможно, даже сэкономил бы время (хотя и не факт). С другой - поскольку этих знаний у меня не было, пришлось разбираться в причинах сбоя и штудировать документацию, то есть заниматься ровно тем, чего я изначально хотел избежать.
Традиционный бизнес - да. Но в IT есть выраженная тенденция к приоритизации TTM (Time to market) над качеством. И, в принципе, на то есть веские причины. Особенно если говорить о формате стартапов. Потому что пока ты будешь целый год пилить свое хорошо продуманное и оптимизированное приложение, какой-нибудь Вася наймет 10 индусов по цене гамбургера в Макдональдсе и они ему за месяц сварганят на коленке приложение из палок и известной субстанции. Оно будет дофига весить, глючить, медленно работать и т.д., но выйдет на рынок раньше и получит конкурентное преимущество. И есть немало примеров, когда люди используют менее качественные приложения просто потому что уже привыкли к ним. Поэтому сейчас выгоднее максимально быстро выпустить продукт, срубить денег, если он выстрелит, а с проблемами разбираться уже потом.
Вот здесь что-то не совсем понял. Изначально kanban пришел из конвейерных производств и главной фишкой его было то, что он позволял визуально выявить проблемные участки, чтобы обеспечить бесперебойное производство. Но если у вас R&D, то как вам kanban поможет?
Вокруг двушечки в РФ в лучшем случае будет Москва, а в худшем - РФ, а вокруг домика США - будет США.
Очень странный аргумент. США тоже страна весьма неоднородная в плане развития. В лучше случае у вас вокруг домика будет какой-нибудь Нью-Гэмпшир, а в худшем - какая-нибудь Луизиана или Миссисипи.
Если судить чисто по моим знакомым, то уехала небольшая часть, процентов 10% максимум и далеко не все из них хорошие специалисты. Хорошему сеньору, конечно, получить оффер легче, но ему и уехать обычно сложнее. Одно дело, когда тебе лет 25 (условно), покидал в вещи в рюкзак - и вот ты уже готов ехать на другой конец света. И совсем другое, когда тебе 35 (условных опять же), тут уже сорваться с места не в пример сложнее - жена, дети, ипотека и все прочее. Тут уже переезд - это огромный головняк, на который не каждый решится.
Значительно более вероятен исход, что собака разозлится и съест вас, а не Максима - пинаете-то ее вы. С толпой работает примерно так же - злиться будут на тех, кто вводит санкции, а не на тех, из-за кого их вводят. Поддержка режима в такой ситуации будет только расти - это довольно известное явление в социальной психологии.
Там на скрине куча крупных компаний типа Microsoft. Возможно, им проще будет сделать 1 крупное пожертвование в фонд, чем 50 мелких отдельным проектам. Примерно представляю, сколько нужно волокиты преодолеть сотруднику, чтобы донести подобную проблему до руководства. И сделать это 1 раз явно проще, чем для каждого нового проекта.
Даже у самого лютого говнокода обычно есть объяснение) Тут же, мне кажется, нормальное решение будет гораздо проще, чем этот монстр. Т.е. вместо того, чтобы написать максимум 10 тривиальных строк, кто-то специально заморочился и написал целых 40. Либо человеку платили за код построчно, либо это сгененрированный код/трансляция с другого языка.
Вы какие-то ужасы рассказываете, ну либо за последние годы требования серьезно выросли. 1000 задач - это уже серьзное задроство, которым имеет смысл заниматься только если нравится сам процесс. Мне кажется, что для получения оффера в FAANG это избыточно. Я никогда настолько сильно не задрачивался - решил, может быть, 100 или около того задач. В большинстве случае от соискателя и не ждут, что он сходу придумает решение на уровне победителя олимпиады и сразу накатает на доске безупречный код без единой ошибки, никуда не подглядывая. Цель таких собеседований - проверить способность соискателя анализировать и решать неизвестные задачи. Я во время подготовки просто утром выбирал какую-нибудь задачку и по дороге на работу не спеша обдумывал возможные подходы к ее решению. В большинстве случаев, когда добирался до работы, у меня уже было в голове какое-то решение. Естественно, оно почти всегда было прямолинейным и далеким от оптимального. Уже после этого начинал обдумывать, что в нем можно улучшить и как вписаться в требования по производительности. На собесах действовал точно так же, только шаг 1 проговариал вслух и потом так же анализировал вслух слабые места предложенного решания и возможные способы их устранения. Но повторюсь, это было лет почти 10 лет назад, может быть, сейчас FAANG совсем зажрались и чтобы к ним попасть нужно действительно так заморочиться.
Игнорирование установленных настроек языка, региона, и прочего на многих сайтах (регион - чуть ли не в большинстве).
О да. Как человека постоянно путешествующего, дико раздражает использование баз геолокации везде где только можно и даже там, где нельзя. Несмотря на то, что браузер явным образом передает Accept-Language со списком языков, каждый сайт считает своим святым долгом показать мне версию на местном языке, который может оказаться, например, арабской вязью, где кнопку переключения языка еще и не сразу найдешь. А иногда принадлежность IP адреса определяется с ошибкой. При этом таким часто страдают даже крупные игроки типа Google, который почему-то долго и упорно считал, что мой домашний IP находится в ОАЭ и игнорил все мои обращения о неправильном определении.
А уж для тех, кто на основании geoip ограничивает доступ к сайту, в аду точно приготовлен отдельный котел.
Так корень-то проблемы не в этом. Даже если у пакетного менеджера и нет будет возможности запускать скрипты, то вредоносный код можно с таким же успехом внедрить и в код самого пакета - просто он сработает не на этапе установки зависимостей, а при запуске проекта. Проблема в самом современном подходе к управлению зависимостями. И она характерна не только для экосистемы JS - я недавно начал писать небольшой пет-проект на Rust. Добавил 2 (правда, достаточно крупных) зависимости в Cargo,toml, запустил сборку и в итоге при сборке cargo мне скачал и скомпилировал больше 200 крейтов. Что в большинстве из них и кто их автор - понятия не имею. Достаточно компрометации одного из них - и все.
Возьму на заметку, спасибо 🙂
Просто я не думал, что для того, чтобы навайбкодить программу лишь немногим более сложную, чем Hello world, нужны какие специальные знания.
Сlaude Sonnet 4 вроде бы. Короче, ту, что ~полгода назад была в самой простой платной подписке.
Ну не знаю. Моя первая попытка "повайбкодить" закончилась довольно-таки неоднозначно.
Знакомый попросил помочь с простой задачей: нужно было получить полное содержимое memcached - вывести в консоль все ключи и их значения в заданном формате. Веб-разработка даже близко не моя специализация, да и задача относилась к разряду "сделал и забыл", поэтому, поразмыслив, я решил, что разбираться со всей этой катавасией мне лень - пусть код за меня напишет ИИ. Тем более что задача казалась элементарной: максимум строк двадцать на python.
ИИ без труда сгенерировал нужный скрипт, который использовал библиотеку python-memcached. Ок. На первый взгляд код выглядел вполне разумно. Однако при запуске он упал уже на одной из первых строк - import не смог найти нужный класс в указанном модуле. Я подумал: возможно, в новой версии изменился API. Не вопрос, установил предыдущую. Результат тот же. Полез в документацию - а там такого класса вообще не существует. И не было никогда.
В итоге выяснилось, что для python есть три разные библиотеки (может, и болше) для работы с memcached: python-memcached, memcache и pymemcache. ИИ взял все три и собрал из них какого-то монстра Франкенштейна: имена модулей и классов - из одной библиотеки, методы и константы - из другой.
Впечатление осталось двойственным. С одной стороны, обладай я нужными знаниями, я легко увидел и исправил бы ошибки ИИ и, возможно, даже сэкономил бы время (хотя и не факт). С другой - поскольку этих знаний у меня не было, пришлось разбираться в причинах сбоя и штудировать документацию, то есть заниматься ровно тем, чего я изначально хотел избежать.
Традиционный бизнес - да. Но в IT есть выраженная тенденция к приоритизации TTM (Time to market) над качеством. И, в принципе, на то есть веские причины. Особенно если говорить о формате стартапов. Потому что пока ты будешь целый год пилить свое хорошо продуманное и оптимизированное приложение, какой-нибудь Вася наймет 10 индусов по цене гамбургера в Макдональдсе и они ему за месяц сварганят на коленке приложение из палок и известной субстанции. Оно будет дофига весить, глючить, медленно работать и т.д., но выйдет на рынок раньше и получит конкурентное преимущество. И есть немало примеров, когда люди используют менее качественные приложения просто потому что уже привыкли к ним. Поэтому сейчас выгоднее максимально быстро выпустить продукт, срубить денег, если он выстрелит, а с проблемами разбираться уже потом.
Вот здесь что-то не совсем понял. Изначально kanban пришел из конвейерных производств и главной фишкой его было то, что он позволял визуально выявить проблемные участки, чтобы обеспечить бесперебойное производство. Но если у вас R&D, то как вам kanban поможет?
Очень странный аргумент. США тоже страна весьма неоднородная в плане развития. В лучше случае у вас вокруг домика будет какой-нибудь Нью-Гэмпшир, а в худшем - какая-нибудь Луизиана или Миссисипи.
Если судить чисто по моим знакомым, то уехала небольшая часть, процентов 10% максимум и далеко не все из них хорошие специалисты. Хорошему сеньору, конечно, получить оффер легче, но ему и уехать обычно сложнее. Одно дело, когда тебе лет 25 (условно), покидал в вещи в рюкзак - и вот ты уже готов ехать на другой конец света. И совсем другое, когда тебе 35 (условных опять же), тут уже сорваться с места не в пример сложнее - жена, дети, ипотека и все прочее. Тут уже переезд - это огромный головняк, на который не каждый решится.
В смысле не бывает? При желании можно и за 30-40 евро найти.
Значительно более вероятен исход, что собака разозлится и съест вас, а не Максима - пинаете-то ее вы. С толпой работает примерно так же - злиться будут на тех, кто вводит санкции, а не на тех, из-за кого их вводят. Поддержка режима в такой ситуации будет только расти - это довольно известное явление в социальной психологии.
Там на скрине куча крупных компаний типа Microsoft. Возможно, им проще будет сделать 1 крупное пожертвование в фонд, чем 50 мелких отдельным проектам. Примерно представляю, сколько нужно волокиты преодолеть сотруднику, чтобы донести подобную проблему до руководства. И сделать это 1 раз явно проще, чем для каждого нового проекта.
Сейчас в некоторых странах первого мира даже выгоднее иметь детей, не вступая в официальный брак.
Даже у самого лютого говнокода обычно есть объяснение)
Тут же, мне кажется, нормальное решение будет гораздо проще, чем этот монстр. Т.е. вместо того, чтобы написать максимум 10 тривиальных строк, кто-то специально заморочился и написал целых 40. Либо человеку платили за код построчно, либо это сгененрированный код/трансляция с другого языка.
Вполне. Почему же нет? У некоторых из "путешествующих криптанов" месячные обороты измеряются в миллионах $.
Может, этот код был автоматически сгенерирован чем-то? Как-то с трудом верится, что человек в здравом уме мог всерьез написать такое.
Вы какие-то ужасы рассказываете, ну либо за последние годы требования серьезно выросли.
1000 задач - это уже серьзное задроство, которым имеет смысл заниматься только если нравится сам процесс. Мне кажется, что для получения оффера в FAANG это избыточно. Я никогда настолько сильно не задрачивался - решил, может быть, 100 или около того задач. В большинстве случае от соискателя и не ждут, что он сходу придумает решение на уровне победителя олимпиады и сразу накатает на доске безупречный код без единой ошибки, никуда не подглядывая. Цель таких собеседований - проверить способность соискателя анализировать и решать неизвестные задачи. Я во время подготовки просто утром выбирал какую-нибудь задачку и по дороге на работу не спеша обдумывал возможные подходы к ее решению. В большинстве случаев, когда добирался до работы, у меня уже было в голове какое-то решение. Естественно, оно почти всегда было прямолинейным и далеким от оптимального. Уже после этого начинал обдумывать, что в нем можно улучшить и как вписаться в требования по производительности. На собесах действовал точно так же, только шаг 1 проговариал вслух и потом так же анализировал вслух слабые места предложенного решания и возможные способы их устранения.
Но повторюсь, это было лет почти 10 лет назад, может быть, сейчас FAANG совсем зажрались и чтобы к ним попасть нужно действительно так заморочиться.
Хм. Интересно. А тут другое почему-то:
А почему вы решили, что австралийский-то? Судя по IIN, это действительно Сбербанк.
О да.
Как человека постоянно путешествующего, дико раздражает использование баз геолокации везде где только можно и даже там, где нельзя. Несмотря на то, что браузер явным образом передает Accept-Language со списком языков, каждый сайт считает своим святым долгом показать мне версию на местном языке, который может оказаться, например, арабской вязью, где кнопку переключения языка еще и не сразу найдешь. А иногда принадлежность IP адреса определяется с ошибкой. При этом таким часто страдают даже крупные игроки типа Google, который почему-то долго и упорно считал, что мой домашний IP находится в ОАЭ и игнорил все мои обращения о неправильном определении.
А уж для тех, кто на основании geoip ограничивает доступ к сайту, в аду точно приготовлен отдельный котел.
Если увеличится спрос, то производители в первую очередь получат стимул увеличить цены, а уж потом производство.