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

Python developer

Send message

Ускоряем анализ данных в 170 000 раз с помощью Python

Level of difficultyMedium
Reading time15 min
Views19K

В статье «Ускоряем анализ данных в 180 000 раз с помощью Rust» показано, как неоптимизированный код на Python, после переписывания и оптимизации на Rust, ускоряется в 180 000 раз. Автор отмечает: «есть множество способов сделать код на Python быстрее, но смысл этого поста не в том, чтобы сравнить высокооптимизированный Python с высокооптимизированным Rust. Смысл в том, чтобы сравнить "стандартный-Jupyter-notebook" Python с высокооптимизированным Rust».

Возникает вопрос: какого ускорения мы могли бы достичь, если бы остановились на Python?

Под катом разработчик Сидни Рэдклифф* проходит путь профилирования и итеративного ускорения кода на Python, чтобы выяснить это.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Total votes 51: ↑50 and ↓1+56
Comments3

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

Level of difficultyMedium
Reading time12 min
Views9.2K

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

Читать далее
Total votes 24: ↑21 and ↓3+28
Comments14

WAL в PostgreSQL: 1. Буферный кеш

Reading time13 min
Views69K
Предыдущий цикл был посвящен изоляции и многоверсионности PostgreSQL, а сегодня мы начинаем новый — о механизме журналирования (write-ahead logging). Напомню, что материал основан на учебных курсах по администрированию, которые делаем мы с Павлом pluzanov, но не повторяет их дословно и предназначен для вдумчивого чтения и самостоятельного экспериментирования.

Этот цикл будет состоять из четырех частей:


Читайте и другие серии.

Индексы:

  1. Механизм индексирования;
  2. Интерфейс метода доступа, классы и семейства операторов;
  3. Hash;
  4. B-tree;
  5. GiST;
  6. SP-GiST;
  7. GIN;
  8. RUM;
  9. BRIN;
  10. Bloom.

Изоляция и многоверсионность:

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

Блокировки:

  1. Блокировки отношений;
  2. Блокировки строк;
  3. Блокировки других объектов и предикатные блокировки;
  4. Блокировки в оперативной памяти.


Читать дальше →
Total votes 38: ↑37 and ↓1+36
Comments23

Microservice for testing — are you kidding me?

Level of difficultyMedium
Reading time10 min
Views3.1K

Всем привет! На связи Николай Мезинов из команды Тинькофф. Предлагаю разобрать интересную задачу — тестирование приложений с помощью микросервиса. Прочитав предыдущее предложение, можно подумать: «Microservice for testing? Are you kidding me?» И я с ухмылкой отвечу: «No, I am not»

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

Как в Тинькофф появились деливери-менеджеры и чем они занимаются

Level of difficultyEasy
Reading time7 min
Views9.1K

Всем привет. Меня зовут Витя, я руководитель оптимизации процессов разработки и лидер профессии деливери-менеджеров. 

Мы в Тинькофф исторически растем большими темпами — рост команд часто превышал 100% год к году. Но за всю более чем пятнадцатилетнюю историю у нас не было классических scrum-мастеров или agile-коучей. Расскажу, почему так получилось и как появились деливери-менеджеры в наших командах.

Читать далее
Total votes 19: ↑15 and ↓4+12
Comments17

Быстро или мгновенно — с какой скоростью должен работать ваш продукт. Часть 1

Level of difficultyEasy
Reading time6 min
Views3.2K

Всем привет! Я Антон Телицын, продакт-менеджер в AI-центре Тинькофф, до этого работал в Miro над движком доски. В обеих компаниях сталкивался с вопросами управления скоростью реакции продуктов в разных ситуациях.

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

Добро пожаловать под кат!

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

Как ответить на вопрос «Когда будет готово?» на основе статистики

Level of difficultyMedium
Reading time6 min
Views8.5K

Всем привет! Я Анастасия Жадринская, деливери-менеджер в Тинькофф. Да, эта статья опять про оценки и сроки выполнения задач. Сроки без вуду, астрологии, гаданий и привлечения экспертов. В статье рассмотрю метод Монте-Карло — элегантный и простой в применении математический подход для прогнозирования сроков завершения проектов или объема выпуска задач.

