Pull to refresh
19
0
Дынников Ярослав @Rosik

Разработчик

Send message

Война стандартов. Как аналоговые компакт-кассеты победили в конкурентной борьбе

Level of difficultyEasy
Reading time9 min
Views25K


В одной из песен группы «Кафе» есть такая строчка: «…и проклятый китайский плеер зажевал две кассеты Майка». В восьмидесятые годы выбор музыкальных носителей и вправду был крайне невелик: постепенно уходящий в прошлое «винил» и компакт-кассеты, пришедшие на смену огромным бобинам «катушечных» магнитофонов. При слове «кассета» каждый из нас представляет себе одно и то же: что такое магнитофонная кассета, знают все, её внешний вид вплоть до малейших деталей знаком любому (даже бывшему) владельцу «кассетника» или плеера. Кассеты также использовались в качестве носителей информации для бытовых компьютеров и стали настолько привычными, что никто даже не задумывался об истории их появления, которая, оказывается, насчитывает немало интересных страниц. Как минимум, «традиционные» компакт-кассеты были всего лишь одним из стандартов, между которыми шла жесточайшая конкурентная борьба. Притом знакомые нам кассеты имели все шансы с треском проиграть эту гонку. Если бы не одно обстоятельство…
Читать дальше →
Total votes 101: ↑102 and ↓-1+103
Comments80

Распределенный SQL в Picodata

Level of difficultyMedium
Reading time12 min
Views2.3K

Недавно мы выпустили новую значительную версию Picodata — распределенной in-memory СУБД с открытым исходным кодом. Это продукт на основе Tarantool c поддержкой плагинов на Rust и некоторыми другими интересными особенностями, о которых можно почитать в статье Picodata: простое масштабирование Tarantool.

Одно из главных улучшений в новом релизе Picodata 23.12 — возможность выполнять распределенные (кластерные) SQL-запросы непосредственно из консоли Picodata, без дополнительных настроек. Можно управлять глобальными и шардированными таблицами (DDL), модифицировать данные в них (DML) и, разумеется, читать из них (DQL). Также, мы теперь поддерживаем централизованное управление пользователями, ролями и привилегиями на основе списков контроля доступа (ACL), опять же — в рамках всего кластера.

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

Погрузиться в детали
Total votes 14: ↑14 and ↓0+14
Comments2

Упрощаем себе работу: плагины VS Code, актуальные в 2023 году

Reading time3 min
Views33K

VS Code сам по себе не обладает большим количеством функций и возможностей. Но это можно легко исправить при помощи плагинов, которые доступны в магазине расширений VS Code. Под катом — несколько плагинов, которые могут пригодиться разработчикам. Здесь есть многое — от управления проектами до «нескучных обоев», т. е. изменений в дизайне. Что же, поехали!

Читать далее
Total votes 45: ↑34 and ↓11+23
Comments24

Верификация распределённых систем с применением Isabelle/HOL

Level of difficultyHard
Reading time8 min
Views1.4K
image

Мы ежедневно пользуемся распределёнными системами (в форме интернет-сервисов). Эти системы очень полезны, но и реализовывать их непросто, так как сети непредсказуемы. Всякий раз, когда вы передаёте сообщение по сети, предполагается, что оно прибудет очень быстро, но возможны и достаточно долгие задержки. Может случиться так, что сообщение не прибудет вообще, либо прибудет несколько раз. Когда вы отправляете запрос другому процессу и не получаете отклика, вы понятия не имеете, что произошло: потерялся ли запрос, либо тот другой процесс аварийно завершился, либо сам отклик потерялся? Или же на самом деле ничего не потерялось, сообщение просто задержалось и ещё может прибыть. Невозможно доподлинно узнать, что произошло, поскольку ненадёжный обмен сообщениями – единственный способ межпроцессной коммуникации.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments0

Picodata: простое масштабирование Tarantool

Level of difficultyMedium
Reading time16 min
Views8.3K

Привет! Сегодня я хочу познакомить вас с ПО, которое мы разрабатываем в нашей компанией — кластерной СУБД и сервером приложений на языке Rust. Мы профессионально занимаемся созданием и эксплуатацией решений на основе Tarantool и с некоторых пор начали разработку своего ПО, о котором и пойдёт речь.

Picodata — это дальнейшее развитие истории Tarantool, в которой учтен опыт эксплуатации этой СУБД и предложены решения как архитектурных, так и функциональных недостатков открытой версии Tarantool. Также, наше ПО проще запускать, настраивать и поддерживать в рабочем состоянии благодаря единой точке входа и интеграции всего инструментария в одном исполняемом файле. Мы создавали Picodata как изначально кластерную СУБД, которой удобно пользоваться. Если не верите, что российская СУБД может быть удобной, попробуйте — в конце этой статьи есть раздел Практикум, где можно сразу же попробовать собрать кластер самому на паре-тройке виртуальных машин или на вашем локальном компьютере. Сейчас же будет немного теории о том, как вообще работает распределенный кластер, что именно не так в “ванильном” Tarantool и что нам пришлось сделать чтобы это исправить.

Погрузиться в детали
Total votes 101: ↑101 and ↓0+101
Comments5

Алгоритмы балансировки нагрузок

Level of difficultyMedium
Reading time8 min
Views31K

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

В этом посте мы рассмотрим способы, которыми один балансировщик нагрузок может распределять HTTP-запросы на множество серверов. Мы начнём снизу и проделаем весь путь вверх до современных алгоритмов балансировки нагрузок.
Читать дальше →
Total votes 107: ↑106 and ↓1+105
Comments16

Нотной грамоте учат неправильно*

Reading time11 min
Views235K

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


Предполагается, что студент должен страдать самостоятельно освоить ноты, путем многократного повторения. И вообще, если «ниасилил», значит у тебя нет Таланта — иди мести двор.


Представьте что было бы, если бы обычной грамоте учили так же. Но мы, почему-то, в большинстве своем читать и писать таки научились.


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


* Дисклеймер

Прошу прощения, если заголовок статьи показался вам чересчур дерзким и провокационным. Таковым он, в общем-то, и является.


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


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


Эффективность я оценивал исключительно на себе, поскольку сей субъект оказался самым доступным для исследования.

Читать дальше →
Total votes 124: ↑123 and ↓1+122
Comments212

Фиксация соглашений в команде

Reading time6 min
Views12K

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

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

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

Читать далее
Total votes 36: ↑35 and ↓1+34
Comments19

Устаревшие Python-библиотеки, с которыми пора попрощаться

Reading time11 min
Views32K

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

Читать далее
Total votes 37: ↑35 and ↓2+33
Comments29

Девять дней в тишине, или Зачем айтишнику випассана

Reading time8 min
Views34K

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

За последние четыре года я пять раз был на 10-дневном курсе випассаны. Еще три раза ездил служить (что это такое, объясню позже). В этом тексте я рассказываю о випассане и о том, как она может помочь в работе и в жизни.

Читать далее
Total votes 70: ↑62 and ↓8+54
Comments86

Почему разработчики предпочитают не руководить командами: случайность или осознанный выбор?

Reading time5 min
Views6.6K

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

Если вы согласны с этим утверждением и считаете, что менеджмент не для вас, то эта статья, как минимум, даст вам возможность взглянуть на ситуацию с другой стороны, глазами человека, который сейчас занимается... как ни странно, менеджментом.

Читать далее
Total votes 15: ↑9 and ↓6+3
Comments13

Баги в Hello World

Reading time3 min
Views9.8K

Hello World, должно быть, самая часто создаваемая компьютерная программа. Уже десятилетия это первая программа, которую пишут люди, когда начинают изучение нового языка программирования.

Конечно же эта простая программа не должна иметь баги. Верно?

Читать далее
Total votes 31: ↑25 and ↓6+19
Comments21

Репликация с нуля за 5 простых шагов (невозможна)

Reading time19 min
Views7.6K
Меня зовут Сергей Петренко, я работаю в команде кластерных технологий Tarantool. В прошлом году я рассказывал о том, как в Tarantool появилась синхронная репликация и поддержка автоматических выборов лидера на основе Raft. Теперь предлагаю погрузиться во «внутренности» репликации в Tarantool. Я расскажу, как устроена репликация, по какой логике она работает и почему самые очевидные решения не всегда самые оптимальные.

Если вы давно хотели углубиться в эту тему и разобраться в устройстве репликации на живом примере, то эта статья для вас.
Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments2

Классика фантастики и фэнтези, которая лишь недавно добралась до русскоязычного читателя

Reading time6 min
Views57K

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

Читать далее
Total votes 124: ↑117 and ↓7+110
Comments22

Управляем кластером на Tarantool из командной строки

Reading time11 min
Views5K


Два года назад мы уже рассказывали вам, что такое Cartridge и как с его помощью разрабатывать распределенные приложения. Это полноценный фреймворк, в который входит CLI-интерфейс, который сильно упрощает разработку и эксплуатацию приложений на Tarantool Cartridge.

Я расскажу вам, как можно использовать Cartridge CLI для эффективного использования ваших локальных приложений, и об интересных фичах самого CLI. Статья больше ориентирована на тех, кто уже использует Cartridge или хочет начать им пользоваться. Поехали!
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments10

Архитектура распределенной очереди в Mail.ru Cloud Solutions

Reading time13 min
Views5.7K


Вряд ли сейчас можно встретить разработчика, который ничего не слышал об очередях сообщений. Самые известные брокеры сообщений это: Apache Kafka, RabbitMQ и IBM MQ. Все также наверняка знают об облачных решениях, предлагаемых Amazon. Есть у них и стандартизованные API для работы с очередями.

Одно из них, Simple Queue Service, мы взяли за основу и разработали распределенную очередь для запуска в облаке Mail.ru. SQS это стандартный API для облаков, его широко используют многие компании, от BMW до NASA.

В статье описано, что такое распределенные очереди и зачем они могут понадобиться, какие в них есть особенности, и о том, какое у нас получилось распределенное решение на базе Tarantool.
Читать дальше →
Total votes 33: ↑33 and ↓0+33
Comments12

Архитектура in-memory СУБД: 10 лет опыта в одной статье

Reading time14 min
Views23K
image

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

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

Этот рассказ сжимает 10 лет опыта работы с in-memory решениями в один текст. Порог входа максимально низкий. Чтобы получить пользу от прочтения, вам не нужно иметь столько же лет опыта, достаточно базового понимания IT.
Читать дальше →
Total votes 57: ↑57 and ↓0+57
Comments18

Tarantool и кодогенерация на Lua

Reading time12 min
Views4.3K

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

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

Читать далее
Total votes 29: ↑29 and ↓0+29
Comments0

Чем Tarantool круче Redis'а для IoT-сервисов

Reading time11 min
Views7K


Киберпанк 2077 уже наступил. Уровень развития технологий — это почти полное воплощение в реальность мечтаний писателей-фантастов. Умные устройства, «интеллектуальная» среда обитания, автоматизация ручного труда и управление техникой сквозь время и пространство. Полное торжество кибернетики, отложенного старта и дистанционного управления.

Эти «воспоминания о будущем» можно найти как у отечественных писателей, так и у зарубежных. Братья Стругацкие, Сергей Снегов, Кир Булычёв, Рей Брэдбери, Артур Кларк, Станислав Лем предсказали нам то, что мы называем Internet of Things, интернет вещей.

Технологии мотивируют бизнесменов, инженеров, изобретателей и мечтателей придумывать новые задачи и продукты. А новые продукты требуют соответствующих технологий. Этакий замкнутый круг!

Я расскажу о том, как компания Ready For Sky применила Tarantool, чтобы воплотить «воспоминания о будущем» у вас дома.
Читать дальше →
Total votes 39: ↑39 and ↓0+39
Comments17

Менеджер транзакций для базы данных в оперативной памяти

Reading time14 min
Views5.3K


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

Когда меня спрашивают, что такое Tarantool, я отвечаю давно въевшееся в мозг: «Tarantool — persistent in-memory noSQL СУБД с хранимыми процедурами на Lua». Но всë не так просто. Вот in-memory — да, в основном в Tarantool используется memtx engine, движок в памяти, однако дисковый движок (vinyl) тоже давным-давно есть, и у него множество нюансов и особенностей. Или noSQL — да, в основном Tarantool используется как noSQL БД, но SQL он тоже умеет, точнее, какую-то его часть, а какую именно — это надо почитать.

Даже с хранимыми процедурами не совсем всё просто: то, что затевалось как способ сделать JOIN в noSQL БД, обросло кооперативно-многозадачной инфраструктурой для работы с сетью, файлами, HTTP, массой модулей и документации; сейчас Tarantool именуют сервером приложений с БД на борту. Да и хранимые процедуры бывают не только на Lua, но и на C.

Но это, в общем, скорее приятные оговорки, дескать, что поделать, Tarantool сложный и поэтому есть много деталей. А когда меня кто-нибудь спрашивал, есть ли в Tarantool’е транзакции и какой у них уровень изоляции, то я отвечал: «есть, serializable, но...» И далее следовали оговорки мелким шрифтом, которые портили радужную картину и время от времени вызывали негодование пользователей.

Больше никаких оговорок, пора рассмотреть новый менеджер транзакций под микроскопом.
Читать дальше →
Total votes 33: ↑33 and ↓0+33
Comments4

Information

Rating
Does not participate
Registered
Activity