Retina kills bitmap fonts

Как ни странно, но выбирая между Macbook Air и Macbook’ом с Retina, определённую группу шрифтов вы больше не увидите так, как прежде — на не-ретиновых дисплеях. Это, например, Monaco, Terminus и вообще всё, что содержит в своём составе отдельные начертания для определённых размеров, в режиме, когда Antialiasing (AA) отключен. Если выключить AA на Retina, то эти шрифты вы уже не узнаете — будет мелко, и уродливо. Ну а если включить, по-определению, это уже будет другое начертание.

Выигрышные комбинации vim

В тексте, который вы vim-редактируете, так удачно совпало, что присутствует имя файла, который вы бы хотели посмотреть и/или отредактировать(?) — такое может быть, например, при правке какого-нибудь конфига. Наверное, вы уже знаете, что достаточно скомандовать gf — и вот вы уже на том файле, имя которого было под курсором. Несомненно это удобно. Но иногда гораздо удобнее, чтобы этот файл был «открыт» в другом «табе». Раньше я делал это через :tab split — чтобы создать копию таба, затем в ней уже  — gf. Но гораздо удобнее вот так:

Control_W gf

Не так давно шла речь про безопасность WordPress

И вот в подтверждение тезиса о том, что WordPress должен быть ограничен в возможности записи в свои собственные файлы-каталоги, новость о том, что “Популярный плагин для WordPress содержит в себе бэкдор“. Вообще говоря, понятно, что совсем лишать WP такой возможности, значит сделать его крайне неудобным — запись в wp-content/, как говорится, “must have”. Но остальные части вполне могут, и должны быть закрыты. Кроме того, несложными настройками WEB-сервера, будь-то Nginx, или Apache, можно ограничить выполнение PHP-запросов, в частности, запретить их в том самом wp-content.

Грабли с nginx proxy_pass upstream

Как известно (ну, например, из документации), по-умолчанию proxy_pass использует следующую настройку для заголовка Host:

proxy_set_header Host $proxy_host;

— и это довольно логично.

Как известно (уже теперь — из личного опыта), если вместо конкретного hostname в proxy_pass будет указана группа серверов (модуль upstream), то заголовок Host они не получат. Workaround? — Ну ручками, ручками. Либо шаблонами-шаблонами. 😉

мета-пост по блогу

Во-1-х, должны быть кросспосты. Во-2-х, должны работать комменты, причём, нужно поддерживать авторайзы из FB и прочего. 3 — sitemap

Swap? OMG!

Опечаточка-по-Фрейду: dd if=/dev/zero of=swap.omg bs=1M count=512

Macbook, иль ноутбук — вот вопрос

Ответить на него можно методом дихотомии: Macbook — это software и hardware. Нельзя, конечно, сказать, что они “несвязанные между собой”, поскольку, например, вы не найдёте на клавиатуре Macbook клавиши Page Up/Down, но будете переключаться между вкладками, нажимая Cmd-Shift-[/]. Поэтому предложения поставить на Macbook Linux, я лично, считаю приглашением на извращения, — PC-клавиатурку воткнёте — ок, я подумаю. — Нет, в USB втыкать не нужно — это лэптоп, это акцент на мобильность (а с ней, забегая вперёд, можно сказать, что всё просто прекрасно).

Так что первый итог: Macbook — это Mac OS X. Она не идеальна, особенно с точки зрения удобства использования, что бы там не утверждали “макоёбы”, но у неё один из привлекательнейших интерфейсов. Наверное, даже, самый привлекательный из нынедоступных. Будучи, при том, UNIX-like UNIX®: с BSD, dtrace, homebrew и, тем же pf-фаерволом из OpenBSD (пусть далеко не самой свежей и функциональной версии).

Теперь посмотрим на железо… и поднимем вверх большой палец:

  1. отличная батарейка
  2. отличный корпус (вес, жёсткость)
  3. отличный экран. Не, стоп, — экран, безусловно, отличный, — это если Retina™. На Macbook Air он просто неплохой. Зато батарейка там — это практически пол-дня работы. Можно, конечно, вздыхать, что Retina не воткнули в Macbook Air, но если вздох получается слишком громким, видимо вы уже в курсе, что сравнимый Macbook Pro будет не сильно толще, не сильно тяжелее, хотя, конечно, заметно батарейко-прожорливее.
  4. отличный тачпад.

Если посмотреть на железо конкурентов Apple, то, увы, конкуренцию будет обнаружить сложно. Какой-нибудь ASUS, например, пытается скопировать Macbook Air, но лажает по клавиатуре (Page Up/Down через Fn для меня уже show stoppper — я не люблю отрываться от клавиатуры на мышь, чтобы переключить вкладки браузера, или терминала). Что ещё? Lenovo? В пр-цпе, да, мне нравится Lenovo Thinkpad. Но я давно задаюсь вопросом, а какой идиот засунул клавишу PrtSc между правыми Alt и Ctrl? Да и вышеприведённый список “отличности железа”, увы, резко теряет кол-во пунктов. До одного, практически, в лучшем случае.

Стандартные настройки WordPress не очень-то безопасны

— объясню почему:

авторы WordPress не ищут простых путей, и, вместо того, чтобы убедиться, что WP сможет записать файлы в каталог wp-content/plugins (например), тщательно сверяют владельцев исполняемых .php-файлов с владельцами файлов, временно создаваемых самим WP. При несовпадении владельцев, установка плагинов и пр., будет предлагаться с использованием FTP. Применение FTP, в 21-м веке, это отдельная тема для facepalm’ов, но если вкратце — не надо. Тем более, что WP можно настроить на режим «просто пробуй записать и всё», определив константу FS_METHOD как 'direct' в wp-config.php:

define('FS_METHOD', 'direct');

Это не какое-то тайное знание, но явно не очень распространённое, и поскольку процедура установки без FTP гораздо удобнее (да и на некоторых хостингах FTP уже вовсе нет), то интернет-блоги/форумы пестрят многочисленными рекомендациями поменять владельца всех файлов WordPress на того пользователя операционной системы, под которым работает Web-сервер — обычно это может быть www-data, nginx, nobody, а то и, к пущей радости copy-paste’ров, некий пользователь, которого хостер-провайдер создал для этого конкретного сайта. По-сути, это — рекомендации облегчить взлом, — если веб-сервер выполнит какой-то код атакующего, то он сможет переписать любой файл самого WordPress’а — ибо владелец (как правило) свои файлы переписывать может. Если же пользователи владельца файлов и процесса Web-сервера разные, и права доступа разрешают Web-серверу только чтение, то развитие такая атака не получит. Вообще, защита WordPress это отдельная тема, на которую тоже можно будет дополнительно поговорить позднее.

Никогда не пользовался NETMAP

— про который в man’е сказано:

This target allows you to statically map a whole network of addresses onto another network of addresses.  It can only be used from rules in the nat table.

на самом деле даже интересно стало — а есть ли какое-нибудь отличие от того же DNAT, в случае, если мэпится один-в-один адрес(?)

OpenBSD-фаервол PF для Mac OS X заплесневел

— по кр. мере, в его текущем состоянии (Yosemite, El Capitan).

Будучи пользователем Mac OS X (“not only, but also”) довольно долгое время, я, конечно, в курсе попыток разработчиков Apple укомплектовать OS X пакетным фильтром — firewall’ом. Они сделали подход к FreeBSD’шному ipfw, но довольно быстро отказались от него, хотя, его останки всё ещё в системе (даже в El Capitan), как можно видеть, набрав в терминале

sysctl net.inet.ip.fw

Теперь, вместо него, они пытаются использовать PF, у которого и без того достаточно непростой путь развития, лучше всего описываемый термином “форк”. PF для FreeBSD и для OpenBSD — это вполне себе “форки”. Во FreeBSD 10.2 используется PF из OpenBSD 4.5. Причём, они весьма заметно разошлись. Если меня спросят, какой из вариантов я предпочёл бы, то, скорее, OpeBSD’шный, но, вообще, не могу не отметить, что он стал более сложным, чем кто-либо мог это ждать в самом начале. Синтаксис правил для NAT/routing, к примеру, очень разнится.

Так вот, возвращаясь к Mac OS X. Я не знаю номер версии OpenBSD, которую они выбрали как основу, но я могу вас заверить, что и в Yosemite, и в El Capitan она слишком устаревшая, поломанная и покрытая плесенью. Вы должны понимать, что эта версия PF содержит баги, которые в первоисточнике были устранены давным-давно, и в ней отсутствуют некоторые давно уже не новые возможности. Например:

  • Не работает  TCP modulate state, можете даже не терять время:
     % cat -n pf-modulate.conf 
         1    pass all
         2    pass out on lo0 proto tcp from any to any port 22 modulate state
     % sudo pfctl -ef pf-modulate.conf
    ...
     % nc -w 1 127.0.0.1 22        
     % nc -w 1 127.0.0.1 22
     % 
     % head -n1 pf-modulate.conf | sudo pfctl -f -
    ...
     % sudo pfctl -s r 2>/dev/null
    pass all flags S/SA keep state
     % nc -w 1 127.0.0.1 22                       
    SSH-2.0-OpenSSH_6.9
     % nc -w 1 127.0.0.1 22
    SSH-2.0-OpenSSH_6.9
     % 
    
  • Странно работает логирование пакетов. Я бы сказал, что иногда происходит залипание опции, так что не получается отключить логирование для некоторых правил, но на тек. момент у меня нет готовых примеров.
  • Совместная комбинация route-to и nat не даст вам желаемого результата. Хотя она работает той же FreeBSD 10.2 (да и возможно 10.1), правда, там есть один нюанс. 😉 Ну и, понятное дело, в свежих релизах OpenBSD с этим вообще никаких проблем, правда синтаксис там отличается кардинально.
  • (self) и всё тому подобное в скобочках — мануал утверждает, что “

    Surrounding the interface name (and optional modifiers) in parentheses changes this behaviour.

    ”, но в действительности это не работает. Если настройки интерфейсов изменились, вам придётся перезагрузить  pfctl -f набор правил.

 

UPD.(2016-08): Да, так и есть — pf в Mac OS X базируется на версии из OpenBSD 2008-о года.

InEnglish