четвъртък, 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

Обновено 14.10.2011: Връзката за сваляне на клавиатурният файл не работеше

След доста търсене, успях да си сложа алтернативна клавиатурна подредба поддържаща кирилица с уда̀рени бу̀кви и както и „български" кавички. Ето едно микро HOWTO:
  1. Сваляте клавиатурния файл от следния адрес: http://vstojkov.hit.bg/bg.25-12-2008
  2. (само за Ubuntu/Debian) Разкарвате оригиналната подредба, така че при обновяване на пакета xkb да не ви промени вашата:
  3. $ sudo dpkg-divert --add --rename --divert \
    /usr/share/X11/xkb/symbols/bg.orig \
    /usr/share/X11/xkb/symbols/bg
  4. Копирате сваления файл:
    $ sudo cp ~/Downloads/bg.25-12-2008 /usr/share/X11/xkb/symbols/bg
  5. Ubuntu: В Settings > Input Devices > Keyboard > Advanced отбелявате "Key To Choose 3rd Level" -> "Alt Gr" (десният Alt)
  6. Алтернативно: Ако не ползвате Ubuntu, трябва да пипнете /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
  7. Рестартирате X.
От тук нататък вече имате обогатена клавиатурна подреба - ударение се прави като напишете буквата която искате да ударите и след това десен Alt + ` (обратна кавичка).

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

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

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

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

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



Star Wars Floppy Disk

String.replaceAll одисея

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

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


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

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 г.

понеделник, 9 юни 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)

четвъртък, 5 юни 2008 г.

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

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



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

сряда, 4 юни 2008 г.

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

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




вторник, 3 юни 2008 г.

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

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


(Newton Faulkner teardrops live (Massive Attack cover))

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

понеделник, 2 юни 2008 г.

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


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