Pull to refresh
0
0
Николай Звонов @IschuVoMhuEnota

Веб-разработчик

Send message

Учимся читать код, изучая стандартную библиотеку Python

Reading time5 min
Views38K


Итак, вы уже продвинутый новичок — вы изучили основы Python и способны решать реальные задачи.

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

Наверно, вы слышали, что нужно нарабатывать понимание чтением и написанием больших объёмов кода. Это правда.

Но какой же код нужно читать?

«Просто читай то, что нравится». А если вы не знаете, что вам нравится? А если вам не нравится что-то правильное?

Или хуже того — если вам нравится что-то неправильное и из-за этого у вас выработаются вредные привычки?

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

«На GitHub куча проектов — выберите понравившийся и изучайте, как его реализовали разработчики». Однако самые успешные проекты довольно объёмны — с чего начинать?

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

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

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

В этой статье мы рассмотрим некоторые модули стандартной библиотеки Python.
Читать дальше →
Total votes 43: ↑39 and ↓4+35
Comments3

Как я сделал свою сборку Gulp для быстрой, лёгкой и приятной вёрстки

Reading time32 min
Views77K

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

Читать далее
Total votes 22: ↑15 and ↓7+8
Comments14

N-e число обобщённых Фибоначчи за O(log N)

Reading time2 min
Views4.9K

В курсовой работе потребовалось написать алгоритм с логарифмической сложностью, который будет находить N-е число из последовательности Фибоначчи.

Читать далее
Total votes 9: ↑6 and ↓3+3
Comments16

Как построить систему распознавания лиц с помощью Elasticsearch и Python

Reading time5 min
Views7.5K

Пытались ли вы когда-нибудь искать объекты на изображениях? Elasticsearch может помочь вам хранить, анализировать и искать объекты на изображениях или видео.

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

Читать далее
Total votes 8: ↑6 and ↓2+4
Comments2

Руководство по моему стилю тестирования на Python

Reading time9 min
Views6.4K

В этой статье я попыталась собрать несколько своих техник тестирования на Python. Не стоит воспринимать их как догму, поскольку, думаю, со временем я обновлю свои практики.

Читать далее
Total votes 9: ↑7 and ↓2+5
Comments0

Как написать удобный API — 10 рекомендаций

Reading time4 min
Views23K

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

Читать далее
Total votes 10: ↑6 and ↓4+2
Comments18

Немного о том, как работает виртуальный DOM в React

Reading time10 min
Views63K

image


Настоящий или реальный (real) DOM


DOM расшифровывается как Document Object Model (объектная модель документа). Проще говоря, DOM — это представление пользовательского интерфейса (user interface, UI) в приложении. При каждом изменении UI, DOM также обновляется для отображения этих изменений. Частые манипуляции с DOM негативно влияют на производительность.


Что делает манипуляции с DOM медленными?


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


Манипуляции с DOM являются сердцем современного интерактивного веба. К сожалению, они намного медленнее большинства JavaScript-операций. Ситуация усугубляется тем, что многие JavaScript-фреймворки обновляют DOM чаще, чем необходимо.


Допустим, у нас имеется список из 10 элементов. Мы изменяем первый элемент. Большинство фреймворков перестроят весь список. Это в 10 раз больше работы, чем требуется! Только 1 элемент изменился, остальные 9 остались прежними.


Перестроение списка — это легкая задача для браузера, но современные веб-сайты могут осуществлять огромное количество манипуляций с DOM. Поэтому неэффективное обновление часто становится серьезной проблемой. Для решения данной проблемы команда React популяризовала нечто под названием виртуальный (virtual) DOM (VDOM).

Читать дальше →
Total votes 36: ↑33 and ↓3+30
Comments5

Разукрашиваем вывод в консоли: теория и практика

Reading time5 min
Views60K


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

Читать дальше →
Total votes 42: ↑41 and ↓1+40
Comments20

Практическое руководство по именованию классов, функций и переменных

Reading time4 min
Views44K

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

Читать далее
Total votes 37: ↑32 and ↓5+27
Comments41

FAQ про маски-шоу в ЦОДе в юридической практике VDS-хостинга

Reading time11 min
Views34K
image
Привет, Хабр! Вы просили меня рассказать, как будут выглядеть реальные маски-шоу в российском ЦОДе, где вы арендуете VDS. Сразу скажу: чудес не ждите, по правильно оформленному требованию данные будут переданы сразу и без лишних вставаний грудью на защиту. Потому что практика такая: либо вы ведёте легальный бизнес, либо вылетаете с рынка. Но есть нюансы. Мы с нашим юристом сейчас попробуем разобрать основные вопросы.

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


