Предупреждение. Все материалы и методы, изложенные ниже, представлены исключительно в ознакомительных и экспериментаторских целях. Напоминаем, что взлом персональных страниц пользователей и сбор данных незаконным путём преследуется законодательством РФ (в частности УК РФ). Будьте осторожны и экспериментируйте только со своими или тестовыми аккаунтами!
Fullstack Web Developer
Бессерверный REST API «на коленке за 5 минут»
На простом примере рассмотрим создание буквально за несколько минут собственного бессерверного автомасштабируемого REST API с разбором кейса — получения списка для ресурса.
Интересно? Тогда заходим под кат!

(Источник)
Подписываемся на Kafka по HTTP или как упростить себе Веб-хуки
Использование готового HTTP -бэкенда сервисов в некоторых случаях является идеальным решением для обработки очереди сообщений:
- Балансировка из коробки. Обычно, бэкенд и так стоит за балансировщиком и имеет готовую к нагрузкам инфраструктуру, что сильно упрощает работу с сообщениями.
- Использование обычного REST-контроллера (любой HTTP-ресурс). Потребление сообщений по HTTP сводит к минимуму затраты на реализацию консюмеров под разные языки, если бэкенд разношерстный.
- Упрощение использования Веб-хуков других сервисов. Сейчас почти каждый сервис (Jira, Gitlab, Mattermost, Slack…) так или иначе поддерживает Веб-хуки для взаимодействия с внешним миром. Можно облегчить жизнь, если научить очередь выполнять функции HTTP-диспатчера.
Этот подход имеет и минусы:
- Можно забыть о легковесности решения. HTTP тяжёлый протокол, а использование фреймворков на стороне консюмера мгновенно приведёт к увеличению задержки (latency) и нагрузки.
- Лишаемся сильных сторон Poll-подхода, получая слабые стороны Push.
- Обработка сообщений теми же инстансами сервиса, которые обрабатывают клиентов, может сказаться на отзывчивости. Это несущественно, так как лечится балансировкой и изоляцией.
Я реализовал идею в виде сервиса Queue-Over-Http, о котором и пойдёт речь далее. Проект написан на Kotlin с использованием Spring Boot 2.1. В качестве брокера сейчас доступна только Apache Kafka.
Как общаться в англоязычном офисе: 14 полезных идиом

На Хабре в последние годы публикуется довольно много статей о переезде, в том числе в США и Великобританию. Обычно в таких материалах рассказывают о поиске работы и визовых вопросах, но не так много внимания уделяется дальнейшей интеграции, в том числе в рабочий коллектив.
Команда сервиса Textly опубликовала в своем блоге подборку английских идиом, которые часто используются в офисных коммуникациях. Я решила подготовить перевод этого полезного материала
Как работать с async/await в циклах JavaScript
Как запустить асинхронные циклы по порядку или параллельно в JavaScript?
Перед тем, как делать асинхронную магию, я хочу напомнить как выглядят классические синхронные циклы.
От чего зависит стоимость авиарейса на практике

Я летал не только на пассажирских самолётах, но и на грузовых. Именно на них можно посмотреть мир, встретить разных людей и попробовать сделать так, чтобы они тебя не убили. Особенно в Африке.
Но рассказать я бы хотел не про это, а про то, как работает бэк-офис до рейса.
Под бэк-офисом я понимаю целую структуру отдельных отделов внутри авиакомпании, тесно сотрудничающих между собой. «Планктоны», как их иногда в шутку называют лётный и технический составы, делают 90 % работы, связанной с организацией рейса. Остальные примерно 10 % делают уже пилоты и техники. Они на вершине этой производственной пирамиды, и они отвечают за рейс. Конкретно разгребают нестыковки служб, приходя на работу.
За что я не люблю Go
Эргономика разработки
Никогда не встречал языка, настолько открыто противостоящего удобству для разработчика. К примеру, Роб Пайк неоднократно и открыто враждебно относился к любому обсуждению подсветки синтаксиса на Go Playground. В ответ на разумно сформулированные вопросы пользователей его публичные ответы отсвечивали пренебрежением и неуважением:
Gofmt написан специально чтобы уменьшить количество бессмысленных дискуссий о форматировании кода, что отлично удалось. К сожалению, это никак не повлияло на количество бессмысленных дискуссий о подсветке синтаксиса или, как я предпочитаю её называть, spitzensparken blinkelichtzen.
И снова в ветке 2012 Go-Nuts:
Подсветка синтаксиса — для маленьких. В детстве меня учили арифметике на цветных палочках. Сейчас я вырос и использую чёрно-белые цифры.
Безликий код убьет программирование, и ничего мы с этим не сделаем
Во время очередного спора знакомый озвучил мысль, которая меня очень сильно задела. «В большинстве популярных ЯПов существует очень много разных путей сделать одно и то же. Это приводит к проблемам. А вот в Go всё не так. Философия языка такова, что на Go разные разработчики решают одинаковые проблемы одинаковым образом. Поэтому их код легко читаем, предсказуем и надежен. И поэтому крупный бизнес выбирает Go». Это достаточно мощный аргумент, над которым нужно как следует поразмыслить, прежде чем опровергать.
Поэтому я в два счета размазал его, прицепившись к отсутствию дженериков, а умную мысль унес, пожил с ней несколько дней, и в какой-то момент сформировал свое мрачное видение.
В погоне за лучшим
Статья несколько длинновата, т.к. я постарался изложить не только вход и выход, но и процесс разработки системы, возникающие по дороге вопросы и как мы их решали. Возможно, наш опыт будет полезен вам — если не целиком, то какие-то его части.
Итак, на входе — небольшая команда программистов 1С из трех человек, работающая на фиксе. Плюс я, их руководитель, по ключевой компетенции — тоже программист 1С.
Рассказ о возмутительной лёгкости взлома инфраструктуры разработки современного ПО
DeprecationWarning: crypto.createDecipher is deprecated
. Подобные оповещения об устаревших возможностях — не редкость. В частности, это сообщение выглядело вполне безобидно. Оно относилось даже не к самому проекту nodemon, а к одной из его зависимостей. Эта мелочь вполне могла остаться никем не замеченной, так как, во многих случаях, подобные проблемы решаются сами собой.
Примерно через две недели после первого упоминания этой проблемы Айртон Спарлинг всё проверил и выяснил, что причиной предупреждения была довольно глубокая новая зависимость. Сообщение исходило из странного фрагмент кода в конце минифицированного JavaScript-файла, которого в более ранних версиях библиотеки не было, и который, из более поздней её версии, был удалён. Исследование Айртона привело его к популярному npm-пакету event-stream, который загружается примерно два миллиона раз в неделю, и до недавнего времени находился под контролем опенсорс-разработчика, обладающего хорошей репутацией.
Сам себе devops или настраиваем Nginx прокси для Apache Tomcat на Ubuntu за 5 минут c https и firewall'ом

Я не админ, но иногда возникают задачи, которые проще (и интереснее) решать самому чем кому-то делегировать.
Изредка у нас появляется необходимость «поднять» servlet контейнер (чаще всего Apache Tomcat) и настроить для него проксирование, ssl termination (а проще говоря https) и все это прикрыть firewall'ом (оставив наружу только ssh и http/https).
Так получилось, что за последнюю неделю я эту задачу решал трижды (так стали звезды, а до этого — года два назад) и этот опыт трансформировался в сей небольшой опус.
Десять вещей, которые можно делать с GraalVM
От переводчика: GraalVM — новая, интересная технология, но на Хабре по ней не так много статей, которые бы могли показать примеры возможностей Graal. Статья ниже — это не просто перечисление того, что GraalVM умеет, но ещё и небольшой мастер-класс, аналогичный тому, который Chris Seaton и Олег Шелаев проводили на Oracle CodeOne 2018. Вслед за автором, призываю — пробуйте делать примеры из статьи, это действительно интересно.
В GraalVM много всего разного, и, если вы слышали это название раньше, или даже видели доклады, то все равно есть много вещей, о которых вы наверняка ещё не знаете, но которые GraalVM может делать. В этой статье мы рассмотрим разнообразные возможности, которые предоставляет GraalVM и покажем, что с их помощью можно сделать.
- Быстрое выполнение Java
- Уменьшение времени старта и потребления памяти для Java
- Комбинирование JavaScript, Java, Ruby и R
- Исполнение программ, написанных на платформо-зависимых языках
- Общие инструменты для всех языков программирования
- Дополнение JVM приложений
- Дополнение платформо-зависимых приложений
- Код Java как платформо-зависимая библиотека
- Поддержка нескольких языков программирования в базе данных
- Создание языков программирования для GraalVM
Зачем программисту стажировка на кухне — разговор с «Додо Пиццей» про гембу, .NET и открытость

