до недавнего времени моим любимым шеллом был zsh с крутыми настройками дополнения. Однако уже несколько месяцев я использую ещё более прекрасный шелл fish. Больше всего мне в нём нравится полноценное автодополнение, потому что я им пользуюсь почти в каждой команде, но и прочие функции там прекрасны. Всё в нём как-то человечнее по сравнению с другими шеллами. Но лучше всего про это узнавать не в моём посте, а на основном сайте fish, или во введении в использование
недавно наша команда выбирала для себя новый шаблонизатор. К сожалению, ретрограды не дали нам использовать Jade. Остальные подходящие шаблонизаторы разделились на две группы по используемому синтаксису: mustache и jinja2
напомню, чем плох этот оператор. Допустим, у нас есть функция, суммирующая некоторое число с одним из значений объекта, переданного в качестве параметра:
function sum(foo) {
var baz = 10;
return baz + foo.bar;
}
это можно переписать в следующем виде:
function sum(foo) {
var baz = 10;
with (foo) {
return baz + bar;
}
}
всё будет неплохо работать до тех пор, пока где-то в совершенно другом месте приложения мы не решим, что объекту foo нужно содержать и значение baz. В результате sum будет прибавлять к bar не 10, а foo.baz
и это — врождённая проблема mustache. Пара из поддерживающих этот синтакс шаблонизаторов добавляют в него возможность обойти эту проблему, но ведь базовый синтакс подталкивает к этой ловушке:
{{#people}}
Hello, {{title}} {{name}}
{{/people}}
как думаете, здесь title это заголовок страницы или титул человека?
из любопытства настроил для своего почтового сервера антиспам-подписи. Собственно, DMARC и SPF «настраиваются» добавлением записей в DNS о том, какие серверы могут посылать почту от имени этого домена, и как реагировать на нарушение этих правил:
DKIM у меня работал уже довольно давно, но с ним несколько сложнее: приходится возиться с почтовым сервером и цифровыми подписями
и вот только недавно я заметил пару небольших проблем с этим. Одна была в том, что почтовый сервер просто пересылал гмейлу служебные письма домашнего компьютера, не подписывая их. Тут я просто отключил пересылку, потому что архивировать их мне не нужно
а вот другая проблема была смешнее. Видите ли, LinkedIn любит посылать свои письма от вашего имени и емейла. Естественно, сервер и подпись там совсем другие. Логично, что проверки соответствия они проваливают. Я не знаю, как отучить его от этого, поэтому приходится проявлять гибкость на своей стороне. Пока что добавил его в список разрешённых отправителей в SPF:
@ SPF "v=spf1 a mx ?include:linkedin.com -all"
а вот что делать с DKIM, не очень ясно, скорее всего придётся разбираться дальше. Или может кто из читателей подскажет?
наивное представление, что код программы пишется только для компилятора, уже давно в прошлом. Теперь большинство понимает, что код пишется ещё и для того программиста, который будет потом его поддерживать. Но есть и ещё один человек, про которого нужно помнить: тестировщик. Да, у человека, который будет покрывать этот код юнит-тестами, есть свои требования к тому, как он должен быть написан
гибкий язык типа javascript позволяет создавать очень изолированные от внешнего мира программы, и в нём даже нет Reflection, чтобы научить их уму-разуму. Очень много нашего кода написано в такой манере, и писать под них тесты — сплошное неудовольствие. Однако если помнить о требовании «код должно быть легко тестировать», то сравнительно нудный процесс создания тестов становится намного менее пугающим
в общем, код нужно писать для компилятора, программиста и тестировщика
мне напомнили, что со второго полугодия Нокия снова готова нанимать веб-разработчиков. Вакансий столько, что кадровики не успевают справляться с обязанностями
в свою очередь, хочу напомнить читателям, что переехать работать в отличный город Берлин всей семьёй на всё готовое просто: собеседование по телефону, собеседование в Берлине (билеты/гостиница оплачиваются), подача документов в посольство, два-три месяца ожидания, оплаченные переезд и перевоз вещей
если чувствуете ко мне благодарность, отправьте резюме в Нокию через меня, мне тогда дадут бонус ; )