Pull to refresh

Technotext

Вы думаете рисовать линии это просто?

Level of difficultyMedium
Reading time13 min
Views27K

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

Читать далее

Звуки музыки Sega Mega Drive

Level of difficultyEasy
Reading time25 min
Views12K

Сегодня в центре нашего внимания Sega Mega Drive, она же Genesis — называйте как хотите, всё равно все понимают, что речь идёт о некогда популярнейшей в наших краях 16-битной консоли. Comix Zone, Sonic the Hedgehog, Ultimate Mortal Kombat 3 — вот это вот всё. Но речь пойдёт не о платформе в целом, а об одной специфической её части: звуковой системе и звуках, которые она издавала. Изучим железную и программную части, вспомним холивары, послушаем кое-какую музыку.

Как обычно, я занимаюсь не простым пересказом сомнительных источников, а сложным: пропускаю их через личный опыт. Когда-то давно я разработал несколько homebrew-игр для этой платформы, а также пару музыкальных редакторов — ныне забытых, но в определённый исторический период сыгравших свою роль. Этот бэкграунд даёт мне возможность сорвать покровы и рассказать всю правду о некоторых не самых очевидных моментах. Приступим!
Читать дальше →

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

Level of difficultyEasy
Reading time6 min
Views4.9K

Всем привет! 7 апреля будет день рождения Рунета. Именно в этот день в 1994 году появился первый сайт в домене .RU. 30 лет назад! Как же давно это было. Такие даты навевают множество воспоминаний, в том числе о том как мы подключались к интернету через таксофон на улице. Предлагаю вам сегодня погрузиться в ностальгию вместе со мной.

Читать далее

Как перенести 1,4 ТБ с MS SQL на PostgresSQL за 13 часов

Level of difficultyEasy
Reading time7 min
Views18K

Привет, Хабр! Меня зовут Павел Кузьмин, я работаю ведущим разработчиком в РСХБ-Интех. Однажды в своей работе мы столкнулись с острой необходимостью перенести БД объемом 1,4 ТБ (более 1,5 млрд строк) с MS SQL на PostgresSQL не более чем за 20 часов. Неожиданно для нас, все имеющиеся готовые варианты не подходили, поэтому мы решили взять библиотеку Npgsql на C# и написать свой код. В итоге созданное решение справилось с поставленной задачей за 13 часов. Рассказываем, как мы это сделали, и делимся кодом. Возможно, он вам пригодится в работе.

Читать далее

Знания как код: архитектурный репозиторий в git на базе PlantUML

Level of difficultyHard
Reading time10 min
Views12K

Привет, Хабр! Меня зовут Максим Приходский, я архитектор R-Style Softlab и сегодня хочу рассказать вам о проекте создания архитектурного репозитория в git на базе PlantUML.

Читать далее

«Я — робот Вертер» или Нулевой закон робототехники

Level of difficultyEasy
Reading time8 min
Views11K


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

Разберём подробно, как правильно должны представляться роботы и почему это важно.

А также обсудим пути к созданию цивилизованной среды, в которой взаимодействие с роботами будет приносить больше пользы.
Почему же роботы ВСЕГДА должны говорить о том, что они роботы?

«В черном-черном кабинете». Как в России начали перехватывать и расшифровывать письма

Level of difficultyEasy
Reading time9 min
Views7.2K

Мы продолжаем цикл статей про «черные кабинеты» – подразделения, где занимались перлюстрацией корреспонденции и взломом шифров. В прошлой публикации кандидат исторических наук и старший научный сотрудник Музея криптографии Анастасия Ашаева рассказала о европейских cabinet noir. В этот раз речь пойдет о подобных структурах, которые образовались в XVIII веке в Российской империи. Спойлер: уже в следующем столетии они окажутся самыми продвинутыми и эффективными во всей Европе. 

Но не будем торопить события. Сперва наш эксперт скажет «несколько слов» о развитии шифрования еще со времен Древней Руси, вкладе Петра Великого в отечественную криптографию и учреждении самого первого русского «черного кабинета». Вишенкой же на торте станет история о том, как государевы дешифровщики помогли императрице Елизавете Петровне не проиграть Франции в настоящей «игре престолов».

Читать далее

Как Apple, Amazon и Google покупают стартапы

Level of difficultyEasy
Reading time3 min
Views2.3K

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

Читать далее

Ностальгические игры: Might and Magic VI

Level of difficultyEasy
Reading time19 min
Views9.2K

Might and Magic – одна из самых дорогих моему сердцу игровых вселенных. Невозможно сосчитать, сколько тысяч часов я провёл в её мирах – будь то основная серия, «Герои» или «Крестоносцы». И даже спустя десятилетия что-то неизменно влечёт меня обратно. Причём дело не только в ностальгии – эти игры обладают особой атмосферой, дарящей чувство уюта, словно вернулся в родной с детства двор, в котором не был десятки лет, или очутился дома после длительной поездки.

