Pull to refresh

Technotext

▇▅▄▅▅▄ ▇▄▅ Technotext 2022: shortlists are here Pinned

The authors sent 675 articles for Technotext 2022, we sorted them out and now ready to show the nominees. Good news: short lists turned out to be long.

Winners will be announced by April 14th. Scoring criteria and lists of judges available in this post.

Отображение возраста контактов в Гугл календаре на день их рождения

Level of difficulty Easy
Reading time 3 min
Views 2.5K
Open source *JavaScript *Google API *Google Cloud Platform *
✏️ Technotext 2022
Tutorial

Я уже много лет пользуюсь Гугл календарём и Гугл контактами и единственная вещь которая мне не нравится это отдельный календарь, который не отображает возраст, а показывает только сам факт дня рождения. Ещё в 2019 году я написал скрипт, который решает эту проблему, но прошло 3 года и с помощью одного из читателей Хабра мы добавили склонения слов на русском языке при обозначения возраста и ещё несколько технических функций.

А ещё обновили похожий скрипт для детей: это когда каждый месяц скрипт автоматически создаёт событие в Гугл календаре, в заголовке к которому указано сколько исполнилось годов и месяцев вашему малышу (работает с самого рождения, 0 лет), а в описании указан возраст (годы и месяцы) каждого из родителей. Я сам обычно не помню даты и эти скрипты стали для меня настоящим спасением. 

Пошаговая инструкция внутри
Total votes 4: ↑4 and ↓0 +4
Comments 2

Пятьдесят лет на стезе программирования. Часть V. Назад в СССР. 1988-1991 г.г

Reading time 20 min
Views 8.9K
*nix *Reading room History of IT Old hardware Biography of geeks
✏️ Technotext 2022
imageПосле эйфории 1987 года, связанной с выходом Постановления ЦК КПСС и СМ СССР по Программе «Противодействие» (СП-2000), в котором мы смогли прописать не только работы, связанные с созданием стенда имитационного моделирования (СИМ), но и предусмотреть поставки средств вычислительной техники (СВТ), началась ежедневная работа по подготовке машинных залов для ЭВМ. Помимо персональных ЭВМ в комплект поставки входили и большие машины ЕС-1066 и ЕС-1007, которые должны были стать центральными звеньями локальных вычислительных сетей, создаваемых в каждом научном управлении института.
Если ЕС-1066 должны были размещаться в новом корпусе 47Б вычислительного центра (ВЦ) и за их ввод в эксплуатацию отвечало также ВЦ, то с ЕС-1007 всё было сложнее.
Для каждой ЕС-1007 необходимо было спроектировать и оборудовать машинный зал с гермозоной для лентопротяжных механизмов и накопителей на магнитных дисках. Машинный зал занимал площадь не менее 25 м2, а если ещё устанавливался, например, графопостроитель, то эта площадь существенно увеличивалась.
Читать дальше →
Total votes 41: ↑37 and ↓4 +33
Comments 106

Как мы сделали самописный длинномер для работы в дата-центрах

Reading time 5 min
Views 5K
Selectel corporate blog System Analysis and Design *IT Infrastructure *Network technologies *Data visualization *
✏️ Technotext 2022

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

Кроссировка нужна, например, при масштабировании клиентских вычислительных мощностей в сезон активных продаж или при резервации. За последние два года мы кинули порядка 4 000 линков только в дата-центре Цветочная-2.
Читать дальше →
Total votes 36: ↑36 and ↓0 +36
Comments 8

Как мы навели порядок в C++/Qt проекте с помощью Conan

Reading time 12 min
Views 9K
C++ *Qt *
✏️ Technotext 2022

О себе

Привет, Хабр! Я Тимлид/Архитектор в компании Монитор Софт. В прошлом C++ разработчик, сейчас все еще удается иногда выходить в поля)). Хочу поделиться нашим опытом использования Conan. С момента описываемых ниже событий прошло года 4, и в целом наше решение уже прошло проверку временем.

