31 December, 2009

Огни фонарей лижут стёкла витрин

Странный день. Хотя бы тем, что едва ли не впервые решил здесь его, прошедший, вспомнить. Ибо есть чё.

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

Мама поскользнулась и упала. Мама прищимила палец дверью. У меня подспустило колесо. Поломалась розетка. Папа, уходя, не погасил свет. Папа, ложась спать, не погасил елку. В офис привезли кресла (неудобные, но мне пока не досталось). В офисе поцепили жалюзи. Не работал банкомат. Смеситель потек еще более, был замотан изолентой.

Всё? Как по мне много. Как для дня, который, в общем-то, по сути своей полудень. Полурабочий. Последний перед Новым годом. Завтра выходной. И послезавтра. И так следующую неделю. Живём, поди.

Завтра хлопоты. Снять денежку. Подкачать колесо. Может, съездить на шиномонтажку. Починить розетку. Может, починить смеситель. Убрать в квартире. Приготовить яства...

Чёрт побери, мой сегодняшний слог напоминает мне лирику Сигнала из космоса.

Градусник спросонок скоро будет сорок
Не спасла микстура, лезет словно дура, вверх температура

Бродит жар по телу, нервную систему
Крутит, так как хочет утром, днем и ночью,
Раз пришлось родиться, дайте насладиться,
Дайте надышаться, дайте людям шансы
Реализоваться, в этот мир ворваться,
В этот мир влюбиться, в этот мир врубиться, разочароваться...

Настроение ныне Алиса - ...танцевать. Меня несёт на горизонт. Эх...

18 November, 2009

И снова мимо

Была такая себе сборная Греции, которая выиграла Чемпионат Европы 2004 года в Португалии. Выиграла в абсолютно отвратительном стиле. Я считаю, что так в футбол играть нельзя. Да они и не играли. Я тогда был зол на греков и обижен до глубины души. Они убили футбол. Они убили прекрасную сборную Чехии, которая приехала в Португалию фаворитом и по игре, и по составу. Они убили великолепную сборную Португалии, которая показывала тогда лучший футбол в своей истории. Убили безжалостно, убили с хладнокровностью киллера.

И вот сегодня они убили сборную Украины. Я уж думал, что те времена уже прошли, что больше таких греков мы не увидим, но Рехагель остался, Рехагель гнул свою линию, и вот спустя пять лет подросли новые греки, которые не-играют точно так же, как их предшественники, выигравшие Чемпионат Европы.

Сии воспоминания здесь к тому, что Украина была сильнейшей (номинально) из второй корзины. И попадись грекам кто угодно - результат был бы таким же. Даже ирландцы, мне кажется, эти гордые никогда не сдающиеся и играющие более чем девяносто минут, ирландцы, не смогли бы противостоять этим терминаторам.

Теперь о нас. Михайличенко - бездарь. Это было заметно абсолютно во всех матчах под его руководством. Начиная с Динамо, продолжая U-21, и заканчивая нынешней сборной. Но есть абсолютно железная вещь - результат. Как бы нам того ни хотелось, но в отборочном цикле на ЧМ-2010 сборная Украины всяза абсолютно все свои очки, за исключением сябров, которые, впрочем, с лихвой компенсировала победой над Англией.

Я всегда говорил, говорю и буду говорить: любая команда должна брать свои очки. Свои - это домашние игры, а тж. игры с соперниками ниже в турнирной таблице или классом. Увы, так было и в нашем отборе. И тысячу раз прав Михайличенко, констатируя тот факт, что по сумме двух матчей сборная Украины в отборе не уступила АБСОЛЮТНО никому. Кроме греков...

"Увы", "к сожалению" - это все потому, что у Михася есть аргумент. И у Суркиса есть аргумент. Более того, нам ведь отбор проходить не надо, зато есть все возможности для плодотворной подготовки к Евро-12. И чует мое сердце, что мы не дождемся отставки сами знаете кого.

Кто бы мог его заменить? Маркевич, Павлов, Штанге - вот мои варианты, но ни один из них не реален. Калитвинцев - рискованно, но Чемпионат Европы U-19 он выиграл. Следовательно, можно дать шанс, опять же, учитывая, что отбор нам играть не надо. И вот в таком случае я не удивлюсь еще раз. Но тут хотя бы, на мой взгляд, будет хоть какой-то просвет.

