|
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера RMCreative.ru - Блог/Записи в блоге |
|
RMCreative.ru - Блог
Голосов: 1 Адрес блога: http://rmcreative.ru/feed/ Добавлен: 2008-06-12 21:34:00 блограйдером ZaiSL |
|
CodeIgniter 2.0.3, GitHub и Reactor
2011-08-20 23:03:47 (читать в оригинале)Зарелизился CodeIgniter 2.0.3. Сам по себе релиз вполне обычный, но при этом произошли две интересные вещи:
- Репозиторий переехал с BitBucket (Mercurial) на GitHub (Git). Похоже, скоро вообще все популярные фреймворки будут развиваться именно там.
- Наконец, CodeIgniter в полной мере стал фреймворком сообщества: Reactor (ветка CI, развиваемая группой разработчиков из сообщества) стала основной.
Официальный пост про миграцию на GitHub
PhpStorm Database Navigator
2011-08-19 22:33:01 (читать в оригинале)При работе с базой данных удобно рассматривать её структуру визуально. В идеале прямо из IDE. Хорошо-бы ещё и выполнять SQL и рассматривать результаты выполнения запроса табличкой в той же IDE. Данные задачи замечательно решаются в PhpStorm установкой плагина Database Navigator. Для тех, кто никогда не работал с Java и JDBC настройка не совсем тривиальна. Покажу как настроить для MySQL:
- Идём в
IDE Settings → Plugins → Available. - Ищем
Database Navigator, делаемDownload and Install. - Сливаем с этой страницы архив коннектора JDBC. Находим там
.jarи извлекаем в удобное место. - Перегружаем IDE.
Project Settings → Database Navigator → Connections.- Добавляем соединение, в
Driver Libraryпрописываем путь к.jar. - В
URLпрописываемjdbc:mysql://127.0.0.1:3306. Сохраняемся.
Всё, теперь можно пользоваться:
- Из главного меню
DB Navigator → Open SQL Console…доступен редактор SQL с возможностью запуска этого самого SQL. - Если открыть вкладку
DB Browserслева, получим неплохой способ визуально рассматривать схему.
Выбрать посты, содержащие все теги из списка
2011-08-12 02:44:23 (читать в оригинале)В этом блоге примерно с середины 2007-го, когда я переписал его с файлового велосипедохранилища на нормальный SQL, появилась возможность выбрать посты, содержащие все заданные теги. В 2008-м возможность окончательно оформилась в теговую навигацию.
Изначальный способ выборки, который используется и сейчас:
SELECT * FROM post p JOIN post_tag pt1 ON pt1.post_id = p.id JOIN tag t1 ON t1.id = pt1.tag_id AND t1.name = 'php' JOIN post_tag pt2 ON pt2.post_id = p.id JOIN tag t2 ON t2.id = pt2.tag_id AND t2.name = 'yii' -- для каждого дополнительного тега добавляем ещё JOIN-ы
Недавно Максим подсказал способ поизвращённее:
-- Сначала выбираем посты с тегом yii и посты с тегом php -- через IN. Если у поста и тот и тот тег, он будет выбран -- несколько раз. SELECT * FROM post p JOIN post_tag pt ON pt.post_id = p.id JOIN tag t ON pt.tag_id = t.id WHERE t.name IN ('php', 'yii') -- Считаем количество раз, которые выбрался пост. Если оно -- совпадает с количеством тегов в нашем списке, то это -- означает, что у поста есть и тот и тот тег. GROUP BY p.id HAVING COUNT(pt.tag_id) = 2
Есть ли ещё интересные способы решения этой задачи?
Перехват фатальных ошибок в Yii
2011-08-12 02:13:23 (читать в оригинале)Владимир Колесников описал у себя в блоге способ отлова фатальных ошибок PHP в Yii. Подумываю прикрутить к Yii2… или лучше сразу к Yii 1.1?
Рассматриваем
SQL, пересекается ли событие с теми, что уже имеются в таблице
2011-08-09 21:42:11 (читать в оригинале)Довольно частая задача при работе с различными событиями и датами.
Имеется таблица вида:
CREATE TABLE `event` ( `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `start_time` datetime DEFAULT NULL, `end_time` datetime DEFAULT NULL, );
Тут start_time и end_time не обязательно datetime. Например, они могут быть просто int-ами, хранящими обычный unix timestamp.
Перед вставкой очередной записи нужно убедиться, что событие не пересечётся с каким-либо уже имеющимся в базе. Решается это так:
SELECT 1 FROM event WHERE :new_start_time BETWEEN start_time AND end_time OR :new_end_time BETWEEN start_time AND end_time OR start_time BETWEEN :new_start_time AND :new_end_time OR end_time BETWEEN :new_start_time AND :new_end_time LIMIT 1
В запросе :new_start_time и :new_end_time соответственно начало и конец события, которое мы собираемся вставлять. Если запрос выше отдал 1, наше новое событие с чем-то пересекается…
|
| ||
|
+406 |
407 |
DDB's LiveJournal |
|
+350 |
441 |
Жизнь в сети |
|
+345 |
429 |
Сергей Новиков |
|
+310 |
443 |
Рояль в кустах |
|
+54 |
409 |
Сибдепо / Блоги |
Загрузка...
взяты из открытых общедоступных источников и являются собственностью их авторов.

