17th Август 2011 | Категории: FuelPHP, PHP | Метки:

Совсем недавно, 30 июля 2011 года состоялся финальный релиз версии 1.0 одного очень любопытного фреймворка. Встречайте FuelPHP. Формально — это форк от фреймворка Kohana, который в свою очередь является форком от CodeIgniter. Тем более примечательно, что в основных разработчиках FuelPHP засветились программисты, написавшие кучу полезных библиотек под CodeIgniter:

Dan Horrigan — разработчик PyroCMS, действующий разработчик CodeIgniter Reactor;

Jelmer Schreuder — MP_Cache, Ab_Wizard, FileXS, PageBuilder;

Phil Sturgeon — разработчик PyroCMS, действующий разработчик CodeIgniter Reactor.

Дальше…

12th Август 2011 | Категории: Code Igniter, PHP | Метки: ,

Ни для кого не секрет, что CodeIgniter использует концепцию MVC (Model-View-Controller). View или Представление — отвечает за отображение данных пользователю. Главным преимуществом концепции MVC является разделение логики управления приложения, получения данных и их отображения. Начиная работать с CodeIgniter, вы уходите от мешанины из HTML/PHP/SQL в одном месте (мне до сих пор встречаются файлы-модули на 5000-7000 строк с адскими функциями в пару тысяч строк). Работая с View, вы не должны обращаться к моделям напрямую. Это должно быть аксиомой для вас. Всё что вы можете во View — это обработать входящие данные из Контроллера и использовать helper‘ы.

Давайте посмотрим недостатки базовой реализации View. Для примера возьмем кусочек из документации: CodeIgniter › User Guide › Views

Дальше…

15th Июль 2011 | Категории: Soft, Общий | Метки:

4 года назад я открыл для себя продвинутый блокнот. Авторы назвали свое творение Notepad++. В то время я как раз начинал активно программировать на PHP. От продвинутого блокнота мне было необходимо: работа с кодировками, подсветка синтаксиса, переносимость, быстрая работа. Notepad++ полностью удовлетворял все мои потребности.

Около года назад я стал писать статьи. В различных CMS используются 2 подхода — визуальное редактирование и ручная HTML разметка. Визуальное редактирование контента удобно для новичков и для HTML-чайников. Но за все надо платить. Визуальные редакторы вставляли горы мусора вместе с разметкой. В то же время производить разметку вручную очень неудобно… Было неудобно, пока я не покопался и не настроил Notepad++.

Дальше…

23rd Июнь 2011 | Категории: MySQL | Метки: , ,

На днях в одном из своих проектов я столкнулся с очень необычным поведением MySQL. При поиске (по имени) Убийца_матрёшек и убийца_матрешекMySQL выдавал одинаковый результат! Виной всему оказался тип сравнения для поля pl_nick. Но обо всем по порядку.

Для сохранения строковых данных мы обычно используем поля типа VARCHAR или TEXT. При создании таблицы мы явно указываем, какая будет кодировка и как MySQL будет сравнивать эти поля. В подавляющем большинстве случаев используется кодировка UTF8 или CP1251. Для каждой кодировки существует несколько типов сравнения, узнать которые можно командой SHOW COLLATION.

Дальше…

3rd Июнь 2011 | Категории: JavaScript | Метки: , , ,

Для создания графиков на web-страницах обычно используется один из трех вариантов:

  • Генерация картинки на стороне сервера (perl, php, java…)
  • Генерация картинки прямо в браузере, используя flash-объект.
  • Генерация картинки прямо в браузере, используя javascript.

О последнем способе мы и поговорим. Самой популярной js библиотекой на данный момент является jquery. Для jquery есть множество библиотек для визуализации данных, но одна из самых лучших — flot. Flot кроссбраузерная библиотека, позволяющая отрисовывать график на канве (canvas). Причем график можно изменять непосредственно на загруженной странице, без перезагрузки и дополнительных запросов к серверу. Но обо всем по порядку.

Дальше…

13th Май 2011 | Категории: MySQL | Метки: ,

На днях наткнулся на очередной шедевр программирования. Что бы не затягивать вступление, приведу сам запрос:

Есть внутренняя БД, в которой накапливается информация о клиентах компании (личные данные, признаки клиента, история общения). Таблица contacts — хранит сами сообщения, таблица contacts_category_links — хранит признаки общения (по какому вопросу обратились, и статус разговора). Программист этим запросом хотел вытащить все признаки общения с человеком #18813.

Дальше…

11th Май 2011 | Категории: Code Igniter, PHP | Метки:

Однажды я обнаружил в почтовом ящике письмо от хостера с информацией о превышении допустимой нагрузки MySQL сервера. Обратившись в саппорт, я узнал, что конкретной информации они не предоставляют. Пришлось искать выход из сложившийся ситуации самому. Для начала я решил оптимизировать медленные запросы.

Сразу же озадачился: а как выделить медленные запросы? В голове промелькнули: хуки, логи, расширение модели… Вырисовывалось громоздкое решение, которое могло сказаться отрицательно на общей производительности.

Решение оказалось куда проще.

Дальше…

27th Апрель 2011 | Категории: Soft, Общий | Метки:

Klok — программа для учета потраченного времени. Существует 2 версии — бесплатная и Pro-версия, стоимостью 15,99$. Имеет несложный интерфейс и кучу возможностей.

Klok, в первую очередь, может быть полезен фрилансерам и блогерам — людям подобной занятости сложнее всего грамотно рассчитать затраты и оценить итоговую прибыль.

Но обо всем по порядку.

Начнем с установки.

Дальше…

21st Апрель 2011 | Категории: MySQL | Метки: , ,

Так случилось, что один гениальный программист на одном продакшн сервере выполнил запрос:

DROP DATABASE databasename

Конечно, ни один здравомыслящий человек на такое не способен, но вот врожденная криворукость и куриная слепота привела к тому, что он перепутал кнопки в PhpMyAdmin и на автомате подтвердил запрос. В итоге — база исчезла. Крики. Паника. Представление о лишении премии и т.д. Хорошо, что у этого программиста есть такой знакомый, как я.

Получив логины и пароли, я приступил к исследованию сервера.

Дальше…

12th Апрель 2011 | Категории: Code Igniter, PHP | Метки:

Code Igniter, как и множество других фреймворков, поддерживает функционал мультиприложения: одно ядро и множество каталогов-приложений. Выбор нужного приложения производится в index.php, путем изменения значения переменной:

$application_folder = "../test";

Иногда перед разработчиком встает задача запуска разных приложений в зависимости от параметров URI. Это может быть как обычный параметр GET, POST, значение сессии, поддомен или что-то еще.

Когда может пригодиться функционал мультиприложения?
Дальше…

Страница 7 из 8« Первая...45678