Технические заметки

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 и т.д., а мне всё же нужна была дата в имени файла.

(more…)

Метки: , ,

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;

Метки: ,