五 |
|
級 |
Друзья
если в слове хлеб сделать четыре ошибки...
то получится слово пиво.br /a name=cutid1/abr /precode
# setopt multibyte
# touch пиво
# print -l (#a4)хлеб
пиво
#
/code/prebr /ulbr / licode#/code mdash; в скобках модификатор/libr / licode4/code mdash; количество шибок, которые можно совершить при поиске/libr //ulbr /pimg src=http://arto.homeunix.org/images/approximate-matching.gif //pbr /br /ps.precode# [[ mislpeld == (#a3)misspelled ]] print yes
yes
# [[ mislpeld == (#a2)misspelled ]] print yes
#/code/prebr /br /a name=cutid1-end/a
Категории: Друзья
Генерация имен хостов для ssh-дополнений
Перечитал zshexpn, приемы для работы с файлами.br /br /В zsh можно сконфигурировать стиль для дополнений ssh, который по tab генерирует дополнения для, например, имени хоста. Логично брать их из code~/.ssh/config/code и code~/.ssh/known_hosts/code.br /a name=cutid1/abr /Форматы пересказывать не буду, их можно посмотрать по манам.br /1. Разбор ~/.ssh/config, будем брать имена из строки codeHost name/code:br /code${${${(@M)${(f)$(lt; ~/.ssh/config)}:#Host[[:space:]]#[[:alnum:]]#}}##* }/codebr /br /Легенда:br /ulbr / licode$(lt; ~/.ssh/config)/code читаем файл, результат mdash; массив строк, разбитых по пробелам/libr / licode$(lt; ~/.ssh/config)/code, результат mdash; файл, как он есть, без разбивки/libr / licode${(f)$(lt; ~/.ssh/config)}/code mdash; разбиваем контент по строкам, получаем массив строк/libr / licode${(@M)${(f)$(lt; ~/.ssh/config)}:#Host[[:space:]]#[[:alnum:]]#}/code mdash; удаляем все, что не попадает под выражение codeHost[[:space:]]#[[:alnum:]]#/code:br / ulbr / liВ zsh можно использовать классы символов, как code[:space:]/code класс пробелов и code[:alnum:]/code класс алфавитно-цифровых символов. Символ code#/code после класса обозначает повторение, для pcre это совпадает с codeHost\s+\w+/code/libr / licode:#/code удалят из массива совпадающие с паттерном элементы, флаг codeM/code меняет действие на противоположное, удаляет не совпадающие элементы/libr / liФлаг code@/code показывает, что имеем дело с массивом.br / /ulbr / pРезультат:precode
# print -l ${${(M@)${(f)$(lt; ~/.ssh/config)}:#Host[[:space:]]#[[:alnum:]]#}}
Host roof
Host arto
Host book
Host sut
Host ftp2
...
/pre/code/p/libr / licode${${${(M@)${(f)$(lt; ~/.ssh/config)}:#Host[[:space:]]#[[:alnum:]]#}}##* }/code mdash; удаляет в каждом элементе массива подстроку сначала и до последнего пробела, оставляя имя хоста:pcodepre
# print -l ${${${(M@)${(f)$(lt; ~/.ssh/config)}:#Host[[:space:]]#[[:alnum:]]#}}##* }
roof
arto
book
sut
ftp2
...
/pre/code/p/libr /br //ulbr /br /Для perl это будет выглядеть так: codeperl -lne m#Host\s+(\w+)# print $1 ~/.ssh/config/code, но порождается один дополнительный процесс.br /br /2. Разбор code~/.ssh/known_hosts/code, хотим брать нормальные имена хостов, ip-адреса и адреса с портом (code[host]:port/code) брать не будем:br /pprecode# print -l ${${${${(f)$(lt; ~/.ssh/known_hosts)}%%[ ,]*}:#\[*\]:*}:#[0-9]#.[0-9]#.[0-9]#.[0-9]#}
roof.***.ru
book.***.ru
cube.***.ru
ftp2.***.ru
.../code/pre/pbr /Легенда:br /ulbr / licode$(lt; ~/.ssh/known_hosts)/code mdash; читаем весь файл, с разбивкой по пробелам/libr / licode$(lt; ~/.ssh/known_hosts)/code mdash; весь файл без разбивок/libr / licode${(f)$(lt; ~/.ssh/known_hosts)}/code mdash; разбиваем контент по строчкам/libr / licode${(f)$(lt; ~/.ssh/known_hosts)}/code mdash; экранируем каждый элемент массива (там могут попадаться спецсимволы, например code[/code и code]/code), результат:pprecode# print -l ${(f)$(lt; ~/.ssh/known_hosts)}
roof.***.ru,195.***.130 ssh-dss AAAAB3NzaC1kc3MAAAC...
book.***.ru,195.***.246 ssh-rsa AAAAB3NzaC1yc2EAAAA...
.../code/pre/p/libr / licode${${(f)$(lt; ~/.ssh/known_hosts)}%%[ ,]*}/code mdash; удаляем теги и ключи, всё после пробела или запятой (code%%[ ,]*/code)/libr / licode${${${(f)$(lt; ~/.ssh/known_hosts)}%%[ ,]*}:#\[*\]:*}/code mdash; удаляем (code#:/code) все элементы массива, совпадающие с паттерном (code\[*\]:*/code, например code[www.abc.ru]:22222/code)/libr / licode${${${${(f)$(lt; ~/.ssh/known_hosts)}%%[ ,]*}:#\[*\]:*}:#[0-9]#.[0-9]#.[0-9]#.[0-9]#}/code mdash; удляем элементы массива (code#:/code) совпадающие с ip-адресом (code[0-9]#.[0-9]#.[0-9]#.[0-9]#/code)/libr //ulbr /br /Теперь можно проверить:br /precode
# zstyle :completion:*:(ssh|scp|sftp):* hosts ${(o)${${${(f)$(lt; ~/.ssh/known_hosts)}%%[ ,]*}:#\[*\]:*}:#[0-9]#.[0-9]#.[0-9]#.[0-9]#}
# ssh lt;TABgt;
roof.***.ru book.***.ru cube.***.ru ftp2.***.ru
...
/code/prebr /pimg src=http://arto.homeunix.org/images/zshell-mini.png //pbr /a name=cutid1-end/a
Категории: Друзья
JFYI
В zsh появился новый флаг квалификации глобов mdash; codeF/code, непустой каталог.br /Т. е. теперь можно удалить все пустые каталоги одной командой:br /precode
zsh# rmdir *(/N^F)
/code/prebr /Легенда:br /ul compact=1br / licode*/code mdash; все файлы в текущем каталоге/libr / licode//code mdash; из них все каталоги/libr / licodeN/code mdash; если ничего не встретилось, то не генерим ошибку/libr / licode^F/code mdash; из оставшегося выбираем только emпустые/em каталоги/libr //ulbr /Удобно.br /Время перечитать внимательно zshexpn и zshcontrib :).br /br /img src=http://arto.homeunix.org/images/from-bash-to-zshell.png /
Категории: Друзья
Яндекс почта
precode
# for i in {1..100}; do
HEAD http://mailstatic.yandex.net/neo/1.12.9/v2/page/common.css | \
head -1; done | grep 404 | wc -l; done
20
#
/code/pre
Категории: Друзья
О насущном.
p style=margin-bottom: 0cmОдно из основных понятий в квантовой механике это понятие неопределённости физической величины ndash; скорости, положения, поляризации и проч. Чем точнее мы знаем одну величину, тем менее точно знаем другие, связанные с ней (например, со скоростью связано положение)./pp style=margin-bottom: 0cmЭйнштейн попытался laquo;хакнутьraquo; это утверждение предложив косвенные измерения ndash; после взаимодействия двух частиц, можно померить положение оригинальной частицы, а скорость вычислить по характеристикам другой частицы (закон сохранения импульса никто не отменял)./pp style=margin-bottom: 0cmНа это квантовые физики возразили, что после взаимодействия частицы окажутся laquo;запутаннымиraquo; (span lang=en-USentangled) /spanspan lang=ru-RUи измерения одной частицы окажут непосредственное моментальное влияние на другую независимо от расстояния между ними./span/pp style=margin-bottom: 0cmspan lang=ru-RUВажно отметить, что результаты измерения второй частицы зависят от того, измеряли ли мы первую./span/pp style=margin-bottom: 0cmspan lang=ru-RUДругая интересная особенность это способность частицы вести себя как волна и, классический пример, интерферировать сама с собой. Эксперимент состоит из двух щелей и экрана. Если выпускать по одной частице за раз, то она будет проходить через два экрана одновременно(!) и образовывать на экране интерференционную картину (характерные полосы). Если мы попробуем измерить её положение (узнать, через какую щель проходила частица), то эффект пропадает./span/pp style=margin-bottom: 0cmspan lang=ru-RUБыл предложен интересный эксперимент ndash; laquo;эксперимент с отложенным выборомraquo; (/spanspan lang=en-USWheeler#39;s /spanspan lang=ru-RUdelayed choice experiment/spanspan lang=en-US)/spanspan lang=ru-RU. Он заключается в том, что мы /spanspan lang=ru-RUiсначала/i/spanspan lang=ru-RUspan style=font-style: normal регистрируем картинку на экране, а /span/spanspan lang=ru-RUiпотом/i/spanspan lang=ru-RUspan style=font-style: normal принимаем решение о том, определяем мы или нет, через какую щель прошла частица. Теоретические предсказания говорят, что результат в прошлом (картинка на экране) будет зависеть от измерений в будущем (факт определения пути)./span/span/pp style=margin-bottom: 0cmspan lang=ru-RUВ статье (a href=http://arstechnica.com/science/news/2012/04/decision-to-entangle-effects-results-of-measurements-taken-beforehand.ars rel=nofollowhttp://arstechnica.com/science/news/2012/04/decision-to-entangle-effects-results-of-measurements-taken-beforehand.ars/a) приводится вариант эксперимента с запутыванием фотонов и измерением их поляризации. Эксперимент подтверждает, что события в будущем влияют на события в прошлом./span/pp style=margin-bottom: 0cmspan lang=ru-RUТакие дела./span/p
Категории: Друзья
p align=centera href=http://достало-емс
p align=centera href=http://достало-емс.рф/ target=_blank rel=nofollowimg border=0 src=http://достало-емс.рф/files/descr_img3.gif/a/pbr /p align=centera href=http://достало-емс.рф/ target=_blank rel=nofollowimg border=0 src=http://достало-емс.рф/files/descr_img4.gif/a/p
Категории: Друзья
Нахождение простых чисел
решето эратосфена (числа не больше данного)br /a name=cutid1/abr /precode
# perl -le @a = ( 2..$ARGV[0] );
while (@a) { my $a = shift @a; $a ? print $a : next;
for (my $i = $a-1; $i lt; $#a+1; $i += $a) { $a[$i] = 0 } } 100
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
#
/code/prebr /a name=cutid1-end/abr /br /Прямое вычисление (количество чисел):br /a name=cutid2/abr /precode
# perl -le @a = ( $n = 2 );
n: while ($n++, $#a lt; $ARGV[0]-1) {
foreach (@a) { next n if ($n%$_ == 0) }
push @a, $n
}
END{ print join \n, @a } 25
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
#
/code/prebr /a name=cutid2-end/abr /br /Ну и сравнение производительности:br /Решето:br /codeReal: 0.35s User: 0.32s System: 0.01s Percent: 97%% Cmd: perl -le 102400/codebr /Прямое вычисление:br /codeReal: 17.65s User: 17.56s System: 0.00s Percent: 99%% Cmd: perl -le 9805/codebr /br /img src=http://arto.homeunix.org/images/resheto-eratosfena.jpg /
Категории: Друзья
span style=color: rgb(0, 0, 0); font
span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); СТОП я где-то видел все это/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); В твоих влажных глазах и обрывках газетных/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); В лучах дискоболов, в отвратных парадных/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); В залипнувшем небе весенних разрядов/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); СТОП так мгновенья взрывают планеты/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); Так солнце блестящей фальшивой монетой/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); Следит за тобой каждый день каждый вечер/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); Срываясь в копилку тысячелетий/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); СТОП чаще пульс от неизбежной разлуки/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); Звуки пауза звуки звуки звуки/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); ШЛЮХИ как вы все заебали/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); Люди грязные шлюхи и бляди/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); СТОП я где-то видел все это/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); СТОП так мгновенья взрывают планеты/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); СТОП чаще пульс от неизбежной разлуки/spanbr style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); /span style=color: rgb(0, 0, 0); font-family: tahoma, arial, verdana, sans-serif, #39;Lucida Sans#39;; font-size: 11px; line-height: normal; text-align: left; background-color: rgb(255, 255, 255); Давай же сука возьми себя в руки/spanbr /
Категории: Друзья
Вопрос
А вот может мне кто-нибудь объяснить, почему я уже который месяц не могу отправлять комменты в ЖЖ используя сайт ЖЖ на своем лаптопе???? Its pissing me off!!!! Могу отправлять комменты из программки на iPad... Блин, фигня какая-то :(br /br /Ok... Попробую с вами поделиться видео, от которого балдею уже пару месяцев :)br /br /lj-embed id=27 /br /br /Подсели мы конкретно на Джефа :) Очень, ОЧЕНЬ рекомендую :)br /br /И еще один:br /br /lj-embed id=28 /
Категории: Друзья
У нас был мелкий траблешутинг. Меня поп
У нас был мелкий траблешутинг. Меня попросили вывод команды, но у меня всё вдруг заработало...... ну я и ответил как есть....br /В ответ пришёл такой ответ:br /br /Первый, первый, вас не понял, повторитеbr /Я не выдел нигде, чтобы при команде ls -la система выдавала ответ Заебись
Категории: Друзья
Задачка
citeесть 2 бесконечно больших текстовых файла отсортированных лексикографически.br /Нужно найти разницу и записать в файлы./citebr /a name=cutid1/abr /precode
open A, shift or die;
open B, shift or die;
my $h = 0;
while (!(eof(A) eof(B)) ) {
( $a, $b ) = $h == 0 ?
( scalar lt;Agt;, scalar lt;Bgt; ) : $h == 1 ?
( $a, scalar lt;Bgt; ) : ( scalar lt;Agt;, $b );
print lt; $a and next unless (defined $b);
print gt; $b and next unless (defined $a);
$h = $a cmp $b or next;
print $h == 1 ? gt; $b : lt; $a;
}
/code/prebr /в принципе, можно сократить 2 строчки, но было лень разбираться с code$h = $a cmp $b or next;/code...br /img src=http://arto.homeunix.org/cgi/track.pl?diff /br /a name=cutid1-end/a
Категории: Друзья
img alt= height=480 src=http://pics
img alt= height=480 src=http://pics.livejournal.com/mad_fisher/pic/0011bpkg style=border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; width=640 /br /nbsp;окто-мама передает вам всем пламенные осьминожьи приветы)
Категории: Друзья
