CodeIgniter → Миграции баз данных — интеграция с вашим приложением
Данная статья посвящена практическому использованию библиотеки Migraton, появившейся в обновлении CodeIgniter версии 2.1.0. Настоятельно рекомендую вам перед ознакомлением с данным материалом прочесть первую часть статьи, в которой говорится непосредственно о создании миграций.CodeIgniter → Миграции баз данных — обзор библиотеки и ее использование
Как вы уже могли прочесть, недавно вышла новая версия CodeIgniter, одним из нововведений которого является библиотека Migration. Один из главных ее разработчиков, Phil Sturgeon был настолько воодушевлен удобством управления версиями баз данных для Rails, что решил создать аналог такого метода для CodeIgniter, и вот, в конце-концов вы можете видеть эту библиотеку в официальной поставке.Из этой статьи вы получите общее представление о миграциях, а также научитесь их создавать. Во второй же части, мы с вами увидим, как легко они могут быть интегрированы в ваше приложение.
Данная статья будет полезна начинающим пользователям CodeIgniter, но я надеюсь что и более продвинутые коллеги узнают об этой чудесной библиотеке и подчерпнут для себя что-нибудь новое.
Кроме всего прочего, данная библиотека совсем не сложна, и реализовать ее при желании для любой другой платформы не составит большого труда!
CodeIgniter → Вышел релиз CodeIgniter 2.1.0
Релиз состоялся 14-го ноября 2011 года. На момент написания статьи (21-е ноября) changelog на сайте CI так и не выложили. Поэтому решил сделать перевод changelog-а из архива с фреймворком. Так что давайте взглянем, чем же нас порадуют разработчики.Сразу даю ссылку на оригинальный Change Log v 2.1
CodeIgniter → Использование драйверов в CodeIgniter из песочницы
Недавно, просматривая руководство пользователя CodeIgniter, случайно обнаружил новые для себя пункты о драйверах и их создании. Поскольку написано в них немного, я решил рассмотреть эту тему подробней.
Итак драйвер — это особый тип библиотеки, которая состоит из одного родительского класса и нескольких дочерних. Дочерние классы получают доступ только к родительскому классу, но не имеют доступа к свои собратьям. Термин «дочерний» на самом деле не наследует поля родителя, а лишь получает к ним доступ.
Драйверы служат для разбиения ваших библиотек на отдельные классы и в CodeIgniter представляют собой реализацию структурного шаблона проектирования Декоратор.
Итак драйвер — это особый тип библиотеки, которая состоит из одного родительского класса и нескольких дочерних. Дочерние классы получают доступ только к родительскому классу, но не имеют доступа к свои собратьям. Термин «дочерний» на самом деле не наследует поля родителя, а лишь получает к ним доступ.
Драйверы служат для разбиения ваших библиотек на отдельные классы и в CodeIgniter представляют собой реализацию структурного шаблона проектирования Декоратор.
Я пиарюсь → Брокер компьютерной помощи

Здравствуйте друзья, недавно меня посетила идея, но идея не простая, а своеобразная. Сейчас расскажу подробнее. Все мы когда-либо оказывали услуги соседям, друзьям, просто знакомым знакомых — услуги по настройке или ремонту домашнего «железного» друга. Подобные случаи до сих пор возникают у большинства из ИТ-шников, ведь «компьютерщик» это в глазах многих выглядит, как в этой теме. И домашний пользователь зачастую пользуется услугами знакомых, но есть несколько но...
CodeIgniter → Codeigniter: делаем сессии наконец стабильными (прежде всего для авторизаций)
Сессии в Codeigniter хороши всем. Правда, очень удобно сделаны, особенно когда вы храните сессии в БД (что я считаю единственно верным). Куки шифрованные, в куках ничего, кроме идентификатора нету. Они привязываются к user_agent и, опционально, к IP. Красиво, безопасно.
Но есть у них очень существенный недостаток: жизнь сессии считается от поля last_activity. Это значит, что если у вас стоит expire сессии в двое суток, то при обращении к сессии, у которой last_activity < time()-172800, она ликвидируется и начинется новая. Следственно, для того что бы пользователям не приходилось каждый раз логиниться на сайт, last_activity нужно поддерживать в акутальном состоянии.
Поле last_activity обновляется в двух случаях: когда вы записываете что-то новое в сессию, либо когда сессия обновляется (по-умолчанию каждые 5 минут, опять же, относительно last_activity; указывается в конфиге). И вот главная проблема в том, что при обновлении сессии меняется session_id и текущая сессия у пользователя сессия прерывается, стартует новая.
Откровенно говоря, подобное поведение сессий привело меня в состояние… удивления. В таких реалиях использование родных сессий в качестве инструмента поддержки авторизации кажется невозможным…
Проблема «животрепещущая», о ней часто вспоминают на форумах Codeigniter, но толкового решения там нигде я так и не увидел.
Но голь, как известно, на выдумки хитра, поэтому простое решение таки нашлось.
Но есть у них очень существенный недостаток: жизнь сессии считается от поля last_activity. Это значит, что если у вас стоит expire сессии в двое суток, то при обращении к сессии, у которой last_activity < time()-172800, она ликвидируется и начинется новая. Следственно, для того что бы пользователям не приходилось каждый раз логиниться на сайт, last_activity нужно поддерживать в акутальном состоянии.
Поле last_activity обновляется в двух случаях: когда вы записываете что-то новое в сессию, либо когда сессия обновляется (по-умолчанию каждые 5 минут, опять же, относительно last_activity; указывается в конфиге). И вот главная проблема в том, что при обновлении сессии меняется session_id и текущая сессия у пользователя сессия прерывается, стартует новая.
Откровенно говоря, подобное поведение сессий привело меня в состояние… удивления. В таких реалиях использование родных сессий в качестве инструмента поддержки авторизации кажется невозможным…
Проблема «животрепещущая», о ней часто вспоминают на форумах Codeigniter, но толкового решения там нигде я так и не увидел.
Но голь, как известно, на выдумки хитра, поэтому простое решение таки нашлось.
CodeIgniter → Каркас для web-приложений, построенный на CodeIgniter из песочницы

