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

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

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

Как я проектирую и разрабатываю расширения Python на Rust

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

В этой статье я хочу рассказать о том, как я проектирую комплексные расширения для Python на Rust с использованием PyO3 и почему я принимаю те или иные проектные решения.

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

Самый маленький Docker образ Rust приложения

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

Привет %username%, эта статья про то, как поместить Rust приложение в Docker и получить образ размером с бинарный файл (6 Мб). А также про причины, которые привели к переходу с NodeJS на Rust. Отдельная пара слов о проблемах вначале, переходе на Go, и том, как команда Rust устранила эти проблемы за пол года.

TL;DR Dockerfile в конце статьи и ссылка на example репозиторий

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

Создание библиотеки Python: полный гайд

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

Создайте свою библиотеку для Python и загрузите на PyPi, сейчас!

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

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

Поиск по регулярным выражениям может быть простым и быстрым

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

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

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

Как оказалось, с тех пор мало что поменялось, так что статья не потеряла своей актуальности.

Обо всех ошибках и опечатках большая просьба сообщать, чтобы я мог их поправить.

Заблудиться в тёмном лесу
Всего голосов 25: ↑24 и ↓1+32
Комментарии6

Разворачиваем веб-приложение в Kubernetes с нуля

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

Современные веб-приложения, даже простые на вид, часто подразумевают нетривиальную архитектуру, состоящую из многих компонент. В статье «Делаем современное веб-приложение с нуля» я рассказал, как она может выглядеть, и собрал для демонстрации простейшую реализацию на стеке из нескольких популярных технологий. В неё вошёл бэкенд, фронтенд, воркер для асинхронных задач и аж два хранилища данных — MongoDB как основная база и Redis как очередь задач. В «Делаем поиск в веб-приложении с нуля» я показал, как можно добавить полнотекстовый поиск, и подключил третье хранилище — Elasticsearch.

Всё это время для простоты разработки и отладки компоненты приложения запускались локально через Docker Compose. Но как развернуть такое приложение в настоящем продакшн-окружении? Как обеспечить горизонтальное масштабирование? Как раскатывать новые релизы без простоя? 

В этой статье мы разберёмся, как разворачивать многокомпонентное веб-приложение в кластере Kubernetes на примере его локальной реализации — minikube. Мы поднимем виртуальный кластер прямо на рабочем ноутбуке, разберёмся с основными сущностями Kubernetes, запустим и соединим между собой компоненты демо-приложения и обсудим, какие ещё возможности Kubernetes пригодятся нам в суровом энтерпрайзе. Если вы занимаетесь разработкой и слышали о Kubernetes, но ещё не имели возможности пощупать его руками — добро пожаловать под кат!

Скорее к YAML-инженерии
Всего голосов 38: ↑38 и ↓0+38
Комментарии10

Базовые алгоритмы на графах

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

image


Всем привет! Меня зовут Нурислам (aka tonitaga), и сегодня я бы вам хотел рассказать об Базовых алгоритмах на графах.
Читать дальше →
Всего голосов 38: ↑35 и ↓3+42
Комментарии42

Распространённые заблуждения о временах жизни в Rust

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

(прим. переводчика: времена жизни (lifetimes) — это одна из самых запутанных вещей в Rust, которая часто вызывает затруднение у новичков, даже несмотря на официальную документацию. Разъяснения по отдельным аспектам времён жизни есть, но они все разбросаны по разным источникам и ответам на Stack Overflow. Автор статьи собрал в одном месте и разъяснил множество связанных с временами жизни вопросов, что и делает эту статью столь ценной (я и сам почерпнул новое для себя отсюда). Я решил перевести её, чтобы дать возможность прочитать её тем, кто не владеет английским в достаточной степени, чтобы свободно читать оригинал, а также для того, чтобы повысить известность этой статьи среди русскоязычного Rust-сообщества)


19 мая 2020 г. · 37 минут · #rust · # lifetimes

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

Протоколы в Python

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

В Python 3.8. появилась новая примечательная возможность — протоколы (protocols). Протоколы — это альтернатива абстрактным базовым классам (abstract base classes, ABC). Они позволяют пользоваться структурной подтипизацией (structural subtyping), то есть — осуществлять проверку совместимости классов исключительно на основе анализа их атрибутов и методов. В этом материале мы поговорим о протоколах в Python и разберём практические примеры работы с ними.

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

Создание своей библиотеки на Rust: от cargo init до cargo publish

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

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

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

В этой статье я расскажу, как написать свою библиотеку и опубликовать ее на crates.io на примере собственного проекта для работы с матрицами.

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

Софт для самохостинга: что нового в 2023 году

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


Среди обычных пользователей (физлиц) в последнее время наметилась тенденция ухода из облака на свою инфраструктуру. Об экономии тут речи обычно не идёт, потому что облачные сервисы Google, Apple и прочие заманивают бесплатными тарифами. Но у людей растёт понимание, что нельзя доверять Google. Надеяться можно только на себя.

В связи с этим стоит внимательнее посмотреть на стандартный софт для самохостинга, а также на последние новинки, которые имеют шанс заменить что-то из стандартного набора.
Читать дальше →
Всего голосов 46: ↑44 и ↓2+55
Комментарии92

