Курс "Введение в машинное обучение" на Coursera

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

more ...

Что такое хороший код

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

more ...

SSL-сертификат от Let's Encrypt и Nginx

Протокол HTTPS был разработан еще в 1994 году, но до сих многие сайты общаются с миром по незащищенному протоколу HTTP, главным образом из-за того, что получение SSL сертификата достаточно нетривиальный и дорогой процесс. Но сейчас ситуация изменилась: некоммерческий проект Let's Enctypt, поддерживаемый Mozilla, Cisco, Facebook, Google и другими крупными компаниями …

more ...

Вопросы для Python-собеседования

В последнее время мне часто доводилось проводить собеседования по языку Python. Конечно, одно только хорошее знание языка - это не повод брать человека: есть еще знания алгоритмов, навыки проектирования систем, опыт работы с распределенными системами, ну и всякий, казалось бы, булшит, вроде "умения работать в команде" и тому подобные вещи. Но …

more ...

Дублирующийся код и clonedigger

Так сложилось, что в проекте, над которым я сейчас работаю, существует репозиторий-помойка. Он содержит в себе вспомогательные скрипты на Python, которые писались в разное время разными людьми, которых объединяло одно - наплевательское отношению к происходящему. Практически все скрипты делают одно и то же: импортируют откуда-то данные, каким-то образом их преобразуют и …

more ...

Несколько слов о C++ OpenMP и обедающих философах.

Недавно я опять столкнулся с чудесным языком C++ и одной из его реализаций многопоточности, а именно с OpenMP. На самом деле, ощущение у меня осталось двоякое. С одной стороны, после Python'а с его фактическим отсутствием потоков, возможность хоть как-то с ними работать должна была вызвать ощущение счастья. Но все портили …

more ...

Один год в аналитике

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

more ...

Как не нужно писать на Python, часть 2

Продолжение статьи об идеоматичных конструкциях в Python.

На самом деле, многое из описанного ниже есть в любом более-менее толковом учебнике, но только разбавленное n-ным количеством воды. Я же постараюсь дать только самое основное: примеры и, самое главное, краткое заключение. Мне эта идея кажется удачной, т.к примеры должны лучше объяснить …

more ...

pyrasite - подключение к работающему Python-приложению

Меня давно привлекали возможности Erlang'а и языков Lisp-семейства по интроспекции и горячему обновлению кода работающего приложения. И я уже давно искал инструмент, который бы позволял делать что-то подобное и для Python - и такой инструмент я наконец нашел в виде крутой обертки над gdb - Pyrasite.

Зачем он нужен? Я вижу сразу …

more ...

Несколько слов о virtualenvwrapper

В Python-сообществе очень модно использовать virtualenv для работы с изолированными окружениями. Единственный минус virtualenv - не самый удачный интерфейс к инструменту из коробки. Например, чтобы активировать окружение, нам нужно знать, где оно расположено, а удаление приходится выполнять средствами командного интерпретатора. Эти проблемы призван решить virtualenvwrapper. В рунете я не нашел хотя …

more ...