Столкнулся с интересной задачкой, в одном из старых проектов база данных оказалась в latin1 при этом соединение с базой данных также устанавливается в latin1. При этом сама база данных содержит русские буквы. Сам проект работает отлично - два бага друг друга компенсируют, но при попытке изменить коллейшн в phpMyAdmin на правильный русские буквы превращаются в вопросики...
Алгоритм решения получился следующий, получаем дамп базы данных в кодировке cp1251, для этого phpMyAdmin нужно заставить думать что он работает в latin1 и в этом режиме сделать дамп нашей базы данных. Для этогого в /libraries/select_lang.lib.php (у меня древний phpMyAdmin в новых может и не то нужно делать...) поменял
'utf-8' => 'utf8',
на
'utf-8' => 'latin1',
phpMyAdmin на главной странице показывает:
MySQL charset: cp1252 West European (latin1)
значит обман удался :)
После этого делаем дамп базы данных называем его например db_cp1251.sql
Открываем дамп и удаляем все где говориться про latin1 (типа DEFAULT CHARSET=latin1)
Забрасываем дамп обратно, но mysql клиенту говорим что файл в кодировке cp1251:
mysql --default-character-set=cp1251 --character-sets-dir="C:\Program Files\MySQL\MySQL Server 4.1\share\charsets" db < db_cp1251.sql
(--character-sets-dir нужен только в Windows)
Не забываем вернуть phpMyAdmin в исходное состояние и, вуаля, файл в правильной кодировке. Ура!.
Убунта вообще то по умолчанию делает это сама. Вернее делает Gnome но только при первом обращении. У меня же на ntfs разделе есть несколько виртуальных доменов и апачу такое обращение явно не нравится поэтому нужно чтобы раздел монтировался при старте системы.
1. находим имя устройства для монтирования - после того как диск подмонтирован запускаем
mount -l
увидим много строчек где есть что то вроде:
/dev/sdb1 on /media/disk type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096) []
значит наше устройство /dev/sdb1
2. добавляем в /etc/fstab следующую строку:
/dev/sdb1 /media/diskc ntfs-3g defaults,locale=ru_RU.utf8 0 1
я специально в качестве точки монтирования указал /media/diskc а не /media/disk - здесь обнаружилась одна тонкость чтобы раздел был успешно подмонтирован папка должна существовать поэтому ее нужно создать.
3. создаем папку:
sudo mkdir /media/diskc/
4. перегружаемся:
sudo reboot
Если все сделано правильно то диск будет подмонтирован автоматически во время запуска.
Встала задачка, сделать скриншет сайта на стороне сервера (Linux).
Обнаружил сразу несколько способов.
Первый способ это воспользоваться khtml2png - консольная утилита которая испольльзует khtml - движек на котором работают Safari и Crome. Утилита требует наличия иксов, чтобы запустить X сервер на сервере, можно воспользоваться Xvfb.
Еще один способ это установить на сервер firefox. При наличии Xvfb он отлично запускается.
Оба способа работают, однако khtml2png работает довольно грустно ибо не поддерживает флеш, firefox работает гораздо веселее, но пока никак не соображу как запустить его из командной строки на fullscreen.
Обнаружил забавное, оказывается можно на стороне клиента показывать картинку не загружая с сервера бинарник из файла:
<img src="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGP
C/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IA
AAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1J
REFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jq
ch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0
vr4MkhoXe0rZigAAAABJRU5ErkJggg==" alt="Red dot" />
ul.checklist > li.complete { margin-left: 20px; background:
url('data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAA
ABlBMVEUAAAD///+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/5
8ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/A
FGGFyjOXZtQAAAAAElFTkSuQmCC') top left no-repeat; }
отсюда
Пока поддержка CSS3 находится в зачаточном состоянии браузеры потихоньку обзаводятся разными полезными штуками, например возможностью делать скругленные уголки.
Здесь описаны примеры как в мозиле и фаерфоксе добиться скруглённых уголков. Все предельно просто:
W3C has offered some new options for borders in CSS3, of which one is border-radius
. Both Mozila/Firefox and Safari 3 have implemented this function, which allows you to create round corners on box-items. This is an example:
пользователи Mozilla/Firefox и Safari 3 увидят прямоугольный бокс со скругленными углами.
Код который это делает выглядит следующим образом:
<div style=" background-color: #ccc;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border: 1px solid #000;
padding: 10px;" >
Жаль IE пока такое себе не позволяет.