Posts Tagged ‘bsd’

Бутона DEL и стоте му превъплъщения

Monday, November 3rd, 2008

Във FreeBSD-то имах един проблем, който ми тровеше нервите - бутона DEL или не работеше или имаше собствено мнение какво трябва да прави. Това му поведение се държеше както в шела (csh), така и във Vim.
Какво точно ставаше:

  • DEL се държи като BACKSPACE - трие знака от ляво на курсора
  • при натискане на DEL се изписва ?^ или ?H или нещо подобно
  • при натискане на DEL просто не се случва нищо

Изметох Гугъл за отговори какво става с мен и накрая се оказа че имам полтъргайст в контролера на клавиатурата.
Майтап :) Ама се оказа че проблема с клавишите DEL и BACKSPACE е толкова заплетен, че чак ми стана чудно как в Windows и Linux до сега не съм имал проблеми. Ето ви един примерен документ да прочетете за какво става въпрос.
Е, оказа се че тъпия проблем има тъпо решение. Във Vim командата

:fixdel

оправя всичко и съответно може да бъде добавена в ~/.vimrc
За csh има подобна магия и това е:

if ($term == “xterm” || $term == “vt100″ || $term == “rxvt” \
|| $term == “vt102″ || $term !~ “con*”) then
# bind keypad keys for console, vt100, vt102, xterm
bindkey “\e[1~” beginning-of-line # Home
bindkey “\e[7~” beginning-of-line # Home rxvt
bindkey “\e[2~” overwrite-mode # Ins
bindkey “\e[3~” delete-char # Delete
bindkey “\e[4~” end-of-line # End
bindkey “\e[8~” end-of-line # End rxvt
endif
bindkey ^? delete-char # for console
bindkey ^[[3~ delete-char # for xterm

Идеята на последните два реда обезмисля целия if-endif блок преди това. При мен работи само така - и с двете неща накуп :)

Енкодване на клипове за k800 с mencoder и ffmpeg

Monday, September 1st, 2008

От месеци се мъчех да си смачкам някое друго видео, което да мога да си го гледам на телефона. GSM е Sony Ericsson k800. По спецификации поддържа:
- видео 3GPP (H263, H264), MP4, Real8
- аудио MP4 (AAC, AAC+, E-AAC+), MP3, M4A, WMA, 3GP, AMR, WAV, G-MIDI 1, Real 8
- максимална разделителна способност 320х240
- максимален битрейт - 400 kb/s - като това е общо видео битрейт + аудио битрейт
До сега имам поне към 500 неуспешни опита да енкодна видео с mencoder и то да тръгне на телефона. Във файловия мениджър се появява една иконка с пакетче и контекстен бутон Send (като на всички непознати файлове) и толкоз. Никакъв опит за по-съществен дебъг. Какво не му харесва? Тук вече става въпрос за много сложна комбинация от видео енкодер, аудио енкодер, видео формат, видео контейнер, аудио кодек, битрейти…
Ето някой от неуспешните опити с mencoder:

mencoder input.avi -ovc lavc -lavcopts acodec=ac3:abitrate=64:vcodec=mpeg4:vbitrate=300 -oac mp3lame -lameopts br=64 -vf scale=320:240 -of lavf -lavfopts format=mp4 -o output.mp4

Сега като го гледам този, не ми е чудно че не тръгва. Опитвам се да ползвам за аудио кодек АС3, а телефона май не го поддържа

mencoder input.avi -ovc x264 -x264encopts bitrate=350 -oac mp3lame -lameopts br=64 -vf scale=320:240 -o output.mp4

Едно време си мислех че x264 == MPEG-4, сега си мисля че не е точно така. Вече почнах да се обърквам кое е енкодер, кое е кодек и кое е контейнер…
Та това са само последните два от няколкостотин опита и килограми изхабени нерви по mencoder. Не искам да кажа че mencoder си върши работата зле - виновно е задклавиатурното устройство :) В други случаи mencoder върши чудесна работа, примерно това рипване на DVD:

mencoder dvd://3 -dvd-device /mnt/cdrom/ -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=”800″ -oac mp3lame -lameopts br=128 -o dvd.avi

По едно време ми писна и се залових за алтернативния софтуер - ffmpeg. Не ми хареса man страницата му, където са описани по-малко от половината опции. Въпреки това, работата горе долу стана.
Първо пробвах да преобразувам клипчето в 3GP, но се оказа че формата има комплект валидни разделителни способности, най-високата от които да ми върши работа беше 176х144. Не мерси.
Съсредоточих се върху MP4:

ffmpeg -i input.avi -ar 8000 -ac 1 -acodec libfaac -vcodec mpeg4 -s 320×240 -r 24 -b 300000 -ab 48000 -t 30 output.mp4

Видеото излезе с подходящия thumbnail в мениджъра на телефона, даже и тръгна. Единствения кусур беше звука, който беше с отвратително качество.
Ето подобрение:

ffmpeg -i input.avi -ar 44100 -ac 1 -acodec libfaac -vcodec mpeg4 -s 320×240 -r 24 -b 250000 -ab 64000 output.mp4

Аудио енкодера не ми даде да вдигна аудио битрейта докато не вдигнах и sampling rate-а. Намалих и видео битрейта, понеже на някои места видеото забавяше и се получаваше framedrop ефект. Накрая всичко тръгна на сто процента :)

Странни логове

Tuesday, August 12th, 2008

Внезапно закъсах за място на линукския дял и проведеното разследване показа, че имам 300МВ *неща* в /var/spool/clientmqueue Дълги са по около килобайт и са толкова много че rm не иска да ги трие :)
# rm * /bin/rm: Argument list too long.
# ls |wc -l 92562

Ето какво представлява едно от тези *неща*:
cat dfm2C0t6aE007318

array(6) { [0]=> string(52) “? (192.168.0.3) at 00:C0:95:EC:B7:93 [ether] on eth0″

[1]=> string(55) “? (85.187.229.129) at 00:30:48:8C:21:7A [ether] on eth1″

[2]=> string(55) “? (85.187.229.200) at 00:1B:24:16:B3:2B [ether] on eth1″

[3]=> string(55) “? (85.187.229.242) at 00:19:E0:0C:02:47 [ether] on eth1″

[4]=> string(55) “? (85.187.229.183) at 00:13:8F:EA:CB:F3 [ether] on eth1″

[5]=> string(0) “”

}
Помня че едно време си играх с arpwatch и той имаше някаква опция да праща отчети при смяна на MAC адрес по пощата, ама това не си е отчет ами просто някакъв дъмп от print_r() функцията в PHP. Шаш :) Изтриха се де:

# rm *0
# rm *1
# rm *2
.....
Сега да открия какво е оставило такива спомени там :)

Как да монтираме файловата система на FreeBSD в Linux

Tuesday, August 5th, 2008

Това го има на няколко места в нета, но на всичките по нещо куцаше, така че реших да напиша как стана при мен.
1) В ядрото трябва да имате:
CONFIG_UFS_FS (Filesystems -> Miscellanious -> UFS filesystem support) - можете да го сложите като модул, но ако искате по-късно автоматично монтиране от fstab, ще трябва да го вкарате в ядрото. Ако го сложите като модул, във fstab ще опишете файловата система с noauto (иначе mount протестира че няма такава файлова система ufs - поне при мен не си зарежда автоматично модула) и в rc.local си добавете “modprobe ufs”
CONFIG_BSD_DISKLABEL (Filesystems -> Partition types -> Advanced partition selection -> PC BIOS -> BSD disklabel) - това няма опция за компилиране на модул - само директно в ядрото

2) Ако ядрото ви е наред, време е да откриете точно кое устройство ви носи UFS файловата система.

dmesg | grep bsd

Ще се види нещо като:

sdb1: <bsd: sdb6 sdb7 >

Тук Linux вижда 1 устройство - sdb1, но FreBSD си има по-особена организация на файловите системи. Вероятно сте запознати с това, така че ще ви го спестя. Да видим как са разпознати от boot процеса на Linux - sdb6 и sdb7.
Едното ми е swap дяла, а другото root на файловата система. Ако се съмнявам кое кое е, ще пробвам по отделно:

3) Монтиране с mount:
- изберете типа на UFS - при съвременните BSD-та (или поне на FreeBSD7) е ufs2

# mount -r -t ufs -o ufstype=ufs2 /dev/sdb6 /mnt/bsd/
# ls /mnt/bsd
COPYRIGHT boot compat dist etc lib media proc root sys usr
bin cdrom dev entropy home libexec mnt rescue sbin tmp var

Уцелих от първия път :)

4) Описване в /etc/fstab

/dev/sdb6 /mnt/bsd ufs ro,ufstype=ufs2 0 0

По желание можете да сложите
noauto - ако сте компилирали ufs support на модул вместо директно в ядрото
users - за монтиране от обикновени потребители без root привилегии

Здравей, Opera!

Thursday, July 24th, 2008

На скоро Firefox си изтегли последния ъпдейт от 2.х.х.х серията и се почнаха едни забивания, увивания… За няколко дена бях вбесен. А за версия 3 още дума не може да става да ми дойде вкъщи.
Преди това бях забелязъл че в complete install-a на FreeBSD-то се включва и Opera, та реших да й дам шанс. Поразцъках я малко… и се влюбих :) Това няма нищо общо с онова отроче на софтуерната индустрия, което помня от преди години. Дръпнали са светлинни години напред. Няма ‘дай пари за лиценз’, няма ‘иди да хапнеш докато ти заредя страницата’…
Скорост - браузъра зарежда за 1/3 от времето за което зареждаше FF. Отваря нови табове още преди да си кликнал два пъти и сменя от таб на таб за същото време. Това елементарно упражнение в FF си беше мъка. Всъщност сменянето от таб на таб беше единственото нещо, което правеше лампичката за HDD activity да свети непрекъснато.
Speed dial - може да задавате няколко страници, на които да се прехвърлите. Нещо като bookmarks @ home page, но тук виждате в реално време съдържанието на страниците още преди да сте ги посетили в малки thumbnails.
Преотваряне на затворени табове - до колкото помня във FF тази функционалност се добавяше от Tab Mix Plus и подобните му добавки.
Zoom - реален zoom на страниците, а не само увеличаване на шрифта както беше във 2.х версиите на FF. Разликата между двете е че, когато се увеличава само шрифта, другите елементи остават несъразмерни и страницата започва да се размества (я пъхнете голям шрифт в малък div елемент)
Skins - само си тегли скиновете, като имате прозорче за preview. Можете да четете коментари, да гледате ревюта и рейтинг на същото място.
Mail, Chat, RSS - Opera има вградени клиенти. Обаче съм свикнал като цъкна на RSS линк да ми се отваря страницата за добавяне към Google Reader и малко ми е мъчно за FF :)
Още thumbnails - има опция за добавяне на thumbnails към Ctrl+Tab превключването и към самите табове. Като задържите мишката върху затворен таб, пада един thumbnail със съдържанието на страницата. Не ми допада много, ама си е екстра гъзария.
Image control - може да се изключи показването на картинки, или да се направи да се показват от локалния кеш.
User stylesheets - ако не ви харесва как изглежда някоя страница, можете да й зададете ваш stylesheet, който да ползва. Във FF това ставаше с добавка.
Mouse gestures - никога няма да привикна към каквито и да е жестове с мишката, така че това влиза в категория ‘гъзария’ :)
Notes - има си прозорче за добавяне на кратки бележки. Аз отдавна съм си свикнал да си пазя бележките в браузъро-независима среда като тесктови файлове, така че това ми изглежда още една ненужна ‘гъзария’.
AdBlock - забрана за зареждане на определени елементи от страниците - които вие посочите. Много голям плюс - мразя да гледам банери. Това ставаше с добавка във FF.

Липсва ми Web Developer добавката от FF. Тук има нещо подобно - Tools -> Advanced -> Developer Tools, но е далече от версията на FF.
В заключение на сравнението Opera <> Firefox (без да усетя съм почнал да ги сбивам :) ) ще кажа че Opera ми изглежда като всичко добро от FF събрано на куп и на стероиди. Бързината на зареждане - ако някога FF стигне до там, ще стане революция.
И все пак навика си е навик, и ако в някой скорошен ъпдейт на FF оправят забиванията и memory usage-то - пак ще почна да си го ползвам.