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

Технотекст

▇▅▄▅▅▄ ▇▄▅ Технотекст 2022: шорт-листы уже здесь Закреплено

Авторы отправили 675 заявок на Технотекст 2022, мы их перебрали и готовы показать номинантов. Короткие списки получились очень даже длинными, что не может не радовать.

Победителей объявим до 14 апреля. Критерии оценки, списки судей и подборки статей по номинациям — в этом посте.

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

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 2.5K
Open source *JavaScript *Google API *Google Cloud Platform *
✏️ Технотекст 2022
Туториал

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

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

Пошаговая инструкция внутри
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 2

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

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

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

Время на прочтение 5 мин
Количество просмотров 5K
Блог компании Selectel Анализ и проектирование систем *IT-инфраструктура *Сетевые технологии *Визуализация данных *
✏️ Технотекст 2022

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

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

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

Время на прочтение 12 мин
Количество просмотров 8.9K
C++ *Qt *
✏️ Технотекст 2022

О себе

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

Читать далее
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 16

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

Время на прочтение 22 мин
Количество просмотров 21K
PostgreSQL *Анализ и проектирование систем *Криптовалюты
Из песочницы
✏️ Технотекст 2022

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

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

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

Время на прочтение 10 мин
Количество просмотров 43K
Блог компании HFLabs Анализ и проектирование систем *Data Mining *Открытые данные *Хранение данных *
✏️ Технотекст 2022

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

Читать далее
Всего голосов 25: ↑22 и ↓3 +19
Комментарии 18

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

Время на прочтение 14 мин
Количество просмотров 4.3K
Блог компании Циан Программирование *Разработка мобильных приложений *Разработка под Android *
✏️ Технотекст 2022

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

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

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

Время на прочтение 8 мин
Количество просмотров 16K
Блог компании Lamoda Программирование *Разработка под e-commerce *Микросервисы *
✏️ Технотекст 2022

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

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

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

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

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

Время на прочтение 8 мин
Количество просмотров 5K
Блог компании Selectel Поисковые технологии *PostgreSQL *IT-компании
✏️ Технотекст 2022

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

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

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

Время на прочтение 19 мин
Количество просмотров 6.8K
Блог компании Wrike Программирование *Java *Проектирование и рефакторинг *Микросервисы *
☕️ Cезон Java
✏️ Технотекст 2022

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

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

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

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

Время на прочтение 14 мин
Количество просмотров 8.9K
Блог компании МойОфис Совершенный код *Go *Разработка под Linux *
✏️ Технотекст 2022

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

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

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

Время на прочтение 12 мин
Количество просмотров 4K
Блог компании «Лаборатория Касперского» Информационная безопасность *Программирование *C++ *Реверс-инжиниринг *
✏️ Технотекст 2022
Привет! Меня зовут Денис, я Lead Security Researcher в центре Global Research & Analysis Team (GReAT) — подразделении «Лаборатории Касперского», которое занимается целевыми вредоносами. Это значит, что их авторы не рассылают трояны всем подряд, а тщательно выбирают свои организации-жертвы. Иногда их «продукты» написаны интересно.

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

image

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

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

Время на прочтение 14 мин
Количество просмотров 4.4K
Блог компании Pixonic Разработка мобильных приложений *Разработка игр *Серверное администрирование *Игры и игровые консоли
Recovery mode
✏️ Технотекст 2022

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

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

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

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

Время на прочтение 10 мин
Количество просмотров 5K
Блог компании «Лаборатория Касперского» Программирование *SQL *Microsoft SQL Server *Администрирование баз данных *
✏️ Технотекст 2022
Туториал
Вновь привет, уважаемые читатели Хабра! Работая с одной из систем хранения метаданных о файлах в «Лаборатории Касперского» вспомнил, что давно хотел написать об оптимизации поиска по большому полю в базах данных. О чем далее и расскажу более подробно.

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



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

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

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

Определение таблицы dbo.metadata
Определение таблицы dbo.metadata
Читать дальше →
Всего голосов 42: ↑42 и ↓0 +42
Комментарии 10

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

Время на прочтение 16 мин
Количество просмотров 18K
Блог компании Ozon Tech Высокая производительность *Поисковые технологии *Анализ и проектирование систем *Микросервисы *
✏️ Технотекст 2022

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

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

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

Время на прочтение 17 мин
Количество просмотров 11K
Блог компании Ozon Tech Высокая производительность *Анализ и проектирование систем *Тестирование веб-сервисов *Управление продуктом *
✏️ Технотекст 2022

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

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

Читать далее
Всего голосов 108: ↑107 и ↓1 +106
Комментарии 7

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

Время на прочтение 9 мин
Количество просмотров 6K
Высокая производительность *Анализ и проектирование систем *Проектирование и рефакторинг *API *Микросервисы *
Из песочницы
✏️ Технотекст 2022

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

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

Читать далее
Всего голосов 29: ↑28 и ↓1 +27
Комментарии 36

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

Время на прочтение 12 мин
Количество просмотров 8.7K
Поисковые технологии *JavaScript *Алгоритмы *Rust *Распределённые системы *
✏️ Технотекст 2022

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

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

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

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

Читать далее
Всего голосов 65: ↑63 и ↓2 +61
Комментарии 21

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

Время на прочтение 17 мин
Количество просмотров 6K
Высокая производительность *Анализ и проектирование систем *SQL *
✏️ Технотекст 2022

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


Тезисно:


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

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


Читать дальше →
Всего голосов 27: ↑27 и ↓0 +27
Комментарии 25

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

Время на прочтение 20 мин
Количество просмотров 29K
Программирование *Go *Карьера в IT-индустрии
✏️ Технотекст 2022

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

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