zed.0xff.me

скачать клип с vimeo

Введите ID ролика или ссылку вида “http://www.vimeo.com/800978”:

Если всё получилось – плюсаните карму тут или кликните справа на картинку с рублем.

а теперь тоже самое на Ruby :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env ruby

%w[rexml/document open-uri].each { |lib| require lib }
include REXML

if ARGV.size < 1
   STDERR.puts "usage: #{File.basename($0,'.rb')} code/uri"
   exit 1
end

videoCode = ARGV[0].split('/')[-1]
xmlURL = "http://www.vimeo.com/moogaloop/load/clip:#{videoCode}"

xml = (Document.new(open(xmlURL))).root
videoCaption = xml.elements['video'].elements['caption'].text
videoCaption.gsub!(/\//,'_') # In case there is a /

req = []
%w[request_signature request_signature_expires].each do |e|
   req << xml.elements[e].text
end

downloadLink = "http://www.vimeo.com/moogaloop/play/clip:#{videoCode}/#{req[0]}/#{req[1]}/?q=sd"

Kernel.exec("wget -c #{downloadLink} -O \"#{videoCaption}.flv\"")

Gentoo: nemerge (удобный скрипт для установки обновлений)

Наверное, у всех есть свой любимый способ обновления установленных пакетов в Gentoo.
Возможно, у кого-то еще нет.
Возможно, это запуск каждый раз “emerge -Nutva —deep —with-bdeps y world”, или чего-то подобного.
Прилагаемый скрипт призван несколько сократить синтаксис команды обновления до состояния достаточно легкой запоминаемости и набираемости.

Предлагаю назвать его “nemerge” и положить в ~/bin или другое удобное для вас место :)

Скрипт поддерживает два ключа запуска:
  —yes  – автоматически отвечать “да” на запрос emerge “Would you like to merge these packages? [Yes/No]
  —sync – перед установкой обновить portage и, если установлен, layman

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/sh

# "nemerge" script from http://zed.0xff.me/nemerge
# call me with "-y" (or --yes ) to auto-merge, without confirmations
# call me with "-s" (or --sync) to sync a portage tree (and layman, if installed) before updating
# call me with both to auto sync & update

ARGS=""
DO_SYNC=0
DO_AUTO=0

if [ `whoami` != "root" -a -x /usr/bin/sudo ]; then
        SUDO_CMD="/usr/bin/sudo"
else
        SUDO_CMD=""
fi

for v in "$@"; do
        if [ $v = "-s" -o $v = "--sync" ]; then
                DO_SYNC=1
        elif [ $v = "-y" -o $v = "--yes" ]; then
                DO_AUTO=1
        elif [ $v = "-sy" -o $v = "-ys" ]; then
                DO_AUTO=1
                DO_SYNC=1
        else
                ARGS="${ARGS} $v"
        fi
done

if [ $DO_SYNC -eq 1 ]; then
        if [ -x /usr/bin/layman ]; then
                echo "[.] synching layman.."
                $SUDO_CMD /usr/bin/layman -S
        fi
        echo "[.] synching portage.."
        $SUDO_CMD emerge --sync
fi

if [ $DO_AUTO -eq 1 ]; then
        echo "[.] merging automatically.."
        $SUDO_CMD emerge -Nutv --deep --with-bdeps y $ARGS world 
else
        echo "[.] merging interactively.."
        $SUDO_CMD emerge -Nutva --deep --with-bdeps y $ARGS world 
fi

ibm x40 и китайская батарейка :: часть 2 - solution

часть 1 – описание проблемы и скрипт-логгер

результат

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# grep STARTUP /var/log/battery.log -B1 | grep -v - --

Thu Jul  2 16:25:01 YEKST 2009 :: 14365 mW 15620 mWh 14266 mV
============== STARTUP =============
Thu Jul  2 23:15:01 YEKST 2009 :: 12227 mW 34750 mWh 14893 mV
============== STARTUP =============
Fri Jul  3 06:25:01 YEKST 2009 :: 13117 mW 19380 mWh 14227 mV
============== STARTUP =============
Fri Jul  3 21:15:01 YEKST 2009 :: 13208 mW 23190 mWh 13933 mV
============== STARTUP =============
Mon Jul  6 09:15:01 YEKST 2009 :: 18701 mW 32780 mWh 14168 mV
============== STARTUP =============
Mon Jul  6 20:40:01 YEKST 2009 :: 18523 mW 34460 mWh 13462 mV
============== STARTUP =============
Tue Jul  7 07:25:01 YEKST 2009 :: 17194 mW 39810 mWh 14187 mV
============== STARTUP =============
Wed Jul  8 11:20:01 YEKST 2009 :: 13261 mW 55910 mWh 15657 mV
============== STARTUP =============
Fri Jul 10 11:20:01 YEKST 2009 :: 13829 mW 19030 mWh 14481 mV
============== STARTUP =============
Sun Jul 12 21:45:01 YEKST 2009 :: 13559 mW 21810 mWh 13600 mV
============== STARTUP =============
Thu Jul 16 00:15:01 YEKST 2009 :: 12913 mW 23040 mWh 14364 mV
============== STARTUP =============
Tue Jul 21 07:15:01 YEKST 2009 :: 15477 mW 14800 mWh 14344 mV
============== STARTUP =============
Sat Jul 25 17:45:01 YEKST 2009 :: 6650 mW 17680 mWh 14090 mV
============== STARTUP =============
Fri Aug  7 23:05:01 YEKST 2009 :: 14131 mW 13170 mWh 13854 mV
============== STARTUP =============

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# grep STARTUP /var/log/battery.log -B1|grep mV | awk '{print $12}' | sort -n

