Pull to refresh
7
0

Прогер

Send message

Как работать с процессами и потоками в Python

Reading time16 min
Views69K

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

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

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

Рисуем верёвку в формате SVG при помощи JavaScript

Level of difficultyMedium
Reading time8 min
Views7K

Сегодня я расскажу о процессе, который я придумал для преобразования SVG‑контура в векторный рисунок верёвки.

Вы узнаете, как превратить показанный слева контур в верёвку справа:

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

Стоит учесть, что это не туториал по кодингу, а подробный обзор каждого из этапов. Но не беспокойтесь, код полностью доступен.

Замысел

Взглянув на это фото верёвки, вы заметите, что она состоит из множества переплетённых друг с другом прядей. Визуально они делят верёвку на сегменты. 2D‑проекция каждого сегмента напоминает изогнутый многоугольник.

Наша задача будет заключаться в создании этих многоугольников при помощи JavaScript.

Читать далее
Total votes 63: ↑62 and ↓1+61
Comments2

Граф стека вызовов — новая функция для GitHub, GitLab, JetBrains IDE

Level of difficultyEasy
Reading time2 min
Views4.7K

Создание документации для кода Python может быть трудоемким и подверженным ошибкам процессом. К счастью, существуют инструменты, которые могут автоматизировать эту задачу, например, созданный мной скрипт, который считывает все файлы .py в заданном каталоге и создает документацию для кода.

Читать далее
Total votes 4: ↑3 and ↓1+2
Comments8

Как создать Minecraft на Python? Обзор библиотеки Ursina Engine

Reading time11 min
Views34K

Среди любителей Minecraft много энтузиастов: пока одни просто играют, другие запускают целые серверы и пишут модификации. А кто-то идет дальше и разрабатывает собственные песочницы. Последнее достаточно просто сделать на Python.

Под катом делюсь основами работы с библиотекой Ursina Engine и показываю, как с помощью нее создать мир из кубов.
Читать дальше →
Total votes 60: ↑59 and ↓1+58
Comments21

PostgreSQL под капотом. Часть 0. Старт программы

Reading time17 min
Views14K

Postgres - один из крупнейших open source проектов. Он создавался многие года. Кодовая база накопилась огромная. Мне, как программисту, всегда было интересно как он работает под капотом. Но не про SQL пойдет речь, а про язык на котором он написан. Про C. 

С общей архитектурой можно ознакомиться здесь

Для начала поймем, что происходит до входа в главный цикл сервера.

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

Как хранить сеть дорог в БД для построения маршрута?

Level of difficultyHard
Reading time21 min
Views19K

Японцы уже в 2018 году научили немецкий GraphHopper строить маршруты по дорогам хранящимся в PostgreSQL.

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

Надо всего лишь...
Total votes 29: ↑29 and ↓0+29
Comments18

PEP 572 (Выражения присваивания в python 3.8)

Reading time28 min
Views20K
Привет, Хабр. В этот раз мы рассмотрим PEP 572, который рассказывает про выражения присваивания. Если Вы до сих пор скептически относитесь к оператору ":=" или не до конца понимаете правила его использования, то эта статья для Вас. Здесь вы найдёте множество примеров и ответов на вопрос: «Почему именно так?». Эта статья получилась максимально полной и если у Вас мало времени, то просмотрите раздел, написанный мной. В его начале собраны основные «тезисы» для комфортной работы с выражениями присваивания.
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments13

Bash-скрипты: начало

Reading time11 min
Views1.7M
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

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


Читать дальше →
Total votes 69: ↑61 and ↓8+53
Comments123

Лучшие вопросы средней сложности по SQL на собеседовании аналитика данных

Reading time14 min
Views85K
Первые 70% курса по SQL кажутся довольно простыми. Сложности начинаются на остальных 30%.

С 2015 по 2019 годы я прошёл четыре цикла собеседований на должность аналитика данных и специалиста по анализу данных в более чем десятке компаний. После очередного неудачного интервью в 2017 году — когда я запутался в сложных вопросах по SQL — я начал составлять задачник с вопросами по SQL средней и высокой сложности, чтобы лучше готовиться к собеседованиям. Этот справочник очень пригодился в последнем цикле собеседований 2019 года. За последний год я поделился этим руководством с парой друзей, а благодаря дополнительному свободному времени из-за пандемии отшлифовал его — и составил этот документ.

Есть множество отличных руководств по SQL для начинающих. Мои любимые — это интерактивные курсы Codecademy по SQL и Select Star SQL от Цзы Чон Као. Но в реальности первые 70% из курса SQL довольно просты, а настоящие сложности начинаются в остальных 30%, которые не освещаются в руководствах для начинающих. Так вот, на собеседованиях для аналитиков данных и специалистов по анализу данных в технологических компаниях часто задают вопросы именно по этим 30%.

Удивительно, но я не нашёл исчерпывающего источника по таким вопросам среднего уровня сложности, поэтому составил данное руководство.
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments17

Экзотичные заголовки HTTP

Reading time12 min
Views104K

