php, разработкаORM — это сложная штука

В пятницу днем узнал что моя реализация ORM дала сбой на большом кол-ве записей :) Пришлось ставить заглушку и выяснять что там случилось. Оказалось все просто — когда я делал ORM, я «пропустил» момент оптимизации. И так получилось что сначало все работало как надо, а потом записей стало так много, что скрипт просто не выдержал и вылетал с max execution time, нашел место проблемы (дуралей поставил получение всех записей, а потом только пагинатор убирал не нужные) и до вечера переписывал код :)

Второй вариант я сделал часа за 3. Работало отлично, hasMany, hasOne все в одном запросе через JOIN (Вася, я увидел это у тебя и мне понравилась реализация :) ) Разбор полученных данных и разброс в массивы.

Все круто, думал я :) А потом до меня дошло что когда мы используем hasMany, мы получаем 4 записи (к примеру) с одинаковыми данными текущей модели и с разными модели hasMany. Разбирается это все прекрасно, но вот пагинатор не сработал бы. Фактически мы после обработки получаем 1 запись. А LIMIT засчитал как за 4 записи.

Поэтмоу мне пришлось вернуть часть старого кода. Я оставил JOIN'ы, потому что с ними удобно было ставить запросы. Из-за запросов у меня были как раз проблемы в самом первом варианте. Там нельзя было фильтровать записи по полю из ассоциативной модели. Теперь можно, но пока пишу пост подумал что нада пару вещей проверить, на то как вложенности работают :) Но должны...

В итоге я получил работающий 3ий вариант, работает быстро. Записи берет только реально нужные через LIMIT. Жду когда протестим на основном сервере.

разработкаСистема To-do списка

Давно уже задумывался о создании простенькой системы todo списка для рабочих целей. Есть конечно вариант от 37signals — Ta-Da List, но там интерфейс мне не очень нравится. Довольно мелко написано и немного не удобно. Конечно, все остальное отлично сделано, не зря они 37signals :)

А пока я думаю о такой штуке:

  • простой минималистичный интерфейс
  • dashboard — панель «всего», задачи и только задачи, остальное будет работать через AJAX и не должно мешать просмотру списка задач
  • добавление задачи одним движением. написал, нажал ентер — задача в списке. тоже все через AJAX
  • закрытие задачи одним кликом.
  • каждые день с чистого листа. просмотреть задачи вчерашние можно будет через календарь
  • теги

Пока ещё думаю где найти время для всего этого и на чем писать. У меня два варианта — Ruby On Rails и cakephp. Рельсы я плохо знаю, руби тем более :( cakephp знаю, наброски уже были когда-то давно сделаны, но заброшены. Но cakephp все же на PHP, а я хочу попробовать Руби изучать. Видимо все-таки придется изучать рельсы и руби :)