13462
13600
13854
13933
14090
14168
14187
14227
14266
14344
14364
14481
14547
14893
15657

выделяем отсюда два некоторых средних значения,
соответствующие уровням “осталось мало заряда” и “осталось КРИТИЧЕСКИ мало заряда” :)
и забиваем их в скрипт:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh
grep -wq discharging /proc/acpi/battery/BAT0/state
if [ $? = 0 ]; then
        # discharging
        echo -n "`date` :: " >> /var/log/battery.log
        grep -oE "[0-9]+ .*" /proc/acpi/battery/BAT0/state | xargs >> /var/log/battery.log

        VOLTAGE=`cat /proc/acpi/battery/BAT0/state | grep -o "[0-9]* mV" | awk '{print $1}'`
        if [ $VOLTAGE -lt 14600 ]; then
                echo "0 blink" > /proc/acpi/ibm/led
                if [ $VOLTAGE -lt 14400 ]; then
                        echo "1 blink" > /proc/acpi/ibm/led
                fi
        else
                echo "0 off" > /proc/acpi/ibm/led
        fi
else
        # charging / charged
        echo "0 on" > /proc/acpi/ibm/led
        true
fi

в данном случае скрипт будет:
а) моргать зеленым светодиодом “питание от сети” (led 0) при низком уровне заряда
б) моргать зеленым и оранжевым (led 1) диодами при критическом уровне

а дальше – либо втыкаем блок питания и контроллер перехватывает управление диодами, либо заряд совсем кончается и питание аварийно отключается.

ibm x40 и китайская батарейка

Есть у меня довольно старенький ноут ibm x40. Бывает и старее, конечно :). Купил я его в 2005 году, проц там Pentium-M 1.4GHz, памяти добил до 1.5G, винт всего на 40 гигов.

Какое-то время назад родная батарейка (на 1.1Ah кажется) совсем устала, и ее стало хватать максимум минут на 15. И заказал я на ебэе неродную китайскую батарейку аж на 4400mAh !! :)

Батарейка вскоре пришла, ожидания мои оправдались на 100% – ее хватало на часа на 4 точно, а при желании можно было и до шести растянуть :)

Но! Но так как батарейку делали не суровые IBM-щики, а полуподпольные noname-китайцы – то есть в ней некоторый неприятный глюк – ноут практически никогда не успевает отследить момент когда заряд заканчивается – напряжение падает – и ноут, даже не пискнув, отключается.. я пробовал ставить warning-и на 25% и на 30% (в КДЕ-шных настройках питания) – всё равно момент не ловится..

И вот собрал на коленке следующий скрипт для отслеживания уровня батарейки:

1
2
3
4
5
6
7
8
9
10
#!/bin/sh
grep -wq discharging /proc/acpi/battery/BAT0/state
if [ $? = 0 ]; then
        # discharging
        echo -n "`date` :: " >> /var/log/battery.log
        grep -oE "[0-9]+ .*" /proc/acpi/battery/BAT0/state | xargs >> /var/log/battery.log
else
        # charging / charged
        true
fi

скрипт запускаем кроном каждые 5 минут.

в /etc/conf.d/local.start (скрипт, исполняемый в gentoo при стартапе) добавляем следующее:

1
echo "============== STARTUP =============" >> /var/log/battery.log

в /etc/conf.d/local.stop (скрипт, исполняемый в gentoo при шатдауне) добавляем следующее:

1
echo "============== SHUTDOWN ============" >> /var/log/battery.log

таким образом, в логе видим остаток батареи, а так же маркеры [не]преднамеренного шатдауна системы. например, когда батарейка дропнула своё напряжение – то в логе будет только строчка STARTUP, т.к. шатдаун был аварийным.

лог выглядит вот так:

1
2
3
4
Wed Jul  1 20:40:01 YEKST 2009 :: 12115 mW 66880 mWh 16461 mV
Wed Jul  1 20:45:01 YEKST 2009 :: 11701 mW 65970 mWh 16389 mV
Wed Jul  1 20:50:01 YEKST 2009 :: 12177 mW 65070 mWh 16324 mV
Wed Jul  1 20:55:01 YEKST 2009 :: 11675 mW 64200 mWh 16284 mV

продолжение следует..