24Июл Распределение логов по папкам и подпапкам, основываясь на имени файла
Нужно было разобраться со следующей ситуацией: у фирмы есть несколько сайтов, с хостинга ежедневно приходят на почту логи. Менеджер получает почту программой The Bat!, в ней настроено правило, которое сохраняет все эти логи в одну папку. И через некоторое время там тысячи файлов и становится неудобно работать. Сначала были созданы папки для каждого сайта, в них подпапки с годами, и логи раскидывались вручную. Менеджер просит автоматизировать попадание каждого лог-файла в свою папку и подпапку. Лог-файлы приходят с именем вида sitename_error_log_2011.03.15.zip.
Я написал следующий bat-файл и предложил использовать его (добавив, например, в планировщик):
@echo off & setLocal EnableDELAYedExpansion
rem sitename_error_log_2011.03.15.zip
set path=C:\Documents and Settings\username\Њ®Ё ¤®Єг¬Ґвл\б ©вл\sitename\logs
for /f %%f in ('dir /B *.zip') do (
for /f "delims=_ tokens=1,4" %%k in ("%%f") do (
for /f "delims=. tokens=1" %%y in ("%%l") do (
IF NOT EXIST "%path%\%%y\%%k\" ( mkdir "%path%\%%y\%%k" )
move %%f "%path%\%%y\%%k"
)
)
)
Pause
Кракозябры в пути – это Мои документы\сайты. Даже с chcp мне не удалось заставить windows воспринимать русские символы в файле.
05Май Переустановка grub2
Я не большой любитель ставить новый релиз ОС каждые полгода и с удовольствием сидел на Ubuntu 9.10, которая меня всем устраивала. Но в апреле закончился срок поддержки этой версии, поэтому решил ставить 10.04 LTS, у неё срок поддержки до 2013-го.
Установка прошла гладко, однако, во время загрузки появилась ошибка:
error: the symbol 'grub_puts_' not found
Для восстановления grub я воспользовался самым простым способом из официальной документации. Загрузился с LiveCD, вместо fdisk’а разделы посмотрел в gparted. Корневой каталог у меня был на /dev/sda1, а домашний каталог на /dev/sda5, поэтому
sudo mount /dev/sda1 /mnt sudo mount /dev/sda5 /home sudo grub-install --root-directory=/mnt /dev/sda
Далее перезагрузился, смог нормально зайти в Ubuntu и выполнил sudo update-grub.
16Апр Автоматическое переименовывание файла после разархивирования
Есть у меня один файл, который я периодически бэкаплю, при этом не затирая старые бэкапы. Очень редко, но бывает, что мне нужно сравнивать текущий файл с файлом из бэкапа за какое-нибудь число, поэтому я спокойно его разархивирую и сравниваю. Допустим, файл у меня filename.ext, а бэкапы я делаю вида filename-2010-12-09.zip, filename-2011-02-14.zip (zip – потому что начинал это делать ещё в windows). Но тут, вдруг, мне понадобилось разархивировать и сравнить около 30 файлов. Проблема в том, что имя файла в архиве одинаковое, разные только сами имена у архивов, и если их разархивировать, то новый распаковываемый файл будет перезаписывать предыдущий, либо просить ввести имя файла, а вручную мне писать имя 30 файлам не хотелось. Можно бы было использовать команду
unzip -B \*.zip
но тогда бы у меня получались файлы filename.ext~, filename.ext~1, filename.ext~2 и т.д., а мне всё же нужна была дата в имени файла.
13Апр Ограничение скорости в Ubuntu
Есть в Ubuntu одна особенность, которая мне не нравится – забивание канала скачивающим/закачивающим приложением. То есть, если Firefox’ом начать скачивание какого-нибудь файла, то сёрфить уже будет проблематично. Такая же проблема и с закачиванием файлов куда-нибудь.
Здесь буду собирать различные варианты решения данной проблемы. В итоге должны появиться правила для tc, но в данный момент я с ним не разобрался.
Под Windows для ограничения скорости Firefox есть расширение Firefox Throttle. Чего-либо подобного под Linux мне найти не удалось. (more…)
29Ноя Удалить все гиперссылки в OpenOffice
Понадобилось удалить все гиперссылки из документа, вариант с применением форматирования по умолчанию не подходил. Попытался нагуглить решение в рунете – быстро этого сделать не удалось, поэтому на всякий случай создам запись с решением с зарубежного форума.
Нужно создать и выполнить макрос с таким кодом:
Sub Main oDoc = ThisComponent enum1 = oDoc.Text.createEnumeration While enum1.hasMoreElements thisPara = enum1.nextElement enum2 = thisPara.createEnumeration While enum2.hasMoreElements thisPortion = enum2.nextElement thisPortion.HyperlinkTarget = "" thisPortion.HyperLinkURL = "" Wend Wend End Sub
30Сен Меняем id блога в WordPress
Сделав в wordpress мультисайтинг, я добавил в сеть ещё один сайт, а через некоторое время добавил английскую версию для блога, который в списке сайтов стоял первым. Английская версия встала, разумеется, в конец, а мне хотелось, чтобы она стояла под своей русской версией. Есть много способов сделать это, например, создав greasemonkey-скрипт, или написав плагин для wordpress, и, пожалуй, самым неразумным будет изменение данных в mysql-базе, но именно так я и поступил =)
(more…)
10Сен Мультисайтинг в WordPress – чиним логин
В WordPress 3 есть возможность делать мультиблоги, но в данный момент блоги можно делать только на поддомен или в какую-нибудь директорию. Хочется как в Drupal – одна инсталляция и несколько сайтов с доменом второго уровня.
В управлении сайтом можно вбить вместо sub.example.com желаемый newexample.com. Будут работать два сайта, но логиниться в панель управления можно будет только в example.com. Если попробовать залогиниться в newexample.com, то ничего не выйдет – куки всё равно будут приходить для example.com.
Пока не появилась родная поддержка сделал так: (more…)
06Сен 404 после активирования мультисайтинга в WordPress
Включил в WordPress мультисайтинг. Открываю главную страницу, нажимаю на любой пост – ошибка 404. Присмотрелся повнимательней – ссылки теперь ведут на http://example.com/blog/год/месяц/день/заголовок-записи/, а были http://example.com/blog/заголовок-записи/.
После включения мультисайтинга слева появилась менюшка «Администратор». Там идём в «Сайты», наводим на сайт, нажимаем «Изменить». На открывшейся странице ищем «Permalink Structure» и обнаруживаем там /blog/%year%/%monthnum%/%day%/%postname%/. Оставляем просто /%postname%/.
06Сен vi и клавиши управления курсором
В редакторе vi в режиме вставки клавиши управления курсором (↑↓→←), вместо перемещения курсора, вставляют A B C D. Хочется чтобы курсор перемещался.
В файле ~/.exrc (если не существует – создаём) прописываем:
map OA ka map OB ja map OC la map OD ha
27Авг Удобное комментирование картинок с текстом
Комментируя пост с текстом, который представлен картинкой (например, скриншот), хочется иногда точно процитировать часть текста. Выделить, естественно, нельзя. По сто раз перемещаться к картинке и обратно к полю ввода коммента – неудобно. Если поставить курсор в поле ввода комментария, и переместить картинке, то при попытке что-нибудь написать – вернёмся обратно к комментарию.
Но можно легко поместить картинку в угол браузера, и спокойно набивать комментарий, поглядывая на неё. Для этого нужно Firebug’ом добавить к картинке следующие CSS свойства: position: fixed; right: 0px; top: 0px;

