Как стать автором
Обновить
143
Карма
0
Рейтинг
Джехи @jehy

Tech Lead

Умный дом — теперь и у геккона

Разработка под Arduino *Умный дом DIY или Сделай сам
✏️ Технотекст 2022

Недавно при странных обстоятельствах у меня появился вот такой зверь.

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

Читать далее
Всего голосов 24: ↑24 и ↓0 +24
Просмотры 5.5K
Комментарии 20

Алиса, открой ворота — или MVP умного дома за пару вечеров

Разработка под Arduino *Умный дом

TLDR: Схожих постов на Хабре десятки, но мне хотелось показать, что внезапно можно
очень быстро сделать классные штуки, которые не ради вау эффекта, а реально помогают жить.


Будет про:


  • Home Asistant
  • Алису и её станции
  • Ардуины и MQTT
  • управление воротами Came
  • локальное управление яндекс розетками
  • датчики движения
  • Влажность, температуру и CO2
  • Автоматический полив цветочков
  • Как при помощи всего этого развлечь детей и как они находят свои способы с этим играть.
Читать дальше →
Всего голосов 14: ↑12 и ↓2 +10
Просмотры 26K
Комментарии 51

Как «активный гражданин» приучает людей к фишингу

Информационная безопасность *

Сначала я написал этот пост на пикабу, решив что там более релевантная аудитория и тема, но его там забанили вместе с моим аккаунтом. Что с одной стороны обидно, с другой забавно, и показывает, насколько похоже на фишинг то, чем занимается "активный гражданин". Что даже написать об этом нельзя, чтобы тебя не посчитали мошенником.

Читать дальше →
Всего голосов 98: ↑92 и ↓6 +86
Просмотры 26K
Комментарии 51

Снимаем покрытие кода с уже запущенного Node.JS приложения

JavaScript *Node.JS *Тестирование веб-сервисов *

И снова я про тестирование и покрытие.



Наверное, вы уже поперхнулись кофе от вопроса "Зачем снимать покрытие с запущенного приложения" — но такая потребность периодически возникает.


Например:


  • Узнать покрытие интеграционных тестов без инстурментализации кода, завершения приложения и выгрузки репорта какими-то сторонними средствами;
  • Узнать без долгого ковыряния кода, по каким именно модулям приложения прошёл запрос;
  • Определить "мёртвый" код, который по факту не используется в приложении;
  • Узнать список транзитивных зависимостей, которые используются на определённые запросы.

Интересно? Поехали!

Читать дальше →
Всего голосов 11: ↑9 и ↓2 +7
Просмотры 3.4K
Комментарии 0

Как мигрировать с mocha на jest в 15 простых шагов — и зачем

JavaScript *Node.JS *Тестирование веб-сервисов *


Уже давно я заглядывался на фреймворк для тестирования jest, в котором есть огромное количество всяких вкусных фишек, одна из которых — многопоточное выполнение тестов. При условии того, что у меня был проект на 5000 юнит тестов, миграция обещала быть крайне полезной. Далее я расскажу 14 простых шагов, за которых мне удалось мигрировать — пусть и с некоторыми оговорками — и что мы в результате получили. Спойлер — всё получилось очень круто.

Читать дальше →
Всего голосов 23: ↑23 и ↓0 +23
Просмотры 9K
Комментарии 5

Зачем нужно столько разработчиков?

Управление разработкой *

Статья предназначена скорее для людей, которые напрямую не участвуют в разработке, и удивляются, почему нужно столько людей и времени чисто на поддержку проекта, который вроде как стабильно работает.


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


Читать дальше →
Всего голосов 26: ↑21 и ↓5 +16
Просмотры 8.2K
Комментарии 19

Deno: время Node.JS уходит?

Разработка веб-сайтов *JavaScript *Node.JS *


Прошло примерно 18 месяцев с внутреннего релиза Deno, вышел preview release, появилось несколько статей на Хабре, и Райан ездит по конференциям и рассказывает о нём. Однако я нигде так и не видел сколько-нибудь вдумчивого разбора этого проекта — почему-то все ограничиваются переводом документации...


Что же, давайте попробуем это сделать сейчас. Последние 5 лет я пишу на Node.JS, а компания OneTwoTrip, где я сейчас работаю, пишет проекты на ноде около 9 лет (да, это я писал историю про 9 лет в монолите на ноде). Так что анализ должен выйти неплохой. Тем более что я его уже рассказал на Moscow Node.JS Meetup 10, и было интересно. Кстати, если вам удобнее слушать, а не читать, то послушать и посмотреть можно вот тут. Моё выступление второе, я чувак в розовой рубашке.

