Kerzoll комора

Цидулки звихненого адміна :)

Установка bash'а

Воскресенье, 26 сентября 2010 г.
Рубрика: FreeBSD

 Думаю, что данную оболочку для консоли под FreeBSD рекламировать и описывать не стоит.  И все же.. Если кто не в курсе, постараюсь объяснить, почему  bash является на мой взгляд лучшей оболочкой для консоли.

BASH (Bourne-again Shell) является самой популярной на сегодня программной оболочкой для общения с компьютером. Если не брать ко вниманию консоль FreeBSD, а только Linux - то многие, возможно, удивляться, узнав, что кроме bash существуют и другие оболочки, например, sh, csh. А все потому что bash на Линуксах установлен как оболочка по-умолчанию.. Почему так? Почему популярность bash так велика?

Во-первых - использование сокращенных ссылок на команды в системе (так званные псевдонимы) сокращают время работы при наборе громоздких команд. Например, для очистки файла, я использую команду cat:

cat /dev/null > my_file 

Так вот, что бы не утруждать себя каждый раз набором подобной команды, я добавил в файл .bashrc следующие строки:

alias clr='cat /dev/null >'

Эта строка дает понять bash'у, что если я укажу команду clr my_file, нужно выполнить очистку файла,  именно так, как я указывал выше. Вывод - можно добавить альясы на часто используемые команды и будет больше времени на чай а не на набор команд ;). Кстати, эти все псевдонимы можно вынести в один отдельный файл - .bash_aliases.

Во-вторых - кто сказал, что признаком языка программирования является условный оператор? :) Да-да.. bash, на удивление тех, кто с ним знакомится, так же поддерживает циклы типа if else then. И это то то при том, что он не является языком программирования. Пользу такого дополнения сложно недооценить. Допустим, вам необходимо перепроверять, запущен ли сервер mysql. Стандартно это выглядит так:

 ps aux | grep mysql

А что если я вам скажу, что такую же проверку, да еще и с отчетом на экран можно выводить всего лишь командой ssql? Нет ничего проще:

alias ssql='if ps aux | grep mysqld > /dev/null; then echo "mysql working"; fi'

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

В-третьих - циклы, подобные тому же Perl'у. И много-много еще чего, список может быть велик. И если сильно уж заинтересовал - никто не мешает поискать информацию в Интернете.

Итак, займемся основной задачей, дабы получить сеё чудо на борт своего шатла, то-есть установкой :)

 Лезим в порты, обновленные, свежие..

cd /usr/ports

Ищем bash:

make search name=bash | more

В недалеком будущем находим что-то похожее на:

Port:   bash-4.1.7_2
Path:   /usr/ports/shells/bash
Info:   The GNU Project's Bourne Again SHell
Maint:  obrien@FreeBSD.org
B-deps: bison-2.4.3,1 gettext-0.18.1.1 libiconv-1.13.1_1 m4-1.4.15,1
R-deps: gettext-0.18.1.1 libiconv-1.13.1_1

 Идем по посланому нас адресу:

cd  /usr/ports/shells/bash

 Полазив по Makefile, можно увидеть море опций при установке. Вы, конечно, можете использовать все по-умолчанию, но у меня другие планы :). Буду ставить bash на статических условиях (при установке bash не требует других библиотек при установке):

make -DWITH_STATIC_BASH -DNO_DYNAMICROOT install clean

 После установки в директории /usr/local/bin имеем бинарник bash. Хотя иногда целесообразно запхать его не в эту директорию, а в /bin. Для этого при установке необходимо задать параметр CONFIGURE_ARGS+="--bindir=/bin".

.htaccess или маленькие хитрости CodeIgniter

Вторник, 15 июня 2010 г.
Рубрика: CodeIgniter

Первое, что меня заинтересовало после установки и разбора того, как работает фреймворк, как убрать из адресной строки index.php. Так как ссылки вида http://my_site/index.php/method/ как-то не очень читабельна и хотелось бы ее сократить до вида http://my_site/method/. Все оказалось очень просто. С помощью нескольки строк в файле .htaccess эта проблеа решалась:

 


    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]

    ErrorDocument 404 /index.php 

Что дает эта директива. Во-первых она будет работать только в том случае если в Апачи включен модуль переадресации mod_rewrite. Если отключен - включаем, перезапускаем Апач. Во-вторых, если Апач настроен и готов редиректить, в .htaccess вписываем директиву <IfModule mod_rewrite.c>, в теле которой указываем, что готовы редиректить (RewriteEngine On) в корневую папку, куда будет редиректится апач. В моем случае это /. Потом идут инструкции, которые указывают на то, что редирект будет происходить только в случае, если файл или папка НЕ найдены на сервере (RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d). Собственно правило редиректа RewriteRule ^(.*)$ index.php?/$1 [L].

Во второй директиве <IfModule !mod_rewrite.c>, если модуль mod_rewrite в Апаче все-таки не активен, будет выведена страница об ошибке. Но как потом оказалось, это еще не все.. После создания .htaccess нужно в config.php забрать значение переменной $config['index_page'] = "index.php"; убрать index.php и оставить место пустым. То-есть $config['index_page'] = "". А так же выбрать значение переменной $config['uri_protocol'] = "PATH_INFO";, которая должна соответствовать конфигурации сервера. 

Спутниковый интернет вебкамеры сканеры hp.