пятница, 17 октября 2008 г.

Шаблонизатор с использованием XSLT. Описание.

Продолжаю тему, начатую на Может написать свой XML парсер...? Наверное неделю думал о том, как всё это сделать. В итоге решил не изобретать велосипед, а изобрести руль )). Вот что получилось.

Если кому не понятно почему именно XSLT, то прошу на Google. Писать свой язык разметки, как я собирался не стал, а решил слегка модифицировать XSLT. Нечто подобное было реализовано компанией, где я работал год назад, но я изменил структуру под свои нужды ну и конечно упростил процесс создания шаблонов. Пример:


«obj name="size()"»
«div class="c_size"»
«span style="display:{@show_block_s}"»«xsl:value-of select="@sizename"/»: «/span» «xsl:value-of select="@size"/»
«/div»
«/obj»
 

Немного мутновато всё описал... надо завязывать пить мутное (не фильтрованное) пиво ))

Когда тебе 20 лет и ты учишся в ***, то думаешь, что можеш всех порвать.

Наконец-то я расчехлил ноутбук дома и вылез в интернет, и к тому-же нашёл свободное время.

О названии поста: продолжение фразы я не помню, да и саму фразу передал не очень точно. А сказали мне её при устройстве на работу. Под *** подразумеваю очень хороший университет на просторах СНГ.

Когда-то я тоже думал, что порву весь мир, но уже который день сомневаюсь в этом. А почему не порву? Да потому что времени нет! На работе загруженность норм, но будет ещё хуже, вродьбы появился интересный проект (сайт), который я сегодня уже прозвал "выжигатель мозгов и времени". Время на всё это найти можно, но как не крути - лень, усталость и друзей ещё никто не отменял. Но если я "всех порву", то выйду на новый лэвэл, т.е. бл**ь на новый уровень знаний, с толстым кошельком, и опытом "за плечами" (лучше сказать "за рюкзаком", так обычно именно он у меня за плечами).

Следующий пост через несколько минут ))

воскресенье, 12 октября 2008 г.

Stalker Slear Sky, FIFA 09

От нехерделать купил долгожданную FIFA 09 и Stalker Clear Sky.

Начну со Сталкера.

Поиграл наверное минут 4-5 и офигенно понравилось. С первых минут чувствуется какая-то загадочная необычность всей игры. Не знаю в чём она заключается (( - думаю по ходу игры пойму. Комп у меня не мощный, а именно ноутбук Acer Aspire 5315, который содержит Celeron 540 на 1,8 ГГц, 1024 Мб оперативы и видео от Intel (965 модель и акселератор Х3000) на 384 Мб, которые берутся из оперативы. Самый первый Сталкер на минимальных настройках видео шёл отлично, а вот Чисто Небо подтормаживает, что чревато игрой в оконном режиме. Карта зоны не маленькая, и в каждом поселении живёт своя группировка которая, уверен, настроена не очень дружелюбно. Кстати, игру начинаешь сталкером, который потерял память во время очередного выброса (почти как и в первой части). Игра обещает быть интересной. Пока что не понравилось одно: слабая отдача от оружия после выстрелов. Первое впечатление: 8 баллов.

FIFA 09 Обещали российскую премъем лигу... хера какую лигу я там увидял. Может у меня какая нить бета версия - я хз. Меню игры ничем не отличается от FIFA 08, добавлено ряд разрешений экрана, в том числе и 1280х800. Изменилось управление и помоему в худшую сторону, но изменить под привычную раскладку можно всегда. От игры ожидал лучшего, мало чем отличается от FIFA 08. Требования возросли - если в FIFA 08 играл на самых высоких настройках (читай выше конфигурацию моего компа), то сейчас пришлось переключить аж на минимальные. Зато болельщики шумят более правдоподобно ))) Скорей всего отнесу обратно в киоск и придумаю какую нить стоящую причину чтобы поменять диск например на Футураму 1-5 сезон (давненько не видял 1 и 2 сезоны). Первое впечатление: 6 баллов.

Slipknot, альбом 2008 года All Hope Is Gone.

Это ваще ппц!!!!!! Альбом отличнейший! Гитарные рифы в стиле Slipknot, тяжесть ударных, отличный вокал, мелодичность (да! именно она) внесли нечто новое и до боли старое знакомое. Альбом содержит 15 композиций и длится 1:12. Советую всем любителям тяжёлой мызыки! Первое впечатление: 8 баллов.

пятница, 10 октября 2008 г.

Новая работа!!! Ура нах!

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

Представляло оно из себя утилиту, предназначенную для работы с проектом, над которым работает компания. Содержание следующее: существует каталог, содержащий файлы с апдэйтами для MySQL баз данных. Также есть несколько баз данных (несколько компания - несколько баз данных). Именно для этих баз данных необходимо применить апдэйты. Апдэйт БД производится через PHP функцию system (так было по заданию).

Вывод в файл, вывод всех ошибок, выбор базы данных по шаблону (его я задавал как массив, значениями которого были регулярки. Хотя руководство предложило другой вариант решения задачи, возможно более удобный).

Уже сегодня второй день тестового срока. Посмотрим что на этот раз мне дадут.

