Социальные сети Рунета
Вторник, 27 октября 2020

[Из песочницы] Использование Camunda для удобной оркестровки на основе REST и Workflow Engine (без Java) Привет, Хабр! Представляю вашему вниманию перевод статьи «Use Camunda as an easy-to-use REST-based orchestration and workflow engine (without touching Java)» автора Bernd Rücker. 07.07.2020 г., перевод статьи Bernd Rücker Я часто обсуждаю микросервисную архитектуру с люд...

[Перевод] Микросервисы со Spring Boot. Часть 4. Использование Ribbon для балансировки нагрузки Это часть 4 серии о микросервисных архитектурах, в которой мы сосредоточимся на использовании Ribbon для балансировки нагрузки. Это статья входит в серию статей «Микросервисы со Spring Boot»: Часть 1. Начало работы с архитектурой микросервисов Часть 2. Создание микросерви...

Автоматизация тестирования в микросервисной архитектуре Привет, Хабр. Меня зовут Сергей Вертепов, я senior backend инженер. Это небольшая обзорная статья о том, как мы тестировали монолитное приложение Авито, и что изменилось с переходом на микросервисную архитектуру. Читать дальше →

[Перевод] Микросервисы со Spring Boot. Часть 5. Использование сервера имен Eureka В этой заключительной части нашей серии архитектур микросервисов мы научимся включать сервер имен Eureka и позволять микросервисам взаимодействовать с ним. Это статья входит в серию статей «Микросервисы со Spring Boot»: Часть 1. Начало работы с архитектурой микросервисов ...

Deep Learning: как это работает? Часть 3 — архитектуры CNN Часть 1 Часть 2 В этой статье вы узнаете: О соревновании ImageNet Large Scale Visual Recognition Challenge (ILSVRC) О том, какие существуют архитектуры CNN: LeNet-5 AlexNet VGGNet GoogLeNet ResNet О том, какие проблемы появлялись с новыми архитектурами сетей, как они ре...

[Перевод] Предметно-ориентированная микросервисная архитектура от Uber Прим. перев.: недавняя статья от Uber Engineering рассказывает о путешествии этой крупной компании к своей улучшенной версии микросервисной архитектуры. Несмотря на то, что некоторые интернет-пользователи не без причин увидели в новом подходе «всего лишь применение принципов...

Диагностируем проблемы в микросервисной архитектуре на Node.js с помощью OpenTracing и Jaeger Всем привет! В современном мире крайне важна возможность масштабировать приложение по щелчку пальцев, ведь нагрузка на приложение может сильно отличаться в разное время. Наплыв клиентов, которые решили воспользоваться вашим сервисом, может принести как большую прибыль так и...

ЗАО «Агропромбанк» самостоятельно внедряет Directum RX За 3 месяца ИТ-специалисты «Агропромбанка» (Приднестровье) развернули и адаптировали Directum RX под процессы организации. Преимущества микросервисной архитектуры помогли обеспечить отказоустойчивость решения при высокой нагрузке ...

[Из песочницы] Общий обзор архитектуры сервиса для оценки внешности на основе нейронных сетей Вступление Привет! В данной статье я поделюсь опытом построения микросервисной архитектуры для проекта, использующего нейронные сети. Поговорим о требованиях к архитектуре, посмотрим на различные структурные диаграммы, разберем каждый из компонентов готовой архитектуры, а т...

Dynamic Delivery в многомодульных проектах (часть 2) Привет! Меня зовут Юрий Влад, я Android-разработчик в компании Badoo и занимаюсь внедрением Dynamic Features в наши проекты. Я уже рассказывал, что такое Dynamic Delivery и какой у него API. В этой статье я подробнее опишу, как я использовал Dynamic Delivery в нашем прилож...

Как мы разрабатывали кроссплатформенную BPMS Всем привет! В НОРБИТ мы занимаемся SRM-решениями. Сегодня расскажем про особенный для нашей команды проект — разработку BPMS-платформы NBT. Мы не просто создали бизнес-решение для заказчика, а разработали собственный продукт с нуля, — всё это подразумевает совершенно друго...

