Кодировки из коробки
10.10.2010
Все проекты, с которыми я работал в последнее время, используют кодировку utf8, и всё было хорошо, пока файлы лежали на сервере. Но в какой-то момент мне надоело из-за любой мелкой правки ползать куда-то там по ssh, да и сетевые задержки иногда утомляли. Тогда я решил в очередной раз поднять локальный сервер.
Процедура установки LAMP-сервера на ubuntu не представляет собой никаких сложностей, всё ставится из репозитория. На Windows был установлен Denwer, который так же ставится буквально одной кнопкой. А вот дальше началось веселье.
Пингвин с вопросами
После поднятия проекта из svn-репозитория и импорта mysql-дампа открываю страницу в браузере и вижу смесь «французского с нижегородским»: где-то нормальная кириллица, а где-то вопросительные знаки. Это «где-то» оказалось результатами выборки из mysql. Многочисленные эксперименты по смене сопоставления ни к чему не привели и поэтому я полез читать интернет. Решение было найдено быстро:
- Открываем /etc/mysql/my.cnf
- Находим секцию [mysqld]
- Добавляем две строчки
skip-character-set-client-handshake
default-character-set=utf8
Первая заставляет mysql игнорировать кодировку, которая пришла от клиента и использовать кодировку по умолчанию. Кодировка по умолчанию как раз и выставляется вторым параметром.
Не забываем перезапустить mysql-сервер:
$ sudo service mysqld restart
Это не по-джентельменски
В джентельменском наборе веб-разработчика всё оказалось немного хуже. В этом во многом замечательный продукте везде гвоздями прибито использование кодировки windows-1251. Дескать на винде работаем, вот и кодировку берём от неё.
Для наставления Денвера на путь истинный нужно исправить конфигурационные файлы апача и mysql.
Настройки для веб-сервера apache ( %Denwer%/usr/local/apache/conf/httpd.conf, где %Denwer% — каталог, в который вы установили Denwer):
- Находим директиву
AddDefaultCharset windows-1251(примерно 484 строка файла) - Меняем на
AddDefaultCharset utf-8
Настройки для сервера mysql ( %Denwer%/usr/local/mysqld-5.1/my.cnf):
- Находим строки
default-character-set = cp1251
init-connect = "set names cp1251"
- Меняем на
default-character-set = utf8
init-connect = "set names utf8"
Перезапускаем Denwer и наслаждаемся нормальными русскими буквами.
Пиксельная графика в Illustrator
30.06.2009
Я уже немного писал про создание макетов сайтов в Adobe® Illustrator. А сегодня случайно набрёл на простой способ создания пиксельной графики.
Что нам собственно нужно?
- Привязка линий строго по пиксельной сетке;
- Отсутствие сглаживания
Решение как всегда пришло конца. У меня на маке не оказалось достойного кириллического пиксельного шрифта. А те, что на скорую руку нашлись в интернете отображались в Illustrator просто отвратительно. Кроме того, в Illustrator, в отличие от Photoshop, никак нельзя управлять сглаживанием шрифта. В результате набрёл на такую настройку: Preferences > General; снимаем галку «Anti-aliased Artwork», далее работаем в режиме Pixel Preview (View > Pixel Preview).

В итоге получаем шрифты без антиалиасинга, что почти то, что мне хотелось.
![]()
И тут открылся побочный эффект — все линии начали привязываться по сетке. И совершенно не важно, как они располагаются в векторном представлении — растр будет чётко по линеечке.


Есть и ложка дёгтя. Пока что не удалось получить такой же результат при выполнении команды File > Save for web — картинка растеризуется так, как будто никто и не отключал антиалиасинг у Artboard. При этом при выполнении команды File > Export всё пучком.
Этот неприятный минус, а так «квадратные» края у кривых, не позволяют использовать этот метод как основной в разработке макетов. Однако для создания схем и графиков, а так же черновых набросков — самый сок.
И помни, путь джедая — всегда «прибивать» опорные точки кривых к узлам пиксельной сетки.
P.S.: В статье использована картинка в к учебному пособию по курсу «Профессиональная вёрстка сайтов».
Технологическим стандартом де-факто для создания графических макетов сайтов стал Adobe Photoshop. Такой макет будет принят любым верстальщиком, если выполнить минимальный набор требований, да и все входы-выходы давно описаны. Поэтому я не буду их описывать, а дам несколько рекомендаций по созданию графических макетов в Adobe Illustrator.
В своё время я неоднократно вливался в холивары на тему «Приносите нам макеты только в фотошопе» и придерживался непопулярного мнения о том, что макет нужно делать в той программе, которая позволит сделать это максимально быстро и удобно. И верстальщик должен обладать минимальными навыками работы с разными графическими пакетами. Однако я не учёл одного маленького, но важного фактора — дизайнер должен выполнить свою работу качественно и аккуратно. Только в этом случае не возникнет проблем и деформации кармы.
Читать полностью »
Бессмысленно и беспощадно
16.01.2009
С некоторого времени мои сайты, расположенные на одном аккаунте виртуального хостнга стали подвергаться атаке: в код страницы дописывался JavaScript-код, вызывающий загрузку вредного кода с другого сайта. Вариантов кода было несколько — и декодируемый, и просто iFrame.
Периодически я замечал такую пакость и вычищал соответствующую страничку, благо зловредный код располагался либо непосредственно после открывающего тега <body>, либо в конце страницы. Код внедрялся либо на страницу index.htm/index.php, либо в какой-нибудь инклюд (admin_header для wordpress, например).
Наконец, мне всё это поднадоело и я решил что-то с этим сделать. Насколько я понимаю, злоумышленники каким-то образом использовали одну из многочисленных уязвимостей и смогли проникать непосредственно на хостинг, модифицируя страницы. Искать причину проникновения — выше моих познаний, однако, как мне кажется, решение по борьбе с повторением атак найдено.
Поскольку происходила модификация кода от имени моего аккаунта (больше некому), то я просто решил изменить права доступа к файлам. Имея доступ по ssh это очень просто — воспользуемся командой chmod:
chmod 444 *.php *.inc *.html *.htm
В данном случае мы переводим в режим «только для чтения» все файлы, оканчивающиеся на php, inc, html и htm. К сожалению, данную команду пришлось запускать в каждом каталоге отдельно, поскольку рекурсивный обход файловой системы (chmod -R) почему-то не работал.
Однако, прежде чем изменять права доступа, необходимо было удалить вредоносный код. Поскольку я не знал, в каких именно файлах он содержится, то решил просто найти все файлы, которые были изменены за последние три месяца. Для этого я воспользовался следующей командой:
find * -mtime -120
В данном случае, мы ищем все файлы, модифицированные за последние 120 дней (я давненько ничего не менял на этих сайтах). Результатом выполнения команды был список файлов, которые я и отредактировал.
Для того, что бы иметь возможность выполнять команды непосредственно на сервере нам потребуется подключение по протоколу SSH (Secure Shell). Если хостинг не предоставляет возможности подключения по данному протоколу — тысячу раз подумайте перед тем, как переносить к нему свои ресурсы.
Естественно, для того, что полностью закрыть доступ к возможности модификации файлов нужно прежде всего сменить пароль доступа к серверу и проверить компьютеры на наличие вирусов.
С Новым 2oo9 годом!
26.12.2008
Решил (а точнее за меня решили %) вспомнить немного Flash и сваял за ночь вот такую незамысловатую игрушку. Дед Мороз катается на метро и периодически устраивает праздник.
Всех с наступающим! Всяческих удач!
