понедельник, 19 ноября 2012 г.

Полезный скриптик для Chrome Gestures

В интернете порой попадаются своеобразно сверстанные сайты, в дизайне которых отсутствуют ссылки постраничной навигации вроде "← Назад | Вперед →" и т.п. Однако эти сайты иногда интересны настолько, что я мирюсь с необходимостью постоянно клацать в адресную строку и менять цифру, означающую номер страницы, чтобы попасть туда, куда нужно.
Но рано или поздно это надоедает (а в последнее время я видел немало таких сайтов на tumblr'e) и хочется упростить себе жизнь. Раньше, когда браузером для серфинга у меня был лишь Firefox, я пользовался в таких случаях расширением All-in-One-Gestures, которое имеет функцию "Increment/decrement digit in URL", срабатывающую при выполнении мышью определенного жеста и меняющую последнюю цифру в адресе страницы автоматически.
Теперь же, когда для серфинга я очень часто использую Chrome и соответствующее расширение для жестов — Gestures for Chrome, мне захотелось иметь подобный функционал и в нем. Плагин сам по себе эту функцию не предлагает, однако в нем имеется возможность использовать пользовательские скрипты. Собственно, после того, как я захотел иметь такую штуку, оставалось только придумать удобные жесты и назначить им следующие коды:
m=/(.*\D[0]*)([\d]+)(.*)/g.exec(location.href);if(m)document.location=m[1]+(~~m[2]-1)+m[3];
и
m=/(.*\D[0]*)([\d]+)(.*)/g.exec(location.href);if(m)document.location=m[1]+(~~m[2]+1)+m[3];
Возможно, кому-нибудь такая штука также пригодится.

UPD: кстати, ничто не мешает эти же скрипты использовать в виде обычных букмарклетов - достаточно создать закладки, вместо URL у которых указать вышеприведенные скрипты, только в URL вместо http:// указать протокол javascript:, чтобы получилось
javascript:m=/(.*\D[0]*)([\d]+)(.*)/g.exec(location.href);if(m)document.location=m[1]+(~~m[2]+1)+m[3];

вторник, 13 ноября 2012 г.

Yii: динамическое отключение профилирования заросов

Столкнулся в Yii с проблемами выделения памяти процессам, в которых осуществляется большое (измеряемое десятками тысяч) количество запросов к базе данных.

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

Чтобы побороть это дело, не отключая профайлинг в принципе (например, через конфиги), можно сделать такой финт ушами:

function dummyFunction(){
 //выключаем все используемые логроуты в начале
 foreach(Yii::app()->log->routes as $route){
  $route->enabled = false;
 }

 //цикл, в котором происходят многочисленные обращения к БД.
 foreach(.....){
  ......
 }

 //включаем логроуты обратно
 foreach(Yii::app()->log->routes as $route){
  $route->enabled = true;
 }
}
По идее, можно отключать только те логроуты, что профилируют запросы, но использованное упрощение в моем случае оказалось вполне допустимо.

четверг, 19 июля 2012 г.

А вот какие такие исторические причины позволяют передавать параметры в функцию PHP implode() в любом порядке?

пятница, 6 июля 2012 г.

Чего-то я не догоняю, или blogger не может транслировать RSS отсюда в Feedburner, при этом показывая ссылку на него же. Изврат, конечно, но что делать, если поток уже давно на Feedburnere висит?

пятница, 29 июня 2012 г.

Надоело переезжать

По запросу "Экспорт контента в Blogspot" и им подобным гугл вываливает ссылки на опыт чуваков, которые отсюда слились на Wordpress и т.п. А я вот решил, наоборот, со стандалона соскочить: грустно мне в том бложике как-то было.
Хотя, конечно, не бог весть какое событие. Посмотрел внимательно на то, что стоит со старого блога перекидывать в новый - оказалось, что кроме нескольких записей и хохм ничего переносить-то и не требуется. В итоге перенес вручную пару десятков записей и готово. Заодно не только ноосферу от неактуальной и малозначимой информации почистил, но и себя избавил от необходимости ее содержать.

А переезжать и в самом деле пришлось слишком много, в том числе и в реале. Последний переезд прямо эпичный получился. Сам по себе не слишком масштабный, но двухмесячный подготовительный ремонтный период доставил - скиллы успел прокачать почти по всем рабочим специальностям, кроме каменной кладки и кафельной укладки.
Такие вот события, в общем. А старому бложику - Rest In Peace.
Перенесу-ка я сюда то, что было на старом блоге. Не все, конечно, а только то, что пригодится в новой жизни бложика.