• Люблю паттерны

    Паттерн – повторяющийся узор, которым можно покрыть поверхность любой площади. Хорошую подборку можно посмотреть на сайте Лебедева. А еще хорошие паттерны встречаются в жизни:

    zerg rush

  • Недостатки питона

    Я один из тех, кто проводит в Датаарте собеседования по Питону. За два года провел около пятидесяти собеседований. Я веду специальный список, в котором собираю наиболее интересные вопросы к кандидатам. Интересные – не значит сложные или такие, чтобы запутать или унизить собеседника. Цель собеседования – определить, подходит нам кандидат или нет. Интересные вопросы дают кандидату возможность выговориться, рассказать о прошлом опыте, привычках. На такой вопрос нельзя ответить однозначно да или нет. Это аналог открытого вопроса в переговорах.

    Один из интересных вопросов звучит так – какие в Питоне есть недостатки? Как вы с ними боретесь?

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

    Весьма дурным ответом считаю, что в Питоне нет недостатков. Кандидат расписывается в своей неопытности. Идеального языка программирования нет. Скорее, он только начал работать с Питоном и прибывает в эйфории, когда вместо 15 строчек можно сделать то же одной.

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

    Когда кандидат приводит в пример какую-то слабую особенность Питона, я в первую очередь интересуюсь, в какой ситуации кандидат с ней столкнулся и как разрешил. Часто случается, что тот или иной аргумент взят с Хабра или ЛОРа, то есть не имеет отношения к реальности.

    Ниже привожу потенциальные ответы и свои комментарии к ним. В конце – свою точку зрения на поставленный вопрос.

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

    Далее, ГИЛ – глобальный замок, который не дает исполнятся нескольким тредам одновременно. Опять же, вопрос – какие задачи лучше решаются тредами? В вебе все работает на процессах. Порождение треда на каждый запрос убьет систему в два счета. ОК, в чем разница между тредами и процессами (модули Threading и Multiprocessing)? Без ответов на эти вопросы аргумент не принимается.

    Строки и изменения в третьем Питоне – повсеместный Юникод. Спрашиваю, в чем были проблемы со строками во второй ветке. Как кодируется и декодируется Юникод. Сколько байт тратит UTF-8 на один символ? Какие операции быстрей – на Юникоде или на 8-битных строках? Заметил – тот, кто понимает работу со строками, исправлениям в тройке не рады.

    В процессе ответа кандидат имеет полное право спросить мою точку зрения на недостатки Питона. Отвечаю примерно так.

    Производительность Питона является косвенным недостатком. Столкнуться в вебе с ним практически нереально. В практике у меня был случай, когда утилита на Питоне сильно проигрывала аналогичной утилите на Си. Я пытался распарить лог Энджинкса размером в пять гигабайт. Если ngxtop сделал это за час, то другая утилита (не помню название) – за пять минут. Это тот случай, когда критические участки кода нужно выносить из Питона на Си или использовать другие утилиты.

    Есть у меня претензии к оформлению кода с использованием *args, **kwargs. Сама по себе это классная штука, но некоторые используют достоинства языка себе во вред. Например, функция или конструктор принимают много необязательных параметров. Хорошим тоном будет перечислить их все в сигнатуре со значениями None. Однако, попадаются те, кто просто лепит *args, **kwargs, и внутри тела функции разбарет их вручную. В лучшем случае в докстринге указано, что можно передавать. Это ломает автокомплит, подсказки в редакторах, вынуждает читать код. Короче, выходит проигрыш в усилиях – поленившись один раз, разработчик вынуждает напрягаться других многократно.

    Строки и третий Питон. Моя точка зрения здесь лаконична. Разработчик, который хорошо знает, как устроены кодировки и Юникод, не получит в тройке никаких преимуществ, наоборот – только боль. Очень часто мы работаем с 8-битными строками, сплитим, тримим, делаем замену. Да, по сути это байты, но что с того? На каждый чих переводить байты в Юникод, я считаю, глупо. В тройке потенциальные трудности со стоками спрятали в черный ящик. Оставили начинающих разработчиков в неведении, что происходит под капотом. Незнание кодировок рано или поздно выстрелит в самый неприятный момент.

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

    Задавайте открытые вопросы на собеседованиях. Не провоцируйте холивар, но подталкивайте к полному, развернутому ответу. Вы больше узнаете о кандидате, он будет к вам расположен, т.к. вы – слушатель. Принять окончательное решение – брать на работу или нет – станет проще.

  • Депардье

    facepalm

    Вот дурак этот Депардье. Позорно бежал из страны, в которой, собственно, и сделал карьеру. Бежал, чтобы сохранить бабло. Сам я тоже против прогрессивной шкалы, да и вообще против налогов. Но, блядь, на кой хрен тебе столько денег? Еще больше пузо отращивать? Вложись в новые технологии. Перечисли раковым больным. Инвестируй стартапы. Жертвуй неизлечимым котикам. Да почитай, наконец, чем Билл Гейтц с женой занимаются, они подскажут. Рано или поздно с таким пузом возникнут болячки, и любые деньги станут не в счет. Ну сделай же мир лучше! Вместо этого Депардье едет в Россию, получает паспорт и теперь готов за нее умирать. Занавес.

  • Боремся со ссылками в новом табе

    Прекрасное расширение для Хрома Death To _blank заставляет все ссылки открываться в текущем окне. Это очень классно. Теперь не нужно страдать из-за СЕО-дрочеров и просто дебилов, не желающих отпускать посетителя с сайта. На каждую хитрую жопу есть хер с винтом. В опциях можно указать домены, для которых правило не действует. По умолчанию добавлены Гмейл и еще чей-то почтовик.

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

  • Статичный блог для queryfeed.net

    У Кверифида появился уютный бложек с РСС-лентой. Посты оттуда автоматом транслируются в твиттер и фейсбук проекта.

    Отдельная история о том, как выбирал движок для блога. Ставить на сервер Пых, Апач и Мускуль ой как не хотелось, ведь все это говно придется мониторить. И тут мне вспомнился принцип идеального объекта. Это когда функции объекта есть, а объекта нет. Значит, нужно, чтобы блог был, но не пришлось бы париться с установкой софта и поддержкой. Решение – сделать статичный блог на базе какого-то генератора. Наполнять его и генерить статику на локальной машине, заливать через Гитхаб или scp.

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

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

    Наполнять и сопровождать такой блог оказалось экстремально просто. Ваш блог – это набор файлов и папок. Страницы и посты можно писать на нескольких языках разметок, я предпочитаю обычный Маркдаун – проще и удобней еще ничего не придумали. Шаблоны – это обычный html с вкраплениями управляющих конструкций. Скрипт jekyll генерит из этой папки другую папку, в котором готовый сайт с РСС-лентой. Если нужно поменять дизайн – поправили шаблоны, снова сгенерили.

    Исходники такого блога храним на Гитхабе или еще где. Благодая системе контроля версий разрешается море проблем – сразу есть версионирование страниц, например. Захотели – откатили комит, вернули старую страницу, собрали, залили. С таким блогом может работать сразу группа людей: кто-то написал статью, залил пулл-реквест, прошел ревью, смерджил, залил на сервер. Красота.

    Не нужно заморачиватсья с установкой софта. Настроить правильно, с учетом всех требований безопасности похапэ, Апач и БД – дело нескольких дней. Гуглю по словам “setup php apache mysql”, по ссылкам открываются простыни на 10 экранов вроде этой. Потом в вашем Друпале или Вордпрессе найдут дыру и школие поломает сервер. Статичный блог этих недостатков лишен. Он раздается Энджинксом напрямую с реактивной скоростью, быстрее ничего быть не может.

    Полный констроль за шаблоном и скриптами. В CMS это делается модулями, каждый притормаживает систему. В статичном блоге так: вставил скрипт Гугло-аналитики – пошла аналитика, вставил код комментариев от Disqus – подключились коменты. Все по-быстрому и малой кровью.

    Словом, движком jekyll я люто-бешено доволен, всем советую. Если довести тему и интерфейс до уровня той же Эгеи, получится супер-связка.

    Комментарии из старого блога

    06/04/15 Александр Рянин: Пробовал переехать на Октопрэсс, но не удалось всё правильно установить. Настраивал на Мак ОС.

    Почему выбрали именно Джэкил?

    06/04/15 Иван Гришаев: Потому что в каком-то рейтинге он оказался сверху. Документация очень простая. Еще важно количество комитов в репозитории. Взгляните: https://github.com/jekyll/jekyll – почти 6000 комитов и 500 участников. Ну и на практике все оказалось просто.

    06/04/15 Роман:

    Это когда функции объекта есть, а объекта нет.

    Вордпрессе найдут дыру и школие поломает сервер

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

    Горячо рекомендую «StaticPress».

    06/04/15 Иван Гришаев: Спасибо, но вряд ли возьмусь за него. По части сложности WP на порядки сожнее Jekyll.

  • 10 уроков на Хекслете

    Вот я сделал 10 уроков про Питон. Рассказал про основы синтаксиста, базовые типы, коллекции, итерацию, функции, строки и юникод, логические операторы. Пока что все уроки бесплатны.

    Все видосы лежат в моем плейлисте на Ютубе. В общей сложности из посмотрели примерно 4000 человек. На уроки подписалось около 2000 человек. Если хотя бы десятая часть освоит Питон, буду гордиться своим вкладом.

  • Срач на Руфабуле

    Я почитываю Руфабулу, авторы туда пишут хорошие – Никонов, Нестеренко. Но, сука, даже взрослые образованные люди начинают срач из-за предлога в/на в отношении Украины! А другие поддерживают. Это какой-то пиздец. Ощущение, что попал на подростковый форум, где каждый – филолог с двадцатилетним стажем. Еще раз – в этой серии постов препираются взрослые люди с несколькии образованиями, семьями, детьми. Они выясняют, писать одну букву или две перед словом “Украина”. Пожелаем им удачи.

    Неполное собрание сочинений:

    • http://rufabula.com/author/alina-vituhnovskaya/535
    • http://rufabula.com/author/sklyarov/533
    • http://rufabula.com/author/mironova/536

    Несколько пунктов на заметку:

    1. Спорить бессмысленно, и вот почему.
    2. “Великий и могучий” – это такой затасканый баян, что фейспалм.
    3. Носитель языка никому ничего не должен, в том числе и самому языку. Пишите в или на – как захочется.
  • Успехи учащихся

    screenshot

  • Величайший мудизм —

    отсутствие ссылки unsubscribe в очередной левой рассылке с сайта, где ты один раз. JWPlayer, например.

  • Девять уроков на Хеслете

    Я делаю уроки по Питону на Хекслете. Сегодня в курсе “Введение в Питон” уже девять уроков. Готовлю десятый с вопросами для самопроверки. Чтобы научиться Питону, запишитесь на курс. Я делаю уроки с упором на практику, не развожу демагогию, пресекаю холиварные вопросы (какой оператор форматирования использовать). Я отвечаю на сообщения, обсуждаю решения практических заданий в личной переписке. Чтобы программировать на выразительном языке, запишитесь на курс.

Страница 41 из 54