Что интересного в терминале Mac OS X ?

Standard

Под виндой можно работать в putty, но это не тоже самое, что работа в терминале мака. Терминал имеет множество преимуществ, помимо стандартных утилит из unix мира, в нем присутствуют и свои.

Очень полезная команда open — служит чтобы открывать стандартными программами файлы, например вы находитесь в директории /users/someuser/ и хотите открыть эту папку в Finder — просто наберите open . и терминал откроет Finder с этой папкой. Обратное кстати тоже верно — если вы перетащите папку в терминал, он автоматически вставит путь к этой папке. Если  в выводе есть ссылка, нажмите cmd + двойной щелчок по мышке, откроется браузер с этой ссылкой. Тут я описывал как добавить wget на mac os.

Новые команды, к-ых нет в Linux:

1) ditto:

ditto myfile.txt Documents Копирует файл myfile.txt в Documents
ditto Documents "Documents Backup" Создает копию директории Documents называемой "Documents backup"
ditto archive.zip Documents Распаковывает контент archive.zip директорию Documents.
ditto Documents archive.zip Создает новый сжатый архив содержащий директорию Documents

2) cal / ncal :
Выводят календарь в терминал:

3) say:
Произносит необходимую фразу, к примеру say «Как вам этот блог ребята?»
4) afplay:
Проигрывает музыкальный файл из консоли — afplay sound.mp3

Где стоит побывать. Часть 3

Standard

В продолжение душевной тематики. Предыдущие части: первая, вторая.

Теотиуакан


Остров Пасхи


Абу — Симбел


Плато Альтиплано


Гора Эверест


Бали


Горы Гуйлинь


Галапагосские острова


Ледник Перито-Морено


Софийский собор

Вышел php 5.5 alpha 1

Standard

Вот это новость! Наконец-то, вышла php 5.5 alpha 1 (update: уже доступна php 5.5 alpha 3,), из нового:

Новый способ хеширования паролей

Обсуждение

Ссылка на документацию

Поддержка finally в try/catch блоках

Обсуждение
Для меня самое удивительное было узнать, что finally исполнится, даже если в catch блоке выполнится return (либо break, либо continue).

try {
return 2;
} finally {
echo "Это будет вызванно\n";
} //Эхо никогда не выполнится
echo "Вы меня не увидите";

Поддержка генераторов (привет python :))

Обсуждение

Разыменование в массивах / строках

Обсуждение

echo array(1, 2, 3)[0]; //выведет 1
echo "foobar"[2]; //выведет o
echo "foobar"["foo"][0] //выведет f
echo [1,3,4][2]; //выведет 4

Улучшения в intl расширении

Очень много нововведений, см. полный список

Новый способ хеширования паролей

Обсуждение новвоведения

Поддержка list() в foreach цикле

Обсуждение новвоведения.
Что можно будет делать:

$users = [ ['Павел', 'Дуров'], ['Андрей', 'Рогозов']];
// До новвоведения
foreach($users as $user){
list($firstName, $lastName) = $user;
echo "$firstName по фамилии $lastName участвовал в разработке ВКонтакте";
}
// После новвоведения
foreach($users as list($firstName, $lastName)){
echo "$firstName по фамилии $lastName участвовал в разработке ВКонтакте";
}

С помощью этой фичи избавляемся от лишних переменный — в примере выше — это $user. Не скажу, что это часто требуется, но на мой взгляд писать на пхп становится более лаконичней, хотя python синтаксис в этом плане намного ясней и понятнее.

Сказ о переезде к Hetzner хостеру

Standard

Недавно, блог вашего покорного слуги был недоступен дня два, а вместе с ним порядка 20 сайтов. Причина как мне объяснил хостер «Вы ставили что-то из deb http://ftp.us.debian.org/debian/ sid main … в итоге недоступна сеть» на первый взгляд показалась мне сомнительной, но позже вспомнил, что устанавливал gearman сервер. После довольно долгой дискуссии с техподдержкой мне вручили бекап бд и сайтов. Слава Богу бекап оказался актуальным. Этот инцидент был последней каплей, и я решился переехать к немцам в hetzner, благо цены там вполне доступные.