Наверняка, многие веб-программисты изучали и, может быть, даже использовали такой замечательный фреймворк как CodeIgniter. Мой выбор пал на него ввиду того, что у него самый низкий порог вхождения, он наиболее прост в изучении, хорошая документация, быстрый и т.д. и т.п. Для простых проектов самое «оно», чтоб попробовать свои силы именно как разработчик. Само собой, для более серьезных проектов лучше использовать более функциональные и навороченные фреймворки.
Далее буду описывать, как я «апгрейдил» CodeIgniter, чтобы использовать этот каркас для разных проектов, т.к. базовый его функционал и примеры из документации, мягко говоря, очень простые, а в жизни всё гораздо сложнее. Итак, начнем-с.
Блог компании CUBRID → PHP Фреймворк CodeIgniter — скоро для пользователей CUBRID
Заголовок уже говорит обо всем. Но я расскажу более подробно о начале разработки и взаимодействии CUBRID с CodeIgniter. Также здесь Вы узнаете об отличиях между CUBRID и MySQL с точки зрения разработки и адаптирования приложений.
В начале этого месяца я решил поработать над драйвером CUBRID для CI — популярного PHP фреймворка, который используется очень многими Веб разработчиками. Один из веб сервисов в нашей компании хочет использовать CI у себя с CUBRID. К счастью, у этого фреймворка довольна интуитивная структура, что позволило мне быстро найти классы, которые необходимо унаследовать и реализовать для CUBRID.
Драйвера всех остальных поддерживаемых СУБД я нашел в директории /system/database/drivers. Так как CUBRID поддерживает более 90% SQL синтаксиса MySQL, не было необходимости начинать все с нуля. Я начал работать над уже готовым MySQL драйвером для CI. На следующий день у меня уже был рабочий код CUBRID драйвера. Пару дней спустя я провел тесты (к сожалению, как сказал один из разработчиков CodeIgniter, у них еще нет юнит тестов, которые охватывали бы весь фреймворк, включая драйвера баз данных, поэтому мне пришлось писать свои тесты). Как только драйвер прошел все тесты, я связался с их разработчиками и отправил pull-запросы в главную ветку и ветку для разработок.
Ниже я опишу, какие части кода я изменил в MySQL драйвере, чтобы он стабильно заработал для CUBRID. Надеюсь, эти записи будут полезны тем, кто планирует влючить поддержку СУБД CUBRID в своих Веб приложениях.
В начале этого месяца я решил поработать над драйвером CUBRID для CI — популярного PHP фреймворка, который используется очень многими Веб разработчиками. Один из веб сервисов в нашей компании хочет использовать CI у себя с CUBRID. К счастью, у этого фреймворка довольна интуитивная структура, что позволило мне быстро найти классы, которые необходимо унаследовать и реализовать для CUBRID.
Драйвера всех остальных поддерживаемых СУБД я нашел в директории /system/database/drivers. Так как CUBRID поддерживает более 90% SQL синтаксиса MySQL, не было необходимости начинать все с нуля. Я начал работать над уже готовым MySQL драйвером для CI. На следующий день у меня уже был рабочий код CUBRID драйвера. Пару дней спустя я провел тесты (к сожалению, как сказал один из разработчиков CodeIgniter, у них еще нет юнит тестов, которые охватывали бы весь фреймворк, включая драйвера баз данных, поэтому мне пришлось писать свои тесты). Как только драйвер прошел все тесты, я связался с их разработчиками и отправил pull-запросы в главную ветку и ветку для разработок.
Ниже я опишу, какие части кода я изменил в MySQL драйвере, чтобы он стабильно заработал для CUBRID. Надеюсь, эти записи будут полезны тем, кто планирует влючить поддержку СУБД CUBRID в своих Веб приложениях.
CodeIgniter → Консоль для CodeIgniter из песочницы
Добрый день Хабрасообщество.
Выношу на ваш справедливый суд консоль для PHP фреймворка CodeIgniter.
Перед этим небольшое пояснение — я не являюсь фанатом CI, но, так как приходится работать в команде пополняющейся новобранцами, выбирается наиболее легкодоступный для освоения инструмент. Это же и касается ОС на которой ведется разработка Windows, хотя инструмент тестировался и прекрасно себя чувствует в Linux-based системах, по крайней мере в Ubuntu. Это является прототипом, поэтому код можно критиковать бесконечно.
Небольшое иллюстрирующее видео:
Выношу на ваш справедливый суд консоль для PHP фреймворка CodeIgniter.
Перед этим небольшое пояснение — я не являюсь фанатом CI, но, так как приходится работать в команде пополняющейся новобранцами, выбирается наиболее легкодоступный для освоения инструмент. Это же и касается ОС на которой ведется разработка Windows, хотя инструмент тестировался и прекрасно себя чувствует в Linux-based системах, по крайней мере в Ubuntu. Это является прототипом, поэтому код можно критиковать бесконечно.
Небольшое иллюстрирующее видео: