Сделайте мне УТФ8! — set utf-8 as default for mysql

По дефолту в debian-подобных системах (да и почти во всех пакетизированных) настройки пакета заданы жёстко и скомпилированы с default-настройками, которые оставлены для совместимости.

Именно из этих побуждений, mysql  Ver 14.14 Distrib 5.1.58, for debian-linux-gnu считает, что я должен использовать latin1-swedish, а не современный utf8.

Отучаем: в my.cnf (в случае debian — лучше /etc/mysql/conf.d/utf8ize.me) в самый конец файла пишем следующие магические строки:
  1. [client]
  2. default-character-set=utf8
  3.  
  4. [mysql]
  5. default-character-set=utf8
  6.  
  7.  
  8. [mysqld]
  9. default-character-set = utf8
  10. collation-server = utf8_unicode_ci
  11. init-connect='SET NAMES utf8'
  12. character-set-server = utf8

Идея для расширения браузера: умный кейлоггер

Представьте следующую ситуацию: некто получил доступ к вашему компьютеру на пару минут и установил расширение Google Chrome, которое не имеет виджетов и видимых окон, а висит в background worker'e, вешая собственное событие на $('form').submit().
В событии этом воркер собирает пары label + input, упаковывает и делает XHR-запрос на некий сервер, который складирует полученную информацию.

Подлить масла в огонь? Данный воркер можно добавить в любое расширение, вне зависимости от его функций и виджетов. Да и заподозрить его весьма трудно — часто ли вы смотрите список своих расширений?

P.S. Если не забуду — напишу подобное для Chrome.

Scrollbar как на новом дизайне Google

Google не так давно начал глобально перерисовывать и вылизывать свой интерфейс — пост не о том, красиво получилось или нет :)
Если вы пользуетесь Chrome/Chromium, то могли заметить, что гугл на некоторых своих страницах использует кастом-скроллбары:


Вот тот заветный код, который позволяет этого добиться:
  1. ::-webkit-scrollbar{width:15px;height:15px}
  2. ::-webkit-scrollbar-button:vertical{background-color:clear;height:5px}
  3. ::-webkit-scrollbar-button:start:decrement,
  4. ::-webkit-scrollbar-button:end:increment{display:block}
  5. ::-webkit-scrollbar-button:vertical:start:increment,
  6. ::-webkit-scrollbar-button:vertical:end:decrement{display:none}
  7. ::-webkit-scrollbar-track-piece{background-color:white}
  8. ::-webkit-scrollbar-thumb:vertical{height:50px;background-color:rgba(0,0,0,0.2);border-right:5px solid white;border-left:5px solid white}
  9. ::-webkit-scrollbar-thumb:vertical:hover{background-color:rgba(0,0,0,0.4)}
  10. ::-webkit-scrollbar-corner:vertical{background-color:white}
  11. ::-webkit-scrollbar-resizer:vertical{background-color:red}

Не нужны никакие картинки, никакие примочки. Лишь несколько строчек css.
Подробности о стайлинге скроллбара в Webkit-based браузерах.

База private и public доменов с freedns.afraid.org

Зачем-то напарсил.
База в MySQL, сохранены все исходные поля.

http://freedns.afraid.org — сервис бесплатного normal/dyn DNS.
Скачать базу доменов (registry).

phpmyadmin 3.4.4deb1 не работает (ошибка 500)

Сегодня на сервере debian/sid обновился phpmyadmin до 3.4.4.
И, каким-то странным образом перестал работать.

Оказалось, что всему виной php5-xcache.
Решение проблемы:
  1. mv /etc/php5/conf.d/xcache.ini /etc/php5/xcache.ini
  2. apache2ctl restart


Конечно же, придётся что-то придумать с акселератором php. Например, использовать apc или eaccelerator.

TP-Link TL-WR1043ND — отличный роутер

Недавно сгорел мой давний друг, D-Link DIR-320 и нужно было найти замену.
Среди всего ассортимента маркетинговых провокаций и ненужных бирюлек, я тщательно выбирал роутер, который не только имеет красивый и впечатляющий product description, но и хорошо выполнять возложенные на него функции.

DIR-320 довольно хорош, учитывая что он — «железный» клон ASUS WL-500g, который восхваляют направо и налево.

Так вот, даже 320-й не всегда справлялся с нагрузкой: то подвиснет, то просто тупит…
В сменившем его TP-Link'e-же, процессор в 2 раза мощнее — целых 400 Mhz! Новые стандарты Wi-Fi (802.11n, 300 Mb/s, 3×3dBi всенаправленные антенны), все 5 портов гигабитные, есть USB, в который можно вставить жёсткий диск и раздать на всю сеть, контролируя доступ (поддерживается samba-шара, ftp и медиа-сервер; можно создавать пользователей и назначать им права).

Железка сейчас топовая в TP-Link, на неё активно делают прошивки: с момента покупки, установил уже 2-ю.
Для «экспериментаторов» тоже есть где разгуляться: ROM 8 МБ, RAM 32 МБ; поддерживаются OpenWRT, DD-WRT и другие.

В общем, не нарадуюсь. А учитывая, что стоял выбор между ним и Netgear'ом, вдвойне доволен, что решил довериться китайцам.

Транслитерация для генерации имени получателя Western Union

В последнем проекте понадобилась оплата товаров через Western Union. Для отправки платежа необходимо сообщить ФИО в транслите, страну и город получателя.
Вот как получить необходимое ФИО, в соответствии с таблицей транслитерации Western Union:
  1. function transliterateForWesternUnion( $str ) {
  2. $str = mb_strtoupper( $str, 'utf-8' );
  3. return str_replace(
  4. array('А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ы','Э','Ю','Я','Ь','Ъ'),
  5. array('A','B','V','G','D','E','YO','ZH','Z','I','Y','K','L','M','N','O','P','R','S','T','U','F','H','TS','CH','SH','SCH','Y','E','YU','YA','',''),
  6. $str
  7. );
  8. }