jCarousel Lite – классная, простая но в то же время очень гибкая карусель с отличной документацией. Но всё же мне есть что чиркнуть в шпаргалку.
Читать далее »
Здесь я собираю всё, что может быть полезным для веб-программиста.
jCarousel Lite – классная, простая но в то же время очень гибкая карусель с отличной документацией. Но всё же мне есть что чиркнуть в шпаргалку.
Читать далее »
Вот уж не думал что в операторе UPDATE можно использовать ключевое слово ORDER. И никогда не думал, что такое мне пригодится!
Вот пример. Мне нужно сделать такой запрос:
1 | UPDATE t SET id = id + 1; |
Как ни странно запрос вызовет ошибку уникальности первичного ключа. Проблема в том, что апдейт делается последовательно для всех записей, а не сразу всех.
Вылечить проблему можно задав порядок апдейта с помощью ключевого слова ORDER.
1 | UPDATE t SET id = id + 1 ORDER BY id DESC; |
Дьявольски редко пригождающаяся вещь! Но иногда и палка стреляет.
Штатный ORM у Kohana практически на каждое шевеление создаёт запрос “SHOW CREATE TABLE blablabla“.
Я как-то не придавал этому значения раньше, но похоже этот запрос довольно ёмкий по времени, у меня он почему-то занимает до пол-секунды в плохую погоду (погода зависит от текущей загрузки хостинга). А если страница пестрит обращениями к БД, которые делаются через ORM, то ждите того, что треть запросов будет именно “SHOW CREATE TABLE“.
Как бы сделать так, чтобы ORM так не делал? Ведь структура таблиц работающего сайта практически не меняется годами!
Решение простое! Нужно немного переопределить метод list_columns класса ORM так, чтобы он кешировал структуру таблицы и дважды не бегать.
Читать далее »
Модуль Image это просто суперский модуль! С его помощью программист на Kohana может легко и не сильно вдаваясь в детали обрабатывать изображения. Можно конечно залезть в библиотеку GD и делать всё там вручную. Но так пусть делают у кого времени вагон. А нам нужен результат, и быстро.
У модуля один только недостаток. Нет описания. То есть его просто нет (на момент написания материала мануал по модулю был пуст). И я спешу хоть немного восполнить пробел
Хоть всё можно подсмотреть в коде, тем не менее попробую дать небольшое описание этому модулю. Без претензий на полноту, только в качестве начального толчка.
Читать далее »
Много разных задач сводятся к парсинку HTML. И не только сбор контента для ГС. Вот мне например понадобилось разобрать HTML собственного контента, чтобы культурненько облагородить. Ну например внешние ссылочки спрятать.
Сначала я подумал – фигня. Найти в тексте строчку “<a href=http://” и получи себе внешнюю ссылочку. Но ведь в контенте теги и атрибуты могут писаться с заглавной буквы. И ещё между A и HREF может стоять произвольное количество пробелов. Но самое главное, между A и HREF могут быть разные всякие другие слова. Короче выхода нет, кроме как строить нормальное дерево DOM и его анализировать. То бишь парсить.
Читать далее »