Архив
Публикации с меткой ‘программизмы’
Вынес несколько вещей для себя из текущего проекта.
- ACL имеет смысл только тогда, когда предполагается изменение или назначение ролей. Если роли заранее известны и не предполагается их динамически менять – фпень.
- Старые отточенные куски кода имеют гораздо большую ценность по сравнению с новыми придуманными концепциями, даже если они не совсем вписываются в общую архитектуру приложения.
- Дебаг сложных кусков кода надо делать пошагово и поэтапно, исключая вариант вдумчивого и тяжелого взгляда на код в попытках понять, где косяк.
- Концепт корпоративных сайтов нихрена не меняется со временем. Меняются только технологии.
- Сопрягать два разношерстных скрипта общим размером по мегабайту реально, только если каждый из них написан с минимумом заморочек.
Таки да, если бы я три года назад нахреначил систему комментариев на AJAX, меня бывшее им в то время начальство подвесило бы за интересное место.
Казалось бы, что может быть более абсолютным, чем мера? Ан нет, есть такие вещи, которые невозможно измерить абсолютно, например – близость. Нет, в этом посте не будет речи о человеческих отношениях, скорее об искусственном интеллекте и распознавании образов, которые занимают мой мозг вот уже почти месяц. Читать далее…
Последнее время довелось изрядно попрактиковаться со связкой Kohana + Doctrine, и этот опыт меня весьма порадовал. Приложения пишутся действительно очень и очень быстро – на порядок быстрее, чем я мог написать до того. Конечно, есть и свои сложности, например leftJoin в DQL это фактически не присоединение какой-то левой таблицы, а присоединение именно той таблицы, которая описана в отношении, которое и запрашивается у джойна. То есть мы как бы присоединяем к основному объекту отношение. Все возможные отношения описываются в файле базы – это логично. С другой стороны, это даже еще более логично: не будет соблазна сджойнить то, что сджойниванию не подлежит.
Интересный косяк вылез при трехкратном джойне в запросе: все просто повисло и вылетела штука о превышении лимита памяти %) Сначала забил, потом опять где-то такая же фигня вылезла, начал разбираться – непонятно! А песец подкрался с той стороны, с какой его не ждали, но догадывались: если страницу обработать не удается, кохана тупо трейсит все исключения и выводит в браузер. Но поскольку doctrine это ну очень серьезный ORM, то трейсы его связей очень многочисленны и поэтому нехило грузят ядро коханы и память, в результате именно на выводе ошибки php хавает все положенные ему 128 метров и мирно вываливается. Аминь. Ушел в ядро коханы и закомментарил трейсинг, чтобы не лишиться хотя бы минимальных сообщений об ошибках – все заработало как часы с потреблением памяти меньше 6 мегабайт. Очень доволен собой.
А еще к четвергу готовлю лекцию по TDD. Ололо.
Други мои, откуда вы взяли, что обращение к модели напрямую из контроллера – это ненормально? Откуда вы взяли, что если у меня в проекте торчит модель по чистому паттерну Active Record, то это должно исключать наличие любых Query Builder-ов? Да, возможно в CodeIgniter с его извращенным представлением о моделях это и необходимо, но в той связке Kohana + Doctrine, которую я использую, это не является обязательным – можно писать так, как хочется, главное, чтобы работало. НО, если получается очень много одинакового кода, можно подумать о том, как чисто и безболезненно оформить его в виде дополнительных логических единиц – приватных методов в текущем контроллере, если один и тот же код существует в нескольких методах одного контроллера, или вообще в хелпер или библиотеку, если этот код не имеет большого числа параметров, но используется в нескольких контроллерах. Это же так просто: надо просто делать так, чтобы было лаконично, просто для понимания, работало и при этом не было дублирующегося кода. Всего четыре правила!
Как уже всем известно последние пару месяцев я только и делаю что читаю инструкции к разнообразным фреймворкам и пытаюсь адаптировать их к хоть какой-то разработке. Пока получается слабо х) И всего, что я рассмотрел, особенно выделилось symfony своей автоматизацией всего и вся, однако с настройкой слишком много возни – полдня просидел и ничего не сделал. Zend Framework конечно хорошо, но лучше уж я буду из него куски дергать – слишком уж заумно, хотя APIлки запилены хорошо. Далее пошел Yii, намедни обзавевшийся альфа-версией 1.1, но от этого не менее монструозный, чем symfony. Ломаный английский в документации к движку слегка напряг, в целом концепт понравился, но похоже я до него еще не дорос, а может и не дорасту. Последнее, что я смотрел, в силу того, что эта штука используется в нашей организации, был CodeIgniter – интересно, ничего лишнего, сковывает фантазию по минимуму. Однако ORM откровенно никакой (строго говоря его там и нет), а писать запросы руками после symfony как-то стало лениво – зажрался %) Попытался подружить его с Doctrine – не удалось. С другой стороны писать в стиле php4 тоже как-то не слишком радовало. Сел вечером снова за поиски и посмотрел в сторону Kohana, который когда-то отбросил по причине того, что он мне не понравился. После всех рассмотренных фреймворков и после CI в частности – как-то даже никакого отвращения, вижу сплошные плюсы. Попробовал подружить его с Doctrine – нашлись с первого запроса сторонние хуки – и получилось! Кодировка в Doctrine тем не менее страдает, но прописанные в хуке простые строчки
$conn->setCharset(‘utf8′);
$conn->setCollate(‘utf8_general_ci’);
решили и эту проблему. Красота и восторг. На выходных начинаю пытаться делать сайтец для инноваций, предположительно на Kohana. Если мне понравится, то думаю что перевести остальных с CI на Kohana не составит никаких проблем – это ведь практически одни и те же яйца, только с разных ракурсов.
|
|