Но, несмотря на столь теплые эмоции, сложно отрицать, что эта серия по-настоящему увлекательна и обладает душой, что делает возвращение в её миры всегда особенным событием. А в более поздних частях Might & Magic мы и вовсе можем от первого лица посетить знакомые места, пообщаться с персонажами, а также сразиться с существами, которых мы помним ещё по «Героям». Таким образом, становясь не сторонним наблюдателем, что лишь движет фигурки по карте, а полноценным участником событий!

Читать далее

Хакаем советский дверной музыкальный звонок

Level of difficultyEasy
Reading time13 min
Views20K
image

Попал мне в руки вот такой интересный экземпляр – электронный музыкальный звонок «Соната-1» 1990 года выпуска.


image

Вид сзади


Для подключения имеется две пары клемм – на одну пару постоянно подается 220 В, к другой подключается кнопка дверного звонка. При нажатии на кнопку проигрывается короткая мелодия, которую можно выбрать переключателями сбоку – всего на выбор 8 мелодий.

Читать дальше →

Как мы играли с бухгалтерами в тамагочи и чуть не проиграли

Level of difficultyEasy
Reading time6 min
Views861

Привет. Меня зовут Степа, я продуктовый дизайнер в Контур.Экстерне. Экстерн — это сервис, в котором бухгалтеры сдают отчетность в контролирующие органы и ведут учет деятельности организации.

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

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

Читать далее

Настройка Anycast-адреса в рамках бюджетного тестового стенда

Level of difficultyEasy
Reading time5 min
Views2.3K

В рамках IPv4 и IPv6 есть понятие Anycast-адресов. Если упрощать, то это IP-адреса выглядящие как обычные «серые» или «белые» адреса, но которые одновременно могут работать как на одном сервере, так и на множестве. Есть мнение, что это сложно настраивается, требует много дополнительных слоев маршрутизирующего оборудования и т.д. Но в данной статье я попробую описать настройку Anycast-адреса где угодно и с минимальными затратами.

Читать далее

Продвинутые структуры Redis

Level of difficultyMedium
Reading time7 min
Views5.8K

Редис – это кеш? А, может быть, это основная база данных? Так мы и живём в Мойре – опенсорс-системе реалтайм-алёртинга, родом из компании Контур. Расскажу вам про плюсы и минусы такого подхода, про жизнь в Редисе при 3 миллионах RPS, про миграции данных и оптимизацию базы.

Читать далее

Глассморфизм и SVG

Level of difficultyMedium
Reading time7 min
Views2.5K

Всем привет. Я Андрей Осипов, фронтендер из Контура. Почти три года назад, когда у компании был еще старый фирменный стиль, мы столкнулись с проблемой экспорта из фигмы изображений в формате SVG. Сложность была с изображениями, где был эффект глассморфизма, он же эффект матового стекла (frosted glass).

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

Читать далее

Универсальный индекс по документам на эластике

Level of difficultyMedium
Reading time14 min
Views2.4K

Всем привет. Меня зовут Женя Редько, я работаю в ядре Диадока — это сервис электронного документооборота от Контура. В моей подкоманде Документов мы занимаемся основными бизнес-сценариями Диадока. 

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

Читать далее

Ловушка бесконечно ленивого бассейна

Level of difficultyMedium
Reading time9 min
Views4.5K

Нечасто встречаются истории, когда причины и следствия сплетаются в один клубок, связывающий проблемы и с памятью, и с CPU, и с тредпулом. А инструментально затрагивающие и пулы объектов, и Lazy, и работу с асинхронностью, и длительные вычисления. А ещё реже встречаются те, где всё это распутывается и исправляется буквально несколькими строчками кода.

Читать далее

Контур + GFS = Kanso. История развития файловой системы

Level of difficultyMedium
Reading time10 min
Views2.6K

Привет! Я Антон, работаю в команде базовой инфраструктуры Контура и занимаюсь развитием распределенной системы хранения данных Kanso. Это наш форк GFS (Google File System). Мы развиваем Kanso уже более 15 лет, в статье я расскажу про это подробнее.

Читать далее

Тюним запросы в EF Core с помощью интерсепторов

Level of difficultyEasy
Reading time3 min
Views4.7K

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

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

Читать далее

Как мы ускоряли виртуальные фоны в Толке

Level of difficultyMedium
Reading time4 min
Views1.5K

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

Читать далее

Мне всё равно, какой у вас код-стайл

Level of difficultyEasy
Reading time5 min
Views18K

Привет, Хабр. Меня зовут Рогатнев Сергей. Я работаю в Контуре ведущим разработчиком уже более 7 лет. За это время я поработал как минимум над десятью разными проектами в разных командах. Это были и проекты с историей на 10 лет, и стартапы, делающие свои первые шаги. Где-то я был всего 2–3 месяца, а где-то задерживался на пару лет. Такой формат работы позволил мне увидеть совершенно разные подходы к работе и написанию кода. За это время я адаптировался к переходам и смене команд, но мой собственный code style практически исчез, потому что нет двух команд с одинаковым стилем.

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

Читать далее