Читать далее
Total votes 23: ↑22 and ↓1 +21
Comments 16

Создание ботов для торговли криптовалютами и акциями на Postgres

Reading time 22 min
Views 22K
PostgreSQL *System Analysis and Design *Cryptocurrencies
Sandbox
✏️ Technotext 2022

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

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

Пока, ФИАС! Рассказываем, как устроен адресный справочник ГАР

Reading time 10 min
Views 43K
HFLabs corporate blog System Analysis and Design *Data Mining *Open data *Data storage *
✏️ Technotext 2022

1 сентября 2021 года ФНС перестала обновлять свой адресный справочник в формате ФИАС. Относительно новый ГАР внезапно стал единственным государственным адресный реестром, доступным общественности. Рассказываем, что из себя представляет новый справочник и чем он отличается от ФИАС.

Читать далее
Total votes 25: ↑22 and ↓3 +19
Comments 18

Многомодульный BDSM: как связать Gradle модули и как с ними общаться после этого?

Reading time 14 min
Views 4.3K
Циан corporate blog Programming *Development of mobile applications *Development for Android *
✏️ Technotext 2022

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

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

Паттерн Outbox: как не растерять сообщения в микросервисной архитектуре

Reading time 8 min
Views 17K
Lamoda corporate blog Programming *Development for e-commerce *Microservices *
✏️ Technotext 2022

Привет! Меня зовут Михаил Боровиков, я тимлид команды, которая отвечает за систему процессинга заказов Lamoda — Orders Management. Эта система, словно «сердце» Lamoda, через которое проходит самый важный для бизнеса шаг — оформление заказа.

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

Для решения этой проблемы мы выбрали паттерн Outbox. И в этой статье я расскажу, что он из себя представляет, как мы его применили, почему пошли по пути at-least-once и не положились на работу одного брокера сообщений.

Читать далее
Total votes 31: ↑29 and ↓2 +27
Comments 27

Как быстро реализовать поиск на корпоративном портале

Reading time 8 min
Views 5K
Selectel corporate blog Search engines *PostgreSQL *IT-companies
✏️ Technotext 2022

Привет, меня зовут Антон Щербак, я разработчик корпоративного портала Selectel. Это внутренняя система, где можно узнать новости компании, поучаствовать в Selectel Game (это наша собственная геймификация рабочих достижений) и, конечно, найти необходимого коллегу или структуру.

Нас уже более 700, и иногда поиск человека превращается в выпуск ток-шоу «Жди меня». Поэтому у нас была задача сделать его более удобным и приводящим к нужному результату. Под катом рассказываю, к какому решению мы в итоге пришли и как реализовали.
Читать дальше →
Total votes 48: ↑48 and ↓0 +48
Comments 8

К микросервисам через reverse engineering и кодогенерацию

Reading time 19 min
Views 6.9K
Wrike corporate blog Programming *Java *Designing and refactoring *Microservices *
☕️ Season Java
✏️ Technotext 2022

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

Часто основная сложность заключается в том, что нужно одновременно поддерживать уже существующий код монолита и параллельно внедрять новые принципы и подходы.  В статье я расскажу, как мы в Wrike, используя reverse engineering и немного кодогенерации, реализовали первые шаги по выделению отдельных микросервисов и запустили первый «почти настоящий» BFF-сервис в рамках нашего монолита.

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

Предотвращаем утечки памяти в Go, ч. 2. Особенности рантайма

Reading time 14 min
Views 8.9K
МойОфис corporate blog Perfect code *Go *Development for Linux *
✏️ Technotext 2022

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

Читать далее
Total votes 84: ↑83 and ↓1 +82
Comments 8

Взгляд с обратной стороны: как смотрит на код реверсер

Reading time 12 min
Views 4.1K
«Лаборатория Касперского» corporate blog Information Security *Programming *C++ *Reverse engineering *
✏️ Technotext 2022
Привет! Меня зовут Денис, я Lead Security Researcher в центре Global Research & Analysis Team (GReAT) — подразделении «Лаборатории Касперского», которое занимается целевыми вредоносами. Это значит, что их авторы не рассылают трояны всем подряд, а тщательно выбирают свои организации-жертвы. Иногда их «продукты» написаны интересно.

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

