22 января 2012 г.

bash shell urllist crawler

#!/bin/bash
# linux urllist.txt sitemap generator
# run the spider again for deeper URLs
# written by Joachim De Zutter
# released under GPL
site="www.example.com"
startpage="http://www.example.com/"
lynx -dump $startpage | grep -i "$site" | sed -e "s/.*\(http:\/\/.*$site\/[^\"\'<>#\&]*\).*/\1/g" >>urllist.txt
while read a
do
  echo $a
  sort -u urllist.txt | grep -v "\.\.\." >urllist.tmp
  mv urllist.tmp urllist.txt
  lynx -dump $a | grep -i "$site" | sed -e "s/.*\(http:\/\/.*$site\/[^\"\'<>#\&]*\).*/\1/g" >>urllist.txt
done <urllist.txt

16 декабря 2011 г.

Lost connection to MySQL server at 'reading initial communication packet', system error

If you get the following error
Lost connection to MySQL server at 'reading initial communication packet', system error
when trying to connect to MySQL server remotely, open the /etc/mysql/my.cnf file and edit the bind-address parameter from the 127.0.0.1 to the IP-address you actually use.

27 октября 2011 г.

Виртуальный диск на базе RAM-Disk в Windows XP

В рамках цикла статей о продлении срока службы своего жесткого диска.

Ram Disk — технология использования некоторого объема виртуальной памяти (т.е. RAM) для создания псевдо раздела жесткого диска. Т.е. открыв "Мой компьютер", наряду с привычными C:\, D:\ и может быть даже E:\, вам будет доступен раздел, назовем его, T:\, выполняющий те же функции, но в разы быстрее и безопаснее для реального жесткого диска.

Быстрее и безопаснее потому, что чтение-запись данных в рамках виртуальной ( = оперативной) памяти намного эффективнее аналогичных процедур на реальном жестком диске, т.к. там они представляют собой физическое взаимодействие с вращающимися на огромной скорости магнитными дисками, и приводит к их износу. Безусловно, микросхемы на планках оперативки тоже не вечные, но а что делать. Ведь чтобы полностью обезопасить свой жесткий от износа его придется вообще не использовать :) Так что рано или поздно он все равно посыпется, но ведь стоит постараться оттянуть это "поздно", не правда ли?

И да, еще одна очень важная деталь. Первое о чем говорят когда изучают что такое компьютер в целом и его оперативная память в частности — это то, что её содержимое носит временный характер. Другими словами, очищается после выключения компьютера.

Всё это, конечно, хорошо, но как это применить на практике? Просто.
  • Во-первых, можно перенести на RamDisk системную временную папку. Там ведь в любом случае хранятся временные файлы.
  • Во-вторых, можно создать на нем свою личную временную папку. Например, для скачивания в нее сериалов или, скажем, фильмов. Т.е. тех файлов, которые после просмотра, с большой долей вероятности, будут удалены.

    Например, представим ситуацию: вы нашли свежий микс в интернете. Вы не уверены что он вам понравится, но и не ислючаете этого. Если захотите — сразу же запишете его на CD-болванку, или перенесете на основной раздел в папку с музыкой, скажем, подпапку "Хорошие миксы". Если нет — безболезненно удалите файл. То же касается фильмов, сериалов, выпусков радиошоу и т.д.


Опять же: безусловно, эти методы — не панацея. Но все ведь состоит из мелочей, согласитесь. И в своей совокупности они обладают достаточной статистической значимостью чтобы ею не пренебречь. В нашем случае — избавление основного жесткого диска от множества лишних, ненужных операций позволит несколько продлить его жизнь, равно как и уменьшить вероятность преждевременного выхода его из строя.

