26 юни 2008, четвъртък

Using Philips GoGear SA4325 with Linux

I just bought new mp3 player Philips SA4325. It is nothing special - features 2Gb internal storage, OLED display and USB 2.0 mass storage protocol for transferring files. I encountered very strange problem - when I mounted the device for the first time everything was just fine - I was able to play the transferred songs. When I tried to do this for second time - the new files I uploaded were missing, and the first ones were broken. After couple of hours of trial and error process I (think) found what is the problem: by default the filesystem on the player is FAT16. It seems the player's firmware is not updating correctly FAT tables on filesystem when it scans for new files at startup. After I format the player and start it, then I run dosfsck, I get the following result:

root@buhtum:/home/svilen# dosfsck -v /dev/sdb1
dosfsck 2.11 (12 Mar 2005)
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
Checking we can access the last sector of the filesystem
Boot sector contents:
System ID "mkdosfs"
Media byte 0xf8 (hard disk)
2048 bytes per logical sector
32768 bytes per cluster
1 reserved sector
First FAT starts at byte 2048 (sector 1)
2 FATs, 16 bit entries
120832 bytes per FAT (= 59 sectors)
Root directory starts at byte 243712 (sector 119)
512 root directory entries
Data area starts at byte 260096 (sector 127)
60076 data clusters (1968570368 bytes)
58 sectors/track, 224 heads
0 hidden sectors
961350 sectors total
FATs differ but appear to be intact. Use which FAT ?
1) Use first FAT
2) Use second FAT


One of the most critical parts of this "filesystem" is the actual file allocation table stored in a special place on the disk. Usually there are 2 copies of the information for higher reliability. It seems the player's firmware is not updating one of them. I solved the problem by formating the player with just one FAT table:

mkdosfs -S 2048 -F 16 -f 1 -v -n PHILIPS /dev/sdb1

Now I was able to mount few times the player, copy new files without worrying that they will disappear. The dosfsck is much more optimistic:

root@buhtum:/home/svilen# dosfsck -v /dev/sdb1
dosfsck 2.11 (12 Mar 2005)
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
Checking we can access the last sector of the filesystem
Boot sector contents:
System ID "mkdosfs"
Media byte 0xf8 (hard disk)
2048 bytes per logical sector
32768 bytes per cluster
1 reserved sector
First FAT starts at byte 2048 (sector 1)
1 FATs, 16 bit entries
120832 bytes per FAT (= 59 sectors)
Root directory starts at byte 122880 (sector 60)
512 root directory entries
Data area starts at byte 139264 (sector 68)
60080 data clusters (1968701440 bytes)
58 sectors/track, 224 heads
0 hidden sectors
961350 sectors total
Checking for unused clusters.
/dev/sdb1: 9 files, 781/60080 clusters

Probably this trick will work on other players from SA43xx series.

13 юни 2008, петък

Как да пишем букви с ударения под Linux

След доста търсене, успях да си сложа алтернативна клавиатурна подредба поддържаща кирилица с уда̀рени бу̀кви и както и „български" кавички. Ето едно микро HOWTO:
  1. Сваляте клавиатурния файл от следния адрес: http://osdir.com/ml/misc.translate.bulgarian/2006-04/txt82Jz8FbxYD.txt
  2. Редактирате сваления файл - има малка грешка в раздела за фонетичната клавиатура:
    Редът:
    include "pc/bg(traditional_phonetic)"
    трябва да стане:
    include "bg(traditional_phonetic)"
  3. (само за Ubuntu/Debian) Разкарвате оригиналната подредба, така че при обновяване на пакета xkb да не ви промени вашата:
    $ sudo dpkg-divert --add --rename --divert \
    /usr/share/X11/xkb/symbols/bg.orig \
    /usr/share/X11/xkb/symbols/bg
  4. Копирате сваления файл:
    $ sudo cp /tmp/txt82Jz8FbxYD.txt /usr/share/X11/xkb/symbols/bg
  5. В /etc/X11/xorg.conf, секция „Input Device", опция "XkbOptions" добавяте "lv3:ralt_switch" - това активира десния Alt (AltGr) да превключвате на трети регистър, където са специалните възможности. Моята секция изглежда така:
    Section "InputDevice"
    Identifier "Generic Keyboard"
    Driver "kbd"
    Option "CoreKeyboard"
    Option "XkbRules" "xorg"
    Option "XkbModel" "pc105"
    Option "XkbLayout" "us,bg"
    Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll,lv3:ralt_switch"
    EndSection
  6. Рестартирате X.
От тук нататък вече имате обогатена клавиатурна подреба - ударение се прави като напишете буквата която искате да ударите и след това десен Alt + Q. Има удобен клавиш за ударено „ѝ" - Shift + ь, Получавете знаци като: †, ѭ, ѫ, …, и други.

Повече информация има тук. Във форумите на Linux-BG има алтернативни клавиатурни подреби, с които можете да пишете гръцки и други букви: ёыэ„“ѐ®©ѐ™υѝωπαδγφγχξλζβνμΩΠΔΦΞΛ

12 юни 2008, четвъртък

Модерна заплаха

Видяно към коментар в една новина:
Заглавие: ЩЕ ЗАГАЗИТЕ
От: абеее тапациии
аз пък чета коментарите на такива тапаци като вас и ви се чуда ... на тъпия акъл вие ако имате пари .. повечето в България нямат ... за това ТРАЙ да не те намера по IP -то и да те трошнем

Старите флопита като музикален инструмент



Star Wars Floppy Disk

String.replaceAll одисея

Колега от нашия екип настъпа интересна Java-ешка мотика. Имаме следния примерен безобиден код:

String template = "Our price: ";
String price = "$9.99";
String msg = template.replaceAll("", price);
System.out.println(msg);


Искаме да заменим в шаблончето с истинската цена. При изпълнение обаче получаваме:

Exception in thread "main" java.lang.IndexOutOfBoundsException: No group 9
at java.util.regex.Matcher.group(Matcher.java:463)
at java.util.regex.Matcher.appendReplacement(Matcher. java:730)
at java.util.regex.Matcher.replaceAll(Matcher.java:80 6)
at java.lang.String.replaceAll(String.java:2000)


Опааа! К'о стана? При внимателно четене на документацията се оказва, че $ и \ се използват за заместване на прихванати низове в регулярния израз в първия аргумент на replaceAll (/foo(bar)baz/ => $1 = bar):

Note that backslashes (\) and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string. Dollar signs may be treated as references to captured subsequences as described above, and backslashes are used to escape literal characters in the replacement string.

В Java 5 и по-нова са "решили" проблема - за да направите прост replaceAll без необходимост от регулярен израз използвайте...

replace(CharSequence, CharSequence) // String implements CharSequence

Интуитивно, нали?. Ако държите е на регулярените изразчета като шаблон за търсене, и да нямате проблем с низа за заместване използвайте:

template.replaceAll("pattern", Matcher.quoteReplacement("replacement text"));

11 юни 2008, сряда

Кой е по-по-най



Чък Норис, разбира се?!

Мъже от стомана


Превод: "Само мъжете от стомана, карат коли от хартия" :)

09 юни 2008, понеделник

Euro 2008 през Интернет, ама за Linux

Бърз, мръсен и работещ скрип да гледате мачовете от Евро 2008 през Интернет под Линукс:

$ curl http://ep2008.ontheweb.bg/diema_bg_euro.php | \
perl -e 'while(<>) { print $1 if /src="(.+?)"/; }' | \
mplayer -playlist -


Качеството е поносимо - не бих го заменил за телевизора. Става да гледате мача и в кенефа ако имате wifi и лаптоп.

Бразилец с Голф глобен за шофиране с 880 км/ч

Такива новини правят деня ми по-хубав:
Управлението на пътната полиция в Рио де Жанейро остави без последствие обжалването на шофьор, който бил глобен за превишена скорост, след като радарът отчел 880 км/ч, съобщават местни медии, цитирани от ЕФЕ.
Перипетиите на инженер Рафаел Андраде започнали още през 2006 г., когато бил глобен със 127 реала /около 78 долара/, защото радарът засякъл, че неговата кола Фолксваген с обем на двигателя 1000 куб/см и мощност 65 конски сили се движи със скоростта на самолет.


Перник, спите!

Hyperlink absue

Интернет изданието на Дневник, днес:


Забелязване гадно, автоматизирано подчертаване на буквичката "о", което се оказва тъпа рекламка на компаниата с оня другия Любо (дето не е дебел). Якоб Нилсен ще ви тегли майна. Ако търсите оригиналност за рекламите, вдъхновете се от Apple и техните свързанни баннери.

Адска музика

Роналд Дженкис е независим изпълнител и Интернет селебрити. Нарича себе си "keytar" (keyboard + guitar) изпълнител - обича хип-хоп и фънк бийтове и е абсолютен магьосник на клавишните. Парчетата му са зашеметяващи - чуйте само това:

messin with an e-piano sound (with distortion, LOL)

Яко, а? Превенето на музиката е fun, нали? Ето и малко як дистър:

messin with a guitar sound (will be on my next CD)

05 юни 2008, четвъртък

Паркинг автомат на слънчеви батерии

Когато бяхме в Дубровник (Хърватска) през май месец, забелязах че на доста места има джаджи захранвани от слънчеви батерии, като например този автомат за паркиране:



Също така имаше и светещи пътни знаци и информационни табла - отново на слънчеви батерии.

04 юни 2008, сряда

Твоята доза песимизъм

Имам нов любим блог - Failblog. Лека доза песимизъм прави деня ти по-хубав - странно, нали?




03 юни 2008, вторник

Акустична атака

Никога не съм бил запален почитател на Massive Attack. Само, че този вариант на Newton Faulkner е уникален с натуралистичното си звучене. Faulkner е известен с необикновенния си китарен стил, като използва корпуса на китарата си по доста изобретателен начин:


(Newton Faulkner teardrops live (Massive Attack cover))

... аз бих добавил, че избира доста нестандартни места да записва клиповете си ;)

02 юни 2008, понеделник

Невъзможната CAPTCHA


RapidShare са заменили конвенционалната CAPTCHA с такава, която даже и средноинтелигентен човек не може да разгадае. Три опита, безуспешно. Да му мислят машините.