image

Эта статья написана по мотивам выступления на C++ Russia. Я хочу рассказать, как на код C++ смотрит реверсер и что он видит в этом комбайне прекрасном языке. Обычно разработчик идет от исходного кода к двоичному, а мы — наоборот. Ко мне и коллегам приезжают самплы — уже скомпилированные исполняемые (PE, ELF, etc.) файлы, возможно, какой-то байткод одного из intermediate languages или даже прошивка. И мы начинаем их разбирать. Как мне кажется, реверсеры и разработчики могли бы обогатить друг друга.
Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Comments 12

Как мы развивали бэкенд War Robots, в процессе заDDoSив самих себя — и чему научились после этого

Reading time 14 min
Views 4.5K
Pixonic corporate blog Development of mobile applications *Game development *Server Administration *Games and game consoles
Recovery mode
✏️ Technotext 2022

Привет! Меня зовут Андрей Михеев, я занимаюсь развитием бэкенда War Robots (это мобильный PvP-шутер, в котором с помощью больших роботов можно выяснить, кто круче). Игре уже почти 9 лет, и за это время мы повидали всякого.

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

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

Оптимизация поиска по большому полю

Reading time 10 min
Views 5.1K
«Лаборатория Касперского» corporate blog Programming *SQL *Microsoft SQL Server *Database Administration *
✏️ Technotext 2022
Tutorial
Вновь привет, уважаемые читатели Хабра! Работая с одной из систем хранения метаданных о файлах в «Лаборатории Касперского» вспомнил, что давно хотел написать об оптимизации поиска по большому полю в базах данных. О чем далее и расскажу более подробно.

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



Итак, представьте: у вас есть таблица в базе данных MS SQL, в которой десятки миллиардов строк данных. И в эту таблицу вставляются и удаляются суммарно десятки и сотни тысяч строк в секунду. Назовем эту таблицу dbo.metadata.

Замечание. Для проведенного анализа ниже была создана новая база данных TEST, в которой были созданы две таблицы dbo.metadata и dbo.sha256_checksum (о второй таблице будет написано ниже) и сгенерированы синтетические данные на 1+ млрд строк в каждую. После каждого вызова запроса проводился полный сброс кэша планов для базы данных TEST (DBCC FREEPROCCACHE), чтобы план для запроса каждый раз строился заново, а не брался уже готовый.

Таблица dbo.metadata упрощенно выглядит так:

Определение таблицы dbo.metadata
Определение таблицы dbo.metadata
Читать дальше →
Total votes 42: ↑42 and ↓0 +42
Comments 10

Как мы делали свой поиск в Ozon: эволюция архитектуры от SQL до O2

Reading time 16 min
Views 18K
Ozon Tech corporate blog High performance *Search engines *System Analysis and Design *Microservices *
✏️ Technotext 2022

Привет, Хабр! Меня зовут Сергей, я руководитель команды поиска в Ozon. Сегодня я расскажу об эволюции наших поисковых систем: как всё начиналось более 20 лет назад с обычных SQL-запросов, как мы осваивали Sphinx и Elasticsearch и как сейчас наш собственный поисковый движок O2 на базе Apache Lucene выдерживает нагрузку в десятки тысяч RPS в сезон распродаж. Исторические хроники восстанавливались по воспоминаниям современников и представлены для полноты картины. Новейшая история описана на основе собственного опыта, поэтому подробностей будет на порядок больше. Поехали!

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

Без А/B результат XЗ, или Как построить высоконагруженную платформу А/B-тестов

Reading time 17 min
Views 11K
Ozon Tech corporate blog High performance *System Analysis and Design *Web services testing *Product Management *
✏️ Technotext 2022

