Pull to refresh
-4
0
Артём @3263927

Инженер-программист

Send message

Как мы переехали с Oracle на PostgreSQL в нагруженном сервисе без даунтайма

Level of difficulty Medium
Reading time 30 min
Views 21K

Всем привет! Я Сергей, работаю в B2B-команде Яндекс Маркета последние 3,5 года. Как уже понятно из заголовка, сейчас я вам расскажу про yet-another-миграцию с базы на базу, которая началась в середине 2021 года и заняла почти год. Получается, мемуары.

Вас ждёт рассказ о том, как мы:

- несколько месяцев чинили тесты и делали трансформер;

- десятки раз переливали данные;

- чинили баги незаметно для пользователей;

- заставили сервис работать на PostgreSQL быстрее, чем он работал на Oracle.

Читать далее
Total votes 85: ↑86.5 and ↓-1.5 +88
Comments 15

Zigbee шлюз для счетчиков Меркурий

Reading time 1 min
Views 12K

Давно удивлялся, почему не смотря на распространенность счетчиков Меркурий и возможность съема с них показаний через RS-485, на рынке DIY устройств не было Zigbee шлюза для них. Этот пробел я решил восполнить самостоятельно.

Читать далее
Total votes 56: ↑54 and ↓2 +52
Comments 25

Использование diagnostic observers для изоляции кода логгирования

Level of difficulty Medium
Reading time 16 min
Views 1.1K

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

Класс DiagnosticListener определен в пакете System.Diagnostics, и особенности его использования описаны в разных статьях, включая одну-две на Хабре.

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

Читать далее
Total votes 2: ↑2 and ↓0 +2
Comments 1

Вы за это заплатите! Цена Чистой Архитектуры. Часть 1

Level of difficulty Medium
Reading time 11 min
Views 23K

Всем привет, меня зовут Артемий, я работаю старшим Android-разработчиком в команде пользовательского профиля в RuStore. Мой опыт в индустрии уже 8 лет. За это время я успел поработать в разных проектах и компаниях. У меня был опыт работы в проекте, в котором было свыше 300 модулей и больше 60 Android-разработчиков. Такие условия заставляют задуматься о масштабируемости на принципиально ином уровне.

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

Читать далее
Total votes 64: ↑61 and ↓3 +58
Comments 65

Большой код. Учимся генерировать F#-исходники с помощью Fantomas. Часть 3. Модули и типы

Level of difficulty Hard
Reading time 20 min
Views 1.1K

В прошлых двух частях мы ознакомились с синтаксической моделью F#-кода и с инструментами для неё. Объёмный пример туда уже не влез, но необходимость в нём осталась. Так родились ещё две заключительные части цикла. Их объединяет общий проект, но в остальном они представляют собой сборную солянку фактов, практик и наблюдений, которые было бы трудно разместить в каталогизированной документации.

Мы возьмём сугубо игровую задачу с понятным результатом и на её примере узнаем:

• на какие ноды AST стоит обратить внимание в первую очередь;
• где Fantomas-у нельзя доверять;
• где можно хакать;
• где лучше придерживаться пуризма;
• и как на F# можно строить Fluent API.

В этой части мы сосредоточимся на общей организации генератора, входных данных и основных элементах AST. В следующей сделаем то же самое, но на более сложном уровне, сместив повествование в сторону устройства Fluent API.

Читать далее
Total votes 10: ↑10 and ↓0 +10
Comments 2

Защита микросхем от реверс-инжиниринга и несанкционированного проникновения

Reading time 20 min
Views 83K

“CVAX — когда вы забатите довольно воровать настоящий лучший”.
Надпись, оставленная американскими инженерами для советских коллег в топологии микропроцессора.

Реверс-инжиниринг микросхем — головная боль производителей с самых первых лет существования микроэлектроники. Вся советская электроника в какой-то момент была построена на нем, а сейчас с гораздо большим размахом тем же самым занимаются в Поднебесной, да и не только в ней. На самом деле, реверс-инжиниринг абсолютно легален в США, Евросоюзе и многих других местах, с целью (цитирую американский закон) “teaching, analyzing, or evaluating the concepts or techniques embodied in the mask work or circuitry”.

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

Другое не менее (а то и более) важное направление защиты микросхем от реверс-инжиниринга — обеспечение безопасности информации, хранимой в памяти. Такой информацией может быть как прошивка ПЛИС (то есть опять-таки интеллектуальная собственность разработчика), так и, например, пин-код от банковской карты или ключ шифрования защищенной флэшки. Чем больше ценной информации мы доверяем окружающему миру, тем важнее защищать эту информацию на всех уровнях работы обрабатывающих ее систем, и хардварный уровень — не исключение.
Читать дальше →
Total votes 237: ↑234 and ↓3 +231
Comments 130