Хотя я могу и ошибаться. Ведь Калитвинцев - динамовец, а это опасно тем, что он может ставить не тех, кто лучше, а тех, кто ближе к телу.

Что касается конкретно матчей против Греции, то виноваты, естественно, сами. Причем, виноваты, в первую очередь, в том, что не забили в Греции. Оттого и предоставили эллинам шанс сыграть так, как они любят, умеют и обожают.

Все - бараны. А Суркису - позор за пустые трибуны Донбасс Арены.

13 November, 2009

Знов напад письменства

Знову бозна що в голові. Точніше, нічого конкретного навіть не викристалізовується на предмет теми цього посту. Цього - адже ж його пишу.

Якийсь такий стан дивний... Стан душі, а не здоров'я - хоч і на нього можна поскаржитися. А от на душу скаржитися нема потреби. Натомість є потреба відзначити, шо саме цього моменту хочеться чогось нового. Ось тому, мабуть, слухаю зараз Сергія Бабкіна. Це музика, яку б у звичайному стані та за звичайних обставин слухати б, напевне, ніколи не став. Це геть не той Бабкін, що у П'ятниці був. Геть. Очевидно та мелодія, що відзвучала зараз, - з його отого періоду "Взблатнулось", про який я лише чув, та, знову ж таки, ніколи не виникало навіть думки йо' слухати.

Якась така музика... дивна. Схожа на щось, що я міг би слухати, живи я на Радянщині. Який чудний мікс чи то Розенбаума з Тальковим, чи то Висоцького з... ну, наприклад, Башлачовим.

Одразу в цьому сенсі пригадалася П'ятниця (опа, на російській букві ё у сімці в українській розкладці - апостроф) - я її не міг класифікувати абсолютно ніяк. І ось Бабкіна я теж не можу. Я не можу сказати, що ця його музика меня подобається. Проте я не можу сказати і протилежного.

Музика і незвичайна, і звичайна водночас. І знову ні на що не схожа. Зараз до Розенбаумівського голосу додалася пекельна суміш Бйорк-і-Йорк. І от як тут класифікуєш?

От він резонанс. Дивний стан душі. Дивна музика Бабкіна. Вони знайшли одне одного і увійшли в резонанс. Причому емоцій немає - я просто слухаю і не можу сказати, чи подобається, чи ні... Чи то пак емоції таки є - такі самі дивні, як і...

Якщо комусь цікаво послухати Бабкіна - на майспейс: http://www.myspace.com/sergeybabkin

17 October, 2009

Марк спалює мости?

Марк Вебер говорить, що не допомагатиме Феттелю у його боротьбі за титул. Категорично і трохи образливо для партнера по команді.

Торік у Ферарі була схожа ситуація: Масса боровся до останнього, маючи, втім, не найкращі шанси на титул, Ряйконен до певного часу теж брав участь у перегонах. Гонщиків у команді на першого-другого не ділили, тож під кінець чемпіонату, коли стало зрозуміло, що один з них втратив шанси на титул, він і став допомагати напарникові.

Сьогодні ж Феттель у ролі торішнього Масси, а Вебер - у ролі торішнього Кімі. І Вебер не збирається допомагати напарнику. Здавалося б, чому ні? Тобі вже нічого не потрібно, тож зіграй на команду.

Близько цього вікенду стали з'являтися коментарі щодо майбутнього Кімі Ряйконена. Люди говорили, зокрема і Міка Сало, що Кімі опиниться в Ред Бул. І тут раптом сам Вебер каже, мовляв, у Ред Бул Кімі було б комфортно. Після цього він говорить про... ну ви зрозуміли.

А чи не почав він спалювати мости? А чи не знає Вебер вже зараз про те, що наступного року його в кокпіті Ред Булу замінить Кімі Ряйконен?

Фантазії, так. Але це зараз фантазії. Вони фантазіями можуть і залишитися, але якщо така заміна відбудеться, то можна буде в Марка запитати, а чи не знав він ще перед Інтерлаґосом про те, що покине Ред Бул на користь фінна?

28 September, 2009

Двадцать первый век (повторяюсь)

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

