Как стать автором
Обновить
3
0.4
Константин @k-morozov

Software Engineer

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

FastAPI: веб-разработка на Python

Время на прочтение14 мин
Количество просмотров12K
image Привет, Хаброжители!

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

Билл Любанович рассказывает о тонкостях разработки с применением FastAPI и предлагает множество рекомендаций по таким темам, как формы, доступ к базам данных, графика, карты и многое другое, что поможет освоить основы и даже пойти дальше. Кроме того, вы познакомитесь с RESTful API, приемами валидации данных, авторизации и повышения производительности. Благодаря сходству с такими фреймворками, как Flask и Django, вы легко начнете работу с FastAPI.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+11
Комментарии3

Python — Эволюция создания объектов (вторая часть)

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

Как упростить себе жизнь или почему ты должен уметь создавать объекты правильно?

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

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

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

Замыкания и декораторы в Python: часть 2 — декораторы

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

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

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

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

Структурированное логирование в Go с помощью Slog

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

Более 10 лет разработчики на Go жаловались на отсутствие структурированного логирования в ядре Golang. Участники сообщества Golang даже создали несколько собственных пакетов, таких как Logrus, Zap и Zerolog. В 2023 году, команда разработчиков Google Go наконец-то представила Slog — высокопроизводительный пакет для структурированного ведения логов в стандартной библиотеке Go. Мы перевели гайд о возможностях slog.

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

Что такое DAO?

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

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

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

Рекомендации при работе с PostgreSQL

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

Доброго времени суток. Основываясь на своём опыте хочу представить некоторые рекомендации при разработке кодовой базы на SQL.

Данные рекомендации получены горьким опытом, так что надеюсь, они Вам помогут :)

Читать подробнее и больше не косячить
Всего голосов 51: ↑48 и ↓3+51
Комментарии53

Люди не понимают ООП

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

«ООП для меня означает лишь обмен сообщениями, локальные ограничения и защиту, сокрытие состояния процесса и крайне позднее привязывание», — Алан Кэй (человек, придумавший термин «объектно-ориентированное программирование»)1

Похоже, многим не нравится объектно-ориентированное программирование. Первое, что приходит в голову, когда слышишь эту трёхбуквенную аббревиатуру — это пример с автомобилем, наследование, геттеры, сеттеры и ObjectFactoryFactorySingleton.

Мне это всегда казалось довольно странным. Мне не только нравится ООП, я ещё и считаю, что часто это лучший/наиболее очевидный способ моделирования задачи. И ниже я расскажу, почему.
Читать дальше →
Всего голосов 126: ↑119 и ↓7+140
Комментарии461

Может ли наша Вселенная быть симуляцией? Как мы можем это определить?

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

С тех пор как в 2001 году оксфордский философ Ник Бостром предложил свой аргумент в пользу того, что мы живём в симуляции, нёрды всей Земли пытаются оценить возможность того, что реальность на самом деле не существует, что то, что мы воспринимаем как нашу Вселенную, является продуктом компьютерной симуляции. Такие популярные личности, как Илон Маск и Нил де Грасс Тайсон, предложили свои собственные выводы, но сам Бостром не спешил занимать твёрдую позицию. Напротив, его позиция отличается тонкостью и осторожностью, и в ней нет фиксированных ответов.

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

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

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

ТОП-5 книг, которые помогут научиться договариваться и выстраивать эффективные коммуникации

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

Привет, Хабр! Я бизнес-тренер. Мы в ОТП Банке очень любим читать полезные книги и делиться своими наблюдениями с коллегами. Решили, что и с читателями Хабра тоже нужно поделиться. Возможно, кто-то их все уже прочёл, а кто-то нет — и тогда я буду очень рада, что рекомендации пригодились:) Эти книги помогут прокачать soft skills — полезные навыки на пути к большим зарплатам.

Пополнить багаж знаний
Всего голосов 7: ↑6 и ↓1+8
Комментарии3

Seagate выпустит HDD с лазерным подогревом емкостью от 30 ТБ уже в этом квартале. Что это за диски?

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

Корпорация Seagate уже достаточно давно анонсировала свои жесткие диски нового типа с очень высокой плотностью хранения информации. Речь идет о HDD с необычной технологией прогрева «блинов» дисков при помощи лазера. Это нужно для повышения плотности записи данных, в результате чего производителю и удалось достичь весьма высокой емкости диска — от 30 терабайт. Подробности — под катом.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+64
Комментарии125

Сравниваем форматы сериализации на Go: скорость и удобство

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

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

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

GoFunc: новая конференция по Go

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