Читать далее
Total votes 20: ↑18 and ↓2+17
Comments40

Как мы с помощью чемпионата оценивали профессиональный уровень продактов

Level of difficultyEasy
Reading time10 min
Views6.4K

Привет! Я Костя Рубцов, руководитель продукта «Ассистент Олег» и один из лидеров коммюнити продактов Тинькофф. Расскажу, как мы решили вместо алгоритмических тестов по компетенциям провести чемпионат с бизнес-кейсами, чтобы оценить уровень продактов, а им самим увидеть точки роста и поучаствовать в интересном челендже.

Читать далее
Total votes 16: ↑12 and ↓4+11
Comments3

Как прокачать профессиональную репутацию без публичных выступлений

Level of difficultyEasy
Reading time5 min
Views7.8K

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

Как быть, если хочется проявить экспертность, но страшно выступать и нет достаточной уверенности, чтобы писать статьи? Я DevRel-специалист в Тинькофф, и за время работы часто сталкивалась с такими вопросами. В этом материале я как раз рассуждаю, как развивать профессиональную репутацию при таких ограничениях. Добро пожаловать под кат.

Читать далее
Total votes 24: ↑17 and ↓7+12
Comments15

Как прогнозировать время выполнения задач

Level of difficultyHard
Reading time20 min
Views39K

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

Если спросить любого начинающего исследователя этой темы «А зачем нам оценка?», он скажет, что постоянно задают вопрос «Когда вы выполните эту задачу?», на который и надо ответить с помощью этой оценки. А что, если сам вопрос задан неверно?

Читать далее
Total votes 63: ↑61 and ↓2+66
Comments57

Сравнение производительности dict() и {} в Python

Level of difficultyMedium
Reading time11 min
Views15K

Какое-то время назад, во время разбора кода, мы обсудили выбор dict() вместо {} в новом коде на Python. Коллега утверждал, что dict() более читаем и чётче выражает цель, поэтому следует предпочесть его. Меня это не убедило, но в тот момент контраргуентов не нашлось, поэтому я воздержался.

Это заставило меня задуматься: в чём разница между типом dict и литеральным выражением {}?

Давайте изучим этот вопрос.

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

Про́клятый огонь, или магия препроцессора C

Reading time18 min
Views28K

Задавались ли вы когда-нибудь вопросом, можно ли полноценно программировать при помощи директивы #define в языке C? Полнота по Тьюрингу шаблонов C++ известна весьма широко, например, люди пишут трассировщики лучей, делающие все вычисления во время компиляции (вместо времени исполнения). А как обстоят дела с препроцессором C? Вопрос оказался сильно нетривиальнее, и эта история является, на мой вкус, отличным анекдотом для курса лекций по теории компиляторов, что я готовлю в данный момент. В частности, для лучшего понимания происходящего здесь, рекомендую ознакомиться со второй статьёй, которую я опубликовал параллельно этой: лексер и парсер.

Чтобы не было обманутых впечатлений, предупрежу сразу, что рейтрейсера не будет, но про́клятый код будет очень даже! Итак, поехали. Для начала, почему я вообще задался этим вопросом? Если обычный код компьютерной графики вам скучен, следующий раздел можно пропустить, перематывайте до последней картинки.

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

PITR в PostgreSQL

Reading time6 min
Views5.2K

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

Cколько раз вы сталкивались с ситуацией, когда что-то пошло не так и вам необходимо было в срочном порядке восстановить данные из бдшки, причем так, чтобы это было максимально близко к определенному моменту в прошлом? PITR – наш герой, спасающий наши нервы.

Читать далее
Total votes 18: ↑11 and ↓7+6
Comments3

Правда и мифы об энтропии. Как работает второй закон термодинамики?

Level of difficultyMedium
Reading time22 min
Views38K

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

Читать далее
Total votes 62: ↑58 and ↓4+73
Comments112

Когда Random совсем не случаен

Level of difficultyMedium
Reading time7 min
Views21K