Привет Хабрахабр! В этой статье будут наглядно продемонстрирован результат применения некоторых важных и экзотичных HTTP заголовков, большинство из которых связаны с безопасностью.
Читать дальше →
Total votes 83: ↑80 and ↓3+77
Comments35

6 GitHub проектов для веб-разработчиков, на которые стоит взглянуть

Reading time2 min
Views20K
Привет, Хабр! Представляю вам перевод статьи 6 Github Repos for web developers you should have a look at автора lampewebdev.

Однажды я пролистывал ленту dev.to и наткнулся на пост 6 GitHub проектов для быстрой прокачки знаний.

Я согласен с автором, что список действительно впечатляет, но порой списки ссылок в этих проектах очень большие.

Поэтому, вот список моих любимых проектов GitHub для быстрой прокачки знаний, но созданный специально для веб-разработчиков.
Читать дальше →
Total votes 25: ↑20 and ↓5+15
Comments2

CES 2020, IBM и первое настоящее коммерческое применение нового квантового компьютера

Reading time9 min
Views29K
image План статьи:
1. Инфоповод – неожиданное заявление IBM на CES 2020.
2. А что же мы ожидали?
3. Технология квантовых компьютеров IBM развивается быстрее планов (в действительности – нет).
4. Возникновение новых отраслей прямо сейчас.
5. Мы угадали момент, вот наши книги для вас.

Традиционно на первой неделе января в Лас-Вегасе проходит крупнейшая международная выставка CES, где все ведущие технологические компании мира анонсируют львиную долю передовых разработок. Не исключение и IBM, неожиданно объявившая о первом коммерческом использовании своего новейшего квантового компьютера. Партнёром оказался автоконцерн Daimler. Его деятельность по разработке электромобилей потребовала произвести высокоточные вычисления для симуляций характеристик молекул (литий-сера), которые планируется взять за основу нового поколения автомобильных твердотельных аккумуляторов. Лидеры этого рынка в данный момент связывают ближайший большой скачок отрасли электрического транспорта именно с технологией твердотельных литиевых аккумуляторов. Использование для расчётов квантового компьютера оказалось более привлекательным, чем традиционные высокопроизводительные вычисления на суперкомпьютерах. И вот почему это прекрасно.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments30

Разработка идеального pypi пакета с поддержкой разных версий python

Reading time15 min
Views21K

Это небольшой мануал/история о том, как создать "идеальный" pypi пакет для python, который каждый желающий сможет установить заветной командой:


pip install my-perfect-package

Ориентирована на новичков, но призываю и профессионалов высказать свое мнение, как можно улучшить "идеальный" пакет. Поэтому прошу под кат.

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

Новые фичи Python 3.8 и самое время перейти с Python 2

Reading time3 min
Views41K

Наступил 2020 год, а значит, Python 2 перестал поддерживаться. Если быть совсем точным, то основные разработчики уже перестали заниматься веткой, а выход релиза 2.7.18, приуроченный к PyCon US в апреле 2020 года, ознаменует полное прекращение любой активности, связанной с Python 2.


С другой стороны, совсем недавно состоялся релиз Python 3.8, добавивший немного синтаксического сахара в язык. Python 3.9 же ожидается ещё нескоро, да и пока не похоже что добавит в язык что-то интересное.


Так что если вы вдруг ещё не отказались от Python 2, то дальше тянуть смысла просто нет: поддержка второй версии уже прекратилась, а переход сразу на 3.8 позволит использовать язык в его самом актуальном состоянии ещё долгое время.


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

Читать дальше →
Total votes 69: ↑67 and ↓2+65
Comments75

Действительно ли использование BSP в Doom стало гениальным ходом?

Reading time16 min
Views19K

Вершина технологий того времени.

В 1993 году id Software выпустила шутер от первого лица Doom, который быстро превратился в феномен. Сегодня считается, что это одна из игр, оказавших самое большое влияние за всю историю.

Десять лет спустя после выпуска Doom, в 2003 году, журналист Дэвид Кушнер опубликовал книгу об id Software под названием Masters of Doom, которая с тех пор стала каноническим описанием процесса создания Doom. Я прочитал Masters of Doom несколько лет назад и почти ничего уже не помню, но одна история из книги о ведущем программисте Джоне Кармаке сохранилась в моей памяти. Моё описание будет не совсем точным (подробнее см. ниже), но если вкратце, то на раннем этапе разработки Doom Кармак осознал, что написанный им для игры 3D-рендерер при рендеринге отдельных уровней начинал тормозить. Это было неприемлемо, потому что Doom должен был стать активной и даже бешеной игрой. Осознав, что проблема рендерера была настолько фундаментальной, что ему придётся искать более оптимальный алгоритм рендеринга, Кармак начал читать исследовательские статьи. В результате он реализовал технику под названием «двоичное разбиение пространства» (binary space partitioning, BSP), которая раньше никогда не применялась в видеоиграх, и значительно ускорил таким образом движок Doom.

