Pull to refresh
@resetmeread⁠-⁠only

Скромный пастух нулей и единиц…

Send message

Как создать свой веб-фреймворк на Python

Reading time48 min
Views4.7K

Доброго времени суток, хабр! В этой статье мы создадим свой веб-фреймворк на Python с использованием gunicorn.

Он будет легким, иметь базовый функционал. Мы создадим обработчики запросов (views), простую и параметизированную маршрутизацию, Middleware, i18n и l10n, Request/Response, обработку html-шаблонов и генерацию документации.

В этой статьи мы построим наиболее важные части фреймворка, изучим работу WSGI и создание веб-приложений. И также нам будет легче в последующем понимать логику других фреймворков: flask, django.

Некоторые из вас могут сказать что мы изобретаем велосипед. А я в ответ скажу - сможете ли вы прямо сейчас, без подсказок, только по памяти, нарисовать велосипед без ошибок?

Читать далее

Envoy — как писать чистый бизнес-код для микросервисной архитектуры

Level of difficultyHard
Reading time20 min
Views10K

Привет, Хабр, это моя первая статья. Меня зовут Константин, я системный инженер в компании ГНИВЦ. Здесь я хотел бы вам рассказать, что такое Envoy и как с его помощью можно упростить жизнь разработчикам и повысить надёжность взаимодействия микросервисов, минуя инфраструктуру для кого-то страшного и непонятного Kubernetes, а используя простой и старомодный Docker. Также эта статья поможет познакомиться с Envoy поближе и узнать, как он шагает в ногу с таким проектом как Istio.

Читать далее

Как вас обманывают в лазерной коррекции зрения: сравнение SMILE с CLEAR и SmartSight

Level of difficultyEasy
Reading time12 min
Views48K

Хорошая новость — в России готова к конкуренции отечественная разработка технологии для экстракции лентикулы. Плюс отличная новость: в России теперь есть VISUMAX 800 от Zeiss, который делает коррекцию всего за 9 секунд! Это — SMILE Pro. И именно он — «тот же SMILE, но современнее».

Помните, как в начале пути технология SMILE встречала яростное сопротивление с профессиональной сцены и в кулуарах? Приходилось цифрами, статистикой, публикацией книги побеждать LASIK, доказывая, что 100%-но фемтосекундная экстракция лентикулы SMILE — это лучший метод.

Шли годы и те, кто «жевал попкорн», наблюдая баталии между SMILE и LASIK, сами стали осваивать технологию. Компании-конкуренты разрабатывали «дженерики» SMILE, и с их появлением началась новая эпоха — время лазеров для лентикулярной экстракции. Эти лазеры не относились к  SMILE-технологии, но везде рекламировались как «новейший, усовершенствованный SMILE.

Теперь плохая новость. Сегодня немало клиник, которые пытаются «примазаться к успеху проверенных технологий» и продать CLEAR и SmartSight как «тот же SMILE, но современнее». А страдаете от этого вы — пациенты, которые потом месяцами ждут, когда же, наконец, «просветлеет в глазах» после таких инноваций.

Так в чем же отличия? Давайте разберем, как вас могут обмануть при выборе лазерной коррекции зрения, и что нужно знать, чтобы не попасться на удочку недобросовестного маркетинга

Читать далее

Домашние эксперименты с радиолампами. Часть 1. Теория

Reading time10 min
Views11K

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

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

В первой части статьи кратко расскажу, какие бывают радиолампы, как они устроены и как работают. А во второй — проведём простой и относительно безопасный эксперимент с доступными радиолампами.

Читать далее

Регулярные выражения простыми словами. Часть 2

Level of difficultyEasy
Reading time10 min
Views25K

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

RFM анализ: что это и с чем его едят

Reading time8 min
Views2.4K

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

Читать далее

Python REST API: Flask, Connexion и SQLAlchemy (часть 3)

Level of difficultyMedium
Reading time28 min
Views3.1K

Это перевод статьи от Philipp Acsany

В этой третьей части серии вы узнаете, как:

Работать с несколькими таблицами с взаимосвязанной информацией в базе данных
Создавать связи «один ко многим» в базе данных
Управлять связями с помощью SQLAlchemy
Сериализовать сложные схемы данных со связями с помощью Marshmallow
Отображать связанные объекты в клиентском интерфейсе

Читать далее

Сборщик мусора CPython и его влияние на производительность приложения

Level of difficultyEasy
Reading time13 min
Views4.8K

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

Читать далее

Хранилища данных. Обзор технологий и подходов к проектированию

Level of difficultyEasy
Reading time26 min
Views34K

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

В этой статье будут рассмотрены основные подходы к проектированию архитектуры хранилищ данных (DWH), эволюция архитектур, взаимосвязь Data Lake, Data Factory, Data Lakehouse, Data Mesh c DWH, преимущества и недостатки подходов к моделированию данных. Материал будет полезен тем, кто работает с корпоративными данными: аналитики, инженеры и архитекторы данных.

Читать далее

Анализируем простейший усилитель

