Как стать автором
Обновить
12
0
Толмачев Павел @ptolmachev

Специалист отдела образовательных программ

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

Программисты всё вымирают и вымирают

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

Да вымереть не могут.

Откуда это всё пошло? Чем так условные «программисты» не угодили? И почему именно программисты?

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

Компилятор за выходные: синтаксические деревья

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

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

Итак, чтобы самому разобраться в теме, я собираюсь написать транслятор с эзотерического языка программирования wend (сокращение от week-end), который я только что сам придумал, в обычный ассемблер. Задача уложиться в несколько сотен строк питоновского кода. Основной репозиторий живёт на гитхабе (не забудьте заглянуть в мой профиль и посмотреть другие tiny* репозитории).

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

С новым годом: GPT в 500 строках на SQL

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

В минувшем году все только и говорили об ИИ и о том, как он может всё за вас сделать.

Мне нравится, когда кто-то или что-то работает за меня. Поэтому решил: попрошу-ка ChatGPT написать за меня новогодний пост:

«Эй, ChatGPT. А ты можешь реализовать большую языковую модель на SQL?»
«Нет, SQL не подходит для реализации больших языковых моделей. Язык SQL предназначен для выполнения запросов к данным, хранящимся в РСУБД и для управления этими запросами. Для реализации большой языковой модели требуются сложные алгоритмы, обширные датасеты, а зачастую — и фреймворки для глубокого обучения. SQL всеми этими возможностями не обладает.»

Что ж, лишний раз убеждаешься, что, если хочешь что‑то сделать хорошо – сделай это сам.

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

Читать далее
Всего голосов 179: ↑175 и ↓4+205
Комментарии21

Курс «PostgreSQL для начинающих»: #3 — Сложные SELECT

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

Продолжаю публикацию расширенных транскриптов лекционного курса "PostgreSQL для начинающих", подготовленного мной в рамках "Школы backend-разработчика" в "Тензоре".

В этой лекции углубимся в расширенные возможности команды SELECT : как можно "сложить" и "вычесть" выборки (UNION/INTERSECT/EXCEPT), или запомнить и использовать в рекурсивных запросах (CTE), что дают оконные функции (WINDOW) и соединения (JOIN).

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

Читать далее
Всего голосов 32: ↑31 и ↓1+34
Комментарии7

Метод «быстрой передачи сведений», или Зарождение реле

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

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

Но сначала необходимо сделать одно важное пояснение – люди, о которых пойдёт речь в описании, представляли себе электричество при помощи совершенно отличных от наших категорий и концепций. Наши учебники физики упаковали разношёрстное прошлое в причёсанный набор концепций и уравнений, исключив столетия развития и конфликтов между разными философскими школами. Например, Ом никогда не писал формулу V = IR, а Максвелл не создавал уравнения Максвелла.

Я не буду пытаться изучать все повороты и хитросплетения интеллектуальной истории электричества, но попытаюсь представить идеи в таком виде, в каком они существовали в то время, а не так, как мы, оглядываясь назад, пытаемся впихнуть их в наши современные представления.
Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии5

PostgreSQL под капотом. Часть 2. Подготовка бэкэнда

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

В предыдущем посте мы остановились на моменте форка процесса для бэкэнда.

Сегодня рассмотрим как происходит инициализация дочерних процессов после форка от Postmaster, некоторые системные вызовы Linux, goto, парсинг стартап пакета и многие хаки.

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

Я мыслю MOV EAX, 1

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

Чем больше усилий ты прикладываешь, тем лучше это у тебя получается. Программирование не исключение, и чтобы с уверенностью сказать: "Я могу написать это" нужно много работать. Эта статья о том с какого языка начать путь в программировании и о том как понять принципы работы компьютера на низком уровне.

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

Как загружается процессор Intel x86

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

Когда мы включаем компьютер, он успевает совершить несколько этапов работы ещё до того, как загрузится операционная система. В этом посте будет рассмотрено, как загружается типичный процессор с архитектурой x86. Это очень сложный и многоступенчатый процесс. Здесь его структура будет представлена только в самом общем виде. От загрузочной прошивки зависит, каким именно путём процессор придёт к тому состоянию, в котором сможет загрузить операционную систему. Мы проследим этот процесс на примере опенсорсной загрузочной прошивки coreboot.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+40
Комментарии21