Эта история о том, как Кармак применил передовые научные исследования к видеоиграм, всегда впечатляла меня. По-моему, именно благодаря этому Кармак стал такой легендарной фигурой. Он заслуживает быть известным в качестве архетипичного гениального программиста видеоигр по множеству причин, но в качестве главной мне всегда вспоминается эпизод с чтением научных статей и двоичным разбиением пространства.
Total votes 50: ↑50 and ↓0+50
Comments4

Вторая часть перевода книги Дэвида Кушнера «Masters of Doom». Главы 6-12

Reading time2 min
Views4.9K
image

Закончен и выложен на Ваш суд перевод книги Дэвида Кушнера «Masters of DOOM».

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

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

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

Помимо чисто художественного интереса книга несёт очень много исторических фактов как о развитии игровой индустрии, так и о истории компьютерных технологий.

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

Повествование проведёт через каждый шаг роста компании «id software». От первой совместной игры, до игр, которые навсегда вошли в историю компьютерной индустрии.

В заключение хочется процитировать высказывание Кармака, которое является советом всем начинающим программистам, и молодым людям, которые находятся только в начале этого пути — (цитата из книги)

«Кармак с презрением относился к разным напыщенным фразам и речам, но одно высказывание, его собственное, ему нравилось. Оно звучало так – “В наш информационный век барьеров больше не существует.”- повторил он её сам себе. “Барьеры появляются если только мы их придумываем себе сами. Если вы горите желанием создать что-то новое и грандиозное, вам не нужны миллионы долларов вложений. Вам надо только пиццу и диет-колу, чтобы забить холодильник, дешевый персональный компьютер для работы, и преданность своей идее. Мы спали на полу. Мы перебирались когда-то для этого через реки.
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments6

Введение в ASGI: становление асинхронной веб-экосистемы Python

Reading time8 min
Views53K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Introduction to ASGI: Emergence of an Async Python Web Ecosystem" автора Florimond Manca.



"Черепахи рядом с водоемом", Ricard Baraham на unsplash.com


Python не замыкается только на Data Science, веб-разработка на Python вернулась с новым асинхронным витком в развитии языка!


Сейчас происходит много важных событий в экосистеме веб-разработки на Python. Одним из основных драйверов этих изменений является ASGI — Asynchronous Standard Gateway Interface.


Я уже несколько раз упоминал ASGI в моем блоге, в частности, когда анонсировал Bocadillo (асинхронный open-source веб-фреймворк на Python — прим.пер.) и tartiflette-starlette (библиотека для построения GraphQL API поверх HTTP через ASGI — прим.пер.), но я никогда не писал подробное введение о нем. Теперь я это сделаю.


Эта статья нацелена на людей, интересующихся последними трендами в веб-разработке на Python. Я хочу пригласить вас на экскурсию, из которой вы узнаете, что такое ASGI, и что он означает для современной веб-разработки в мире Python.


Прежде чем мы начнем, я хотел бы рассказать, что недавно создал awesome-asgi — отличный список для отслеживания постоянно расширяющейся экосистемы ASGI.

Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments5

Как устроен штрихкод?

Reading time7 min
Views96K
Привет, Хабр!

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

Как устроен баркод, и что закодировано на этой картинке?



Попробуем разобраться, заодно напишем декодер таких кодов.
Читать дальше →
Total votes 75: ↑71 and ↓4+67
Comments22

Что нам стоит сервис email-маркетинга построить? Взгляд изнутри, часть первая

Reading time5 min
Views18K
Насколько сложно построить полноценный сервис email-маркетинга? Что для этого нужно предусмотреть? Какие подводные камни могут встретиться на пути пытливых умов разработчиков?



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

Сразу оговорюсь, что в статье рассмотрена только техническая сторона вопроса.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments21

Игровая индустрия: полезные материалы для геймдевелопера от A до Z

Reading time10 min
Views160K
В последнее время мы часто сталкиваемся с вопросами о том, как попасть в игровую индустрию, какие полезные материалы на эту тему можно почитать и посмотреть, с чего начать изучение геймдева. Когда начальные знания появляются, то возникают уже более конкретные вопросы, например «где найти единомышленников для создания игры», «как продвигать свой проект с минимальным бюджетом», «на каких издателей стоит выходить, как это делать и стоит ли вообще», «как улучшить ретеншн в нашей игре» и так далее.

Друг наших образовательных программ Михаил Пименов,  CEO компании Wonder Games и Team Lead инди-проекта "Guard of Wonderland" сам не раз задававший себе эти вопросы, создал для себя выборку всевозможных материалов по индустрии геймдева. От полезных ресурсов, до сообществ, подкастов, книг и фильмов, которые призваны помочь понять, с чего начинается и чем заканчивается разработка игрового проекта. Объединив наши силы, мы с Мишей сделали эту статью с подборкой полезных материалов по игровой индустрии. Вы найдете подборку под катом.


Читать дальше →
Total votes 58: ↑54 and ↓4+50
Comments26

Information

Rating
Does not participate
Location
Тюмень, Тюменская обл. и Ханты-Мансийский АО, Россия
Date of birth
Registered
Activity