• Порнография

    Преамбула

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

    На каждую статью писать пост глупо. Для закрепления материала подходит формат пересказа. Просто тезисы, опорные пункты, что показалось интересным.

    Последние пару месяцев читал две темы – монады и порно (что почти одно и то же). Сегодня расскажу о порнографии.

    Итак, порнография

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

    Давным-давно я работал не телевидении и делал сюжет про какой-то хлебозавод. Не мог потом есть хлеб месяц. Черные станки, обгорелые лотки, толстые бабищи с немытыми руками. Фу.

    Никто в индустрии не ассоциирует порно с сексом. Все говорят – процесс, работа. Да, бывает удовольствие, но в целом – бизнес. Как в любом бизнесе, от обывателя скрыты детали, а напоказ выставлены мифы.

    Суммарный доход порноиндустрии превышает сумму доходов Гугла, Микрософта, Эпла и других айтишных гигантов. Общее время порно-роликов, просмотренных за год пользователями порно-тубов, в два раза больше времени существования человека на Земле.

    Система порноиндустрии очень сложна и включает разные должности. Актрисы и съемочная группа – малая вершина айсберга. Цепь, по которой проходит новая актриса от кастинга до съемок, очень длинна. Сюда входят агенты, рекрутеры, сопровождающие, гримеры, постановщики, врачи, психологи, пиарщики, технари, менеджеры. Единицы могут точно описать все процессы порноиндустрии.

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

    Работает это так. Роликам с участием актрис из России и Украины проставляют теги “Russian Girls”. Когда пользователь из России заходит на очередной порно-туб, его распознают по айпи и показывают блок с российскими девочками, где он видит знакомое по универу лицо. Ссылка вбрасывается в группу Вконтакта. Прежде чем админы успеют удалить, девушку узнают.

    После деанонимизации большая часть уезжает на регулярные съемки.

    В России и Украине порно почти не снимают. Съемки носят любительский и полулегальный характер. В России стать режиссерем порнофильмов – своего рода мечта, китч. Неясно, что круче – снимать или сниматься. Единицы вроде Прянишникова или свернули бизнес, или ушли на западные рынки.

    Россия и Украина – валовые поставщики порноактрис. Девушки этих стран в тренде. На каждом порно-тубе тег или раздел “Russian Girls”, где нарочно слышна русская речь.

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

    Оказалось – нет. В принципе, логично, ведь для фото нужнен другой свет и ракурсы.

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

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

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

    Для анальных сцен актрисы пользуются лидокоиновым спреем, чтобы снизить чувсвительность. Лидокаин раньше использовался как локальное обезболивающее в зубных клиниках.

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

    В основном порнографию делают в Лос-Анджелесе и районах, например, Сан-Фернандо (та самая Силиконовая, а не Кремниевая долина), Канаде и Венгрии. Будапешт – единая точка сбора, куда переправляют девушек из стран бывшего СССР.

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

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

    Порнография от начала до конца – один сплошной обман.

  • Порефакторили в седьмой раз

    Провели седьмую встречу! И не в подвале, а в баре. Так и будем в дальнейшем.

    Денис Ковалев рассказал про systemd:

    Слайды

    Саша Макаров поделился советами безопасности в PHP:

    Слайды

    Напомню, сообщество тусит в группе Фейсбука. Скоро анонс восьмой встречи. Хотите выступить? Пишите в группу.

  • Кредная карта

    Знакомый говорит – возьми кредитную карту Тинькова. Высокой процент кешбека. Долгий срок гашения задолженности. Всякие акции, бонусы. Удобно. И не только Тиньков, еще РокетБанк и другие конкуренты.

    Не буду. Вот пост-ответ.

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

    Большое вознаграждение, говорите? Давайте посчитаем.

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

    Представим, что все 50.000 рублей я буду тратить с кредитной карты какого-нибудь Тинькова. Первым ограничением станет то, что не смогу оплатить коммуналку, потому что лучше Сбербанка ее никто не принимает. Поднес штрих-код, ввел показания, готово. Тиньков работает только с МосГорСветом. Так что мимо. Коммуналка – это значительная статья расходов, особенно зимой. Вычитаю из общей суммы 7000 рублей.

    Кружки и секции. Детский тренер по борьбе принимает только налом. У него с тысячи сдачи нет, какие карточки. Аналогично в бассейне (взрослый и детский абонементы). То же на гимнастике у жены. Вычитаю еще 5 тысяч.

    Летом на улице нас преследуют мелкие, но частые траты. Мороженое, напитки. Аттракционы в парке, сладости, мелочи для детей. Только нал. Вычту еще 5 тысяч.

    Отниму пару тысяч на случайные траты на себя.

    Короче, вот список того, что я могу оплачивать картой – продукты, аптека, бензин. Машины нет, так что остаются первые два на общую сумму около 30.000 рублей.

    Максимальный процент возврата у Тинькова – 2 процента. Посчитаем оптимальный сценарий, когда все покупки попадают под максимальный процент. 2 процента с 30.000 будет 600 рублей. Умножим на 12, получим 7200 в год.

    С ума сойти. Семь тысяч рублей в год. Сто долларов. Что мне делать с этим наваром?

    Ладно, предположим, что все же есть способы пользоваться кредиткой чаще, просто я о них не знаю. Пусть на семью уходит 60 тыс., а с кредитки оплачиваю 50 тыс. Тогда 2 процента за год составит 12 тысяч.

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

    Какой интерес банку что-то выплачивать, ведь это прямые убытки? Ответ в том, что убытки компенсируются забывчивостью и недальновидной природой потребителя.

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

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

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

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

    Скажем, кредит карты 90 тысяч, а зарплата бедолаги 40 тысяч. Как он будет себя ограничивать? Планировать траты и выплаты? Не смешите. Чтобы контроллировать себя, нужен очень серьезный потенциал. Учет, мотивация и планирование. Будет ли человек с такими навыками брать кредит? Нет – он просто увидит, что роет себе яму. Поэтому кредит и здравомыслие лежат в разных плоскостях.

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

    Суммируя:

    1. Вознаграждение за пользование кредитной картой не так велико, как кажется на первый взгляд. Учтите, что не везде вы платите картой.
    2. Начисление процентов на непогашенную задолженность компенсирует вознаграждение.
    3. Чтобы не задолжать банку, требуются самоконтроль. Будет правильней копить самостоятельно.
    4. Вы получите большее удовольствие от распоряжения личными средствами, чем чужими. Деньги будут потрачены мудрее.
  • Тунис

    Напишу основные сведения о Тунисе, где сейчас нахожусь в отпуске.

    Тунис – жаркая страна на континенте Африки. Расположена к югу от Италии, имеет выход к Средиземному морю. Климат жаркий, днем 30-35 градусов, вода теплая, легкий ветер. Почти вся территория – пустыня.

    Тунис – бывшая французкая колония. В стране два официальных языка – арабский и французский. В быту все говорят по-французски. Арабский диалект настолько заполнен французскими словами, что без знания французского ничего не поймешь. Официальные сообщения пишут арабской вязью.

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

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

    Пейзаж между отелями куцый, но мне нравится. Руины, купола. Веет пустыней и дикой Африкой. Верблюды!

    Официальная валюта Туниса – динар, равный 2.1 доллара США. Доллары тут тоже любят. Везде можно расплатиться обеими валютами. Если платишь динарами, ценник в долларах просто умножают на два.

    Динар делится на 1000 милимов. Зачем так много? Хватило бы и 100 единиц. Очень понравились монеты. Большие, увесистые как медали. Интересно, что ориентация орла и решки не совпадают. Поворачиваешь монету, а на той стороне криво.

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

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

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

    Сообщение РосВбросНадзора об угрозе террактов в Тунисе пока не подтвердились. На Джербе все устроено довольно неплохо. Это первый год, когда Тунис массово принимает туристов из России. Многие решения банально копируются с Турции, где русский сервис возделывался 10 лет. Мы были с сыном в Турции как раз в последее лето до ее закрытия, так что на каждом шаге чувствую турецкий опыт. Для первого года все очень даже на уровне.

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

    Вай-фай только на ресепшене.

    Впервые в жизни посетил Африку! Если что-то упустил, рад ответить в комментариях.

  • Глухота

    Ничто не раздражает так сильно, как глухота окружающих. Когда люди вокруг не замечают или, что хуже, производят шум и хлопают глазами – а че, я привык, мне нормально.

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

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

    На пляжах без перебоя играет громкая музыка. Зачем? Ни разу не слышал, чтобы кто-то сказал: фу, музыки нет, не пойду. Плейлист длительностью в час крутят по кругу. Почему никто не скажет – включите новое или сверните шарманку? Почему не делают пауз? Послушали час – перерыв полчаса. Это как воду пить без передышки.

    Тихие пляжи официально называются “Quiet area”. Звучит как нонсенс. Quiet должно быть стандартной опцией! Вместо “Quiet area” должны быть “Loud area”. Здесь стой на ушах, а в других местах уважай покой окружающих.

    Или кафе. Я не хожу в кафе, потому что музыка не дает общаться. Посетители садятся за столик и кричат друг другу в ухо. Идиотизм же. Помню, собрались втроем с одногруппниками в одном месте. Полчаса поговорили, и тут выходит ЖИВОЙ СУКА ВОКАЛ и начинает петь.

    Я к администратору – нельзя ли убрать это со сцены? Нет, ему уже заплатили. Хорошо, сколько нужно заплатить, чтобы все-таки убрать музыку. У нас, отвечают, такая услуга не предусмотрена. Из кафе мы ушли.

    Был коллега, который слушал Рогатых Трупоедов (так я называю различный Деш-Треш-Гот-Метал). Уйдет и наушники не выключит. Или зазвенит телефон с подобной мелодией, а он типа занятой и не может взять трубку.

    Помните, как квакала аська в нулевые? На каждую клавишу клац, на отправку – брыц, на ответ – о-о? И были же те, кто часами так общался. Сегодня все по-старому. У людей трещат уведомления, тренькают вайберы-телеграмы, пищат смс.

    У меня телефон почти всегда в беззвучном режиме, даже без вибрации. Уведомления – к черту. На пропущенные вызовы я отвечаю, когда освобожаюсь от дел. Очень редко это оказывается что-то важное.

  • Телеграм

    Ох уж этот Телеграм. Все чаще разыгрывается сцена:

    – Такую ссылку прислали в телеграме, ржака! добавь в друзья, скину

    – У меня нет телеграма.

    – А че так, у всех же есть?

    – Не хочу.

    – Почему?

    Это пост-ответ. Если коротко – все меседжеры говно и отстой. Использование любого – необходимое зло, которое нужно минимизировать.

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

    В хороших фирмах, например, Студии Лебедева или Мосигре меседжеры запрещены. Нужно спросить – пиши письмо или двигай булками в соседний кабинет. Совсем срочно – звони.

    Устанавливая новый месаджер, мы не удаляем старые. Я бы с радостью снес Скайп, но не могу, потому что кое-кто мне еще в него пишет. Зачем ставить еще что-то новое? Была проблема, стало две проблемы.

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

    Меседжеров развелось как грибов после дождя, потому что это модно и технически не сложно. Ни один из них не прошел должную выдежку временем лет в 10-15, как Линукс, Си, Лисп, Питон, Хаскел.

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

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

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

    Давайте на минуту представим, что только одна фирма в мире имеет право производить телевизоры и что-то транслировать. И еще одна фирма, чтобы делать телефоны и передавать голос по проводам. А третья фирма владеет патентом на супер-секретный протокол обмена почтой, и все почтовые сервера в мире – ее.

    Меседжеры так и работают. Ты можешь написать сообщение другу используя только наше тормозное ПО, только по нашему бинарному протоколу, только через наш дата-центр. Бред же.

    Отдельно про Телеграм, чтоб еще раз не вставать.

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

    Но.

    Это единый центр передачи сообщений. В случае сбоя вы не сможете ни с кем общаться. Я пишу это в то время, когда Слак не работает в России уже часа 3. А как Скайп на сутки ложился, помните?

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

    Телеграм зависит от операторов сотовой связи, потому что делает ставку на телефон. Опсосы без проблем сливают данные абонентов органам.

    Этот Дуровский пафос! Еще будучи в ВК, Павел любил рассказы о свободе слова и честных судах. А в это время аккаунты оппозиционеров ломали пачками с привлечением администраторов.

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

    Они, а не дирекция еще одной программы коротких сообщений.

  • Подтвеждение кук

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

    Интернет существует лет эдак 30, и все это время сервера спокойно отправляли куки. Поздно вы, ребята, спохватились! Уведомление об отправке кук выглядит так же дико, как уведомление о загрузке изображений.

    Понятие кук носит технический характер и не имеет отношения к потребителю. Зашел американец на новостной сайт почитать о выходках Трампа – а ему плашка на весь экран. Подтверди прием кук. Это же свинство. Куки совершенно не в мире потребителя.

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

    Если я нажму “не принимать”, то как удаленный сервер запомнит мой выбор? Правильно – положит мне куку со значеним “не принимать”. То есть нарушит обещание! Или запишет флаг в localStorage, что одно и то же.

    Несколько выводов из абзацев выше:

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

    В прошлый четверг я рассказывал аудитории Хекслета про Емакс. Представляю читателям блога скомпилированную версию выступления. Рассказ пересекается с прошлой заметкой о Емаксе.

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

    throne

    Кадр из фильма Трон: наследие. Хакер взламывает кого-то при помощи Емакса. Ему помогают запущенный тетрис и игра-головоломка о перестановке пирамиды.

    Содержание

    Историческая часть

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

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

    В Емаксе используется собственный диалект Лиспа, называемый Elisp (не путать с EMACS Lisp – это совсем другой диалект). Столлман отверг Common Lisp как излишне усложненный диалект, а Scheme – как недостаточно мощный. Так появилась своя реализация.

    Технически Elisp имеет серьезные ограничения – никакой многопоточности, нет хвостовой рекурсии, трудности с замыканиями. Производительность его очень невысока, примерно как Питон или Руби старых версий. Однако, даже при всех недостатках языка в нем можно творить потрясные вещи – редактировать код, управлять процессами, читать новости, RSS, играть в игры и так далее.

    Известная шутка о том, что емакс – это операционная система, в которой нет нормального редактора, косвенно права. Емакс можно рассматривать как рантайм программ, написанных на ELisp. Примерно как Хром – среда исполнения Джаваскрипта.

    Емакс обязан успехом исключительно Лиспу. Многие пакеты были написаны 10-20 лет назад, но по-прежнему разрабатываются, проходят рефакторинг.

    Подобно Лиспу, у Емакса есть форки и ответвления. Так, в девяностых годах обанкротилась компания Lucid, программисты которой использовали Емакс. Они взрастили внутри компании независимую версию редактора. Случилось так, что разработчики не договорились о правах и лицензиях. Так появился XEmacs – своего рода улучшенный Емакс. О форках я расскажу ниже.

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

    Отличие от Вима

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

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

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

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

    Субъективно, Емакс пребывает в более вменяемом состоянии, чем Вим. В сообществе последнего сильны настроения в духе “взять все и переписать”. В Емаксе такого нет. Существуют Емакс-пакеты, которые очень точно воспроизводят принципы работы Вима – режимы, комбинации, исполнение Вим-скриптов.

    Философия Емакса

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

    Это значит, Емакс одинаково хорошо обработает текст, который пришел из сети или от стороннего процесса. Поскольку в Юникс-среде основной способ передачи информации – текст, Емакс хорошо подходит для интеграции с системой. Само собой вышло так, что в Емаксе можно выполнять разные задачи, которые только косвенно связаны с текстом.

    Недостатки. Когда не следует использовать Емакс

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

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

    • Вы пишете на языке-платформе, неотделимой от ИДЕ. Например, C# или Java. Пытаться доработать любой другой редактор бессмысленно.

    • Порог входа выше, чем у стандартных редакторов.

    • Для комфортной работы редактор нужно настроить. Настройка может длиться годами. Главное – не увлекаться.

    Достоинства

    • Работает в разной степени со всеми известными языками и технологиями.

    • Очень гибкая система обработки текста

    • Мощная поддержка процессов. Простота интеграции с любым системным процессом или утилитой, например, git, docker, psql, grep, ls и т.д.

    • Конфигурирование всего и вся

    • Встроенный терминал, ssh-клиент, почтовик, браузер и масса других утилит

    • Золотые хиты детства – змейка, тетрис! M-x snake и M-x tetris

    • Единообразие. Каждый буфер, неважно, файл это или список процессов, подчиняется основным правилам навигации и поиска. Например, вы выполнили поиск в файле, открылся новый буфер с результатами. Теперь вы можете искать в буфере результатов, словно в файле! В любом буфере, неважно, файл это или что-то другое, можно настроить правила подсветки строк. Везде одинаковая навигация, копирование и вставка. Это дико удобно. Напротив, в стандартных ИДЕ каждое окно живет по своим особым правилам.

    Как я переходил на Емакс. Трудности, мотивация

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

    emacs

    Мой Емакс сегодня. По клику большая версия. Слева – дерево файлов, посередине – эта статья в процессе подготовки, справа – код на Схеме.

    Давно я использовал Пайчарм, поскольку основной мой язык – Питон. Затем переключился на Саблайм. Довольно быстро раскачал его плагинами и работал на равных с теми, кто остался в ИДЕ.

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

    В случае с Саблаймом выяснилось, что для комфортной работы достаточно 5-6 модулей для нескольких языков, интеграции с SVN и Git. Саблайм я до сих пор считаю программой высочайшего уровня и рекомендую как легкую замену ИДЕ.

    Но вот что беспокоило – все авторитетные для меня инженеры работали либо в Виме, либо в Емаксе. Причем вообще без вариантов (чаще – в Емаксе, но не суть). Это легко выяснить из интервью, статей, или просто посмотреть dotfiles на Гитхабе. Так, Емаксом пользуются Гвидо ван Россум (создатель Питона), Джо Армстронг (Эрланга) , Линус Торвальдс (линукса и Гита), Тед Дзюба (предприниматель из Долины). Армин Ронахер, чей вклад в Питон неоценим, используем Вим.

    Полагаю, у названных людей есть деньги чтобы купить лицензии на нужные ИДЕ, но они этого не делают. Линус как-то сказал, что готов купить любую ИДЕ, но его пальцы уже нельзя переучить после 20 лет Емакса. Гвидо положительно отзывался о Пайчарме, но добавил, что опять пришел к связке Емакс + pdb (самый базовый отладчик).

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

    Во-вторых, ИДЕ – это прежде всего бизнес. Адепты Джет-Брейнс расскажут, что без ИДЕ код пишется плохо, нарушаются бизнес-процессы и страдает бизнес. Их позиция ясна.

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

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

    Я решил переходить на Вим или Емакс, чтобы повысить уровень.

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

    Напротив, с Емаксом пошло проще. Возможно, благодаря cua-mode. Это такой режим для новичков, когда основные команды вроде копирования и вставки работают как в классический редакторах. Долгое время я, за годы привыкший к Ctrl-X/C/V, использовал эти же комбинации. Потом перешел на общепринятые в Емаксе.

    Установка

    • Для Мака. Либо скачать графическую версию, либо поставить консольную версию из brew, предварительно обновив формулы.

    • Для линукса. Из пакетов: apt-get, yum.

    • Для Винды. Скачать бинарники. На винде осложнения в том, что Емакс нуждается в стандартных Юникс-утилитах ps, grep, find. Понадобится какой-нибудь Cygwin или аналог.

    Пакет для интеграции с Гитом под названием magit требует Емакс не ниже 24.4. Это не очень хорошо, так как в старых Убунтах в пакетах указан 24.3. Приходится заморачиваться со сторонними репозиториями. Для начинающих это неважно.

    Основные положения

    Главная смысловая единица в Емаксе – буфер. Это место, где какой-то текст. Буфер может быть связан с файлом. Буфер произошел от принципа работы с данными на лентах. Писать каждое изменения на ленту – страшно медленно. Поэтому считывали данные в память, обрабатывали и записывали поверх.

    Буфер может и не быть связан с файлом. Например, это список процессов, результат поиска в текущем буфере, греп по директории, список файлов, JSON из какого-то урла, интерактивная справка и так далее.

    В момент старта Емакса появляются три стандартных буфера. Это приветствие со ссылками на документацию. Потом буфер сообщений, своего рода лог. И буфер scratch для копипасты.

    Этот последний буфер особый – в нем можно выполнить любой код на Лиспе и сразу проверить, какой эффект имеет этот код.

    В Емаксе используют особые сокращения для клавиш. C (командная клавиша) означает Контрол, M (мета-клавиша) означает Альт. Дефис означает одновременное нажатие. Важно помнить, что 40 лет назад клавиатуры были другие, и клавиша Command располагалась рядом с пробелом, как сегодня на Маке. Так что Столлман не виноват!

    keyboard

    Клавиатура тех дней. Обратите внимание на расположение служебных клавиш.

    Примеры:

    • C-x b – нажать вместе Контрол и x, потом b – сменить буфер.
    • C-x C-f – нажать одновременно Контрол и x, потом одновременно Контрол и f – открыть файл.
    • M-g g – нажать вместе Альт и g, потом еще раз g – переход на нужную строку текущего буфера (система спросит номер).

    Нажатие C-g прерывает ввод текущей команды.

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

    Не нужно стараться запомнить все сразу, это придет постепенно.

    Чтобы эффективно работать в Емаксе, желательно освоить две вещи, о которых упоминал Кирилл в вебинаре по Виму. Первое – перенести клавишу Контрол на Капс. Это необходимо и вообще не обсуждается. Если нажимать ее в стандартном положении, рука отвалится из-за сильного напряжения в кисти.

    Как сделать это в Маке, я уже писал раньше.

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

    chart

    Один из графиков моего профиля. Он показывает, что скорость набора медленно, но растет.

    В Емаксе нет табов для открытых файлов. Это шокирует тех, кто только начал с ним работать. Дело в том, что табы не нужны. Когда вы долго работаете, сами по себе накапливаются открытые буферы (как мы уже знаем, в Емаксе это не только файлы). Я никогда не выключаю ноут, а только погружаю в сон. К концу второго месяца в Емаксе примерно 400 буферов. Представьте, что для каждого был бы таб. Я бы просто ничего не видел из-за них.

    Кстати, любителям ИДЕ посвящается – откройте 400 файлов и проверьте, как поведет себя система. У моего коллеги ноут грелся так, что обжигало руку. А Емакс потребляет 100 Мб памяти и 10% процессора.

    Удивительно, но основные комбинации для перемещения по тексту работают много где за пределами Емакса – например, в Хроме, почтовом агенте Мака. В Баше по умолчанию включена раскладка Емакса.

    Конфигурирование

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

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

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

    При старте Емакс ищет файл ~/.emacs . Затем – ~/.emacs.d/init.el. .el – расширение файлов на Elisp. Обратите внимание, что первый файл не содержит расширения в имени.

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

    Вот как ставится моя конфигурация:

    # Скачать репозиторий куда-то себе
    git clone https://github.com/igrishaev/dotfiles.git ~/somewhere
    
    # скопировать папку .emacs.d в домашнюю директорию
    cp -r ~/somewhere/.emacs.d ~/
    
    # перейти внутрь
    cd ~/.emacs.d
    
    # поставить утилиту Cask
    make install-cask
    
    # установить пакеты, перечисленные в cask-файле.
    # переменную EMACS нужно задать, если у вас в системе несколько емаксов
    EMACS=/path/to/bin/emacs make install-packages
    

    Я терпеть не могу длинных навороченных конфигураций со многими файлами. При малейших обновлениях они ломаются. Конфигурация должна быть максимально декларативной. Только список необходимых пакетов и установка переменных.

    Коротко о пакетах

    Для емакса написаны тысячи пакетов, некоторые из которых тянут на полноценные приложения, исполняемые внутри Лисп-машины.

    Пакеты хостятся в репозиториях, у которых следующие имена – GNU, Melpa, Marmelade. Как правило, в конфиге указывают их все. Стандартный менеджер пакетов из поставки Емакса может устанавливать из репозиториев, но не умеет разруливать зависимости. Поэтому используют либо пакет el-get, либо утилиту Cask, как в моем случае. Это утилита на Питоне для сопровождения проектов на ELisp. В ней много всего, в том числе установка зависимостей. Она переопределяет стандартный менеджер пакетов. Вы пользуетесь как будто стандартным.

    Основные пакеты для Емакса без привязки к конкретным языкам:

    • magit – Интеграция с Гитом
    • nav – Панель файловой навигации
    • auto-complete – Автодополнение из разных источников
    • flycheck – проверка синтаксиса для разных языков. Обычно нужен сабмодуль для конкретного языка
    • markdown-mode – Маркдаун
    • nyan-mode – Нян-кот в твоем Емаксе!
    • simpleclip – Облегчает работу с системным буфером обмена
    • json-mode – Подсветка и валидация джейсона

    Сборки, форки

    Я не особо осведомлен насчет сторонних сборок Емакса. Почти все время я работал со своей конфигурацией на чистом Емаксе, чтобы понять, как все работает.

    Как уже упоминал выше, существует XEmacs – альтернативная ветка Емакса. В ней больше внимания уделено интерфейсу, шрифтам и внешнему виду в целом. Большинство крупных пакетов разрабатывают так, чтобы они работали в XEmacs тоже.

    Проект Эрго-Емакс ставит цель создать оптимальную клавиатурную раскладку, где наиболее востребованные функции размещены в нужных местах. Авторы полагают, раскладка повысит производительность и снизит усталость рук. На этом же сайте тусит сообщество, есть сборник рецептов, снипетов и все такое.

    Наконец, существует Spacemacs – попытка взять лучшее из двух миров. Соединить механику Вима с мощью платформы Емакса. Простыми словами, это громадный конфиг с пакетами для имитации Вима.

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

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

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

    Для чего я использую Емакс

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

    Надо понимать, что некоторые пакеты имеют скорее не практический, а спортивный интерес. Например, один тип написал модуль управления кофеваркой по USB. Это забавно, но не стоит воспринимать всерьез.

    xkcd

    В Емаксе на все найдется команда.

    Я использую Емакс для следующего:

    • Программирую в Емаксе на Питоне, Кложе, Джаваскрипте, Ракете, Коммон-Лиспе. В нем же ковыряю Хаскелл и Гоу. Под каждый язык – пакет или два для поддержки. Питон, надо сказать, поддерживается очень хорошо. Трудность скорее в том, какие пакеты для него выбрать из множества. Для Лиспов емакс – родная среда.

    • Редактирую структурированные файлы: Маркдаун, Json, Yaml, ini, html, css. Где не хватает коробочных средств, тоже ставлю пакеты.

    • Работаю с системами контроля версий, почти не вылезая в терминал. Смотрю диффы, блейм, логи. Делаю и мерджу ветки в Емаксе.

    • Изредка читаю онлайн-документацию во встроенном браузере EWW. Это полезно, когда не хочешь постоянно переключаться из браузера в редактор. Делишь экран пополам, в слева страничка с доками,справа код – удобно. Емакс умеет проматывать соседний буфер, не переключаясь из основного.

    • Планирую делать резолв конфликтов при мердже веток встроенным пакетом emerge. Пока что использую kdiff3.

    • Некоторое время, когда в команде пользовались джаббером, сидел из Емакса. Тоже удобно, особенно когда обсуждаешь код.

    • Пытался пользоваться почтой с помощью встроенного пакета Gnus – не пошло в силу однопоточности Лисп-машины. На проверку почты уходит до 10 секунд (у меня куча папок), за это время ничего нельзя сделать.

    • Запускаю и контролирую процессы с помощью пакета prodigy. Был проект на микросервисной архитектуре. Чтобы завести его, нужны были штук 6 фейковых рест-сервисов. Эти заглушки было удобно поднимать и гасить прямо в Емаксе.

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

    • Иногда делаю презентации в емаксе: пишу структурированный файл в разметке ORG, который экспортируется в HTML + reveal.js. Например, вот слайды для доклада о юнит-тестах: исходник, результат.

    • Рисую ascii-таблицы в org-mode. Параметры таблицы задаются командой. Таблица ведет себя как лист в Экселе – можно перемещаться по ячейкам, добавлять и удалять строки и столбцы, сортировать, вставлять формулы. Таблица автоматом растягивается под данные в ячейках. И при этом копируется как текст. Очень удобно для документации. Руками вы ее будете рисовать час.

    Пример по шагам:

    • M-x org-table-create – система спрашивает размер таблицы, ввожу число строк и колонок, получаю
    |   |   |   |   |   |
    |---+---+---+---+---|
    |   |   |   |   |   |
    
    • Ввожу данные:
    |Python   |Ruby   |Perl   |Java   |Common Lisp   |
    |---+---+---+---+---|
    |1   |2   |  3 | 4  |5   |
    
    • Нужен еще ряд? Набираю M-x org-table-insert-row:
    |Python   |Ruby   |Perl   |Java   |Common Lisp   |
    |---+---+---+---+---|
    |1   |2   |  3 | 4  |5   |
    |  Some long test  | 42   | foo   | bar     |    Another long text|
    
    • Все съехало, некрасиво. Набираю M-x org-table-align:
    | Python         | Ruby | Perl | Java | Common Lisp       |
    |----------------+------+------+------+-------------------|
    | 1              |    2 | 3    | 4    | 5                 |
    | Some long test |   42 | foo  | bar  | Another long text |
    

    Тадам. И это даже не верхушка айсберга, а самая мелочь из того, что можно делать в org-mode.

    • Возвращаюсь к нашему списку. Веду GDT – учет личных и рабочих дел. Давно хочу написать на эту тему в блог, но пока что отдельным абзацем.

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

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

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

    Перенес все задачи в такой файл и храню его в приватном репозитории. Каждое утро смотрю, какие задачи меня ждут и стараюсь их выполнять. Задачи можно архивировать. Емакс вырезает их из файла и переносит в архивный файл с похожим названием.

    Не могу расшарить свой файл, поскольку в нем немало приватных данных, но примерно это выглядит так:

    ** DONE Sign Contract
    CLOSED: [2016-03-30 Wed 12:36] SCHEDULED: <2016-03-30 Wed>
    - CLOSING NOTE [2016-03-30 Wed 12:36] \\
      signed
    ** TODO Get Reports
    DEADLINE: <2016-06-20 Mon +3m>
    - CLOSING NOTE [2016-03-28 Mon 10:52] \\
      got and paid
    :PROPERTIES:
    :LAST_REPEAT: [2016-03-28 Mon 10:52]
    :END:
    ** DONE IP USN
    CLOSED: [2016-04-25 Mon 10:00] DEADLINE: <2016-04-18 Mon>
    - CLOSING NOTE [2016-04-25 Mon 10:00] \\
      done
    ** TODO Visit some secret place
    DEADLINE: <2016-03-31 Thu>
    ** DONE Sber get new card
    CLOSED: [2016-04-06 Wed 15:42] SCHEDULED: <2016-04-04 Mon>
    - CLOSING NOTE [2016-04-06 Wed 15:42] \\
      got it!
    ** DONE Add bank account to Paypal
    CLOSED: [2016-03-25 Fri 15:39] SCHEDULED: <2016-03-24 Thu>
    - CLOSING NOTE [2016-03-25 Fri 15:39] \\
      added
    ** TODO Sber Deposit
    SCHEDULED: <2017-02-06 Mon>
    ** DONE Phone to Office
    SCHEDULED: <2016-03-01 Tue>
    - CLOSING NOTE [2016-03-01 Tue 15:02] \\
      phoned
    - CLOSING NOTE [2016-02-24 Wed 22:52] \\
      phoned
    

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

    На временной линии задачи выглядят так:

    Friday     10 June 2016
    Saturday   11 June 2016
      Scheduled:  TODO Practice Typing                                    :learning:
      Scheduled:  TODO Listen english                                     :learning:
      Scheduled:  TODO Do some secret stuff
      Scheduled:  TODO Pay for one thing
    Sunday     12 June 2016
    Monday     13 June 2016 W24
    Tuesday    14 June 2016
      Scheduled:  TODO Another important task
      Scheduled:  TODO Listen english                                     :learning:
      Deadline:   TODO Publish announce
    

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

    Ресурсы

  • Сегодня рассказываю про Емакс

    Сегодня, в четверг 9 июня, в 17:00 по Москве я расскажу про Емакс в Слак-канале образовательного проекта Хекслет.

    Затрону следующие темы:

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

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

    Заходите, будет интересно.

  • Доклады с шестой встречи глубокого рефакторинга

    Провели шестую встречу!

    meetup

    Юра Хрусталев рассказал, как мы в проекте внедряли Ансибл:

    Слайды

    Миша Вьюков дал советы как продвигать продукты и сообщества в социальных сетях.

    Слайды

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

Страница 33 из 53