Читать дальше →
Всего голосов 63: ↑59 и ↓4 +55
Просмотры 52K
Комментарии 148

9 лет в монолите на Node.JS

Разработка веб-сайтов *JavaScript *Анализ и проектирование систем *Node.JS *Микросервисы *

монолит от https://reneaigner.deviantart.com


Неделю назад я выступал на митапе по Node.JS, и многим обещал выложить запись выступления. Уже потом я понял, что мне не удалось вместить в регламентированные полчаса некоторые интересные факты. Да и сам я больше люблю читать, а не смотреть и слушать, поэтому решил выложить выступление в формате статьи. Впрочем, видео тоже будет в конце поста в разделе ссылок.


Рассказать я решил про набившую оскомину тему — жизнь в монолите. Об этом на хабре уже есть сотни статей, тысячи копий сломаны в комментах, истина давно погибла в спорах, но… Дело в том, что у нас в OneTwoTrip есть весьма специфический опыт, в отличие от многих людей, которые пишут про некие архитектурные паттерны в вакууме:


  • Во-первых, нашему монолиту уже 9 лет.
  • Во-вторых, всю жизнь он провёл под хайлоадом (сейчас это 23 млн запросов в час).
  • А в NaN-ых, мы пишем наш монолит на Node.JS, который за эти 9 лет изменился до неузнаваемости. Да, мы начинали писать на ноде в 2010, безумству храбрых поём мы песню!

Так что всякой специфики и реального опыта у нас довольно много. Интересно? Поехали!

Читать дальше →
Всего голосов 88: ↑86 и ↓2 +84
Просмотры 26K
Комментарии 44

Неприятные ошибки при написании юнит тестов

Тестирование IT-систем *JavaScript *Node.JS *Тестирование веб-сервисов *
На днях я буду делать внутренний доклад, на котором расскажу нашим разработчикам про неприятные ошибки, которые могут возникнуть при написании юнит тестов. Самые неприятные с моей точки зрения ошибки — когда тесты проходят, но при этом делают это настолько некорректно, что лучше бы не проходили. И я решил поделиться примерами таких ошибок со всеми. Наверняка ещё что-нибудь подскажете из этой области. Примеры написаны для Node.JS и Mocha, но в целом эти ошибки справедливы и для любой другой экосистемы.

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

Читать дальше →
Всего голосов 34: ↑32 и ↓2 +30
Просмотры 10K
Комментарии 14

Атака на Github Pages с перехватом сайта на вашем домене

Информационная безопасность *GitHub *


Большинство разработчиков знают и любят github pages. На случай, если вы не встречались с ними — этот сервис даёт возможность создать статический сайт из вашего репозитория, который будет доступен на домене smth.github.io. Это безумно удобно для всякой временной статики, документации, небольших простых сайтов и так далее. Не приходится думать о каком-то дополнительном веб сервере.


Так же там есть возможность привязать к репозиторию свой домен — тогда всё будет совсем красиво. Даже поддержка SSL есть.


После этого небольшого введения перейдём к собственно теме статьи. Совсем недавно (9 ноября) у меня приключилась интересная история. Рекомендую не читать её залпом, а периодически останавливаться и прикидывать, что же означают все полученные на текущий момент вводные. Думаю, из этого выйдет интересная тренировка, хотя сюжет моего детектива оказался и не очень длинным и закрученным.

Читать дальше →
Всего голосов 45: ↑45 и ↓0 +45
Просмотры 15K
Комментарии 23

Нейронные сети против цензуры хентая

Обработка изображений *Машинное обучение *Законодательство в IT Искусственный интеллект
Перевод


От переводчика: Этот забавный репозиторий уже с неделю находится в трендах гитхаба, и сейчас у него фееричное количество из 5000 звёздочек и 400 форков — поэтому я подумал, что было бы интересно перевести про него статью, хотя она короткая, да и тематика для хабра не очень стандартная.
Если интересно, в оригинале статьи (ссылка около заголовка) есть ссылки на примеры работы программы.
Читать дальше →
Всего голосов 76: ↑72 и ↓4 +68
Просмотры 92K
Комментарии 78

Diarrhea для вашего бэкенда на Node.JS — уменьшаем вес сборки

JavaScript *Серверная оптимизация *Node.JS *

Наверняка вы часто замечали, сколько всякого мусора лежит внутри node modules. Это тесты, бенчмарки, ридми файлы, лицензии, тайпскрипт, и ещё безумное количество мусора, который можно более-менее безопасно удалить. Что мы собственно и сделаем в этом посте.
Картинку про вес node module я и так упоминал последние несколько публикаций, так что вот вам другая, которая в целом отражает текущую ситуацию. В качестве саундтрека к посту рекомендуется Little Big, “Life in da trash”.


Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 3.3K
Комментарии 31

