Уши сворачиваются
Mar. 1st, 2012 06:21 pmПо вечерам со стороны учебного телерадиоцентра доносятся нестройное пение — это репетирует хор факультета журналистики. Вот и сейчас — снова доносится. На сей раз они замахнулись на «Аве Марию» Джулио Каччини Владимира Фёдоровича Вавилова. Слушать эту фальшь — невыносимо.
Майэскьюэль не понял подзапроса
Feb. 13th, 2012 06:54 pmСтранности творятся. Почитав мануал, обращаюсь к друпаловой БД, ищу дубликаты адресов в таблице с 7500 строками:
P. S. Понятно, что я могу найденное на первом шаге тупо перебрать в цикле, написав какой-нибудь перлоскрипт, однако хочется сделать как-то изящнее.
MySQL достаточно резво выдаёт ответ из почти семи десятков строк. Делаю запрос с подзапросом, чтоб выбрать номера узлов с найденными на предыдущем шаге дублями:SELECT `alias` FROM `PREFIX_url_alias` GROUP BY `language`, `alias` HAVING COUNT(*)>1;
В итоге MySQL тяжко задумывается — вот уж 20 минут непонятно, что делает. ПосмотрелSELECT `source` FROM `PREFIX_url_alias` WHERE `alias` IN ( SELECT `alias` FROM `PREFIX_url_alias` GROUP BY `language`, `alias` HAVING COUNT(*)>1 );
SHOW CREATE TABLE
— по полю `alias`
строится индекс. Чё ему ещё надо-то?P. S. Понятно, что я могу найденное на первом шаге тупо перебрать в цикле, написав какой-нибудь перлоскрипт, однако хочется сделать как-то изящнее.
Re: Яваскрипт не нужен. Почти
Jan. 13th, 2012 01:13 amПродолжаю ковырять transition — повернул баян на 90°.
Код с действующим примером выложен на http://jsfiddle.net/shoorick/bp7QM/ (там сразу видно всё: и код с подсветкой синтаксиса, и результат), кроме того, как и в прошлый раз, пример — на http://shoorick.ru/lj/net/accordion-horizontal.html, код — на гитхабе и ( под катом )
Код с действующим примером выложен на http://jsfiddle.net/shoorick/bp7QM/ (там сразу видно всё: и код с подсветкой синтаксиса, и результат), кроме того, как и в прошлый раз, пример — на http://shoorick.ru/lj/net/accordion-horizontal.html, код — на гитхабе и ( под катом )
Яваскрипт не нужен. Почти
Jan. 10th, 2012 10:45 pmРазбираюсь с модными HTML5 и CSS3, а точнее, с бесскриптовой анимацией, с помощью
Действующий пример лежит на http://shoorick.ru/lj/net/accordion-vertical.html, код — на гитхабе и ( под катом )
Следующая задача — повернуть получившийся баян на 90° — с ней я почти придумал, как справиться. Дальшейшие — смена картинок и прокрутка содержимого блока без участия яваскрипта и посетителя сайта — пока туманны. Но всё равно придумаю. Или нагуглю. Хотя в девизе моей альма-матери другой порядок действий: Нагуглю или придумаю. Aut viam inveniam, aut faciam.
transition
. Попробовал сделать вертикальный (обычный) аккордеон — почти получилось. Ни один яваскрипт не пострадал. Работает под линуксом в Firefox 10, Opera 11.60 и Chromium 14. Под виндой в IE 8 — не работает. В остальных браузерах и ОС пока не тестировал. Modernizr пока тоже не прикручивал.Действующий пример лежит на http://shoorick.ru/lj/net/accordion-vertical.html, код — на гитхабе и ( под катом )
Следующая задача — повернуть получившийся баян на 90° — с ней я почти придумал, как справиться. Дальшейшие — смена картинок и прокрутка содержимого блока без участия яваскрипта и посетителя сайта — пока туманны. Но всё равно придумаю. Или нагуглю. Хотя в девизе моей альма-матери другой порядок действий: Нагуглю или придумаю. Aut viam inveniam, aut faciam.
Об инструментарии и инструкциях
Aug. 20th, 2011 12:58 amПонадобилось перенести сайт с малоизвестной CMS на Drupal. Две недели гуглил и читал крохи найденной документации. Понял, что общедрупальный бардак с документацией в полной мере относится и к модулям: например, в рекомендуемом для переездов модуле Migrate я так и не смог за эти две недели разобраться: вместо внятного руководства — какие-то блоги да презентации, целевой аудиторией имеющие телепатов. Человеку, даже знающему PHP и умеющему слегка настраивать Drupal, но не писавшему под него модулей, что-либо понять в таком мануале, а тем более, сделать работающий пример — нереально.
Плюс к тому меня вот уже который год удивляет адресация на друпальных сайтах: их авторы вместо того, чтобы сделать правильные адреса, оставляют всё как есть. Даже на drupal.org полно страниц с адресами типа /node/шестизначный_номер.
Дело кончилось тем, что за день я написал перловый скрипт, который и перегнал мне данные (хотя как-то не совсем правильно), выдав в итоге кучу SQL-запросов. Сами данные также были предварительно обработаны перлоскриптами.
Плюс к тому меня вот уже который год удивляет адресация на друпальных сайтах: их авторы вместо того, чтобы сделать правильные адреса, оставляют всё как есть. Даже на drupal.org полно страниц с адресами типа /node/шестизначный_номер.
Дело кончилось тем, что за день я написал перловый скрипт, который и перегнал мне данные (хотя как-то не совсем правильно), выдав в итоге кучу SQL-запросов. Сами данные также были предварительно обработаны перлоскриптами.
Опровергну пословицу
Feb. 22nd, 2011 07:04 amЕсли программист в 06:45 ужé на работе — это не значит, что он ещё на работе. Это значит всего лишь, что сработала сигнализация и пришлось встать, завести пепелац (–25 °C, завёлся, заглох, со второй попытки завёлся пормально) и поехать. Хотя, конечно, в седьмом часу утра ехать весело — трафик хоть и ненулевой, состоит большей частью из трамваев с троллейбусами и пробок не создаёт.
А чё, попроще никак?
Oct. 16th, 2010 10:40 pmПеренёс накопленное в траке со своей машины в редмайн на боевом сервере. Переношу subversion в том же направлении и задумался об оптимизации серверной части.
Svnserve, конечно, быстрый, но вводить пароли при доступе через svn+ssh:// задолбало, да и по непонятной причине он игнорирует ключ -r, а длинные URL типа svn+ssh://name.of.server/many/many/dirs/before/repo/project/trunk как-то плохо выглядят.
Раскочегаривать апач только лишь для Subversion как-то расточительно. Хотя да, такой вариант будет работать и он же и рекомендован в книге для серьёзных случаев (в том числе и для таких, когда захочется использовать какой-нибудь необычный метод авторизации).
Nginx не все методы поддерживает и, следовательно, на роль обработчика запросов к svn как-то не очень годится — разве что воткнуть его прокси-сервером (а смысл?)
Думал поставить к редмайну пару модулей — redmine_webdav и нужный для него redmine_http_auth (как обычно, пришлось дорабатывать напильником, добавляя перевод на русский). Поставил, почитал документацию внимательнее: им тоже нужен апач (фактически, они позволяют, вроде бы, авторизоваться через редмайновую базу). Если никакого апача не ставить, а запустив сервер webrick, обращаться к нему — он не пускает, но при этом спрашивает пароль.
Продолжаю гуглить...
upd/00:45: Надоело гуглить, воткнул апач, спрятал за нгинксом (just for lulz) — работает. Надо снести ненужные модули и лечь спать.
Svnserve, конечно, быстрый, но вводить пароли при доступе через svn+ssh:// задолбало, да и по непонятной причине он игнорирует ключ -r, а длинные URL типа svn+ssh://name.of.server/many/many/dirs/before/repo/project/trunk как-то плохо выглядят.
Раскочегаривать апач только лишь для Subversion как-то расточительно. Хотя да, такой вариант будет работать и он же и рекомендован в книге для серьёзных случаев (в том числе и для таких, когда захочется использовать какой-нибудь необычный метод авторизации).
Nginx не все методы поддерживает и, следовательно, на роль обработчика запросов к svn как-то не очень годится — разве что воткнуть его прокси-сервером (а смысл?)
Думал поставить к редмайну пару модулей — redmine_webdav и нужный для него redmine_http_auth (как обычно, пришлось дорабатывать напильником, добавляя перевод на русский). Поставил, почитал документацию внимательнее: им тоже нужен апач (фактически, они позволяют, вроде бы, авторизоваться через редмайновую базу). Если никакого апача не ставить, а запустив сервер webrick, обращаться к нему — он не пускает, но при этом спрашивает пароль.
Продолжаю гуглить...
upd/00:45: Надоело гуглить, воткнул апач, спрятал за нгинксом (just for lulz) — работает. Надо снести ненужные модули и лечь спать.
Дополнительное звено
Jan. 19th, 2010 03:50 pmПо результатам гуглений и бубнений настроил nginx и каталист для совместной работы. В нгинксовом конфигурационном файле в моём случае надо указать, что фронтенд должен передать бэкенду не только своё имя, но и порт:
Если не сделать такой настройки, то каталистовая функция
Теперь осталось убедиться в корректной работе получившейся связки, проверить способность нгинкса к старту при загрузке системы — и можно будет запускать весь этот комбайн вкосмос боевую эксплуатацию.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Port $http_port;
Это связано с тем, что оба работают на одной машине на разных портах. А каталистовому приложению надо сказать, что оно может быть спрятано от внешнего мира за прокси-сервером. Существуют разные методы, простейший из них — добавить в конфигурацию параметр using_frontend_proxy
, равный единице. Чтобы не засорять модули, добавит его в конфиг.yml — это проще всего и вполне работоспособно.Если не сделать такой настройки, то каталистовая функция
uri_for
будет возвращать ссылки на адреса бэкенда, который посетителю показывать совсем не надо.Теперь осталось убедиться в корректной работе получившейся связки, проверить способность нгинкса к старту при загрузке системы — и можно будет запускать весь этот комбайн в
Электроника — наука не только о контактах
Jan. 19th, 2010 03:18 pmСистемный блок рабочего компьютера очень нервно реагировал на статическое электричество: при малейшей попытке воспользоваться чем-то электризующимся рядом с системником (снять свитер, пошуршать целлофановым пакетом, достать шоколадку из заначки) компьютер немедленно зависал. И ладно бы, если там была бы винда — 10 лет назад Windows 98 на моей машине зависала не меньше раза в день — было бы не так обидно: тут-то FreeBSD.
Сегодня, после очередного зависания, продул компьютер и собрал корпус: он много месяцев стоял открытым, без одной из боковых стенок. Помогло: теперь компьютер не виснет.
Сегодня, после очередного зависания, продул компьютер и собрал корпус: он много месяцев стоял открытым, без одной из боковых стенок. Помогло: теперь компьютер не виснет.
Не выходит каменный цветок
Oct. 23rd, 2009 03:12 pmАпач сдох и не желает воскресать: при попытке выполнить apachectl start молча помирает, оставив после себя /httpd.core.
Погуглил. Подумал.
Подправил в httpd.conf степень разговорчивости:
Думаю дальше...
upd/15:29: Обновил php. Апач неожиданно заработал. Но как?!
Погуглил. Подумал.
Подправил в httpd.conf степень разговорчивости:
LogLevel debug
Изучив лог, на всякий случай закомментировал использование mod_ssl (потому что не нужен). Не помогло. Постучал в бубен. Всё равно не помогло.Думаю дальше...
upd/15:29: Обновил php. Апач неожиданно заработал. Но как?!
О тестировании под нагрузкой
Oct. 23rd, 2009 01:30 amЗадача — протестировать сайт на работу при большой нагрузке. Попробовали 2 способа:
Что делать?
- При помощи ab послали вагон запросов на какую-то одну страницу, попутно пытаясь пользоваться сайтом в обычном режиме,
- Посадили за компьютеры пару десятков юзеров и попросили их усиленно покликать по ссылкам.
Что делать?
193.233.85.13— теперь не мой. Я на нём просидел почти 10 лет.- Для подпиливания напильником (с целью перенацелить на новый адрес) существующих рабочих копий (если лень уничтожать старое и создавать новое командой svn co) можно выполнить:
find . -type f -name entries -exec perl -e 's{/old\.address\.of\.repository/}{/new.one/}' -pi '{}' ';'