• UI-тесты в браузере

    На последнем митапе рассказал про тесты в браузере. Чем они отличаются от обычных тестов, что такое WebDriver и немного про свою библиотеку для Кложи.

  • Беда с парком

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


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

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

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

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

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

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

    Прикладываю набор фотографий. Обратите внимание на смену времен года. Фотографии охватывают осень, зиму и весну.

    Read more →

  • Clojure.spec

    Это вторая глава предполагаемой книги по Кложе на русском языке. См. первую главу про веб-разработку.

    Содержание

    В этой главе мы рассмотрим clojure.spec – библиотеку для проверки данных в Clojure. Это особенная библиотека, поэтому уделим пристальное внимание.

    Внимание! Вы читаете черновик к книге “Clojure на производстве”. Для книги я переписывал его много раз, но в блоге осталась старая версия. Здесь она для истории, а вам я рекомендую купить книжку.

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

    Особые функции принимают спеку, данные и проверяют, подходят ли данные под спеку. Если нет, то возвращают отчет: в каком узле данных произошла ошибка и почему.

    Spec входит в стандартную поставку Clojure начиная с версии 1.9. Полное имя модуля clojure.spec.alpha. Пусть вас не смущает частичка alpha на конце имени. Она осталась по историческим причинам.

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

    Технически spec основана на абстракциях, которые предлагает Clojure. Формально это обычная библиотека. Но абстракции spec оказались настолько мощны, что Clojure переиспользует их в работе. Начиная с 1.10, Clojure анализирует собственный код с помощью spec. Так проекты дополняют друг друга.

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

    Read more →

  • Харассмент

    У всех на уме сплошной харассмент. А задумывались ли вы, откуда взялся термин? В Википедии наваляли статьи на шести языках, а насчет происхождения — ни слова. Тем интересней узнать про термин подробнее, ведь пришел он из области, которая не имеет ничего общего с отношениями.

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

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

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

    Любопытно, что ни в английском, ни в русском языке не нашлось подходящего синонима. Английские комментаторы банально переняли иностранное слово. Jaedong is going to harass his opponent with six lings. What a successful harassment it has been! Потом термин перекочевал в русский как что-то само собой разумеющееся.

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

  • Отвлеченное

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

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

    Я читал одно время Твиттер Джо Армстронга, создателя Эрланга. Он мило подтрунивает над безумием современного веба, в частности Джаваскриптом. Конечно, нелегко ему, ветерану индустрии, начинавшему с перфокарт, писать на современном JS. Но Джо всегда делает это вежливо, с долей самоиронии. Даже с тридцатью годами опыта он не позволяет себе постов с жалобами.

    Read more →

  • Введение в веб-разработку на Clojure. Часть I

    (This is my attempt to compose a book about Clojure. I decided to start with a web development section to see how far I could go. It’s in Russian because here Clojure isn’t popular and its popularity across developers is low. I hope I’ll translate this in English one day.)

    Содержание

    В этой главе мы рассмотрим азы разработки на Clojure под веб-платформу. Поговорим о том, как устроен протокол HTTP и как передавать по нему данные. Рассмотрим, какие абстракции использует Clojure над протоколом, чтобы сделать разработку быстрой и удобной.

    Внимание! Вы читаете черновик к книге “Clojure на производстве”. Для книги я переписывал его много раз, но в блоге осталась старая версия. Здесь она для истории, а вам я рекомендую купить книжку.

    Каждый год компания Cognitect опрашивает Clojure-разработчиков. Среди прочих вопросов встречается о том, в какой области вы работаете? В 2010 году веб-разработкой занимались 50% опрошенных, то есть каждый второй. К 2018 году эта цифра выросла до 82%. Это уже четыре человека из пяти.

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

    Справедливо утверждать, что если вы найдете работу на Clojure, то скорее всего это будет веб-приложение. Речь необязательно идет о сайте компании. Иногда такие сайты даже бывают статичными, то есть состоят из набора HTML-файлов. Но веб-приложение — это не только текст с картинками. В общем значении это передача и обработка данных по протоколу HTTP.

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

    Прежде чем перейти к Clojure, давайте освежим в памяти устройство протокола. Из каких частей он состоит и по каким правилам сервер его обрабатывает. Это важно, потому что языки и фреймворки меняются, а протокол нет.

    Read more →

  • Tagging programmers

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

  • Питон и ненависть

    По работе пришлось снова вернуться в Питон. Один чудак состряпал сервис на Кложе, но не осилил тесты и написал их на Питоне. Пока исправлял за ним, хлебнул тонны ненависти.

    Во-первых, компилятор не обращает внимания на несуществующие переменные. Если допустить опечатку, то скрипт все равно запуститься, чтобы упасть на середине с ошибкой name "foo" is not defiened.

    Я в курсе, что в Питоне сто способов подсунуть переменную в рантайм минуя обычное присваивание. Скажем, через globals:

    >>> globals()["foo"] = 42
    >>> foo + 1
    43
    

    Но за это отрывают руки, поэтому так все равно не делают. А кроме того, компилятор мог бы и ворнинг кинуть. Друг, ты используешь переменную accounts, а откуда она взялась я хз. Не хуйню ли ты пишешь часом? Я бы такой — ок, поправил. Но нет.

    Read more →

  • Дети

    Я согласен с Лебедевым, что детей нужно заводить раньше. Дети это самое важное. То, чем ты занимаешься — нет. Даже если ты второй Стив Джобс или спаситель человечества. Все равно нет.

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

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

    Сюда же относится опен-сорс, консалтинг, сертификаты, конференции, вебинары, курсы роста, ссылки на Хакер-Ньюз и прочее говно. Все это не важно и отвалится через пару лет. Бизнес продадут, код перепишут. Божественную Кложу заменят на блевотный Яваскрипт. Дизайн сделают серым на белом.

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

    Мы не раз видели фильмы с таким сюжетом. Родитель не может выстроить отношения с подростком. Ты не уделял мне внимания в детстве! Но я же работал! Обеспечивал семью! Мы хотели твоей заботы, а не денег! Я делал все что мог! Дочь выбегает из комнаты. Да что с ней не так! Папуля морщит лоб и судорожно соображает.

    Типовой случай. А секрет в том, что ты бы мог сделать и то, и другое. И работать, и заботиться о детях. Одно другому не мешает.

    Ребенок — это продолжение тебя, твой контриб в будущее. Но неполный — что-то возьмут, что-то выкинут. Точную копию передать невозможно, и это круто.

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

  • Пять новых прочитанных книг

    В разделе Книжная полка – пять новых книг. Политология, война, алгоритмы, выступления и детская повесть. Описания стали длиннее. Про одну из книг – политологию Шульман – потом напишу отдельно.

Страница 40 из 83