Комменты от disqus

04 Март, 2011

Сегодня сделал то что давно обещал сделать biakaveron, правда было это давненько, но я обещания не забыл... Вот теперь на сайте будут удобные комменты от Disqus. Причем все комменты не потерялись, а были импортированы и аккуратно перенесены, ни какая ценная информация не потерялась. Wellcome to the test ))

Установка phpunit на windows

06 Декабрь, 2010 , рубрики: php

Небольшая статья как установить phpunit на Windows. Зачем это нужно, спросит читатель? Кохана оказывается покрыта тестами и мы постараемся не отставать от новых модных тенденций в сфере кун-фу программирования и тоже будем покрывать свой код тестами. На самом деле очень нужная вещь, в противном случае как Вы узнаете, что ваш код идеален? Только когда он пройдет все тесты, даже самые извращенные, тогда можно вздохнуть и сказать себе, что хорошо поработал.

Установка PEAR

Если PEAR уже установлен, то можно пропустить этот шаг. В начале заходим в папку где установлен php и запускаем:

go-pear.bat

И тут внимание. На моем последнем php 5.3.3 это все благополучно упало и выдало что-то типа:

phar "C:\php5\PEAR\go-pear.phar" does not have a signature
Warning: require_once(phar://go-pear.phar/index.php): failed to open stream: pha
r error: invalid url or non-existent phar "phar://go-pear.phar/index.php" in C:\
php5\PEAR\go-pear.phar on line 1236

То вам не повезло как и мне с багнутым php. Это давно известный баг, который еще не профиксили. Чтобы его исправить напишите в файле go-pear.bat следующие строки:

@ECHO OFF
set PHP_BIN=php.exe
%PHP_BIN% -d output_buffering=0 -d phar.require_hash=0 PEAR\go-pear.phar
pause

И повторите попытку. На второй раз все должно пойти как по маслу.

Если Вы добрались до этого момента то вероятно у

Новая конструкция в php

28 Ноябрь, 2010 , рубрики: php переводы

оригинал simas.posterous.com/new-to-php-54-traits

Как давний читатель рассылки internals.php расскажу про маленький секрет - первый альфа релиз PHP 5.4 выйдет не за горами. Этот релиз содержит некоторые новые возможности языка, традиционные багофиксинг улучшающий производительность и работу с памятью. Одной из примечательной особенностью языка станут traits - новый механизм повторного использования кода.

Что такое traits?

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

В то время как наследование отличный способ повторного использования кода, но не решает все проблемы. Бывает, что два объекта используют общую функциональность, но не должны наследоваться от общего класса. Например:

class A { ... }
class B extends ArrayObject {
    // Uses SPL ArrayObject functionality
}

Давайте вообразим, что кому то понадобилось сделать оба класса синглтонами. С текущим набором возможностей в PHP 5.3 это проблемно. Наследование от общего класса Singleton невозможно для класса B, т.к. ООП модель в PHP поддерживает только один родительский класс. В языках на подобие C++ это возможно реализовать с

Новая библиотека от Shadowhand

08 Сентябрь, 2010 , рубрики: kohana sprig

В последнее время я сильно опасался за мою любимую библиотеку Sprig. Мало того, что она не развивалась, так еще и shadowhand удалил свой дистрибутив с github'a. Но sprig не была забыта и забита, а вместо нее появилась новая библиотека(считай версия 2.0) под названием Hive. Вкратце изучив ее я понял, что у них одни и те же корни: много методов называются также, и мне по первому взгляду кажется, что для перехода придется переработать только модели, а код контроллеров и видов не должен поменяться. Но что самое главное, библиотека вобрала в себя в самое лучше:

  • Она стала более расширяемой
  • Появился метод срабатывающий при изменении поля
  • Стала более структуированной, это можно заметить по гораздо меньшему количество операторов instanceof
  • Ведется активная разработка кода, за месяц было это все и написано

Из минусов можно отметить:

  • Куда то пропала функция input, выводящая для каждого типа поля свой элемент. Чтобы это могло значить? Может это стал моветоном?
  • Нет загрузки связанных объектов (в ORM это команда with), может появится в дальнейшем, т.к. очень нужна

Предлагаю всем испробовать

Получайте всегда свежую информацию о курсах валют на украинсков банковском портале.

Преимущества использования ORM Sprig

06 Май, 2010 , рубрики: sprig Видео

Небольшое видео о преимуществах Sprig. Для тех кто хочет посмотреть на youtube вот ссылка http://www.youtube.com/watch?v=Q62OFeBl4Gk.

Хорошего просмотра. Рекомендую смотреть в HD качестве.

На сайте можно скачать бесплатные программы без регистрации.

Создание wysiwyg поля для Sprig

03 Май, 2010 , рубрики: sprig

Введение

В прошлых постах я писал что Sprig великолепная библиотека, вот пришло время отвечать за слова... В этой статье я опишу создание поля типа Wysiwyg, для быстрого и легкого подключения визивиг редактора. Визивиг редактор я предлагаю взять Tinymce и файловый менеджер elFinder.

Установка Sprig, TInymce, elFinder

1. Скачиваем в папку modules орм Sprig - github.com/shadowhand/sprig;

2. Скачиваем tinymce и помещаем в папку public/tinymce;

3. Elfinder скачиваем в папку плагинов tinymce в нашем случае это public\tinymce\jscripts\tiny_mce\plugins\elfinder;

4. Теперь нам нужны коннекторы на стороне сервера. Я предлагаю создать отдельный модуль tinymce, чтобы его можно было легко подключить к уже существующим проэктам. Копируем два файла из архива elfinder'a: connectors\php\connector.php и connectors\php\elFinder.class.php в папку modules/tinymce/vendor/elfinder;

Создание Wysiwyg поля для Sprig

Подключаем модуль tinymce для начала, а после создадим класс Sprig_Field_Wysiwyg в папке с модулем:

<?php defined('SYSPATH') or die('No direct script access.');

class Sprig_Field_Wysiwyg extends Sprig_Field_Char {

        public function input($name, $value, array $attr = array())
        {
                // будет сигнализировать о том что
                // главный файл с тинимсе уже подключен
                static $has_added = FALSE;

                // заполняем данные для вида
                $data = array(
                        'field' => $this,
                        'name' => $name,
                        'value' => $value,
                        'attr' => $attr,
                        'has_added' => $has_added,
                );

                $result = View::factory('tinymce',

Sprig. Начало, обо всем по немногу

20 Апрель, 2010 , рубрики: kohana sprig

Введение 

Sprig - это ORM библиотека, написанная под вдохновением моделей в django. Здесь вы не найдете подробной документации по библиотеке, на самом деле ее просто нет, есть только немногочисленные написанные статьи. Хотя и справки по ней действительно мало, но тем не менее, я считаю ее новой ступенью, которая избавляет от многообразной рутинной работы. 

Sprig и ORM

Самое большое отличие от ORM - это то что каждое поле в sprig представлено СВОИМ классом, напобобие, как в базе данных. Например для текстового поля есть класс Sprig_Field_Char, который умеет сохранять текстовые поля, Sprig_Field_Integer - для числовых данных. Единственная проблема, это описывать эти поля и не забывать их синхронизировать при разработке(советую использовать модуль console). И еще не маловажное преимущество перед обычной ORM, каждый класс знает как себя отобразить. Например для текстового поля(Sprig_Field_Char) это будет обычный input, а для перечисления (Sprig_Field_Enum) - соответственно select. Это дает возможность создатьва свои типы полей со своими обработчиками.

Преимущества

После 4-х месяцев использования я могу сказать, что набил много шишек на Sprig, и понял, что используемый подход очень правильный. Дальше будут идти преимущества с небольшими кусками кода, для подтверждения.

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

Модуль консоли для Kohana3

09 Март, 2010 , рубрики: kohana

Вот и меня впечатлил фреймворк yii, но переходить на него я не хочу и не собираюсь, а как хороший разведчик, позаимствовал у него одну очень хорошую идею. А именно: генерация моделей, контроллеров и всего такого, что обычно считается рутиной. Был написан небольшой модуль kohana-console. Смысл этого модуля, что оно может выполнять небольшую работу по автоматическому генерацию кода. Итак скачиваем подключаем в файле boostrap как обычный модуль и пробуем.

Запуск

Запустить модуль можно только в cli режиме, через браузер вы туда не зайдете. Для windows есть специальный запускающий bat файл, в линуксе можно запустить приблизительно такой командой:

php ../../index.php --uri="console/index"

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

Чтобы перейти на русскую справку, нужно в bootstrap.php прописать

i18n::$lang = 'ru';

Единственное, что может быть, так это у пользователей линукс может справка на русском коряво отображаться. Так и не получилось отображать текст в консоле виндовс в кодировке windows-1251. А utf8 виндовс принципиально не поддерживает. Чтобы все заработало перекодируйте файлы в папке console\views\help\ru-ru\, на ту кодировку которая поддерживает ваша система.

Использование

На данный момент есть 7 комманд:

  • crud - создание контроллера-вид по модели sprig.

Internet Explorer 6/7 - баг маркеров элементов нумерованного (OL) и маркированного (UL) списка с параметром HEIGHT

25 Февраль, 2010 , рубрики: Верстка

Прежде всего поздравляю всех, что ие6 все меньше и меньше поддерживается. С 13 марта youtube перестает поддерживать ie6. УРА!!! Эту заметку написал мой коллега по интернет цеху, если что ник jb в комментариях. Далее прямая речь:

Недавно под конец рабочего дня доверстывая проект наткнулся на довольно забавный (кх - кх) баг ИЕ6 и ИЕ7, оказываеться если элементу нумерованного списка (OL LI) или маркированного списка (UL LI) задать CSS св-во HEIGHT, то маркеры этих списков не будут увеличиваться 1, 2, 3... и тд., а будут постоянно равны 1, помогает только задача VALUE, причем его нужно задавать для каждого элемента списка.

Это видно на выделенных примерах 4 и 7 под ие6 и ие7, причем элементы без VALUE имеют маркер 1, хотя должны были бы иметь 8, так как предыдущий элемент имеет значение 7.

Откройте этот пример для сравнения в ие6/ие7 и нормальном браузере:) Firefox, Opera, Safari, Chrome.

Вернемся к истокам проблемы, использовать HEIGHT для элементов списков мне понадобилось чтобы задать им специфическое для ие свойство hasLayout а писать не валидное zoom:1; не очень то хотелось, но видимо вывод таков что стоит использовать zoom:1; с условными комментариями нежели казалось бы безобидный HEIGHT:1%; (кстати величина процента не влияет на баг):

<!--[if lt

Опрос. Какую ORM предпочитаете?

22 Февраль, 2010 , рубрики: Опросы

Результаты старого опроса

Недавно закончился прошлый опрос, так как я придумал новую тему, что мне бы было интересно узнать у свои читателей :). В прошлом опросу поучаствовало 102 человека. 102 реальных человека, т.к. дубликаты удалялись без предупреждения. Результаты:

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

Новый опрос

И что у нас в меню? А в меню у нас всевозможные ORM на любой вкус, написанные на php. Первая группа это просто все ORM, которые не относятся к Kohana:

И заточенные под Kohana:

Лично я использую Sprig. Поэтому я могу сказать "за" и "против":

+ Небольшая автогенерация кода, за счет вывода полей
+ Описание полей позволяет немного более логично выстраивать код
+ Идея была сделать модели похожие на модели в django
-