Досвід портування проекту на Python 3

Хочу поділитися досвідом портування проекту з Python 2.7 Python 3.5. Незвичайними засідками та іншими цікавими нюансами.

Трохи про проект:

  • Браузерка: сайт + ігрова логіка (ієрархічні кінцеві автомати + купа правил);
  • Вік: 4 роки (розпочато в 2012);
  • 64k loc логіки + 57k loc тестів;
  • 2400 комітів.

Читати далі →

Історія одного бота

Всім привіт!
Останні 4 місяці я зайнятий розробкою некомерційного бота для Telegram. Зараз у нього щодня грає від однієї до чотирьох сотень людей і для мене це великий успіх. Якщо вам цікава історія розробки, то прошу під кат (:

Читати далі →

Оповідь про те, як я свій REST фреймворк веб-сокетами писав

Ця стаття присвячена черговому REST фреймворку (для Python 3), особливістю якого є використання веб-сокетів для обміну даними між клієнтом і сервером. Про те звідки прийшла ідея, з чим мені довелося зіткнувся при написанні своєї першої бібліотеки для Python і що з цього в результаті вийшло, я розповім далі.



Для тих, кому цікава ця стаття, будь ласка, заходьте під кат.
Читати далі →

Оптимальна апроксимація сплайнами

Нехай нам дано набір точок і відповідний їм набір позитивних ваг . Ми вважаємо, що деякі точки можуть бути важливіше інших (якщо немає, то всі однакові ваги). Неформально кажучи, ми хочемо, щоб на відповідному інтервалі була проведена гарна крива таким чином, щоб вона «найкраще» проходила через ці дані.



Під катом знаходиться алгоритм, що розкриває, яким чином сплайни дозволяють будувати таку красиву регресію:



Читати далі →

Анімовані QR коди

У вільному доступі з'явилася реалізація цікавих графічних чи анімаційних QR кодів.

Ви можете застосувати цю ідею в ваших проектах. Наприклад, надати можливість користувачам створювати QR коди з аватарок, використовувати в маркетингу або просуванні.

Github: github.com/sylnsfar/qrcode
Веб-версія: www.amazing-qrcode.com

Приклади анімованих QR кодів, GIF 1Мбimageimage

Джерело: Хабрахабр

Сериалокачалка на python3 з підтримкою розширень

В якості вступу варто сказати що я користуюся macOS і тому деякі частини:
  • Автозапуск (launchd)
  • Формат конфігураційних файлів (plist)
  • Програма, використовувана для повідомлень (terminal-notifier)
будуть специфічні для цієї ОС. Однак, якщо Вас зацікавить проект, думаю, поміняти пару шляхів і злегка поправити декілька функцій, щоб змусити цей код працювати з Вашою системою повідомлень, yaml'ом і, припустимо, кроном, не складе труднощів.
Отже, до справи.
Перевіряти трекери на оновлення улюблених телевізійних шоу, згадувати в момент коли вийшов новий епізод, дивився ти попередній, — набридає. До того ж, як відомо, все що потрібно робити більше двох разів, варто автоматизувати. Проект був початий на швидку руку і, ймовірно, буде вдосконалюватися.
Читати далі →

Python: ListDlls і Handles

Приємно, коли твої труди когось здатні зацікавити, але сумно, коли твій пост може виявитись для тебе останнім, — якщо ваш покірний слуга найближчим часом перестане ділитися своїми думками та дослідженнями, можете бути впевнені: загрожували фізичною розправою привели свої слова у виконання. Ну а поки я ще живий, то й не будемо про сумне.

Якщо подивитися на більшість third party утиліт критично, виявиться що стоять з них одиниці, проте це зовсім не заважає їм знаходити своїх користувачів у тому числі і серед системних адміністраторів. Сисадміни дуже люблять робити упор на те, мовляв вони ледачі, але це скоріше більш самоіронія, ніж правда, хоча якщо врахувати, що системне адміністрування вже немислимо без навичок програмування, все ж частка правди в цьому є. Маючи в своєму розпорядженні, скажімо, лише інтерпретатор Python, можна всього за п'ять-десять хвилин написати аналог якої-небудь утиліти, що виявляється безсумнівним плюсом у разі, коли помилки в останньої не правляться роками, а крім цього хотілося б щось виключити\доповнити з\в її функціонал[а|е]. Хотілося б, наприклад, налаштувати висновок ListDlls і Handle (утиліти з набору Sysinternals Suite) під себе, і тут видаються два варіанти рішення: або писати сценарій-обгортку, перехоплює і потім переопределяющий висновок, або написати все самому з нуля. Останнє багато виключають, загалом-то, банальної причини, мовляв, рішення потрібно тут і зараз (хоча таке теж буває), але, як вже було сказано вище, сисадмін без навичок програмування таким вже не вважається — нынешнии реалії.

Читати далі →

Як живуть і працюють розробники в Чехії: інтерв'ю з Олександром Сибиряковым з Scrapinghub

Ми продовжуємо серію інтерв'ю з доповідачами PyCon Russia про Python, їх роботі і захоплення. Перше міні-ми взяли інтерв'ю в одного з розробників мови Python Андрія Свєтлова.

Продовжує серію постів розмова з Python-розробником з Scrapinghub Олександром Сибиряковым, який вже 4 роки живе у Чехії. В якому напрямку буде розвиватися Python, що заважає розвитку мови, можливо російському розробнику влаштуватися на роботу в Чехії, і чим російська IT-галузь відрізняється від чеської — про все це читайте під катом.



Читати далі →

Asyncio Tarantool Queue, вставай в чергу



В одній зі своїх статей я розповідав про асинхронної роботи з Tarantool на Python. У даній статті продовжу цю тему, але увагу хочу приділити обробці інформації через черги на Tarantool. Мої колеги опублікували кілька статей про користь черг (Інфраструктура обробки черг в соціальній мережі Мій Світ і Push-повідомлення в REST API на прикладі системи Таргет Mail.Ru). Хочу доповнити інформацію про черги на прикладі рішень наших завдань, а також розповісти про роботу з Tarantool Queue на Python і asyncio. Чому ми вибираємо саме Tarantool, а не Redis або RabbitMQ?

Читати далі →