Не в момент выполнения, а в момент проектирования

Давным-давно мудрый старый разработчик дал мне совет, который до недавнего времени я не очень ценил. Во время код ревью мы рассматривали некоторую функцию, которая требовала, чтобы программа выводила список букв A-Z (например, список контактов с набором кнопок, которые позволяют переходить к именам, начинающимся с определенной буквы). Итак, появился молодой преуспевающий программист. (Хорошо, это был я.) […]

Как оценивать и сравнивать устройства шифрования для сетей Ethernet

Этот обзор (или, если хотите, руководство для сравнения) я написал, когда мне поручили сравнить между собой несколько устройств разных вендоров. К тому же эти устройства принадлежали к разным классам. Пришлось разбираться в архитектуре и характеристиках всех этих устройств и составлять «систему координат» для сравнения. Я буду рад, если мой обзор поможет кому-то: Разобраться в описаниях […]

5 заметок для новоиспеченного менеджера

Специально для студентов курса «Team Lead 2.0» подготовили небольшой полезный материал. Приятного прочтения. Вот вас повысили до тимлида или даже до Project менеджера, вы пришли домой и невероятно рады новой должности. Вечером вы лежите в кровати, пытаетесь уснуть, но в душе радуетесь новым открывшимся перспективам. Однако что-то еще вас тревожит. Теперь среди ваших коллег по […]

Программный код в автомобиле

(Публикация 2009 года) Требуется множество микропроцессоров, обрабатывающих 100 миллионов строк кода, чтобы обеспечивать работу машины премиум-класса (2009 год). И это в скором времени станет еще сложнее. Система авионики в F-22 Raptor, реактивном истребителе военно-воздушных сил США, состоит примерно из 1,7 миллиона строк программного кода. F-35 Joint Strike Fighter, появившийся в 2010 году, требует около 5,7 […]

Полнофункциональный I/O реактор на голом Си

Введение I/O реактор (однопоточный цикл событий) — это паттерн для написания высоконагруженного ПО, используемый во многих популярных решениях: Node.js Tor Transmission Chromium Memcached … В данной статье мы рассмотрим подноготную I/O реактора и принцип его работы, напишем реализацию на меньше, чем 200 строк кода и заставим простой HTTP сервер обрабатывать свыше 40 миллионов запросов/мин. Предисловие […]

Трёхпроходные протоколы

Данный текст будет являться одной из переписанных глав для учебного пособия по защите информации кафедры радиотехники и систем управления, а также, с этого учебного кода, кафедры защиты информации МФТИ (ГУ). Полностью учебник доступен на github (см. также draft releases). На Хабре планирую выкладывать новые «большие» куски, во-первых, чтобы собрать полезные комментарии и замечания, во-вторых, дать […]

Badoo Jira API Client: магия в Jira на PHP

Если в строке поиска на Хабре ввести “Jira Badoo”, результаты займут не одну страницу: мы упоминаем её почти везде, потому что она играет важную роль в наших процессах. Причём каждый из нас хочет от нее немножко разного. Разработчик, которому пришла задача на ревью, ожидает что в задаче указана ветка, есть ссылки на дифф и лог […]

Решение проблемы зазубренных линий в градиентах

Одним из достаточно распространенных шаблонов проектирования дизайна, с которым вы, вероятно, сталкивались, являются блоки с угловым переходом градиентных цветов. Это выглядит примерно так, как показано на изображении ниже. Угловой градиент внутри прямоугольника Я столкнулась с этим во время работы над одним из наших проектов и вместо реализации такого эффекта с помощью изображения или SVG, мы […]

Кирилл Бондаренко: «OSM долго рос в ширину и продолжает это делать, теперь настало время высоты и объема»

Кирилл Бондаренко aka Zkir — дизайнер программного обеспечения и разработчик корпоративных информационных систем. Он настолько давно в OSM, что его смело можно назвать старожилом проекта, который помнит черное поле, активный форум и создание Совета RU-OSM. Почему тогда в сообществе было больше серьезных разговоров, зачем в OSM 3D-модели зданий и куда пропали мечты о будущем — […]

РНР-безопасность: где и как хранить пароли. Часть 2

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