Фантомное питание для микрофона

Level of difficulty Medium
Reading time 8 min
Views 6.9K


Привет, Хабр! Большинство распространённых аудиоинтерфейсов имеют всего два входных канала, которые обычно используются как левая и правая половина стереосигнала или два канала моно. Например, для микрофона и гитары.

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

В свою очередь, микшеру необходим микрофонный предусилитель с балансным входом, фантомным питанием и фильтром верхних частот, отсекающим низкочастотные шумы, прежде всего, от вентиляторов. Именно такое устройство мы сегодня изучим и соберём.
Заодно узнаем, какие бывают микрофоны
Total votes 44: ↑43 and ↓1 +42
Comments 12

Простая трубка Гейслера своими руками

Level of difficulty Medium
Reading time 7 min
Views 16K

Историческая разрядная трубка – «трубка Гейслера» (1857) – воистину прабабушка множества газоразрядных и электровакуумных приборов (ЭВП) и родилась как эксперимент и развлечение с демонстрацией тлеющего разряда. Трубка Гейслера привела, ни много ни мало, к открытию электрона. Прямые её потомки – неоновая реклама и люминесцентное освещение, лишь совсем недавно сдались под натиском светодиодов. Простые разрядные трубки долгое время служили индикатором разрежения в вакуумных системах. Такие приборы показывали высокое напряжение, использовались в научных исследованиях и для индикации резонанса в контурах крупных радиопередатчиков. Разрядные трубки Гейслера специфической гантелеобразной формы используют для получения линий спектра веществ.
Читать дальше →
Total votes 150: ↑150 and ↓0 +150
Comments 97

Немного о метриках сложности

Reading time 4 min
Views 1.9K

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

Читать далее
Total votes 5: ↑3 and ↓2 +1
Comments 1

Люди не понимают ООП

Level of difficulty Medium
Reading time 15 min
Views 112K

«ООП для меня означает лишь обмен сообщениями, локальные ограничения и защиту, сокрытие состояния процесса и крайне позднее привязывание», — Алан Кэй (человек, придумавший термин «объектно-ориентированное программирование»)1

Похоже, многим не нравится объектно-ориентированное программирование. Первое, что приходит в голову, когда слышишь эту трёхбуквенную аббревиатуру — это пример с автомобилем, наследование, геттеры, сеттеры и ObjectFactoryFactorySingleton.

Мне это всегда казалось довольно странным. Мне не только нравится ООП, я ещё и считаю, что часто это лучший/наиболее очевидный способ моделирования задачи. И ниже я расскажу, почему.
Читать дальше →
Total votes 154: ↑147 and ↓7 +140
Comments 457

На что способен самодельный очиститель воздуха, который можно собрать за 30 секунд?

Level of difficulty Easy
Reading time 7 min
Views 68K

Плохой воздух однозначно вреден, но на рынке его очистителей мы наблюдаем бардак. Каждый производитель использует свои эксклюзивные фильтры, по всей видимости, для того, чтобы клиенты были вынуждены покупать именно их. А откуда нам знать, что эти устройства вообще работают? Немногие компании публикуют лабораторные тесты. И почему какая-то большая пластиковая коробка с вентилятором и фильтром стоит аж $100-300?

Но существуют и самодельные очистители, чаще представляющие собой просто примотанный к вентилятору фильтр. Мне такая идея по душе, но в этом случае тоже нет уверенности в их эффективности. Какие-то эксперименты проводились, но недостаточно, чтобы внушить мне доверие. Поэтому я решил поэкспериментировать сам: собрал очиститель, напустил дыма и измерил, насколько эффективно он справляется с удалением мелких частиц.
Читать дальше →
Total votes 129: ↑124 and ↓5 +119
Comments 157

Как шутят математики. Решение первого шифра Олама

Level of difficulty Medium
Reading time 12 min
Views 15K

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

Итак, Лос-Аламос объединил одной целью многих видных учёных того времени. Одним из них был замечательный учёный Ричард Фейнман. Разумеется, основным предметом его интереса всегда была физика, но помимо потрясающих познаний в ней, профессор Фейнман отличался и другими талантами. Из его автобиографии (всем, кто ещё не читал, настоятельно рекомендую) известен факт, что профессор особенно гордился своими реактивными скилами решения головоломок и математических задач.

Читать далее
Total votes 26: ↑26 and ↓0 +26
Comments 16

11 полезных фичей Chrome DevTools