Вот, например, вы сняли детскую порнографию в поддержку Навального — и началось расследование по обращению ваших добрых и законопослушных конкурентов. Мы об этом узнаём по официальному письменному запросу. В офис приходит усталый курьер, либо же нам приходит заказное письмо по обычной почте или прилетает каким-нибудь специальным способом, например, фельдъегерем. Если в запросе нет секретных данных, то он обычно дублируется и обычным электронным письмом на адрес типа info@. Уже на этой стадии отсеивается примерно треть приходящих запросов, потому что их надо составлять правильно.

Естественно, мы не знаем (и более того, не хотим знать, это нам невыгодно), что у клиента творится на его VPS. Более того, в части случаев и непринципиально — если клиент включил шифрование, а ключи не хранит в открытом виде на сервере.

Но сам запрос обычно направлен на получение данных о каком-либо конкретном лице (контакты заказчика, история транзакций и так далее), преступную деятельность которого старается пресечь орган.
Читать дальше →
Total votes 115: ↑105 and ↓10+95
Comments84

Spothiefy: как переехать из Яндекс.Музыки быстро, бесплатно

Reading time5 min
Views75K
Итак, в июле жизнь в стране наконец стала меняться к лучшему, ведь произошло то, чего многие жители с нетерпением ждали: Spotify запущен в России и ряде других стран.

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

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

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

Пётр и крышка спотифая
Завести трактор
Total votes 57: ↑51 and ↓6+45
Comments111

Всё, о чём должен знать разработчик Телеграм-ботов

Reading time15 min
Views602K

Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй "как я создал такого-то бота" и туториалов вроде "как создать бота, который будет говорить hello world". При этом многие неочевидные моменты просто нигде не описаны.

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

Подробный гайд о том, как работать с ботами — под катом.

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

SQL в DjangoORM

Reading time12 min
Views22K

Меня зовут Алексей Казаков, я техлид команды «Клиентские коммуникации» в ДомКлик. В большинстве приложений, с которыми мне приходилось иметь дело, при взаимодействии с БД не ограничиваются лишь драйвером, который позволяет выполнять сырые запросы. Для удобства и избавления от SQL-запросов внутри, например, Python-кода дополнительно используют библиотеки (Object Relational Mapper, ORM).

Это первая статья в серии, посвященной различным ORM. Начнём мы с DjangoORM.

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

Каверзные вопросы по Python

Reading time4 min
Views38K

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


Читать дальше →
Total votes 61: ↑60 and ↓1+59
Comments47

Функциональное ядро в виде конвейера на Python

Reading time12 min
Views9.2K

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

Читать далее
Total votes 9: ↑1 and ↓8-7
Comments78

Основы функционального программирования на Python

Reading time19 min
Views57K

Этот пост служит для того, чтобы освежить в памяти, а некоторых познакомить с базовыми возможностями функционального программирования на языке Python. Материал поста разбит на 5 частей:

Читать далее
Total votes 11: ↑9 and ↓2+7
Comments42

Дорасти до сеньора и даже выше: советы по развитию IT-специалиста

Reading time10 min
Views20K

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

О том, что нужно для профессионального развития на разных этапах карьерной лестницы IT специалиста, в своем докладе на конференции DevOps Live 2020 об этом рассказал Карен Товмасян.

Читать далее
Total votes 21: ↑17 and ↓4+13
Comments4

Создаем кэшируемую пагинацию, которая не боится неожиданного добавления данных в БД

Reading time10 min
Views24K

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

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

Показать статью полностью
Total votes 5: ↑5 and ↓0+5
Comments10

Худшие из так называемых «лучших практик» для Docker

Reading time6 min
Views12K

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

Часто пишут, что при сборке Docker-образа не нужно устанавливать обновления безопасности. Я написал несколько опровержений, так что этот совет теперь встречается чуть реже. Но ранее эта рекомендация была на официальной странице с лучшими практиками Docker:

Избегайте RUN apt-get upgrade и dist-upgrade, потому что многие «особые» пакеты из родительских образов не смогут обновиться внутри непривилегированного контейнера.

Поясню: команды RUN выполняются при сборке образа, а не запуске контейнера. В документации говорится: «собирайте образы без установки обновлений безопасности». Тот же совет встречается в hadolint Dockerfile linter (цитируется вышеприведённый текст). Оттуда его тоже скоро должны убрать. Для подавляющего большинства людей, создающих Docker-файлы, это абсолютно ужасный совет. И поскольку встречается он очень часто, давайте рассмотрим некоторые объяснения и разберёмся, почему они ошибочны.
Читать дальше →
Total votes 44: ↑41 and ↓3+38
Comments11

Information

Rating
Does not participate
Location
Хабаровск, Хабаровский край, Россия
Registered
Activity