zed.0xff.me
скачать клип с vimeo
Если всё получилось – плюсаните карму тут или кликните справа на картинку с рублем.
а теперь тоже самое на 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 |
продолжение следует..