Встроенные фикстуры Pytest

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

Всем привет! Я Никита Вандышев, ведущий QA-инженер в Тинькофф Мессенджере.

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

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

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

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

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

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

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

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

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

Форматы данных и файлов: руководство для архитекторов

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


В мире данных происходит революция. Сегодня волна Open-Source-форматов данных, поднявшаяся благодаря развитию технологий, меняет привычное положение дел для всех участников экосистемы, от поставщиков до предприятий. Вы наверняка слышали о таких форматах, как Parquet, ORC, Avro, Arrow, Protobuf, Thrift и MessagePack. Команда VK Cloud перевела статью о том, что они собой представляют и какой из них лучше выбрать. 
Читать дальше →
Всего голосов 16: ↑12 и ↓4+15
Комментарии5

Linux на Xbox 360

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

Привет! Как вы считаете, что можно придумать с Linux, если у вас есть куча времени, сильно модифицированный Xbox 360, старый монитор и ещё более старая клавиатура? Вот сейчас и расскажу.

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

Стартап виза в Испанию

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

Недавно я получила одобрение своего бизнес плана от испанской компании Enisa (которая выдает официальное резюме вашему проекту) и вместе с ним ВНЖ Испании на 3 года.

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

История закона о стартапах

Этот закон существует с 2013 года, и много наших соотечественников получали по нему ВНЖ, но 21 декабря 2022 года в него внесли некоторые изменения.

Во‑первых функцию ревью и оценки бизнес‑плана передали в Enisa, во‑вторых увеличили срок выдаваемого ВНЖ(с 1 года до 3 лет). До апреля у Enisa не было новых регламентов, а когда они появились, началась некоторая чехарда (и продолжается до сих пор), но мой стартап был одобрен как раз во время этой пересменки.

С новым регламентом добавились еще изменения — теперь нужно показывать на счету фаундера совсем другие суммы (суммы выросли, но зато появилась возможность демонстрировать другие активы, не только деньги на счетах), сократятся сроки приема (через полгода после принятия регламентов, сейчас сроки еще плавают), и бизнес‑план теперь загружается не в свободной форме, а по форме Enisa, у них на сайте.

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

Lua: маленький язык, который смог

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

Lua — это, пожалуй, мой любимый "маленький язык", с низкой когнитивной нагрузкой и простотой в изучении и использовании. Он встроен во многое ПО, такое как Redis, NGINX через OpenResty и Wireshark (прим. перевод.: и многое другое). Он также используется в качестве скриптового языка в таких играх, как World of Warcraft и Roblox через Luau (прим. перевод.: и многих других). Этот пост — краткое признание в любви языку с некоторыми примерами того, почему он мне так нравится.

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

Что для вас Linux? Или как устроен запуск процессов

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

Как бы вы ответили на вопрос, что такое операционная система?

Скорее всего, вы легко сможете ответить на этот вопрос человеку далекому от IT, но подобный вопрос вам может задать, например, HR - в попытке переманить вас в какой-нибудь Facebook или Google. С одной стороны, ответить на этот вопрос очень легко и в интернете можно найти много определений, но относится ли, например, конфигурация DNS и файл /etc/resolv.conf к ОС ? Или в какой области памяти работает ОС - в памяти с безграничными возможностями для кода, называемой kernel space, или все же в лимитированной user space?

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

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

Propan — Python фреймворк для написания микросервисов с использованием брокеров сообщений

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

Так исторически сложилось, что последние 5 лет своей продуктовой разработки я работаю с микросервисами вокруг брокеров сообщений (преимущественно RabbitMQ и Kafka).

И все это время меня не покидало чувство некой неудовлетворенности и неполноценности инструментария, который был мне доступен.

Приходя из мира HTTP фреймворков ты чувствуешь себя как будто на костылях - ни тебе hotreload'а, который есть практически в любом wsgi-asgi сервере, хочешь тестировать - поднимай контейнеры окружения или мокай зависимости (особенно удобно в CI, ага), не забудь о реконнектах, логировании, трассировке и тд и тп.

И вот, таская от сервиса к сервису ворох всех этих проблем (и код который эти проблемы решает), до меня дошла гениальная идея: оформить весь однотипный код, общий для всех сервисов в единый пакет!

Так появился на свет фреймворк Propan.

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

Хорошая замена Celery для асинхрощины

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

Речь пойдет о библиотеки для работы с AMPQ - aio-pika. Она имеет всего в районе 1К звёзд на GitHub (по сравнению с 20К+ у Celery). Я рассмотрел абсолютно все популярные (500+ звёзд) решения и остановился именно на этом из-за активной (на текущий момент) разработке и соответствии всем моим требованиям.

Стек, который вы увидите в статье: FastAPI, RabbitMQ, aio_pika и docker. Статья будет полезна тем кто использует Celery в своих проектах, а так же тем, кто только слышал о том, что такое очереди и RabbitMQ.

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

Асинхронный ETL-процесс на Python

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

Продолжаю цикл статей по разработке ETL-процессов на Python. На этот раз мы преобразуем синхронный etl-процесс из статьи Пишем ETL-процесс на Python в асинхронный.

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

Информация

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