Наверное, впервые в моей жизни мне хочется учиться. Причем не игре на гитаре, а пойти в вуз, например. Ещё раз. Физику там поучить. Или вот в школу - русскую (о Боже) литературу читать и обсуждать на уроках литературы.

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

Да-а, вот раньше всякие Чернышевские и Островские, Коцюбинские и Франко переписывались друг с другом и с кем ни попадя, а теперь молодёжь переписывается... с блогами.

Может, всё-таки, как-то поинтереснее раньше люди жили, а?... Написал письмо, отнёс на почту. Через месяц ответ: "Дорогой мой и любимый друг, получил Ваше письмо. Освещённую в нём тему нашёл весьма интересной. [skip] Искренне Ваш, Пётр Валерианович." Так и представляю: камин, кресло-качалка, плед, монокль, горничная с горячим шоколадом, и шуршащее по бумаге перо. Вечер. Поздний. Полдевятого.

А сейчас? Написал письмо. Отправил. Если в течение дня не получил ответ, уже нервничаешь: чего так долго не отвечает, али стряслось что? Завтра проверяешь почту: "Привет. Ничотак, жжот в общем. [skip] SY WBR, p.valerianovich." И время отправки что-то вроде 04:29. Так и представляю: тепловентилятор, кресло типа "Новый стиль" в периоде полураспада, залапанные очки и кружка с кофе, стоящая на грязнющей болванке. В половине-то пятого!

Но самое интересное, что ни первое, ни второе мне не свойственно. Первое в силу двадцать первого века на дворе. Второе - в силу воспитания и присутствия здравого смысла в голове. Откуда у меня такие познания? В первом случае сказали бы: литература. Во втором - двадцать первый век...

10 September, 2009

Чи треба нам до Африки лізти?

Учора грала збірна України. Знову повний морок, звідки не знати, як вийти. Не показали нічого. Пригадую попередні матчі нашої команди у цьому відборі - абсолютно нічого не змінилося. Стабільність? Бугага. Навіщо мені така стабільність? У Андорри теж стабільність. Своя. Стабільна стабільність. Ось гола казахам забили. Свято тепер. Було б і у нас, якби сябрам поклали бодай один. Але цього разу суддя додав лише дві хвилини, а Тимощук не пішов влучати у руку суперника в штрафному.

З білорусами у Львові грали десь так само. З хорватами у Харкові взагалі й не думали атакувати. З казахами вдома пощастило. З андоррцями з гри не забили бодай гола. У Хорватії захищалися. Як і в Англії. Проте не дуже якісно.

Поки що найкращий гравець відбору - П'ятов. Попри помилки на Вемблі. Якби не він (...хтозна, може Богуш був би найкращим?), боролися б із сябрами за третє місце.

Про Михайличенка й говорити нема чого. Не тренер. Що то був за склад на білорусів? Хотів флангами взяти? А на кого вішати? А чому через фланги не грали? Адже, коли немає плеймейкера, натомість зазвичай є крайки. Номінально були - Гусєв і Ярмоленко, фізично присутні. Ярмоленко загубився, хоча видно, що перспектива є. Та й два небезпечних і цікавих удари завдав. Але окрім цих моментів я його взагалі не бачив на полі. Гусєва й поготів.

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

Ось вони, ці три заміни: Ярмоленко, Гусєв, Мілевський. Ну хоч Гусєва зняв. А було випускати замість них Селезньова, Ротаня та Назаренка. Ротань був активним і корисним у декількох матчах. Назаренко пас віддати може. Селезньов поштовхатися, та й бити по воротах не боїться, на відміну від...

Не вивчав білорусів Михась, таке у мене враження склалося. Аби вивчив, не ставив би на фланги (яких так і не було... ну бодай Кобін вперед бігав і його було видно). Робити ставку треба було на гру через плеймейкера через центр захисту, який у сябрів так собі. І рух попереду мав би бути. Рухався там тільки Шева, якому ніхто пасів нормальних не віддавав.

Треба було (ну, ясно, що висновок роблю на підставі побаченого учора) ставити так: П'ятов, Чигринський, Кучер - зрозуміло, Мандзюк теж нехай буде (тут пофіг, Ярмаш непереконливий, а Мандзюк бодай відбирати вміє краще). Кобін по флангу лівому, грець із ним (хоча Шевчук, чесно кажучи, вчора так само, як і Василь зіграв би). Тимощук і Гай - згоден. Назаренко під нападниками, Ротань на правому фланзі, Шевченко - Мілевський попереду. Можна було б в моїй розстановці Шевчука на свій фланг, а Кобіна туди, де я Ротаня поставив - можливо, було б цікавіше.

На крайняк Назаренко б з-за меж поцілив, якби більше часу мав.

Учора надобраніч подумав над оцінками для наших "героїв". Ну, Михасю 2, то ясно. П'ятову 6.5 чи навіть 7 - виручив серйозно. Чигринському з Кучером та Мандзюком 6. Посередньо, але без серйозних пожеж. Тимощукові 6 тільки за те, що кілька разів таки класно м'ячі відбирав. Гаю 6 - за атакувальні здібності. Гусєву 4. Кутовий подав один небезпечно, так би може й 3 поставив. Ярмоленку 5.5 за ті два моменти та авансом. Мілі 5, бо таки кілька ефективних дій здійснив. Шеві 6, рухався, намагався, але... Назаренку 6 теж - відчувалося дуже добре, що мав він в основі грати.

До речі про Шеву. Склалося враження, що, маючи контракт із Челсі та сидячи на трибуні Стемфорд Брідж, він за збірну грав ліпше, ніж перейшовши до Динамо...

04 September, 2009

Люди - странные вещи

Вот в детстве не любил малину. Аж тошнило. В натуре.

Также не люблю мёд.

Но ради исцеления пью малину и ем мед. Но странно то, что ни одна, ни другой не вызывают привычного отвращения.

Люди странные...

20 August, 2009

Мой опыт в создании модульного приложения на Zend Framework: Часть 5

Подытожим сегодня подключение fck и кое-что еще.

Итак. Задача - подключить fckeditor. Первый шаг, традиционно, - погуглить :) Полушутка. А подключать будем с помощью jquery, для чего скачаем актуальные:
- fckeditor;
- jquery;
- плагин для jquery
и подключим это всё дело. Но сначала надо создать форму для добавления статьи (фцк юзаю там и в новостях) с textarea, на который, собственно, и будет вешаться фцк. А вешаться он будет следующим образом:
function loadFck(e)
{
$('#'+e).fck({path: baseUrl+'/js/fckeditor/'});
}

Эта функция лежит в файле admin.js (о чем ниже; так же, как и о baseUrl), и ее надо будет вызвать в нужном месте. На вход приходит id текстэйрии (textarea), к которому будет приаттачен фцк.

Вот, собственно, и всё. Большинство примеров на этом и заканчиваются. Но всё же надо поподробней. Начать хотя бы с того, что мы юзаем jquery. И юзаем его хитро. With a little help from my friend (с) у меня есть замечательный вью хелпер jquery, который неплохо бы подключить. Иничу я его так:
protected function _initJquery()
{
$view = $this->getResource('view');
$view->jquery();
}

Но этого было недостаточно - нужно указать путь к вью хелперам. Поэтому также в буцтрапе я иничу и вью:
protected function _initView()
{
if ($this->hasResource('view'))
$view = $this->getResource('view');
else
$view = new Zend_View();
$view->getHelper('BaseUrl')->setBaseUrl($this->getOption('baseurl'));
$view->setEncoding('UTF-8');
$view->addHelperPath('../application/views/helpers', 'Common_View_Helper');
return $view;
}

Интересно, что просто получить ресурс view я не смог. Без проверки выдает ошибку. Поэтому на всякий случай проверка (рожденная коллективным разумом).

Итак, указали путь к плагину и - внимание - задали baseUrl. Я наивно полагал, что он (бейзурл) определится сам. Но пришлось задать. $this->getOption('baseurl') предательски получает переменную конфига ("логично", правда?). В конфиге у меня первой строчкой добавилось baseurl = "http://localhost/мой_проект/public". При этом при попытке написать имя переменной верблюжьимОбразом сей опшен был нулл. Что тоже "логично", правда?

А сей бейзурл мы указали для того, чтобы грузить джаваскрипты и цссы. Пока последних нету, так что
protected function _initHeadScript()
{
$view = $this->getResource('view');
$view->headScript()->prependScript('var baseUrl = "'.$view->baseUrl().'";')
->prependFile($view->baseUrl().'/js/jquery.js');
}

С помощью prependScript() прописываем наш бейзурл для использования в наших джаваскриптовых манипуляциях. (Все эти _init* - в буцтрапе.)

Теперь идем в Admin_ArticleController:
public function init()
{
$this->_model = new Admin_Model_Article();
if(in_array($this->getRequest()->getActionName(), array('add', 'edit'))) // loading fck only if need
{
$this->view->headScript()->appendFile($this->view->baseUrl().'/js/fckeditor/fckeditor.js')
->appendFile($this->view->baseUrl().'/js/jquery.FCKEditor.pack.js');
}
}

Ну тут вроде понятно - комментарий решает. Добавлю только, что второй файл - это плагин для jquery, а модель - приватнная переменная для использования при операциях с БД. Тут же, в addAction() (а позже и в edit) вызываем нашу самую первую функцию:
public function addAction()
{
$form = new Admin_Form_Article();
$this->view->form = $form;
$fckText = $form->getElement('text')->getId();
$this->view->jquery("loadFck('{$fckText}')");
}


Интересные пироги приключились при попытке подключить admin.js, в которой находится loadFck() только для админского модуля (хотя, писуя сию строку, я подумал, что с нижеследующим можно было бы не заморачиваться, буде у нас файл default.js). Вспомнил я внезапно про Admin_Bootstrap - буцтрап модуля. Натурально, следует в нем подгрузить admin.js с помощью _initHeadScript(), аналогичной тому, что в дефолтном буцтрапе. Но вот беда: не нашелся хелпер headScript(). Где-то я с подобным сталкивался, подумал я и вспомнил, как полчаса назад у меня не виделся хелпер baseUrl() по причине отсутствия _initView(). И застучали пальцы по клавишам...
protected function _initView()
{
$view = $this->getApplication()->getResource('view');
return $view;
}

В этом ините нету ничего лишнего. Я даже выкинул из него setBaseUrl(). К $this->getApplication() я пришел опытным путем. Чтобы получить $view, я создавал инстанс дефолтного бутстрапа и хотел из него что-то взять аж через конфиг... а, точно - я ж устанавливал бейзурл. Но конструктор бутстрапа хотел $application, и получил $this->getApplication(). После чего для меня стало очевидно, что создавать инстанс нет смысла, и можно обойтись просто $this->getApplication()...

19 August, 2009

Random and Instant

There are some places to go
And where they are I don't know
And if you ask me some time
I'd rather bring you some wine

16 August, 2009

Мой опыт в создании модульного приложения на Zend Framework: Часть 4

Подошла очередь форм.

Решил, что так, как писали мы раньше - создание формы в контроллере - некрасиво. Захотелось мне вынести формы в отдельную папочку forms в руте модуля.

Первое, с чем приходится столкнуться, - номенклатура. Как помнится, у меня два модуля: default и admin. Соответственны и неймсппейсы. Т. е. в дефолтном модуле я создал уже ранее модель Default_Model_Feedback в папке models, а в админском - Admin_Model_User в папке admin/models. Аналогичным образом создаем и формы. Например, первая форма, которую я создал - форма логина Default_Form_Login.

В начале меня вводило в ступор и непонимание то, что я не мог создать, например, файл forms/LoginForm.php так, чтобы он увиделся аналогично контроллерам (ср. controllers/UserController.php). Очевидно, таковое было обусловлено моим стремлением к перфекционизму: мне хотелось, чтобы всё было красиво, и сия пелена застилала мне глаза :) Однако, трезво взглянув на вещи, я вижу, что, пожалуй, я был не прав. Хотя вот что меня смутило. Согласно мануалу ZF, Zend_Application_Module_Autoloader, comes with the following mappings:
api/ => Api
forms/ => Form
models/ => Model
DbTable/ => Model_DbTable
plugins/ => Plugin
Т. е. выходит, что у нас будут, если будут, Default_Api_Foo, Default_Plugin_Bar etc.

Дальше. Создал я свой класс формы. В нем создаю конструктор, в который передаю $options = null. Ну и внутри создаю форму, прежде вызвав конструктор предка:

parent::__construct($options);
$this->setMethod('post')
->setAction('user/login')
->setName('loginForm');
$login = $this->createElement('text', 'login')
->setLabel('Логин');
$password = $this->createElement('password', 'password')
->setLabel('Пароль');
$submit = $this->createElement('submit', 'submit')
->setLabel('Войти');
$this->addElements(array($login, $password, $submit));


Внимание: конструктор ничего не возвращает! Вероятно, это логично, но я попался.

12 August, 2009

Мой опыт в создании модульного приложения на Zend Framework: Часть 3

Дошло дело и до аутентификации.

Сначала - ACL (access control level). Создал файл Spod_Acl (в своем "подразделении" библиотеки), в нем прописал роли и ресурсы, а тж. allow и deny. Здесь всё.

Затем - Auth. Свой, по аналогии, Spod_Auth, как мы писали ранее и я не совсем понимал, я не писал. Точнее, не писал по тому принципу, по которому он сделан в одной из статей на девзоне. Я создал класс Spod_Authenticator, в котором, с позволения сказать, перегрузил метод класса Zend_Auth_Adapter_DbTable authenticate() - просто для того, чтобы было проще. Т. к. в "свой" authenticate() я поместил вызов и обработку "того", родного зендовского метода аутентификации:

public function authenticate($login, $password)
{
$authAdapter = new Zend_Auth_Adapter_DbTable($this->_dbAdapter, $this->_dbTable, $this->_identityColumn, $this->_credentialColumn, 'MD5(?)');
$authAdapter->setIdentity($login);
$authAdapter->setCredential($password);
return $this->_auth->authenticate($authAdapter);
}


Как видим, параметры - логин и пароль (мы ж аутентификацию пишем). А методы класса проиничены в конструкторе. В итоге вызывать надо так:

$sAuth = new Spod_Authenticator('users', 'us_login', 'us_pass');
$result = $sAuth->authenticate($login, $password);


Долго думал и страдал над ошибкой "No adapter found..." - точно не вспомню формулировку, но суть в том, что для Zend_Auth_Adapter_DbTable нужен наш адаптер к базюке. Конфиг адаптера - в апп.ини. Казалось бы, взять и вытащить по аналогии с другими ресурсами бутстрапа, типа $view = $this->getResource('view');. Я так и пытался. NULL, и хоть ты тресни... В итоге выцепил из старых проектов фактори конфига, получение из него db (натурально, этот самый адаптер пихаю в реестр и в конструкторе своего аутентификатора получаю). Так и сделал. Занялся следующей частью проекта... как тут случайно и внезапно наскочил в доке на то, что db и его адаптер надо получать так:

$resource = $bootstrap->getPluginResource('db');
$db = $resource->getDbAdapter();

02 August, 2009

Мой опыт в создании модульного приложения на Zend Framework: Часть 2

Вторая часть задачи.

В моем проекте должен быть, как я уже писал, админский модуль; а вот фронт-энд должен быть разделен на две одинаковые по структуре части. Первоначально я думал сделать для каждой из них свой отдельный модуль. Но ведь структура один в один, и я решил, что это неразумно. И тут мне на помощь вновь пришел Ероен Кеппенс! Похоже, я торчу ему пиво...

В своей другой статье он рассказал, как он сделал админский псевдо-модуль - "попросту" попрописывал руты. Я немного видоизменил его код, убрав из рутов :module - я не понял, зачем ему надо было его указывать - на мой взгляд, по крайней мере, в моем проекте, это кажется излишеством. Таким образом, у меня получилось три, а не четыре, рута. Кроме того, в конструктор Zend_Controller_Router_Route я не добавлял _layout - учитывая LayoutLoader в первой части (я, Ероен), я решил, что это лишнее. Вместо этого я написал роутеру, что мой псевдомодуль - на самом деле дефолтный модуль. Но также, чтобы различать, в каком псевдомодуле я нахожусь, там же прописал и переменную, которая видна в getRequest().

В итоге получилось:

$route = new Zend_Controller_Router_Route(
'ophtalmology/:controller/:action/*',
array('module' => 'default', 'section' => 'ophtalmology'));
$front->getRouter()->addRoute('ophtalmology_controller_action', $route);


и далее по тексту.

Мой опыт в создании модульного приложения на Zend Framework: Часть 1

Решил сделать все "правильно". Пишу, чтобы запомнились шаги - что-то типа self-manual...