Разработка на Go — особый мир. Этот язык не так популярен, как Python или JavaScript, но благодаря этому и дурацкой шумихи вокруг него меньше. Популярность приманивает «случайно проходивших мимо» и вызывает много глупых холиваров. А тем временем Go собирает людей, которые хорошо понимают, зачем они здесь, и хотят эффективно решать реальные задачи. 

В этом могут помочь конференции. Для многих других разработчиков мы уже давно их проводим (вроде HolyJS или С++ Russia). А в марте впервые проведём новую конференцию GoFunc. Главное, что нужно о ней знать:

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

А подробнее — в полном тексте:

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

Почему B-деревья быстрые?

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

B-дерево — это структура, помогающая выполнять поиск в больших объёмах данных. Она была изобретена более сорока лет назад, однако по-прежнему используется в большинстве современных баз данных. Хотя существуют и более новые структуры индексов, например, LSM-деревья, B-дерево пока никто не победил в обработке большинства запросов баз данных.

После прочтения этого поста вы будете знать, как B-дерево упорядочивает данные и выполняет поисковые запросы.

Читать далее
Всего голосов 151: ↑150 и ↓1+183
Комментарии13

Toolchain в Go

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

Привет, коллеги! В Го toolchain (цепочка инструментов) это не просто buzzword, а реальная рабочая фича. Если вы провели немало времени, погружаясь в дебри кода и модулей, вы знаете, что каждая строчка и каждый пакет как и в любом япе имеют свое место и значение.

Цепочка инструментов или toolchain (тулчейн звучит покруче) используются для создания, тестирования, отладки и управления вашими Go-проектами.

Читать далее
Всего голосов 16: ↑9 и ↓7+5
Комментарии2

Фильтр Блума для эффективной синхронизации хеш-графов

Время на прочтение8 мин
Количество просмотров3.5K
В одном из совместных исследований нам с Хайди требовалось решить такую задачу. Допустим, нам требуется синхронизировать между двумя узлами хеш-граф, например, как в репозитории Git. В Git каждый коммит идентифицируется через соответствующий ему хеш, причём, в коммит могут включаться хеши коммитов-предшественников (то есть, конкретный коммит может содержать более одного хеша, если он получен слиянием). Мы хотели получить минимальное множество таких коммитов, которыми должны обменяться два узла, чтобы их графы получились одинаковыми.

Вы могли бы спросить: «а разве эта задача ещё не решена»? Git приходится выполнять такую операцию всякий раз, когда вы направляете ему команду git pull или git push! Да, так и есть, и некоторые случаи довольно просты, но другие гораздо сложнее. Более того, тот алгоритм, что используется в Git, не слишком хорошо документирован – в общем, мы полагали, что у нас может получиться лучше.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

В поиске оптимального подхода к миграциям в Go

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

Привет! Меня зовут Нина, и я Golang разработчик.

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

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

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

Многопоточность и параллелизм в Go: Goroutines и каналы

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


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

Goroutines, представляющие собой легковесные потоки выполнения, обеспечивают значительные преимущества по сравнению с традиционными потоками, используемыми во многих других языках программирования. Они позволяют создавать тысячи параллельных процессов без значительной нагрузки на системные ресурсы. Каналы в Go, предоставляя мощный механизм для безопасной коммуникации между Goroutines, дополнительно упрощают управление параллельными задачами и обмен данными.
Читать дальше →
Всего голосов 26: ↑22 и ↓4+20
Комментарии12

Мапы в Go: уровень Pro

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

Подробный туториал по процессам записи и чтения данных в мапах Go. Объясняем проблемы переполнения, эвакуации элементов; важность передачи количества элементов при создании мапы. Рассказываем, почему в Go нельзя обращаться к ключу или значению по адресу.

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

ВНЖ Испании в 2024 году: как получить испанский вид на жительство — все способы

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

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

Читать далее
Всего голосов 18: ↑6 и ↓12-4
Комментарии5

Вы точно хотите пойти программистом в gamedev?

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

Хочу вас огорчить, программисты не делают игры - их делают дизайнеры и арт. Можно уволить программиста и на его место придет другой и через условные месяц-два-полгода начнет закрывать таски не хуже. Если увольняется дизайнер, его монстр, пушка или контент повисает без хозяина и без "видения". Если её не перехватил сосед (а у соседа свой монстр), то в большинстве случаев его работа просто уходит в стол и монстра пишут заново на тех же ассетах и принципах, но заново.

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

O, тепленькая пошла!
Всего голосов 218: ↑214 и ↓4+259
Комментарии234
1
23 ...

Информация

В рейтинге
1 929-й
Откуда
Россия
Работает в
Зарегистрирован
Активность

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

Backend Developer
Middle
C++
Golang
ClickHouse
Database
High-loaded systems