Задание я выполнил успешно, хоть и засиделся за ним, чего не ожидал от себя.

Есть какие-небудь свои решения задачи? Напишите.

вторник, 7 октября 2008 г.

Дааайте денех!!!

Давненько я не работал в офисе...
Сижу дома, жру за чужой счёт. Херня какая-то получается.

Рассылаю резюме направо - налево - а вдруг повезёт. Ничего смешного! Опыта хватает, а никто не отвечает мне. В первую компанию устроился вообще без опыта работы и с минимум знаний.

Главное - это не забить как было когда-то: получил тестовое задание, половину сделал и забил...  

Нееее. Я много чего знаю и меня должны взять... даааа, меня должны взять, я много знаю.... Ой, что это я.

Может написать свой XML парсер...?

Уже второй день подряд ищу XML процессор, о котором я мечтаю. Phpclasses.Org полностью облазил, экспериментировал и разбирался с XML Sapiens и XML Sapiens процессором (даже внедрил в движок), но не нашёл то, что хочу и всё!!!

Если нигде нету - придётся самому писать и экспериментировать. Думаю это будут шаблоны в стиле XML и будет напоминать SimpleXML.

Одно радует - скачал парочку замечательных классов, которые будут внедрены в CMF.

понедельник, 6 октября 2008 г.

Структура CMS

Когда я писал самую первую версию своего движка, то почему-то особо не задумывался какую выбрать структуру. Так сказать, что первое в голову пришло – то и написал. Попытаюсь объяснить основной принцип работы. 
Движок работает с модулем Apache mod_rewrite, что позволяет сделать «дружественные» URL.Файл .htaccess:
RewriteEngine On
RewriteCond %{REQUEST_URI} ![^/]+\.[^./]+$
RewriteRule (.+)/? index.php?$1
И файл index.php:
require_once('./bin/core.php'); //основной файл
$engine = new Processor(); 
$engine->start($_SERVER['QUERY_STRING']); 

В последней строчке передаём в метод start запрошенный адрес. Например если мы обращаемся к, то $_SERVER['QUERY_STRING'] будет /module/param. 
Что же делает метод start? Для начала расчленим полученный $_SERVER['QUERY_STRING']:  
$mm = explode('/', $request);
где $request – свойство метода start(), а $mm – массив, полученный после расчленения.
$mm[0] будет не что иное как запрошенный модуль.

Думаю самое время позаботиться о безопасности и сделать всему $_POST и массиву $mm обреза…т.е. фильтрацию простив SQL инъекции и XSS. Если в дальнейшем будет использоваться кукис, то и его отфильтровать.

Тут надо остановиться и не писать хрень типа include(“/modules/”.$mm[0].”/index.php”). Для начала надо сделать обязательную проверку на существование запрошенного модуля.

Далее подключаем основной шаблон, объявляем класс с модулем.
Впереди, наверное самое сложное: необходимо определить какой метод запускать при определённом запрошенном адресе. Общий вид «определителя» я взял из CakePHP. Повторюсь: общий вид, а не код. Вот как примерно это выглядело:
$this->rewrite(“/news/top”, $function, $template, $currentUrl);
Первое свойство – шаблон предполагаемого URL, $function – метод, который необходимо запустить если предполагаемый URL равен действительному, $template – шаблон, $currentUrl – массив $mm (читайте выше). $this->rewrite выполняет сравнение предполагаемого и действительного URL и если всё ОК, то запускает метод $function. Пример вида шаблона: если мы ввели адрес “/news/view/4”, то шаблон предполагаемого URL будет “/news/view/*”.

Это один из возможных вариантов структуры CMS. Сейчас я создаю движок почти по такой же структуре, но добавил несколько полезных вещей: многоязычность, определение параметров модуля в БД (если мы ввели http://site/novosti_mira/ то будет запущен модуль news, т.е. другими словами: можно задать любой URL для любого модуля), полностью новый Rewrite.

воскресенье, 5 октября 2008 г.

Начало

Около 2-ух месяцев назад срочно понадобилось написать CMS и повесить на неё свой сайт. Основными задачами тогда были: дружественные URL, простота создания шаблонов, простота написания модулей и лёгкость страниц. Удивительно, но с моей ленью удалось всё это дело написать кажется за 5(!!) дней.

Что использовалось при создании? Времени было маловато, поэтому никакой речи о XML, AJAX и прочему не могло быть. Всё просто и не замысловато: PHP 5, MySQL, HTML.

Ах, да! Забыл. Спросите "зачем создавать велосипед"?? Наверное что бы было удобней кататься :-) к тому же если ты фрилансер. Велосипед действительно получился удобным и все задачи, которые были поставлены - реализованы. Однако что-то в ней было не то.... Этим "не тем" является отсталось от жизни во времена, когда WEB индустрия только и говорит о достоинствах и преимуществах WEB 2.0. Компания, в которой я когда то работал заявила на своём сайте, что они перешли уже на WEB 2.1 (во время работы не чувствовалось - обычный CakePHP был).

Ну а в ближайшее время я расскажу о том, как я писал первую версию CMF. Для новичков и не только, уставших от быдло статей на эту тематику, уверен - будет интересно.