Итак, упрощенная задача: приложение с двумя модулями - дефолтным и админским.

Естественно, сперва скачал последний фреймвёрк.

Затем создал системную переменную zf и в нее поместил путь к zf.bat (Zend Framework/bin/zf.bat).

Потом из командной строки командой zf create project создал проект. При этом вызывал из папки, в которой следовало создать проект, но почему-то тул попросил указать путь к проекту.

Не забыл скопировать библиотеку в мой_проект/library.

Дальше пошел гуглить :) Т. к. интересовало, как люди создают модульные проекты. В принципе, некий опыт был, но он, на мой взгляд, был каким-то... не совсем правильным.

Нашел статью некого Ероена Кеппенса, который очень мне помогает (начальное написание проекта все еще в процессе) - вот она.

До момента написания LayoutHelper сделал, в общем-то, всё, как и у него:
- zf create module admin;
- добавил в application.ini строки
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[]


За исключением того, что не добавил буцтрап в админский модуль и пока еще не проинитил в буцтрапе приложения _initAppAutoload() - т. к. мне непонятно, почему здесь мы видим App - в квикстарте никакого App нету... будем посмотреть.

Дальше создал папку application/views/layouts, в нее поместил default.phtml и admin.phtml - лэяуты для дефолтного и админского модулей соответственно.

Дальше, как и у мистера Кеппенса, добавил в конфиг следующее:
resources.layout.layoutPath = APPLICATION_PATH "/views/layouts"
resources.layout.layout = default
admin.resources.layout.layout = admin


А вот потом, несколько подумав, решил таки воспользоваться его хелпером для подгрузки лэяутов. Долго думал, куда же мне положить этот хелпер - у автора он лежит в его собственной лайбрари, но в предыдущих проектах мы клали экшен хелперыы прямо в approot, что мне кажется не совсем правильным - грубо говоря, засирается папка, да и как-то не по-зендовски это. В итоге, было решено в папке мой_проект/library создать папку для, так сказать, собственной библиотеки: мой_проект/library/Spod. И хелпер поместил по пути, аналогичному тому, где лежат экшен хелперы в родной зендовской библиотеке, предварительно, естественно, посоздавав соответствующие папки: мой_проект/library/Spod/Controller/Action/Helper/LayoutLoader.php.

Ну и проинитил в буцтрапе, как и автор.

После этого, обновив страничку, обнаружил ошибку, что мой класс не найден. Вспомнил, что автор в начале статьи прописал свою библиотеку в конфиг. Так же сделал и я:
autoloaderNamespaces.spod = "Spod_"

Работает so far :)

14 July, 2009

Бесіда про високі матерії

oleg, 14.07.2009 20:34:47:
ваще йа седня поразился шо в стране безработица... начт у нас в метро есь сортир, платный. на фходе в сортир сидит аффтарша, продает тикеты, дальше стоит турникет, очевидно нестандартный. а терь внимание вопрос - скока стоит сходить фсортир? правильный ответ - 1.50. риторический вопрос - нахера? :))))

spodmore, 20:35:36:
ну нет у них маркетолога :)))

oleg, 20:36:16:
ну почемуу?? низзя сделать метрошный турникет и пройти по жетону ...
(так мы работаем ночью (с) :))) )

spodmore, 20:36:32:
напиши статью и размести ее на глагне :)))

oleg, 20:42:00:
от у меня вопрос к тов. Мусееву - если "Через півроку всі каси з продажу жетонів у метро будуть замінені автоматами" то как я куплю 1 (Один) жетон?

spodmore, 20:42:41:
...но зато даже через півроку будет сидеть аффтарша и продавать билеты фсортир :))))

oleg, 20:42:51:
ну то понятно :)))

spodmore, 20:47:00:
а! ты не понял! еси тебе приспичит, то надо будет аццтаять ф очереди за жетоном фкассу. а есси не успеешь? :)))

oleg, 20:48:01:
аа... ну фсе для потребителя...

spodmore, 20:48:16:
для потребителей - окрущающие не оценят :))

oleg, 20:48:45:
(преццтавляю через полгода аффтара которому ОЧЕНЬ надо и который покупает билет фсортир за 1.50 в автомате, который принимает тока купюры :))) )

06 July, 2009

Знову пожаліюся

