-
Почему Емакс?
Недавно участвовал в дискуссии о Емаксе и понял: даже опытные разработчики не понимают, что такое Емакс и зачем он нужен. Наверное, и ваш знакомый травит байки про сломанные руки и скобочки? Кидайте ему этот линк.
Выложим багаж: Емакс – мощнейший тексовый редактор. В пользу Емакса говорят несколько факторов. Наверное, вы ждете чего-то в духе “вот этой фичи в ИДЕ нет, или она требует на два клика больше”. Нет, список ниже – фундаментальные вещи.
Все известные программисты работают либо Емаксе, либо в Виме. Линус Торвальдс, Гвидо ван Россум, Армин Ронахер, Джо Армстронг и другие. Согласитесь, у них должны быть деньги на покупку самых крутых ИДЕ. Почему один человек пишет в Емаксе интерпретатор языка или ОС, а другой не может пофиксить в Эклипсе глючный интернет-магазин? Что вынудило профессионалов использовать бородатое поделие вместо передовых средств?
Гомогенность. Про нее я рассказывал в докладе про Кложу. (Не нравится слово – подойдет “мономорфность”). Гомогенность означает единообразие интерфейса на всех уровнях системы. Под интерфейсом понимаем не отображение окошка, а соглашение о том, как взаимодействуют уровни системы.
Лисп – гомогенный язык. Любая конструкция лиспа – S-выражение, и ничто другое. Интерпретатор Лиспа на Лиспе занимает 15 строк. Это важно для дальнейшего объяснения.
Емакс – это рантайм старенького Лиспа, поэтому перенимает черты языка. В Емаксе есть только буферы. Буфер может быть связан с файлом, а может и нет. Буфер может выводить текст, а может и считывать. В буфере может быть файл, терминал, список процессов, результат поиска (find, grep). Однако, каждый буфер подчиняется единым правилам. Перемещение по тексту, навигация по семанической структуре, выделение, копирование и вставка работают для буферов одинаково.
Гомогенность в корне отличает Емакс от классических ИДЕ типа Пайчарма и Идеи. В них много окошек, и каждое живет своей жизнью, подчиняется своим правилам. Скажем, в Емаксе результат поиска – это текстовый буфер, и я могу искать в нем же встроенным поиском по
C-s
. Я могу настроить подсветку по регулярному выражению для любого буфера – потому что с точки зрения Емакса нет разницы, подсвечивать код, маркдаун или шелл.Гомогенность упрощает. Я не должен знать, как работает то или иное окно, я просто работаю. Растущая сложность систем – главная проблема разработчика. Мы используем сто утилит для написания кода, дебага, деплоя. У каждой свои параметры и баги. Так пусть хоть что-то из окружения работает просто, не выкручивая мозг.
Емакс и Вим заставляют отказаться от мышки. Задумывались ли вы, как неэффективно использовать аналоговый манипулятор для работы с цифровым устройством? Мышка удобна для игр и оконного интерфейса, когда элементы расположены в пространстве. Емакс ожидает от пользователя ввод команд, которые не зависят от положения курсора или разрешения экрана. Представьте, что у вас экран размером со стадион, а значимые элементы интерфейса в накрест лежащих углах. На перемещение курсора уйдет 10 минут, а на ввод команды – доли, как и прежде.
Конечно, это экстраполяция. И все же работа с мышью очень неэффективна. ИДЕ не поощрают отказываться от мыши. Видел сто раз, как программист водит мышкой по ниспадающим менюшкам вместо того, чтобы выучить команду.
Емакс – это очередной рубеж в карьере разработчика. И не потому что освоить Емакс сложно (на мой взгляд, намного легче Вима). Начать работать в этих двух редакторах означает настроить мозг на определенный лад, впитать ту философию, что заложили ученые бородачи 40 лет назад. Инструмент не сделает из новичка мастера. Но точно уверен, что с Емаксом я стал работать гораздо продуктивней.
Современные ИДЕ – это бизнес. Со всех сторон я слышу, что они помогают, улучшают. Их пропихивают в образовательные учреждения (Пайчарм со своим edu-project), чтобы юные умы не видели терминалов, а сразу писали код. Бизнес-адепты ИДЕ с пеной у рта докажут, что писать без коммерческого пакета нельзя и убыточно для бизнеса. Я думаю, понятно почему?
Хорошо, в одном из прошлых проектов я писал в Емаксе, коллега - в Саблайме. Проект – огромный и сложный. И мы были на равных с теми, кто использовал Пайчарм. Как так могло получиться?
Много фишек Емакса могут работать хуже, чем отточеные аналоги в ИДЕ. И автокомплит, и индексирование, и эвристическое обнаружение ошибок. Вот только правда жизни в том, что голова и профессиональное чутье со временем вытесняет эти прибамбасы. Со временем видишь ляпы в коде без подсказок машины, автокомплит становится не нужен, отключаешь то, что так долго настраивал.
Емакс – лучшее средство для тех, кто пишет на разных языках. Я много программирую на Питоне, правлю Js, зависаю в маркдауне, балуюсть Кложей и Гоу. Есть ли ИДЕ с поддержкой всех этих технологий одновременно? Могу ли я настроить поведение системы для каждого языка?
Емакс ускоряет процесс и упрощает работу. В том и парадокс, что система 40-летней давности делает это лучше коммерческих ИДЕ. Жаль, что многие разработчики понимают это поверхностно.
-
Что стало с блогом?
Блог переехал с движка Эгея на статичный генератор Jekyll. Перевести блог меня подтолкнули несколько причин, в том числе и идеологические.
Достоинствам старого движка я посвятил отдельный пост. Однако он написан на ПХП, а я уже давно отошел от ПХП-стека (Апач, Пых, Мускуль) и не хочу иметь с ним дел. И вот недавно хостер обновил версию ПХП и блог превратился в тыкву: пропал текст, вижу алерты, что такая-то функция стала deprecated.
Конечно можно было заморочиться и обновиться, но:
- мне не нравится, что система вышла из строя по независящим от меня причинам;
- мне не нравится выкачивать бекапы базы и файлов, ведь хостеру доверять нельзя;
- мне не нравится использовать стек из четырех систем определенных версий только для вывода текста, который не меняется.
- мне не нравится набирать текст в браузере, когда пальцы привыкли к Емаксу.
Поэтому блог переехал на Jekyll. Я уже писал о нем, когда выбрал для публикации новостей в одном проекте. С тех пор только убедился в его крутости.
Фишка в том, что Гитхаб нативно поддерживает этот движок на уровне репозитория. Например, если у вас репозиторий с именем
username.github.io
и внутри проект на Jekyll, Гитхаб автоматом скомпилирует статичную копию и покажет сайт по адресу http://username.github.io. Защищенное соединение поhttps
поддерживается. Легко подключить свой домен черезCNAME
.Теперь посты я пишу в любимом редакторе, использую Маркдаун. Коммит – и Гитхаб пересобрал статичный сайт, пост появился. Получается, у меня из коробки есть программный доступ к блогу, система версионирования и другие приблуды, ради которых программисты пишут вагоны кода.
Комментарии – Disqus, поиск – кастомный от Гугла, аналитика вшита в шаблон страницы. Исходники блога можно увидеть на Гитхабе.
Вместе со сменой движка я решил поменять и формат содержимого. Теперь в блоге будет меньше бытовых тем. Я решил плотно сосредоточиться на программировании, образовании и переговорах. Думаю, читатели от этого только выиграют.
К сожалению, не решил проблему с редиректом RSS. Если вы читали старый блог через агрегаторы, пожалуйста, обновите адрес ленты: http://grishaev.me/feed.xml
Спасибо.
-
Глубокий рефакторинг, первая встреча
Записи докладов с первой встречи любителей глубокого рефакторинга.
Вступайте в группу ВКонтакте.
-
2Гис
Всем хорош 2Гис, но поиск ужасный. По фразе “налоговая карла маркса” ничего не находит. А Гугл и карту показывает, и сайт открывает. Работать и работать над поиском еще.
-
Хороший динозавр
Не водите ребенка на “Хорошего динозавра”. Я сводил и пожалел. Удивительно плохой диснеевский мультик. Ниже полно спойлеров.
Вот посмотрите трейлер – светлячки, дружба, радуга. Ну, немного опасностей. Все же круто, да?
На деле в мультике полно жестокости и мерзких сцен, ни одной их которых в трейлере нет. Настоящее наебалово.
Напрягает слизанный с Короля Льва сюжет – сильный и добрый папаша-динозавр гибнет на глазах у сына. Сын обретает миллион фобий и комплексов. Если Муфаса умирает в ходе хитрой подставы, динозавр мрет исключительно по собственной глупости – поперся в грозу в горы. Затем сын оказывается далеко от дома, и путь домой осложняют обретенные страхи и чувство вины. В сложный момент является дух отца и объясняет, что к чему.
Мир вокруг одинокого травоядного гротескно жесток. Куда бы не сунулся, его норовят сожрать, укусить, удушить и тд. Это держит в постоянном напряге.
Полно отвратительных сцен. Динозаврик искупался в пруде, вылез увешаный червями-пиявками. Крупным планом показывают, как они сосут кровь. Детеныш-дикарь отрывает голову жуку размером с собаку, тот продолжает дергать лапками. Вообще смешно, обоссаться можно.
В середине фильма динозаврик знакомится со стервятниками, те обманом вынуждают достать енота из-под камней, а потом сжирают (камера не отъезжает, все показывает). Жует енота, а изо рта свисает хвост. Другой стервятник начинает рвать этот хвост изо рта товарища. Просто пиздец.
В дороге динозаврик и дикарь объелись дурных ягод. Неприятный кадр, когда те жуют, а возле одного из плодов роятся мухи с характерным гулом. Начинаются глюки-приходы с обменом тел, голов, конечностей, вырастанием лишных органов.
Потом на героя нападают кайоты. Сделаны они так мерзко, что просто нет слов. Кайоты и так некрасивые, как их ни рисуй, но придать им такие уродливые формы и пропорции – это надо было постараться. В Короле Льве они нарисованы точно с точки зрения физиологии, а негативные черты приданы озвучкой, повадками и анимацией. Здесь же просто чудовища.
Папаша-таринозавр, хоть и положительный (с натяжкой) персонаж, тоже выглядит очень страшно – гиганские челюсти на ножках. Все ракурсы построены так, что зубы, клыки и пасти находятся под носом у зрителя. Спустя некоторе время это сильно напрягает.
Особо не нравится, что у обитателей леса сплошные черные глаза. Для тех, кто не понял – выглядит это очень зловеще. Это такой намек, что любая птичка-синичка или ежик могут оказаться ядовитыми, саблезубыми или с каким-то другим пиздецом.
Встреча главного героя с динозавром-друидом (который ведет себя как наркоман) лишена всякого смысла. За время путешествия динозаврик не встретил ни одного положительного персонажа.
Техническая сторона мульта выше всяких похвал. Все-таки, панорамы, рендеры воды, деревьев, камней сделаны на высшем уровне – отличить от реальных съемок невозможно. В какой-то мере это даже слишком хорошо, т.к. реалистичность окружения конфликтует с мультяшностью динозаврика – он сильно выделяется из кадра.
Короче, вы играли в Лимбо? Атмосфера мультика примерно такая – загадочная, манящая, но при этом гротескно жестокая, со вкусом мерзости. “Хороший динозавр” оказался нифига не хороший. Я вас предупредил.
ЗЫ: особо доставила короткометражка вначале. Показывают индуса-отца и сына, который предпочитает телевизор молитвам. Однако с подачи отца мальчику приходит видение, которое популярно объясняет, что религия лучше! Оказывается, добрые боги защитят от злого бога! Заебись. Сын соглашается молиться. Третье тысячелетие на дворе, а люди все тащат эту дичь за собой.
Фейспалм.
Комментарии из старого блога
12/01/15 Саша: После такого описания не могу не посмотреть!
-
Время -- газ
Издавна люди ассоциируют время с водой. Время истекло, течение времени, все течет и меняется. А мне кажется, время похоже на газ, потому что человек может менять его плотность поступками.
Если жидкости несжимаемы, то газ можно сжимать безмерно. Протупил целый день, ничего нового не узнал, не поделился опытом – плотность около нуля. Освоил что-то новое, сделал то, что давно собирался, помог коллегам – плотность растет.
Удивительный факт, что кривая плотности растет без выхода на плато-фазу. То есть, при всей загруженности всегда можно найти способ, как сделать что-то еще. Казалось бы, дел столько, что жить некогда, но рывок – и дела утрамбованы, даже есть часик на всякую ерунду.
Сказанное выше справедливо для дел, которые любишь. Нелюбимое дело ведет себя как инертный газ – в одну харю заполняет все пространство. Избавляйтесь от них.
-
Гугл Кип
После неудачного опыта с Эверноутом стал пользоваться Гугл Кипом. Скажу, очень им доволен. Сервис отлично справляется с задачей, для которой предназначен – быстро добавить заметку, ссылку, а потом ее как-то найти.
Очень круто проработан интерфейс. Мне даже сперва показалось, что продукт Эпловский – так все клево и четко продумано для пользователя. Заметка добавляется без указания заголовка и других полей. По умолчанию в ней только содержимое, остальное пользователь впишет по желанию.
Заметкам назначаются цвета, можно делать отбор по цветам. Очень удобно – заметкам на тему документов и госорганизаций я ставлю красный цвет, потому что они почти всегда связаны с каким-то дедлайном. Желтый цвет прочно ассоциируется с блогом, поэтому помечаю им идеи для постов. Синий – все по работе.
Главный плюс Кипа – большое количество фич не мешает пользоваться сервисом в минимальном объеме. То есть все его фишки не кричат лицо баннерами, тормозными интерфейсами, а раскрываются по мере надобности. Есть и напоминалки, и туду-листы. Кип работает и в браузере, и как расширение для Хрома, и на айфоне, т.е. доступен везде.
Вижу один недостаток – ссылки на Ютуб остаются висеть ссылками без метаданных о видео. Это странно, учитывая, что во-первых, это сервисы одной компании, во-вторых, никто уже не воспринимает ссылку на Ютуб как обычную ссылку. Все сервисы парсят ее и выдают название и кадр-картинку. Втыкаю на вчерашнюю ссылку и не понимаю, что это за видео?
При всех плюсах, надо иметь голову на плечах и понимать, что единственная цель Кипа – собирать данные о пользователях. Не удивляйтесь, если поместите туда контакты знакомого, а потом увидете предложение в Гугл-плюсе добавить его в друзья. Не стоит хранить данные, подозрительные с точки зрения американского законодательства.
-
Поднял трубку, набрал номер
“Волк с Уолл-стрит” произвел на меня большое впечатление. Не сиськами-письками, а этими двадцатью секундами:
Что бы ни случилось, как бы все херово ни шло, просто поднимай трубку и звони – пытайся, договаривайся, пробивайся.
-
Сходил на Лимпов
Из диалога Фреда Дерста (Ф) с аудиторией (А):
- Ф: – Fuck you.
- А: – …
- Ф: – Fuck you!
- А: – Fuck you!
- Ф: – Fuck me?
- А: – Yeah!
- Ф: – mmmkay…
А на Зверей не пойду.
-
Половина
Никто не может написать правильно половину чего-либо. Пишут “пол года”, “пол-месяца” и другой пиздец. Как можно написать “пол года”? Это же два отдельных слова, как они могут значить что-то другое?
Приставка “пол” пишется всегда слитно со словом – полгода, полмесяца, ползарплаты, полбутылки. Хороший пример поможет запомнить – “рабочие покрасили полдома”. Половину, то есть. Если написать раздельно – “пол дома” – то получиться, покрасили пол во всем доме.
Исключение – пишется через дефис, если слово начинается с буквы л, например, пол-литра, пол-лавочки, пол-лаваша.
Комментарии из старого блога
11/11/15 Иван: «Пол-» пишется через дефис ещё и в том случае, если слово начинается с гласной или с заглавной буквы: пол-абрикоса, пол-Москвы.
То есть, в общем: Если слово начинается с «л», гласной или большой буквы, пишем через дефис, иначе — слитно.
11/11/15 Иван Гришаев: Спасибо.