Rock IT
Владимир | 01/05/2012It’s a pub. it’s a rock pub. They play rock, they play metal and they have games … It’s a good place
It’s a pub. it’s a rock pub. They play rock, they play metal and they have games … It’s a good place
Разговор между перничани:
- Може ли да ми помогнеш за малко?
- Да, кой че биеме!?
Защо извънземните кацат в Радомир?
Защото в Перник много бият!
- Какво е пернишка сурвакница?
- Винкел с пуканки.
Къде настаняват гостите в Перник?
В поликлиниката.
С какво ги лекуват?
С винкелоскопия
-Къде са най-добрите голф играчи?
-В Перник. ‘Щото всички имат голф и всички са играчи
„Пред винкела всички са равни пред Голфа всички са бавни!“
народна мъдрост
Как е на пернишки диалект „готин, по-готин, най-готин“:
„Бог, Чък Норис, Тони Стораро“
Да спориш с перничанин е изкуство … понякога бойно.
Какво е Пернишка романтика? Бой на свещи.
В:Какво прави един перничанин като влезе в София?
О:Три обиколки на околовръстното,за да убие инерцията.
Двама приятели си говорят:
- Мечтая си за ваканцията да отида в Испания, да видя Корида, от биковете да бягам…
- Отиди в Перник на дискотека, бутни някой и бягай.
Пернишка сватба – булката хвърля вместо букет лята джанта …
Пернишко хайку:
Дискотека.
Седнал си ми на местОто.
Винкел.
Що е тва пернишки ужас?
Голф без тунинг
Как се нарича новата магистрала между Перник и Люлин?
Голфстрийм
Магистралата между Перник и Люлин всъщност е Винкелщрасе.
Металургичен комбинат „Каварна“ набира главотръси и косовъртовци. Заплащане няма ама бирата е вкусна!
Escherichia coli Escherichia беси
Ако не си личи по заглавието ето че открих удобствата на протокола XML-RPC. Хубав и удобен протокол за бързо пипване тук там по вашият блог. Днес това е благодарение на приложението WordPress за Nokia N900. След някой и друг ден ще пиша за впечатления и как се държи
Q: How to generate a random string?
A: Put a fresh student in front of vi and tell him to quit.
Една от хубавите страни на Nokia N900, е че е отворена платформа и можете да правите каквото ви хрумне с него (стига да не се страхувате че може да направите беля).
С тази играчка имате възможност да използвате поща. Поддържаните възможности са доста сериозни. Поддържат се някои доста известни доставчици на услугата (GMail, 3Mail, AOL др.), също така imap, pop3 (включително вариантите защитени със SSL) и Mail for Exchange (MfE). Лично аз съм голям противник на Exchange, но понякога човек просто няма избор (т.е. фирмата задължава). За удобство съм си го закачил на играчката (поради спецификата на работата ми).
За голямо мое неудоволствие се оказа че нямам кой знае колко настройки за честота на обновяване на иформацията. Е не че няма, но не ми бяха удобни.
Като възможности имаме избор между:
Да удобно е но, но не взима под внимание на каква мрежа сме закачени. Ако сме закачени на Wi-Fi подходяща е проверка на 30 мин (за да пестим батерия), ако сме на GPRS е подходяща проверка на 1 час (за да пестим трафик), но ако пък сме закачени посредством USB мрежа не ни притеснява нищо от това така че защо да не сме винаги на линия.
За наше щастие както казах и по горе това е отворена платформа и няма защо да се бъгясваме ами може да си го допишем (ако знаем как). Оказва се че модификацията която искаме хич не е тежка (даже доста лека бих казал).
Устройството използва gconf за съхраняване на настройките си а gconf е доста гъвкав и всички необходими инструменти за неговата манипулации са на лице.
За да променим настройка в gconf ни е необходимо да знаем една доста малка част от командите/възможностите му.
/home/user # gconftool-2 --help-client Usage: gconftool-2 [OPTION...] - Tool to manipulate a GConf configuration Client options -s, --set Set a key to a value and sync. Use with --type. -g, --get Print the value of a key to standard output. -u, --unset Unset the keys on the command line /home/user # gconftool-2 --help-key-type Usage: gconftool-2 [OPTION...] - Tool to manipulate a GConf configuration Key type options -t, --type=int|bool|float|string|list|pair Specify the type of the value being set, or the type of the value a schema describes. Unique abbreviations OK. -T, --get-type Print the data type of a key to standard output.
Забележка: Изхода от командите е поорязан малко
За да изпълним нашата задача ще създадем малък скрипт който да се изпълнява при включване в режим PC Suite, който да променя режима на синхронизация на винаги на линия. Скриптът ни ще запазва старите стойности за да може при изключване да ги възстановим.
Съответно ще напишем и скрипт който при изключване ще възстановява старите стойности.
Ще се възползване от предишаната статия за модулно изпълнение на скриптове при включване/изключване на PC Suite режима.
Създаваме си нов скрипт в директорията /etc/pcsuite/enable чиято цел е да промени настройките на нашите ActiveSync пощенски кутии (Exchange/Gmail) на винаги на линия.
01-set-activesync-allways-online.sh
# Set peak schedule to Always online on USB networking (PC Suite enable) LOCAL_AS_ACCOUNTS=`gconftool-2 --all-dirs /apps/activesync` for ACC in $LOCAL_AS_ACCOUNTS ; do # get original sync time (PEAK) mkdir -p /tmp/$ACC touch /tmp/$ACC/peak_schedule gconftool-2 -g $ACC/schedule/peak_schedule > /tmp/$ACC/peak_schedule gconftool-2 -g $ACC/schedule/current_schedule > /tmp/$ACC/current_schedule # Now set schedule to online gconftool-2 -s --type=int $ACC/schedule/peak_schedule -- 0 gconftool-2 -s --type=int $ACC/schedule/current_schedule -- 0 # Inc the change counter COUNTER=`gconftool-2 -g $ACC/params_change_id` #echo "COUNTER=$COUNTER" >> /tmp/counter #echo $(($COUNTER+1)) >> /tmp/counter gconftool-2 -s --type=int $ACC/params_change_id -- $(($COUNTER+1)) done
На 3ти ред получваме списък със всичките наши ActiveSync кутии/акаунти. След това за всяка една от тях създаваме уникално място в което да съхраним оригиналната настройка и я запазваме (gconftool-2 -g …). И накрая настройваме променливата peak_schedule на 0 което се превеждакато винаги на линия. Допълнително след малко опити и грешки се установи че трябва също така да настроим и променливата current_schedule, както и да увеличим брояча на промените в конфигурацията. Без тези две настройки поведението на клиента не е особенно надеждно.
Спирането на PC Suite режима реално е изваждането на USB кабела.
Създаваме си нов скрипт в директорията /etc/pcsuite/disable чиято цел е да промени настройките на нашите ActiveSync пощенски кутии (Exchange/Gmail) на оригиналните които сме запомнили при включването в PC Suite режим.
98-restore-activesync-schedule.sh
# Set peak schedule to Always online on USB networking (PC Suite enable) LOCAL_AS_ACCOUNTS=`gconftool-2 --all-dirs /apps/activesync` for ACC in $LOCAL_AS_ACCOUNTS ; do # get original sync time (PEAK) LOCAL_ORIG_TIME=`cat /tmp/$ACC/peak_schedule` if [ "x$LOCAL_ORIG_TIME" == "x" ] ; then LOCAL_ORIG_TIME=60 fi LOCAL_ORIG_CURR_SCHED=`cat /tmp/$ACC/current_schedule` if [ "x$LOCAL_ORIG_CURR_SCHED" == "x" ] ; then LOCAL_ORIG_CURR_SCHED=60 fi # Now set original schedule gconftool-2 -s --type=int $ACC/schedule/peak_schedule -- $LOCAL_ORIG_TIME gconftool-2 -s --type=int $ACC/schedule/current_schedule -- $LOCAL_ORIG_CURR_SCHED # Inc the change counter COUNTER=`gconftool-2 -g $ACC/params_change_id` #echo "COUNTER=$COUNTER" >> /tmp/counter #echo $(($COUNTER+1)) >> /tmp/counter gconftool-2 -s --type=int $ACC/params_change_id -- $(($COUNTER+1)) # And cleanup the crap rm -rf /tmp/$ACC done
Тук по същият начин получаваме списък с акаунти и за всеки един от тях възстановяваме старите стойности. Ако по някаква случайност нямаме стара стойност избираме среден вариант със стойност от 1 час. И най-накрая разчистваме записаната настройка. Разбира се не трябва да забравяме да променим и брояча за промени на стойностите.
Е с малко работа/играчка успяхме да обучим пощенският ни клиент да преминава автоматично в режим Винаги на Линия когато използваме USB мрежа (благодарение на PC Suite режима). По този начин ще сте винаги информирани какво се случва с вашата поща (а дали това е желателно си е чисто ваш проблем :P)
История:
- Първа версия: 21.03.2011
- Допълнителни променливи: 26.04.2011
Както знаете а може би не знаете аз съм горд собственик на Nokia N900 и даже съм понаписал няколко статии за това устройство. Една от първите причини да си закупя тази играчка беше, че е нещо доста повече от телефон. По-скоро се класира като таблет който даже има и телефон в него. Първата сериозна модификация която му направих беше да го науча да използва USB за интернет което си е голяма благинка. Хем играчката има интернет, хем се и зарежда :).
Както съм описал в статията налага се да се попипне тук там за да може да се вдигне мрежов интерфейс на се осигурят рутинг и други дреболийки.
С оглед на бъдещето реших да модифицирам две парчета от решението, за да може в бъдеще по-лесно и по-логически да добавям нови функционалности.
Всички знаем че монолитните парчета код не че пречат, но са трудни за управление и търсене на проблеми. Ако си изградим модулна система за изпълняване на парчета код ще имаме по лесен начин за добавяне/премахване на функционалност и като следствие от това по-лесно управление на устройството.
Днес ще модифицираме кода в /usr/sbin/pcsuite-enable.sh и /usr/sbin/pcsuite-disable.sh за да може да изпълнява множество скриптове.
Идеята за реализацията идва от начина по който стандартните командни обвивки в Linux зареждат променливи при стартиране.
В оригиналната статия имаме следното парче код
При избиране на PC-Suite mode от менюто при включване се изпълнява скрипта /usr/sbin/pcsuite-enable.sh. За да активираме автоматично интерфейса трябва да добавим в края му необходимите ни команди. Намерете секцията:
kill -USR1 $SYNCD_PID logger "$0: sent SIGUSR1 to syncd" exit 0и я заменете с:
kill -USR1 $SYNCD_PID logger "$0: sent SIGUSR1 to syncd" ifup usb0 echo "nameserver 8.8.8.8" >> /etc/resolv.conf echo "nameserver 8.8.4.4" >> /etc/resolv.conf exit 0
Вместо да пишем директно във файла там ще добавим малък цикъл който да проверява на друго място дали има файлове и да ги включва в кода автоматично. Също така и ще оправим един малък бъг. Както забелязвате от кода мрежата се стартира след като демонът за синхронизация е информиран, че се е случило нещо. Следствието от това е, че демонът няма мрежа и не изпълнява синхронизация. Нашето парче код ще бъде преместено над него за да може да си свършим цялата работа и да имаме мрежа когато демонът е информиран.
Новият ни код изглежда по следният начин
## Modular actions on PCSuite Enable
if [ -d /etc/pcsuite/enable ]; then
for i in /etc/pcsuite/enable/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
## Modular actions end
exit 0
Проверява дали съществува директория /etc/pcsuite/enable и за всеки файл в нея който има разширение *.sh ако може да бъде прочетен го включва в скрипта.
Съответно за да възстановим старата функционалност в директорията /etc/pcsuite/enable създаваме 2 файла
/etc/pcsuite/enable # ls -l
-rw-r–r– 1 root root 160 Mar 20 12:07 00-bring-usb-network-up.sh
-rw-r–r– 1 root root 103 Mar 20 12:17 99-invoke-syncd.sh
Със следното съдържание
00-bring-usb-network-up.sh
# Bring up USB networking so device can leech net from PC ifup usb0 echo "nameserver 8.8.8.8" > /etc/resolv.conf echo "nameserver 8.8.4.4" >> /etc/resolv.conf
99-invoke-syncd.sh
# Restore removed func from pcsuite-enable.sh kill -USR1 $SYNCD_PID logger "$0: sent SIGUSR1 to syncd"
Избрали сме да използване цифрови префикси за по лесно подреждане на модификациите. Може да се окаже че някоя модификация изисква други модификации да са свършили преди нея и по този начин най-лесно постигаме това.
В оригиналната статия имаме следното парче код
При изваждане на USB кабела автоматично се изпълнява скрипта /usr/sbin/pcsuite-disable.sh където и ще добавим нашите инструкции за автоматично спиране на интерфейса.
Намерете секцията:logger "$0: do nothing to pass USB certs" exit 0и я заменете с:
logger "$0: do nothing to pass USB certs" ifdown usb0 echo "nameserver 127.0.0.1" > /etc/resolv.conf exit 0
Това парче ще модифицираме по аналогичен начин
logger "$0: do nothing to pass USB certs"
## Modular actions on PCSuite Disable
if [ -d /etc/pcsuite/disable ]; then
for i in /etc/pcsuite/disable/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
## Modular actions end
exit 0
Проверява дали съществува директория /etc/pcsuite/disable и за всеки файл в нея който има разширение *.sh ако може да бъде прочетен го включва в скрипта.
Съответно за да възстанивим старата функционалност създаваме файла 99-bring-usb-network-down.sh със следното съдържание
99-bring-usb-network-down.sh
# Bring down and cleanup USB networking ifdown usb0 echo "nameserver 127.0.0.1" > /etc/resolv.conf
По този прост начин си сътворихме система за модулно, и до известна степен със зависимости изпълнение на модификации. Освен това получихме лесен начин за управление на модификациите. АКо нещо не нии трябва просто го махнете от директорията или го преименувайте примерно на *.sh.inactive
Е надявам се да ви е било полезно
Че политическите елементи в текущите окръзи са … „странни“ за да сме културни си го знаехме, но последното двайсе от БББ не го очаквах. Според Sportal смятат да правя Ицето почетен консул в барселона. Че не е истински консул ясно ама че е публична личност пак ясно … Ама ицето … стига бе хора та той едва скълъпва две приказки …
Е от вчера вече официално няма debian volatile хранилища (но пък вече има squeeze-updates). Ще кажете какво по дяволите е това … ами това са хранилища за пакети в които влиза често обновяван софтуер. От сорта на tzdata, clamav и други дреболии.
Официалното съобщение: http://www.debian.org/News/2011/20110215
Приниципно аз карам на stable (а не на codename-а (squeeze)) и това ми докара малко бели на главата в процеса на ъпгрейд. Но за това друг път.