Что происходит, когда запускаешь «Hello World» в Linux

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

Сегодня я задумалась о том, что происходит, когда запускаешь в Linux простую программу «Hello World» на Python.

print("hello world")

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

$ python3 hello.py
hello world

Но внутри происходит гораздо больше. Я объясню, что там творится, и, что гораздо важнее, расскажу об инструментах, при помощи которых вы сами сможете исследовать происходящее. Мы воспользуемся readelf, strace, ldd, debugfs, /proc, ltrace, dd и stat. Я не буду рассматривать относящиеся к Python части, только объясню, что происходит при выполнении динамически компонуемых исполняемых файлов.
Читать дальше →
Всего голосов 98: ↑98 и ↓0+98
Комментарии10

Изучаем математическую статистику — гайд для новичков

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

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

Все представленные ниже материалы основаны на моём опыте изучения математической статистики.

Читать далее
Всего голосов 26: ↑23 и ↓3+25
Комментарии2

Звериные алгоритмы: какими представителями животного мира вдохновлялись исследователи для создания алгоритмов

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

По мере развития технологий в мире появляется все больше различных технологических алгоритмов. Часть из названы в честь ученых, имеющих отношение к их разработке, другая часть имеет простые (или не очень простые) «сухие» названия или же забавные наименования, например, коктейльная сортировка (Cocktail shaker sort), в русском языке называемая просто — «сортировка перемешиванием». Сегодня поговорим про алгоритмы, названные в честь различных представителей животного мира.

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

RPG в гугл-таблицах. Первый опыт создания от гуманитария

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

Приветствую, хабравчане!

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

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

И да: я — гуманитарий :-)

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

«Странная алгебра», философия упрощения и изобретение бита. К 107-летию со дня рождения Клода Элвуда Шеннона

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

Как совершаются великие научные открытия? Как вообще работает механизм «гениальности»?

Сегодня мы с вами попробуем раскрыть эту тайну – и понять, что не существует универсального ответа на этот вопрос.

Клод Элвуд Шеннон наиболее популярные и революционные свои работы сделал очень рано. Многие эксперты считают, что два его важнейших вклада в науку – магистерская диссертация 1938 г., развивающая метод использования булевой логики для представления схем, и его статья 1948 г. по теории связи, определившие область и революционный метод, с помощью которого мы обозреваем мир. Основа этих двух работ и большинства других его работ – идея, что математические концепции можно использовать для создания структур и понимания чего угодно.
Читать дальше →
Всего голосов 35: ↑33 и ↓2+41
Комментарии15

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

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

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

Как работает оптимизатор PostgreSQL при большом количестве таблиц в запросе

Время на прочтение9 мин
Количество просмотров21K
SQL — это декларативный язык программирования, используемый для создания и манипулирования объектами в реляционных СУБД. Этот язык описывает что должно быть получено, но не описывает как это получить. Программист пишет запрос и (чаще всего) хочет получить результат от СУБД максимально быстро.

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

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

Для демонстрации работы оптимизатора практически во всех наших (и чужих) примерах на эту тему используются довольно скромные параметры: две-три таблицы, пара JOIN-ов, миллисекунды на выполнение запросов. А что будет, если загрузить оптимизатор десятками таблиц за раз? Как разные конфигурационные параметры влияют на производительность запросов с сотней JOIN-ов? И переживет ли это среднестатистический рабочий ноутбук? Ответы на эти вопросы — со схемами и графиками — вы найдете под катом!
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии4

Памятка/шпаргалка по SQL

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

Доброго времени суток, друзья!


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

Читать дальше →
Всего голосов 41: ↑37 и ↓4+42
Комментарии18

Анализ и визуализация реальных табличных данных в R

Время на прочтение13 мин
Количество просмотров26K
Материал будет полезен тем, кто осваивает язык R в качестве инструмента анализа табличных данных и хочет увидеть сквозной пример реализации основных шагов обработки.
Ниже демонстрируется загрузка данных из csv-файлов, разбор текстовых строк с элементами очистки данных, агрегация данных по аналитическим измерениям и построение диаграмм.
В примере активно используется функциональность пакетов data.table, reshape2, stringdist и ggplot2.

В качестве «реальных данных» взята информация о выданных разрешениях на осуществление деятельности по перевозке пассажиров и багажа легковым такси в Москве. Данные предоставлены в общее пользование Департаментом транспорта и развития дорожно-транспортной инфраструктуры города Москвы. Страница набора данных data.mos.ru/datasets/655
Исходные данные имеют следующий формат:
ROWNUM;VEHICLE_NUM;FULL_NAME;BLANK_NUM;VEHICLE_BRAND_MODEL;INN;OGRN
1;"А248УЕ197";"ООО «ТАКСИ-АВТОЛАЙН»";"017263";"FORD FOCUS";"7734653292";"1117746207578"
2;"А249УЕ197";"ООО «ТАКСИ-АВТОЛАЙН»";"017264";"FORD FOCUS";"7734653292";"1117746207578"
3;"А245УЕ197";"ООО «ТАКСИ-АВТОЛАЙН»";"017265";"FORD FOCUS";"7734653292";"1117746207578"
```

1. Загрузка первичных данных
Данные можно загружать непосредственно с сайта. В процессе загрузки сразу переименуем колонки удобным образом.
url <- "http://data.mos.ru/datasets/download/655"
colnames = c("RowNumber", "RegPlate", "LegalName", "DocNum", "Car", "INN", "OGRN", "Void")
rawdata <- read.table(url, header = TRUE, sep = ";",
             colClasses = c("numeric", rep("character",6), NA),
             col.names = colnames,
             strip.white = TRUE,
             blank.lines.skip = TRUE,
             stringsAsFactors = FALSE,
             encoding = "UTF-8")
Теперь можно приступать к анализу и визуализации…
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии0

Пятьдесят лет на стезе программирования. Часть I. Начало пути. Отчий дом и Казанское суворовское военное училище

Время на прочтение30 мин
Количество просмотров36K
Логотип статьи определяет три, как временные, так и географические, точки на моём жизненном пути, через которые лежал мой путь в страну под названием «Программирование». В городе Чебоксары, на родине легендарного комдива Гражданской войны В.И.Чапаева, прошло моё детство (1954-1968 г.г.), там я закончил 8 классов средней школы №6. В 1968 году я переместился в следующую географическую точку, в г. Казань, в Казанское суворовское военное училище (КзСВУ). После окончания КзСВУ в 1971 году мой путь лежал в столицу нашей Родины в Москву, в Военную орденов Ленина, Октябрьской Революции и Суворова Академию им. Ф.Э.Дзержинского (сокращённое название ВА им. Ф.Э.Дзержинского или ВАД), которой в 2020 году исполнилось 200 лет со дня ее основания. И 22 июня в трагический для нашей страны день в 1941 году и знаковый для меня в 1976 году я окончил ВА им. Ф.Э.Дзержинского и получил диплом по специальности «Программирование» с присвоением квалификации военного инженера программиста:
Читать дальше →
Всего голосов 28: ↑18 и ↓10+13
Комментарии72

Стоит ли смотреть в сторону Data science?

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

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

Проблемы и карьерные альтернативы
Всего голосов 13: ↑13 и ↓0+13
Комментарии16

Что нового в плане мониторинга в PostgreSQL 14

Время на прочтение6 мин
Количество просмотров5.3K
Всем привет, на этой неделе вышел бета-релиз PostgreSQL 14. В этом небольшом посте я сделаю краткий обзор того что есть нового и полезного в плане мониторинга и наблюдения.

По идее пост должен быть интересен тем кому небезразлична тема мониторинга и поиска проблем в PostgreSQL — системные администраторы, DBA, SRE, DBRE.
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии0

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Зарегистрирован
Активность

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

Специалист
PostgreSQL
Database
SQL
Linux