Этот пост — рассказ об истории, случившейся больше десятка лет назад; её код был мной утерян. Поэтому прошу простить меня, если я не вспомню точно все подробности. Кроме того, некоторые подробности упрощены, чтобы от этой статьи могли получить все, кому нравится компьютерная безопасность, а не только любители World of Warcraft (хотя, полагаю, диаграмма Венна этих двух групп сильно пересекается).

Когда мне было примерно 14 лет, я узнал об игре World of Warcraft компании Blizzard Games, и она сразу же меня увлекла. Вскоре после этого я нашёл аддоны, позволявшие модифицировать внешний вид и функциональность интерфейса игры. Однако не все скачанные мной аддоны делали именно то, что мне было нужно. Мне хотелось большего, поэтому я начал разбираться, как они сделаны.

Забавно, что в моём серьёзном увлечении программированием можно обвинить World of Warcraft. Оказалось, что код был написан на языке Lua. Аддоны — это просто парочка файлов исходного кода на .lua в папке, напрямую загружаемых в игру. Барьер входа был невероятно низок: достаточно отредактировать файл, сохранить его и перезапустить интерфейс. То, что игра загружала твой исходный код и ты мог видеть его работу, было настоящим волшебством!

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

Читать далее
Total votes 90: ↑89 and ↓1+115
Comments43

Как IT сделало меня жадным

Level of difficultyEasy
Reading time5 min
Views52K

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

Внимание!
Все действия происходят регионе, а не в столице нашей родины. Любые совпадения с реальными событиями случайны, а ситуация вымышлена (а может и нет). Время действия событий 2016 - 2017 год.

Читать далее
Total votes 74: ↑47 and ↓27+31
Comments144

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

Level of difficultyEasy
Reading time5 min
Views50K

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

Приступим к кипячению воды
Total votes 176: ↑162 and ↓14+183
Comments274

Одно и то же лекарство можно купить и дешево и дорого. Что-то и вовсе не лекарство. И что за лекарство — вода с солью

Level of difficultyEasy
Reading time9 min
Views34K

Заходя в аптеку мы удивляемся тому, как подорожали за последние годы таблетки. И капли. Конечно на нас наживаются. Расскажу о довольно частых примерах. Вот к примеру обычный насморк. Что не так с лечением насморка?

Если покупать лекарства не по названию бренда, а по действующему веществу, то можно прилично сэкономить.

Читать далее
Total votes 158: ↑149 and ↓9+178
Comments237

Разработка высокопроизводительного кеш-слоя на основе Redis в телеграм-боте

Level of difficultyMedium
Reading time14 min
Views4.8K

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

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

Redis - это молниеносная, высокопроизводительная система управления данными в памяти, которая идеально подходит для кеширования в телеграм-ботах. Эта in-memory база данных спроектирована с учетом скорости и эффективности, позволяя разработчикам хранить и получать данные практически мгновенно. С Redis, вы можете сохранять разнообразные данные, такие как текстовые ответы, изображения, аудиофайлы, и даже более сложные структуры данных, все это с невероятной скоростью доступа.

Redis также предоставляет богатый набор функций, включая поддержку транзакций, публикации/подписки, управление исключениями и автоматическое удаление данных, что делает его превосходным выбором для создания надежного и масштабируемого кеш-слоя.

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

Энергетика Будущего: Как искусственный интеллект помог разработать батарею с 70%-ной экономией лития

Level of difficultyMedium
Reading time8 min
Views9.2K

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

Потенциальный поиск альтернатив занял бы годы кропотливых исследований и тестирования миллионов вариантов новых материалов. Однако команда под руководством Нейтана Бейкера из Microsoft смогла решить эту задачу всего за несколько месяцев, опираясь на мощь искусственного интеллекта. Им удалось разработать опытный образец батареи с содержанием лития на 70% меньше относительно ряда альтернатив.

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

Давайте вместе окунемся в процесс исследования!

Читать далее
Total votes 18: ↑16 and ↓2+17
Comments27

Information

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

Specialization

Backend Developer
Middle
Python