пятница, 18 февраля 2011 г.

bash - обращение к нужной команде из history

Как известно, список использованных команд в bash'e можно посмотреть, набрав команду history:
$ history
   1  echo "test"
   2  echo "Hello World"
   3  find . -mtime +5
   ..
.
Периодически, приходится искать в history длинные и сложные команды, например, такие как вот эта:
find . -mindepth 1 -maxdepth 1 -type d -exec du -bs {} \; | sort -n -r | awk '{print $2}' | head -10 | xargs du -hs
Выводит список самых тяжелых директорий в текущей.
Раньше я искал ее так:
$  history | grep find
  231  find . -mindepth 1 -maxdepth 1 -type d -exec du -bs {} \; | sort -n -r | awk '{print $2}' | head -10 | xargs du -hs
Копировал мышкой и взаново вбивал в адресную строку. Однако все изменилось, когда я узнал, что можно все делать намного проще. Достаточно лишь набрать ![номер команды], и она отрабатываает заново:
$ !231
find . -mindepth 1 -maxdepth 1 -type d -exec du -bs {} \; | sort -n -r | awk '{print $2}' | head -10 | xargs du -hs
.....

понедельник, 31 января 2011 г.

Python - генерация случайного числа с заданной вероятностью

Представим, что нам потребовалось создать на Питоне генератор случайных чисел, который выводит 1 или 0, причем 1 он выводит с вероятностью 0,2.
Это можно сделать следующим образом:
>>> import random
>>> for i in range(20):
...     x = random.random()
...     if x <= 0.2:
...             print 1
...     else:
...             print 0
...
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
Что мы здесь сделали?
Во первых, первой строкой подключили модуль random, затем сгенерировали случайное число с плавающей точкой в пределах от 0 до 1. В зависимости от того, меньше это число 0.2, или больше, мы вывели 1 или 0. Таким образом, задачу можно считать выполненной.

Python - сложение строк или конкатенация

В питоне складывать строки очень просто, вот примеры, из которых все понятно:
Пример №1
>>>print 'Привет! ' + 'Как дела?'
Привет! Как дела?
Пример №2
>>> a = 'Хорошо'
>>> b = ' А у тебя как?'
>>> c = a + b
>>> print c
Хорошо А у тебя как? 
Пример №3 (c преобразованием числа  в строку)
 >>> x = 12
>>> y = 6
>>> print '12 * 6 = '+str(x*y)
12 * 6 = 72

понедельник, 17 января 2011 г.

Устанока OpenTTD в Debian или Ubuntu

Решил я поставить себе OpenTTD на свой ноутбук с Debian Squeeze. Так как компилировать и ставить из исходников - это не Debian-way, то выполнил следующую команду:
$ sudo aptitude install openttd
Поставился и сам OpenTDD, и нужные зависимости типа liblzo2-2 и т.д.
Всё, OpenTTD установлен на компьютер, можно с удовольствием поиграть, запустив его командой
$ openttd
Получаем окно игры:

Linux - подсчет количества определенных символов в строке

Делается сабж вот такой командной:
echo -n $string | sed s/[^SYMBOL]//g | wc -c
Где $string - наша строка, SYMBOL - тот самый символ, количество которых мы хотим посчитать.
Например:
$ echo -n aaabac | sed s/[^a]//g | wc -c
4

четверг, 23 декабря 2010 г.

Nginx - too many open files, 500-я ошибка

О том, как это исправить, можно прочитать тут: http://agafonov.pp.ru/blog/2010/07/21/%D0%B8%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-too-many-open-files-%D0%B2-nginx/.
А если вкратце, то просто в /etc/nginx/nginx.conf прописать вот такую директиву.
Число чем больше, тем лучше. Но перебарщивать тоже не стоит.

среда, 22 декабря 2010 г.

Сброс root-пароля для mysql

Иногда случается такое, что теряется рутовый пароль от mysql. В таком случае, его можно сбросить  на новые. О том, как это сделать, можно прочитать в этой статье.