Как стать автором
Обновить
4
0

Разработчик ПО

Отправить сообщение

Кратко о форматах TLV, BER, CER, DER, PER

Время на прочтение8 мин
Количество просмотров16K

Я хотел бы кратко рассказать о таких форматах данных, распространенных в ИТ-индустрии, в том числе в области инфраструктур открытых ключей (ИОК), смарт-картах, включая документы нового поколения на базе смарт-карт, в мобильной связи. Хотя рассматриваемые форматы и связаны с ASN.1, но некоторые из них ушли далеко за пределы этой области. О некоторых из них многие знают, но не все знают настолько, чтобы, допустим, уметь отличать BER от DER, а некоторые варианты типа PER вообще являются экзотикой.

Глубоко в тему погружаться не буду. Просто познакомлю с главными особенностями, чтобы понимать, что это такое и с чем это едят. Досконально и в полном объеме всё это описано в соответствующих стандартах ITU-T X.690 и ISO 7816.

Одна из моих мотивирующих задач — это уложить тему в своей голове по полочкам.

Правила абстрактной нотации (ASN.1) используются, когда надо специфицировать формат некой структуры данных. Сами правила описаны в стандартах ITU-T X.680–X.683. Пожалуй, что наиболее распространенный вариант применения — это форматы сертификатов X.509 и всего, что имеет к ним отношение. Пример текстовой нотации может выглядеть как-то так:

Читать далее
Всего голосов 29: ↑29 и ↓0+29
Комментарии3

Нестандартный полиморфизм. Паттерн Type Erasure

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров12K

Нестандартный полиморфизм. Паттерн Type Erasure.

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

Читать далее
Всего голосов 12: ↑11 и ↓1+14
Комментарии47

Отладка продакшена бесплатно: ELK, Jaeger, Sentry

Время на прочтение4 мин
Количество просмотров5.3K

Наш продукт три года существовал в монолите, а ошибки мы мониторили с помощью New Relic. Когда мы перешли на микросервисы, дорогой New Relic c посервисной тарификацией надо было чем-то заменить. Вместо него мы сформировали стек из трёх основных инструментов — они бесплатны и полностью закрывают наши потребности

Я Миша Гудов, тимлид и бэкенд-разработчик в CarPrice, и под катом вы увидите, как мы перешли на маленький, но удобный стек.

Читать далее
Всего голосов 8: ↑6 и ↓2+8
Комментарии2

Пишем анонимный мессенджер с нуля

Время на прочтение39 мин
Количество просмотров18K

Приключение на 20 минут.

Читать далее
Всего голосов 18: ↑17 и ↓1+19
Комментарии10

Система типов — лучший друг программиста

Время на прочтение8 мин
Количество просмотров32K

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

Значение в string не лучший тип для записи адреса электронной почты или страны проживания пользователя. Эти значения заслуживают гораздо более богатых и специализированных типов. Мне нужно, чтобы существовал тип данных EmailAddress, который не может быть null. Мне нужна единая точка входа для создания нового объекта этого типа. Он должен валидироваться и нормализироваться перед возвратом нового значения. Мне нужно, чтобы этот тип данных имел полезные методы наподобие .Domain() или .NonAliasValue(), которые бы возвращали для введённого foo+bar@gmail.com значения gmail.com и foo@gmail.com. Эта полезная функциональность должна быть встроена в эти типы. Это обеспечивает безопасность, помогает предотвращать баги и существенно повышает удобство поддержки.
Читать дальше →
Всего голосов 102: ↑100 и ↓2+116
Комментарии90

14 КБ это слишком много. Делаем сайты меньше 1 КБ

Время на прочтение6 мин
Количество просмотров32K

Минимализм хорош во всех отношениях. Во-первых, это красиво. Во-вторых, эффективно. Разница в скорости загрузки сайтов особенно заметна на фоне монструозных корпоративных приложений с мегабайтами скриптов, тормозящих практически на любом устройстве. Поразительно, что за годы компьютеры ускорились в десятки раз, а сайты грузятся медленнее, чем раньше (график на КДПВ за 2011–2019 гг, статистика по скорости от Httparchive.org). Только подумайте, на сколько же сайтам нужно жиреть каждый год, чтобы сохранить эти тормоза!

