Всегда приятно начинать проект с нуля, самому создавать под него репозитарий, определять принятый в нём стиль кодирования, да и многое другое. Но иногда нам достаются «трудные дети» с тяжелым прошлым, включающим мешанину табуляции и пробелов, разных способов обрыва строки, кодировок. Понятное дело, что все это приводит систему контроля версий к истерике. Но не беда. Linux to the rescue!


1. Остановите сервер

Вы должны остановить процесс сервера mysql (одним из указанных способов)


/etc/init.d/mysql stop

service mysql stop

2. Запустите сервер без проверки привилегий

В этом режиме сервер будет предоставлять полные права, даже если пароль не будет указан.


mysqld_safe --skip-grant-tables

3. Меняем пароль!

Теперь ничего не мешает нам подключиться к серверу и вручную сменить пароль требуемому пользователю


mysql -u root

Дальнейшие команды вводятся в командном интерфейсе MySQL


USE mysql;
UPDATE user SET password = PASSWORD("SECRET-PASSWORD") WHERE user = "root";
FLUSH PRIVILEGES;
QUIT;

4. Готово? Почти

Пароль уже изменен. Но не забываем, что сервер все еще работает без проверки полномочий. Нам нужно его снова остановить и запустить в обычном режиме.


/etc/init.d/mysql stop
/etc/init.d/mysql start

service mysql stop
service mysql start

Вот теперь все. Обратите внимание, что скрипты инициализации могут находиться в другой директории для вашей системы.


Казалось бы, ну что может быть проще чем сменить изображение на странице при помощи JavaScript? Вроде на дворе самый настоящий 2010 год, уже давно в ходу разные кроссбраузерные библиотеки вроде jQuery, предусматривающие малейший каприз любого движка. Ну какие проблемы вообще могут возникнуть? Оказалось, всякие. Очевидная попытка просто сменить src у img не дала ровным счетом ничего.


  $('#kcaptcha').attr('src', '../includes/captcha/run.php');

По видимому, браузер считал что менять надо что-то одно на что-то другое, а одно и то же записывать дважды никакого смысла не имеет. В этом, конечно, есть своя логика, но, наверное, не стоит программам спорить с программистами. Ладно, попробовал еще добавить в путь какую-нибудь изменяющуюся часть, которая не повлияла бы никак на вывод изображения из скрипта, но при этом заставляла браузер обновлять его.


$('#kcaptcha').attr('src', '../includes/captcha/run.php#' Math.random());

На такой трюк купились все кроме Opera: честно загружали заново это несчастное изображение, как будто это совсем разные пути, а не добавленный якорь. Но норвежская красавица упорствовала в своем нежелании идти на компромиссы. И чтобы подружиться с ней, пришлось внести определенные коррективы, убрав из якоря случайное число и поместив его в GET:


  $('#kcaptcha').attr('src', '../includes/captcha/run.php?junk=' Math.random());

Вот тут Opera подобрела и стала менять послушно менять изображение.


Удобные сокращения

Есть такая полезная тема в никсах как сокращения команд «alias». Наверное, каждый хоть раз задумывался об этом, набивая очередной длинный путь до какой-нибудь команды. А все, на самом деле, проще некуда!

Итак, чтобы создать алиас, нужно ввести такую команду:


  alias zf = 'sudo sh /home/ast/vhosts/ZendFramework/bin/zf.sh'

Лучший вариант: ввести необходимые алиасы в настройки:


  sudo gedit ~/.bashrc

Готово! Теперь можно сравнить оригинальный вариант команды и новый, использующий алиасы:


  sudo sh /home/ast/vhosts/ZendFramework/bin/zf.sh create project Sample
zf create project Sample

Польза очевидна.

Консольное редактирование

Используя ssh очень удобно удаленно управлять серверами: это требует минимум пропускной способности канала и обладает всей мощью консоли никсов. Однако, если команды запомнить несложно, иной раз возникает необходимость и какой-нибудь конфиг отредактировать. Ради этого подключать графический интерфейс — охотиться на муху с ракетной установкой. К счастью, есть vim.

