Новый сервис – Аудиоредактор

Я тут новый сервис наваял — Аудиоредактор. Он позволяет загружать аудио файлы на сервер, конвертировать их в AAC, M4R, MP3, OGG или WAV, а также вырезать выбранный интервал из трэка. Также можно добавить эффект приглушения звука в начале и в конце трэка (эффект fade), загружать аудио по прямым ссылкам.

Есть и экспериментальная фича, можно вырезать звук из ролика в Youtube. Только честно скажу, это срабатывает не всегда: иногда youtube банит айпишник за слишком частое скачивание; иногда ругается на то, что в стране сервера просмотр ролика невозможен из-за ограничения авторских прав; могут быть и другие причины.

Но в целом все работает, может кому-то будет интересно.

Как обнаружить перегрев CPU в OpenSuSe 12.2

Не так давно столкнулся с очередной проблемой с железом. Компьютер c OpenSuSe 12.2 после какого-то непродолжительного времени работы самопроизвольно выключался. После очередного включения иногда раздавался звук сирены в BIOS, и в /var/log/messages периодически появлялась надпись: [Hardware Error]: Machine check events logged

Первое, что надо сделать — это установить пакет sensors и проверить температуру процессора:

$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +94.0°C  (high = +78.0°C, crit = +100.0°C)
Core 1:       +92.0°C  (high = +78.0°C, crit = +100.0°C)

Если на компьютере не выполняются тяжелые приложения, то температура ядер процессора не должна превышать параметра high. Но у меня камень грелся градусов до 90 после включения, что говорило о проблемах с охлаждением процессора

Разобрав системный блок, увидел вот что. Два из четырех креплений охлаждающего вентилятора на процесссоре отошли от материнской платы по неизвестной причине, да и пыль изрядно накопилась на пластинах радиатора. Я снял вентилятор, стер на всякий случай старую термопасту с вентилятора и процессора и добавил тонкий слой новой термопасты; пропылесосил алюминиевый радиатор и поставил все на место.

После включения проблем с перегревом CPU больше не наблюдалось, после включения компьютера температура ядер была на уровне 38-40 градусов

Как скачать видео с YouTube

Youtube не стоит на месте, и способы скачивания видео, описанные здесь и здесь, больше не работают в Firefox. Зато я открыл для себя новый способ скачивания видео — с помощью плагина FlashGot.

Этот плагин очень умный, он может использовать один из существующих системных загрузчиков (curl, wget или любой другой доступный в системе) для скачивания видео в заданную директорию. Он определяет URL видео, подставляет в загрузчик правильный Referer, UserAgent и Cookie, и Youtube без проблем отдает видео на скачивание — так как считает, что отдает его браузеру, а не загрузчику. Просто и эффективно.

Работа модема через GPRS / 3G в OpenSUSE 11.4

Обнаружил интересную багу в работе модема через GPRS или 3G. В качестве звонилки я использую wvdial с вот такими настройками:

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","mtelinternet"
Modem = /dev/ttyACM0
Phone = *99***1#
Idle Seconds = 30000
Modem Type = USB Modem
Stupid Mode = 1
Compuserve = 0
Baud = 460800
Auto DNS = on
New PPPD = Yes
Dial Command = ATDT
Ask Password = 0
ISDN = 0
Password = internet
Username = internet

Соединение происходит, адреса DNS серверов успешно получаю при соединении, а вот сам интернет работает через раз. Причем угадать, будет ли он работать или нет, никакой возможности не имеется. Симптомы следующие, после установки соединения wvdial пытается отресолвить какое-то тестовое доменное имя, и таким образом определяет, работает ли DNS в установленном соединении:

Warning, can not find address for www.suse.de
Warning, address lookup does not work
Nameserver (DNS) failure, the connection May not work.

Если такие предупреждения видны, то возможны 2 ситуации.

Во-первых, wvdial не смог прописать адреса DNS сервера в /etc/resolv.conf. Лечится прописыванием адресов провайдера вручную — что и было сделано; но проблема не была устранена полностью.

Во-вторых, возможны проблемы с размерами окна tcp в туннеле ppp. В этом случае надо поиграться с настройками размера окна tcp:

echo “0″ >/proc/sys/net/ipv4/tcp_window_scaling

Лично мне это очень помогло, после чего я решил установить такие настройки в системе по умолчанию — дописал в /etc/sysctl.conf вот такую строчку:

net.ipv4.tcp_window_scaling = 0

и перечитал параметры:

# sysctl -p

После всех манипуляций интернет стал работать намного более стабильно. В качестве модема я использовал свой телефон Nokia E5

