Блог о разработке CMS
tovit

С не давних пор начал писать блог с размышлениями о разработке собственной CMS (Системы управления контентом).

Описание будет даваться на основе уже написанной мной CMS на базе CodeIgniter 1.7.1. Но есть желание освещать вопрос не только в ключе это фреймверка.

Приглашаю к "закидыванию помидорами" здесь: Изобретатель "велосипедов"
 

Метки: ,

InnoDB и Внешние ключи. Или. Незговорчивый MySQL.
tovit
Столкнулся с нехваткой структурированной информации по поводу правил формирования внешних ключей для движка InnoDB.
Книга, MySQL на примерах, купленная когда-то давно, разочеровала практически полным отсутствием информации по вопросу.

Чтож -- пришлось шагать протоптанным путем "Научного тыка".

Воспользовавшись MySQL Workbench начал переделывать уже созданную базу данных. Если не брать в учет не слишком высокую стабильность программы под Linux, то софтина справляеться с этой задачей на 70%. Об остальных 30 процентах граблей и пойдет речь далее.

Думаю, не стоит тут пытаться объяснять что такое Внешние связи таблиц и для чего они нужны. Если читателю не понятен данный вопрос -- дальше читать смысла нет, лучше обратиться к авторитетным источникам по вопросу Реляционных баз данных.


В качестве теоретического введения, предлагаю статью местного автора http://denis-in-ua.livejournal.com/7672.html


..Свернуть )
Метки: , , ,

Поправка для расширенного роутинга
tovit
...давно заметил, отписался на форуме русскоязычного сообщества, а сюда забывал написать))...

Обнаружил слабость расширения роутинга. Проблему можно охарактеризовать как "не досмотрел...". Вся суть в том, что если у Вас имеется строка с описанием параметров содержащая похожие слова, то возникнут проблемы с подстановкой. Пример: :ajax/:ajaxmethod/... при формировании строки адреса, если первым в массиве был передан элемент ajax, то в результате работы функции построителя, а именно цикла в конце функции:

  foreach($array as $k => $v)
{
$rule[self::URL] = str_replace(':'.$k, $v, $rule[self::URL]);
}

Будет заменен и второй параметр, что явно будет ошибочной подстановкой.

Исправление этого бага:

  foreach($array as $k => $v)
{
$rule[self::URL] = str_replace(':'.$k.'/', $v.'/', $rule[self::URL]);
}
Как видите, все просто.


Новый функционал роутинга для CodeIgniter
tovit
Одно из слабых мест CodeIgniter, на мой взгляд, это функционал роутинга, а именно -- формирование строки адреса в коде приложения.

Если сам по себе роутинг очень удобен и позволяет строить довольно замысловатые схемы перестройки адреса, то формирование строки адреса для ссылки на веб странице ложиться полностью на плечи программиста.
И вот здесь возникает основная проблема: Роутинг по приложению описываеться компактно в одном файле, где все очень наглядно и понятно, а строки адресов для ссылок формируються в десятках файлов (контроллеры или библиотеки) и везде, программисту нужно строго формировать строку адреса, сегмент за сегментом? разделяя слешами, опираясь при этом, на единый конфиг роутинга. И вот... наступил момент, когда приложение не вероятно сильно разраслось и по какой-то причине понадобилось пересмотреть роутинг и тут я повторюсь -- файл натсройки роутинга один, а файлов, где формируються строки для ссылок -- много... И вот тут начинаешь понимать слабость красивой функции site_url.
Читать дальше...Свернуть )

Вложенные запросы в CodeIgniter при помощи ActiveRecord
tovit
Вся соль проблемы была в том что нет явного способа описать вложенный запрос средствами ActivRecord в CI.


Не бедум спорить по поводу качества запроса, о том, возможно ли его преобразовать в запрос без вложений... Будем считать, что это не возможно.


Итак -- внимание! Найденное мной решение проблемы:

Читать дальше...Свернуть )

$150 000 долларов за любимца.
tovit
150 тысяч долларов -- именно такую цену заплатила семья Отто (Edgar и Nina Otto) за щенка ланцелота.


Казалось бы, бывали сделки с животными и на большие суммы, но вся соль ситуации....Далее... фото...Свернуть )
Метки:

iPhone разруливает кубик-рубик
tovit
Маразм... но прикольно. Приложение для iPhone поможет правильно сложить кубик-рубик.

  • Сообщите программе в каком состоянии ваш кубик-рубик в данный момент. У вас есть 2 способа:

    1. Вручную ввести наборы цветов граней

    2. Просто сфотографировать их и программа сама распознает расцветку


  • Подождать пару секунд и программа покажит в наглядном 3D-виде всю последовательность действий, что бы сложить все грани


Далее... смотрим видео.Свернуть )
Метки: ,

CodeIgniter: Cache на базе Zend_Cache -- LifeTime (исправление библиотеки)
tovit
Библиотека кеширования для CodeIgniter основанная на Zend-Cache, описанная в русской Wiki содержит неточность в работе.
Тема обсуждения на форуме

Неточность найденная мной связана с возможностью установки специальной длительности хранения конкретного элемента кеша.

В библиотеке написанной пользователем Ladygin по непонятной причине блокируется возможность установить отдельное значение длительности кеширования. Его код в не зависимости от параметров, производил сохранение кеша со стандартной длительностью хранения указанной в конфиге.
Читать дальше...Свернуть )

90 - 90
tovit
Наткнулся на очень близкий по душе афоризм:

Следствие закона Паркинсона “девяносто-девяносто”:

Первые 90% кода отнимают 90% времени разработки. Оставшиеся 10% кода отнимают вторые 90% времени разработки.

+Свернуть )
Метки:

Обход глюка Active Record в CodeIgniter
tovit
Столкнулся с проблемой, когда при использовании Active Record, результирующий запрос имеет синтаксическую ошибку.
Читать полностьюСвернуть )

?

Log in