Roads, another nameless city, hitchhikers with no money. When you drive I sleep behind you, wake me when you're tired too.

Пожаліюся з того, що треба працювати, а понеділок, а сплю... навіть попри каву.

Власне, похолоднішало, що не може не радувати. 21 градус - нормально :)

ПРАЦЮВАТИ!!11

Roads, another nameless city, hitchhikers with no money. I'm driving now, you are asleep, and I am just about to weep.

Дякую за чудову музику гуртові Brainstorm.

03 July, 2009

That's Me In the Corner

That's me in the spotlight, losing my religion...

Ha. R.E.M. rule :) Just this song. Don't wanna yet to listen more of them.

And noww... switch!

Яергові думки про влоґ. І про те, що щось у мене щось із пальцями :) Не влучаю по клавішах. Можливо, ще сплю %) (Зараз прийшла бабця фахівець із клінінгу (прибиральниця цивільною мовою) в бандані "Самсунг".)

Так ось. Вирішив я, що можна було б порозмірковувати на певні теми. Скажімо, сьогодні прочитав новину про те, що американський підліток взяв участь у цікавому експерименті. Тринадцятирічному Кембелу дали на тиждень покористуватися сонівським касетним вокменом (20 років від дня випуску першого), а хлопчина юзав тільки айпод. Каже, що був дещо шокований, а особливо розчарувала відсутність кнопки шафл.

Та я не про це, я про реакцію більшості коментаторів цієї новини. Мовляв, оце американці тупі! (Ну тупиє - прямо як Задорнов.) Чомусь цілком дорослі люди, які, можливо, навіть старші за мене, не розуміють, або не хочуть свого розуміння виявляти, що прогрес не стоїть на місці (пардон за пафосний штамп).

У мене касетник з'явився якраз 13 років тому, у 1996. А цей хлопець тільки народився. Комп у мене з 1997. Музику на ньому слухати став, ну, років десять тому - тобто, дізнався про діджитал формат. Враховуючи, що до нас технічні новинки доходили (і доходять) трохи пізніше, ніж з'являються у США, нічого дивного, що парубок не знав ніколи касетника, я не бачу.

Така реакція коментаторів - це що? Невігластво? Дурість? Бажання принизити американців? Стадний рефлекс? Хтозна. Був здивований. Навів у відповідь приклад з лослес - мовляв, хочу скачати мп3, а його ніде нема, вже скрізь флаки. І що, мовляв, ті, хто не знають про мп3, дурні? Та навряд.

Дивився на ютьюбі одне відео, де паняночка (вирвано із контексту) радила думати двічі. Я так само раджу. Ба навіть бодай одного разу, можливо, вистачить.

Юзайте плоди прогресу на здоров'я! :)

14 February, 2009

February has April showers

Майже копірайт.

Зима скінчилася. Весна. Другий тиждень. Майже щодня дощі. Не літні, а тривалі, як восени.

Півроку тому, виявилося, радів дощу. Тепер би порадів сонцю. Хоча стоп. Сьогодні було сонце. Ледь не вперше за лютий.

Хочеться не знаю чого. Нічого не хочеться. Спати, як зазвичай. Сьогодні, традиційно, не дали поспати достоту. Втім, я не сильно розчарувався - було що робити і дивитися по тіві.

Зробив усе, завтра хочу тільки дивитися в ящик. І не хочу дощу. Хочу літа, адже відпустка. І грець із нею зі спекою - бо ж відпустка.

Недавно почитав Коцюбинського. У школі пробував його читати - дуже не сподобалось. Причому, тоді не сподобалось саме те, що сподобалося зараз - автор чудово змальовує природу, немов художник. Ти читаєш і ніби сам переносишся у ті місцини, де триває дія твору. "Тіні забутих предків" написані просто геніально (хоча половини слів не знаю - сам гуцульський діалект). А от у Fata Morgana мова буквально тече, хоча там немає тих неймовірних пейзажів. Інші твори теж написані красиво.

Прочитавши Коцюбинського, теперь не хочеться читати ще когось - боюся змарнувати той післясмак, який ще досі триває. Тому взяв Біблію - продовжив читати з того Параліпоменона, на якому спинився кілька років тому: "А народив Б, Б народив В і Г, Ґ і Д його сини, і було його за переписом двадцять шість тисяч"...