Пару слов об hetzner — фирма уже давно работает на этом рынке и явное отличие — малые цены. Цена обусловленна тем, что в отличии от других хостеров, hetzner не гнушается использовать вместо брендованных серваков — обычные desktop машины. Кто-то жалуется на то, что падают часто, в частности вот ссылка на хабр qa (к слову, у моего бывшего хостера vps довольно часто падал), у кого-то таких проблем нет. В общем для меня надежность не на первом месте, особенно при таких ценах, и я решил переехать.

Все довольно просто — заполняете форму, вбиваете данные кредитки, позже прийдет письмо с просьбой прислать скан паспорта, как только вы пришлете — сервер доступен. По ценам: у отечественного хостера я брал сервер за 600 руб. в месяц со следующей конфигурацией: 1024 mb RAM, 15 GB hdd, 2000 Mhz проц., у hetzner`a подобная конфигурация (1024 RAM, 40 GB hdd, по процу не ясно) стоит 11 евро — т.е. 440 руб. притом, что места на жестком в 3 раза больше !!! да и доп. место под бекап около 4 евро (еще один камень в сторону отечественного хостера). По пингу — для веб-сервера вообще не заметно (из Москвы 100ms, раньше из столицы к отечественному хостеру 40 ms). Теперь об инсталляции — выбрал Debian 64 LAMP,  зашел на сервер и был несказанно рад, что ничего устанавливать не пришлось, все уже настроено и работает за меня, только кидай бд и файлы сайтов. Кстати у них там даже bash настроен, типа alias ls=’ls —color’, короче мне сразу понравилось.

Другой момент как перенести бд — мне задампили /var/lib/mysql/ директорию, внутри папки с названиями баз данных + пара других файлов (ib_logfile0, ib_logfile1, ibdata1 и др.). Изначально скопировав только папки с бд, обнаружил занятную вещь: базы отображаются в общем списке на сервере, включая внутренние таблицы, однако при попытке выполнить SQL запрос над любой из таблиц выскакивала ошибка: ‘Table not found ….’, оказалось файлы (ib_*) тоже нужно скопировать. После выполнил команду mysqlcheck чтобы убедиться в исправности, если замечены ошибки — mysqlrepair.

Вообщем вот так, мораль сей басни такова — делайте бекап (особенно папок /var/www и /var/lib/mysql), дешевые хостеры — в Германии.

Curl вместо wget на Mac OS X

Standard

На маке нет wget — вместо него curl. Итак, как же обойтись курлом, чтобы он скачивал страницы также как и wget ? Решение: curl -O > kirugan.html чтобы по запросу wget у вас сразу выполнялась вышеупомянутая команда, выполните (вместо .bash_profile можете указать .bashrc):

echo 'alias wget="curl -O"' >> ~/.bash_profile
source ~/.bash_profile

Баг в отображении pdf в iframe

Standard

Делал приложение в ВКонтакте, его суть в том, что открывается дополнительный iframe и в нем пользователю, показывается pdf. Так вот, при скроллинге iframe`a в нижней части,  футер контакта налазил на само приложение (в Chrome), пока пользователь не заскроллит главное окно. Решение — вместо iframeиспользовать

<object src="" type="application/pdf"> </object> 

Минусом такого решения, можно считать появление в правой нижней части управляющего бара, где можно распечатать документ увеличить и тд. к сожалению нельзя управлять содержанием бара.

До скроллинга

До скроллинга

После скроллинга

После скроллинга

Как определить каким mpm модулем apache пользуется

Standard

Все просто если наберете apachectl -V, получите что-то типа:

Server version: Apache/2.2.22 (Debian)
Server built: Mar 14 2012 23:39:26
Server's Module Magic Number: 20051115:30
Server loaded: APR 1.4.5, APR-Util 1.4.1
Compiled using: APR 1.4.5, APR-Util 1.4.1
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)

Нам нужна 7 строка — Server MPM: Prefork, отсюда ясно, что речь идет о Prefork реализации.