Level of difficulty Easy
Reading time 5 min
Views 8.8K

Всем привет!

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

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

Погнали!

Погнали!
Total votes 21: ↑21 and ↓0 +21
Comments 2

Передача данных по радиоканалу

Reading time 4 min
Views 15K

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

Важно! Здесь не будет информации о юридических особенностях использования радиосвязи, а также о частотах, мощности передачи, позывных и т. п. Применение радиосвязи имеет ограничения и регулируется Федеральным законом N 126-ФЗ «О связи».

Читать далее
Total votes 36: ↑36 and ↓0 +36
Comments 60

Разбираемся с Bluetooth Low Energy на примере превращения USB-клавиатуры в беспроводную

Level of difficulty Medium
Reading time 16 min
Views 15K


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

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

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

Данная статья ставит целью на примере разработки собственной Bluetooth-клавиатуры помочь разобраться в базовых понятиях Bluetooth, так как чтение скучных спецификаций и статей с введением в технологию даёт мало пользы.
Читать дальше →
Total votes 76: ↑74 and ↓2 +72
Comments 76

Информация об информации. Энтропия Шеннона, демон Максвелла и предел Ландауэра

Level of difficulty Medium
Reading time 24 min
Views 19K

Информация – одно из самых неоднозначных и неопределённых понятий в науке и философии. Для гуманитария это любые сведения, которые можно запомнить и передать в устной или письменной форме. Для математика это абстрактная сущность, сохраняющаяся при вычислительном изоморфизме. Для физика-теоретика это набор квантовых чисел, характеризующих состояние элементарной частицы. Для программиста это цифровые данные, которые можно представить в двоичном коде и измерить в битах. Для философа-материалиста это отражение многообразия окружающего мира с помощью знаков и сигналов. Для философа-идеалиста это нематериальная, неизмеримая и нелокальная сущность, что-то связанное с духом или сознанием. Для эзотериков это некая метафизическая субстанция или информационное поле. Что же такое информация на самом деле? В данной лекции я покажу, что информация – физическая, объективная, измеряемая величина, в которой нет ничего субъективного и мистического. Заодно мы разберёмся, что такое энтропия по Шеннону, насколько избыточен естественный язык, в чём заключается принцип Ландауэра и обладает ли информация массой.

Читать далее
Total votes 47: ↑45 and ↓2 +43
Comments 166

Редактирование и подпись PDF в браузере локально

Reading time 3 min
Views 7K


За последние месяцы появилось несколько полезных инструментов для подписи и редактирования PDF. Опенсорсные веб-приложения работают через браузер, но локально на компьютере клиента, то есть без передачи документов на сервер. Вся «установка» таких приложений сводится к сохранению HTML с сайта и запуску из кэша.

В некоторых случаях эти современные приложения могут составить альтернативу платным нативным программам, таким как Adobe Acrobat Pro и DocuSign.
Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Comments 1

Fan Control — лучший софт для управления вентиляторами в компьютере

Level of difficulty Easy
Reading time 8 min
Views 55K


Каждый владелец компьютера сталкивался с шумом вентиляторов. Хорошо, когда они качественные, не шипят и не гудят, а материнская плата каким-то чудом сама управляет ими в оптимальном режиме, и все довольны.

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

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

В этой статье я опишу очень небольшую утилиту для управления вентиляторами в ПК, которая поразила меня своей гибкостью, и вот уже многие годы является второй в списке на установку в свежую систему. Почему второй? Потому что первым делом в систему ставится браузер, желательно огнелис.
Читать дальше →
Total votes 61: ↑57 and ↓4 +53
Comments 77

Друиды 21-го века или «химичим напиток силы» в домашних условиях

Level of difficulty Medium
Reading time 31 min
Views 11K

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

Читать далее
Total votes 40: ↑37 and ↓3 +34
Comments 37

Стеганоанализ в компьютерно-технической экспертизе

Level of difficulty Medium
Reading time 15 min
Views 2.6K

В 1999 году на встрече по обмену опытом с представителями правоохранительных органов США я узнал о существовании цифровой стеганографии. Тогда демонстрация работы S-Tools произвела на меня эффект, сравнимый с тем, что производят фокусы Копперфильда, однако после «разоблачения» все стало понятно. Еще через несколько лет я узнал, что существует научное направление, посвященное обнаружению стеганографии. Это было что-то совсем фантастическое…

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

Цель статьи – привлечь внимание к применению стеганоанализа в компьютерной экспертизе и пригласить сообщество к дискуссии по методологическим аспектам.

Читать далее
Total votes 6: ↑5 and ↓1 +4
Comments 7

Information

Rating
3,931-st
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity