Как стать автором
Обновить
0
0
Илья Кузнецов @Ilya_Kuz

Senior Java developer

Отправить сообщение

Хранение данных в Postgresql

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров16K

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

Для начала определимся с общеизвестными вещами. Данные хранятся в таблицах, таблицы находятся в схемах, схемы, в свою очередь, в базах данных. Под данными я тут подразумеваю одну или несколько строк. В качестве примера будем рассматривать эталон критики, по моему личному мнению, цитаты Линуса Торвальдса.

Подробнее под катом
Всего голосов 19: ↑18 и ↓1+21
Комментарии3

Как работает протокол HLS

Время на прочтение10 мин
Количество просмотров7.8K

Вот уже несколько недель я разрабатываю серверную поддержку коротких видео для компании Bluesky.

Основное назначение этой фичи – обеспечивать потоковый показ небольших (максимум 90 секунд) видеороликов. Показ должен быть бесплатным и при этом не слишком накладным для нас.

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

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

Читать далее
Всего голосов 9: ↑8 и ↓1+10
Комментарии6

Введение в нейросети: что, зачем и как?

Уровень сложностиСредний
Время на прочтение25 мин
Количество просмотров46K

Это модное слово всё чаще используется в разговорной речи: обывателей плотнее окутывают угрозами бунта искусственного интеллекта и войны с роботами — с одной стороны, и рекламой нейросетевых продуктов — с другой. Отдельный котёл в аду — для тех, кто впаривает «курсы дата‑саентистов». А когда бедный юзернейм в поисках истины обращается к Гуглу своему любимому поисковику — то вместо простого ответа на простой вопрос, получает ещё больше вопросов — таких как тензорфлоу, сигмоида и, не дай Бог, линейная алгебра.

Как же нейросети рисуют картинки?
Всего голосов 48: ↑46 и ↓2+54
Комментарии27

Ускорение инференса LLM

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров10K

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

Меня зовут Роман Горб, я старший ML-разработчик в команде YandexGPT. Тема инференса LLM заинтересовала меня, потому что я занимался R&D в квантовании сеток для CV-задач. Сегодня я расскажу, как безболезненно увеличить скорость инференса. Сперва разберёмся, зачем это нужно, а потом рассмотрим разные методы ускорения и фреймворки, которые могут в этом помочь.

Ускоряемся
Всего голосов 26: ↑25 и ↓1+30
Комментарии9

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

Уровень сложностиСложный
Время на прочтение1 мин
Количество просмотров37K

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

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

А в чем проблема работать с файлами?

Уровень сложностиСредний
Время на прочтение53 мин
Количество просмотров33K

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

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

Кто участвует в процессе записи

Ошибки, которые могут произойти

Что от нас зависит, а что нет

И самое главное - как это этого защититься

Читать далее
Всего голосов 141: ↑140 и ↓1+169
Комментарии23

Как совмещать основную работу и проекты на стороне

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров50K

У многих из нас остается достаточно свободного времени в сутках. А почему бы не монетизировать это время, думает начинающий IT левак? Если работать по три часа в день в будние, брать по 2 тысячи за час, то получится 120 тысяч дополнительного дохода в месяц. Звучит отлично!

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

Читать далее
Всего голосов 91: ↑89 и ↓2+107
Комментарии48

Большая шпаргалка по Rust. 1/2

Уровень сложностиСредний
Время на прочтение29 мин
Количество просмотров15K



Hello world!


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


Вторая часть.


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


Обратите внимание: шпаргалка рассчитана на людей, которые хорошо знают любой современный язык программирования, а не на тех, кто только начинает кодить 😉


Также настоятельно рекомендуется хотя бы по диагонали прочитать замечательный Учебник по Rust (на русском языке).

Читать дальше →
Всего голосов 37: ↑35 и ↓2+43
Комментарии5

Книги, о которых редко говорят

Время на прочтение4 мин
Количество просмотров50K

Дал ему подборку книг, он приходит месяца через два, и с порога такой сразу:
— Я с друзьями не могу разговаривать.
— Ну да есть такой, недостаточек.
интервью Жака Фреско

Читать далее
Всего голосов 74: ↑72 и ↓2+87
Комментарии26

Как работает протокол X11 на самом нижнем уровне

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров41K

X11 это тот механизм на чем работает весь графический интерфейс Unix подобных ОС.


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


А протокол в своей сути прекрасен. Он лаконичен и почти совершенен.


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


А все книги и статьи по использованию X11 описывают это через библиотеки прокладки типа XLib и XCB, и даже, что хуже, GTK или Qt.


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


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

Читать дальше →
Всего голосов 160: ↑158 и ↓2+197
Комментарии182

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

Уровень сложностиСложный
Время на прочтение14 мин
Количество просмотров35K

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

Зачем этому учиться?


Для меня способность вычисления логарифмов от руки — крайне нужный навык. Количество концепций, которые мы храним в рабочей памяти, ограничено, поэтому логично будет освоить максимально много концептуальных строительных блоков. Развив в себе хорошее интуитивное понимание логарифмических выражений, вы будете ощущать себя бесконечно увереннее в работе с уравнениями, включающими в себя логарифмы, и сможете справляться с уровнем сложности, который раньше считали немыслимым. А ещё они будут меньше пугать или отвлекать вас, когда встретятся в каком-то другом контексте.
Читать дальше →
Всего голосов 59: ↑56 и ↓3+72
Комментарии29

Распределённые снапшоты: определение глобального состояния распределённых систем

Уровень сложностиСложный
Время на прочтение19 мин
Количество просмотров2.2K

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

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

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

Теория типов

Уровень сложностиСредний
Время на прочтение43 мин
Количество просмотров33K

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

Что можно узнать из этой статьи?
Всего голосов 75: ↑75 и ↓0+75
Комментарии70

Присасывание кораблей друг к другу при  обгоне на параллельных курсах

Время на прочтение21 мин
Количество просмотров16K

Версия без уравнения Бернулли.

История с «феноменом» присасывания судов друг другу при обгоне на малых  расстояниях началась в далёком 1911 году, когда столкнулись гигантский суперлайнер того времени «Олимпик» (старший брат «Титаника») и крейсер ВМС Британии «Хоук».

Действия происходили так:

Крейсер "Хоук" шел попутным курсом на расстоянии около 3,5 миль (6,5 км) от «Олимпика».

Через какое то время, крейсер нагнал «Олимпик», и они пошли почти параллельными курсами, под небольшим углом друг к другу, медленно сближаясь. Оба судна шли со скоростью 15 узлов (около 28 км/час).

Потом произошло нечто необъяснимое: Внезапно крейсер «Хоук» резко вильнул влево и, как писали многочисленные газеты, буквально «бросился» на «Олимпик».

Читать далее
Всего голосов 48: ↑45 и ↓3+53
Комментарии65

Волны от кораблей

Время на прочтение13 мин
Количество просмотров19K

Волны от кораблей. Что они говорят и о чём молчат.

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

Так носовая волна возникает от раздвигания масс воды вторгающимися в них корпусом корабля.

Читать далее
Всего голосов 48: ↑43 и ↓5+53
Комментарии41

Как создать свою СУБД с нуля и не сойти с ума. Практическое пособие начинающему некроманту. Часть первая

Время на прочтение43 мин
Количество просмотров32K

Наступил Апокалипсис.

Нет, не стоит бежать запасаться банками с консервами и крышками отечественной бай-колы! Апокалипсис произошёл только в нашей фантазии и с определённой целью — чтобы проверить, а может ли человек, обладающий только книгами по теме и стандартной библиотекой языка, воссоздать инструмент, который будет служить ему верой и правдой?

Так родился учебный проект SicQL, реляционная СУБД, чей символ — сова — это олицетворение силы знаний и мудрости. Олицетворение тех знаний и той мудрости, которые мы получим, создав с нуля то, чем мы пользуемся каждый день, может, не осознавая всей сложности таких инструментов.

Приглашаю присоединиться к увлекательному путешествию!

Принять приглашение на борт
Всего голосов 54: ↑53 и ↓1+64
Комментарии62

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

Время на прочтение17 мин
Количество просмотров8.1K

Участвую в стартапе, в котором разрабатывается СУБД нового типа (работает поверх некоторых 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

ogen: OpenAPI v3 генератор для Go

Время на прочтение8 мин
Количество просмотров14K

Чем больше кода, тем больше багов. Проект ogen генерирует код по OpenAPI спецификации, избавляя от сотен (или даже тысяч) строк скучного шаблонного кода на Go, который приходится писать вручную с риском допустить опечатку или ошибку.


Генератор пишет клиент и сервер, а разработчику остаётся только реализовать интерфейс для сервера. И никаких interface{} и рефлексии, только строгая типизация и кодогенерация.


Я расскажу, чем ogen отличается от существующих решений и почему стоит его попробовать.

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

Памятка архитектору

Время на прочтение8 мин
Количество просмотров21K

Я работаю архитектором (Solution Architect если быть точным) в аутсорсинговой компании. В ходе работы я занимаюсь такими активностями как: дизайн и внедрение архитектурных решений, аудит систем заказчика и разного рода консультации вокруг архитектуры систем.

Иногда в разговоре с коллегами я говорю «спокойно, действуем ровно по учебнику». Но тут есть большая доля лукавства, т.к. одной книги где были бы собраны базовые принципы я так с ходу назвать не могу. По большей части это сборная солянка из разных книг, личного опыта и историй, рассказанных коллегами. Что-то освещено в одной из книг Фаулера, что-то есть в курсах от AWS.

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

Что там уже в списке?
Всего голосов 42: ↑41 и ↓1+51
Комментарии23

Краткий справочник по «всем-всем» командам Linux

Уровень сложностиСредний
Время на прочтение80 мин
Количество просмотров178K

Периодически меня на начальном курсе просят дать "список всех-всех команд с кратким описанием что делает"... Ну прям "всех-всех". И ведь если искать в интернете "такие" справочники существуют - либо про "20-30 команд, но самых важных", либо с неточностями и устаревшей информацией. Так что предлагаю вашему вниманию свою версию такого "краткого" справочника (на 300, 515, 612, 716, 842, 1005, 1171 команд) с ссылками на wiki-описание и на cheat.sh-примеры наиболее важных команд.

Справочник по всем-всем командам LINUX
Всего голосов 105: ↑102 и ↓3+120
Комментарии114

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer
Senior
Java
Spring Boot
Apache Kafka
Kubernetes
Designing application architecture
PostgreSQL