Использовать его очень просто, как обычный редактор:


  sudo vim /etc/php5/apache2/php.ini

Я расскажу о самом базовом функционале этой мощной штуковины, который позволит нам осуществить «программу-минимум» — редактирование конфигов.

«/» — Позволяет ввести текст для простейшего поиска. Чтобы найти следующее вхождение искомой строки, нужно вызвать команду без параметра;

«i» — Переключает программу в режим редактирования. Вернуться в режим просмотра можно в любой момент, нажав «ESC»;

«:w!» — Сохранение файла со всеми изменениями;

«:quit» — Выход из программы без сохранения изменений.


Хьюстон, у нас проблема!

Уже давно все компьютеры у меня настроены на уход в спящий режим вместо обычного выключения. Это очень удобно, так как значительно сокращает потерю времени впустую на загрузку. И когда утром начались традиционные проблемы с электроснабжением, техника была «выключена», а я был спокоен. Как оказалось, немного зря. Вечером, попробовав включить компьютер, обнаружил то, что в интернетах именуется «reboot loop», цикл перезагрузок и является известнейшей проблемой материнских плат от Gigabyte, а также некоторых других на платформе Sandy Bridge.

И в чем она заключается, эта проблема? После включения компьютер работает несколько секунд, разгоняет кулера, мигает лампочками, но, не доходя до POST, выключается. Проходит еще несколько секунд тишины и он снова стартует, чтобы также бесславно закончить и эту попытку. И это весь цикл, продолжаться может бесконечно, без малейшего прогресса.

Конфигурация системы

  • Процессор Intel Core i7-2600K (3.40ГГц, 4x256КБ 8МБ, EM64T, GPU) Socket1155
  • Материнская плата Gigabyte GA-P67A-UD3 (iP67, 4xDDR3, 2xPCI-E, SB, USB3.0, ATX) rev 1.0
  • Оперативная память 2x DDR3 SDRAM Kingston «HyperX» KHX1600C9D3K2/4GX (PC12800, 1600МГц, CL9)

Проблемы нужно решать

Поясню сразу: эта проблема может возникать по довольно разным причинам, от включенного PLL Overvoltage (используется для разгона, есть только в экспериментальных прошивках для этой платы), до неправильно выставленных параметров памяти. И совсем не факт, что решение, которое помогло мне, может помочь еще кому-то. Но вдруг? :)

Собственно, у меня был как раз второй случай. Насколько я понял, после нарушенного спящего режима, система не может синхронизировать работу с памятью, а виноват в этом, скорее всего, микрокод Intel. Но не будем забегать вперед, нужно решать проблему поэтапно. Для начала, нужно сбросить CMOS, чтобы вообще добраться до настроек BIOS. Достаем батарейку и некоторое время ничего не трогаем. Идеальным вариантом будет также вытащить всю лишнюю память, оставить одну планку. По прошествии 10-20 минут, ставим обратно батарейку (но не память!) и запускаем машину. Reboot loop на этом этапе уже должен бы исчезнуть, но проблема еще не решена, так как установлена только одна планка оперативки. А стоит поставить обратно все четыре, вернется и reboot loop. Что делать!?

Для начала, нужно прошить BIOS на более позднюю версию. Я отправился на сайт производителя и обнаружил, что моей версии прошивки F3 там вообще нет, а самая младшая F4 сопровождается комментарием о том, что там исправлен как раз таки наш злодей — микрокод. Аккуратно перепрошиваем, следуя руководству.


Добавляем репозиторий


$ add-apt-repository ppa:git-core/ppa
$ apt-get update
$ apt-get install git-core

Если в системе нет add-apt-repository, необходимо перед этим поставить еще один пакет


sudo apt-get install python-software-properties

Ура, у нас современная версия git!


Черный отряд

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