Известно, что для минимизации задержки важным рубежом является 14 КБ. Если ужать веб-страницу или её первую часть в меньший объём, загрузка сильно ускоряется из-за спецификации TCP, которая определяет максимальный размер пакета в 1500 байт (из них 1460 полезных) и алгоритма медленного старта TCP, ограниченного десятью пакетами.

Но 14 КБ — не предел оптимизации. Далеко не предел.
Читать дальше →
Всего голосов 49: ↑48 и ↓1+70
Комментарии73

51 Атрибут Хорошего С-кода (Хартия Си программистов)

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров26K

Это не академические атрибуты из учебников. Это скорее правила буравчика оформления сорцов из реального prod(а). Некоторые приемы совпали с MISRA, некоторые с CERT-C. А кое-что является результатом множества итераций инспекций программ и перестроек после реальных инцидентов. В общем тут представлен обогащенный концентрат полезных практик программирования на С(ях).

Читать далее
Всего голосов 50: ↑45 и ↓5+52
Комментарии164

Атрибуты HTML, которыми вы никогда не пользовались

Время на прочтение10 мин
Количество просмотров30K

В январе этого года Мэдисон Канна спросила у своих подписчиков в Twitter:

Какие языки/технологии вам бы хотелось изучить или узнать глубже в этом году?

Мой выбор: typescript, next.js, react, graphql, solidity, node — Мэдисон Канна (@Madisonkanna) January 3, 2022

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

Однако существует целая куча малоиспользуемых атрибутов, о которых я забыл, и, вероятно, целая куча атрибутов, о существовании которых я и не знал. Этот пост стал результатом моих исследований, и я надеюсь, что он окажется для вас полезным при создании страниц на HTML.
Читать дальше →
Всего голосов 75: ↑75 и ↓0+75
Комментарии9

Как написать тысячу автотестов за пару дней

Время на прочтение6 мин
Количество просмотров9.5K

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

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

После прошлой статьи многие спрашивали меня, как именно делается параметрическая генерация автотестов. В этой статье отвечу на вопрос.

Читать далее
Всего голосов 16: ↑14 и ↓2+14
Комментарии5

Метаклассы в Python

Время на прочтение14 мин
Количество просмотров30K

Привет, Хабр! У нас продолжается распродажа в честь черной пятницы. Там вы найдете много занимательных книг.

Возможен вопрос: а что такое метакласс? Если коротко, метакласс относится к  классу точно как класс к объекту.

Метаклассы – не самый популярный аспект языка Python; не сказать, что о них воспоминают в каждой беседе. Тем не менее, они используется в весьма многих статусных проектах: в частности, Django ORM[2], стандартная библиотека абстрактных базовых классов (ABC)[3] и реализации Protocol Buffers [4].

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

Читать далее
Всего голосов 24: ↑23 и ↓1+28
Комментарии0

48 полноценных бесплатных книг для программистов (happy developer's day)

Время на прочтение2 мин
Количество просмотров108K

Привет, Хабр! Немного запоздало (ко дню программиста) делюсь подборкой бесплатных книг по программированию. Все они полезные, уровень скорее профессиональный, хотя и для развития от базового тоже подойдет, но, к сожалению, на английском. Среди тем книг: .NET, Алгоритмы, Android, iOS, Angular, C, C++, C#, JS, Linux, Python. В целом, найдется почти любая тема, которая приходит в голову.

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

Читать далее
Всего голосов 83: ↑82 и ↓1+98
Комментарии55

Когерентная суперпозиция глубоко в основе коррупции

Время на прочтение8 мин
Количество просмотров5.2K
Доброго времени суток, дорогие читатели.

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

Все началось с небольшой модели экономических взаимодействий организаций, целью которой было наглядное представление статистически достоверного определения паттерна поведения (стратегии) компаний в развертке их эволюционного состояния. Иными словами я старался смоделировать эволюцию с учетом корреляции между состоянием развития и стратегией игроков в рынке…
Читать дальше →
Всего голосов 11: ↑6 и ↓5+4
Комментарии41

Информация

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

Специализация

Backend Developer, Software Architect
Python
PostgreSQL
Redis
OOP
Design patterns
C++
C
asyncio
Code Optimization
Linux