en de fr es ja it pt

5 февраля 2013 г.

Клавиши громкости на экране блокировки HTC Sense 4.1

В кастомных прошивках для моего HTC Incredible S (например Laozhu ZROM, ViperIncS) мне очень не нравилось, что при заблокированном телефоне на экране блокировки (т.е. когда подсветка включена и видно кольцо разблокировки) работают клавиши громкости.
Иногда я случайно нажимал кнопку включения (=>появлялся экран разблокировки) и эти кнопки изменения громкости, из-за чего телефон выходил из беззвучного режима. В Venom Tweaks был пункт, который должен был отключать такое поведение, но ни на одной прошивке он у меня не давал никакого эффекта.

Поэтому я сам поправил HtcLockScreen.apk (needToHandleVolume() теперь всегда возвращает false), вот две версии патча для прошивания через recovery:
Для прошивки ViperIncS 2.0.5: скачать на 4pda
Для прошивки Laozhu ZROM Z13: скачать на 4pda

19 января 2013 г.

Парковка головок WD Scorpio Black WD7500BPKT

О проблеме частой парковки головок написано много где, например на хабре
Жесткий диск у меня Western Digital Scorpio Black (WDC WD7500BPKT-00PK4T0), ОС - FreeBSD 9.1. Способ с ataidle не помогал, значение Load_Cycle_Count продолжало расти и слышались щелчки после парковок.
Решение - wdidle3

Теперь по шагам:
  1. Скачать образ FreeDOS с вшитым wdidle: (источник) http://www.readynas.com/contributed/CommanderQ/FreeDOS%20WDIDLE3.iso
  2. Записать на USB флешку, например с unetbootin это можно сделать даже в windows
  3. Загрузиться с флешки и набрать WDIDLE3 - отобразится информация о текущем состоянии таймера парковок, у меня он был установлен в 8 секунд
  4. WDIDLE3 /D - отключает парковку. Возможно, вы захотите лишь повысить значесние таймера, тогда смотрите справку - WDIDLE3 /h

После этого рост Load_Cycle_Count прекратился, пока никаких глюков не проявилось.
UPD: все-таки после этого еще и sysutils/ataidle нужен (один он без описанного выше не помогал), параметры в /etc/rc.conf:
ataidle_enable="YES"
ataidle_devices="ad6"
ataidle_ad6="-P 0"

15 января 2013 г.

Как достать cookie firefox'a из sqlite

Пример как вытащить и использовать нужную cookie из базы firefox'a:
curl --cookie remixsid=`sqlite3 ~/.mozilla/firefox/XXXXXXXX.default/cookies.sqlite 'SELECT value FROM moz_cookies WHERE baseDomain = "vk.com" AND name = "remixsid"'` http://vk.com/feed.php

11 декабря 2012 г.

Настройка звуковых устройств в Skype FreeBSD

Задача: настроить ввод звука с одного устройства, а вывод - на другое (ОС FreeBSD 9.1-PRERELEASE, для Skype'a - микрофон я использую встроенный, а вывод делаю на внешний ЦАП подключенный по usb)

Ранее нужно было редактировать /compat/linux/etc/alsa/pcm/pcm-oss.conf, но недавно настройки из этого файла перестали действовать. Теперь нужно прописывать настройки в /compat/linux/etc/asound.conf (симлинк на /usr/local/etc/asound.conf). Вот пример того, что я дописал в конец:
pcm.oss0 {
        type oss
        device /dev/dsp0
        hint {
                description "Open Sound System 0"
        }
}
 
pcm.oss1 {
        type oss
        device /dev/dsp1
        hint {
                description "Open Sound System 1"
        }
}
 
pcm.oss2 {
        type oss
        device /dev/dsp2
        hint {
                description "Open Sound System 2"
        }
}
Далее в настройках skype'a выбираем раздел Устройства и назначаем нужные для микрофона\колонок.

3 декабря 2012 г.

Отслеживание билетов РЖД

Задача: отследить появление в продаже РЖД билетов по заданным параметрам
Решение: скрипт на Perl'e (тут просто выводятся возможные варианты, придется дописать проверку наличия нужного вам). Использую `wget` для получения страницы, почему не Lwp::useragent например - не знаю :)

#!/usr/local/bin/perl
use strict;
 
my $from = "Москва";
my $to = "Волгоград";
my @dates = ("30.12", "29.12");
 
 
# url_encode
$from =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
$to =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
 
sub check {
  my $date = shift;
  my $data = `wget -qO - "http://pass.rzd.ru/pass/public/pass?STRUCTURE_ID=735&date=
$date&schd_id=1&action=submit&src=$from&layer_id=4922&dst=$to"`
; my @result; while($data=~/<tr>\s*<td style="text-align: left" width="80">(.*?)<\/tr>/sg) { my $tdata = $1; $tdata=~/id="sl_train" value="(.*?)"/; my $num = $1; my @types; while($tdata=~/td title='(.*?)'/g) { push @types, $1; } push @result, ($num." ($date)= ".join(",", @types)); } return @result; }   my @all; foreach my $date (@dates) { push @all, check($date); }   print join("\n", @all);

С помощью скрипта в течении суток было найдено 2 неплохих билета, а сегодня утром один полностью меня удовлетворяющий. Я настроил оповещение по SMS (см. предыдущий пост) оставил скрипт запускаться раз в минуту до первого успеха.