понедельник, 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. В таком случае, его можно сбросить  на новые. О том, как это сделать, можно прочитать в этой статье.

пятница, 19 ноября 2010 г.

/proc/kcore - что это такое, и как его удалить?

Освобождал место на сервере, и столкнулся со следующим: неведомый файл /proc/kcore занимает около 2 гигабайтов на винчестере:
-r-------- 1 root root 2.1G 2010-11-20 03:18 /proc/kcore
Место кончалось, и хотелось почистить как можно больше, но не станешь же просто так удалять файл, находящийся в /proc. Вдруг там что-то мегаважное храниться.
Оказалось, и не его надо трогать, удалять и вообще обращать внимание на его размер и то, сколько он места занимает. Если почитать man 5 proc, то увидим там следующее:
This file represents the physical memory of the system and is stored in the ELF core file format.  With this  pseudo-file,  and  an  unstripped
              kernel (/usr/src/linux/vmlinux) binary, GDB can be used to examine the current state of any kernel data structures.

              The total length of the file is the size of physical memory (RAM) plus 4KB.
Т.е. он просто напросто представляет собой физическую память сервера/компьютера. А его размер = размеру физической памяти + 4 килобайта. А реального места на винчестере он вообще не занимает.