Безопасность сторонних зависимостей — проверяем при помощи snyk

Оригинал поста на хабре

Недавно была прекрасная публикация “Рассказ о том, как я ворую номера кредиток и пароли у посетителей ваших сайтов”, на которую я переводил ответ. Автор недавно опубликовал вторую часть, но, подозреваю, что перевода не будет - там предлагается решать проблему прекрасными способами вроде перевода важных элементов ввода “в отдельный iframe” или “на особые страницы без стороннего javascript”. На этом месте те, кто повёлся на первую статью, должны бы усомниться в адекватности автора - и низкий (относительно предыдущей) рейтинг новой статьи это показывает.

UPD: перевели таки.

Тем не менее, проблема сторонних зависимостей есть, и решать её как-то нужно. Причём стоит она в равной степени в любой экосистеме, где используются сторонние зависимости. В комментариях к прошлому посту уже запрашивали какой-нибудь вариант решения, и я хочу представить один из них - инструмент под названием snyk.

image

Я ненавидел Javascript. А теперь он мне нравится

Оригинал поста на хабре

Моя карьера началась с написания программ для мобильных устройств. Я изучал C и Objective-C, чтобы работать с устройствами на iOS. У меня был чёткий контроль над программным обеспечением, я учился тому, как правильно работать с памятью, и проводил долгие часы за отладкой багов, которые возникали из-за моей небрежности (это было ещё до ARC). Я развивался с уклоном в сторону iOS, а так же так же начал изучать Java (и совсем недавно приступил к Kotlin) для перехода на Android.

Рассказ о том, как я майню эфир через meltdown на ваших телефонах при помощи npm

Оригинал поста на хабре

Предисловие от переводчика

Пока вы не добрались до содержимого статьи, советую отложить её, отвести взгляд от монитора, и подумать на тему того, как же это происходит. Как всегда, всё гениальное просто. Ответ на поверхности. Подумали? Тогда читайте дальше.

Обычное утро 2027 года

Ну что же, доброе утро. Сегодня… Хмм… 23 сентября 2027 года. Надо бы посмотреть, какие на сегодня планы. О, сегодня же день рождения моего двоюродного племянника! Надо бы поздравить его. Интересно… Мы не виделись с ним уже три года. Даже не могу точно вспомнить, как он выглядит. Ну да ладно, это не проблема. Нельзя помнить всех и всё - вполне достаточно пары воспоминаний и дежурного набора слов.

Вежливость и память - наше всё. Опорная точка для здравого рассудка человека, который не может существовать в социальном вакууме. Об этом свидетельствует социальный проект “Third Life”, который был запущен пять лет назад, сразу после Второй Мировой Криптовойны, которая стоила человечеству миллионы сожженных вместе с мозгами нейроимплантов. Потери были так велики, что на освободившихся от обслуживания мощностях было решено запустить ИИ симуляторы восьмого поколения, которые, обработав полностью всю информацию о деятельности человека в сети, создавали его виртуальный образ, который мог почти полноценно участвовать в его социальной жизни.

Предыстория одного мага

Небольшая предыстория мага Традиции Эвтанатос для тех, кому это может быть интересно. Орфография и построение предложений может местами страдать, так как тест является компиляцией телеграмм переписки. Итак…

Джеффри никогда не блистал отличными оценками или выдающимся умом. От сверстников его отличало одно - всепоглощающее стремление помогать живым существам. Это был именно тот ребёнок, который несколько раз за неделю приносит домой больных животных и их выхаживает. Неудивительно, что он хотел стать врачом…

В семье и вокруг всё тоже складывалось не лучшим образом. Отец был алкоголиком и часто по пьяни бил его, мать и младшую сестру. Мать была молчаливой страдалицей, и пыталась наставить Джеффри на путь христианского смирения. Он смирялся, но религиозные соображения проходили мимо, несмотря на наличие креста - Джеффри не мог понять, почему Бог хочет, чтобы вечерами его бил смрадный тупой боров.

Сестра была его маленьким ангелом. Джеффри видел, что она умна не по годам, и, когда мог, переносил гнев отца с неё на себя. Он хотел помочь ей с обучением, чтобы она выбралась из их затхлой жизни в маленькой грязной квартире, и по ночам занимался грязной работой вроде мойки машин и подметания мусора. Но ближе к окончанию школы стало понятно, что этих денег не хватит на то, чтобы отправить её в какое-то лучшее место. Всё, что зарабатывала мать и большая часть денег Джеффри уходила на поддержание их скудного существования и выпивку отца. Тогда Джеффри преступил через свою мечту о становлении врачом и начал искать постоянную работу.

В поисках работы, он нашёл непопулярную и тяжёлую задачу. Джеффри начал работать в детском хосписе, помогая детям справляться с самой тяжёлой в их недолгой жизни задачей.