Level of difficultyMedium
Reading time26 min
Views36K
В настоящей статье я хочу рассмотреть и проанализировать широко известную и подкупающую своей простотой минимальную схему усилителя на одном биполярном транзисторе:


Прекрасно осознавая, что в Интернете на данную тему имеется огромное количество статей, тем не менее рискну написать еще одну. Несмотря на кажущуюся простоту, данный усилитель так или иначе затрагивает большое количество различных вопросов и здесь есть что обсудить. Соответственно, разные авторы рассматривают данный усилитель несколько под разными углами. Надеюсь, и моя статья кому-то окажется интересной и полезной.
Читать дальше →

Python REST API: Flask, Connexion и SQLAlchemy (часть 2)

Level of difficultyMedium
Reading time24 min
Views3.2K

Это перевод статьи от Philipp Acsany

В этой второй части серии вы узнаете, как:
- Использовать SQL-инструкции в Python
- Настраивать базу данных SQLite для вашего проекта Flask
- Использовать SQLAlchemy для хранения объектов Python в базе данных
- Работать с базой данных через REST API
- Сериализовывать и десериализовывать JSON в объекты Python через Marshmallow

Читать далее

Dask для анализа временных рядов

Level of difficultyEasy
Reading time3 min
Views2K

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

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

Читать далее

Rust без прикрас: где мы ошибаемся

Level of difficultyEasy
Reading time6 min
Views16K

Привет, исследователи Rust! Сегодня хочу поделиться своим опытом (не всегда радужным) работы с Rust. Да, язык классный, безопасный, быстрый — все мы это знаем. Но, как и в любом инструменте, здесь есть свои подводные камни, на которые я благополучно наступал.

Читать далее

Как Sample Ratio Mismatch спасает A/B тесты от ложных выводов

Level of difficultyEasy
Reading time5 min
Views1.3K

Если вы когда-либо работали с A/B тестированием, то знаете, что этот процесс не всегда идет гладко. Казалось бы, что тут может быть сложного? Разделили аудиторию, дали половине синюю кнопку, половине — зеленую и ждем результатов. Но в реальной жизни стратегия «разделяй и властвуй» не всегда работает идеально. Вмешиваются случайные факторы, баги, и вот тут Sample Ratio Mismatch (SRM) становится помощником.

Читать далее

Обманчивая статистическая значимость

Level of difficultyEasy
Reading time16 min
Views6.8K

Статистическая значимость похожа на автокафе научно‑исследовательского мира. Подъезжаешь к исследованию, забираешь свой «бургер значимости», и — бабах — у тебя в руках оказывается вкусный вывод, которым можно поделиться с друзьями. Применение показателей статистической значимости удобно не только с точки зрения читателей научных статей. Они облегчают жизнь и самим исследователям. Зачем долго и мучительно что‑то объяснять, когда можно вместо этого ограничиться парой простых слов?

Но не так всё просто.

Читать далее

Миллиомметр своими руками

Level of difficultyEasy
Reading time2 min
Views14K

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

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

Читать далее

Уровни изоляции транзакций в PostgreSQL, MySQL, MSQL, Oracle с примерами на Go

Level of difficultyMedium
Reading time33 min
Views16K

В данной статье обсудим проблемы, возникающие при конкурентной работе с данными, а также инструменты для их решения – атомарные инструкции, явные и неявные блокировки и уровни изолированности транзакций, реализованные в OLTP СУБД PostgreSQL, MySQL, SQL Server, Oracle с примерами на Go. Поговорим о деталях их реализации в указанных СУБД. На примере PostgreSQL проведем benchmark-тестирование производительности уровней изоляции с использованием инструмента pgbench

Читать далее

Считаем доверительные интервалы для долей и медианы по нормальному распределению (готовимся к собесу на Аналитика)

Level of difficultyMedium
Reading time5 min
Views9.3K

Недавно на выходном оффере в Авито спрашивали задачку про нахождение доверительного интервала для медианы. Эта статья появилась в результате моего резерча по этому вопросу.

В данной статье я напишу алгоритм рассчета доверительных интервалов для:
— Среднего значения
— Медианы (через нормальную аппроксимацию к биномиальному распределению)
— Доли (через нормальную аппроксимацию к биномиальному распределению)

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

Читать далее

Австралия, Лорд-Хау — самый странный часовой пояс

Level of difficultyMedium
Reading time14 min
Views14K

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

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

Так что я предлагаю другой подход. В этой статье я покажу вам несколько странных часовых поясов, можно даже сказать самых странных — так как страннее, пожалуй, уже некуда.
Читать дальше →

Кастомизация Django Admin. Часть 1: Структура шаблонов

Level of difficultyEasy
Reading time6 min
Views4.9K

Давайте просто признаемся друг другу... Все мы иногда это делаем. Все мы иногда кастомизируем Django админку. Без четкого понимания того, как построены шаблоны и используемые классы любая попытка кастомизации превращается в пытку.
Этот цикл статей — моя попытка помочь понять и полюбить то, как всё устроено изнутри. Тема длинная, так что начнем с самых азов. Сейчас мы разберем все основные шаблоны и механизм их поиска.

Читать далее

Information

Rating
Does not participate
Registered
Activity