Использование телефона Nokia E5-00 в качестве модема в OpenSuSe 11.4

Nokia E5

0. Переводим в телефоне режим соединения по USB в “Nokia PC Suite”. Если его использовать в режиме “Накопитель” – модем просто не определится в системе.

1. Подключаем телефон с помощью дата-кабеля. Смотрим на его параметры, и у меня они выглядят примерно так:

# lsusb | grep Nokia
Bus 002 Device 005: ID 0421:0380 Nokia Mobile Phones

2. Проверяем, распознала ли операционная система это устройство как модем:

# ls -l /dev/tty* | grep dialout
crw-rw---- 1 root dialout 4, 64 Jul 14 11:42 /dev/ttyS0
crw-rw---- 1 root dialout 4, 65 Jul 14 10:59 /dev/ttyS1
crw-rw---- 1 root dialout 4, 66 Jul 14 10:59 /dev/ttyS2
crw-rw---- 1 root dialout 4, 67 Jul 14 10:59 /dev/ttyS3
crw-rw---- 1 root dialout 4, 68 Jul 14 10:59 /dev/ttyS4
crw-rw---- 1 root dialout 4, 69 Jul 14 10:59 /dev/ttyS5
crw-rw---- 1 root dialout 4, 70 Jul 14 10:59 /dev/ttyS6
crw-rw---- 1 root dialout 4, 71 Jul 14 10:59 /dev/ttyS7

3. Устройство не определилось. В этом случае надо загрузить модуль ядра с соответствующими параметрами:

# modprobe usbserial vendor=0x0421 product=0x0380

Параметры для vendor и product берем из вывода lsusb на шаге 1.

4. Проверяем, появился ли модем:

# ls -l /dev/tty* | grep dialout
crw-rw---- 1 root dialout 166, 0 Jul 14 11:54 /dev/ttyACM0
crw-rw---- 1 root dialout 4, 64 Jul 14 11:42 /dev/ttyS0
crw-rw---- 1 root dialout 4, 65 Jul 14 10:59 /dev/ttyS1
crw-rw---- 1 root dialout 4, 66 Jul 14 10:59 /dev/ttyS2
crw-rw---- 1 root dialout 4, 67 Jul 14 10:59 /dev/ttyS3
crw-rw---- 1 root dialout 4, 68 Jul 14 10:59 /dev/ttyS4
crw-rw---- 1 root dialout 4, 69 Jul 14 10:59 /dev/ttyS5
crw-rw---- 1 root dialout 4, 70 Jul 14 10:59 /dev/ttyS6
crw-rw---- 1 root dialout 4, 71 Jul 14 10:59 /dev/ttyS7

5. Модем готов к работе, создаем конфигурационный файл для wvdial (МТС):

$ cat /etc/wvdial.conf
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","internet.mts.ru"
Modem = /dev/ttyACM0
Phone = *99***1#
Idle Seconds = 300
Modem Type = USB Modem
Stupid Mode = 1
Compuserve = 0
Baud = 460800
Auto DNS = on
New PPPD = Yes
Dial Command = ATDT
Ask Password = 0
ISDN = 0
Password = mts
Username = mts

Если внимательно посмотреть на конфигурационный файл, то он почти на 100% совпадает с тем, что я использовал для телефона SonyEricsson K750i, разница только в скорости. Здесь она 460800 Baud, а там была 115200.

Обзор телефона Nokia E5

Nokia E5

Решил я свой телефон поменять, ибо мой SonyEricsson K750i уже морально и физически устарел. К новому телефону предъявил следующие требования:

  1. Он должен быть Труъ Телефономъ, т.е. быть классической формы и не быть тачскрином
  2. Он дожен уметь совершать голосовые звонки в Skype и в других SIP клиентах через Wi-Fi
  3. В идеале он должен держать заряд подольше
  4. Желательно наличие QWERTY клавиатуры

На текущий момент под такие требования подошло всего несколько телефонов стоимостью до 7к рублей. Очень заинтересовали 2 из них, BlackBerry Curve 8520 и Nokia E5; но как выяснилось, Блекбери не подойдет. Дело в том, что по непонятным причинам на российский рынок поставляют эти модели с залоченым вайфаем. В принцепе эта проблема решаема, в сервисном центре недолго думая смогут его включить, однако нести только что купленый телефон в сервисный центр – моветон.

Так что мой выбор пал на Nokia E5, и я его купил. Но первое впечатление оказалось отвратительным. Версия софта на телефоне была древней, жутко тормозила и периодически телефон зависал. Пришлось скачать програмку Nokia Mobile Suite, и с ее помощью залить в телефон последнюю версию софта с исправленными багами. Но опять же это оказалось непросто, ибо пару раз в процессе заливки софта телефон намертво вис, и процесс приходилось начинать заново.

После ряда безуспешных попыток обновить софт мне в голову пришла светлая мысль – а не сделать ли телефону Hard Reset? Благо на нокиях это делается совсем просто – с помощью ввода сервисного кода *#7370#.

И тут случилось чудо, телефон перестал виснуть – тогда мне и удалось его обновить до версии софта 091.001 (версию софта можно узнать набрав *#0000#).

После обновления телефон стал работать нормально, исчезли зависания и тормоза. Домашняя точка доступа WiFi сразу подцепилась телефоном, и можно было бы начать тестирования звонков с использованием SIP. Однако выяснилось, что почему-то Нокия не установила в систему приложение Advanced SIP Settings, без которого встроенный SIP клиент работать не сможет. Пришлось курить много форумов, искать решение проблемы – но все же проблему решить удалось.

Для этого пришлось завести себе аккаунт на developer.nokia.com, и скачать вот отсюда SIP VOIP 3.x Settings (164 Kb). Главное не промахнуться, т.к. SIP VOIP 3.1 Settings не совместимы с Nokia E5-00. Без регистрации на developer.nokia.com скачать не получится, поэтому регистрация обязательна.

После установки софта встроенный SIP клиент заработал на отлично. Но как оказалось, можно обойтись и без него. Через магазин Ovi можно скачать два бесплатных SIP клиента – Fring и Nimbuz, они замечательно справляются со звонками через SIP. Nimbuz на мой взгляд удобнее, т.к. в отличие от Fring он позволяет регистрировать сразу несколько SIP аккаунтов.

Следующим на очереди был Skype. В Ovi Store он тоже был в качестве бесплатной программы, но почему-то передача голоса в нем работала отвратительно – было слышно сплошное бульканье, в результате чего собеседник ничего не мог разобрать из нашего разговора. Это лечится установкой скайпа с сайта skype.com, только ОБЯЗАТЕЛЬНО надо ставить версию Skype для платформы S60 без тачскрина (в настоящий момент последняя версия Skype v.1.50.12, т.е. файл называется Skype_S60_3_0_v_1_5_0_12.sisx). Загруженный с сайта Skype работает на ура.

Вот теперь телефон меня устраивает на все 100%. Держит заряд отлично, удобно набирать текст на клавиатуре; качество голоса при звонках через WiFi – отличное, при звонках через 3G – приемлемое.

А еще в телефоне обнаружился чудо-режим работы Автономный, при котором телефон блокирует доступ к сети оператора сотовой связи. Т.е. звонить и чатиться можно в нем только через Wi-Fi без боязни попасть на деньги, связанные с использованием интернета в роуминге. Особенно актуально это тем, кто только что слез с самолета в аэропорту и решил сделать звонок домой об успешном приземлении.

А раз так, то грабительским расценкам за роуминг можно сказать “Прощай”, ибо Wi-Fi есть практически везде, куда я езжу. Не везде он бесплатный, но в любом случае стоимость работы в платной сети вайфай на несколько порядков ниже стоимости звонка в роуминге. Я знаю о чем говорю, т.к в далеком 2010-м году я сдуру позвонил из аэропорта Майами, что обошлось мне в 150 рублей за минуту разговора. А вайфай в этом аэропорту полностью бесплатен; даже розетки питания есть возле кресел в зале ожидания – и они доступны для всех желающих с ноутбуками.

В общем мой вердикт такой: если не пугает необходимость обновления софта, этот телефон стоит брать. Он стоит своих денег, и ему альтернативы нет среди смартфонов с классическим типом корпуса и без тачскрина.

OpenSuSe 11.4 и некорректное размонтирование дисков при выключении

Не так давно заметил багу. При включении OpenSuSe 11.4 замечал, что иногда диски определялись как некорректно выключенные (Transaction replayed …). И подумал, а что за хрень, почему это происходит?

Оказалось, что при выключении компьютера скрипты выполняются параллельно, и иногда выключение происходит до того, как раздел диска был корректно размонтирован. Эта бага лечится очень просто, надо лишь отключить параллельный запуск скриптов, т.е. в файле /etc/sysconfig/boot прописать RUN_PARALLEL=”no” (у меня этот параметр был установлен в “yes”).

С тех пор диски размонтируются корректно при выключении

Старый ноутбук и KDE4

Есть у меня древний ноутбук (Dell Latitude L110 с 512Mb RAM), на который я установил OpenSuSe 11.4. В качестве оконного менеджера я с дуру поставил KDE4, о чем в последствии сильно пожалел. KDE4 штука красивая, но жутко требовательная к ресурсам – сам оконный менеджер стартует секунд 30, и съедает практически всю доступную память, и все приложения начинают дико тормозить

Оптимизировать KDE до определенных пределов можно, но все же это полумеры. Наиболее радикальным решением была бы смена оконного менеджера на что-нибудь более легковесное. И я решил попробовать icewm lite вместо KDE.

В OpenSuSe 11.4 сменить оконный менеджер очень легко, сначала через Yast надо его установить (там буквально 2-3 пакета), и далее редактором /etc/sysconfig в секции Desktop => Window manager => DEFAULT_WM заменить на icewm.

Запускаю иксы и удивляюсь – оконный менеджер загрузился моментально. Выглядит он, мягко говоря, по-спартански (в стиле Windows 95), эффектов графических нет, и благодаря этому примерно 256 мегабайт памяти было свободно. Ура, казалось бы, долгожданный эффект достигнут.

Однако две вещи меня не устроили. По умолчанию язык у меня был английский, и возможности переключения на русский не было. На привычные мне сочетания клавиш (Ctrl+Shift) оконный менеджер никак не реагировал.

Эта проблема решилась очень просто. Я создал конфигурационный файл /etc/X11/xorg.conf.d/90-keytable.conf следующего содержания:

Section "InputClass"
Identifier "LocalKeyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "us,ru"
Option "XkbVariant" ",winkeys"
Option "XkbOptions" "grp:ctrl_shift_toggle"
EndSection

И со следующего запуска иксов у меня стала нормально работать русская раскладка клавиатуры с переключением между языками по нажатию Ctrl+Shift.

Вторая проблема – отсутствие звука. В KDE у меня звук регулировался приложением kmix, и я его решил добавить в автозагрузку icewm, чтобы привычными горячими клавишами его включать, выключать и регулировать громкость.

Для этого я создал файл /etc/icewm/startup со следующим содержимым:

#!/bin/sh
kmix &

На файл добавил права на исполнение:

# chmod a+x /etc/icewm/startup

И все. После запуска звук легко регулируется горячими клавишами (правда, в трее его не видно – но это уже мелочь).

Еще статьи об OpenSuSe 11.4:

  • OpenSuSe 11.4 и старый матричный принтер
  • OpenSuSe 11.4 и встроенные видеокарты Intel
  • Переход на OpenSuSe 11.4
  • OpenSuSe 11.4 и старый матричный принтер

    Так случилось, что есть у меня чудо буржуйской техники – древний, но все еще вполне рабочий принтер Epson LX 300+, который служит мне верой и правдой уже много лет. Решил я его подружить с OpenSuSe 11.4 – и тут обнаружил, что во-первых, принтер не определяется системой; и во-вторых, драйверов под него нет.

    Выяснилось, что для автоматического определения принтера на порту LPT, необходимо, чтобы были загружены следующие модули ядра:

    • parport
    • parport_pc
    • lp

    Почему-то модуль lp по умолчанию не загружается в OpenSuSe 11.4, так что этот модуль надо поставить в автозагрузку (например, можно через Yast: Редактор /etc/sysconfig => System => Kernel => MODULES_LOADED_ON_BOOT или любым другим удобным способом).

    С драйверами хуже, родных драйверов именно для этого принтера в OpenSuSe нет. Но вместо них прекрасно подходит Epson Dot Matrix driver (OpenPrintingPPD/ghostscript/Epson-Dot_Matrix.epsonc.ppd.gz), который доступен через кнопку “Пакеты драйверов”.

    Управление ответом в php скрипте

    Однажды мне понадобилось отправлять ответ пользователю в браузер до завершения работы php-скрипта. Известно, что даже такой простой скрипт не отпустит посетителя со страницы в течение 20 секунд:

    header("Location: http://www.bloged.org",TRUE,301);
    sleep(20);
    ?>

    Т.е. пока скрипт не завершит свою работу, по умолчанию результат не уйдет в браузер и редиректа не случится. Однако, это ограничение можно обойти, например так:

    set_time_limit(80);
    header("Location: http://www.bloged.org",TRUE,301);
    header("Content-Length: 0");
    header("Connection: close");
    flush();
    error_log("Это пишется сразу в лог\n", 3, "/ramdisk/log.txt");
    sleep(60);
    error_log("А это через минуту\n", 3, "/ramdisk/log.txt");
    ?>

    Несмотря на то, что пользователь уже перенаправлен в другое место, скрипт будет работать еще минуту и в логи запишет все, что надо.