Блог веб-программиста

20Сен/090

Разработчики Sabayon Linux планируют выпустить версию 5.0 через 2 недели

Wolfden в своём блоге написал о начале тестирования второй беты Sabayon 5.0.

Он надеется выпустить финальную версию Sabayon 5.0 через две недели, однако точной даты никто не знает.

Связано с категорией: linux Читать полностью
16Сен/093

Создаём расширяемую структуру на Yii Framework

Хочу предложить Вашему вниманию концепт расширяемой структуры приложения на Yii Framework. Я уже писал как сделать свои Actions на Yii.

Сегодня же речь пойдёт о написании стандартных экшенов для контроллеров и их расширения.

Предположим, в приложении у нас все контроллеры наследуются от класса dotPlantFrontMainController.

Нам необходимо, чтобы у всех контроллеров было действие Breadcrumb.

Для этого, в базовом контроллере dotPlantFrontMainController переопределяем функцию actions() следующим образом:

public function actions()
 {
 return array(
 'breadcrumb' => 'application.extensions.actionBreadcrumb',
 );
 }

Если в унаследованном контроллере(скажем News) мы используем экшены из других файлов, то нам необходимо также переопределить функцию примерно вот так:

public function actions()
 {
 // return external action classes, e.g.:
 return array_merge(
 parent::actions(),
 array(
 'admin'=>'application.controllers.News.ActionAdmin',
 )
 );
 }

Таким образом, в News будут экшены определенные в базовом классе dotPlantFrontMainController плюс ActionAdmin.

Переписать же actionBreadcrumb можно уже в теле самого News.

В итоге имеем легко расширяемую структуру. В самом же базовом классе массив actions можно автоматически генерировать в соответствии с установленными расширениями. Всё легко и просто 🙂

Связано с категорией: Code 3 Комментарии
6Сен/091

О Sabayon 4.2 и не только

Поставил я как то себе на домашний компьютер Sabayon 4.2 Gnome x86_64. Конечно хотелось бы скачать Sabayon 5, но его ещё нигде нет - одни слухи только. Первое впечатление о системе было замечательное.

Ну Gentoo как Gentoo, только ставится быстрее, не надо с хэндбуком сидеть. Есть встроенный менеджер пакетов entropy с графическим фронтэндом Sulfur. Из консоли всё ставится через equo install. emerge также работает.

Связано с категорией: linux Читать полностью
4Сен/096

Декодируем gzip страницу на PHP

Недавно при разработке одного сайта, столкнулся с проблемой декодирования на PHP полученной через curl страницы, сжатой в gzip.

Допустим у нас есть код, который делает запрос через php-CURL с возвращением заголовков:

$ch = curl_init();
 curl_setopt($ch, CURLOPT_URL,$url);
 
 //curl_setopt ($ch, CURLOPT_VERBOSE, 2); // Отображать детальную информацию о соединении
 curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0'); //Прописываем User Agent, чтобы приняли за своего
 
 curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);  // Возвращать результат
 
 curl_setopt ($ch, CURLOPT_HEADER, 1); // Наши заголовочки
 curl_setopt ($ch, CURLINFO_HEADER_OUT, 1); // Где то наткнулся на этот параметр, решил оставить
 curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 30);
 
 $result = curl_exec($ch);

В итоге получаем в $result нашу страницу с заголовками сервера. Проверим, закодированна ли она и дешифруем её, если нужно:

if (strstr($result,"Content-Encoding: gzip"))
 {
 $result = preg_replace("/(.*)Content\-Encoding: gzip\s+/isU","",$result);
 $result = gzinflate(substr($result, 13));
 }

Вот и всё. Если Вам нужно просто gzip контент расшифровать, то можно в substr заменить 13 на 10. (+3 из-за \n после заголовков).

Связано с категорией: Code 6 Комментарии
2Сен/090

The new look

Вот мой блог и переехал с Blogger на WordPress.

Дизайн пока временный. Скоро переделаю. Надеюсь, это не затянется 🙂

Связано с категорией: Новости Нет комментариев