[Из песочницы] Наука о пользовательском опыте. Использование когнитивных искажений в разработке качественных продуктов Содержание Введение. О чем эта статья Цели и дисклеймеры Часть 1. Хороший продукт Часть 2. Пользовательский опыт (UX). Что это? Часть 3. Архитектура выбора Часть 4. Архитектор выбора Часть 5. Когнитивные искажения и Пользовательский опыт Ссылка на полную версию UX CORE (105...

WebRTC через Kurento: опыт тестирования и внедрения В этой статье я поделюсь опытом работы с технологией WebRTC и медиасервером Kurento на этапе тестирования и внедрения. Расскажу с какими проблемами я столкнулся и как их решил. Я не расскажу о том как разработать приложение с нуля, но приведу много полезных ссылок. Уверен, ...

[Перевод] Микросервисы на Java: практическое руководство Вы можете использовать это руководство, чтобы понять что такое Java микросервисы, как вы их разрабатывать и создавать. А также получить обзор библиотек для разработки Java микросервисов. Примечание: Статья ~ 7000 слов, вероятно, не стоит читать ее на мобильном устройстве. До...

[Из песочницы] GSM IoT-провайдер в ЖКХ (Часть 1) Прочитал статьи автора Interfer о трудностях в Iot и решил рассказать о своём опыте IoT-провайдера. Статья первая не рекламная, большая часть материала без моделей оборудования. Постараюсь написать детали в следующих статьях. Не вижу проблем применения GSM модемов для сбо...

Dynamic Delivery в многомодульных проектах (часть 1) Привет! Меня зовут Юрий Влад, я Android-разработчик в компании Badoo и занимаюсь внедрением Dynamic Features в наши проекты. Dynamic Delivery — технология, позволяющая устанавливать и удалять части приложения прямо во время работы для того, чтобы уменьшить место, занимаемо...

Принимаем 10 000 ивентов в Яндекс.Облаке. Часть 1 Привет всем, друзья! * Эта статья написана по мотивам открытого практикума REBRAIN & Yandex.Cloud, если вам больше нравится смотреть видео, можете найти его по этой ссылке — https://youtu.be/cZLezUm0ekE Недавно нам представилась возможность пощупать вживую Яндекс.Обла...

Разбиваем монолит на микросервисы В настоящее время, задача разбивки монолита на микросервисы приобрела поистине огромную популярность в бизнес среде. Как будто все корпорации России вдруг осознали все перспективы “новой” архитектуры, получили при этом пинок от начальства и бросились брать под козырек. Ретив...

Apache Kafka для чайников Данная статья будет полезной тем, кто только начал знакомиться с микросервисной архитектурой и с сервисом Apache Kafka. Материал не претендует на подробный туториал, но поможет быстро начать работу с данной технологией. Я расскажу о том, как установить и настроить Kafka на W...

[Перевод] Контрольный список для ревью кода в распределенных системах points of view by sanja Микросервисная архитектура широко распространена в разработке программного обеспечения. Но организации, которые ее используют, помимо сложностей в реализации бизнес-логики сталкиваются еще и с распределенными сбоями. Ошибки распределенных вычислений...

РИТ++ 2020: консультации с инженерами Авито в Зуме Привет, Хабр! 25 и 26 мая будет РИТ++. Это большая онлайн-конференция для всех, кто делает интернет. В обычных условиях мы бы встретились на стенде Авито в зале мероприятия, но 2020 перевернул всё с ног на голову. Так что общение переноситс...

Внедрение зависимостей – проще, чем кажется? Привет, Хабр! У нас готовится к выходу второе издание легендарной книги Марка Симана, «Внедрение зависимостей в .NET» Поэтому сегодня мы решили кратко освежить тему внедрения зависимостей для специалистов по .NET и C# и предлагаем перевод статьи Грэма Даунса, где эта пар...

[Перевод] Современные архитектуры фронт-энда (часть 2) Вторая часть статьи "Contemporary Front-end Architectures", в которой рассмотрены архитектуры фронт-энда с точки зрения распределения потоков данных. Начало здесь Читать дальше →

Как добавить кодек в FFmpeg FFmpeg — это грандиозный Open Source проект, своего рода мультимедийная энциклопедия. С помощью FFmpeg можно решить огромное число задач компьютерного мультимедиа. Но все-таки иногда возникает необходимость в расширении FFmpeg. Стандартный способ — это внесение изменений в к...

[Перевод] Как приручить событийно-ориентированные микросервисы Современные микросервисные архитектуры являются событийно-ориентированными, реактивными и придерживаются хореографического подхода (в противовес к централизованному контролю через оркестратор), что позволяет им быть слабо связанными и легко изменяемыми, не так ли?TL;DR: А в...

Всё про налоги для IT-фрилансеров. Налоговая нагрузка ИП на разных режимах. Часть 3 Это третья, заключительная часть из цикла. В предыдущей статье мы подробно рассказали об УСН, патенте и налоге для самозанятых. В этой части рассчитаем налоговую нагрузку для ИП с доходом 100, 200 или 300 тыс. руб. в месяц на разных режимах. Читать дальше →

[Перевод] Как стать DevOps инженером за полгода или даже быстрее. Часть 5. Развертывание Как стать DevOps инженером за полгода или даже быстрее. Часть 1. Введение Как стать DevOps инженером за полгода или даже быстрее. Часть 2. Конфигурирование Как стать DevOps инженером за полгода или даже быстрее. Часть 3. Версии Как стать DevOps инженером за полгода или даж...

[Перевод] Использование API Gateway в качестве единой точки входа для веб-приложений и API Перевод статьи подготовлен специально для студентов курса «Архитектор высоких нагрузок». Введение Преимущества AWS, такие как высокая доступность, масштабируемость и эластичность, уже доказали свою эффективность для SaaS-провайдеров (Software-as-a-Service). При модернизац...

«Откуда ноги растут» или что предшествует программированию? Всем привет! На днях в рамках образовательной платформы OTUS запускается новый курс: «Архитектура и шаблоны проектирования». В связи со стартом мы провели традиционный открытый урок. На нём изучили особенности монолитного приложения, многоуровневой и бессерверной архитектур....

[Перевод] Архитектурный шаблон MVI в Kotlin Multipaltform, часть 1 Около года назад я заинтересовался новой технологией Kotlin Multiplatform. Она позволяет писать общий код и компилировать его под разные платформы, имея при этом доступ к их API. С тех пор я активно экспериментирую в этой области и продвигаю этот инструмент в нашей компани...

Оперативная аналитика в микросервисной архитектуре: п̶о̶н̶я̶т̶ь̶ ̶и̶ ̶п̶р̶о̶с̶т̶и̶т̶ь̶ помочь и подсказать Микросервисная архитектура, как и все в этом мире, имеет свои плюсы и свои минусы. Одни процессы с ней становятся проще, другие — сложнее. И в угоду скорости изменений и лучшей масштабируемости нужно приносить свои жертвы. Одна из них — усложнение аналитики. Если в монолите ...

[Из песочницы] Как начать писать микросервис на Spring Boot, чтобы потом не болела голова Привет! Меня зовут Женя, я Java-разработчик в Usetech, в последнее время много работаю с микросервисной архитектурой, и в этой статье хотела бы поделиться некоторыми моментами, на которые может быть полезно обратить внимание, когда вы пишете новый микросервис на Spring Boot....

[Перевод] Создание масштабируемой и отказоустойчивой архитектуры с помощью динамических микросервисов И снова здравствуйте. Как вы знаете, в марте OTUS запускает абсолютно новый курс «Архитектура и шаблоны проектирования». В преддверии старта курса перевели для вас большой материал про Создание масштабируемой и отказоустойчивой архитектуры с помощью динамических микросервисо...

[Из песочницы] Как уменьшить количество и увеличить читаемость кода в react-redux, redux-saga В этой статье я хотел бы поделиться своим опытом использования связки react-redux и redux-saga, а точнее, какой «велосипед» я использую, для уменьшения количества однотипного кода и упрощению его восприятия. Читать дальше →

Дополняя SQL. Часть 4. Работа с исключениями, влияние данных на процесс разработки. Использование ML.NET Что будет в этой статье? Это заключительная статья в цикле о жизни разработчиков IDE для баз данных. В этой части я расскажу, о том, как внедрение продуктовой аналитики повлияло на некоторые аспекты разработки. Для понимания этой статьи не обязательно читать все три предыду...

Создание отказоустойчивой ИТ инфраструктуры. Часть 4. Внедрение коммутаторов Cisco 3850 для межсетевой маршрутизации Статья предназначена для ознакомления с процессом внедрения коммутаторов третьего уровня в существующую сетевую инфраструктуру, и в основном адресована сетевым администраторам и инженерам. В ней рассказывается про настройку стека из двух коммутаторов Cisco 3850, и их использ...

Нам нужно поговорить… Иногда инженеры теряют интерес к проектам, задачам и к компании — мотивация падает, а с ней и производительность. В итоге сотрудники выгорают и/или увольняются. Для этого много причин, но самая распространенная — отсутствие внимания к успехам и проблемам инженеров. В ЦФТ ...

Как избежать программистского беспредела? Советы интегратора В предыдущей статье о проблемах внедрения ERP на промышленных предприятиях в качестве кейса к одному из пунктов был приведён «Программистский беспредел». У нас есть заказчик, сотрудники которого теперь, отправляя нам сомнительные требования, уточняют, не является ли это про...

Как смотреть WWDC 2020, если ты не разработчик Многим кажется, что WWDC — праздник только для разработчиков, и если ты дизайнер или маркетолог, то тебе там нечего ловить. На самом деле это не совсем так. Действительно, большая часть будет актуальна только разработчикам, но многое будет полезно не только им. В этой стать...

[Из песочницы] 1С-Битрикс и попытка его внедрения Привет, друзья! Меня зовут Петр, я представитель малого белорусского бизнеса со штатом чуть более 20 сотрудников. В данной статье хочу поделиться негативным опытом покупки 1С-Битрикс. Читать дальше →

Виртуальная АТС. Часть 1: Простая установка Asterisk на Ubuntu 20.04 Из-за перехода на удаленку в небольших компаниях часто возникают проблемы с телефонной связью. Обычно такие фирмы сидят в арендованных офисах, а услуги телефонии им оказывает бизнес-центр. О подключении сотрудников из дому придется позаботиться самостоятельно: самый недоро...

Избавляемся от рутины со своим плагином для PhpStorm Привет, Хабр! Я тружусь в команде Антиспама, и, как и у большинства бэкенд-разработчиков Badoo, большая часть времени у меня уходит на работу с PHP-кодом. С этой работой связано много специфических проблем и задач, которые можно решить или упростить. Когда мне надоело вруч...

[Перевод] Управление несколькими JDK в Mac OS, Linux и Windows WSL2 И снова здравствуйте. В преддверии старта курса «Разработчик Java» подготовили для вас перевод интересной статьи. Если вам, как и мне, приходится одновременно работать с несколькими проектами (как с легаси, так и с современными), а возможно, вы разрабатываете какую-то библ...

Системный подход к переменным в Ansible ansible devops codestyle Hey! Меня зовут Денис Калюжный я работаю инженером в отделе автоматизации процессов разработки. Каждый день новые сборки приложений раскатываются на сотнях серверов кампании. И в этой статье я делюсь опытом использования Ansible для этих целей. Этот ...

[Перевод] Многие дедлайны придумывают специально с целью заставить инженеров работать бесплатно Работа инженера — сплошное разочарование. Возможно, потому что у нас нет власти, а менеджеры сбрасывают на инженеров все проблемы и ожидают, что они будут решены к вчерашнему дню. В большинстве случаев задачу поставил кто-то сверху, кто именно — инженер не знает. Возможно, ...

HandsAppMVP: iOS-архитектура для студии аутсорс разработки Хороший код начинается с архитектуры, и iOS-приложения не исключение. Есть много стандартных паттернов, но цель этой статьи рассказать не о них, а об опыте адаптации одного из них и выработке собственного. Мы назвали эту адаптацию HandsAppMVP. Читать дальше →

[Из песочницы] Микросервисы или модульные системы? Как заказчику выбрать подход к IT-архитектуре продукта Микросервисная и модульная системы — это типы архитектуры IT-решений. При работе с модулями мы дорабатываем коробочную версию существующего IT-продукта. Под коробочной версией имеем в виду монолит, готовую систему с ядром, которая поставляется всем заказчикам одинаково, «ка...

Как мы распилили монолит. Часть 2, Frame Manager Привет, меня зовут Стас, я работаю в команде Тинькофф Бизнеса. В прошлой статье мой коллега Ваня рассказа, как у нас устроена архитектура приложений. Несколько раз Ваня упомянул некий Frame Manager, который служит оркестратором приложений, и сейчас я расскажу про него более ...

[Перевод] Как понять, что нейросеть решит вашу проблему. Прагматичное руководство Haystacks at Sunset Reimagined by AshnoAlice Инженер по машинному обучению Джордж Хосу задает вопрос: «Какие проблемы решает машинное обучение?». Или конкретнее, с учетом современного развития отрасли: «Какие проблемы нейросеть способна решить на практике?». Команда Mail.ru...

Как построить надежное приложение на базе Event sourcing? Привет! В этой статье я хочу рассказать, как из модного микросервисного приложения можно сделать рабочую, управляемую систему с помощью трех проверенных годами методик: на примере проекта внутренней performance-based рекламы Joom. Читать дальше →

Темная Вселенная. Часть 2 И вновь доброго времени суток! Данная статья является продолжением ранее опубликованной статьи о нашей «темной» Вселенной. В данной части мы продолжим рассмотрение различных интересных особенностей в космологии, над объяснением которых бьются множество ученых. В целом я пос...

[Из песочницы] Как внедрение процессов безопасности помогает в переходе на удаленную работу Статья описывает как мы использовали инфраструктуру безопасности для перевода всей нашей команды менеджеров и разработчиков на удаленную работу в период карантинных мероприятий и самоизоляции. Читать дальше →

Знакомимся с Needle, системой внедрения зависимостей на Swift Привет! Меня зовут Антон, я iOS-разработчик в Joom. Из этой статьи вы узнаете, как мы работаем с DI-фреймворком Needle, и реально ли он чем-то выгодно отличается от аналогичных решений и готов для использования в production-коде. Это всё — с замерами производительности, есте...

С чего начать DevOps? Понятие DevOps знакомо многим, но в своей практике я часто наблюдаю такую ситуацию, когда соискатель на должность DevOps-инженера в нашу компанию не может ответить на вопрос “А что же такое DevOps?”. В данной статье я хочу упорядочить и структурировать знания и основные пон...

[Перевод] Пример гексагональной архитектуры на Java Перевод статьи подготовлен специально для студентов курса «Разработчик Java». Как разработчикам нам часто приходится сталкиваться с легаси кодом, который тяжело поддерживать. Вы знаете как бывает сложно понять простую логику в большом запутанном спагетти-коде. Улучшение...

[Перевод] Эксплуатация большой распределённой системы: чему я научился Читая различные каналы и рассылки, я часто встречаю статьи о конкретных «болях» и проблемах, возникающих при росте компании, когда надежность и масштабируемость выходят на первый план. Эта статья — иная. Здесь нет подробного разбора конкретных архитектурных решений или пош...

Разработка hexapod с нуля (часть 8) — улучшенная математика передвижения Всем привет! В результате перехода на удаленную работу у меня появилось больше свободного времени на разработку гексапода (+2 часа в день за счет экономии на дороге). Я наконец-то смог сделать универсальный алгоритм для построения траектории движения в реальном времени. Нов...

Есть ли жизнь за МКАДом? Как мы ищем и готовим разработчиков В этой статье мы хотим поделиться опытом команды разработчиков Codeinside из Пензы о том, как в регионе найти и быстро ввести в строй нового сотрудника. Приглашаем в комментариях описать свой опыт. Вероятно, кто-то из читателей, не связанный с IT, недоумевает: разве найти р...

[Из песочницы] Особенности выпуска Unreal Engine 4 игры на iOS Приветствую. В этой статье я перечислю трудности и неочевидные моменты, с которыми лично я столкнулся при выпуске игры на iOS, а также их решения. Игра начинала создаваться на Unreal Engine 4.18, сейчас последний билд в магазине использует UE 4.24. Сначала игра была выпуще...

[Перевод] Обработка распределенных транзакций в микросервисной архитектуре Привет, Хабр! Сегодня мы предлагаем вашему вниманию небольшой материал о микросервисах и распределенной архитектуре. Он, в частности, затрагивает идею Мартина Фаулера о том, что новая система должна начинаться с монолита, а даже в развитой микросервисной архитектуре целесоо...

Война с тормозами. Оптимизация количества рендеров компонентов в React Native Привет, Хабр! Меня зовут Камо Сперцян, я занимаюсь React Native разработкой в Profi.ru. Если вы решили воспользоваться технологией React Native для быстрой доставки продуктовых фич и сосредоточились на скорости разработки, то, скорее всего, столкнётесь с проблемами производи...

[Перевод] Thanos — масштабируемый Prometheus Перевод статьи подготовлен специально для студентов курса «DevOps практики и инструменты». Фабиан Рейнарц (Fabian Reinartz) — разработчик программного обеспечения, фанат Go и любитель решать сложные задачи. Также он мэйнтейнер Prometheus и соучредитель Kubernetes SIG instr...

2 года в IT, что происходит со джуном веб-разработчиком Зачастую статьи личного опыта имеют три категории от двух типов людей: история успеха / провала от новичков; крутые статьи про сложные штуки от крутых ребят; истории про разочарование от тех же крутых ребят (но это не точно *). Гораздо реже можно встретить истории разрабо...

«Новые Былины», часть первая: Введение По многочисленным просьбам читателей начинается большой цикл статей о применении технологии бессерверных вычислений для разработки реального приложения. В этом цикле будет рассмотрена разработка приложения, тестирование и поставка конечным пользователям с использованием сов...

Маркетинг на рынке США: как SaaS-стартапу заработать десятки тысяч долларов с помощью AppSumo.com В русскоязычном интернете нет недостатка в статьях по выводу продукта на Product Hunt и другие похожие сервисы, но не так много материалов по использованию ресурса AppSumo. Я решил поделиться своим опытом продвижения продукта на американском рынке с помощью этого сервиса. ...

Конспект книги «Создание микросервисов» Я ничего не понимаю в микросервисной архитектуре, поэтому решил прочитать и законспектировать книгу Сэма Ньюмена «Создание микросервисов». На мой взгляд, получился неплохой вводный материал для людей, которые начинают погружаться в эту тему. Читать дальше →

[Из песочницы] Еще раз про усложненность архитектуры и порог входа В данной статье я коснусь вопроса порога входа в проект с устоявшейся архитектурой и дам несколько вариантов ответа на очень часто возникающий вопрос: почему так сложно? Такой вопрос частенько возникает у новичков, которые приходят на проект. Или же бывают ситуации, когда пр...

Разработка python module, чтобы продакшн радовал Всем привет! Я представляю команду разработчиков некоммерческой организации CyberDuckNinja. Мы создаём и поддерживаем целое семейство продуктов, которые позволяют облегчить разработку backend-приложений и сервисов машинного обучения. Сегодня хотелось бы затронуть тему интег...

[Перевод] Руководство по моделированию угроз для разработчиков В этой статье описаны простые и понятные шаги по внедрению моделирования угроз — подхода к проектированию защищённых систем на основе оценки рисков. В основе подхода лежит определение угроз, чтобы разработчики могли к ним подготовиться. С ростом киберугроз и желания компани...

[Из песочницы] 3 года программирования вслепую. Часть 1 Всем доброго времени суток! Хочу поделиться своим опытом из разряда «Войти в IT». Тем более, что он происходил в полностью невизуальном режиме. О незрячих людях в нашем обществе знают мало, а о незрячих программистах еще меньше. И эта статья предлагает проследить за тем, как...

Борьба с нагрузкой в PostgreSQL, помогает ли репликация в этом Андрей Сальников (Data Egret) Что делать, когда мастер сервер PostgreSQL погибает под нагрузкой? Довольно часто встречается ситуация, когда база данных не тянет существующую нагрузку и вертикальное масштабирование железа не помогает. Менять PostgreSQL на другую базу данных или переделывать архитектуру п...

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

Коммуникации внутри удаленной команды — наш опыт В этой статье мы решили немного раскрыть внутреннюю кухню. В удаленной команде один из главных элементов — коммуникации. Расскажем, как это у нас организовано, — с целевыми параметрами (SLO) и конкретикой. Читать дальше →

Профессия: тестировщик Тестировщик: Это баг или фича? Разработчик: Пока что это фича. bash.im Инженер по тестированию — моя первая специальность в ИТ-сфере в далёких уже 2010-х, как, пожалуй, и у многих. Это было классическое «войти в айти»: на тот момент имелось только экономическое образование ...

[Личный опыт] Как я переехал в Австралию всего с двумя годами опыта в разработке Продолжаем публикации из рубрики личный опыт. Сегодня iOS-разработчик Игорь Никитин, который два года назад переехал в Сидней, поделится опытом поиска работы, обустройстве на новом месте и впечатлениями от устройства жизни в Австралии. Передаем ему слово! Всем привет, мен...

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

Как мы нарисовали на карте несколько тысяч интерактивных объектов без вреда для перформанса Привет, меня зовут Дарья, и я Frontend-разработчик юнита Гео в Авито. Хочу поделиться опытом того, как мы сделали на вебе новый поиск по карте, заменив кластеры более удобным решением и сняв ограничение на количество отображаемых объектов. В статье я расс...

Перфоманс фронтенда как современное искусство: графики, код, кулстори Всем привет. В предыдущих статьях мы говорили о базовых вещах оптимизации: раз и два. Сегодня я предлагаю с разбега окунуться в одну часть из тех задач, которыми занимается команда архитектуры фронтенда в hh.ru. Я работаю в команде архитектуры. Мы не только перекладываем фай...

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

5 бесплатных курсов для ИИ-инженеров от Microsoft Привет, Хабр! В прошлом году мы делали серию статей-подборок бесплатных курсов. Она понравилась сообществу, и мы решили сделать еще три подборки, правда уже по немного другими тематикам. Как и раньше, мы не будем заранее спойлерить для кого именно будут следующие подборки, ж...

Digital-мероприятия в Москве c 3 по 9 августа Подборка мероприятий на неделю ML Party: онлайн-митап 04 августа (вторник) онлайн бесплатно В современных сервисах на основе ML очень многое зависит от выбора архитектуры нейросети. 4 августа на ML Party инженеры и тимлиды расскажут о разных архитектурах — популярных и, на...

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

Как защитить свой публичный сайт с ESNI Привет Хабр, меня зовут Илья, я работаю в платформенной команде компании Exness. Мы разрабатываем и внедряем базовые инфраструктурные компоненты, которые используют наши продуктовые команды разработки. В этой статье я бы хотел поделиться опытом внедрения технологии encrypt...

[Из песочницы] Внедрение CRM глазами заказчика Тема внедрения CRM систем неоднократно освещалась на Хабре во множестве статей, которые в основном написаны представителями компаний-разработчиков или интеграторами CRM решений, цель которых продать вам свои услуги. Данная статья написана представителем заказчика и может быт...

Искусственный интеллект в области юриспруденции. Статья 2 Введение Анализ актуальной в настоящее время темы искусственного интеллекта и его применения в области юриспруденции мы начали с обзора инструментов синтаксического и семантического анализа текстов, которые применяются при разработке LegalTech-решений. В комментариях к преды...

[Перевод] Фольклор программистов и инженеров (часть 2) Продолжение подборки историй из интернета о том, как у багов иногда бывают совершенно невероятные проявления. Первая часть тут. Читать дальше →

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

Используем DI в Angular по максимуму — концепция частных провайдеров В Angular очень мощный механизм Dependency Injection. Он позволяет передавать по вашему приложению любые данные, преобразовывать и переопределять их в нужных частях. Поэтому мы можем делать архитектуру приложений более простой и гибкой: понятный поток данных, минимальная св...

[Перевод] Антипаттерн “Репозиторий” в Android Перевод статьи подготовлен в преддверии старта курса «Android Developer. Professional». Официальное руководство по архитектуре приложений Android рекомендует использовать классы репозитории (Repository) для «предоставления чистого API, чтобы остальная часть приложения мог...

Автоматизация системных тестов на базе QEMU (Часть 2/2) Это вторая часть статьи, посвященной автоматизации системного тестирования на основе виртуальных машин. Первую часть можно найти здесь. В этой части статьи мы будем использовать навыки, полученные в первой части, для реальной автоматизации системных тестов. В конце статьи мы...

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

Пишем тренажер слепой печати на чистом JavaScript. Часть 1 Здравствуйте! В преддверии старта курса «Fullstack разработчик JavaScript» один из наших авторов решил поделиться своим опытом создания тренажера для слепой печати. А мы же, в свою очередь, хотим показать вам данный материал. Всем привет! Сегодня я решил показать, как нап...

[Перевод] Фольклор программистов и инженеров (часть 3) Последняя часть подборки историй из интернета о том, как у багов иногда бывают совершенно невероятные проявления. Первая часть, вторая часть. Читать дальше →

[Из песочницы] Программируй себя. Как найти работу в IT Я работаю Software Engineer в Farmers Insurance. Мой отдел занимается внедрением чат-бота в структуры бизнеса и его усовершенствованием для уменьшения нагрузки на службу поддержки компании. Сейчас один из моих проектов — анализ сообщений от клиентов и предсказание интента ...

Паттерн «сага» как способ обеспечения консистентности данных Всем привет. Уже сейчас в OTUS открывает набор в новую группу курса «Highload Architect». В связи с этим я продолжаю серию своих публикаций, написанных специально для этого курса, а также приглашаю вас на свой бесплатный демо урок по теме: «Индексы в MySQL: best practices и ...

О чем стоит задуматься при внедрении дежурств Автор статьи «Effective DevOps» Райн Дэниелс (Ryn Daniels) делится стратегиями, которые каждый может использовать для создания более качественных, не раздражающих и устойчивых ротаций дежурных Oncall. С появлением Devops, многие инженеры в наши дни так или иначе организую...

Не консолью единой: как я поднял IPSmanager и развернул лендинг с IPad 3 Я думаю, что все на Хабре наверняка знают, как поднять сайт на VPS, используя терминал и SSH-соединение. Но что делать, если у тебя под рукой есть только старенький планшет и нужно развернуть лендинг здесь и сейчас? Можно ли поднять сайт, просто кликая в веб-интерфейсе в IS...

[Перевод] Preload в php 7.4: Composer и выбор файлов для предзагрузки Мы в Badoo активно занимаемся переходом на PHP 7.4 и с большим энтузиазмом ждём возможности использовать новую функцию preload. Не так давно мы рассказывали о наших экспериментах с ней. Судя по всему, сообщество взбудоражено не меньше, чем мы. Разработчики фреймворков актив...

[Перевод] C++ vtables. Часть 2 (Virtual Inheritance + Compiler-Generated Code) Перевод статьи подготовлен специально для студентов курса «Разработчик С++». Интересно развиваться в данном направлении? Смотрите запись мастер-класса «Практика использования Google Test Framework»! Часть 3 — Виртуальное наследование В первой и второй части этой статьи мы г...

[Перевод] Life in the Fast Lane Серия статей о GC Don’t Fear the Reaper Life in the Fast Lane Go Your Own Way. Часть первая: Стек Go Your Own Way. Часть первая: Куча В первой из серии статей о GC я представил сборщик мусора в языке D и...

[Перевод] Концепции, лежащие в основе Web Audio API Доброго времени суток, друзья! В этой статье объясняются некоторые концепции из теории музыки, на основе которых работает Web Audio API (WAA). Зная эти концепции, вы сможете принимать взвешенные решения при проектировании аудио в приложении. Статья не сделает вас опытным ...

Организация автотестов на примере мобильного приложения для СЭД + более качественная, но менее смешная версия обложки Рано или поздно все приходят к АТ. Ситуация, когда это происходит поздно, понятна, а когда рано? И как понять, что уже можно? Статья основана на опыте одной команды: расскажу про наши предпосылки и поводы внедрения ав...

Embox на процессоре Эльбрус. Или никогда не забывайте о том, что получили при разведке Данная статья является логическим завершением серии статьей “восхождение на Эльбрус” об ознакомлении Embox с процессорной архитектурой Эльбрус (E2K) . Почему логическим завершением, потому что в результате удалось через telnet запустить приложение, которое выводит на экран ...

Архитектура для разработчиков и админов: кому какие навыки нужны? Классифицировали знания архитектуры в зависимости от уровня и деятельности специалистов. Памятка для тех, кто хочет прокачать свои навыки проектирования приложений или ПО, но не достаточно хорошо ориентируется в какой последовательности их осваивать. Читать дальше →

[Из песочницы] Моделирование бизнес-процессов как часть проекта по внедрению ERP-системы Перед началом очередного проекта по внедрению информационной системы, охватывающей большинство участков функционирования предприятия я решил написать ряд статей со своими соображениями по обоснованию того факта, что на крупных промышленных предприятиях, особенно на предприят...

UML для разработчиков Интернет полон статей про UML, вы найдете сотни примеров для каждого вида диаграмм, и без проблем создадите свои, нотация не сложная. Но так ли уж необходимо тратить на это время? Наш богатый опыт говорит «Да». Если у вас в команде более 2 человек и проект от 3 месяцев, то у...

[Перевод] Паттерн PageObject в Kotlin для UI-тестирования Android Это перевод статьи ведущего Android & iOS разработчика Yahoo (Verizon Media) Брама Йе. Он рассказывает о внедрении паттерна PageObject в свои инструментальные тесты, который делает их более гибкими и легко модифицируемым в зависимости от изменений пользовательского инт...

Предвзятый и субъективный взгляд на резюме разработчика Привет! Недавно мои коллеги из hh.ru провели вебинар, где разбирали резюме разработчика. Я решил поделиться своей точкой зрения на этот счет. В этой статье мы поговорим о том, как разработчики создают резюме. Я расскажу о том, что меня, как интервьюера, мотивировало и вооду...

Как мы рекомендуем новинки каталога в онлайн-кинотеатре ivi (+ код на Python) В блоге онлайн-кинотеатра ivi накопилось достаточно статей про архитектуру рекомендательной системы Hydra. Однако рекомендации — это не только внешний API, но и алгоритмы, которые живут «под капотом» и реализуют достаточно сложную бизнес-логику. В этой статье я расскажу о п...

[Перевод] История потоковых мультипроцессоров Nvidia Последние выходные я потратил на освоение программирования CUDA и SIMT. Это плодотворно проведённое время закончилось почти 700-кратным ускорением моего «рейтрейсера на визитке» [1] — с 101 секунд до 150 мс. Такой приятный опыт стал хорошим предлогом для дальнейшего изучен...

[Перевод] Создание микросервиса на Quarkus, Kotlin и Gradle Введение В предыдущей статье было приведено краткое описание процесса создания микросервиса на современных JVM фреймворках, а также их сравнение. В этой статье будет более детально рассмотрен недавно вышедший Quarkus на примере создания микросервиса с использованием упомяну...

Популярные ошибки в английском среди IT-специалистов. Часть 2: Произношение Моя статья «Популярные ошибки в английском среди IT-специалистов» собрала много комментариев с полезными дополнениями. И я решила выпустить вторую часть, теперь посвященную Произношению. Читать дальше →

[Перевод] Работа с непредвиденными данными в JavaScript Одна из основных проблем в работе с динамически типизированными языками заключается в том, что невозможно всегда гарантировать правильность потока данных, так как невозможно принудительно задать для параметра или переменной значение, например отличное от null. В таких случ...

[Перевод] Как я неделю был стажером SRE-инженера. Дежурство глазами инженера ПО SRE-инженер — стажер Для начала позвольте представиться. Я — @tristan.read, фронтэнд-инженер в группе Monitor::Health GitLab'а. На прошлой неделе мне выпала честь побыть стажером у одного из наших дежурных SRE-инженеров. Целью было ежедневное наблюдение за тем, как дежурный...

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

Дополняя SQL. Часть 2. Оптимизация работы со строками и открытия файлов Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight. Что будет в этой статье? Это вторая статья в цикле о жизни разработчиков IDE для баз данных. Ее структура будет похожа на первую. Как и в первой я расскажу о проблемах с которыми мы сталкивались...

Интернационализация: как сделать веб доступным для всех Ecma International, Technical Committee 39 или по-простому TC39 — это группа JavaScript-разработчиков, создателей реализаций технологий, академиков и других заинтересованных сторон, которые вместе с сообществом поддерживают и развивают JavaScript как платформу. Участники TC...

Rust. Borrow checker через итераторы Привет, Хабр! Я уже около года изучаю и, в свободное время, пишу на расте. Мне нравится как его авторы решили проблему управления памятью и обошлись без сборщика мусора — через концепцию заимствования. В этой статье подойду к этой идее через итераторы. Последнее время scal...

[Из песочницы] Flask-DJ: Django (mvc) структура для проекта на flask Всем привет! Когда я впервые столкнулся с Flask, у меня сразу возник вопрос по построению архитектуры проекта. Прочитав пару статей на Хабре (https://habr.com/ru/post/275099/ и https://habr.com/ru/post/421887/), я вспомнил свой опыт создания проектов на Django, и решил сде...

Тёмная Вселенная. Часть 1 Доброго времени суток, уважаемое хабрасообщество! Как я и обещал после прошлой статьи по теории струн, сегодня мы попробуем приоткрыть завесу тайн и пробежаться по костылям новым веяниям в космологии — попробуем взглянуть на тернистый путь, который прошли ученые, и разобрать...

[Перевод] Понимаем и ищем уязвимости типа Open Redirect Перевод статьи подготовлен в преддверии старта курса «Безопасность веб-приложений». Одной из наиболее распространенных и тем не менее игнорируемых веб-разработчиками уязвимостей является Open Redirect (также известная как «Непроверенные переадресации и пересылки»). Веб-са...

[Перевод] Swift Property Wrappers Если вы использовали SwiftUI, то наверняка обращали внимание на такие ключевые слова, как @ObservedObject, @EnvironmentObject, @FetchRequest и так далее. Property Wrappers (далее «обёртки свойств») — новая возможность языка Swift 5.1. Эта статья поможет вам понять, откуда же...

[Перевод] Руководство Google по стилю в C++. Часть 10 Часть 1. Вступление … Часть 9. Комментарии Часть 10. Форматирование … Эта статья является переводом части руководства Google по стилю в C++ на русский язык. Исходная статья (fork на github), обновляемый перевод. Читать дальше →

Приточная вентиляция совмещенная с канальным кондиционером (часть 1 — электрическая) Хочу поделиться опытом проектирования, монтажа и эксплуатации своей системы приточной вентиляции совмещенной с канальным кондиционером. Система собиралась в 2012-2013 годах и с тех пор находится в постоянной эксплуатации. Статья разделил на две части: в первой описана клас...

[recovery mode] Украденное резюме, человек, который ушел в Кемерово, призыв кандидата и другие «увлекательные» истории трэш-собеседовани За время работы в IT-рекрутинге у нас накопилось много историй о смешных, нелепых и странных собеседованиях как от разработчиков, так и от HR. Поэтому решили запустить рубрику «Трэш-собеседования», где будем делиться подобным контентом. В этой статье собрали 13 историй: стра...

[Из песочницы] Предварительная обработка данных Всем привет! Я веб-разработчик и вот уже несколько лет интересуюсь машинным обучением. Поскольку в повседневной рабочей парктике мне приходится решать менее интересные для меня задачи, не связанные с машинным обучением, время от времени я забываю то, о чем когда-то читал или...

Микросервисы: как соблюсти контракт Переход к микросервисной архитектуре требует пересмотра подхода к разработке, тестированию, сопровождению, проектированию – иными словами, ко всем аспектам жизненного цикла программных компонентов. В этом посте мы расскажем о практиках, к которым пришла команда архитекторов ...

Забор из рулона — радиопрозрачные инженерные заграждения В статье «Охрана периметра — будущее уже сейчас» я писал о проблемах существующих классических систем, и о том, как сейчас разработчики их решают. Несколько абзацев публикации были посвящены ограждениям. Я решил развить эту тему и познакомить читателей Хабра с РПЗ — радиопр...

Объединяем закрытый WhatsApp и открытый SIP – Часть 1 Предыдущая статья «Как избежать блокировки в WhatsApp», хотя и получила много минусов, но тем не менее в течении 2 суток была самой читаемой статьей на Хабре – набрала более 20 тыс просмотров. Поэтому я решил что нужно продолжать с хакингом монстров рассказывать о различны...

[Из песочницы] История одного проекта или как я 7 лет создавал АТС на базе Asterisk и Php Наверняка у многих из вас, как и у меня, была идея сделать что-нибудь уникальное. В этой статье я опишу технические проблемы и решения, с которыми пришлось столкнуться при разработке АТС. Возможно, это кому-то поможет решиться на свою идею, а кому-то пройти по протоптанной д...

Собеседование здорового человека Эта статья написана как ответ на статью «Собеседование в Додо Пиццу» со стороны разработчика с опытом синьора. Я не претендую на истинность суждений, мне хотелось бы выразить довольно популярное среди моих знакомых мнение о процессе найма в частности и жизни разработчика в ц...

Пишем шеллкод под Windows на ассемблере В этой статье я хочу показать и подробно объяснить пример создания шеллкода на ассемблере в ОС Windows 7 x86. Не смотря на солидный возраст данной темы, она остаётся актуальной и по сей день: это стартовая точка в написании своих шеллкодов, эксплуатации переполнений буферо...

Уязвимости сетей 5G Пока энтузиасты с трепетом ждут массового внедрения сетей пятого поколения, киберпреступники потирают руки, предвкушая новые возможности для наживы. Несмотря на все старания разработчиков технология 5G содержит уязвимости, выявление которых осложняется отсутствием опыта ра...

Как уменьшить потребление wifi модулей в десять и более раз Добрый день, Всем!!! Данная статья в основном касается популярного модуля ESP8266 (ESP8285). Недавно на одном из форумов мне задали вопрос о протоколе ESP-NOW. В итоге решил рассказать о способах сокращения потребления датчиков и исполнительных устройств, работающих по WiFi,...

Будни OEMщика (Часть 2) Для тех, кто не читал первую часть статьи, скажу, что в данной статье под OEMщиком подразумевается специалист, который занимается подготовкой Windows к тиражированию на множество устройств. Из первой части Вы узнали, как быстро создать и развернуть образ системы. Помните, чт...

Unity + git = дружба: часть 1 джентльменский набор Система контроля версий git уже давно стала стандартом де-факто в мире разработки, но для большинства разработчиков на Unity не секрет, что существует ряд трудностей связанных с особенностями Unity, которые мешают эффективно использовать ее совместно с git. Вот список типи...

Как управлять состоянием в Angular по мере роста приложения Допустим, перед вами стоит задача написать фронтенд-приложение. Есть ТЗ с описанием функционала, тикеты в баг-трекере. Но выбор конкретной архитектуры лежит на вас. Порой трудно заранее понять, какая архитектура будет удачной, а какая нет. Особую сложность представляет орга...

Логирование и трассировка запросов — лучшие практики. Доклад Яндекса В Яндекс.Маркете большая микросервисная архитектура. Браузерный запрос главной страницы Маркета рождает десятки вложенных запросов в разные сервисы (бэкенды), которые разрабатываются разными людьми. В такой системе бывает сложно понять, по какой именно причине запрос упал ил...

5 способов провалить внедрение DDD Спустя годы после выхода "Domain-Driven Design", идеи Эванса вошли мейнстрим. Разработка через моделирование должна была уменьшить неопределенность, позволить разрабатывать ПО за меньшее число итераций. Должна была, но ничего не вышло. На собеседованиях и митапах я...

Изучаем VoIP-движок Mediastreamer2. Часть 2 Материал статьи взят с моего дзен-канала. Создаем тональный генератор В предыдущей статье мы выполнили установку библиотеки медиастримера, инструментов разработки и проверили их функционирование, собрав пробное приложение. Сегодня мы создадим приложение, которое сможет пропи...

Как стерилизовали венерианские аппараты Несколько раз меня спрашивали о способах стерилизации советских аппаратов, отправлявшихся на Венеру, и о том, могли ли на них занести микроорганизмы. Решил дать развернутый ответ. Читать дальше →

«Специалист с опытом зарабатывает от 100 тыс AUD в год». История переезда российского разработчика в Австралию Юра Галустов больше 10 лет работал в российских компаниях и дорос от разработчика до CTO. Но несколько лет назад решил переехать в Австралию. О том, почему он переехал и почему именно в Австралию, как там живется, как получить визу и переехать, как найти работу и построить к...

[Перевод] Разбираемся в моделях кода архитектуры x64 «Какой моделью кода мне воспользоваться?» — часто возникающий, но нечасто разбираемый вопрос при написании кода для архитектуры х64. Тем не менее, это довольно интересная проблема, и для понимания генерируемого компиляторами машинного кода х64 полезно иметь представление о м...

[Из песочницы] Flutter. BlOC, Provider, async – архитектура «по полочкам» Вступление Когда пытаешься написать приложение, то первое с чем сталкиваешься – это как организовать архитектуру приложения. А когда еще при этом речь идет про Flutter, так голова совсем может пойти кругом от того, что выдает Гугл — Vanilla, Scoped Model, BLoC, MVP, MVC, MVV...

ML и DS оттенки кредитного риск-менеджмента Всем привет. Мы команда Advanced Analytics GlowByte и запускаем цикл статей о моделировании в задачах управления кредитным риском. Цель цикла — кратко рассказать о сфере, расширить словарь профессиональных терминов и дать ссылки на полезные статьи и книги. В вводной стать...

[Перевод] Основы нейросетей в 100 строках кода (часть 1) В трёх частях этой статьи мы: Напишем нейросеть с нуля на Python и обучим её алгоритмом градиентного спуска. Применим её к датасету The Wisconsin Cancer Data-set и предскажем по 9 различным признакам, является ли опухоль доброкачественной или злокачественной. Подробнее иссл...

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

О том как написать и опубликовать смарт-контракт в Telegram Open Network (TON) О том как написать и опубликовать смарт-контракт в TON О чем эта статья? В статье я расскажу о том, как поучаствовал в первом (из двух) конкурсе Telegram по блокчейну, не занял призовое место и решил зафиксировать опыт в статье, чтобы он не канул в Лету и, возможно, помог ко...

Грабли на пути к keep-alive Увеличение активности обмена данными между микросервисами зачастую является проблемой в архитектуре современных IT решений. Выжать максимум и выжить любой ценой — серьёзный вызов для любой разработки. Поэтому поиск оптимальных решений — это не прекращающийся процесс. В стать...

Python (+numba) быстрее си — серьёзно?! Часть 1. Теория Давно собирался написать статью о numba и о сравнении её быстродействия с си. Статья про хаскелл «Быстрее, чем C++; медленнее, чем PHP» подтолкнула к действию. В комментариях к этой статье упомянули о библиотеке numba и о том, что она магическим образом может приблизить скор...

[Перевод] История о пропавших DNS-пакетах от техподдержки Google Cloud От редактора блога Google: Интересовались ли вы когда-нибудь тем, как инженеры Google Cloud Technical Solutions (TSE) занимаются вашими обращениями в техподдержку? В сфере ответственности инженеров технической поддержки TSE лежит обнаружение и устранение указанных пользовате...

Архитектура и дизайн Android приложения (мой опыт) Хабр, привет! Сегодня я хочу рассказать об архитектуре, которой я следую в своих Android приложениях. За основу я беру Clean Architecture, а в качестве инструментов использую Android Architecture Components (ViewModel, LiveData, LiveEvent) + Kotlin Coroutines. К статье прил...

Солнечная электростанция на балконе. Личный опыт Привет Хабр. Эта статья является продолжением экспериментов с солнечными панелями в городской квартире, первые опыты делались три года назад, но затем из-за переезда все пришлось свернуть и распродать. Однако опыт, как известно, не пропьешь, и было решено с учетом полученно...

Новые архитектуры нейросетей Новые архитектуры нейросетей Предыдущая статья «Нейросети. Куда это все движется» В этой статье кратко рассматриваются некоторые архитектуры нейросетей, в основном по задаче обнаружения объектов, чтобы найти (или хотя бы попытаться найти) будущие направления в этой быстро р...

[Перевод] Реализация SOLID и слоистой архитектуры в Node.js с TypeScript и InversifyJS Привет, Хабр! Предлагаю вашему вниманию перевод статьи Implementing SOLID and the onion architecture in Node.js with TypeScript and InversifyJS автора Remo H. Jansen В этой статье мы рассмотрим архитектуру, известную как слоистая (onion). Слоистая архитектура — подход к пост...

[Перевод] Продуктовые стратегии для затрат перехода Перевод статьи подготовлен в преддверии старта курса «Product Manager IT-проектов». В своей предыдущей статье мы говорили о трех категориях затрат перехода: финансовых, процедурных и реляционных. Как можно использовать затраты перехода, чтобы повысить ценность вашего прод...

[Перевод] Как стать DevOps инженером за полгода или даже быстрее. Часть 2: Конфигурирование Как стать DevOps инженером за полгода или даже быстрее. Часть 1. Введение Освежим память по-быстрому В первой части я утверждал, что работа инженера DevOps заключается в создании полностью автоматизированных цифровых конвейеров, которые перемещают код от машины разработчика...

Нейросети. Куда это все движется Статья состоит из двух частей: Краткое описание некоторых архитектур сетей по обнаружению объектов на изображении и сегментации изображений с самыми понятными для меня ссылками на ресурсы. Старался выбирать видео пояснения и желательно на русском языке. Вторая часть состоит...

Документирование микросервисов в LeanIX (EAM) Расскажу о нашем опыте автоматического документирования 150+ микросервисов в системе LeanIX Enterprise Architecture Managment. Многое получилось, как мы и хотели, для чего-то пришлось делать специальные доработки, часть вопросов не смогли решить. Но в любом случае мы получи...

Обзор архитектуры и сервисов Тинькофф-журнала Привет! Тинькофф-журнал выпускает статьи уже 5 лет. За это время из блога на Вордпрессе он вырос в большую самодельную систему из десятков проектов и инструментов. Я в Т—Ж управляю разработкой и сегодня в общих чертах расскажу об архитектуре журнала и сервисах, на которых...

[Из песочницы] Способы и примеры внедрения утилит для проверки безопасности Docker Привет, Хабр! В современной реальности из-за возрастающей роли контейнеризации в процессах разработки не на последнем месте стоит вопрос обеспечения безопасности различных этапов и сущностей, связанных с контейнерами. Осуществление проверок в ручном режиме является трудоём...

Развертывание в Docker и Kubernetes образа StatsD+Grafana В начале моего изучения Docker и Kubernetes мне нехватало простого и понятного примера, с которым можно было бы «поиграться», изучая особенности этой среды. Этой статьей хотелось бы закрыть этот пробел. Здесь я расскажу об интеграции .NET Core приложения с Telegraf и Grafana...

Odyssey: архитектура, настройка, мониторинг. Андрей Бородин Предлагаю ознакомиться с расшифровкой доклада начала 2020 года Андрея Бородина "Odyssey: архитектура, настройка, мониторинг" Совсем недавно мы выпустили версию 1.0 нашего пулера соединений Odyssey. Он призван решить проблемы управления соединениям высоконагруженных...

Google Play In-App Review API: пошаговое руководство по внедрению Летом 2020 года появилась новая классная функциональность в библиотеке Play Core — In-App Review [1]. При помощи этой фичи можно реализовать диалог с отзывом и оценкой пользователя. Это очень удобно и не ломает пользовательский сценарий. Фича полезна для повышения рейтинга и...

Пора на свалку Никогда не думал, что это случится со мной, но, похоже, я выгорел. А ещё мне стрёмно. Да, это ещё одна статья про выгорание. Я тут на днях смотрел на свою RSS-читалку и заметил, что под тегом «C++» у меня где-то три сотни непрочитанных статей. Я не прочитал ни одной статьи ...

Группа разработчиков предлагает перейти на UTF-8 Недавно на Hacker News опубликовали манифест программистов из Тель-Авива. Они предложили сделать UTF-8 решением по умолчанию для хранения текстовых строк в памяти и коммуникации. Материал породил активную дискуссию, и мы решили разобраться в ситуации, рассмотреть аргументы ...

Как переиспользовать код с бандлами Symfony 5? Часть 6. Тестирование Поговорим о том, как прекратить копипастить между проектами и вынести код в переиспользуемый подключаемый бандл Symfony 5. Серия статей, обобщающих мой опыт работы с бандлами, проведет на практике от создания минимального бандла и рефакторинга демо-приложения, до тестов и ре...

Переезд из СНГ в Чехию, собственный опыт (часть 2) Обещанного ждут два года, и я свое слово держу. В предыдущем материале я делился личным опытом переезда в Чехию и сегодня продолжу раскрывать тонкости, связанные с жизнью за рубежом. Под катом подробно про трудоустройство, визы, быт. Читать дальше →

Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ. Решение задач с r0от-мi Crypto. Часть 2 В данной статье узнаем про функцию crypt, узнаем как подбирать пароли к ZIP архиву с незашифрованными именами файлов, познакомимся с утилитой xortool, а так же разберемся с генератором псевдослучайных чисел. Предыдущие статьи на эту тему: Часть 1 — Кодировки, шифр сдвига,...

[Из песочницы] Asterisk — это болид «Формулы-1», а не рейсовый автобус Asterisk — фи, это же моветон Здравствуйте уважаемые читатели этого замечательного ресурса. По уже сложившейся традиции — являюсь давним читателем habr'а, но только сейчас решил сделать пост. Что, собственно, побудило к написанию? Честно сказать, и сам не знаю. То ли притяну...

Советы по работе с экосистемой Huawei от «Лаборатории Касперского» Мобильная экосистема Huawei Mobile Services продолжает расти, и в этой статье мы попросили поделиться опытом и рассказать свои впечатления о работе с платформой мобильных разработчиков из «Лаборатории Касперского». Под катом то, как они адаптировали свои приложения, какие ин...

Спартанское обучение нейронных сетей Одна из проблем обучения нейронных сетей — переобучение. Это когда алгоритм научился хорошо работать с данными, которые он видел, а на других он справляется хуже. В статье мы рассказываем, как попытались решить эту проблему, совместив обучение градиентным спуском и эволюцион...

Унифицируй это: как Lamoda делает единообразными свои Go сервисы Мы широко используем микросервисную архитектуру, хоть и не считаем ее панацеей, и чуть больше 2 лет назад начали переходить на язык Go. Он сравнительно прост и, на мой взгляд, очень хорошо подходит для создания простых, небольших и быстрых микросервисов. Эта простота имеет и...

Игра на WebAssembly, часть 2: уровни и опыт, админка В предыдущей статье получилось сделать прототип игры с вопросами. Но не получилось сделать это полноценно на WebAssembly. В этот раз предлагаю конвертировать этот прототип, сделав с него полноценное WebAssembly приложение, а так же добавить к нему атрибуты большинства игр — ...

Применение CQRS & Event Sourcing в создании платформы для проведения онлайн-аукционов Коллеги, добрый день! Меня зовут Миша, я работаю программистом. В настоящей статье я хочу рассказать о том, как наша команда решила применить подход CQRS & Event Sourcing в проекте, представляющем собой площадку для проведения онлайн-аукционов. А также о том, что из эт...

Опыт использования MobX в большом приложении Всем привет! Меня зовут Сергей, я работаю в команде разработки приложений контроля качества Tinkoff. Поделюсь опытом нашей команды в использовании библиотеки Mobx и расскажу о деталях работы с ней в связке с React. В этой статье не будет описания базовых концепций. Я расск...

Как управлять рисками в продуктовом бэклоге Когда мы планируем разработку, в нашем бэклоге лежат задачи. Рядом с каждой из них могут незаметно притаиться риски — один или несколько. Давайте поговорим о том, как эти риски увидеть и что с ними делать потом. Это обобщение моего опыта в роли тимлида — что я делал по повод...

Основа любого программирования на… пазлах Приветствую, Хабровчане! В этой статье я хочу рассказать о своем опыте работы преподавателем программирования на C++ в колледже при техническом университете. Это был уникальный опыт в моей жизни, который многому меня научил. Когда меня просят рассказать интересный факт о св...

О переезде с Redis на Redis-cluster Приходя в продукт, который развивается больше десятка лет, совершенно не удивительно встретить в нем устаревшие технологии. Но что если через полгода вы должны держать нагрузку в 10 раз выше, а цена падений увеличится в сотни раз? В этом случае вам необходим крутой Highload...

(S)SDLC, или Как сделать разработку безопаснее. Часть 3 Этой статьей мы завершим небольшой цикл о построении процесса безопасной разработки на основе SAST — статического анализа кода на безопасность. В первой части мы разобрали основные вопросы, возникающие при внедрении SAST в процесс разработки. Во второй части остановились на ...

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

[Перевод] Что такое Spring Framework? От внедрения зависимостей до Web MVC Вы можете использовать это руководство для различных целей: Чтобы понять, что такое Spring Framework Как работают ее основные фичи: такие как внедрение зависимостей или Web MVC Это также исчерпывающий FAQ (Перечень часто задаваемых вопросов) Примечание: Статья ~ 9000 слов...

[Из песочницы] Учимся разворачивать микросервисы. Часть 1. Spring Boot и Docker Привет, Хабр. В этой статье я хочу рассказать о своем опыте создания учебной среды для экспериментов с микросервисами. При изучении каждого нового инструмента мне всегда хотелось его попробовать не только на локальной машине, но и в более реалистичных условиях. Поэтому я ре...

[Перевод] API как продукт: как монетизировать свою работу, когда разбираешься только в бэкенде В этой статье я перескажу свой опыт создания, развёртывания и продажи API на специализированном маркетплейсе. Мне не пришлось делать вебсайт или придумывать, как внедрить решение для обработки платежей – я просто написал код и развернул API. Чтобы создать стартап, нужна к...

[Из песочницы] DLL & Python DLL & Python Недавно меня заинтересовала тема использования DLL из Python. Кроме того было интересно разобраться в их структуре, на тот случай, если придется менять исходники библиотек. После изучения различных ресурсов и примеров на эту тему, стало понятно, что примене...

Работаем с Cutter — основы реверса. Решение задач на реверсинг с r0от-мi. Часть 3 В данной статье разберемся с декомпиляцией ELF файлов в Cutter на примере легеньких задач. Прошлые части введения в реверс: Часть 1: C, C++ и DotNet decompile — основы реверса Часть 2: Реверсим MIPS и Golang — основы реверса Организационная информ...

[Перевод] Как построить четкие модели классов и получить реальные преимущества от UML. Часть 2 Вторая часть перевода статьи Леона Старра, инженера программных моделей. Первая часть вот здесь. В этой части — о семантике и о том, что отличает хорошую модель. Читать далее

Как исправить повышенную нагрузку процессора в macOS Catalina   Пользователи, обновившиеся до macOS Catalina 10.15.7, жалуются на повышенную нагрузку процессора. Это происходит из-за процесса accountsd, который отображается в системе, как потребляющий свыше 400% мощности. Раньше эта проблема тоже была, но возникала крайне ре...

Изучаем VoIP-движок Mediastreamer2. Часть 9 Материал статьи взят с моего дзен-канала. Дуплексное переговорное устройство В прошлой статье было анонсировано дуплексное переговорное устройство, а в этой мы его сделаем. Читать дальше →

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

[Перевод] Портирование API на TypeScript как способ решения проблем React-фронтенд Execute Program перевели с JavaScript на TypeScript. А бэкенд, написанный на Ruby, трогать не стали. Однако проблемы, связанные с этим бэкендом, заставили разработчиков проекта задуматься о переходе с Ruby на TypeScript. Перевод материала, который мы сегодня п...

Разработка «простого генератора напряжения» в соответствии с ГОСТ Р МЭК 61508 (IEC 61508) В данной статье будут рассмотрены необходимые шаги для создания устройства, отвечающего общим требованиям функциональной безопасности (ФБ). А также будет предложена архитектура простейшего «безопасного» (safety) генератора напряжения. Так как управляя напряжением, можно уп...

[Из песочницы] Избегайте внедрения внешних библиотек в свой проект Часто можно услышать фразу: «Зачем писать свой велосипед? Возьми готовую либу и пользуйся! За тебя уже все написали». Особенно часто подобные выражения слышат начинающие разработчики. При решении любой задачи они начинают смотреть готовые либы и бездумно тянуть их в свой про...

Maltego Часть 4. ВК, Instagram, LinkedIN и другие фантастические твари И снова здравствуйте, дорогие друзья. Мы опять готовимся окунуться в прекрасный мир OSINT. Статьи в нашем цикле прибавляются, поэтому пора уже вводить некое подобие оглавления, ведь дальше их будет только больше. Итак, что мы уже разобрали в Maltego: Часть 1 — Что такое ...

[Из песочницы] Сохраните в закладках эту статью, если вы новичок в Python (особенно если изучаете Python сами) Привет, Хабр! Представляю вашему вниманию перевод статьи "Bookmark this if you are new to Python (especially if you self-learn Python)" в двух частях (1, 2) c простыми, но полезными советами и трюками в Python. Если из-за скучной карантинной жизни вы решили погру...

[Перевод] Как стать DevOps инженером за полгода или даже быстрее. Часть 6. Запуск приложения Как стать DevOps инженером за полгода или даже быстрее. Часть 1. Введение Как стать DevOps инженером за полгода или даже быстрее. Часть 2. Конфигурирование Как стать DevOps инженером за полгода или даже быстрее. Часть 3. Версии Как стать DevOps инженером за полгода или даж...

Wrike: 5 лет с OKR Тема OKR (Objectives and Key Results) сейчас становится все более популярной в бизнесе. Во многих компаниях рассматривают возможность внедрить у себя эту методологию. Мы в Wrike перешли на OKR в 2015 году, и на тот момент это была достаточно новая и малоизученная тема, по кр...

Архитектура — Декларативна. Реализация — Императивна. Все остальное — Бюрократия Что такое Архитектура? Чем Архитектура отличается от Дизайна? Где граница между Архитектурой и Реализацией? Можно ли увидеть Архитектуру? Можно ли тестировать Архитектуру? Чем отличаются Инженерный и Эволюционный подходы к Архитектуре? Что такое Хорошая Архитектура? В чем со...

Разработка и тестирование на платформах Эльбрус программы для томографической реконструкции Smart Tomo Engine (+2 видео) Сегодняшняя статья будет посвящена сразу двум нашим любимым темам: компьютерной томографии (КТ) и отечественному процессору Эльбрус. Мы расскажем, чем отличается рентгенограмма от результатов КТ и объясним, зачем такой большой и серьезной машине, как томограф, был бы кстати ...

[Из песочницы] Архитектура нейронной сети RetinaNet Данная статья посвящается объяснению устройства архитектуры нейронной сети RetinaNet. Обзор был проведён мною в ходе выполнения дипломной работы, а так как для его написания потребовалось обращаться исключительно к англоязычным источникам и собрать найденную информацию воеди...

Вентиляция с рекуперацией в квартире. Без воздуховодов и СМС Написать этот пост меня подтолкнула недавняя статья о приточной вентиляции в квартире. Я было хотел оставить развёрнутый комментарий, но понял что правильнее будет написать статью, т.к. мой опыт использования комнатных рекуператоров в качестве основной системы вентиляции мож...

Компьютерное зрение. Свой алгоритм или решение из «коробки»? Меня зовут Александра Царева. Я и мои коллеги работаем над проектами в сфере компьютерного зрения в Центре машинного обучения компании «Инфосистемы Джет». Мне хочется поделиться нашим опытом разработки и внедрения проектов в сфере компьютерного зрения. Сегодня речь пойдет ...

Настройка CI/CD в Plesk+Github Actions для проекта на Flask+Angular В этой статье я поделюсь своим опытом настройки CI/CD с использованием панели управления Plesk и Github Actions. Сегодня будем учиться деплоить простенький проект с незамысловатым названием «Helloworld». Он написан на Python-фреймворке Flask, с воркерами на Celery и фронтен...

Рубрика «Читаем статьи за вас». Март 2020. Часть 1 Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество! Статьи на сегодня: Fast Differentiable Sorting and Ranking (Google Brain, 2020) MaxU...

Рубрика «Читаем статьи за вас». Апрель 2020. Часть 1 Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество! Статьи на сегодня: TResNet: High Performance GPU-Dedicated Architecture (DAMO Acade...

Рубрика «Читаем статьи за вас». Май 2020. Часть 1 Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество! Статьи на сегодня: Efficient Document Re-Ranking for Transformers by Precomputing Te...

Рубрика «Читаем статьи за вас». Май 2020. Часть 2 Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество! Статьи на сегодня: ECA-Net: Efficient Channel Attention for Deep Convolutional Neura...

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

Основы линейной регрессии Здравствуй, Хабр! Цель этой статьи — рассказать о линейной регрессии, а именно собрать и показать формулировки и интерпретации задачи регрессии с точки зрения математического анализа, статистики, линейной алгебры и теории вероятностей. Хотя в учебниках эта тема изложена стр...

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

9 советов по повышению производительности Vue В этой статье собрано девять советов о том как повысить производительность вашего приложения на Vue, увеличить скорость отображения и уменьшить размер бандла. Читать дальше →

SwayWM — сам себе UnixPorn Всем привет. В этой статье я опишу свой опыт настройки и использования sway — тайлингового оконного менеджера для Linux. Читать дальше →

Как переиспользовать код с бандлами Symfony 5? Часть 7. Релизный цикл, установка и обновление Поговорим о том, как прекратить копипастить между проектами и вынести код в переиспользуемый подключаемый бандл Symfony 5. Серия статей, обобщающих мой опыт работы с бандлами, проведет на практике от создания минимального бандла и рефакторинга демо-приложения, до тестов и ре...

История архитектуры Dodo IS: ранний монолит Или каждая несчастная компания с монолитом несчастлива по-своему.Разработка системы Dodo IS началась сразу же, как и бизнес Додо Пиццы — в 2011 году. В основе лежала идея полной и тотальной оцифровки бизнес-процессов, причем своими силами, что еще тогда в 2011 году вызывало ...

Вы решили присоединиться к разработке open source продукта. К чему готовиться? Здравствуйте, написать эту статью меня побудил мой опыт участия в open-source проекте Apache Cloudstack, куда я периодически отправляю фичи и багфиксы. Меня нельзя назвать активным контрибьютором, поскольку я вношу вклад лишь время от времени, когда мне что-то требуется от п...

Разработка в Wargaming – встреча с Максимом Барышниковым, Head of Platform (ч.II) Эта статья — продолжение беседы с Максимом Барышниковым, Wargaming, Head of Platform. Первая часть, посвященная технологиям и архитектуре, уже была была опубликована на Хабре (https://habr.com/ru/post/496954/). Эта часть посвящена управлению в программистской компании. Из не...

[Перевод] Современные архитектуры фронт-энда В статье "Contemporary Front-end Architectures" рассмотрены архитектуры фронт-энда с точки зрения потоков данных в исторической ретроспективе. Материал состоит из трех частей Теория и история Реализация Перспективы Читать дальше →

Технический обзор архитектуры СХД Infinidat InfiniBox – модерновая система хранения, сразу попавшая в правую часть магического квадрата. В чем ее уникальность? Краткая предыстория Что такое InfiniBox? Это система хранения компании Infinidat. Что такое компания Infinidat? Это компания, созданная Моше Янаем (создатель...

[Из песочницы] Создание нейросети по распознаванию лиц на фотографиях из Вконтакте В этой статье будет рассказан опыт создания нейросети по распознаванию лиц, для сортировки всех фотографий из беседы ВК на поиск определённого человека. Без какого-либо опыта написания нейросетей и минимальными знаниями Python. Читать дальше →

[Личный опыт] Как специалисту по Data Science с тремя годами опыта устроиться в Google и переехать в Лондон Привет, Хабр! Продолжаем делиться с вами историями IT-эмиграции. После Амстердама, Риги, Сиднея настала очередь Лондона. Анастасия Манохина – Cloud-инженер в Google, поделится своим опытом прохождения собеседований и переезда в британскую столицу. Передаем ей слово! Всем ...

Виртуальная АТС. Часть 2: Решаем проблемы безопасности с Asterisk и настраиваем звонки В предыдущей статье мы рассмотрели простую установку IP АТС (IP PBX) Asterisk 16 из штатного репозитория на виртуальный сервер с Ubuntu 20.04. В такой конфигурации выставлять службу VoIP на всеобщее обозрение не стоит: необходимо сделать дополнительные настройки, связанные...

Как мы снизили стоимость Google Maps API на 94% Это была очень интересная проблема для нашей команды разработчиков и инженеров. Но мы решили ее и это помогло нам поддерживать высокое качество опыта в Cityflo, одновременно обеспечивая постоянные инновации.

[Перевод] Как стать DevOps инженером за полгода или даже быстрее. Часть 4. Пакетирование программ Как стать DevOps инженером за полгода или даже быстрее. Часть 1. Введение Как стать DevOps инженером за полгода или даже быстрее. Часть 2. Конфигурирование Как стать DevOps инженером за полгода или даже быстрее. Часть 3. Версии Рассмотрим, как упаковать ваш код для легко...

Рубрика «Читаем статьи за вас». Март 2020. Часть 2 Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество! Первая часть мартовской сборки обзоров опубликована ранее. Статьи на сегодня: NeRF: ...

[Перевод] Как микросервисы Netflix справляются с Pub-Sub данными Перевод статьи подготовлен специально для студентов курса «Архитектор высоких нагрузок». Введение В микросервисной архитектуре Netflix передача наборов данных от одного к нескольким конечным точкам может быть крайне сложной. Эти наборы данных могут содержать все, что уго...

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

Когда я на часах Мы тут открыли позицию инженера поддержки в команде GoLand. Это сподвигло меня рассказать, как это у нас происходит. На Хабре уже есть хорошая статья об этом из 2014 года. Но, во-первых, GoLand тогда еще не существовал. А, во-вторых, многое с тех пор поменялось. Хотя забавно...

Snort или Suricata. Часть 2: установка и первичная настройка Suricata Если верить статистике, объем сетевого трафика увеличивается примерно на 50% каждый год. Это приводит к росту нагрузки на оборудование и, в частности, повышает требования к производительности IDS/IPS. Можно покупать дорогостоящее специализированное железо, но есть вариант по...

Использование Graylog и NLog для сбора логов от приложений на C#. Личный опыт КДПВ Хабр, приветствую! Описанное ниже ни в коем случае не tutorial или best practice. Я решил всего лишь агрегировать и задокументировать свои достижения в поставленном вопросе. Надеюсь, содержимое данной статьи позволит ищущим информацию по логированию почерпнуть что-т...

[Из песочницы] Разбираем проблемы ГОСТ Р 53894-2016 «Менеджмент знаний. Термины и определения» Здравствуйте. Я очередной инженер с завода, рассказывающий о странностях на российских предприятиях и около них. Читать дальше →

Персонализированный интерфейс. Часть 1. Плюсы и минусы концепции Всем привет! Хочу поделиться своим опытом одной экспериментальной разработки, за которой стоит большая, на мой взгляд, идея: персонализированный интерфейс, который конфигурируется на основе потребностей клиента. Представьте, что два человека смотрят в одну и ту же программ...

[Перевод] Оптимизация кода на Python с помощью ctypes Перевод статьи подготовлен специально для студентов курса «Разработчик Python». Внимание: код в этой статье лицензирован под GNU AGPLv3. Я написал это руководство, поскольку не смог найти такого, которое будет объединять в себе все полезное о ctypes. Надеюсь, эта статья ...

[Перевод] Canary Deployment в Kubernetes #1: Gitlab CI Мы будем использовать Gitlab CI и ручной GitOps для внедрения и использования Canary-деплоя в Kubernetes Статьи из этого цикла: (эта статья) Canary Deployment при помощи ArgoCI Canary Deployment при помощи Istio Canary Deployment при помощи Jenkins-X Istio Flagger Выполн...

First DI: Первый DI на интерфейсах для Typescript приложений Делюсь одной из своих библиотек которая называется First DI. Она уже много лет помогает мне решить проблему внедрения зависимостей в браузерных приложениях для таких библиотек как React, Preact, Mithril и другие. При написании First DI за основу была взята идеология DI библи...

i18n в Angular Angular i18n Цель статьи — это описать детальные шаги интернационализации вашего приложения на Angular с помощью родного функционала. На входе мы имеем коммерческое приложение. Как традиционно положено сначала сделали, запустили, а потом решили что ой, у нас же есть другие р...

Ленивая подгрузка переводов с Angular Если вы когда-нибудь участвовали в разработке крупного angular-проекта с поддержкой локализации, то эта статья для вас. Если же нет, то возможно, вам будет интересно, как мы решили проблему скачивания больших файлов с переводами при старте приложения: в нашем случае ~2300 с...

Отъявленные баги и как их избежать на примере ClickHouse Если вы пишете код — готовьтесь к проблемам. Они обязательно будут, и ожидать их стоит со всех сторон: от вашего кода и компилятора, от операционной системы и железа, а еще пользователи иногда подкидывают «сюрпризы». Если вы отмасштабировали кластер до космических масштабов,...

[Перевод] Понимаем JIT в PHP 8 Перевод статьи подготовлен в преддверии старта курса «Backend-разработчик на PHP» TL;DR Компилятор Just In Time в PHP 8 реализован как часть расширения Opcache и призван компилировать операционный код в инструкции процессора в рантайме. Это означает, что с JIT некоторые о...

[Из песочницы] Чистая архитектура с Typescript: DDD и слоистая архитектура Привет, Хабр! В последнее время уделяю много внимание архитектуре и решил поделиться с сообществом переводом статьи Clean Architecture with Typescript: DDD, Onion автора André Bazaglia. Введение На протяжении более 6 лет моего профессионального опыта, я имел возможность раб...

Разработка приложений и Blue-Green deployment опираясь на методологию The Twelve-Factor App с примерами на php и docker Для начала немного теории. Что такое The Twelve-Factor App? Простыми словами, это документ призванный упростить разработку SaaS приложений, помогает тем что, осведомляет разработчиков и DevOps инженеров о проблемах \ практиках которые чаще всего встречались в разработке со...

[Перевод] Валидация и обработка исключений с помощью Spring Каждый раз, когда я начинаю реализацию нового REST API с помощью Spring, мне сложно решить, как выполнять валидацию запросов и обрабатывать бизнес-исключения. В отличие от других типичных проблем API, Spring и его сообщество, похоже, не согласны с лучшими методами решен...

[Перевод] Знакомимся с Event Sourcing. Часть 1 Перевод статьи подготовлен в преддверии старта курса «Java Developer. Professional». Event sourcing (источники событий, регистрация событий, генерация событий) — это мощный архитектурный шаблон, при котором все изменения, вносимые в состояние приложения, сохраняются в той ...

[Из песочницы] Создаем EXE Самоизоляция это отличное время приступить к тому, что требует много времени и сил. Поэтому я решил заняться тем, чем всегда хотел — написать свой компилятор. Сейчас он способен собрать Hello World, но в этой статье я хочу рассказать не про парсинг и внутреннее устройство ...

[Перевод] Хакерский фольклор У некоторых компьютерных терминов необычное происхождение. Многие слова относятся к давно забытым технологиям. В этой статье мы сдуем пыль времён с некоторых терминов, которыми пользуемся каждый день. Бо́льшая часть статьи взята из Википедии, но найти пояснения не так-то п...

Как инженеру профессионально развиваться в компании. Конспект митапа из серии “Инженер заходит в бар" Это текстовая расшифровка митапа на тему профессионального развития инженера в компании. Дискуссия состоялась между CTO, техлидами и тимлидами из Miro, X5 Retail Group, FunBox, ManyChat и MadRobots. Митап прошёл в рамках серии «Инженер заходит в бар», где инженеры из разных...

[Перевод] Фольклор программистов и инженеров (часть 1) Это подборка историй из интернета о том, как у багов иногда бывают совершенно невероятные проявления. Возможно, вам тоже есть что рассказать. Читать дальше →

16 советов по разработке для андроид на языке Kotlin. Часть 3 И еще раз здравствуйте! В преддверии старта базового курса по Android-разработке, делимся заключительной частью статьи «16 советов по разработке для андроид на языке Kotlin». Читать первую часть Читать вторую часть LATEINIT Одной из ведущих особенностей Kotlin является е...

Как происходит рендеринг экрана сообщений ВКонтакте Что делает ВКонтакте, чтобы уменьшить лаги отрисовки? Как отобразить очень большое сообщение и не убить UiThread? Как уменьшить задержки при скролле в RecyclerView? Мой опыт основан на работе отрисовки экрана сообщений в Android-приложении VK, в котором необходимо показы...

Jenkins Pipeline: заметки об оптимизации. Часть 1 Меня зовут Илья Гуляев, я занимаюсь автоматизацией тестирования в команде Post Deployment Verification в компании DINS. В DINS мы используем Jenkins во многих процессах: от сборки билдов до запуска деплоев и автотестов. В моей команде мы используем Jenkins в качестве плат...

Видеоурок Теплицы: ZOOM выпустил обновление, безопасен ли он теперь? Мы сделали уже три видеоурока по ZOOM и хотели было прерваться, но в Сети появилась информация о небезопасности этого сервиса и звучали даже заявления о «критических уязвимостях». Надо сказать, что проблемы в ZOOM действительно были, но разработчики буквально стремительно, ...

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

[Перевод] 21 извлеченный урок за 21 год программирования Доброго времени суток, друзья! 7 апреля 2020 года. Сегодня для меня очень важный день. Сегодня исполняется ровно 21 год с того момента, как я начал писать код (делать это профессионально, зарабатывать этим себе на хлеб). Кажется, что это было только вчера… сегодня я — че...

Kubernetes в духе пиратства: наш путь к микросервисам и готовый шаблон для внедрения Привет, я Юрий Буйлов, занимаюсь разработкой в CarPrice, а также внедряю практики DevOps, микросервисы и Kubernetes. Хочу рассказать про Kubernetes в духе пиратства — только не про управление большим красивым кораблем на парусах, а, скорее, про флот маленьких неприглядных ...

Стандарт Wi-Fi 6E находится в разработке Федеральный комитет по связи (FCC) усердно работает над улучшением стандартов Wi-Fi и объявила о том, что Wi-Fi 6E находится на стадии разработки. Wi-Fi 6 уже вышел на рынок, а многие продукты поддерживают эту технологию. Представители FCC, планируют развернуть Wi-Fi следу...

[Из песочницы] Raspberry Pi и модем SIM7600E 4G HAT Добрый день всем. В этой статье я хотел бы рассказать о своем опыте использования 3G-модема SIM7600X, который можно подключать к Raspberry Pi. Статья может оказаться полезной тем из вас, кому необходимо использовать Raspberry автономно, в условиях отсутствия WIFI-сети. Пара...

[Перевод] Как и зачем в Lyft улучшали Kubernetes CronJobs Прим. перев.: эту статью, в оригинале состоящую из двух частей, написал Kevin Yang — software engineer из компании Lyft, которая хорошо известна в Kubernetes-сообществе как минимум благодаря созданию Envoy. В новом материале автор делится интересным опытом миграции большого ...

Как мы решаем проблему отсутствия UI\UX дизайна в 1С с помощью Java Script и React.js Ранее уже писал о том, что в 1С UI\UX дизайна нет. Эта статья про то, как мы с помощью таких технологий, как Java Script, React.js и Google Firebase решили сделать web-сервис, который позволит с наименьшими трудозатратами, в сравнении с 1С: Конфигуратором и уже тем более 1...

PostgreSQL 13: happy pagination WITH TIES На прошедшей неделе вышло сразу две статьи (от Hubert 'depesz' Lubaczewski и автора самого патча Alvaro Herrera), посвященные реализованной в грядущей версии PostgreSQL 13 поддержке опции WITH TIES из стандарта SQL:2008: OFFSET start { ROW | ROWS } FETCH { FIRST | NEXT } [ c...

[Перевод] Как облако Alibaba Cloud управляет десятками тысяч кластеров Kubernetes с помощью… Kubernetes Куб-на-кубе, метакластеры, соты, распределение ресурсов Рис. 1. Экосистема Kubernetes в облаке Alibaba Cloud С 2015 года Alibaba Cloud Container Service for Kubernetes (ACK) является одним из самых быстрорастущих облачных сервисов в Alibaba Cloud. Он обслуживает многочисле...

ViennaNET: набор библиотек для backend’а. Часть 2 Сообщество .NET-разработчиков Райффайзенбанка продолжает краткий разбор содержимого ViennaNET. О том, как и зачем мы к этому пришли, можно почитать в первой части. В этой статье пройдемся по еще не рассмотренным библиотекам для работы с распределенными транзакциями, очеред...

[Перевод] Одна из функций Chrome создаёт огромную нагрузку на корневые DNS-серверы Браузер Chromium, активно развивающийся open-source-родитель Google Chrome и нового Microsoft Edge, обратил на себя серьёзное негативное внимание из-за функции, которая задумывалась с благими намерениями: она проверяет, не «похищает» ли провайдер пользователя несуществующи...

21 апреля Live! Badoo Localization Meetup Всем привет! Я Алексей Тимин, отвечаю за техническую часть системы локализации в Badoo. У нас 150 000 фраз и текстов, переведённых на 52 языка для нескольких приложений. У каждого приложения свои особенности аудитории, определенный стиль общения с пользователем, версии дл...

In-memory архитектура для веб-сервисов: основы технологии и принципы In-Memory — набор концепций хранения данных, когда они сохраняются в оперативной памяти приложения, а диск используется для бэкапа. В классических подходах данные хранятся на диске, а память — в кэше. Например, веб-приложение с бэкендом для обработки данных запрашивает их в ...

Настоящее суммирование интернет-каналов — OpenMPTCPRouter Можно ли объединить несколько интернет-каналов в один? Вокруг этой темы куча заблуждений и мифов, даже сетевые инженеры с опытом часто не знают о том, что это возможно. В большинстве случаев, объединением каналов ошибочно называют балансировку на уровне NAT или failover. Н...

API Style Guide, или не заставляйте пользователей думать Привет! Меня зовут Лёша Руцкой, и я — продуктовый менеджер в компании Wrike. До этого работал в Adform и PandaDoc. Последние пять лет я занимаюсь всем, что связано с интеграциями и API. Wrike — это SaaS продукт для совместной работы и управления проектами. Мы хотим, чтоб...

NewNode — децентрализованная CDN от разработчика FireChat На днях я наткнулся на упоминание некоего NewNode: NewNode — SDK для мобильной разработки, который делает любое приложение неубиваемым для любой цензуры и DDoS, и драматически снижает нагрузку на сервере. P2P сеть. Может работать в теории без интернета. Выглядело довольно...

Как мы создаем свой продукт. Часть первая, исследовательская Мир IT разнообразен донельзя. Кто каких только технологий и решений не создает, что только не разрабатывает! Компании творят продукты каждая по-своему, но многие процессы схожи, а потому могут оказаться полезным опытом для заимствования. Вот мы и подумали: а почему бы не ра...

Видеоконференция просто и бесплатно В связи с резко возросшей популярностью удаленной работы, мы решили предложить услугу видеоконференции. Как и большинство других наших услуг, она бесплатна. Чтобы не изобретать велосипед, основа построена на open-source решении. Основная часть базируется на WebRTC, что позво...

Что почитать на праздниках Длинные праздники впереди, а это значит, что будет время вернуться к закладкам в Read later или еще раз перечитать важные статьи уходящего года. В этом посте мы собрали и подготовили для вас список из самых интересных материалов из нашего блога за 2019 год и надеемся, что ...

[Перевод] Многопоточность. Модель памяти Java (часть 2) Привет, Хабр! Представляю вашему вниманию перевод второй части статьи «Java Memory Model» автора Jakob Jenkov. Первая часть тут. Аппаратная архитектура памяти Современная аппаратная архитектура памяти несколько отличается от внутренней Java-модели памяти. Важно понимать апп...

Хобби ИТшника на удаленке: 3D-печать, лазеры, DIY-классика Мысли о том, чем же заняться в свободное от работы время и разнообразить рутину, претерпели определенные изменения на фоне последних мировых событий, существенно ограничивших наши круги общения и сферы развлечений. Если вы читаете это, то скорее всего так или иначе связан...

Этюд по реализации Row Level Secutity в PostgreSQL В качестве дополнения к Этюд по реализация бизнес-логики на уровне хранимых функций PostgreSQL и в основном для развернутого ответа на комментарий. Теоретическая часть отлично описана в документации Postgres Pro — Политики защиты строк. Ниже рассмотрена практическая реализ...

[Перевод] Flutter. Упрощаем компоновку виджетов с помощью Dart расширений В версии Dart 2.7 нам представили расширения, позволяющие разработчикам добавлять новые функциональные возможности в уже существующие типы. Расширения могут быть отличным помощником не только, когда мы пишем бизнес-логику, но и когда у нас есть другие задачи! Примером такой...

[Перевод] Нововведения CSS – Июль 2020 (Gap, Aspect ratio, Masonry, Subgrid) Приветствую. Представляю вашему вниманию перевод статьи «CSS News July 2020», опубликованной 7 июля 2020 года автором Rachel Andrew В последнее время скорость внедрения новых возможностей технологий веб-разработки существенно увеличилась по сравнению с тем, как это было ран...

[Перевод] DataHub с открытым исходным кодом: платформа поиска и обнаружения метаданных от LinkedIn DataHub с открытым исходным кодом: платформа поиска и обнаружения метаданных от LinkedIn Быстрый поиск нужных данных необходим для любой компании, которая полагается на большое количество данных для принятия решений на основе этих данных. Это не только влияет на продуктивнос...

[Перевод] На моей визитке работает Linux Перевод статьи из блога инженера Джорджа Хилларда Кликабельно Я инженер встроенных систем. В свободное время я часто ищу то, что можно будет использовать в проектировании будущих систем, или что-то из разряда моих интересов. Одна из таких областей – дешёвые компьютеры, с...

[Перевод] Руководство Google по стилю в C++. Часть 2 Часть 1. Вступление Часть 2. Заголовочные файлы … Все мы при написании кода пользуемся правилами оформления кода. Иногда изобретаются свои правила, в других случаях используются готовые стайлгайды. Хотя все C++ программисты читают на английском легче, чем на родном, приятн...

[Перевод] Антипаттерны событийно-ориентированной архитектуры И снова здравствуйте! В преддверии старта курса «Архитектор ПО» подготовили перевод еще одного интересного материала. Последние несколько лет наблюдается рост популярности микросервисной архитектуры. Есть много ресурсов, которые учат правильно ее реализовывать, однако дост...

[Из песочницы] Алгоритмы рандома В этой статье вы увидите самые разнообразные велосипеды алгоритмы для генерации случайных чисел. Про что статья Про алгоритмы генерирующие псевдослучайные числа, которые отличаются между собой качеством результата и скоростью исполнения. Статья будет полезна тем, кто хочет ...

Распаковка Huawei TaiShan 2280v2 Серверы с процессорами на архитектуре arm64 старательно входят в нашу жизнь. В этой статье мы покажем распаковку, установку и небольшой тест нового сервера TaiShan 2280v2. Читать дальше →

[Из песочницы] Академия плохого кода: переводы строк, пробелы и отступы Привет, Хабр! Представляю вашему вниманию перевод статьи «Dark code-style academy: line breaks, spacing, and indentation» автора zhikin2207 Привет, народ! Позвольте мне продолжить рассказ про нашу академию плохого кода. В этом посте мы раскроем другой путь замедления чте...

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

[Перевод] Создание блога с помощью Nuxt Content (часть первая) От переводчика: Я собирался сделать собственную статью по Nuxt Content, но наткнулся на готовую статью, которая отлично раскрывает тему. Лучше у меня вряд ли получится, поэтому я решил перевести. Написал автору в твиттер и практически сразу получил согласие. Статья будет с ...

Нейронки «с нуля», или Как мы делали помощника для наших диспетчеров техподдержки Привет, Хабр! Меня зовут Александр Соловьев, я программист компании DataLine. Хочу поделиться опытом внедрения модных нынче нейронных сетей в нашей компании. Все началось с того, что мы решили строить свой Service Desk. Зачем и почему именно свой, можно почитать моего колле...

Как работать из дома. Чек-лист удаленщика В интернете огромное количество заметок на тему удаленной работы, с лаконичным обзором минусов, плюсов и известными советами, как вытащить себя из рутины, начиная с «Первым делом снимите пижаму». В блоге Surf мы уже затрагивали эту тему в статье моей коллеги, которая поделил...

Проклятая старая CRM Весь прошлый год наши ребята допиливали CRM 2.0 с BPMS Camunda и всего десятью процессами вместо сотен статусов, а затем старались раскатать ее на пользователей и сервисы, ничего не уронив. Надеюсь, окончательно выпилив первую црм-ку (старейшую часть всего Skyeng) из нашей э...

Как идет внедрение DNS-over-HTTPS Поговорим о разработчиках браузеров, использующих новый протокол. Расскажем, почему против этой инициативы выступают интернет-провайдеры и регуляторы США и Великобритании. Читать дальше →

[Из песочницы] BPF для самых маленьких, часть нулевая: classic BPF Berkeley Packet Filters (BPF) — это технология ядра Linux, которая не сходит с первых полос англоязычных технических изданий вот уже несколько лет подряд. Конференции забиты докладами про использование и разработку BPF. David Miller, мантейнер сетевой подсистемы Linux, назыв...

[Из песочницы] Некоторые тонкости injection'а коллекций в Spring'е Всем привет! Меня зовут Владислав Родин. В настоящее время я преподаю на портале OTUS курсы, посвященные архитектуре ПО и архитектуре ПО, подверженного высокой нагрузке. Сейчас в OTUS'е открыт набор на новый поток курса Разработчик на Spring Framework. В преддверии старта к...

FigmaExport: как автоматизировать экспорт UI-Kit из Figma в Xcode и Android Studio проекты Если вы iOS- или Android-разработчик и дизайн вашего проекта разрабатывается в Figma, то скорее всего вы сталкиваетесь с проблемами при экспорте ресурсов: цвета выгрузить нельзя, а иконки и картинки экспортировать неудобно. В этой статье я расскажу, как можно облегчить себ...

[Перевод] Изменения в популярном античите BattlEye и способы их обхода Основные обновления шелл-кода BattlEye Время идёт, античиты меняются, и для повышения эффективности продукта в них появляются и исчезают функции. Год назад я подготовил подробное описание шелл-кода BattlEye в своём блоге [перевод на Хабре], и эта часть статьи станет простым...

Как Youtube и Instagram: интернационализация и локализация приложения на Python Язык Python лежит в основе всемирно известных приложений, таких как Youtube, Instagram и Pinterest. Для продвижения на мировом рынке приложению необходима локализация, то есть адаптация к особенностям той или иной страны, и интернационализация – перевод контента. В статье мы...

Дополняя SQL. Часть 1. Сложности парсинга. Истории о доработке ANTLR напильником Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight. Что будет в этой статье? Более пяти лет работаю в компании, что занимается разработкой линейки IDE для работы с базами данных. Начиная работу над этой статьей я и не представлял как много интере...

Получить выписку из Росреестра через ФГИС ЕГРН и python. Часть 2 В этой статье попробуем получить выписки из ФГИС ЕГРН с помощью python (selenium) сразу по нескольким объектам недвижимости, решим капчу с помощью сервиса anticaptcha, используя его api. При встрече с капчей нейросети трогать не будем, так как они могут показаться сложнее в ...

Nuxt as fullstack server: frontend + backend API Server (Часть 1) Часть 1: Nuxt as fullstack server: frontend + backend API Server Часть 2: Additional SSR performance with Nuxt fullstack server Разработчики Nuxt предлагают 3 метода доступа к API: Встроенный в Nuxt сервер Connect и использование serverMiddleware Интегрированные фреймво...

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

Изучаем VoIP-движок Mediastreamer2. Часть 8 Материал статьи взят с моего дзен-канала. Структура RTP-пакета В прошлой статье мы с помощью TShark выполнили захват RTP-пакетов, которыми обменивались наши приемник и передатчик. Ну а в этой мы раскрасим элементы пакета в разные цвета и поговорим об их назначении. Взглянем...

[Из песочницы] Как делать в два раза больше и получать от этого удовольствие Привет, Хабр! Я Максим, бизнес-аналитик в Тинькофф. В этой статье я поделюсь опытом нашей команды: как выполнять в два раза больше задач, переписать с нуля легаси-проект и при этом не умереть. Читать дальше →

[Перевод] Добавляем параллельные вычисления в Pandas Возможно вы сталкивались с задачей параллельных вычислений над pandas датафреймами. Решить эту проблему можно как силами нативного Python, так и с помощью замечательной библиотеки — pandarallel. В этой статье я покажу, как эта библиотека позволяет обрабатывать ваши данные с ...

Экономим копеечку на больших объемах в PostgreSQL Продолжая тему записи больших потоков данных, поднятую предыдущей статьей про секционирование, в этой рассмотрим способы, которыми можно уменьшить «физический» размер хранимого в PostgreSQL, и об их влиянии на производительность сервера. Речь пойдет про настройки TOAST и вы...

[Перевод] 10 практических рекомендаций по безопасности образов Docker. Часть 1 Перевод статьи подготовлен специально для студентов курса «Безопасность Linux». В этой статье мы хотели бы сосредоточиться на Docker и обсудить советы и рекомендации, которые обеспечивают более безопасный и качественный процесс обработки образов Docker. Итак, начнем с н...

Путь разработчика в SRE: зачем идти в инфраструктуру и что из этого выйдет Около года назад я переквалифицировался из .NET-разработчика в SRE. В этой статье делюсь историей о том, как группа опытных разработчиков отложила в сторону C# и пошла изучать Linux, Terraform, Packer, рисовать NALSD и строить IaC, как мы применяли практики экстремального пр...

[Перевод] Сделайте свое приложение масштабируемым, оптимизировав производительность ORM Перевод статьи подготовлен в преддверии старта курса «Backend-разработчик на PHP». Привет! Я Валерио, разработчик из Италии и технический директор платформы Inspector.dev. В этой статье я поделюсь набором стратегий оптимизации ORM, которые я использую, разрабатывая серв...

[Перевод] Сжатие ответов в GRPC для ASP.NET CORE 3.0 Перевод статьи подготовлен в преддверии старта курса «C# ASP.NET Core разработчик». В этом эпизоде моей серии статей о gRPC и ASP.NET Core мы рассмотрим подключение функции сжатия ответов (response compression) служб gRPC. ПРИМЕЧАНИЕ: В этой статье я рассказываю о некото...

API портал: на что обратить внимание при дизайне. Опыт Wrike Использование публичных API помогает компаниям увеличивать ценность собственного ресурса, создавать уникальный контент и удовлетворять требования различных бизнес-задач. Wrike —  не исключение. На базе API Wrike создано уже более 30 тысяч приложений. Число пользователей пр...

Всё про налоги для IT-фрилансеров. ИП и самозанятые. Часть 1 Раньше у IT-фрилансеров было только два варианта работать легально: зарегистрировать ИП на УСН или на патенте. С этого года появилась ещё одна альтернатива — стать самозанятым. Пока новый режим действует только в 4 регионах, но в 2020 году его планируют ввести на всей терри...

[Перевод] Руководство Google по стилю в C++. Часть 1 Часть 1. Вступление … Часть 8. Именование Часть 9. Комментарии … Все мы при написании кода пользуемся правилами оформления кода. Иногда изобретаются свои правила, в других случаях используются готовые стайлгайды. Хотя все C++ программисты читают на английском легче, чем на...

Мониторинг Node.js-приложения Здравствуйте! Меня зовут Ренат Саматов, я возглавляю фронтенд-направление в линейке продуктов Витрина. Большая часть наших проектов рендерится на сервере. Сегодня мы побеседуем об одном из важнейших аспектов SSR-приложения: о мониторинге. Даже в 2020-м мониторинг Node.js-...

Как мы использовали айтрекер для количественного эксперимента Привет, Хабр. На связи UX-лаборатория Авито. Сегодня хотим рассказать об опыте использования айтрекера для проведения количественного эксперимента. Серьёзных инсайтов и уроков не обещаем, просто поделимся своими мыслями. Расскажем, что вышло из идеи эксп...

AWS Lambda in Action. Часть 2: знакомимся с инструментами разработки и тестирования Этот гайд — результат личного опыта разработки и тестирования Serverless-приложений, а также маневрирования между «костылями» и «велосипедами» при попытках их протестировать. Когда я только начинал заниматься разработкой Serverless-приложений, во всем приходилось разбирать...

[Из песочницы] Как миновать мины информационных технологий В статье сформулированы некоторые проблемы информационных технологий (ИТ) и рассматривается подход к их решению, который может быть интересен разработчикам архитектур вычислительных систем и языков программирования, а также бизнесу в сфере ИТ. Но все они, исключая некоторых...

IDA Pro: каким не должен быть SDK Приветствую, Эта статья будет о том, как не нужно делать, когда разрабатываешь SDK для своего продукта. А примером, можно даже сказать, самым ярким, будет IDA Pro. Те, кто хоть раз что-то разрабатывал под неё и старался поддерживать, при чтении этих строк, наверняка, сейчас...

[Из песочницы] Анатомия системы НСИ Данная статья основана на реальных событиях, и все проблемы в ней не вымышленные. (С) В начале хотелось бы отметить, что статья не призвана показать изобретение велосипеда, потому как многие приёмы уже давно существуют в культуре разработки баз данных. Однако обобщить, п...

[Из песочницы] Изучаем VoIP-движок Mediastreamer2. Часть 1 Материал статьи взят с моего дзен-канала. Введение Эта статья является началом серии статей о реалтайм обработке медиаданных с помощью движка Mediastreamer2. В ходе изложения будут задействованы минимальные навыки работы в терминале Linux и программирования на языке Си. Medi...

KeyDB как [потенциальная] замена Redis На хабре не нашлось обзоров «более быстрой альтернативы Redis» — KeyDB. Получив достаточно свежий опыт его использования, хочется восполнить этот пробел. Предыстория достаточно банальна: однажды с большим наплывом трафика была зафиксирована значительная деградация произво...

[Перевод] Запуск Unix-подобной ОС на самодельном CPU с помощью самодельного компилятора C Два года назад я начал работать разработчиком ПО. Иногда я рассказывал своим коллегам о студенческом проекте, которым занимался на третьем курсе университета, и они восприняли его настолько хорошо, что я решил написать этот пост1. Позвольте задать вам вопрос: вы когда-нибу...

Navigation Component-дзюцу, vol. 1 — BottomNavigationView Два года назад на Google I/O Android-разработчикам представили новое решение для навигации в приложениях — библиотеку Jetpack Navigation Component. Про маленькие приложения уже было сказано достаточно, а вот о том, с какими проблемами можно столкнуться при переводе большого...

Пишем и тестируем миграции БД с Alembic. Доклад Яндекса Приложения на бэкенде могут работать с самыми разными базами данных: PostgreSQL, SQLite, MariaDB и другими. Перед разработчиками встает задача реализовать возможность легко и безопасно изменять состояние БД. Менять нужно как структуру базы, так и сами данные от одной версии ...

[Перевод] Делаем ионизатор воздуха менее, чем за $10 Перевод статьи из блога индийского инженера Амальдева В. Этот проект вызревал у меня в голове порядка двух лет, и я всё никак не мог им заняться. В проекте нет ничего сложного или слишком технологичного. Любой человек, умеющий мастерить что-либо руками, должен с ним справ...

[Перевод] Как спокойно спать, когда у вас облачный сервис: основные архитектурные советы LOST by sophiagworld В этой статей собраны некоторые общие шаблоны, помогающие инженерам работать с масштабными сервисами, к которым делают запросы миллионы пользователей.  По опыту автора, это не исчерпывающий список, но действительно эффективные советы. Итак, начнем. Пе...

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

Немного Filamentarno для инженеров и мечтателей! Часть первая. Для мечтателей. Спортивно-развлекательная. Мечта была давняя покататься на озёрных коньках, они же Nordic Skates, они же Байсы, ежели вы хотите по Байкалу катать. Нет, конечно можно было купить готовые за 100-200 $ импортные, либо отечественные за 5500 рублей. ...

Оптимизация C++: совмещаем скорость и высокий уровень. Доклад Яндекса Что влияет на скорость работы программ на C++ и как её добиться при высоком уровне кода? Ведущий разработчик библиотеки CatBoost Евгений Петров ответил на эти вопросы на примерах и иллюстрациях из опыта работы над CatBoost для x86_64. Видео доклада ...

В офисе никого: разработка игр на удаленке Дисклеймер. У нас нет «удаленных» сотрудников — в команде все равноудалены друг от друга. Просто кто-то работает (сейчас правильнее сказать «работал») в офисе, а кто-то дома или в коворкинге. Поэтому внутри мы предпочитаем термин «распределенная команда». Переход на распр...

Запоздалое похмелье 8 марта: ещё одна статья на Хабре о женщинах в ИТ «Если, по-вашему, женщина может быть кузнецом, то почему бы мужчине не быть педикюршей? Она кует, он пилит, прекрасная пара!» К/ф «Берегите женщин» Я читаю Хабр года так с 2009-го. Последние несколько лет накануне 8 марта случается вал публикаций, спецпроектов, мегапостов и...

Проектирование на системном уровне. Часть 3: Связь System Composer и тулчейна MathWorks В первых двух частях туториала мы рассматривали построение архитектуры системы и проектирование на системном уровне и заодно посмотрели на System Composer. Сама по себе архитектура системы — это отлично, но надо сделать так чтобы она была связана с разработанной системой. От...

[Перевод] Напишем и поймем Decision Tree на Python с нуля! Часть 3. Библиотека для анализа данных Pandas Привет, Хабр! Представляю вашему вниманию перевод статьи "Pythonで0からディシジョンツリーを作って理解する (3. データ分析ライブラリPandas編)". Это третья статья из серии. Ссылки на предыдущие статьи: первая, вторая В данной статье я объясню, как работать с библиотекой Pandas, чтобы создавать De...

Symbol.iterator в Javascript Это короткая, но достаточно полезная статья для продолжающих разработчиков о итераторах в Javascript. Читать дальше →

MQTTv5.0: Обзор новых функций. Часть 2 Всем привет! Приведенный ниже материал является продолжением статьи о функционале, добавленном в новой версии MQTTv5.0. Если вы уже успели ее изучить, то для вас не составит труда заметить, что большинство новых функций базируется на понятии свойств, которые можно добавлят...

Неразгаданная загадка Приветствую тебя, дорогой читатель! В этой статье я расскажу о своем опыте сделать «крутой квест» и как все накрылось медным тазом что у меня получилось. На момент публикации статьи до конца не дошел ни один из участников, поэтому если тебе интересно попробовать и, возможно...

DevOps для разработчиков (или против них?!) Подход DevOps качественно изменил процесс разработки. Если раньше программисты только писали код и прогоняли тесты, то теперь они участвуют и в развертывании проектов на продакшен. Звучит так, будто сисадмины решили переложить свои заботы на плечи разработчиков, не так ли?...

Как мы создаём отказоустойчивую почту для высоких нагрузок. Go, RethinkDB, Cloud Native архитектура и немного магии Привет, Хабр! Меня зовут Антон Герасимов, я руковожу департаментом разработки в московском центре компании МойОфис. Почти четыре года мы с командой создаём новую высоконагруженную и отказоустойчивую почтовую систему Mailion. Она предназначена для корпоративных коммуникаций и...

(S)SDLC, или Как сделать разработку безопаснее. Часть 2 – Наташ, а Наташ? Мы там, это… SAST внедрили. – Мы там всё уронили, Наташ. Вообще, всё!!! – Пайплайны стоят, очередь забита… – Ни одной сборки не прошло! Вставай, Натаааш! Вот так примерно можно проснуться на следующее утро после внедрения в разработку статического анализ...

Как (не) наломать дров на удаленке К команде InfoWatch я присоединилися недавно. Почти сразу заметил, что разработчики пользовались возможностью работать удаленно, а для продактов это почему-то считалось неуместным. Когда мы, продакты, подходили к мероприятиям по «самоизоляции», опыта удаленной совместной ра...

Как забраться на дерево Точнее, как с него спуститься. Но обо всем по порядку. Эта статья немного выбьется из привычного формата статей от PVS-Studio. Мы часто пишем о проверке других проектов, но почти никогда не приоткрываем дверь нашей внутренней кухни. Пришло время это исправить и рассказать о...

Envoy. 1. Введение Приветствую! Это небольшая статья, отвечающая на вопросы: "что такое envoy?", "зачем он нужен?" и "с чего начать?". Что это Envoy — это L4-L7 балансировщик написанный С++, ориентированный на высокую производительность и доступность. С одной стор...

Изучаем VoIP-движок Mediastreamer2. Часть 6 Материал статьи взят с моего дзен-канала. Передача звукового сигнала через RTP-поток В прошлой статье мы собрали схему дистанционного управления из генератора и детектора тональных сигналов, которые работают внутри одной программы. В этой статье мы научимся использовать про...

Использование партиционирования в MySQL для Zabbix с большим количеством объектов мониторинга Для мониторинга серверов и служб у нас давно, и все еще успешно, используется комбинированное решение на базе Nagios и Munin. Однако эта связка имеет ряд недостатков, поэтому мы, как и многие, активно эксплуатируем Zabbix. В этой статье мы расскажем о том, как минимальными у...

[Из песочницы] Игровая консоль stm32 Немного шутеров для stm32; как, зачем, что получилось. Предисловие Будучи поклонником «старой» школы шутеров с одной стороны и embedded-разработчиком с другой, я всегда испытывал интерес, как и почему авторам той эпохи удавалось воплощать новый жанр, требующий совершенно ...

Android 11 Beta и обновления для разработчиков Привет, Хабр! 10 июня вышла бета-версия Android 11! В этой статье мы хотели бы коротко рассказать о главных новинках в Android 11 Beta, Google Play и инструментах для разработчиков. А также хотели бы пригласить всех читателей на специальное онлайн мероприятие, посвященное в...

Обновление процесса CI/CD: teamcity Это вторая статья из цикла об обновлении CI/CD процессов. До этого момента осуществлялась подготовка к настройке новых средств, а именно: планирование, ежедневные митинги, решение разногласий, в общем, все без чего не получится грамотно построить рабочий процесс. И вот, все...

Как инженеры с рутинными проблемами справлялись: несколько кейсов монтажа оборудования Привет, Хабр! Меня зовут, Денис Сёмин, я руководитель отдела реализации клиентских и сетевых решений Orange Business Services в Самаре. В прошлый раз мой коллега Антон Кисляков рассказывал о том, как мы реализуем проекты в экстремальных условиях, например, при температуре...

IPFS на сервере. Хостим сайты с ноутбука Мне часто нужно опубликовать статическую страницу или сайт, демо с веб-формой или версткой. Заливать каждый раз куда-то вроде Jsfiddle не всегда удобно, да и редактировать статику в локалхосте куда быстрее и приятнее. Проблемы начинаются, когда мне нужно кому-то показать м...

Проблемы правового регулирования искусственного интеллекта Введение В 21 веке перед человечеством остро встаёт вопрос о внедрении искусственного интеллекта (далее – ИИ) в повседневную жизнь. В данной статье дефиниции «искусственный интеллект» и «робот» специально не разделяются ввиду действительной конвергенции данных понятий. ИИ...

Особенности сборки и доставки iOS-приложений В этой статье мы делимся опытом сборки и доставки пользователям приложений для iOS, который накопился у студии Plarium Krasnodar в процессе отладки CI/CD. Читать дальше →

Kubernetes на собственной инфраструктуре: «за» и «против» приватных облаков Уважаемые читатели, доброго дня! В данной статье Игорь Котенко, главный архитектор компании «Неофлекс», делится опытом развертывания платформы контейнеризации на инфраструктуре предприятия. Читать дальше →

[recovery mode] Архитектура Y messenger Y messenger разрабатывается чтобы быть одновременно и защищенным на уровне Tox, BitMessage, и удобным на уровне Telegram и WhatsApp. В этой статье я опишу как выглядит архитектура и какие решения были использованы чтобы достичь поставленных целей. Какие преимущества совреме...

[Из песочницы] Telegram-бот для управления инфраструктурой По мотивам статьи Телеграмм-бот для системного администратора (статья не моя, я только прочитал) захотел поделиться опытом создания Telegram-бота на PowerShell для управления серверами приложений. Будет текст, код и немножко картинок. Конструктивная критика приветствуется...

Linux Kernel Library: ядро Linux в форм-факторе so или dll Когда-то читал статью о выборе файловых систем «чтоб везде-везде работало». В ней в очередной раз увидел жалобы, что Ext4 замечательная файловая система, но на Windows есть только кривые неточные проприетарные драйверы. Но отмотаем ленту ещё на пару лет назад: тогда на Хабре...

Что будет, если развернуть ствол винтовки на 180 градусов Авторы популярного YouTube-канала DemolitionRanch решили на собственном опыте проверить, можно ли в реальности воплотить трюк из мультфильма и выстрелить из оружия, у которого загнут ствол. Для этого была взята настоящая винтовка и её «трансформировали». Прежде, чем удалось ...

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

Изучаем VoIP-движок Mediastreamer2. Часть 4 Материал статьи взят с моего дзен-канала. Создаем измеритель уровня сигнала В прошлой статье мы внесли ясность в корректное завершение программ использующих медиастример. В этой статье мы соберем схему измерителя уровня сигнала и научимся читать результат измерения из фильтр...

[Перевод] 6 способов значительно ускорить pandas с помощью пары строк кода. Часть 2 В предыдущей статье мы с вами рассмотрели несколько несложных способов ускорить Pandas через jit-компиляцию и использование нескольких ядер с помощью таких инструментов как Numba и Pandarallel. В этот раз мы поговорим о более мощных инструментах, с помощью которых можно не т...

Hack The Box. Прохождение RE. Metasploit, нагрузка в офисном документе, Zip Slip атака, немного о PowerSploit и токенах Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox. Надеюсь, что это поможет хоть кому-то развиваться в области ИБ. В данной статье намучаемся с нагрузками metasрloit и msfvenom, сделаем Office документ с нагрукой msvenom, рассмотрим поиск ...

Все, что вы хотели узнать про области видимости в Python, но стеснялись спросить В преддверии старта нового потока по курсу «Разработчик Python», решили поговорить про области видимости в Python. Что из этого вышло? — Читайте в материале ниже. Сегодня мы будем говорить о важных теоретических основах, которые необходимо понимать и помнить, чтобы писат...

Машинное обучение. Нейронные сети (часть 2): Моделирование OR; XOR с помощью TensorFlow.js Статья является продолжением цикла статей, посвященных машинному обучению с использованием библиотеки TensorFlow.JS, в предыдущей статье приведены общая теоретическая часть обучения простейшей нейронной сети, состоящей из одного нейрона: Машинное обучение. Нейронные сети (ча...

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

[Перевод] Как стать DevOps инженером за полгода или даже быстрее. Часть 1. Введение Целевая аудитория Вы разработчик, который хочет повернуть свою карьеру в сторону более совершенной модели DevOps? Вы являетесь классическим Ops-инженером и хотели бы получить представление о том, что означит DevOps? Или же вы не являетесь ни тем, ни другим и, потратив некото...

ProxySQL — средство для демультиплексирования соединений Здравствуйте, меня зовут Александр Яковлев, я работаю в компании Ситимобил и занимаюсь эксплуатацией. Сегодня я расскажу про очень интересный продукт ProxySQL — это высокопроизводительный MySQL Proxy, который умеет очень много — отлавливать и убивать запросы по маске, с помо...

VoiceOver на iOS: решение типовых проблем Когда берёшься адаптировать приложение для незрячих, часто что-то идёт не так: то порядок собьётся, то фокус не туда встанет. С другой стороны, есть UX, который легко пропустить, потому что не знаешь про возможные проблемы. В этой статье будем разбираться с типовыми проблема...

[Из песочницы] Кое-как одетые принцы и дворяне Читая статью «Разработчики — никакая не элита, а голые короли индустрии», разделившую Хабр на две половины: резко-негативно ЗА и резко-позитивно ПРОТИВ, а особенно обсуждение под ней, хочется кое что добавить. Я в целом согласен с автором статьи и хочу добавить аргументов в ...

Microsoft сертификация Online — записки с полей Microsoft Russia перевела статью о процессе сдачи экзамена онлайн. Через меня за последний год, так или иначе, прошли уже сотни, если не тысячи людей, готовившихся, сдавших экзамены. Многие из них сдавали онлайн, еще до Covid-19, а уже после закрытия сертификационных центр...

[Из песочницы] Логирование в микросервисной среде .Net на практике Логирование является очень важным инструментом разработчика, но при создании распределённых систем оно становится камнем, который нужно заложить прямо в фундамент вашего приложения, иначе сложность разработки микросервисов очень быстро даст о себе знать. В .Net Core 3 доба...

Премии и конкурсы для инновационных проектов. Опыт мировых вендоров Хорошо, когда у компании есть ресурсы для того, чтобы продвигать инновационные решения на рынке, широко рассказывать о своих успехах в реализации инновационных ИТ-проектов. Но на практике далеко не всегда бывает так. Часто признание получить очень нелегко. Так случилось, что...

Я 20 лет наслаждаюсь разнообразием архитектур и хочу поделиться мыслями Сначала хотел написать комментарий к статье "Я десять лет страдал от ужасных архитектур в C#...", но понял две вещи: Слишком много мыслей, которыми хочется поделиться. Для такого объёма формат комментария неудобен ни для написания, ни для прочтения. Давно читаю...

Изучаем VoIP-движок Mediastreamer2. Часть 3 Материал статьи взят с моего дзен-канала. Улучшаем пример тонального генератора В предыдущей статье мы написали приложение тонального генератора и с его помощью извлекли звук из динамика компьютера. Теперь мы обратим внимание на то, что наша программа, заканчивая работу, не ...

[Перевод] Неоморфизм с помощью SwiftUI. Часть 1 Салют, хабровчане! В преддверии старта продвинутого курса «Разработчик IOS» мы подготовили еще один интересный перевод. Неоморфный дизайн — это, пожалуй, самый интересный тренд последних месяцев, хотя, по правде говоря, Apple использовала его в качестве своего дизайнерског...

[Перевод] Валидация Kubernetes YAML на соответствие лучшим практикам и политикам Прим. перев.: С ростом числа YAML-конфигураций для K8s-окружений всё более актуальной становится потребность в их автоматизированной проверке. Автор этого обзора не просто отобрал существующие решения для этой задачи, но и на примере Deployment'а посмотрел, как они работают....

Феном, пингвин и оверклокинг (часть 2) Вторая часть статьи о личном опыте разгона старого железа под Linux, в которой рассмотрен базовый набор софта для тестирования процессора и памяти. Снова Ubuntu, но в этот раз состоится на экскурсия в не такой уж страшный мир программ с текстовым интерфейсом (графический тож...

[Перевод] 11 инструментов, делающих Kubernetes лучше Далеко не все серверные платформы, даже самые мощные и масштабируемые, удовлетворяют все потребности, как есть. Хотя Kubernetes и работает отлично сам по себе, ему может не хватить нужных частей для полноты. Вы всегда найдете частный случай, который игнорирует вашу нужду, и...

Data Fest 2020 — полностью в Online уже завтра Data Fest пройдет в этом году в онлайн формате 19 и 20 сентября 2020. Фестиваль организован сообществом Open Data Science и как обычно соберет исследователей, инженеров и разработчиков в области анализа данных, искусственного интеллекта и машинного обучения. Регистрация. Ну...

[Из песочницы] Проблемы использования Doctrine ODM в процессах-демонах Хочу рассказать о своем опыте использования Doctrine ODM в относительно небольшом PHP проекте, в котором основная кодовая база сосредоточена в процессах-демонах. И вообще как мы к Yii2 прикрутили Doctrine ODM. Сразу предупреждаю — рассказ будет очень нудным и скорее всего ин...

История разработки одного дозиметра (Часть 2) В продолжении статьи хочу поговорить о тех проблемах, на которые мне указывали люди в комментариях, рассказать о проблеме переноса прошивки с макета на итоговое устройство, т.к. с этим так же возникли проблемы, продемонстрировать работу устройства, и рассказать об изменениях...

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

Отладка микроконтроллеров ARM Cortex-M по UART Часть 2 В прошлой статье я рассказывал про прерывание DebugMon и регистры с ним связанные. В этой статье будем писать реализацию отладчика по UART. Читать дальше →

Краткий обзор и настройка Kata Containers В этой статье будет рассмотрен принцип работы Kata Containers, а также будет практическая часть с их подключением к Docker. Читать дальше →

DataMatrix или как правильно маркировать обувь С 1 июля 2019 года в России введена обязательная маркировка группы товаров. С 1 марта 2020 года под этот закон должна была попасть обувь. Не все успели подготовиться, и в результате запуск перенесли на 1 июля. Lamoda среди тех, кто успел. Поэтому мы хотим поделиться опытом ...

[Из песочницы] Решение типовых проблем с json_encode (PHP) Это краткая статья о наиболее вероятных проблемах с json_encode и их решениях. Иногда при кодировании данных в json, с помощью json_encode в php, мы получаем не тот результат который ожидаем. Я выделил три наиболее частые проблемы с которыми сталкиваются программисты: до...

Почему бизнес хочет DevOps и что нужно знать инженеру, чтобы говорить с ним на одном языке Последние несколько лет мы при каждом удобном случае снова и снова обсуждаем, что же такое DevOps. Это уже порядком надоело, но раз всё еще происходит, значит есть проблема — проблема взаимодействия бизнеса и инженеров. Я часто вижу, как люди, пришедшие к применению DevOps ...

План начинающего тестера: от “Войти в IT” до “Я — Инженер!” Всем привет! Меня зовут Валентин и я работаю инженером по тестированию в компании Exness. Очень часто слышу вопрос о том, насколько сейчас возможно стать тестировщиком программного обеспечения. В этой статье я постараюсь ответить на данный вопрос. Читать дальше →

«Цель SRE — надёжная система». Обзор основных метрик SRE Site Reliability Engineering (SRE) — это одна из форм реализации DevOps. SRE-подход возник в Google и стал популярен в среде продуктовых IT-компаний после выхода одноимённой книги в 2016 году. В статье опишем, как SRE-подход соотносится с DevOps, какие задачи решает инженер...

Как мы построили динамические отчеты на SSRS 2014 Мы уже рассказывали, как помогли одной производственной компании трансформировать процессы корпоративного обучения и развития персонала. Сотрудники заказчика, которые тонули в бумажных документах и Excel-таблицах, получили удобное iPad-приложение и веб-портал. Одна из самых ...

Архитектурный шаблон MVI в Kotlin Multiplatform. Часть 3: тестирование Эта статья является заключительной в серии о применении архитектурного шаблона MVI в Kotlin Multiplatform. В предыдущих двух частях (часть 1 и часть 2) мы вспомнили, что такое MVI, создали общий модуль Kittens для загрузки изображений котиков и интегрировали его в iOS- и A...

Рабочая станция в Docker контейнере Для чего? Мне постоянно приходят всякие идеи и некоторые из них сразу хочется попробовать, но рабочая станция не всегда под рукой, поэтому я настраивал IDE на всем что попадется под руку. В итоге устройства начали захламляться, а поддерживать и обновлять их стало тяжело. Что...

Нам и тут хорошо. Как мы наносим Йошкар-Олу на IT-карту России Всем привет! В этой статье хочу поделиться своим опытом развития IT-движухи в Йошкар-Оле и дать советы, которые помогут вам начать развивать сообщество разработчиков в вашем городе. Читать далее

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

[Перевод] Rust для Java разработчиков Представляю перевод статьи автора Evan Cameron, которая может помочь Java разработчикам лучше понять отличия и схожесть этих двух языков — оригинал на сайте автора. Не считая себя достаточно опытным Rust разработчиком, я вряд ли смогу аргументированно участвовать в возможных...

[Перевод] Взгляд на технологии последнего десятилетия Прим. перев.: Эта статья, ставшая хитом на Medium, — обзор ключевых (за 2010-2019 годы) изменений в мире языков программирования и связанной с ними экосистемы технологий (особое внимание уделяется Docker и Kubernetes). Её оригинальным автором является Cindy Sridharan, котора...

[Из песочницы] Геокодирование. Как привязать 250 тысяч адресов к координатам за 10 минут? Привет, Хабр! В этой статье я хотел бы поделиться опытом решения маленькой проблемы с большим количеством адресов. Если вы когда-либо работали с API геокодирования или пользовались онлайн инструментами, то думаю вы разделяете мою боль ожидания результата в течение несколь...

Топ IT-книг прошлого века, которые актуальны до сих пор «Физические законы — это не Python, их не изменить в новых версиях, то есть материал в книге (по электронике) будет актуален всегда». ne555, из комментариев на Хабре Одна из главных проблем технической журналистики — устаревание информации вследствие быстрого развития тех...

[Перевод] «Давайте использовать Kubernetes!»: как получить 8 проблем Это перевод вводной статьи об использовании Kubernetes: «Let’s use Kubernetes!» Now you have 8 problems Если вы используете Docker, то следующим логичным шагом будет Kubernetes, известный как K8s. Именно так вы обеспечиваете эксплуатацию своих продуктов, верно? Ну, возможн...

[Перевод] Конференция DEVOXX UK. Выбираем фреймворк: Docker Swarm, Kubernetes или Mesos. Часть 1 Docker Swarm, Kubernetes и Mesos являются наиболее популярными фреймворками для оркестровки контейнеров. В своем выступлении Арун Гупта сравнивает следующие аспекты работы Docker, Swarm, и Kubernetes: Локальный девелопмент. Функции развертывания. Мультиконтейнерные приложе...

Конференция DEVOXX UK. Выбираем фреймворк: Docker Swarm, Kubernetes или Mesos. Часть 2 Docker Swarm, Kubernetes и Mesos являются наиболее популярными фреймворками для оркестровки контейнеров. В своем выступлении Арун Гупта сравнивает следующие аспекты работы Docker, Swarm, и Kubernetes: Локальный девелопмент. Функции развертывания. Мультиконтейнерные приложе...

Конференция DEVOXX UK. Выбираем фреймворк: Docker Swarm, Kubernetes или Mesos. Часть 3 Docker Swarm, Kubernetes и Mesos являются наиболее популярными фреймворками для оркестровки контейнеров. В своем выступлении Арун Гупта сравнивает следующие аспекты работы Docker, Swarm, и Kubernetes: Локальный девелопмент. Функции развертывания. Мультиконтейнерные приложе...

[Из песочницы] Зачем ограничивать наследование с помощью final? Вы наверняка слышали это знаменитое высказывание от GoF: «Предпочитайте композицию наследованию класса». И дальше, как правило, шли длинные размышления на тему того, как статически определяемое наследование не настолько гибко по сравнению с динамической композицией. Гибкост...

Опыт создания продукта в России, или Как создавался “народный” беспроводной пылесос Всем привет! Андрей – предприниматель, CIO, CEO и кайтер. Несколько лет назад я пошел по пути создания и запуска собственного продукта «с нуля» на отечественном рынке (беспроводной пылесос). В этой статье хочу поделиться своим опытом с начинающими и действующими предпринимат...

LyX: Общие замечания. Часть 1 Скопировано с моего блога в целях создания еще одного русскоязычного источника информации по данной теме. Эта статья является продолжением следующих статей одного цикла: статья 1 статья 2 статья 3 статья 4 статья 5 Фух, даже не знаю, как писать этот пост. Я мог бы начать ...

SamsPcbLab, часть 2: WP, CSS, PHP и печатные платы Я постараюсь максимально кратко описать опыт разработки платформы для разработчиков печатных плат на WordPress (WP) без начальных знаний о web-разработке, остановившись на некоторых нюансах, которые могут оказаться полезными тем, кто будет проходить тот же путь. Также я с ра...

Как помочь новому разработчику влиться в удаленную команду Привет, Хабр! Меня зовут Сергей Леонидов, я генеральный директор финансового маркетплейса Сравни.ру. В этой статье поделюсь собственным опытом и соображениями относительно адаптации удаленных разработчиков. Отмечу, что это крайне важный процесс как для компании, так и для ...

Тысяча и один UI-баг, или Как помочь разработчику избегать типовых ошибок в UI Тестирование новых фич, казалось бы, очень творческий и интересный процесс. Но что делать, если ошибки в интерфейсах повторяются из фичи в фичу, а большая часть времени тратится на отлавливание мелких интерфейсных проблем?  За четыре года работы в Badoo из более чем тысяч...

Переезд инженера в Великобританию: IT-сфера, рабочая виза, налоги Зачем разработчику ехать в Европу? Не из-за денег — неоднократно замечали и мы в статьях про переезд, и вы в комментариях к ним. Можно поехать за интересными задачами в крупных tech-компаниях и новыми...

[Перевод] Больше разработчиков должны знать это о базах данных Прим. перев.: Jaana Dogan — опытный инженер из Google, которая в данный момент занимается вопросами наблюдаемости production-сервисов компании, написанных на Go. В этой статье, снискавшей большую популярность у англоязычной аудитории, она в 17 пунктах собрала важные техничес...

Комментарий инженера: Apple решила порвать с Intel из-за многочисленных проблем в Skylake На днях компания Apple объявила о том, что будет постепенно переводить свои компьютеры Mac с x86-совместимых процессоров Intel на чипы собственной разработки с архитектурой ARM. В качестве причины было названо стремление к унификации с мобильными устройствами. Однако бывший ...

[Перевод] Решение проблемы N+1 запроса без увеличения потребления памяти в Laravel Одна из основных проблем разработчиков, когда они создают приложение с ORM — это N+1 запрос в их приложениях. Проблема N+1 запроса — это не эффективный способ обращения к базе данных, когда приложение генерирует запрос на каждый вызов объекта. Эта проблема обычно возникает, ...

Как сократить издержки на автотестах Автотесты — модная, но довольно затратная история. Автоматизаторы стоят дороже, чем ручные тестировщики, а сами автотесты требуют больше времени на разработку, причем разрабатывается не функционал продукта, а его проверка, которая окупается не явно и не сразу. Требует затрат...

Web scraping вашего сайта: непрошеные гости и как их встречают На первом в истории полностью виртуальном мероприятии РИТ++, прошедшем в конце мая, инженер Qrator Labs — Георгий Тарасов, рассказал публике про веб-скрейпинг, он же парсинг, популярным языком. Мы решили предоставить вашему вниманию транскрипцию выступления. Читать дальше ...

Почему вам не надо становиться тимлидом? Привет, друзья. Эта статья написана Георгием Могелашвили (glamcoder), который работает на позиции Lead Developer в Booking.com в Амстердаме и отвечает за архитектуру и координацию нескольких технических команд в отделе маркетинга, а по совместительству Георгий преподает в OT...

О недавних обновлениях Google Play Trust и Safety В рамках наших постоянных усилий по повышению доверия и безопасности пользователей в Google Play мы регулярно проверяем наши политики и правила, чтобы обеспечить положительный опыт разработчикам и пользователям. 16 апреля, в нашем Android блоге для разработчиков, мы анонси...

Строим ролевую модель управления доступом. Часть вторая, «строительная» Пост, который вы сейчас читаете, – продолжение статьи о том, как правильно выстроить в крупной компании ролевую модель управления доступом пользователей к различным системам. Напомним: построение ролевой модели – это скорее процесс, чем результат, и первую часть нашей дилоги...

Автоматизация журналиста. Часть 2. Работаем со спикерами Первую часть статьи ищите тут. Во второй части рассказываю о том, какие я использую инструменты при взаимодействии со спикерами. Читать дальше →

Внедрение CI/CD и DevOps в Enterprise (в нашем случае — Ростелеком) Тема до сих пор весьма хайповая, и админы, добавляющие в свои резюме словечко DevOps, автоматически рассчитывают на +100К к зарплате. Но мы не про это. Мы хотим рассказать про то, как Ростелеком ИТ внедряет CI/CD & DevOps в энтерпрайзовый ИТ-ландшафт и тяжелые монолитные...

Освободи свой Android Некоторое время назад на Хабре вышла статья замечательной девушки fur_habr о проблемах безопасности, приватности и конфиденциальности мобильных коммуникаций и о путях решения этих проблем на платформе Android. В момент выхода этой статьи я как-то не обратил на неё внимани...

Чистая архитектура для фронтендера Современный веб — это сложно. Количество фреймворков и темп их развития заставляет разработчика скакать галопом. Кто-то новые либы юзает, кто-то модные книжки читает. Но иногда чтение и потраченные силы на углубление в архитектуру, ООП, TDD, DDD и т.д. не оправдывают ожида...

Как увеличить дальность связи с беспилотным летательным аппаратом (БЛА) Задача увеличения дальности связи с беспилотным летательным аппаратом (БЛА) не теряет актуальности. В данной статье рассматриваются методы улучшения этого параметра. Статья написана для разработчиков и эксплуатантов БЛА и является продолжением цикла статей про связь с БЛА (н...

Как мы внедрили SonarQube и осознали его большой потенциал Мы хотим поделиться опытом внедрения платформы для непрерывного анализа и измерения качества кода SonarQube в существующие процессы разработки системы ДПО (дополнение к системе депозитарно-клирингового учета «Аламеда») Национального расчетного депозитария. Читать дальше &r...

Роутинг в комплексных чат-ботах с Hobot framework Начав разрабатывать боты для Telegram несколько лет назад, я открыл для себя производительность, простоту и гибкость работы с ними как с частным случаем интерфейса командной строки. Эти характеристики, доступные сегодня многим — во многом заслуга популярного фреймворка tel...

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

[Из песочницы] Как скомпилировать декоратор — C++, Python и собственная реализация. Часть 2 Декораторы — одна из самых необычных особенностей Python. Это инструмент, который полноценно может существовать только в динамически типизированном, интерпретируемом языке. В первой части статьи мой товарищ Witcher136 показал, как в С++ реализовать наиболее приближенную к эт...

Смесь Mortal Kombat и Kingdom Come: Deliverance. Новый файтинг от разработчика Ведьмака За последние годы вышло много RPG с историческим сеттингом, а также несколько неплохих файтингов. А вот смеси таких, на первый взгляд, разных и несовместимых направлений в игровой индустрии не наблюдалось в последнее время. Но разработчик Kubold, который имеет опыт создани...

Как разрабатываются моды для Unity-игр. Часть 2: пишем свой мод В этой части на примере мода для Beat Saber мы рассмотрим общие принципы разработки модов для Unity-игр, узнаем, какие есть трудности, а также познакомимся с Harmony — библиотекой для модификации кода игр, которая используется в RimWorld, Battletech, Cities: Skylines и многи...

CISSP: что нового и чем вооружиться? Совсем недавно в Rambler Group появился сертифицированный специалист CISSP. Он готов поделиться своим опытом и рассказать, что дает этот сертификат, какие изменения произошли в экзамене за последние 2 года и как эффективно к нему подготовиться. Привет, я Саша, директор п...

Я не понимаю, что хочу. Как пользователю сформулировать требования к CRM «Когда кто-то трогает крестик, должен плакать персиковый медвежонок»*, — это, пожалуй, самое милое требование из тех, что мне приходилось встречать (но, к счастью, не реализовывать). Оно было сформулировано сотрудницей с 12 годами опыта работы в одной компании. Вы поняли, чт...

HighLoad++, Михаил Макуров, Максим Чернецов (Интерсвязь): Zabbix, 100kNVPS на одном сервере Следующая конференция HighLoad++ пройдет 6 и 7 апреля 2020 года в Санкт-Петербурге Подробности и билеты по ссылке. HighLoad++ Moscow 2018. Зал «Москва». 9 ноября, 15:00. Тезисы и презентация. * Мониторинг — онлайн и аналитика. * Основные ограничения платформы ZABBIX. * Ре...

Как переиспользовать код с бандлами Symfony 5? Часть 2. Выносим код в бандл Поговорим о том, как прекратить копипастить между проектами и вынести код в переиспользуемый подключаемый бандл Symfony 5. Серия статей, обобщающих мой опыт работы с бандлами, проведет на практике от создания минимального бандла и рефакторинга демо-приложения, до тестов и ре...

Создание отказоустойчивой ИТ инфраструктуры. Часть 3. Организация маршрутизации на роутерах VyOS Основная цель статьи – показать процесс установки и настройки виртуальных маршрутизаторов VyOS на кластере oVirt, для организации связи на уровне L3 между внутренними и внешними сетями. Также в статье будут рассмотрены вопросы, связанные с особенностями настройки выхода в Ин...

Sentry удаленный мониторинг багов в фронтенд приложениях React Мы изучаем использование Sentry с React. Эта статья является частью серии, начинающейся с сообщения об ошибках Sentry на примере: Часть 1. Читать дальше →

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

Создаем калькулятор на Swift 5 В преддверии старта базового курса «iOS-разработчик» публикуем статью, которую написал наш внештатный автор. Всем привет! Прошло уже больше года с того момента, как появился релиз Swift 5, который принес разработчикам много нового. В этой статье я хочу поговорить о мобиль...

Найти 15 инженеров за две недели карантина Привет, Хабр!  Я работаю эйчаром в DataLine, в том числе курирую набор дежурных инженеров в службу технической поддержки. Мы уже рассказывали о важности этой позиции для компании. Дежурным инженерам мы доверяем проверку оборудования в дата-центре и работу с клиентами на пер...

WSL эксперименты. Часть 1 Привет, хабр! В октябре OTUS запускает новый поток курса «Безопасность Linux». В преддверии старта курса делимся с вами статьёй, которую написал один из наших преподавателей — Александр Колесников. В 2016 году компания Microsoft представила IT сообществу новую технологи...

Архитектура системы и Бизнес-архитектура После достаточно продолжительного созерцания того, как различные специалисты объясняют (устанавливают) своё понимание архитектуры, я решил, что нужно им, всё-таки, помочь :) Критиковать не стал, но предложить есть что. Читать дальше →

Domain Driven Design Meetup в Райффайзенбанке: сохраняйте трансляцию Присоединяйтесь к нам онлайн 6 февраля: поделимся опытом использования DDD в реальных условиях и поговорим, с какими проблемами сталкиваемся, как их решаем и какие преимущества можно получить. Мы будем на связи в 19:00! Читать дальше →

Прикладное целеводство. Доклад Яндекса Зачем нужны цели? Как их формулировать? Какие проблемы могут возникнуть? По случаю Я.Субботника Pro я подготовил доклад, основанный на нескольких годах опыта ведения целей для команд в Яндексе. Читать дальше →

Дайджест интересных материалов для мобильного разработчика #345 (18 — 24 мая) В этой подборке рендеринг экранов ВКонтакте, победы и поражения Flutter, архитектуры и скриншоты, продуктовая аналитика и архетипы игроков, виртуальные свидания в умных домах и много других интересных материалов! Читать дальше →

Между дизайн-системой и Server Driven UI Введение (как устроена разработка в ivi) Всем привет! Меня зовут Владимир Касаткин, и я работаю бэкенд-разработчиком в компании ivi.ru, в команде "UX". Цель этой статьи — показать, как мы уменьшили объём клиентской разработки, но при этом увеличили количество прово...

Opennebula. Короткие записки Всем привет. Данная статья написана для тех, кто до сих пор мечется между выбором платформ виртуализации и после прочтения статьи из серии «Поставили proxmox и вообще все отлично, 6 лет аптайм не единого разрыва». Но после установки того или иного коробочного решения, воз...

Как мы распилили монолит. Часть 1 Привет, меня зовут Ваня. Я решаю архитектурные задачи на фронтенде в Тинькофф Бизнесе и сейчас расскажу вам про одну из них.Несколько лет назад у нас было большое монолитное приложение, которое со временем превратилось в десяток поменьше. В этой статье я поведаю, какие пробл...

Как я не стал продакт-менеджером после обучения в Product Univercity Морейниса и Черника Всем привет. Решил написать свою первую статью на VC, но главреда меня забанил, потому что я попросил поставить плюсики друзей, а перед этим три раза дешёвая рабочая сила снимала мою публикацию по каким-то неведомым причинам, и описать свой опыт поиска работы продакт-менедж...

Перевернутая пирамида как конец вашего проекта В этой статье я хочу поделится небольшим опытом касательно построения команд в ИТ-проектах. Поговорить я хочу о такой не всегда очевидной вещи как «Пирамида зрелости команды». Читать дальше →

[Из песочницы] Защита .Net кода от реверс инженеринга с помощью ConfuserEx 0.6.0 В статье рассказывается об опыте боевого применения обфускатора ConfuserEx 0.6.0 для защиты сервиса .Net под Windows и Mono. Дело было в далеком 2016 году, но, я думаю, тема не потеряла актуальность и сейчас. Читать дальше →

“Что делать, когда кардинальные изменения в процессах демотивируют команду”. Опыт бэкенд-инженера, ставшего тимлидом Я 7 лет работал бэкенд-инженером в Miro, затем стал тимлидом. За последние годы наша инженерная команда выросла вдвое, стала распределённой и международной, что повлекло за собой множество изменений. Одним из них стало введение кросс-функц...

Intel застряла. Техпроцесс 7 нм откладывается до конца 2021 — начала 2022 года Исполнительный директор Intel Боб Свон Корпорация Intel опубликовала финансовый отчёт за II кв. 2020 года, в котором объявила об очередной задержке с переходом на техпроцесс 7 нм. Планы отложили ещё на шесть месяцев, так что теперь внедрение 7 нм планируется не раньше конц...

Практические истории из наших SRE-будней. Часть 2 Утекло уже немало воды с момента публикации нашего последнего очерка об интересных случаях из практики обслуживания Kubernetes-кластеров и запускаемых в нём сервисов/приложений. Хотим представить очередную серию приключений инженеров «Фланта» в неспокойных водах большой (и...

Как в Яндекс.Облаке устроено Virtual Private Cloud и как наши пользователи помогают нам внедрять полезные функции Привет, меня зовут Костя Крамлих, я ведущий разработчик подразделения Virtual Private Cloud в Яндекс.Облаке. Я занимаюсь виртуальной сетью, и, как можно догадаться, в этой статье расскажу об устройстве Virtual Private Cloud (VPC) в целом и виртуальной сети в частности. А ещё...

Как визуализировать граф Spring Integration с помощью Neo4j? Фреймворк Spring Integration умеет отдавать текущее состояние всех EIP-компонентов и их связей в виде JSON-графа. Это кажется очень удобным для изучения и отладки, но увы, ни один из нагугливаемых инструментов (коих всего-то раз /два) не даёт достаточной гибкости для визуал...

Тесты визуальной регрессии. Перезагрузка В своей предыдущей статье я рассказывал про опыт использования движка Gemini для разработки визуальных тестов, точнее, тестов визуальной регрессии. Такие тесты проверяют, не «съехало» ли что-нибудь в UI после очередных изменений с помощью сравнения текущих скриншотов с ранее...

История создания домашнего облака. Часть 5. Актуализация 2019 – PHP 7.2, MariaDB 10.4 и Nextcloud 17 Два года назад я опубликовал цикл статей на тему создания веб-сервера на базе Debian 8 и запуске на нём сервиса Nextcloud 11. Через несколько месяцев появилось дополнение, содержащее «диффиренциальную» информацию по установке Nextcloud 13 на Debian 9. В конце 2018 года я про...

oVirt за 2 часа. Часть 3. Дополнительные настройки В этой статье мы рассмотрим ряд необязательных, но полезных настроек: использование дополнительных имен для менеджера; подключение аутентификации через Active Directory; Mutlipathing; управление питанием; замена SSL сертификата; архивация; менеджмент-интерфейс хостов (cockp...

[Перевод] Pylint: детальная проверка работы анализатора кода Когда Люк работал с Flake8 и одновременно присматривался к Pylint, у него сложилось впечатление, что 95% ошибок, выдаваемых Pylint, были ложными. У других разработчиков был иной опыт взаимодействия с этими анализаторами, поэтому Люк решил детально разобраться в ситуации и из...

Как Sec примерил сбрую Ops, или deploy Red Hat OKD 3.11 for dummies Привет, друзья! Прошлой осенью мне по работе понадобилось протестировать решения для защиты сред контейнеризации (я работаю ИБ-инженером), но готового стенда с микросервисной архитектурой для этого не оказалось. Мотор-то мы купили, да трактор… у нас украли. Почувствовался ...

[Из песочницы] Оптимизация нагрузки на Highload-проекте с помощью ElasticSearch Привет, Хабр! Меня зовут Максим Васильев, я работаю аналитиком и менеджером проектов в FINCH. Сегодня я хотел бы рассказать, как с помощью ElasticSearch, мы смогли обработать 15 млн запросов за 6 минут и оптимизировать ежедневные нагрузки на сайте одного из наших клиентов. К...

Мой Covid-19 lockdown проект, или, как я полез в кастомный UICollectionViewLayout и получил ChatLayout Да, да. Я понимаю, что на дворе 2020 год, что все хардкорные IOS разработчики пишут исключительно на SwiftUI и Combine, и писать статьи про UIKit как-то “не айс”. Тем не менее, 2020 год выдался не таким, как все предыдущие года. Совсем не таким. Поэтому, как только на Дубл...

Игра в собеседование: Стратегии найма. Часть I Частные проекты, стартапы, не IT фирмы, которым понадобился специалист, продуктовые компании и аутсорсеры, IT-гиганты с многотысячным штатом и небольшие компании с десятками/сотнями сотрудников. Когда вы выходите на поиск вакансии — глаза разбегаются от количества предложени...

[Из песочницы] Масштабируемая архитектура для больших мобильных приложений В этой статье мы не будем разбирать MVP, MVVM, MVI или что-то подобное. Сегодня мы поговорим о более глобальной вещи, чем просто архитектура уровня представления. Как спроектировать действительно большое приложение, в котором смогут комфортно работать десятки или сотни разра...

Интернет-трафик в Европе вырос в полтора раза. Магистральные провайдеры фиксируют рекорды нагрузки Разговоры о том, что массовая самоизоляция европейцев увеличила нагрузку на интернет-инфраструктуру на всех уровнях ходят начиная с марта месяца, однако разные источники дают разные данные. Одни говорят, что нагрузка выросла многократно, другие заявляют о цифрах в районе 20 ...

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

[Из песочницы] Базовые команды Linux для тестировщиков и не только Предисловие Всем привет! Меня зовут Саша, и я больше шести лет занимаюсь тестированием бэкенда (сервисы Linux и API). Мысль о статье у меня появилась после очередной просьбы знакомого тестировщика подсказать ему, что можно почитать по командам Linux перед собеседованием. Обы...

Зоны в Dart: операция на открытом сердце для окружения Привет! Меня зовут Дима, я frontend-разработчик в компании Wrike. Клиентскую часть проекта мы пишем на Dart, однако работать с асинхронными операциями нам приходится не меньше, чем на других технологиях. Зоны — один из удобных инструментов, который Dart для этого предоставля...

Конец эпохи ARMv7 или же немного о портировании игр Вступление Пару недель назад я столкнулся с проблемой отсутствия у игры поддержки архитектуры моего процессора в телефоне. Конечно, я знал, что ARMv7 устареет, но не ожидал, что это случиться так быстро. В сети особо информации по downgrade приложения не было, поэтому пришло...

[Перевод] Алгоритм MADDPG OpenAI Начинаем неделю с продолжения серии статей, подготовленных специально для базового и продвинутого курсов «Математика для Data Science». В конце статьи поделимся с вами списком самых интересных материалов по этой теме. Новый подход Мультиагентное обучение с подкреплени...

Xamarin.Forms. Личный опыт использования В статье речь пойдет о Xamarin.Forms на примере живого проекта. Кратко поговорим о том, что такое Xamarin.Forms, сравним с похожей технологией WPF, увидим, как достигается кроссплатформенность. Также разберём узкие места, с которыми мы столкнулись в процессе разработки, и до...

Джентльменский набор от Huawei для разработчика мобильных игр: Game Service и инструменты для быстрой интеграции HMS Привет, Хабр! Меня зовут Михаил, я занимаюсь технической поддержкой разработчиков в области интеграции Huawei Mobile Service. И сегодня я хочу рассказать про наши инструменты, которые могут быть полезны разработчикам мобильных игр. Про то, как можно быстро адаптировать игру...

Небольшой ликбез по водоподготовке Добрый день! Я занимаюсь уже более 6ти лет системами водоочистки, но уровня водоснабжения поселков и городов. Читая статьи и комментарии и вопросы в личных сообщениях решил составить маленький ликбез по водоочистке, который пригодится в том числе и для домашнего использовани...

Как настроить real-time data processing на летящем корабле Привет! Меня зовут Алексей Скоробогатый, я системный архитектор в Lamoda. Недавно мы внесли большие изменения в нашу e-commerce платформу: перешли к событийной (events driven) архитектуре и добавили обработку данных в реальном времени. На этом примере я хочу поделиться опыто...

[Перевод] Использование HAProxy в качестве Data Plane Service Mesh в архитектуре микросервисов Использование HAProxy в качестве Data Plane Service Mesh в архитектуре микросервисов HAProxy Data Plane API – это программа, которая работает вместе с HAProxy, чтобы вы могли полностью настроить балансировщик нагрузки HAProxy во время выполнения. Эта функция позволяет исполь...

2. Check Point SandBlast Agent Management Platform. Интерфейс веб-консоли управления и установка агента Продолжаем изучать новую облачную платформу Check Point Management Platform для управления средством защиты пользовательских компьютеров — SandBlast Agent. В предыдущей статье мы описали основные составляющие SandBlast Agent, познакомились с архитектурой Check Point Infini...

[Из песочницы] Расчет временных ограничений для ПЛИС простым языком Здравствуйте. Эта статья написана для самых-самых новичков в мире ПЛИС. В ней я попытаюсь максимально просто и понятно рассказать что такое временны́е ограничения (timing constraints), накладываемые на проекты под ПЛИС. Статья создана на основе собственного опыта попыт...

[Перевод] Всё, что нужно знать о Progressive Web App (PWA) PWA — прогрессивные веб-приложения. Предупреждение. Эта статья не проспонсирована PWA. Все взгляды и мнения в статье принадлежат только её автору. Progressive Web App или PWA — лучший способ для разработчиков заставить свои веб-приложения загружаться быстрее и быть более...

[Перевод] Хакаем WhatsApp, часть 2 – разбор Whatsapp VOIP протокола В это статье я хочу рассказать как я вскрыл несколько частей WhatsApp VoIP протокола с помощью джейлбрейкнутого iOS устройства и набора разных программ для анализа. В последнее время Whatsapp привлекает к себе большое внимание из за найденных уязвимостей и возможностей дл...

[Из песочницы] «Остановите Total Commander!» или главная проблема свободного ПО Сегодня мы попробуем разобраться, почему Open Source приложениями никто не хочет пользоваться. Статья получилась довольно длинной, но не пугайтесь, будет интересно. Поехали! Читать дальше →

Топ факапов Циан Всем добра!  Меня зовут Никита, я тимлид команды инженеров Циан. Одной из моих обязанностей в компании является снижение количества инцидентов, связанных с инфраструктурой на проде, до нуля. То, о чем пойдет речь далее, принесло нам много боли, и цель этой статьи — не дать ...

Make «udalenka» great again: как перевести всю компанию на удаленную работу в 4 этапа В то время как коронавирус шагает по планете, на рынке ценных бумаг лидирует туалетная и целые страны закрывают на карантин, все больше компаний вынуждены переводить сотрудников на удаленную работу. Мы в RUVDS не стали исключением и решили поделиться с Хабром своим опытом ор...

[Перевод] Что JavaScript-разработчику следует знать о Curl Доброго времени суток, друзья! Представляю Вашему вниманию перевод статьи «What JavaScript Developers Should Know About Curl» автора Valery Karpov. Curl — это популярный инструмент командной строки, часто используемый для отправки HTTP-запросов. Curl поддерживает большое...

Похмелье 8 марта: ещё одна статья на Хабре о женщинах в ИТ «Если, по-вашему, женщина может быть кузнецом, то почему бы мужчине не быть педикюршей? Она кует, он пилит, прекрасная пара!» К/ф «Берегите женщин» Я читаю Хабр года так с 2009-го. Последние несколько лет накануне 8 марта случается вал публикаций, спецпроектов, мегапостов и...

[Из песочницы] Java простое веб-приложения. Логин и регистрация Всем доброго времени суток. Эта статья рассчитана для новичков в мире Web и Java. Мы рассмотрим стандартную архитектуру веб-приложения и сделаем небольшой проект с нуля. Будем использовать Spring (Огромный фреймворк для веба), но по минимуму. Если не иметь предыдущего опыта ...

HighLoad++, Юрий Насретдинов (ВКонтакте): как VK вставляет данные в ClickHouse с десятков тысяч серверов HighLoad++ Moscow 2018, зал «Конгресс-холл». 9 ноября, 15:00 Тезисы и презентация: http://www.highload.ru/moscow/2018/abstracts/4066 Юрий Насретдинов (ВКонтакте): в докладе будет рассказано об опыте внедрения ClickHouse в нашей компании – для чего он нам нужен, сколько мы ...

Как переиспользовать код с бандлами Symfony 5? Часть 5. Конфигурация Поговорим о том, как прекратить копипастить между проектами и вынести код в переиспользуемый подключаемый бандл Symfony 5. Серия статей, обобщающих мой опыт работы с бандлами, проведет на практике от создания минимального бандла и рефакторинга демо-приложения, до тестов и ре...

DevOps или как мы теряем заработную плату и будущее IT-отрасли, часть вторая Прошлая статья уже вызвала много возмущений, думаю эта статья многим ещё больше не понравится, в ней я распишу то, как заказчики видят DevOps инженера. Читать дальше →

[Перевод] Как масштабируется бизнес Docker для обслуживания миллионов разработчиков, часть 2: Исходящие данные Это вторая статья из серии статей, в ней будут рассмотрены ограничения при скачивании образов контейнеров. Читать дальше →

Создание дизайн-системы для игры: детальный разбор подхода Меня зовут Максим Полстяной, я UI/UX Designer в Plarium Kharkiv. В этой статье я поделюсь опытом создания дизайн-системы для нашей браузерной стратегии «Войны Престолов», расскажу с чего все начиналось и какие этапы мы проходили. Читать дальше →

[Перевод] Лучшие практики Kubernetes. Настройка запросов и лимитов ресурсов Лучшие практики Kubernetes. Создание небольших контейнеров Лучшие практики Kubernetes. Организация Kubernetes с пространством имен Лучшие практики Kubernetes. Проверка жизнеспособности Kubernetes с помощью тестов Readiness и Liveness Для каждого ресурса Kubernetes имеется в...

[Из песочницы] Большое тестирование процессоров различных архитектур Предисловие Попытка сравнить производительность процессоров на разнородных архитектурах x86-64, e2k (Эльбрус), mips и arm. Все тесты написаны на языке C (взяты из исходных кодов, которые я не модифицировал и не оптимизировал) и компилируются под конкретную архитектуру с испо...

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

[Из песочницы] Прототипы в JS и малоизвестные факты Лирическое вступление  Получив в очередной раз кучу вопросов про прототипы на очередном собеседовании, я понял, что слегка подзабыл тонкости работы прототипов, и решил освежить знания. Я наткнулся на кучу статей, которые были написаны либо по наитию автора, как он "чувс...

Производственный календарь своими руками в Firebird Здравствуйте, меня зовут Денис, я явлюсь разработчиком информационных систем, пишу статьи и документацию по СУБД Firebird. В этой статье я хочу рассказать о реализации производственного календаря с использованием СУБД Firebird. На написание этой статьи меня натолкнули похож...

Переносим Angular проект на ESLint, с Prettier, Husky и lint-staged Привет, Хабр! Меня зовут Богдан, я работаю в ПИК Digital Front-End тимлидом. Большую часть проектов мы разрабатываем на Angular и недавно я решил пересмотреть наши стайл гайды, а также добавить новые инструменты для более удобной работы. В качестве линтера я решил использов...

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

Правильно [c]читаем параллельные планы PostgreSQL Исторически, модель работы сервера PostgreSQL выглядит как множество независимых процессов с частично разделяемой памятью. Каждый из них обслуживает только одно клиентское подключение и один запрос в любой момент времени — и никакой многопоточности. Поэтому внутри каждого о...

[Перевод] 10 контринтуитивных выводов после 10 лет проведения DevOpsDays Ветеран DevOps Крис Байтаерт, стоявший у истоков DevOpsDays, делится своим опытом, и его выводы вас удивят. Десять лет назад мы внезапно отправились в путешествие. Мы собрали нескольких наших хороших друзей в Генте (Бельгия), чтобы обсудить Agile, open-source и первый опы...

Владимир aka wowik: «OpenStreetMap нужны идеи, которые в других системах нереализуемы» wowik — программист и инженер-физик из Москвы, который, как он говорит сам про себя, «программировал все, что шевелится: мейнфреймы, персоналки, мобильные устройства, теперь еще и web». Но в мире OSM он известен, как разработчик легендарного «валидатора Вовика». Что такое в...

Распределённая команда и тимлид на удалёнке Привет, меня зовут Григорий. Я работаю тимлидом распределённой команды в Positive Technologies. Это мой рассказ, как я стал лидом распределённой команды, с какими проблемами сталкивался, как их решал и какой опыт получил. Мотивами к написанию статьи стали два факта: во-первы...

[Перевод] Тестирование: назад к основам + [Puppeteer][Mocha] Совершенствуйте код с помощью тестового покрытия Перевод статьи подготовлен в преддверии старта курса «Автоматизация тестирования на JavaScript». Меня несколько раз спрашивали о разнице между инженером по обеспечению качества (QA — Quality Assurance) и тестером (QC — Quality Control), и я понял, что даже если люди, разра...

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

Сертификация ISTQB стала доступна онлайн: личный опыт Чуть меньше месяца назад, когда весь мир сидел на самоизоляции и локдауне, и можно было только гадать о том, когда разрешат хотя бы гулять, в обычном ворохе писем на грани спама я нашел сообщение о том, что сертификацию ISTQB сделали доступной онлайн. Я и так собирался сдава...

[Из песочницы] Boost.Compute или параллельные вычисления на GPU/CPU Привет, Хабр! По моим меркам я уже достаточно давно пишу код на C++ (почти 3 года), но до этого времени ещё не сталкивался с задачами, связанными с параллельными вычислениями. Я не увидел ни одной статьи о библиотеке Boost.Compute, поэтому эта статья будет именно о ней. Со...

[Из песочницы] Science Garage на русском. Опыт перевода американского шоу В этой статье я поделюсь своим опытом перевода американского автомобильного научно-популярного шоу, расскажу о некоторых особенностях перевода. Статья будет полезна тем, кто собирается переводить и озвучивать что-то техническое с английского языка. Вы узнаете с чем вам приде...

[Из песочницы] Что такое ЭЭГ и зачем она нужна Ученые любят искать первое упоминание своей науки. К примеру, я видел статью, где всерьез утверждалось, что первые опыты по электрической стимуляции мозга были проведены в Древнем Риме, когда кого-то ударил током электрический угорь. Так или иначе, обычно, историю электрофиз...

[Из песочницы] Симуляция подъёмной силы Ньютона методом частиц на CUDA https://www.youtube.com/playlist?list=PLwr8DnSlIMg0KABru36pg4CvbfkhBofAi Как-то на Хабре мне попалась довольно любопытная статья “Научно-технические мифы, часть 1. Почему летают самолёты?”. Статья довольно подробно описывает, какие проблемы возникают при попытке объяснить п...

Германия, или Туда и Обратно — 2 В первой статье цикла я описал свой переезд в Германию с семьей. Обосновались мы в красивом и благородном городе — Висбадене. Именно тут Достоевский прокутил все свое состояние. Казино в Висбадене Я же в принципе не азартен, поэтому намеревался просто пожить в Европе. По...

Maltego Часть 5. Твое лицо тебя сдало Здравствуйте, дорогие друзья. Сегодня поговорим о более тяжелой артиллерии в рамках OSINT, а именно, о применении технологии распознавания лиц от Social Links для Maltego. Если не читали предыдущие статьи цикла о Maltego, то сейчас — самое время: Часть 1 — Что такое Malt...