Антипаттерны для поиска соискателей

Оригинал поста на хабре

Привет, Хабр. В качестве тимлида я стою одновременно по обе стороны поиска соискателей - последние пять лет я активно участвую в собеседованиях своих разработчиков, а так же прохожу собеседования. Мне не стыдно писать, что я хожу по собеседованиям - это помогает понять, что сейчас востребовано на рынке, и где у тебя есть пробелы, которые хорошо было бы восполнить. Да и вообще любой специалист должен стремиться к росту, а не стагнации.

И за это время у меня накопилось огромное количество смешных и грустных историй взаимодействия с рекрутерами с обеих сторон, которые я решил систематизировать в общий сборник антипаттернов. Поехали!

Система для работы с чарниками для ролевых игр

Оригинал поста на хабре

Сегодня пятница, так что самое время предаться нашим весёлым странным страстям. Надеюсь, что здесь найдётся аудитория, которая при словосочетании “ролевые игры” представляет себе нечто отличное от девки с плёткой в латексе… Если вы именно о ней и подумали, то дальше читать вам, скорее всего, будет неинтересно.

На самом деле речь идёт про это:

Автоматизированное тестирование ботов для Telegram

Оригинал поста на хабре

Кажется, что время - это река, которую внезапно переклинило, и она решила течь по кругу. Именно такое впечатление складывается на первый взгляд, когда видишь, что вновь стали популярны боты в мессенджерах. Но это впечатление обманчиво. Изменилось очень многое - мощности, которые стоят за ботами, возможность обработки ими мультимедиа информации, наличие информации о пользователях, круг охвата… В общем, это явно не ностальгический тренд, а реально полезная технология, которая будет развиваться и дальше.

Боты становятся всё сложнее, они берут на себя многие функции других каналов. Например, вместо того, чтобы звонить по телефону и слушать по полчаса записанную девушку, которая говорит тебе перейти в тоновый режим и набрать волшебную последовательность символов, всё то же самое можно сделать при помощи бота. И это будет быстрее, удобнее, гибче и дешевле.

Для некоего личного проекта мне захотелось написать бота с довольно сложной ветвящейся логикой (например, это может быть система поддержки или диагностики с глубокой вложенностью). При этом граф данной логики имеет огромное количество разветвлений. В общем, быстро стало очевидно, что без автоматизированного тестирования не обойтись - иначе что-то точно упущу из внимания. И насколько же сильно я удивился, когда узнал, что способа тестировать логику ботов просто нет!

Конечно, можно зарегистрировать дополнительного бота для тестирования, но это вариант кривой и некрасивый. Обращение ко внешнему апи во время тестов, заглушка, которая не даст общаться с ботом кому попало, ограничение на скорость отправки сообщений раз в секунду… Если слать сообщение раз в секунду, то граф из каких-то 60 вершин будет тестироваться уже больше минуты! И я уже не говорю о том, что у нас нет никакой возможности смоделировать возросшую нагрузку на бота, при которой он упрётся в ограничение в 30 сообщений в секунду… В общем, я понял, что опять придётся делать что-то своё.

Сложно о простом - ESLint в команде

Оригинал поста на хабре

Маленькое введение. Скорее всего этот пост будет интересен только тем, кто знает, что такое ESLint, но всё же сделаю небольшую вводную - а то сам сильно расстраиваюсь, когда открываю публикацию, и она начинается словами “уже 10 лет мы используем ххх, о котором вы конечно же знаете, а написать мы решили про xxx.yyy, что никто никогда не делал, но наверняка это очень круто”.

Итак, ESLint это крутой инструмент, который позволяет проводить анализ качества вашего кода, написанного на любом выбранном стандарте JavaScript. Он приводит код к более-менее единому стилю, помогает избежать глупых ошибок, умеет автоматически исправлять многие из найденных проблем и отлично интегрируется со многими инструментами разработки (привет, Jetbrains, мы любим вас!). Кстати, он, как и другие линтеры, не обязывает вас к одному какому-то конкретному стилю. Наоборот - вы можете выбрать что-то из лучших практик и доработать по своему усмотрению!

Безоблачное мобильное приложение — жизнь без Google Play

Оригинал поста на хабре

Чуть раньше мы с вами думали про то, какие есть альтернативы Google Play, и как можно обходить разные способы блокировки на мобильных приложениях при помощи Google Compression Proxy и тора. Сегодня хочется поговорить о том, можно ли запустить и поддерживать полноценное мобильное приложение на Android без помощи какой либо обязательной внешней инфраструктуры. Рассказывать буду на примере всё того же приложения для просмотра рутрекера. Оно ничем особо не примечательно, но очень наглядно.