Один из важных вопросов как в нашей жизни, так и в бизнесе, и в IT — вопрос эффективности. Эффективно ли мы планируем наше время, те ли задачи решает бизнес, тот ли код мы оптимизируем? Чтобы ответить на эти вопросы, результат должен обладать главным критерием измеримостью. Измеримость результата новых фич для бизнеса и IT обеспечивает платформа А/B-тестов. О том, как её можно построить, выдерживать большой RPS и при этом не облажаться уронить прод, я расскажу в этой статье. 

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

Читать далее
Total votes 108: ↑107 and ↓1 +106
Comments 7

Как упростить жизнь за 312 коротких шагов: проектируем GraphQL API в микросервисной архитектуре

Reading time 9 min
Views 6.1K
High performance *System Analysis and Design *Designing and refactoring *API *Microservices *
Sandbox
✏️ Technotext 2022

Звук – HiFi-сервис с большой командой инженеров. Мы используем передовые технологии и современный стек, и экспериментируем, чтобы решать сложные, нестандартные задачи. Одна из технологий  – GraphQL.

Эта статья изначально создавалась как гайд по работе с GraphQL для инженеров Звука (системные аналитики, разработчики, QA). При этом статья может быть полезна всем, кто никогда не работал с GraphQL, но очень хочет понять, зачем он может быть нужен, и как поможет решить задачу вашего бизнеса.

Читать далее
Total votes 29: ↑28 and ↓1 +27
Comments 36

Децентрализованный поиск для свободного веба

Reading time 12 min
Views 8.7K
Search engines *JavaScript *Algorithms *Rust *Distributed systems *
✏️ Technotext 2022

Возможно ли создать поисковую систему, которую тяжело подвергнуть цензуре, влиянию и блокировке?

Говоря техническим языком, возможно ли выполнять полнотекстовый поиск не имея удаленного сервера, удобным для пользователя способом, одновременно храня поисковый индекс в peer-to-peer системе и имея возможность быстро обновлять поисковый индекс?

Да, это возможно!

Под катом описание архитектуры поискового движка Summa на Rust и набора приемов, позволивших ответить утвердительно на все вопрос

Читать далее
Total votes 65: ↑63 and ↓2 +61
Comments 21

От Isolation к Consistency — дорога длиной в 30 лет

Reading time 17 min
Views 6.1K
High performance *System Analysis and Design *SQL *
✏️ Technotext 2022

Участвую в стартапе, в котором разрабатывается СУБД нового типа (работает поверх некоторых kv-движков, кардинально расширяя их возможности, про это немного можно прочитать здесь). Для того, чтобы сравнить то, что понемногу получается, с тем, что имеется в индустрии, пришлось на глубоком уровне проработать первоисточники по темам Isolation и Consistency (уточню, что имеется ввиду не та Consistency, что в ACID). Обнаружил интересные нюансы, которые и излагаю в этой статье.


Тезисно:


  • Термин Phantom Read является продуктом испорченного телефона
  • Смысл понятий Lost Update, Write Skew и Read Skew для разделения уровней изоляций неочевиден и относителен
  • Движок, который обеспечивает уровень изоляции Serializable, в распределённом мире может вести себя весьма причудливо, например, всегда возвращать пустой результат для read-only транзакций — и ему за это по стандарту "ничего не будет"
  • Strong consistency в Cosmos DB — предел мечтаний? (спойлер: нет)

Ну, и ещё кое-что по мелочи. В конце рассмотрим вот такой венец творения человеческого разума:


Читать дальше →
Total votes 27: ↑27 and ↓0 +27
Comments 25

Собеседование Golang разработчика (теоретические вопросы), Часть II. Что там с конкурентностью?

Reading time 20 min
Views 29K
Programming *Go *IT career
✏️ Technotext 2022

Что спрашивают на собеседовании Golang разработчика? Асинхронщина? Контексты? Вторая часть статьи с вопросами и ответами, собранными на собеседованиях.

Читать далее
Total votes 18: ↑16 and ↓2 +14
Comments 19