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



![]() | ||
+657 |
774 |
Zombiefan.ru Фильмы про зомби |
+654 |
754 |
VKSeattle |
+643 |
762 |
Правила форума |
+620 |
626 |
Lexsandr |
+614 |
633 |
Mandrake |
![]() | ||
-3 |
2 |
Темы_дня |
-4 |
347 |
Компания Альпари |
-7 |
20 |
Prestissima |
-7 |
5 |
BlogRider |
-8 |
4 |
Любер |

Загрузка...

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