Все проекты, с которыми я работал в последнее время, используют кодировку 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 и наслаждаемся нормальными русскими буквами.

Я уже немного писал про создание макетов сайтов в Adobe® Illustrator. А сегодня случайно набрёл на простой способ создания пиксельной графики.

Что нам собственно нужно?

  • Привязка линий строго по пиксельной сетке;
  • Отсутствие сглаживания

Решение как всегда пришло конца. У меня на маке не оказалось достойного кириллического пиксельного шрифта. А те, что на скорую руку нашлись в интернете отображались в Illustrator просто отвратительно. Кроме того, в Illustrator, в отличие от Photoshop, никак нельзя управлять сглаживанием шрифта. В результате набрёл на такую настройку: Preferences > General; снимаем галку «Anti-aliased Artwork», далее работаем в режиме Pixel Preview (View > Pixel Preview).

Снимок экрана 3.png

В итоге получаем шрифты без антиалиасинга, что почти то, что мне хотелось.

Снимок экрана 6.png

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

shots-200.png

shots-3200.png

Есть и ложка дёгтя. Пока что не удалось получить такой же результат при выполнении команды File > Save for web — картинка растеризуется так, как будто никто и не отключал антиалиасинг у Artboard. При этом при выполнении команды File > Export всё пучком.

Этот неприятный минус, а так «квадратные» края у кривых, не позволяют использовать этот метод как основной в разработке макетов. Однако для создания схем и графиков, а так же черновых набросков — самый сок.

И помни, путь джедая — всегда «прибивать» опорные точки кривых к узлам пиксельной сетки.

P.S.: В статье использована картинка в к учебному пособию по курсу «Профессиональная вёрстка сайтов».

Технологическим стандартом де-факто для создания графических макетов сайтов стал Adobe Photoshop. Такой макет будет принят любым верстальщиком, если выполнить минимальный набор требований, да и все входы-выходы давно описаны. Поэтому я не буду их описывать, а дам несколько рекомендаций по созданию графических макетов в Adobe Illustrator.

В своё время я неоднократно вливался в холивары на тему «Приносите нам макеты только в фотошопе» и придерживался непопулярного мнения о том, что макет нужно делать в той программе, которая позволит сделать это максимально быстро и удобно. И верстальщик должен обладать минимальными навыками работы с разными графическими пакетами. Однако я не учёл одного маленького, но важного фактора — дизайнер должен выполнить свою работу качественно и аккуратно. Только в этом случае не возникнет проблем и деформации кармы.
Читать полностью »

С некоторого времени мои сайты, расположенные на одном аккаунте виртуального хостнга стали подвергаться атаке: в код страницы дописывался 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). Если хостинг не предоставляет возможности подключения по данному протоколу — тысячу раз подумайте перед тем, как переносить к нему свои ресурсы.

Естественно, для того, что полностью закрыть доступ к возможности модификации файлов нужно прежде всего сменить пароль доступа к серверу и проверить компьютеры на наличие вирусов.

Решил (а точнее за меня решили %) вспомнить немного Flash и сваял за ночь вот такую незамысловатую игрушку. Дед Мороз катается на метро и периодически устраивает праздник.

Всех с наступающим! Всяческих удач!