Итак, каким же образом всю эту схему реализовать?
  1. Выберите программу для создания RamDisk'а. Мой выбор остановился на RamDisk Plus.
  2. Собственно, создайте сам виртуальный диск. После этого он появится у вас в "Моем компьютере". Когда я создавал его у себя, я выбрал пункт "Создавать временную папку \temp", в результате чего при каждом выключении/перезапуске компьютера (читай — очистке созержимого оперативной памяти, и, следовательно нового виртуального жесткого диска), восстанавливается пустая временная папка temp, на которую я могу ссылаться отвсюду.
    Также обратите внимание на опцию "Сохранять содержимое RAM диска при выключении на основной диск" (название опции может отличаться, более того — ее у вас может вообще не быть, зависит от программы). Я ее у себя по понятным причинам выключил :)
  3. Теперь пропишем в системе эту временную папку.
    • Открываем "Мой компьютер" → "Свойства" → "Дополнительно":
      Мой компьютер - Свойства - Дополнительно
    • Выбираем "Переменные среды" (кнопка в нижней части, на рисунке выше обведена пунктиром). Появляется следующее окно:
      Изменить переменные окружения (environment variables) в Windows XP
    • На рисунке выше выделены переменные, хранящие расположение временных папок на уровнях системы и пользователя:
      - Для пользователя; TMP и TEMP:
      %USERPROFILE%\Local Settings\Temp
      - Общесистемные; TMP и TEMP:
      %SystemRoot%\TEMP
      Обратите внимание: чтобы добраться до переменных TMP и TEMP в разделе "Системные переменные" (рисунок выше) соответствующий список нужно пролистать в самый низ.
      Выше приведены их стандартные значения на случай если вам понадобится вернуть все как было по-умолчанию.
    • Меняем значение вышеупомянутых переменных окружения TMP и TEMP для пользователя и для всей системы:
      Редактирование переменной окружения TEMP (временная папка) в Windows XP
      В моем случае виртуальному диск у присвоена буква "T", следовательно путь до новой временной папки — T:\temp. Кстати, имя самой временной папки на вашем RAM диске зависит от имени, под которым ее создаст выбранная вами программа.
      Повторите эту процедуру еще 3 раза, итого по два на каждую переменную (TMP и TEMP) и по два на пользовательский и общесистемный уровень).
    • Сохраните изменения, перезагрузите компьютер
P.S.: Если после перезапуска диск теряется, и вместо него появляется неотформатированный в NTFS RAW-раздел на первой попавшейся букве (скажем, F:\), попробуйте пересоздать виртуальный диск с образом. Найдено в интернете:
Я помню подобную проблему. Если не изменяет память, она возникала у меня, пока я не привязывал рам-диск к жесткому. Как только связал с образом на с: (даже без сохранения) - перестал теряться.

14 октября 2011 г.

Reload Icecast configuration without disconnecting listeners and losing source

In order to make Icecast2 re-read config without restarting, i.e. losing source and disconnecting listeners, you'll have to send it the HUP signal. The icecast2 process will reload the configuration file icecast.xml and changes will take effect.

To send the HUP signal to a process you'll have to know it's PID. Basically, it looks like the following:
kill -HUP %PID%

So how do you know Icecast's PID? You'll have to either check the ps aux command output (i recommend you filter the output with | grep icecast): finding icecast pid with ps aux output
... or use the Icecast's .pid-file. Open up the icecast.xml file to edit Icecast configuration and under the <paths> section alter the <pidfile> setting. For example, the FreeBSD path would be:
<pidfile>/usr/local/share/icecast/icecast.pid</pidfile>

Restart Icecast. Now the .pid-file should be generated and available by the path specified. So no it's time to say Icecast SUP HUP:
kill -HUP `cat /usr/local/share/icecast/icecast.pid`

24 сентября 2011 г.

google muppets doodle animations

This is kinda 'spoiler' post, so if you want to keep the intrigue, don't read it.


Today's Google Doodle favours Jim Henson. Here's what it looks like:

google muppets doodle no animations

And here's the HensonCompany video uploaded to Youtube: Jim Henson's Google Doodle

To see the doodle in action just go to Google or check out this Youtube video: http://youtube.com/watch?v=4qtFeF6o82o. So there are 6 muppets for each letter in Google's logo. You can select one and it starts following your cursor moves and reacts on click.

There've been lots of videos appearing on Youtube claiming they reveal secrets and hidden animations of this doodle, so just let me summarise them and add some of my own thoughts.

In Google's homepage source code each muppet-letter has,well, a code, i.e. G is 1g, O is 2o, next O is 3o, G is 4g, L is 5l and E is 6e. All animations, no matter whether it's just following your cursor, or eating each other, are put into a .PNG image, which is a so-called 'sprite'.

Move animations for each letter are:

G

O

O

G

L

E

But those are just moves, and they are boring. Let's talk about hidden animations. Lucky we, they're "hidden" with the same naming pattern, so it was not that hard to find them. Knowing G is 1g, O is 2o and so on and doing some clicking-around-watching-what's-going-on we can get the following:

G

(no animation found so far)

O


Note: to make the puppet do this you select it and just move cursor from left to right rapidly.

O

G

L

(no animation found so far)

E


Note: to make the crazy-eyed red puppet eat another you select the long/tall green one (the L letter) then move your mouse pointer to the LOWER RIGHT so he's looking down at the red monster. CLICK RAPIDLY while holding this position, and the red monster will eat him. (source)

19 сентября 2011 г.

flash upload uploadify nginx io error 2038

If you keep getting the Flash IO Error #2038 when trying to upload something to Nginx server with flash (.SWF) uploaders (in particlular -- with Uploadify), open up nginx.conf file and set
keepalive_timeout 0;
in order to fix this.

More information on Nginx keepalive_timeout directive can be found here.