24.11.2008

perl var

$_      область ввода или поиска по образцу, используемая по умолчанию
$. номер текущей считанной строки из текущего входного файла
$/ разделитель входных записей (обычно - символ новой строки \n)
$] номер версии Perl (например, 5.008007)
$0 имя файла текущей исполняемой Perl-программы
$@ сообщение об ошибке при выполнении в блоках eval или do
$! текущий номер ошибки или сообщение об ошибке
$^E уточненное сообщение об ошибке
$^T время начала выполнения программы (в формате функции time)

При выполнении сложения двух положительных плавающих чисел происходят следующие действия

  1. выравнивание порядков. Определяется число с меньшим порядком. Затем последовательно его порядок увеличивается на единицу, а мантисса делится на 2, пока порядки двух чисел не сравняются. Аппаратно деление на 2 соответствует сдвигу двоичного кода мантиссы вправо, так что эта операция выполняется быстро. При сдвигах правые разряды теряются, из-за этого может произойти потеря точности (в случае, когда правые разряды ненулевые);
  2. сложение мантисс;
  3. нормализация: если мантисса результата стала равна или превысила двойку, то порядок увеличивается на единицу, а мантисса делится на 2. В результате этого мантисса попадает в интервал 1 m<2. При этом возможна потеря точности, а также переполнение, когда порядок превышает максимально возможную величину.

Несколько примеров представления вещественных чисел в плавающей форме: 1.

  1. 1.0 = +20*1.0

    Здесь порядок равен 0, мантисса - 1. В двоичном коде мантисса состоит из одних нулей, так как старший разряд мантиссы (всегда единичный) в коде отсутствует. Порядок хранится в двоичном коде в смещенном виде, он равен 127 в случае float и 1023 в случае double;

  2. 3.5 = +21*1.75

    Порядок равен единице, мантисса состоит из трех единиц, из которых в двоичном коде хранятся две: 1100...0; смещенный порядок равен 128 для float и 1024 для double;

  3. 0.625 = +2-1*1.25

    Порядок отрицательный и равен -1, дробная часть мантиссы равна 0100...0; смещенный порядок равен 126 для float и 1022 для double;

  4. 100.0 = +26*1.5625

    Порядок равен шести, дробная часть мантиссы равна 100100...0; смещенный порядок равен 133 для float и 1029 для double.

системы остатков

Вернемся к рассмотрению кольца Zm. Выберем по одному представителю из каждого класса эквивалентности, которые составляют множество Zm. Систему таких представителей называют системой остатков. Традиционно рассматривают две системы остатков: неотрицательную систему и симметричную систему. Неотрицательная система остатков состоит из элементов

0,1,2,3, ...m-1.

Очень удобна также симметричная система остатков, состоящая из отрицательных и неотрицательных чисел, не превосходящих m/2 по абсолютной величине. Пусть

k = целая часть(m/2)

тогда симметричная система остатков при нечетном m состоит из элементов

-k, -k+1, ..., -1, 0, 1, ..., k-1, k,

а при четном m - из элементов

-k, -k+1, ..., -1, 0, 1, ..., k-1.

Например, при m = 5 симметричная система остатков состоит из элементов

-2, -1, 0, 1, 2.

21.11.2008

mass copy perl

perl -e 'my $d=`date '+%H_%d%m%y'`;@_=`ls -1|grep log\$`; foreach $_(@_) { chomp $_; print "copy $_ to $_\.$d\n"; system ("cp -v $_ $_\.$d");} ;'

13.11.2008

find sendmail one-line script

find /home/sed/ueda/ -type f -exec cat {} \;|sendmail sed

perl short spam script

perl -we '@_=`find /tmp/mail -type f`;foreach $_(@_){chomp; print "spaming $_\n"; system ("cat $_|sendmail user");}'

for bash:

for i in /var/SPAM/* ; do cat $i | sendmail sed ; echo "spaming $i"; done

ssh-keygen

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa user@remote.host

07.11.2008

VIM

:5 или 5G - перемещает курсор на 5 строку.
% - перемещает курсор на парную круглую, фигурную или квадратную скобку. Пары можно задать командой :set matchpairs.
gg - перемещает курсор на первую строку.
G - перемещает курсор на последнюю строку.
H, M, L - перемещают курсор в начало, середину и конец видимой части текста.
:s/text/new_text/ - Заменяет первый встреченный образец text в текущей строке на new_text.
:s/text/new_text/g - Заменяет все образцы text в текущей строке на new_text.
:1,$s/the/THE/g - Начиная с первой строки до последней (строки $), заместить все встреченные the на THE.
:'a,.s/.*/ha ha/ - От строки, помеченной меткой a, до текущей строки, заменить любой текст на строку "ha ha".
:%s/\s\+$// - удаляет пробельные символы в конце строк во всем файле.
:%s/\([^,]*\), \(.*\)/\2 \1/ - преобразовывает
Doe, John
Smith, Peter
в
John Doe
Peter Smith

:r[ead] filename - вставляет содержимое другого файла в текущий.

ssh backup

tar -cf - storage | ssh backup-server.domain.local dd of=/storage/backup/backup.tar

06.11.2008

неубиваемый


while :; do echo moo; sleep 3; done &

while loop

while : ; do echo Mouuu ; done