![]() ![]() ![]()
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блогов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
, наше новое событие с чем-то пересекается…


![]() | ||
+87 |
119 |
ershow |
+85 |
94 |
Annelle |
+83 |
92 |
Сергей Каменев |
+76 |
149 |
_Музыка_Души_ |
+73 |
91 |
yashar |
![]() | ||
-1 |
6 |
Дневник белого колонизатора |
-5 |
155 |
Bill4iam |
-5 |
70 |
Новый завет |
-19 |
12 |
ГОРОСКОП |
-19 |
82 |
Позже,чем кажется |

Загрузка...

взяты из открытых общедоступных источников и являются собственностью их авторов.