Будет забавно, если потом придет антикопирайт-бот и забанит ваши же собственные фотогарфии как нарушение интересов того, кому их продал Цукерберг (via vitus-wagner).
Не верьте документации настолько. Если при выключении flashcache не будет выключен правильно, то часть dirty-blocks будет потеряна. И если эти блоки пришлись на метаданные lvm, можете считать тома потерянными.
Побороли перезагрузки с write_back? Одно время кешировали lvm-снепшоты с помощью flashcache, пару раз пришлось восстанавливать всё из бэкапов после падения питания.
$ for power in 2 4 6 ; do for module in timing_{native,ctypes,cython,cython_range} ; do echo -n "$module: $power "; python2 -m timeit --setup "from $module import test" "test(10 ** $power)" ; done ; echo "---------" ; done
timing_native: 2 100000 loops, best of 3: 4.72 usec per loop
timing_ctypes: 2 100000 loops, best of 3: 2.27 usec per loop
timing_cython: 2 1000000 loops, best of 3: 0.21 usec per loop
timing_cython_range: 2 1000000 loops, best of 3: 0.211 usec per loop
---------
timing_native: 4 1000 loops, best of 3: 448 usec per loop
timing_ctypes: 4 10000 loops, best of 3: 30.1 usec per loop
timing_cython: 4 100000 loops, best of 3: 5.57 usec per loop
timing_cython_range: 4 100000 loops, best of 3: 6 usec per loop
---------
timing_native: 6 10 loops, best of 3: 248 msec per loop
timing_ctypes: 6 100 loops, best of 3: 2.59 msec per loop
timing_cython: 6 1000 loops, best of 3: 541 usec per loop
timing_cython_range: 6 1000 loops, best of 3: 586 usec per loop
---------
Отмечу, что можно использовать даже родные циклы через range (если переменная-итератор — int, то он будет развернут в родной сишный).
Не владею магией низкоуровнего питона, предполагаю, что у cython меньше оверхед на преобразование типов в сишные и обратно при вызове.
Залез в свои .bash*, нашел кучу старых добрых, но забытых вещей :)
Вот например, итерация по чему-нибудь с прогресс-метками:
finit() { count=$#; current=1; for i in "$@" ; do echo $current $count; echo $i; current=$((current + 1)); done; }
alias fnext='read cur total && echo -n "[$cur/$total] " && read'
Тогда уж что-то вроде /dist/{did}/, который будет корневой директорией для программы и симлинки на все файлы и директории в нужных местах. Набирать какой-нибудь cd /var/07f51c01-9811-4ab2-b905-d8e3a8a750b7/db совершенно не хочется.
Вот продолжение простенького бенчмарка. Код расположен в gist — https://gist.github.com/4025567. Запускаем!
Отмечу, что можно использовать даже родные циклы через range (если переменная-итератор — int, то он будет развернут в родной сишный).
Не владею магией низкоуровнего питона, предполагаю, что у cython меньше оверхед на преобразование типов в сишные и обратно при вызове.
Вот например, итерация по чему-нибудь с прогресс-метками:
finit() { count=$#; current=1; for i in "$@" ; do echo $current $count; echo $i; current=$((current + 1)); done; } alias fnext='read cur total && echo -n "[$cur/$total] " && read'
И использование:
finit 1 2 3 4 | while fnext item; echo $item ; done
Пример:
proceed_sudo () { sudor_command="`HISTTIMEFORMAT=\"\" history 1 | sed -r -e 's/^.*?sudor//' -e 's/\"/\\\"/g'`" ; sudo sh -c "$sudor_command"; }; alias sudor="proceed_sudo # "
Использовать так:
$ sudor make me a sandwitch > /var/lib/sandwitch
Несерьезно, но забавно. И нельзя вставлять в пайп.
И приведет это к долгой и счастливой жизни 0.10, пока из года в год его будут закапывать.