Бэкап переписки в telegram

Резервное копирование *
Туториал

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


Предупреждаю сразу — для бэкапа вам потребуется Linux, или хотя бы виртуалка с ним. При наличии рук можно и на Mac OS, и может даже можно на том огрызке, что нынче встроен в Windows — но я ничего не гарантирую.


Поехали!

Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 54K
Комментарии 27

Ещё один инструмент для проверки ваших npm зависимостей — wtfwith

JavaScript *Node.JS *
Вы как-нибудь задумывались, сколько версий одной и той же библиотеки затягивает ваша клиентская или серверная сборка? Мне вот в какой-то момент стало интересно. Навскидку найти для этого готовый инструмент не получилось, а смотреть глазами package-lock слишком утомительно. Как мы знаем — в любой непонятной ситуации нужно писать свой npm пакет, поэтому я именно это и сделал… Дальше в посте я рассмотрю результат анализа живого проекта и сделаю пару спорных выводов.

Ну и никак нельзя обойтись без этой классической картинки:

Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 6.1K
Комментарии 2

Полезные фичи VPN

Информационная безопасность *IT-инфраструктура *Серверное администрирование *
Не хотелось писать статью про настройку впн, потому что их и без меня в интернете тысячи — выбирай на вкус и цвет.

Просто хотел напомнить просто несколько простых вещей, которые вызывают много недоразумений и вопросов. Понимаю, что на статью не тянет, но очень хочется до вас достучаться, а других способов в рунете особо и нет.
Читать дальше →
Всего голосов 29: ↑26 и ↓3 +23
Просмотры 40K
Комментарии 55

Безопасный Android для ребёнка

Гаджеты DIY или Сделай сам Лайфхаки для гиков
Подозреваю, что многие из читателей этой публикации в детстве не носили с собой мобильный телефон, или начали носить его только в старших классах — как ни странно, обыденные на сегодняшний момент мобильники появились не так давно. И даже после их появления в течение долгого времени мобильные телефоны были огромными и дорогими, и позволить их себе могли только серьёзные дядьки. Но на дворе 2018 год, и младшеклассники вовсю пользуются смартфонами.

Конечно, дети разные, и проблемы у всех в связи с этим возникают разные. У кого-то проблем вообще не возникает, и я могу только порадоваться за этих людей. Лучше всего, если получается договориться с ребёнком о разумном использовании телефона — но этот случай мы рассматривать не будем как довольно очевидный (договорились — молодцы). Будем рассматривать тот случай, когда нужно выдавать ребёнку смартфон, но при этом технически ограничивать его применение.

Читать дальше →
Всего голосов 35: ↑33 и ↓2 +31
Просмотры 54K
Комментарии 194

История взлома одного WordPress плагина — или о том, как вы допускаете уязвимости в своих проектах

Информационная безопасность *WordPress *Open source *PHP *Программирование *
Давным давно, когда я был молод и писал сайты на PHP, я написал SEO плагин для маскировки внешних ссылок для Wordpress. Поскольку с воображением у меня плохо, то назвал его WP-NoExternalLinks. За всю историю у него было 360.000 установок и, кажется, до 50.000 активных установок.

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

Читать дальше →
Всего голосов 29: ↑28 и ↓1 +27
Просмотры 15K
Комментарии 35

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

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

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

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

image
Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 10K
Комментарии 6

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

Разработка веб-сайтов *JavaScript *Разработка мобильных приложений *Node.JS *
Перевод
Моя карьера началась с написания программ для мобильных устройств. Я изучал C и Objective-C, чтобы работать с устройствами на iOS. У меня был чёткий контроль над программным обеспечением, я учился тому, как правильно работать с памятью, и проводил долгие часы за отладкой багов, которые возникали из-за моей небрежности (это было ещё до ARC). Я развивался с уклоном в сторону iOS, а так же так же начал изучать Java (и совсем недавно приступил к Kotlin) для перехода на Android.
Читать дальше →
Всего голосов 45: ↑31 и ↓14 +17
Просмотры 25K
Комментарии 28

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

Информационная безопасность *Разработка веб-сайтов *JavaScript *Node.JS *
Перевод

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


Пока вы не добрались до содержимого статьи, советую отложить её, отвести взгляд от монитора, и подумать на тему того, как же это происходит. Как всегда, всё гениальное просто. Ответ на поверхности. Подумали? Тогда читайте дальше.
Читать дальше →
Всего голосов 76: ↑54 и ↓22 +32
Просмотры 46K
Комментарии 120
1

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность