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

Пользователь

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

Запросы в PostgreSQL: 1. Этапы выполнения

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

Привет, Хабр! Начинаю еще один цикл статей об устройстве PostgreSQL, на этот раз о том, как планируются и выполняются запросы.

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

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

Материал перекликается с нашим учебным курсом QPT «Оптимизация запросов», но ограничивается только подробностями внутреннего устройства и не затрагивает оптимизацию как таковую. Кроме того, я ориентируюсь на еще не вышедшую версию PostgreSQL 14. А курс мы тоже скоро обновим (правда, на версию 13; приходится бежать со всех ног, чтобы только оставаться на месте).

Поехали
Всего голосов 33: ↑33 и ↓0+33
Комментарии11

Domain-driven design, Hexagonal architecture of ports and adapters, Dependency injection и Python

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

Пролог

- Глянь, статью на Хабр подготовил.
- Эм... а почему заголовок на английском?
- "Предметно-ориентированное проектирование, Гексагональная архитектура портов и адаптеров, Внедрение зависимостей и Пайто..."

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

--

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

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

Погружение в Helm Package Manager. Часть первая

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

Helm — один из самых популярных пакетных менеджеров для Kubernetes. Познакомиться с ним полезно любому DevOps-инженеру и всем, кто сталкивается с задачами деплоя приложений. Эта статья — первый из двух материалов, которые можно вместе можно рассматривать как краткое, но достаточно полное введение в Helm.

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

Функциональное программирование в Python: ежедневные рецепты

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

В своей команде — команде разработки инструментов для разработчиков под KasperskyOS — мы создаем разные интересные консольные утилиты, эмулятор, обеспечиваем интеграцию с IDE и так далее. И для этого мы используем разные языки — C++, C, TypeScript; но больше всего пишем на Python.



В этой статье, которая написана по следам моего выступления на конференции PiterPy, я обращаюсь к практикующим разработчикам — расскажу о том, какие функциональные приемы можно использовать в этом языке. Сконцентрируюсь на практике — на тех примерах, которые можно использовать уже буквально сейчас, не переписывая свой проект.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии3

RabbitMQ. Часть 1. Introduction. Erlang, AMQP

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

Добрый день, Хабр! Хочу поделиться учебником-справочником знаний, которые мне удалось собрать по RabbitMQ и сжать в короткие рекомендации и выводы.

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

Yet another введение в fp-ts. Часть 1. Эквивалентность и сравнимость

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

Что такое монада? Душнила ответит: “Это моноид в категории эндофункторов”, и будет абсолютно прав. Вопросов появляется ещё больше: “Что такое моноид?”, “Что такое категория?”, “Что такое эндофунктор?”. В эту же секунду человека сковывает первородный ужас, сошедший со страниц рассказов Г. Ф. Лавкрафта, инстинкт самосохранения кричит: “Беги!” Интересный собеседник, обладающий эмпатией, приобнимет и скажет: “Бро, это же просто контейнер для какого-то значения, способный соединяться в цепочки таких же контейнеров. Ты же пишешь фронтенд? Или бэк на ноде? В холодильнике пиво, угощайся, а я тебе расскажу про библиотеку fp-ts и разные клёвые штуки из функционального программирования.

Для js-а существуют тонны библиотек, поддерживающих функциональный стиль программирования. Lodash, Ramda, Sanctuary — это то что сразу приходит в голову. В эпоху Typescript писать без типобезопасности уже моветон. Ни Lodash, ни Ramda типобезопасность не обещают, Sanctuary проверяет типы в рантайме, что требует дополнительных накладных расходов. Fp-ts изначально написан на typescript и помимо фич функционального программирования предлагает изящную проверку типов. Эта интересная библиотека реализует множество концепций из статически типизированных функциональных языков семейства ML, таких так Haskell, Ocaml и Scala. В fp-ts всё прекрасно, кроме документации и практических примеров использования. Моя задача как раз подсветить эти тёмные углы, а также показать несколько практических примеров.

В статье я не буду обсуждать базовые концепции ФП, такие как чистые функции, лямбды, композиция и прочее. Про это написано много статей и ютуб завален тоннами видеороликов от индиан гаев. Здесь я постараюсь простыми словами на практических примерах объяснить классы типов, какие они бывают и как их использовать в fp-ts.

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

Шпаргалка по SQL (postgres), которая выручает меня на собесах

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

Привет, Хабр!

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

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

Читать далее
Всего голосов 156: ↑149 и ↓7+177
Комментарии177

Книги для начинающих разработчиков: от «Чистой архитектуры» до «Паттернов проектирования»

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

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

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

MVCC-1. Изоляция

Время на прочтение25 мин
Количество просмотров130K
Привет, Хабр! Этой статьей я начинаю серию циклов (или цикл серий? в общем, задумка грандиозная) о внутреннем устройстве PostgreSQL.

Материал будет основан на учебных курсах по администрированию, которые делаем мы с Павлом pluzanov. Смотреть видео не все любят (я точно не люблю), а читать слайды, пусть даже с комментариями, — совсем «не то».

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

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

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

Первый цикл посвящен вопросам, связанным с изоляцией и многоверсионностью, и план его таков:

  1. Изоляция, как ее понимают стандарт и PostgreSQL (эта статья);
  2. Слои, файлы, страницы — что творится на физическом уровне;
  3. Версии строк, виртуальные и вложенные транзакции;
  4. Снимки данных и видимость версий строк, горизонт событий;
  5. Внутристраничная очистка и HOT-обновления;
  6. Обычная очистка (vacuum);
  7. Автоматическая очистка (autovacuum);
  8. Переполнение счетчика транзакций и заморозка.

Ну, поехали.
Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии35

Часть 1. Управление знаниями в Obsidian. Обработка информации. Рабочий процесс. Источники информации. Работа с заметками

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

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

Начнём долгий путь
Всего голосов 34: ↑31 и ↓3+37
Комментарии73

Полное руководство по модулю asyncio в Python. Часть 3

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

Сегодня публикуем третью часть (первая, вторая) перевода учебного руководства по модулю asyncio в Python. Здесь представлены разделы оригинала №5, 6 и 7.

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

Полное руководство по модулю asyncio в Python. Часть 1

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

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

Перед вами — подробное и всестороннее руководство по использованию модуля asyncio в Python. В частности, здесь будут рассмотрены следующие основные вопросы:

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

История о том как я переехал в США и искал тут работу. Офферы от MAANG и не только

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

В феврале 2022 года я наконец переехал в США по рабочей визе О1. Этому предшествовало 2.5 года работы над укреплением кейса, ожидание аппрува.

За 1.5 года до этой даты я начал готовиться к интервью на позицию Front End. Сейчас работаю Senior Front-End Engineer в Roku.

Мотивацией для данного поста и создания телеграмм канала по интервью Front-End инженеров стало отсутсвие подробной информации о том, как же выглядит этот процесс в США.

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

CRDT: Conflict-free Replicated Data Types

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

Как считать хиты страницы google.com? А как хранить счётчик лайков очень популярных пользователей? В этой статье предлагается рассмотреть решение этих задач с помощью CRDT (Conflict-free Replicated Data Types, что по-русски переводится примерно как Бесконфликтные реплицированные типы данных), а в более общем случае — задачи синхронизации реплик в распределённой системе с несколькими ведущими узлами.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии14

25 правил разработки программных интерфейсов [издание третье, дополненное и расширенное]

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

Это — очередная (уже третья) ревизия главы 11 мой книги о разработке API. Если вы найдёте этот текст полезным, я буду очень благодарен за рейтинг на Амазоне.

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

Как вернуть самооценку в норму

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

Психотерапия помогла стать успешнее и обрести счастье

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

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

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

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

Про PKI «на пальцах» за 10 минут

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


Предложил коллегам провести внутреннюю мини-лекцию по сабжу — идея зашла. Сел писать план лекции и… чот психанул — в итоге очнулся, дописывая небольшой гайд. Подумал, что будет полезно добавить сюда что-то для быстрого понимания, что такое PKI, зачем она нужна и как работает, так как пока готовился, чтобы освежить память, искал информацию в том числе на полюбившемся «Хабрахабре», но статей в таком формате не нашел.

Пишу на примере наших повседневных задач, которые знакомы многим: беспарольный доступ к серверам OpenVPN и защита доступа к ресурсам с помощью HTTPS.
Читать дальше →
Всего голосов 20: ↑14 и ↓6+8
Комментарии15

Почему аспирантура — зло

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

Вам 20 лет. Вы заканчиваете универ по какой-нибудь прекрасной специальности вроде "Программной инженерии". Вы учитесь на все пятерки, пишете научные статьи, получаете академическую и еще какую-нибудь именную стипендию с крутым названием, ездите по студенческим конференциям и олимпиадам, привозя оттуда призы и охапки мерча. Футболку с последнего чемпионата по программированию вы носите, не снимая (зимой - прямо поверх свитера), и все ваши канцтовары отмечены логотипом Microsoft.

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

Читать далее
Всего голосов 192: ↑171 и ↓21+195
Комментарии481

Бесплатное обучение от Яндекса, о котором вы могли не знать

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

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

Статья будет полезна тем, кто только начинает путь в IT и тем, кто хочет научиться чему-то новому.

Читать далее
Всего голосов 15: ↑6 и ↓9-3
Комментарии3

Что читать DevOps-инженеру: 7 полезных книг

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

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

Читать далее
Всего голосов 50: ↑49 и ↓1+51
Комментарии17

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность