Вопрос, так, невзначай. Хотели бы вы аналог получить в Symfony аналог наследования шаблонов из Django?
PS. Палюсь… Ой как палюсь. :)
Вопрос, так, невзначай. Хотели бы вы аналог получить в Symfony аналог наследования шаблонов из Django?
PS. Палюсь… Ой как палюсь. :)
На Хабре появилась замечательная статья “Наследование шаблонов в Smarty“. Впервые эта штука мне встретилась в Django, теперь вот есть и для Smarty. Посмотрел на систему view в Symfony… Эх… Для реализации подобного, навскидку, прийдется довольно сильно переделать внутренности этого фреймворка.
В Zend Framework всё замечательно! …пока не начинаешь его использовать на полную катушку…
Сегодня я просто приведу пример трех абсолютно различных синтаксисов, которые используются в Zend_Db для фетчинга, добавления и удаления записей.
В Zend_Db везде можно использовать array в качестве where, только нигде не сказано, как этот array должен выглядеть, а аналогий не прослеживается…
$productsTable = new Products();
Обычная вставка нового продукта:
$productsTable->insert(array(
'name' => 'Fucked Product!',
'price' => 999.99,
));
Всё OK.
Поиск продукта по аналогии со вставкой:
$productsTable->fetchRow(array(
'name' => 'Fucked Product!',
'price' => 999.99,
));
Выдаст SQL типа такого:
SELECT products.* FROM products WHERE (name) AND (price)
Что приведет к выдаче первого попавшегося продукта (что, естественно, нам не подходит).
Правильный вариант поиска продукта:
$productsTable->fetchRow(array(
'name = ?' => 'Fucked Product!',
'price = ?' => 999.99,
));
Удаление продукта по аналогии с поиском:
$productsTable->delete(array(
'product_id = ?' => 1000,
));
Выдаваемый SQL:
DELETE FROM products WHERE 1000
Приведет к удалению всех продуктов (sic!).
Причем самое интересное, что в случае со строкой - у вас будет ошибка, а вот в случае с числом, которое escape’ить не нужно - будут проблемы. Я с ними на днях столкнулся, и… получил пустую таблицу, в которой были важные данные. :( Благо, бэкап был.
Удаление продукта по аналогии со вставкой:
$productsTable->delete(array(
'product_id' => 1000,
));
Полностью аналогично предыдущему случаю.
Правильный вариант удаления продукта:
$productsTable->delete(
$productsTable->getAdapter()->quoteInto('product_id = ?', 1000)
);
Вот вам и офигенный ZF. Если использовать его не постоянно, а изредка для отдельных задач - натыкаешься на подобные грабли.
Когда я ставил себе прошивку 1.02 beta 1, тогда же была доступна и прошивка 1.02 beta 7, но ставить её нужно было не через веб-интерфейс, а несколько по-иному (по telnet, но это пофиг, главное, что не было нигде инструкций - как конкретно грузить это всё), с чем мне было влом париться. Но вот две недели назад вышла очередная beta, на этот раз восьмая, которую можно было ставить как обычно.
Недолго думая - поставил. Запускаю торрент - работает. Думаю - “Замечательно”, и вижу, что закачка прекращается, а рутер опять наглухо виснет. Сука!
Итог был таков: рутер был отключен до появления очередной прошивки… и продолжалось это вплоть до появления на форуме этого сообщения:
А не конец заключается в том, что на самом деле из DIR-400 очень даже неплохая штука, когда на нее ставишь линукс… Работает - безотказно, как автомат Калашникова…
Скорость повышается реально… Я уже перепробовал все что только можно было перепробовать… После перехода на другого прова - даже коннектиться перестал… У Длинка на сайте выложена новая прошивка… Встать то она встала у меня - пропало радио. Вернее, саму точку вижу, но передачи данных нет…
Откатиться на предыдущую прошивку еле удалось…
Пришлось много гуглить, прежде чем решил проблему… Теперь - с Длинком нет проблем!
ВЫВОД: Разработчики выпустили неплохую железку, умную… Но вот их программеры - никуда не годятся…
P.S. - Если бы так строители строили дома как программисты от Длинка пишут программы, то первый бы залетевший воробей разрушил бы всю цивилизацию!!!
Оно заставило меня забросить всё и… начать думать, что бы это могло значить… Через пару минут меня осенило и я полез искать другую прошивку, неофициальную, в англоязычном интернете. И я её нашел!
Поподробнее о том, что это за прошивка (а точнее - серия прошивок) можно узнать на сайте DD-WRT, а конкретнее - в About. Сразу скажу, что это не прошивка к конкретно моему модему, эти прошивки работают на куче устройств, так что возможно на Ваш рутер её тоже можно поставить, создаются эти прошивки энтузиастами, и качество их заслуживает всяких похвал.
В общем, почитав о прошивке, поговорив с автором вышеприведенного сообщения я был готов перепрошить этот рутер, потерять на него гарантию, и обрести взамен качественно работающий продукт…
Продолжение следует…
Млять, ну вот нахера я купил этот грёбанный рутер!
Еще несколько дней назад ничего лучше этой фразы я о своём новом рутере D-Link DIR-400 сказать не мог - настолько всё было плохо, но обо всём попорядку.
Где-то три-четыре недели назад я всё-таки решился купить себе рутер. Главными требованиями были:
На одной из фирм мне посоветовали (месяца два назад) взять DIR-400, но тогда мне хотелось взять не рутер, а модем с вышеописанными характеристиками и я отказался. Но так как D-Link DSL-2640U мне у нас в продаже найти так и не удалось - я всё-таки передумал и решил взять модем. Недолго думая - поехал в магазин и взял этот DIR-400, даже не повсмотрев в интернете, что это такое и какие о нём отзывы… Я офигенно лоханулся…
Просто пиздец! Короче говоря, при попытке открыть QIP и законнектится в Google Talk - модем тупо подвисал и иногда перезагружался, а иногда приходилось тупо его перегружать вручную путём передергивания кабеля питания. Иногда подобное приходилось делать еще в случае отправки POST-запросов в браузере.
Полез на форум D-Link’а… И нашел это (вкратце - 30 страниц о том, что это не рутер, а хрень полнейшая). Опечалился, но попробовал поставить новую прошивку…
В D-Link работают сплошные уёбки! По сравнению с предыдущей прошивкой не изменилось, ровным счетом, ничего.
Полез дочитывать ветку форума, обнаружил, что там вовсю пользуются бета-версиями следующей прошивки. Ну что ж - риск - благородное дело.
О чудо! Google Talk заработал! QIP перестал “ложить” рутер! Браузер работает замечательно! Я уже возрадовался, но… Радость моя продлилась вплоть до первого запуска uTorrent - рутер успешно попытался что-то грузить, но через пол минуты сдался и ушел гулять висеть.
Всё-таки уёбки!
Продолжение следует…
На днях вышла долгожданная новая версия достаточно популярного в узких кругах ORM - Propel 1.3.
Из интересных мне нововведений:
Поподробнее можно прочитать на RedoTheWeb, в также на офсайте Propel.
PS. Сам еще не юзал, но нужно будет попробовать. На мой взгляд, самый интересный момент связан с тем, можно ли переопределить фетчинг записей, например - выбирать только записи с is_hidden = false, да так, чтобы переопределять пришлось только одну функцию.
Update: Как написали на официальном блоге Symfony - “Object Instance Pooling is not an Identity Map because the database request is still needed”. Нужно будет изучить этот вопрос.
Сегодня узнал, что в Приватбанке среди программистов пропагандируют подход, описанный в Getting Real, более того - все программисты обязательно должны прочитать эту книгу и знать принципы, изложенные в ней. Удивлён. Очень удивлён. Приватбанку респект.
Если вы используете Symfony, планируете это делать или просто интересуетесь этим фреймворком - значит нам нужно поговорить. Мои контакты:
… но как-то необычно. Если в предыдущие разы просто переставали учитываться читатели, использующие Google Reader, то в этот раз такие читатели есть, но их количество по непонятным причинам уменьшилось ровно в 10 раз:
Смотрим, делимся впечатлениями, пишем о найденных багах, высказываем пожелания.
Последние комментарии