Pull to refresh
0
0
Геннадий Матвеев @keskiy

Python developer

Send message

Популярная задача на собеседовании: сотрудники с максимальной зарплатой в отделе

Level of difficultyMedium
Reading time8 min
Views103K

Кто ходил на собеседования по устройству на работу, тот знает, спрашивают там всякое и странное. Нередко можно встретить задачу SQL по нахождению сотрудников с максимальной зарплатой в отделе. Причем ваш потенциальный начальник считает, что у этой задачи есть только одно «правильное решение», то, про которое он прочитал в Интернете. Так ли это?

Любопытно...
Total votes 98: ↑87 and ↓11+97
Comments198

Меня зовут Игорь, 33 года я произвожу электронику и ненавижу продажи

Level of difficultyEasy
Reading time9 min
Views26K

Наши устройства летали в космос, с ними исследовали поведение бурундуков, и 4 раза мы попадали в книгу рекордов Гиннеса, как самые маленькие диктофоны в мире (37х15х7 мм). Диктофоны использовали для предотвращения терактов в Лондоне в 2006 г., после которых запретили провоз жидкостей в самолетах.

Но сегодня мы продаем на 3 млн ₽ в месяц, потеряли весь экспорт, вынуждены закрывать новые разработки, а я, как владелец производства в Зеленограде, зарабатываю меньше среднего айтишника-сеньора.

Читать далее
Total votes 95: ↑86 and ↓9+99
Comments206

История оптимизации Python сервиса: Маленький шаг для человека, гигантский скачок для сервиса

Level of difficultyEasy
Reading time10 min
Views4.9K

Привет, Хабр, на связи Okko! У нас одна из самых больших медиатек в России, поэтому мы постоянно работаем над развитием алгоритмов поиска и рекомендаций. Новые фичи тестируются с помощью А/Б тестов. Количество фичей неустанно растет, поэтому было решено создать специальную платформу для проведения экспериментов. Она позволила бы удобно их заводить и настраивать, сплитовать трафик в онлайн-режиме и формировать результаты экспериментов.
Мы — команда разработки платформы экспериментов — посвятим цикл рассказов самому важному и сложному компоненту сервиса — сплитовалке трафика. В этой статье расскажем о небольших по сложности, но больших по значению оптимизациях в коде, которые мы сделали, чтобы разогнать нашу платформу до скорости ракеты 🚀

Читать далее
Total votes 11: ↑11 and ↓0+12
Comments5

Ускорение роутера в Django в 51 раз

Level of difficultyMedium
Reading time6 min
Views13K

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

Читать далее
Total votes 54: ↑53 and ↓1+61
Comments17

Знания как код: архитектурный репозиторий в git на базе PlantUML

Level of difficultyHard
Reading time10 min
Views9.9K

Привет, Хабр! Меня зовут Максим Приходский, я архитектор R-Style Softlab и сегодня хочу рассказать вам о проекте создания архитектурного репозитория в git на базе PlantUML.

Читать далее
Total votes 58: ↑57 and ↓1+63
Comments8

CPU-лимиты и агрессивный троттлинг в Kubernetes

Reading time8 min
Views42K
Прим. перев.: эта поучительная история Omio — европейского агрегатора путешествий — проводит читателей от базовой теории до увлекательных практических тонкостей в конфигурации Kubernetes. Знакомство с такими случаями помогает не только расширять кругозор, но и предотвращать нетривиальные проблемы.



