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));


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