Categories
сметачи

s55 като уинамп дистанционно

От доста време ме мъчеше въпроса как да си управлявам програмата за музика през Bluetooth с моя Siemens S55. За Sony-Ericsson има доста качествени програми. Е както знаем Siemens са си Siemens и някои неща трябва да стават по-трудно и болезнено, ако изобщо станат: S55 няма поддръжка за accessory менюта и освен това жабата не може да изпраща нищо по bluetooth (това дали не е някаква security мярка?). За сметка на това други стават много по-лесно и безполезнено (например работата с файлове на телефона). Но сега да си дойдем на въпроса.

След кратко ровене изнамерих S55 Remote Control for WinAmp. Трябва windows, барабар с някакъв bluetooth софтуер на него (май с почти всички bluetooth dongle-чета върви този на WIDCOMM), bluetooth dongle-че, телефон с bluetooth, мързелив човек, winamp и горната програмка . Методът на работа е следния:

  • правим си записи в адресната книга с имена – командите, които са описани е readme-то на програмата. Някои от тях са: play, next, stop, shutdown… Един съвет. Тъй като повечето хора използват адресната книга в телефона е много удачно записите с командите да бъдат направени в SIM-а. Хем не ни се пречкат, хем при натискане на цифра и после # в изначално положение се появява списък със записите в SIM картата подредени по номер (а не по азбучен ред) – така се виждат само така важните команди, нищо друго и то подредени както си искаме;
  • караме bluetooth софтуера от страната на компютъра (тествано с WIDCOMM Bluetooth Software 1.4.2 Build 10) да не насочва идващите vCards към Outlook, а да ги записва в Bluetooth Exchange директорията. За WIDCOMM тези настройки се намират в PIM Item Transfer услугите съответно в Local Services и Client Applications. Outlook/Outlook Express трябва да станат на Save to File.
  • Пускаме S55 Remote Control и в настройките му казваме Accepted command files: vCard files и Start Winamp on Purpose–[checked]. Би трябвало само да се е усетило за пътищата до winamp-а и exchange директорията на bluetooth-а.
  • Вземаме телефона в ръка. Активираме си bluetooth-а (аз съм направил да ми го пуска при продължително натискане на 7). Стигаме до някой запис с команда и го изпращаме по bluetooth (за S55: Options, два пъти нагоре до Send/Print..., Via BT, Known devices (ако не сте правили нищо с bluetooth-а между тези компютър и телефон, тогава – Search device и бла-бла), Името на вашия компютър и… воала!

Като за финал искам да кажа, че наистина е малко неудобно достигането и изпращането на команди, но на практика работи. Май това е важното.

Categories
сметачи

красота

[nikolay@site-machine nikolay]$ cd /usr/local/www/data
[nikolay@site-machine data]$ ls -l *.php */*.php | wc -l
272
[nikolay@site-machine data]$ grep -r 'addslashes' *
[nikolay@site-machine data]$ grep -r 'mysql_escape' *
[nikolay@site-machine data]$ grep -r 'mysql_real_escape' *
[nikolay@site-machine data]$

Човешката глупост и безотговорност нямат край! Никога!
Захващам се веднага…

Categories
сметачи

лого

Днес, докато се възмущавах от реализациите за дървета, които трябваше да ползвам по СДП реших да си сложа още някоя картинка най-отгоре в блога. Всички картинки са в wp-images/logos, а в wp-layout.css заместих url-то на логото с wp-random-logo.php. Съдържанието на последния файл е:
/*
Gives the browser a random .jpg image from wp-images/logos
*/
$logos = glob('wp-images/logos/*.jpg');
$lucky_logo = rand(0, count($logos)-1);
header("Content-type: ".image_type_to_mime_type(exif_imagetype($logos[$lucky_logo])));
print file_get_contents($logos[$lucky_logo]);

Като изключим тази, която ползвах досега, новите са рязаници от скорошни снимки.

П.П. общо картинките са 4 3. Ако имате желание да видите всички няма да са необходими много презареждания :)

Categories
сметачи

внимание – perl сигнализира!

Както всички знаем perl може всичко. Следователно може да прихваща сигнали под unix. Също така може да подлудява хората.

Сигналите се прихващат лесно : $SIG{INT} = \&sigint_handler;
Даже работят. Има обаче няколко много важни момента, които не трябва да се пропускат:

  • сигналите в perl са restartable. Всяко блокващо (бавно) системно извикване (като например read, wait, select, recv) се рестартира самоинициативно след получване на сигнала и на практика почти не спира своята работа.
  • от версия 5.7.3 насам прихващането на сигналите е безопасно. Представете си, че сте насредата на изпълнението на ф-ята funcshun. Половината системни изисквания необходими за работата ѝ, например някаква инициализация на памет, са били изпълнени и точно тогава получите сигнал, в чийто handler също се вика funcshun. Инициализацията ще мине още веднъж преди да е свършило изпълнението на предната функция и има немалък шанс да осъмнем с core dump. Unix C програмистите са свинкнали в своите signal handler-и просто вдигат флаг и нищо друго. В perl този труд не е необходим. Виртуалната машина се грижи тя да прихване сигнала и да изпълни нашия код, когато сметне, че вече няма какво да се омаже.
  • горната техника на отложено достигане на сигналите до нашите handler-и е нож с две остриета (Забележка: отложено е само извикването на нашия код – на по-ниско ниво perl приема сигнала точно когато трябва и нито миг по-късно). Предпазва ни от непредвидени грешки и усложнения, но понякога може бъде и не особено желана. Ето един такъв случай: ползвам Net::Pcap и в един момент викам неговата функция loop, която вътрешно вика в повечето случаи read или recv и когато се опитам да прихвана някой сигнал (освен с INT пробвах и с USR1 и с още няколко), то моят код се вика, чак когато пристигне следващия пакет (модула се ползва за следене на мрежови пакети на даден интерфейс), което е ужасно дразнещо защото карам потребителя да чака ужасно много време. Пък и докато пиша аз съм си потребител, което значи че аз трябва да чакам ужасно много време. А не искам!
  • установяването на променливата на обкръжението PERL_SIGNALS на "unsafe" ни гарантира, че веднага при получване на сигнал виртуалната машина ще изпълния нашия perl код, даден за handler на сигнала. Сигурност срещу удобство.
  • Полезни връзки: perlipc и по-специално Deferred Signals
Categories
сметачи

тъп register_globals, тъп register_globals

Уф, значи. Мразя го това животно register_globals. Почти не пиша вече на php, но пак ме преследва…

Проблемът – не виждах wordpress блоговете на debian-а. Просто ми показваха, че нямало статии, които отговарят на моите критерии и бла-бла. След доста ровене, глупаво писмо до Оги и малко подсещане от София нещата се изясниха. Някое приложение на debian-а е сложило cookie с път / и със съдържание author=nikolay. Стойността на глобалната променлива $author става "nikolay" заради глупавия register_globals. Е, не че е особено умно от страна на wp да си държи разни параметри в също глобални променливи, но качеството на wordpress е една съвсем друга тема. (Трябва скоро да си споделя впечатленията от кода на няколкото приложения, с които се занимавах напоследък… ) Факт е, че wp прави един intval на $author(разбира се intval("nikolay") == 0) и се пробва да търси статии с post_author=0. А такива няма….

Решението – изтрих си cookie-то и се надявам да не се появява повече!