Про «Додо Пиццу» уже известно много. Бизнес компании оплетен сетью технологичных сервисов, о своей истории они написали книгу, стек технологий и архитектура системы расписаны прямо на сайте, в паре кликов от главной страницы. Даже самые неприятные факапы они спокойно и открыто обсуждают на публику.
Все это здорово, и создается романтичный флер — кажется, что в «Додо Пицце» по умолчанию круто работать. Но нам было интересно понять, так ли это на самом деле.
Нет ли в открытости перегибов и подводных камней? Как люди относятся к открытым камерам на кухнях? Не являются ли технологии просто маркетинговым украшением? В конце концов, пока IT гиганты вокруг зазывают разрабов пожизненным запасом печенек и личными кофеносцами, «Додо» продвигает периодический труд на кухне — чтобы прочувствовать боль клиентов и обычных сотрудников.
«Додо Пицца» получила от своих сотрудников на «Моём круге» среднюю оценку 4,7 и среднюю рекомендацию 98%. Компанию ценят за интересные задачи, профессиональный рост и отличные отношения с коллегами.
Мы с fillpackart обо всем этом расспросили, и нам ответил Александр Андронов, СТО «Додо Пиццы».
Типизированный DSL в TypeScript из JSX
У TypeScript есть встроенная поддержка JSX синтаксиса и компилятор TypeScript'а предоставляет годные инструменты по настройке процесса компиляции JSX. По сути, это создает возможность писать типизированный DSL используя JSX. В этой статье речь пойдет именно про это — как написать DSL из г с помощью JSX. Заинтересовавшихся прошу под кат.
Иерархическое внедрение зависимостей в React и MobX State Tree в качестве доменной модели
Довелось мне как-то после нескольких проектов на React поработать над приложением под Angular 2. Прямо скажем, не впечатлило. Но один момент запомнился — управление логикой и состоянием приложения с помощью Dependency Injection. И я задался вопросом, удобно ли управлять состоянием в React используя DDD, многослойную архитектуру, и внедрение зависимостей?
Если интересно, как это сделать, а главное, зачем — добро пожаловать под кат!
Почему у React элементов есть свойство $$typeof?
О механизме React по предотвращению возможности инъекции JSON для XSS, и об избегании типовых уязвимостей.
Как зарабатывать больше в IT сфере в России?
Интернет, технологии и фриланс
Мне кажется, что сейчас вообще можно никуда не уезжать. Удаленная работа и фриланс сейчас колоссально распространены среди представителей IT-профессий. Потому что, все, что тебе нужно имеется в твоей голове. Встречи по скайпу или другим мэсэнджерам, позволяют курировать проекты, работать и даже учится. В глобальном мире по факту нет границ. Для IT-специалиста есть вариант сохранить свой образ жизни, оставаться рядом с близкими и работать по всему миру. Один момент, это часовые пояса, но с ними уж можно что-то придумать.
Flutter 1.0 — релиз 4 декабря
Позавчера, 4 декабря, прошло знаменательное для мобильных разработчиков событие: презентация Flutter версии 1.0.
Если Вы еще не слышали об этой новой технологии, то стоит сказать о ней несколько слов.
Флаттер — это набор инструментов от Google для создания нативных приложений для iOS И Android из одной кодовой базы. То есть пишем код на Dart, а затем компилируем его в приложение для iOS и в приложение для Андроид. Сама по себе идея компиляции под разные платформы из одной кодовой базы не нова. React Native, Xamarin, PhoneGap… Но только Флаттер обещает сделать приложения быстрыми и красивыми настолько же, насколько вообще могут быть быстрыми и красивыми нативные приложения для этих операционок. А может быть даже красивее. По крайней мере то, что показали на вчерашней презентации, было очень эфффектным.
Постараюсь рассказать о том, что мне больше всего понравилось в этой презентации.
«Ты крутой разраб, иди и попроси больше денег» — расскажем менеджерам, как устроен мир
Прочитал еще одну статью про «психологические типажи разработчиков». И с меня хватит. Как всегда, в этой статье предлагают узнать себя в одном из антипаттернов «плохих парней», понять, что я врежу бизнесу и начать наконец «исправляться». Я вот узнал себя в каждом типе. Я и рок-звезда, и солдат, и некомпетентный, и мечу в менеджеры… Короче, все выглядит так, что каким бы разработчиком и человеком я ни мечтал быть, бизнес увидит здесь проблему.
Знаете что? Пусть катятся к черту.
Отдел поддержки: ожидание vs реальность

Приехав в провинциальный город из Москвы, я собирался устроиться начальником ИТ-отдела в какую-нибудь фирму. Пройдя в Москве повышение квалификации и все этапы работы от первой линии до третьей, поняв что менеджмент и управление людьми\процессами мне нравится и мне это по плечу, я начал искать вакансию.
Подробности под катом.
Information
- Rating
- Does not participate
- Location
- Новосибирск, Новосибирская обл., Россия
- Date of birth
- Registered
- Activity