Доводилось ли вам сталкиваться с тем, что приложение «застревало» на месте, переставало отвечать на запросы о проверке состояния (health check'и) и вы не могли понять причину такого поведения? Одно из возможных объяснений связано с лимитом квот на ресурсы CPU. О нем и пойдет речь в этой статье.

TL;DR:
Мы настоятельно рекомендуем отказаться от CPU limit'ов в Kubernetes (или отключить квоты CFS в Kubelet), если используется версия ядра Linux с ошибкой CFS-квот. В ядре имеется серьезный и хорошо известный баг, который приводит к избыточному троттлингу и задержкам
.
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments3

Запускаем Intel 87C51 — первый крупносерийный микроконтроллер (1980)

Level of difficultyEasy
Reading time7 min
Views7.4K

  Мы принимаем как должное удобства современных микроконтроллеров - все ключевые компоненты интегрированы в один корпус: флэш-память/EEPROM, SRAM, само процессорное ядро, PLL, ADC/DAC, PWM, последовательные порты и многое другое.

  Но так было не всегда. Первым монолитным микроконтроллером был Intel 8048 (MCS-48) выпущенный в 1976 по n-МОП технологии. Не планировалось что у него будет длинный жизненный цикл и уже через 4 года в 1980 на смену ему пришел Intel 8051 (MCS-51), завоевавший мир. Не планировалось что у него будет длинный жизненный цикл и уже через 4 года в 1980 на смену ему пришел Intel 8051 (MCS-51), завоевавший мир. Он имел на борту 4КиБ однократно-программируемой памяти, 128 байт SRAM, GPIO, последовательные порт и, собственно, 8-битное процессорное ядро. Intel 87C51FC был вариантом на базе УФ-стираемой EPROM памяти (объемом 32КиБ), C-версия - на КМОП процессе, объем памяти увеличен до 256 байт.

Пару недель назад ко мне в руки случайно попал D87C51FC-20 - и я решил его запустить, чтобы прочувствовать проверенные временем технологии. Сразу отмечу - не стоит тут искать практической пользы, это скорее экскурс в историю на 44 года назад...

Читать далее
Total votes 62: ↑62 and ↓0+76
Comments46

Как компании зарабатывают на опенсорсе, а потом выкидывают его

Level of difficultyEasy
Reading time6 min
Views29K
Финансирование разработки Kubernetes крупнейшими спонсорами на GitHub за последние десять лет, источник

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

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

И весь этот террариум кормится опенсорсом.
Читать дальше →
Total votes 89: ↑74 and ↓15+85
Comments103

Как я разработал квадрокоптер на ESP32 с нуля (ушло 4 года)

Level of difficultyMedium
Reading time12 min
Views53K

При сборке квадрокоптеров и других БПЛА обычно используют готовую плату полетного контроллера, содержащую все необходимые датчики и периферию, и готовую полетную прошивку, например, Betaflight, ArduPilot или PX4. Полетный контроллер управляет моторами квадрокоптера и обеспечивает стабильный полет.

Занимаясь БПЛА с 2016 года, я решил разобраться в устройстве полетных контроллеров максимально глубоко и создать квадрокоптер с нуля, не используя готовый полетный контроллер и готовый софт. Спустя долгое время разработки мне удалось это сделать. Я написал прошивку с максимально простым исходным кодом и выложил ее на GitHub. В этой статье я расскажу о теории и практике разработки полетного софта для квадрокоптера и проиллюстрирую это на примере своего дрона на базе микроконтроллера ESP32, который можно увидеть на картинке выше.

Читать далее
Total votes 312: ↑312 and ↓0+371
Comments132

Что нужно знать и уметь начинающему специалисту по ремонту ноутбуков? Часть 1

Reading time4 min
Views18K

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

Все, о чем говорится в статье, — лишь основа по ремонту ноутбуков и других девайсов. Если у вас есть свои мысли по этому поводу — оставляйте их в комментариях.
Читать дальше →
Total votes 54: ↑48 and ↓6+55
Comments15

Асимметричные и симметричные ключи в PostgreSQL

Level of difficultyEasy
Reading time4 min
Views6.2K

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

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

Читать далее
Total votes 13: ↑8 and ↓5+9
Comments4

Как тимлиду совмещать работу в IT с жизнью

Level of difficultyEasy
Reading time7 min
Views13K

Привет, Хабр! Я Саша Шутай, руководитель направления PHP в AGIMA. Хочу обсудить важные для тимлидов вопросы: как управлять бэклогом и правильно распределять время, нормально ли отвлекаться во время работы, как овертаймить, не выгорать и успевать жить. Статья в первую очередь будет полезна начинающим тимлидам. Ну а матерые руководители команд найдут в ней советы по оптимизации работы.

Читать далее
Total votes 19: ↑16 and ↓3+15
Comments20

Анатомия Hello World на языке C

Level of difficultyMedium
Reading time15 min
Views27K

Эта статья посвящена программе Hello World, написанной на C. Это максимальный уровень, на который можно добраться с языком высокого уровня, не беспокоясь при этом о том, что конкретно язык делает в интерпретаторе/компиляторе/JIT перед выполнением программы.

Изначально я хотел написать статью так, чтобы она была понятна любому, умеющему кодить, но теперь думаю, что читателю полезно иметь хотя бы некоторые знания по C или ассемблеру.
Читать дальше →
Total votes 125: ↑125 and ↓0+142
Comments47

Способы обхода GIL для повышения производительности

Level of difficultyEasy
Reading time5 min
Views6.8K

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

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

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

В этой статье рассмотрим способы обхода GIL и первый способ — использование многопроцессности вместо многопоточности.

Читать далее
Total votes 21: ↑11 and ↓10+5
Comments4

Создаем свой аналог sqlite c нуля. Часть #1

Reading time5 min
Views6.3K

Это цикл статей где мы создаем базу данных с нуля. За образец автор взял sqlite, так как простая база данных, где вся база данных храниться в одном файле и меньше фич по сравнению с mysql.

Мы ответим на эти вопросы: В каком формате данные будут сохранены(в памяти или на диске), Когда они должны сохраняться на диск? Почему первичный ключ(primary key) является единственным на одну таблицу?, и так далее

В этой части мы создадим REPL, которое принимает команды, обрабатывает ошибки.

Читать далее
Total votes 13: ↑11 and ↓2+12
Comments9

Как мы переехали с Oracle на PostgreSQL в нагруженном сервисе без даунтайма

Level of difficultyMedium
Reading time30 min
Views25K

Всем привет! Я Сергей, работаю в B2B-команде Яндекс Маркета последние 3,5 года. Как уже понятно из заголовка, сейчас я вам расскажу про yet-another-миграцию с базы на базу, которая началась в середине 2021 года и заняла почти год. Получается, мемуары.

Вас ждёт рассказ о том, как мы:

- несколько месяцев чинили тесты и делали трансформер;

- десятки раз переливали данные;

- чинили баги незаметно для пользователей;

- заставили сервис работать на PostgreSQL быстрее, чем он работал на Oracle.

Читать далее
Total votes 90: ↑90 and ↓0+92
Comments15

Популярные алгоритмы машинного обучения. Теоретические основы и реализация с нуля на Python

Level of difficultyHard
Reading time1 min
Views31K

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

Читать далее
Total votes 22: ↑22 and ↓0+22
Comments21

Внутри S3. Доклад Яндекса

Reading time12 min
Views21K

Привет, я Паша, разработчик в Yandex Infrastructure, и я катаю гусей. С 2019 года я развиваю S3-хранилище как для внутренних пользователей Яндекса, так и для клиентов Yandex Cloud. А «гусём» называется наш бэкенд S3 API: он написан на Go, а из словосочетания Go + S3 получился goose. Возможно, вы также слышали про GeeseFS — это наш высокопроизводительный FUSE-клиент для S3. C его помощью вы можете на своём ноутбуке или виртуалке подмонтировать папку, которая будет работать с бакетом S3. 

Для чего нам «гуси» и прочая орнитология? Яндексовая инсталляция хранилища S3 хранит миллиарды файлов. Это огромные объёмы данных, а также метаданных. Для хранения метаданных мы научились использовать умное шардирование, и теперь сами управляем распределением занятого места и нагрузкой между шардами баз.

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

Читать далее
Total votes 71: ↑70 and ↓1+84
Comments52

Как мы тестируем устройства, которые производим: Python, Grafana и крафтовые стенды

Level of difficultyEasy
Reading time10 min
Views5.2K

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

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

Расскажем, как разрабатывали фирменный тестовый пакет test-suite, с какими проблемами столкнулись и как мы их решили. Также покажем наши стенды, на которых тестируем все выпускаемые продукты.

Интересно? Ныряйте под кат.

Читать далее
Total votes 25: ↑25 and ↓0+25
Comments4

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

Level of difficultyMedium
Reading time46 min
Views217K

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

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

Читать далее
Total votes 445: ↑437 and ↓8+489
Comments364
1
23 ...

Information

Rating
Does not participate
Location
Ижевск, Удмуртия, Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Middle
Python