Unix way is...
Write programs that do one thing and do it well.
Про место...
(12:42:16) me: У меня нет привычки кричать о том, что я знаю больше, а получаю меньше кого-то. Если ты думаешь, что ты не на своём месте и ничего не делаешь для того, чтобы это изменить - ты неудачник и унылое говно по определению.
Про генсекьсос...
(17:04:35) Scosi: Да, причем тут генсекьсос
(17:04:52) Scosi: Бля...
(17:04:57) Scosi: Т9
(17:05:20) Scosi: Вентелятор
(17:06:02) Scosi: У меня комп перегрелся и тупит
(17:12:54) me: ^)
(17:13:03) me: Генсекьсос
(17:13:05) me: Это пять!
(17:13:36) Scosi: Тока на баш не отправляй
(17:13:57) me: У меня и в мыслях не было, пока ты не написала...
Восприятие себя...
Кстати, далеко не сразу заметил за собой то, то я с детства себя и свой организм воспринимал как-то совершенно отдельно. Если я хочу послушать первый концерт Чайковского для фортепиано с оркестром или какой-нибудь адский Dead Metall, то это Я хочу. А вот если я хочу есть/спать/и т.п., то это уже не я хочу, а оно хочет, то в чём это Я живёт. Как-то так.
Утренний диалог в комнате отдыха...
- Таня, а где ты живёшь?
- На Южном!
- Кладбище? И не лень каждое утро на работу отрываться?
- ...
Сон про мальчика со странными способностями и захват власти над миром...
Сегодня ночью мне приснился странный и довольно неприятный сон про мальчика, обладавшего необычными способностями. На протяжении сна я периодически видел происходящее то от первого лица, то от третьего, поэтому для определённости, буду рассказывать всё от третьего. Можно хоть фильм ужасов снимать, честное слово!
Мальчику было лет 12 или 14. Однажды, глядя на птичку, прыгавшую по асьфальту на улице, он ощутил какое-то странное чувство, как будто взглядом он мог эту птичку притягивать. Он сконцентрировался весь на этом ощущении и попытался вложить в него всю свою волю и все свои силы, как будто это было чем-то крайне важным. Птичка, кувыркнулась в воздухе и медленно по воздуху начала приближаться к мальчику, как будто находясь в невесомости. Потеряв опору, она беспомощно била крылышками, размахивала лапками, но ничего не могла сделать. Даже птичкины вопли как будто тонули в пустоте, её окружавшей - всё происходило совершенно бесшумно. Медленно вращаясь, птичка зависла в пространстве на расстоянии сантиметров 10 от лица мальчика. Он не знал, что ему с ней дальше делать. А потом он от усилия приоткрыл рот и в этот момент с птички упала пара -тройка перьев. Тогда мальчик приоткрыл рот чуть побольше и тут же с птички посыпались перья, она начала покрываться морщинами, высыхать на глазах, темнеть, уменьшаться, как будто очень быстро старела. Потом же, когда остался лишь обтянутый кожей скелетик, он с хрустом сломался и всё, что осталось от бедной пичуги, смяло в бесформенный комок размером с конфету. Раньше, чем мальчик успел опомниться, комок этот влетел ему в рот, челюсти сами разжевали его и что-то заставило мальчика проглотить всё, что было у него во рту. Как будто в этот момент он не управлял своим телом - оно жило своей жизнью. Если всё произошедшее и было чем-то неприятным, то мальчик этого не ощутил. Зато почувствовал, где он находится, словно в голове его появился GPS, почувтствовал, что может понимать то, о чём друг-другу сообщают птицы. Каких-то птиц он понимал лучше, каких-то хуже, по всей видимости это зависело от степени родства голосящих на улице птиц и той пичуги, которую он поглотил. Прислушиваясь к голосу какой-то одной он мог узнать например, что завтра будет холодно, на пять километров севернее роится много мошкары, а где-то правее сидит в засаде молодая кошка. Всё было примитивно - лишь направления, расстояния и обозначения - еда, опасность, сильный ветер... Причём эти понятия не ассоциировались в его голове со словами, он их как бы ощущал. В общем, он мог быть переводчиком птиц. Потом мальчик уже сам стал разыскивать птиц, которые по возможности больше отличались от той пичуги, которую он съел. Делал это он лишь для того, чтобы расширить свой словарный запас. Потом он поглотил кошку, несколько насекомых и мышь. Границы его мира значительно расширились, он увлёкся. И вдруг ему пришла в голову идея поглотить дерево. Он решил не мелочиться и найти такое дерево, которое сможет дать ему как можно больше. Он долго бродил по лесу, пока не набрёл на огромный вековой дуб, стоящий возле края скалы. Мальчик сосредоточился, встал поближе и открыл рот, но ничего не происходило. Он прикладывал все свои силы, вкладывал всё желание и всю волю. Конечно, дуб не мог сорваться со своего места, но желание мальчика поглотить его было так сильно, что он всё-таки победил. Сверху посыпалась жёлтая и жухлая листва, она падала сплошным водопадом и быстро покрыла всё вокруг, мальчика засыпало ей по колено, но он уже не мог остановиться. Он уже не контролировал себя. Раздался треск и рядом с мальчиком упала большая, совершенно сухая и узловатая ветвь, чуть не задев его, но он стоял неподвижно с открытым ртом и не шевелился, словно восковая фигура. Вокруг падали ветви поменьше, древесина скрипела и трещала, под землёй ворочались как живые, корни и втягивались обратно к центру дуба. Дерево начало уменьшаться. Оно покрылось трещинами, как будто что-то огромное надавило на него сверху. Ветки ломались сразу в нескольких местах и прижимались к стволу. Неведомая сила вырывала из земли корни и земля вокруг была словно вспахана - всюду были продолговатые ямы от корней. Всё это стягивалось в центр, в одну точку, пока не превратилось в такую же бесформенную конфету, с которой произошло то же, что и всегда. Какое-то время мальчик стоял ошеломлённый, опустошённый, не в силах о чём то думать. Потом его кожа начала чесаться. С каждой минутой зуд становился всё сильнее и сильнее. Мальчик сорвал с себя одежду и неистово ногтями начал царапать свои руки, ноги, тело, лицо и шею. Он с ужасом увидел, что кожа начала слазить с него клоками, а под ней была кора молодого дерева. Волосы мальчика начали удлинняться и становиться толще. Он на глазах сам становился деревом. Пальцы на его ногах заострились, проткнули обувь и начали врастать в землю, а руки как будто стали легче воздуха и их потянуло вверх. Спустя каких-то полчаса посреди изуродованной выдираемыми корнями земли, стоял молодой дубок, может быть чуть странной формы с двумя толстыми ветвями, которого при желании можно было принять за человека. Но так как мальчик поглотил дерево, то деревья стали делиться с ним своими мыслями.
Мальчик уже не был личностью, он стал частью какого-то огромного, мудрого, всепонимающего разума, который знал всё и мог понимать язык всех птиц, зверей, людей... И этому огромному разуму грозил лишь человек как класс, который постоянно уничтожал его. Из-за того, что человек переступил какую-то незримую черту, деревья решили дать одному из людей ту силу, которая его погубит, понадеявшись, что он тут же пойдёт сводить счёты с другими людьми, как только о ней узнает. И как только они заполучили мальчика, они смогли понимать язык людей и собрались уничтожить человечество и стать главенствующей расой на планете.
Собственно, на этом сон и оборвался.
Про собак...
Что-то мне навеяло недавним разговором с Доджем. Да, к собакам у меня соверешнно особое отношение. Когда я был совсем маленьким, у деда сначала была охотничья лайка, звали кстати, тоже Лоткой, затем была ездовая. Точнее был - Джинн. Тогда он мне казался огромным и мохнатым как медведь. Впрочем, ничего удивительного - я сам тогда был намного меньше. Тот пёс меня катал на санках, прицепленных к шлейке, а потом мы его годами чесали, начёсанную шерсть складывали в мешок, а потом мама вязала носки и свитера. Тёплые были - всякие там овечки и прочая живность просто отдыхает. А потом был Рёкс - немецкий овчар. Но в отличие от многих немцев, которых я вижу сейчас, рыжего оттенка шерсти у него практически не было, скорее песочный. Носки из него уже не получались, потому что шерсть была короткая и жёсткая, зато собака была - чистое золото. Столько воспоминаний с ним связано - не перечесть. Он часто вздыхал - по человечески так, а в его взгляде просто читался такой же человеческий ум.
Как-то раз я довольно серьёзно болел, температура была высокой, кажется, выше 39, и самочувствие оставляло желать лучшего. Дома как назло почему-то никого не было и я позвал собаку. Он вздохнул и пришёл, сел рядом, осторожно взял в пасть кисть моей руки (это у него было выражением особой преданности и любви) и долго на меня смотрел, как будто хотел сказать "я с тобой, я тут, всё хорошо". Голову даю на отсечение, он чувствовал и понимал тогда, что мне плохо. Наверное не ошибусь, если скажу, что он сопереживал или сочувствовал. Мне действительно полегчало тогда, стало спокойнее от этой молчаливой поддержки и я уснул. Когда я проснулся, то пёс всё так же сидел со мной, держа в пасти кисть моей руки. Посмотрев на часы я с удивлением узнал, что проспал почти 4 часа. И всё это время он от меня не отходил ни на шаг. На ковре было мокрое пятно от капающей из пасти слюны, наверное у него всё тело затекло, но он сидел со мной.
Несколько раз его крали. Один раз его не было две недели. Для нас это было трагедией, но через две недели он вернулся - худой, измождённый c обрывком поводка, перегрызенным и завязанным в трёх местах узлом.
Когда мы с другом (Ег, привет тебе, если ты сейчас это читаешь), у деда на даче бегали до моста и обратно (около 2км), то он бегал бок о бок с нами.
В детстве я играл с ним в рычалки - давал ему один конец поводка, а другой брал сам. И мы его перетягивали, рычали, сопели, пыхтели, старались перехватить поудобнее, а порой он смешно буксовал на линолеуме...
Ещё одной забавой была угадайка - я брал кусок печенья, показывал ему, в какой оно руке, потом перепрятывал за спиной и выставлял вперёд два кулака, в одном из которых был тот самый кусок. Пёс сидел рядом и пытался угадать. А потом протягивал лапу и ударял по той руке, в которой как ему казалось, было печенье. Если он угадывал, я ему его отдавал, если ошибался - перепрятывал и всё продолжалось снова.
Однажды он заболел и ему нужно было делать уколы. Курс то ли из десяти, то ли из двенадцати уколов, точно уж не помню. И когда дед его звал, он подползал, прижимал уши и подставлял холку. Ему было больно, но дед как-то смог объяснить, что это надо. А потом дед уже его не звал, в назначенный час он сам приходил для укола. Очень сознательный был пёс.
Потом у нас в старой квартире делали ремонт и в числе прочего красили полы. Большая комната была проходной, через которую можно было добраться ещё в две комнаты поменьше. На крашеном полу оставили для этого две узеньких, сантиметров по 20 шириной дорожки. Мы долго представляли себе, как мы будем выстригать прилипшую к полу собачку, как будем убирать с высыхающей краски куски шерсти и т.п.. Ужас одним словом. Ничего подобного! Он ходил ровно по дорожкам, ни шага влево, ни шага вправо. Даже ничего объяснять не пришлось. Кстати, женщины, которые делали ремонт, ко времени своего ухода решили, что собачка глухонемая, потому что они никогда не видели, что собака может молчать более трёх дней. А смысл лаять, если тебя все понимают без слов, и никому ничего не угрожает.
Когда-то у меня была ручная крыса. Неручных собратьев он в деревне давил пачками. А тут принесли из зоопарка и сказали, что это "свой". Пёс понюхал и вроде как понял. Через пару месяцев смышлёный грызун научился своими лапами открывать клетку и вылазить наружу. А потом даже залазить обратно и закрывать за собой. Я вполне серьёзно - у нас был натуральный шок, когда мы увидели сам процесс. Просто живое воплощение слова "палево" - крыса молнией ныряет в клетку и моментально за ней задвигается решётка! Так вот - за несколько дней до того, как мы увидели, что она умеет закрывать за собой "дверь", мы обнаружили следующую картину - лежит пёс с крайне удручённым выражением морды, а между ушей у него на голове бесстыдно дрыхнет крыса, свернувшись клубочком. :)
Ещё существовала граница между коридором и кухней. На кухню заходить было строго запрещено. И когда наступало время завтрака/обеда/ужина, пёс сидел на пороге кухни и ждал, когда что-нибудь ему обломится. На морде было написано, что собачку вообще не кормят по крайней мере уже полгода. :) Зато если что-то падало на пол, и ему разрешали подобрать, он просто растекался по полу, прижимал уши к голове, по-пластунски подползал к тому, что упало, подбирал и быстро-быстро по линолеуму буксовал обратно. В общем, всячески давал понять, что он сюда заполз исключительно с разрешения и в виду чрезвычайной ситуации - падения бутерброда по всем правилам, колбасой вниз. :) При этом его никто никогда не наказывал физически, а на кухне можно было легко оставить кусок сырого мяса на полу и уйти на неопределённый срок. По возвращении вас ждала собачка в луже слюны на пороге кухни.
Он очень хорошо чувствовал свою "стаю". Если на лестничной площадке кто-то начинал шуметь, он подходил к двери и угрожающе рычал. Однажды к нашей соседке кто-то полез в квартиру. Она стала стучать в коробку, в которой стоял счётчик (счётчики нашей и её квартиры стояли в одной нише в стене и были разделены лишь фанеркой) и звать пса по имени. Пёс разбудил всех - стаскивал одеяла, скулил, тыкался носом в руки, а потом подошёл к двери и начал лаять. В общем, спас соседку. Свою территорию защищает, при этом никто его этому не учил.
А ещё бывает сидишь, ничем особо не занимаешься, а он подойдёт к тебе, положит свою тяжёлую большую голову тебе на колени и смотрит так преданно снизу вверх - это что-то. Просто красноречивее всех "я тебя люблю".
Ещё он знал команду "мешаешь", по которой собачка просто растворялась в воздухе.
А когда мы возвращались с прогулки осенью и весной, он стоял в коридоре и ждал, когда ему откроют ванную. Потом запрыгивал в неё и подавал по очереди все лапы. Ждал, когда их вымоют и вытрут, а потом уже шёл в комнату. Однажды забыли помыть его, так он простоял у ванной в коридоре полтора часа, а потом начал тихонько скулить.
Ну и просто до чего же приятно приходить домой, когда тебя встречают, искренне любят, скучали по тебе и всем своим видом показывают, как рады тебя видеть!
P.S.: Мне его очень не хватает и ни одна другая собака наверное не сможет мне его заменить.
Каталог снов...
Сегодня ночью мне приснился не просто сон... Мне приснился каталог снов. Когда я начинал немного просыпаться, я видел перед собой в пространстве некий структурированный список примерно следующего вида:
[Животные]
Сон про кошку
Сон про жирафа
Сон про муху
Сон про живой гриб
...
[Компьютеры]
Сон про сервер
Сон про сборку ядра
Сон про программирование ботов
Сон про редактирование длинного конфигурационного файла
...
И когда начинаешь думать, что бы ты хотел посмотреть, над соответствующая строчка подсвечивалась бледно-жёлтым светом. А потом я знал, что почему-то обязательно нужно перевернуться на другой бок, чтобы сон начался. Некий своеобразный аналог Enter'а. После переворота на другой бок сон начинался. После завершения сна, я снова видел список, уже с некоторыми изменениями и всё начиналось по новой. Почему-то я не мог вспомнить, сам выбранный сон, но очень неплохо запомнил каталог. По всей видимости, каталог появлялся в фазу быстрого сна. Вот такие пироги.
Пишем lifo на пайтоне...
Чем больше я изучаю python, тем больше он мне нравится. Просто влюбился в этот язык - простой и логичный, на котором удивительно легко и быстро разработать что угодно.
Так вот, не так давно мне нужно было работать с sqlite3 базой в несколько потоков, в том числе и с возможностью записи данных, чего по понятным причинам пайтон мне позволить не мог. Первое, что пришло в голову - взять очередь lifo и написать обработчик очереди, который будет периодически извлекать из неё поступающие туда sql-запросы, последовательно выполнять их и возвращать мне результат. Всё оказалось намного проще, чем я думал сначала. Для этого будем испльзовать словарь, где в качестве ключа будет использоваться некий уникальный в каждый момент времени идентификатор. При добавлении элемента в очередь, будем искать максимальное значение ключа и добавлять к нему единицу, что станет ключом новой записи. При извлечении из очереди, будем брать значение с минимальным значением ключа и удалять его. Всё просто, как апельсин и свои задачи решает на ура!
class lifo():
### Class for lifo creation
def __init__(self):
self.queue = {}
def __del__(self):
self.queue = None
def min(self):
if self.queue:
return min(self.queue.keys())
else:
return 0
def max(self):
if self.queue:
return max(self.queue.keys())
else:
return 0
def len(self):
if self.queue:
return len(self.queue.keys())
else:
return 0
def put(self, param):
if param:
if self.queue:
self.queue[self.max() + 1] = param
else:
self.queue[1] = param
def get(self):
if self.queue:
mitem = min(self.queue.keys())
result = self.queue[mitem]
del self.queue[mitem]
return result
else:
return 0
Измена...
Сегодня писал систему резервного копирования на работе. В числе прочего, нужно было реализовать механизм, который при недоступности сервера дожидался бы момента, когда тот поднимется, после чего начинал бы резервное копирование. Вот соответствущий кусок:
IZMENA="2"
while ! ping -c 3 172.16.1.100; do
echo "Не пингуется нихрена. Сидим на измене $IZMENA min."
sleep `echo $[$IZMENA*60]`
done