воскресенье, 27 апреля 2008 г.

Открыл рыболовный сезон.

Сегодня наконец-то открыл сезон рыбной ловли. Вчера тоже была попытка открытия, но провалилась в виду неявки главного виновника торжества - рыбы. Впрочем, вчера я пошёл не подготовившись, с единственным куском хлеба, отсюда и результат.
Сегодня же был закуплен мотыль и опарыш. В результате на удочку попалось: 1 Окунь, 1 Карась и пучок уклеек. Уклеек было хоть отбавляй - штук 30 наверное. Основательных рыб было только 2 (окунь с карасём на пару), которые были торжественно сфотографированы и отправлены восвояси.

Фото сделано телефоном, отсюда и качество.

Ловил на канале один я. Подходил ещё один рыболов, но через 20 минут смотал удочки и убрался восвояси, праздновать наверное. В глазах остальных людей, я выглядел как минимум жутким грешником. Как максимум - посланником сатаны, которому захотелось рыбки.
Вобщем-то ловить в таких условиях мне не очень понравилось. Кругом шастают люди, пьяные крики, дети бросают в воду камни. Неуютно-с...

пятница, 11 апреля 2008 г.

Купил велосипед

Наконец-то я купил себе велосипед. До сих пор все мои желания как-то не находили отражения в реальности, но на этот раз я сказал себе "хватит!". Хватит, так хватит. Неделю я убил на то, что-бы взвесить все за и против, и несмотря ни на что принять верное решение. Параллельно происходило изучение цен, возможностей и недостатков велосипедов всех мастей.

В конце концов я остановил свой выбор на Trek 4300. По описаниям - неплохой велосипед начального уровня. Этот начальный уровень стоил на сайте 450 у.е., но оказалось, что есть акция (о которой я конечно ничего не знал, хотя на сайте всё было написано 72 шрифтом). По условиям этой акции, тому человеку, который избавит магазин от этого велосипеда полагается скидка (до 425 у.е.) и велокомпьютер в придачу. Причём, что интересно, не самый поганый из их ассортимента.

Скидка и велокомп это конечно интересно, но я старался держать их подальше от своего разума, ведь бесплатный сыр бывает известно где, и с неизменным результатом.
Но, подвоха я не нашёл, и жадность победила. Конечно победила только после того, как я изучил все модели на том же ценовом уровне. Вобщем, ничего плохого я не нашёл про эту модель, а даже и совсем наоборот - её немного хвалили, и я решился.

Решился где-то к 11.00, а рабочий день оканчивался в 18.00. За это время было прочитано большое количество всякого вело хлама, и велополезностей. В 17.00 я не выдержал велосипедистского прессинга и поехал. Приехал и сказал "Беру это. Заверните чёрненький." Но чёрных с подходящей ростовкой не оказалось. Взял оранжевый - пусть люди видят меня из далека и сразу начинают завидовать. Ну, конечно кроме лохов (которые, как известно падки на двухподвесы) и продвинутых велосипедистов - эти будут меня презирать. Ну и ладно. Поехал домой.

Со стороны это наверное было смешно. До сих пор я ездил на велосипедах, количество скоростей которых приближалось к единице (кто скажет, что упавшая цепь - не скорость ?). С тормозами разумеется тоже не всё было гладко. Пару раз я пытался остановится путём вращения педалей назад. Это не помогало и я судорожно спрыгивал или вспоминал о настоящих тормозах. Но, вскоре я освоился и весь в мыле гонял туда-сюда, пытаясь поразить прохожих своим шикарным великом. Внимания конечно никто не обращал, но тем не менее я не мог свести с лица идиотскую улыбку.

Замерив максимальную скорость, однако, я немного расстроился, хотя собственно такого результата и ожидал. 38 км/ч по ровной местности... Не много, если учесть что на форуме люди на гибридах развивают до 50-55... Конечно, горный велосипед и не предназначен для быстрых покатушек, поэтому я поехал в область кореньев и тропинок.

Откатав в общей сложности 30 км (а расчитывал-то на 10-15) пришлось свернуть прогулку, ибо без фонаря почти ничего не было видно.

В итоге я получил: много фана, вялость в ногах (утро будет не хорошим...) и небольшую боль в отделе ниже-поясничного (ну вы поняли о чём я. О заднице, разумеется).
Дома я изучил руководство к велокомпу, и решил, что параметры колеса заданы не совсем верные. В новом пересчёте оказалось, что моя скорость 39км/час, что приятно, а пройденное расстояние - 29 км, что не столь критично.

Итого плюсы и минусы:
+ всё классно.
- болят руки от непривычного руля, дело привычки
- не высокая скорость, что было и так ясно

А вот, кстати и велик

пятница, 28 марта 2008 г.

Как создать свой проект на SourceForge.net - 3

Ну, дорогие мои проектовладельцы, наверняка у вас уже есть что готовое, что можно выкладывать. Хватит других смотреть, пора и себя показать.

Тема сегодняшнего пояснения - релизы.

Идём в Admin -> File Releases.
Здесь видим File Release Packages. File Release Package - это некоторый набор файлов, которые будут объеденены одной версией, одним Changes Log, Release Notes.

Для начала просто создадим пакет с именем таким же, как у проекта. Потом его можно будет изменить. Но не удалить! Так что не создавайте всякой ерунды.

Итак File Release Package создан. Теперь нужно закачать релизные файлы на сервер. Просто закачайте их на FTP: ftp://upload.sourceforge.net/incoming. Причём включите номер версии в имя файла, так как один пакет не может содержать файлы с одинаковыми именами.

Затем входим в недавно созданный пакет и создаём новый релиз - Add Release.
Там заполняем необходимые сведения о новом релизе, в том числе и выбираем недавно закачанные на ftp файлы.

Всё. Релиз готов. Теперь можно сидеть и наблюдать как растёт количество закачек :)

О телеЕЛЕвидении.

Поучаствовал недавно на съёмках токшоу "Ответный ход" на первом национальном (бла-бла-бла... в народе - БТ). Сходил из любопытства - не часто доводится поучаствовать в съёмках ток шоу, пусть и такого хиленького, как "Ответный ход". Да и перспектива помелькать лицом в ящике немного радовала. Говорить я ничего не собирался, но этого и не требовалось - говорящих хватало.

В общем, тема передачи "Компьютерная и интернет зависимости". Как обычно одна сторона за, другая против. Собственно, уже тут можно было почуствовать неладное. Что значит ЗА? За зависимость? Даёш, мол зависимость в каждую советскую семью? Меня посадили на трибуну ЗА, даже не спросив моего мнения. А может быть я был яростно против ? Впрочем, я не жалуюсь - температура на этой трибуне была приемлимая, кресла умеренно мягкие и никакой софит в рожу не светил.

Съёмка передачи походила примерно так, как я и представлял. Ну о чём тут можно спорить? Одна сторона говорила, что нужно сидеть в интеренете сколько надо, но не больше. Другя, что излишки вредны. Вобщем особого различия мнений я не заметил. Зато атмосфера оказалась немного иной, чем я предполагал. Через некоторое время я забыл о камерах, и был готов плюнуть своё возражение во вражескую трибуну. Но возражать было нечему :( Только одна, пожалуй, фраза вызвала во мне желание достать шпагу. Фраза "Интернет это же большая помойка...". Ну, как говориться, что ожидаеш увидить, то и увидиш... Но микрофона не рядом не случилось, да и тему никто не поддержал.

По ящику я передачу конечно же пропустил. Я и так редко смотрю его, а уж БТ и подавно. У нас дома идёт 46 каналов, а БТ под номером 35. Можно догадаться, как часто я его вижу на экране. Я бы поместил его последним номером исключительно из вредности, но на 40-46 каналах у меня спорт, который я смотрю ещё реже (если такое вообще возможно)

Вобщем, впечатления двойственные. Была бы тема поострее, можно было бы ввязаться в полемику, а так... скука. Не зевал исключительно по причине не желания сверкать дыркой вместо зуба в челюсти перед камерой.

пятница, 21 марта 2008 г.

Наша гордость...

Кто ещё не видел нашу национальную библиотеку? Нашу, так сказать, гордость и национальное достояние?
Ну, примерно где-то так:

четверг, 20 марта 2008 г.

Futufama и Linux. Казалось бы, что общего ?

Чем дальше я проникаюсь идеями Linux-а, тем больше он мне нравится. А Windows.... Признаем, господа, что Windows - ботва. Да, легко установить, легко пользоватся. Но она отупляет и ограничивает. Да, да. Сейчас объясню.

Как извстно всем поклонникам мультсериала Futurama, есть 2 версии разбиения серий на сезоны.
1-ый от создателей. Так сказать оригинальное разбиение.
2-ой от телеканала Fox, которая транслировала этот сериал.

Причём, FOX не постеснялся разбить 4 сезона на 5, и более того, пеерпутать некоторые серии !

У меня дома были все серии в разбиении FOX.
Основательно подумав, я решил, что нужно восстановить справедливость, и пересортировать в оригинальном порядке. С другой стороны, FOX порядок тоже хотелось сохранить.
Но, "справедливость прежде всего" подумал я.. и тут меня осенило.

Что за ерунда ? Мы же в нормальной операционной системе. Почему бы не оставить порядок FOX в виде симлинков на файлы в оригинальном порядке?
Сказано - сделано.

Спрашивается, почему в "человеческой" Windows нет ссылок? А вот нечего мозги распускать. За вас уже подумали товарищи из Редмонда...

среда, 19 марта 2008 г.

Покупающим DVD приводы к ноутбуку - предостережение.

С неделю назад я задумался о покупке нового винчестера в домашний сервер. 320 гигабайт забиты непонятно чем, а место нужно. Подумав про 400 я перешёл к 500 гигабайтным винчестерам. Затем плавно перешёл от IDE к SATA+контроллер. Но внезапно передумал и решил купить DVD-RW привод в свой ноутбук (в котором до этого момента был только читающий DVD привод).

Сказано - сделано. На следующий день я быстро обзвонил местные железячные конторы, нашёл нужное - "DVD-RW привод, без обвязки" за 70 у.е. и тут-же купил.
На вопрос "тут будем вставлять, или сами ?", я разумеется гордо ответил, что сам и уехал домой.

Радость была не долгой. На первый взгляд такой-же привод, как старый, но в предназначенное гнездо он просто таки ввалился. Странно, подумал я и вынул привод. Сравнив разъёмы я пришёл в жесточайшее уныние. Разъёмы были разные, да ещё и в разных местах. Погрустив некоторое время, я (что мне свойственно) стал думать. Какой я идиот, почему бы не вставить было на месте ? И какие же подноки обитают на фирме. Обещали что подходит ко всем ноутбукам... Я даже модель своего ноута уточнял по телефону. И тут на тебе - "DVD-RW привод, без обвязки, ко всем ноутбукам...." Стоп, стоп - "без обвязки"... "без обвязки"! Ну так и есть. На моём старом приводе были накручены небольшие (а местами и довольно большие) полоски металла. "Ага !" сказал я и поехал за отвёртками, так как винтики были совсем маленькими. Собственно из за этих винтиков я и не подумал, что "обвязка" может с привода откручиваться. Выглядело как единое целое.

Раскрутил "обвязку", снял переходник для интерфейса, обрадовался и стал прикручивать на новый привод.

"Вот те на...." Мягко расстроился я. Не подходит ! Гадство. Часть железок прикручивается, а чать - нет. Дырки не сходятся...

Вобщем так и живу. Прикрутил переходник для IDE интерфейса и вставил привод в гнездо. Он там конечно болтается, но работает. Уже успел записать 15 DVD дисков и основательно почистить место на сервере.
В перспективных планах - купить подходящую обвязку... Да где её найти....

понедельник, 17 марта 2008 г.

Просто о sed

Почему-то поголовно все руководства по sed, которые мне попадались на глаза, являлись простым переводом соответствующей страницы MAN руководства. Причём некоторые предложения я вообще не мог понять, а они так и продолжали кочевать из одного руководства к другому.

Поэтому я решил написать своё руководство, не такое полное, зато более понятное.

1. Что такое sed, и зачем его едят
Подробностей я здесь разговаривать не буду. В кратце, sed (streaming editor), позволяет обрабатывать огромные объёмы текста, если нужно выполнить над ним шаблонные действия. То есть, заменить то на сё, склеить строки там и сям, удалить то и это.
Как работает sed? Утилита берёт строку текста и пробует к ней применить скрипт редактирования. Затем следующую строку, следующую, и так пока не достигнет конца текста.

2. Командная строка sed
Тут только необходимые основы. Подробности в MAN.
Запускаем sed так:
sed [опции] [имя файла(ов)]
Если имя файла не задано, то читается стандартный вход. Результат подаётся на стандартный выход.
Опции:
-e 'скрипт' - задаёт скрипт обработки данных в виде строки. Скрипт можно написать на нескольких строках!
-f файл-со-скриптом - задаёт файл со скриптом.
-r - использовать расширенные регулярные выражения (более удобно на мой взгляд)
-n - не выводить текст пока мы явно об этом не попросим в скрипте.
Вобщем всё просто.

3. Области редактирования и удержания
sed имеет 2 области (буфера), которые могут содержать текст:
  • Область редактирования (pattern space), куда помещается очередная строка. Именно над этой областью производится редактирование.
  • Область удержания (hold space) - буфер куда можно положить промежуточный результат. Что-то вроде регистра калькулятора :)
4. Синтаксис команд редактирования
Команды редактирования отделяются друг от друго символом ';' или разносятся на разные строки. Однако после некоторых команд, ';' игнорируется (такие команды как a, c, i)

Синтаксис команды довольно прост:
<условие применения><команда><аргумент команды>
Не все команды содержат по 3 составляющие. Единственным пожалуй обязательным элементом является сама команда. Между всеми тремя составляющими можно вставлять пробелы, а можно и не вставлять - как кому нравится.

Условие применения
Условие применения, это некоторое условие, которое указывает, нужно ли применять команду к текущей области редактирования (обычно это очередная строка из файла).
Для людей, знакомых с функциональным программированием, очевидно, что <условие применения> есть ни что иное, как pattern matching
Остальные могут представить команду, как
if(pattern_space like <условие применения>) then <команда><аргумент команды>
То есть, если область редактирования удовлетворяет условию применения, то выполнить команду.

Есть несколько видов условий, наиболее простые это:
  • Номер строки. Применить команду только к определённой строке ($ - к последней строке). Примеры:
    1 - применить к первой строке
    10 - применить к 10-ой
  • Регулярное выражение. Применить команду только если текущая область редактирования совпадает с регулярным выражением. Примеры:
    /^Hello/ - применить к строкам, начинающимся с Hello
Условие может быть диапазоном строк и состоять из 2-х элементарных условий. Первое указывает начало а второе - конец диапазона. Например:
1,10 - строки с первой по 10-ую.
/^A/,20 - строки с строки начинающейся с A по 20-ую строку.
2,+10 - 10 строк, начиная со второй строки.
Однако нужно помнить, что не все команды принимают диапазоны.

Символ ! после условия, инвертирует его.
5,10 ! - обрабатывать всё, кроме строк с 5-ой по 10-ую

Остальные виды адресации можно посмотреть в MAN

Группировка команд
Под одно условие может попадать несколько команд. В таком случае необходимо использовать группирующие скобки - {}
1 {
<здесь несколько строк с командами>
...
}

Команды редактирования данных
Даю наиболее ценные, с моей точки зрения команды. (Остальные можно посмотреть.... да, в MAN)
s/регулярное выражение/замена/ - заменить текст в области редактирования, подпадающий под регулярное выражение на текст замены. Можно использовать \1 ... \9 для ссылки на группы в регулярном выражении. Диалект выражений зависит от опции -r
p - вывести текущее содержимое области удержания. Если не использовать опцию командной строки -n, то эта команда автоматически выполнится в конце скрипта.
b label - перейти к метке label. Если метка не указана - перейти в конец скрипта.
h (H) - скопировать (добавить) область редактирования в область удержания
g (G) - скопировать (добавить) область удержания в область редактирования
x - обменять содержимое области удержания и редактирования.
Менее полезные (для меня по крайней мере) команды.
a - добавить текст после результата работы. \ может экранировать новую строку. Примеры:
aline
a line
a line1\
line2
i - вставить текст перед результатом работы.
c - заменить результат работы на текст.
Пояснения к командам i, c, a. В данном случае результатом называется то, во что в конце концов превращается текущая область редактирования. То есть:
sed -e 'p'
выведет каждую строку дважды. Первый раз по команде p, а второй раз как результат обработки строки(с ней ничего не делалось, поэтому результат = самой строке)
Так вот, результатом в данном случае будет только каждая 2-ая строка.
Или ещё пример:
sed -ne 'p'
результат есть, но он равен "" из-за опции -n, и поэтому каждая строка выводится 1 раз.
Вернёмся к командам i, c, a. Эти команды работают до, вместо, и после вывода результата!
Это значит, что
sed -e 'p;ix'
выведет строку(работа p), x (работа ix) и снова строку(результат)
sed -ne 'p;ix'
Соответственно выведет строку(работа p), x(работа ix) и результат(который пуст из-за опции -n).
Аналогично, c заменяет только результат, а a - добавляет текст только после результата

r Имя-файла - работает как a, но добавляет текст из файла к результату.
R Имя-файла - добавляет только первую строку из файла к результату.

Остальные команды либо не так важны, либо я ещё не осознал их важность.

Есть ещё кроме команд комментарии и метки:
:label
- пометить строку меткой, на которую можно будет перейти командой b
# - начать комментарий до конца строки.

Ну вот вроде и всё.

5. Пример применения
Задача: Удалить все переводы строк, если они не начинают абзац. (Т.е. превратить текст в ряд длинных строк, какждая их которых - абзац)
Подумаем... Будем добавлять строки в область удержания, пока не встретим начало абзаца. Как только абзац начался - выводим из области удержания склеенную длинную строку.
И снова начнём собирать длинную строку.
Ну ещё разумеется нужно обработать последнюю строку, и вывести всё что осталось в области удержания.
Красной строкой будем считать всё что начинается длиннее 1 пробела. Вот такое регулярное выражение
/  |\t/

(без использования опции -r, символ '|' так же необходимо экранировать - / \|\t/)

Итак, при встрече начала абзаца - выведем предыдущий абзац из области удержания:
/  |\t/ {
x # меняем местами обе области
s/\n//g # удалим все лишние переводы строки
p # выводим область редактирования (в ней то, что было в области удержания)
s/.*// # обнуляем область редактирования (d не подходит)
x # снова меняем местами обе области местами - и мы готовы дальше работать с первой строкой параграфа
}

Затем нужно добавить текущую строку в область удержания:
H
Ну и, если это последняя строка, нужно вывести все остатки:
$ {
x # меняем местами обе области
s/\n//g # удалим все лишние переводы строки
p # выводим область редактирования
}
Теперь всё вместе:
sed -rne '
/ |\t/ {
x # меняем местами обе области
s/\n//g # удалим все лишние переводы строки
s/.*// # обнуляем область редактирования (d не подходит)
x # снова меняем местами обе области местами - и мы готовы дальше работать с первой строкой параграфа
}
/ |\t/ ! H
$ {
x # меняем местами обе области
s/\n//g # удалим все лишние переводы строки
p # выводим область редактирования
}
'
Да, тут есть ещё что улучшить. Например, если первая же строка - красная (что обычно так и есть), первой будет выведена пустая строка. Так же хорошо бы нормализировать начальные пробелы, то есть заменить любые пробельные последовательности в начале строки на одну табуляцию.
Это можно сделать напустив ещё один sed на выход первого. Предположим, что первый скрипт мы сохранили в файле make-para.sed
cat input.txt | sed -nrf make-para.sed | sed -re '1 d; s/[ \t]+/\t/'

воскресенье, 16 марта 2008 г.

Очеловечиваем лицо df

Давным давно мне хотелось df с человеческим лицом. Если быть более точным, то хотелось как-то увеличить размер первой колонки с файловой системой. На моей системе вывод df выглядел так:
Файловая система      Разм  Исп  Дост  Исп% смонтирована на
/dev/hda1 6,1G 4,4G 1,8G 72% /
udev 10M 116K 9,9M 2% /dev
/dev/hda4 22G 14G 7,8G 63% /home
shm 252M 0 252M 0% /dev/shm
/var/data/stardict-dicts.sqfs
44M 44M 0 100% /usr/share/stardict/dic
/var/data/portage.sqfs
40M 40M 0 100% /usr/portage
homeserv:/mnt/sja-129G/gentoo/distfiles
130G 106G 24G 82% /var/distfiles

Как видно, строки со слишком длинными файловыми системами разбиты на 2 части, а мне хотелось непременно в одной.
Изучив исходные коды утилиты, я выяснил, что под файловую систему отводится 20 символов, и изменить это никак нельзя. Нужен был какой-то скрипт, который бы читал вывод df и очеловечивал его.
И этот скрипт был написан! Причём всё с помощью sed - давно хотел освоить эту утилиту, но всё как-то не было оказии.
Вот собственно и скрипт:
# !/bin/sh
df -h | sed -ne '
# if first symbol not space - begin normal line
/^[^ ]/{
# add 20 spaces after first 20 - expand normal string
s/\(.\{20\}\)/\1 /
# exchange with hold space
x
# if hold space non empty - print it
/./p
# goto end
b e
}
# if begin with space - continue of previous line
/^ /{
s/^ \{20\}//
# prepare first part of string
x
# remove added 20 spaces
s/\(.\{20\}\) \{20\}/\1/
# patttern doesnt 40 symbols ?
:a
/.\{40\}/ ! {
s/\(.*\)/\1 /
b a
}
x
# add current line to hold space
H
# next 3 lines remove \n and extra spaces from hold space
x
s/\n//
x
}
:e
# if last line - flush data from hold space if it here
${
# get hold space and print, it it non empty
x
/./p
}
'

Ну да, выглядит страшненько, но зато полон коментариев и работает! Теперь я созерцаю вывод таким:
Файловая система                          Разм  Исп  Дост  Исп% смонтирована на
/dev/hda1 6,1G 4,4G 1,8G 72% /
udev 10M 116K 9,9M 2% /dev
/dev/hda4 22G 14G 7,8G 63% /home
shm 252M 0 252M 0% /dev/shm
/var/data/stardict-dicts.sqfs 44M 44M 0 100% /usr/share/stardict/dic
/var/data/portage.sqfs 40M 40M 0 100% /usr/portage
homeserv:/mnt/sja-129G/gentoo/distfiles 130G 106G 24G 82% /var/distfiles

пятница, 14 марта 2008 г.

Как создать свой проект на SourceForge.net - 2

Продолжаем работу с sourceforge.net

Subversion
Как известно, для управления исходными кодами можно (и даже нужно) пользоваться системами контроля версий. sourceforge.net предлагает для использования CVS и Subversion.
По умолчанию включен только CVS, но я рекомендую воспользоваться более современным и удобным Subversion.

Для этого нам прежде всего нужно его включить в меню Admin -> Subversion, а в Admin -> CVS отключить соответствующий сервис.
Теперь перейдём на Code -> SVN
Прямо в тексте мы найдём строку наподобие этой
svn co https://pathmanager.svn.sourceforge.net/svnroot/pathmanager pathmanager

которая позволяет сделать checkout (забрать исходные коды) с sourceforge.net.
Дальше всё как обычно. Создаём tags, branches, trunk добавляем исходные коды и комитим.
При комите нужно ввести логин и пароль sourceforge.net

(to be continued)

PATH Manager

Написал свою маленькую утилитку для редактирования пеерменной %PATH% в Windows. Причём решил запихнуть этот проект на SourceForge.net
Хороший способ потренироватся в создании открытых проектов.

Посомтреть можно тут

Как создать свой проект на SourceForge.net - 1

Недавно решил создать свой проект на http://sourceforge.net.
Как оказалось, всё не так просто и требует некоторых усилий и разбирательств.
Во первых необходимо зарегистрироватся, и получить доступ к сайту. Тут обычно ни у кого сложностей не возникает.
Теперь, когда мы зарегистрированы на сайте, можно попробовать создать проект. Для этого нужно подать заявку, в которой указать имя проекта, описание, используемые технологии и тому подобное. Не сложно. после чего нужно ждать до трёх дней письма с извещением об создании (или, о ужас, не создании) проекта.
Если письмо долго не приходит, попробуйте залезть на сайт и проверить статус проекта. Одобрения первого проекта по почте я так и не дождался, хотя проект был одобрен и создан. Видимо завалилось в спам.
После создания проекта можно приступить к бурной деятельности.

Traker
Итак. Tracker - система учёта дефектов и feature request. Особых пояснений думаю не требуется, каждый или работал с подобными системами, или слышал о них.
Перво наперво нужно создать категории, группы и учасников. Это можно сделать из меню Admin -> Traker -> Traker administration -> Bugs (например) -> Add/Update Categories, Groups, Users.
При этом группы, категории можно создать и изменить, но удалить нельзя. По этому, не насоздавайте всякой ерунды.

Далее можно приступать к созданию issues, работе над ними и закрытию. Всё это в в меню Traker.

(to be continued)

вторник, 11 марта 2008 г.

Аскетичность холостяцкой жизни

В чём думаете отличие холостяка от человека "при женщине" ?
Одно из отличий (может быть не главное, но совершенно явственное) заключается в смеренном терпении женатого мужчины к наличию бесконечного числа очень важных баночек, бутылочек, пакетиков и тюбиков. Назначение этого строя косметических излишеств совершенно не ясно простому парню вроде меня, но одно совершенно точно - выбрасывать ничего нельзя, даже если очень хочется. Только попробуй и будеш покупать новую полку в ванной, чтобы было куда поставить очередные тюбики, компенсирующие невосполнимую потерю старого.

Доказательства ? Извольте.
Снимаю я квартиру пополам с товарищем, но в дополнение я живу со своей девушкой. (Нет, семья не шведская).

И вот какую картину можно наблюдать у нас в ванной. Красным цветом я старательно обвёл вещи соседа. Остальное наше.





















Ё в firefox

Давно меня раздражало непонимание Firefox-а буквы ё. Оказалось, что всё решаемо и помехой была только моя лень.
Решение как всегда лежало в Гугле, почти на самом виду. Более того, новый словарь одновременно проверяет и русские и английские слова, что очень удобно - не надо переключатся между ними.

Для ленивых даю ссылку.
http://forum.mozilla-russia.org/viewtopic.php?id=15316

понедельник, 3 марта 2008 г.

Приклеивание лого

Некоторые люди любят приклеивать на скриншоты логотип. Чтоб не спёрли, видимо (хотя всё равно ведь сопрут...)
Разумеется это дело можно и даже нужно автоматизировать.
Для этого нам понадобятся 2 программы.
для создания логотипа - gimp
для приклеивания оного - imagemagick
Оба бесплатны и работают под Linux и Windows

I. Создание логотипа.

0. Скачиваем и инсталлируем GIMP

1. Создаём в GIMP картинку и с помощъю инструмента Text создаём надпись желаемого цвета и размера.


2. Удаляем фоновый слой


3. Сжимаем картинку до размера слоя с надписью.


4. Сохраняем как PNG


II. Приклеивание логотипа

0. Скачиваем и инсталлируем ImageMagick

1. Используем его:
composite -gravity SouthEast logo.png input.png output.png
-gravity SouthEast сообщает к какой стороне картинки прилепить логотип. в данном случае к нижнему правому углу.

для группы файлов это будет выглядеть в Linux так:
# for i in *.png; do composite -gravity SouthEast logo.png $i $i.with-logo.png; done

если есть несколько логотипов, и хочется для каждой картинки выбирать тот, что лучше подходит, можно создать все комбинации, а потом удалить не нужное:
# for l in logo/*; do for i in images/*; do composite -gravity SouthEast $l $i $l.$i; done; done

P.S. Надёюсь никто не забыл, что скриншоты лучше делать в png ?

среда, 20 февраля 2008 г.

TV Out в Linux с драйвером xf86-video-ati

Пару дней назад вздумалось мне настроить TV выход с моего ноутбука под Linux.
Перво наперво был проверен сам факт работы шнура и телевизора - из под Windows. Изображение в наличии - 1 штука. Уже хорошо.
Затем последовала перегрузка в Linux и долгие и упорные попытки всё это настроить в xorg.conf, перемежающиеся чтением манов и всего-чего-можно.
Изображение упорно не проявлялось. Была израсходовано куча времени и опций Xorg, но всё в пустую. Тщательное изучение логов Xorg выявило попытки спросить у телевизора возможные Modeline на которых тот может работать, но телевизор молчал как украинец с салом во рту.
Решив, что всё дело в Модлайне (т.е. разрешение и частота обновления экрана), я попытался найти в интернете парочку подходящих и проверить их. Был проверен с десяток различных модлайнов, самых что ни на есть рабочих по уверениям авторов, но увы... Экран телевизора даже не вздрогнул.

Спустя 5 часов экспериментов начали закрадываться сомнения. Самые различные, от "может это не в модлайне дело, а где-то глубже ?" и до "а не пошло бы оно..."
Было принято решение в пользу последнего сомнения, и в 1.30 я пошёл спать. (Это только говорится так - "пошёл". В действительности я просто вырубил ноут и повернулся на другой бок)

Утром была распечатана дока по xorg.conf на 20 страниц и в течении дня прочитана. Вечером я с новыми силами мчался на встречу телеэфиру.
И вновь потерпев неудачу, я практически отчаялся. Хотя, настроить TV Out было архиважно и архинужно, для поднятия престижа Lunux-а и меня, как линуксовода, я принялся отлынивать и читать новости. И о чудо! Провидение само подсовывает мне новость "бла-бла-бла выпущен новый драйвер для видеокарт radeon fx86-video-ati-6.8.0 с улучшенной поддержкой TV Out". Аргх! Как я не подумал о различных версиях драйверов?
Мчимся в портежи (опять таки, просто оборот речи - открываем терминал и cd /usr/portage/x11-drivers/xf86-video-ati), и видим там 2 версии драйвера:
6.6.3 и 6.7.197 (вроде). Установлен конечно 6.6.3. Радуемся и ликуем, пытаемся поставить, упс... нужно размаскировать! ну, допустим.... Наконец драйвер встаёт на место.

Перегружаем X-ы. Телек не работает, но и видео не поломалось. Хорошо....
Погружаемся в man radeon и находим там Option "TVDDCDetect". Воспользуемся ей и.... заработало !
(название опции TVDDCDetect написано по памяти, так что перед использованием стоит заглянуть в man radeon)
Отличненько. Теперь скачиваем релиз 6.8.0 и ebuild к нему, устанавливаем ebuild в portage overlay, и пытаемся его emerge. Всё проходит удачно, тв-выход работает, видео не сломано.

Пытаюсь разобраться в том, что получилось. Получается, что если S-video коннектор подключен, то X определяет это и стартует ноут и тв в разрешении 800х600
Не очень то удобно при родном разрешении ноутбука 1400х1050... Продолжая изучать матчасть, нахожу утилиту xrandr, которая позволяет на лету включить S-video, при этом с возможностью клонировать не весь экран, а только часть. Т.е. на ноуте разрешение 1400х1050, а на телевизоре видно только прямоугольник 800х600 верхнего левого угла.
Примерно так это происходит:
xrandr --addmode S-video 800x600
xrandr --mode S-video 800x600


Теперь уже всё хорошо, кроме 3 вещей.
1. Не выяснено, как включить не режим клонирования, а отдельный экран (windows может, что наводит на размышления и надежды)
2. Режим Overlay не работает на телевизоре. Т.е. запуская mplayer на телике видим чёрный прямоугольник. Частично решается путём использования mplayer -vo x11 Но режим вывода -vo x11 не позволяет растянуть изображение (или я ещё не нашёл как)
3. Драйвер определяет что LVDS панель ноутбука имеет расширение 1400x1050, но упорно выставляет 1024x768. Нужно ковыряться в драйвере. Пока что простейшие попытки добавить отладочных сообщений в лог не увенчались успехом.

Продолжение следует....

четверг, 7 февраля 2008 г.

Муха по полю пошла, муха...

... денежку нашла. Резвая вобщем муха. И наблюдательная! Найти денежку не так-то просто на поле - поле оно ого-го, а денюжка она ути-пути маленькая. Впрочем не такая уж и маленькая, если хватило на самовар, но это в долларовом эквиваленте, а не по размеру.

Мухи они, впрочем, не только резвые и наблюдательные, но и живучие. Но, обо всём по порядку.
Последний раз я ходил на рыбалку (а вернее собрался, но не пошёл) где-то в октябре/ноябре. И осталось у меня баночка неиспользованных опарышей (это личинка мухи, если кто не знает, и выглядит, как бодрый червячок белого цвета). Дабы не смущать разумение жены, выставил я эту баночку на балкон, а не в холодильник, как того требует рыбацкая смекалка. Охлаждаю, значит опарыша, что-бы он не окуклился раньше времени. Но, больше на рыбалку в прошлом году я не попал - холодно стало, мокро, а я комфорт люблю. Ну и окуклился злосчасный опарыш через пару недель, не захотел, значит зимовать живчиком. Так я про него и забыл. А давеча вспомнил, дай думаю куколок выброшу. Глядь, а там мухи. Здоровые такие, и главное шевелятся - не убил их мороз и голод, стало быть. Ну, я их конечно занёс в дом, обогрел (кормить не стал - разлетятся ещё), сфотографировал и обратно на балкон поставил. До весны, значит. Выпущу их весной, зело сердобольный я, всякую тварюшку приласкаю, и обогрею (или заморожу, это как тварюшке повезёт). Ну, окромя, конечно, опарыша. Того я не ласкаю, а всё больше на крючёк саживаю.


Вот и фото.

пятница, 1 февраля 2008 г.

Я - хищник ?

Вы — Хищник.
Вы — Хищник.


Охотник, путешественник, ган-фрик. Вы всегда знаете, куда лучше всего поехать в это время года. Для вас очень важен корпоративный дух — вы даже в турпоездки предпочитаете отправляться с товарищами. Дома у вас висит фотография, на которой вы обнимаетесь с губернатором Калифорнии (Земля).

Пройти тест "Кто вы — Чужой или Хищник?"

воскресенье, 6 января 2008 г.

Дейтвительно краткое введение в mencoder

- Храните ваше видео пожатым.
(с) так и оставшийся неизвестным режиссёр
Преамбула, или вводная часть.

Скопилось у меня дома порядочное количество видео, снятое фотоаппаратом. Проблема заключалась в том, что видео было пожато кодеком mjpeg (ну или как там его), смысл которого заключается в том, что каждый кадр это обычный JPEG, что разумеется плохо сказывается на размере файла. Формат звукового потока тоже не радовал - обычный, не пожатый PCM. Клипов накопилось гигабайт так на 3-4, нужно было что-то делать.

Разумеется есть хорошая программа VirtualDubMod, с которой я уже работал. Но проблема заключалась ещё и большом количестве файлов. VirtualDubMod вроде как предлагает какие-то возможности пакетной обработки, но я решил изучить mencoder, который как известно является утилитой коммандной строки. Возможности пакетной обработки так и просятся в руки.
Ещё одним плюсом была возможность использовать mencoder в Windows(на работе) и в Linux(дома).

Сейчас я расскажу пару вещей, которые как мне кажется являются основами основ мироздания и mencoder-а.

Собственно амбула, или содержательная часть.

Что же нужно задать, что бы сконвертировать видео ?
1. Источник данных
2. Фильтры обработки (ресайз, кроп, подавление шума)
3. Кодек для сжатия звука.
4. Опции сжатия звука.
5. Кодек для сжатия видео.
6. Настройки сжатия видео.
7. Параметры выходного файла (имя, fourcc код)
Немного кофе/чая не помешает.

Теперь немного подробнее обо всех пунктах.

1. Нужно указать источник видео потока, который мы хотим конвертировать. Задаётся так-же как и в mplayer.
Пару простых примеров:
$ mencoder source.avi # avi файл на вход
$ mencoder dvd://1 # первый тайтл DVD на вход
$ mencoder dvd://1 -chapter 3 # первый тайтл, 3-ий чаптер DVD на вход (хм, как же тайтл и чаптер на русский переводятся ?)
$ mencoder dvd://1 -dvd-device /home/pupkin42/from_sidoroff/futurama # первый тайтл DVD на вход с указанием DVD устройства (тут просто директории с копией DVD)
так-же можно задать и другие источники - потоковое видео из сети, с TV-тюнера, DVB карты и т.д. Подробности в man

2. Можно задать различные фильтры, например для ресайза, кропинга, удаления шумов и т.д.
Подробности не привожу. По началу они не нужны, а потом можно посмотреть в man. Изучение можно начать с опции -vf cropdetect

3. Задаём кодек для сжатия аудио потока:
$ mencoder ... -oac mp3lame
-oac видимо означает output audio codec
Mencoder может кодировать звук несколькими кодеками. Один из них псевдокодек - copy. Он просто копирует входной поток в выходной, не производя никаких разжатий-сжатий.
Полезен в случае, если имеющееся аудиодорожка уже сжата как надо. Процессор при этом почти не используется.

4. Задаём опции для аудио кодека
$ mencoder ... -lameopts cbr:br=96:mode=1
тут после -lameopts идут опции кодека. Для другого кодека ключ будет другим. (Что-то вроде -anotercodecopts)
cbr означает константный битрейт
br=96 - битрейт в 96 килобит в секунду,
mode=1 - режим стерео joint

5. Задаём видеокодек.
$ mencoder -ovc lavc
(кодек lavc сокращённо от libavcodec)
Так же как и в случае с аудиокодеками, видеокодеков несколько. lavc - один из них.

6. Самое главное. Задаём настройки кодека. Для lavc кодека это будут значения ключа -lavcopts
$ mencoder ... -lavcopts vcodec=mpeg4:vbitrate=5000
vcodec - задаём формат выходного видеопотока. libavcodec может сжимать в разные форматы. В данном случае выбираем mpeg4
vbitrate=5000 - битрейт выходного потока. Тут я объяснять не буду, тема отдельной статьи. Но скажу, что это число всего-лишь верхний потолок. Если кодеку нечего будет жать, то он уменьшит битрейт. Так что указав, например, 10000, можно ожидать, что видео будет пожато в наилучшем виде, и при реальный битрейт может быть например 2000.
Обычно битрейт фильмов где-то на уровне 900-1500.
Ещё можно добавить следующие опции(что они делают я не в курсе, но все советуют и я буду)
-lavcopts vcodec=mpeg4:vbitrate=5000:mbd=2:v4mv:trell

7. Укажем имя выходного файла
$ mencoder ... -o output.avi
Так же для того, что бы некоторые плееры не ругались на неизвестный формат, можно указать FOURCC код выходнорго потока как DIVX
$ mencoder ... -ffourcc DIVX

8. Собираем все опции в одну строку и получаем что-то вроде:
$ mencoder dvd://1 -dvd-device /home/simpsons
-oac mp3lame -lameopts cbr:br=96:mode=1
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800:mbd=2:v4mv:trell
-o simpsons-001.avi
-ffourcc DIVX

Пару слов о многопроходных конвертированиях.
Добавив к опциям кодека опцию vpass=1 (для первого прохода) и vpass=2(для второго) можно улучшить качество картинки, за счёт того, что кодек будет лучше знать где стоит пустить больший поток, а где поменьше. Тот-же пример с симпсонами:

$ mencoder dvd://1 -dvd-device /home/simpsons
-oac copy
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800:mbd=2:v4mv:trell:vpass=1
-o /dev/null
В первом проходе аудио не конвертируем. Сделаем это в последнем проходе.
Получающийся файл нам не нужен - отправляем его в /dev/null (в Windows -o NUL)
mencoder создаст файл divx2pass.log, в который запишет информацию о каждом кадре.

$ mencoder dvd://1 -dvd-device /home/simpsons
-oac mp3lame -lameopts cbr:br=96:mode=1
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800:mbd=2:v4mv:trell:vpass=2
-o simpsons-001.avi
-ffourcc DIVX
Во втором проходе mencoder анализирует log файл и более оптимально перераспределяет видео поток в рамках выделенного битрейта.
Аудио разумеется нам нужно, выходной файл тоже. Дополнительно установим FOURCC код в DIVX, что-бы не было проблем.

Как можно заметить, кодирование с vpass=N не отличается от обычного кодирования, за исключением одной простой штуки:
vpass=1 заставит кодек записать log файл
vpass=2 говорит кодеку прочитать log файл, и использовать данные из него
vpass=3 и читает и пишет лог одновременно, ещё более его облагораживая.
Таким образом легко догадаться, что для многопроходной конвертации нужно сделать проходы с vpass=1, vpass=3, ... vpass=3, vpass=2

Хочу предостеречь от паралельного запуска нескольких многопроходных конвертаций в одной рабочей директории. Кодек обязательно запутается где чей log файл. В результате будет создан неверный выходной файл. Я напоролся на это, решив помочь серверу конвертировать симпсонов своим ноутбуком, и запустил конвертацию другого DVD но в той-же директории. В результате пол дня работы вылетело в трубу, пришлось всё пережимать.

Конец всех амбул, или проще говоря эпилог.
mencoder имеет громадное количество опций, и разобратся в них с наскоку очень сложно. Надеюсь моя статья немного поможет быть "в теме"

P.S. Кстати о симпсонах. Я их таки сконвертил, все 4 диска по 26 серий на каждой. В линуксе это выглядит так:
for dvd in simpsons1 simpsons simpsons3 simpsons4; do
for title in $(seq 1 100); do
mencoder -dvd-device $dvd dvd://$
title -o $dvd-$title.avi (... параметры конвертации ...)
# второй проход и прочая работа
done
done
Проще говоря конвертируем все все копии 4-ёх DVD-шек, в каждой тайтлы от 1 до 100. На дисках их было по 25-26, и оставшиеся 27-100 просто отваливались с ошибкой, не создавая выходного файла, что меня вполне устраивало. Каждый тайтл - один мультфильм.

суббота, 22 декабря 2007 г.

Плавленный сырок "Дружба" - закусывайте.

И наступило вчера.
И захотелось мне макарон с сыром.
И решил я - да будет так...

Легко сказать, да трудно сделать. Твёрдого сыра нету, нетути! Конечно, я был не во всех магазинах в которых бывали министры всяких экономик, заявляющие потом, что всё у нас есть. А может плавленный сырок "Дружба" был принят ими за нормальный сыр? Ха. Ха. Ха. Опомнитесь господа министры! "Дружба" скорее родственна пластилину, но уж никак не сыру. Вчера я этого к сожалению не знал...

Но я отвлёкся. Для макарон с сыром были куплены: макароны, тушёнка с мясом и "Дружба".

Поскольку плавленные сырки особенно сопротивляются истиранию на тёрке, было принято политическое решение - дружбу заморозить в морозилке.
Что и было незамедлительно сделано.

Что-бы приготовить вкусные макароны, нужно их сварить. В воде. Тушёнку обжарить до состояния, приятного глазу. Для меня это состояние: "да шож ты делаеш, гад, ты же её спалил!". После готовности воду из макаронов слить и смешать с обжаренной тушёнкой. Ну а теперь можно и задуматься, а солили ли мы воду? Самое время, между прочим - всё ещё можно в тихую исправить и не получить по голове от близких и родных.

Затем идём спать, так как есть на ночь - грех.

Утром отпиливаем от общего комка макарон кусочек (небольшой такой, чтоб поместился в микроволновку), разогреваем его и посыпаем тёртым сыром. Пармезан подойдёт. Если нет пармезана, то его НЕ заменит замороженный плавленный сырок. И это надо помнить. Желательно всю жизнь.

Вот такой несложный рецепт. Но вот о последних строчках я то и не знал! Поэтому достал кирпичик "Дружбы" из морозилки и начал натирать. Натирался он надо сказать лучше, чем не замороженный, но хуже чем сыр. И вот, когда он растаял на макаронах, я их и попробовал. Вкус, как у макарон с сливочным маслом. Противный кисловатый привкус. О внешнем виде лучше и не спрашивать, всё равно не расскажу.

Вывод значится такой: "Плавленный сырок "Дружба"! Не пейте чернила без закуски."

четверг, 29 ноября 2007 г.

Оруэлл отдыхает на скотном дворе

Уж не знаю, что там писало министерство правды году этак в 1984, но вот что пишут в Беларуси в 2007:

Депутатам 1000 долларов на жизнь не хватает

Даже депутаты начали жаловаться на высокие цены и заявляют, что им не хватает зарплаты, которая, кстати, превышает тысячу долларов в эквиваленте.
и

Министр экономики: обывателям кажется, что цены повышаются, но это не так

Я смотрю уже и не только обывателям это кажется, но и достаточно не бедным депутатам.
Может это министру экономики что-то кажется ?

пятница, 23 ноября 2007 г.

Баг с раскладками в Firefox исправлен!

Ура, ура, ура. Шестилетний баг с раскладками в Firefox исправлен.

Настораживает правда фраза
Патч написанный Олегом Крыловым получил одобрение разработчиков и был включен в код, а значит Firefox 3.0 выйдет уже без этой проблемы.
А 2.x как же ? Неужели они промаринуют баг до релиза 3.0 ?

Всё-таки я надеюсь на исправление в 2.0.0.10. Эта ошибка уже конкретно достала. Особенно невозможностью скопировать что-либо в буфер обмена.

Клац здесь, клац там. Аргх.... Раскладка то русская.

четверг, 22 ноября 2007 г.

Устанавливаем две лисы

Как уже всем наверное известно, недавно вышел FireFox 3.0b1. Многим наверное хотелось бы посмотреть, но останавливают опасения испортить существующий профайл или замусорить его. Сейчас я расскажу, как можно безопасно установить бету, и как её удалить (впрочем, зачем удалять ?).

Первым делом скачиваем инсталляцию. Например отсюда

Пока файл качается сохраним наш профайл Firefox 2.0:
Переходим в директорию
C:\Documents and Settings\<username>\Application Data\Mozilla\Firefox\Profiles

Директория, впрочем, может быть другой, в таком случае Вам нужно узнать где же находятся эти самые Application Data. Далее я буду указывать пути начиная с Application Data.

Итак, пеерходим в Application Data\Mozilla\Firefox\Profiles и видим там одну или несколько директорий с профайлами. Лучше всего весь Application Data\Mozilla\Firefox заархивировать и сохранить. Повреждений данных не предвидится, но есть одна тонкость о которой я скажу позже.

Теперь инсталируем Firefox 3.0b1. По умолчанию он ставится в отдельныую директорию и не помешает второй версии, но лучше это проверить, так как со временем это может изменится.
! Снимаем отметку «Запустить Firefox». Пока это нам не нужно.

Создаём директорию Application Data\Mozilla\Firefox3. Если вы не хотите переносить данные из Firefox 2.0, то переходим на следующий пункт, иначе копируем в неё содержимое вашего текущего профайла. Обычно она выглядит как Application Data\Mozilla\Firefox\Profiles\что-то-там.Default User

! Внутри Application Data\Mozilla\Firefox3 должны находится сами данные профайла, а не директория с профайлом. Проще говоря содержимое Application Data\Mozilla\Firefox3 и Application Data\Mozilla\Firefox\Profiles\что-то-там.Default User должны совпадать.

Примерно так:



Теперь необходимо подправить все ярлыки на Firefox3 следующим образом:
К Target "C:\Program Files\Mozilla Firefox 3 Beta 1\firefox.exe" добавим полный путь к новому профайлу:
"C:\Program Files\Mozilla Firefox 3 Beta 1\firefox.exe" –no-remote –profile "C:\Documents and Settings\<username>\Application Data\Mozilla\Firefox3"
Все кавычки нужны.

Параметр –no-remote позволит запускать разные версии лисы одновременно. Без него, лиса ищет в памяти уже загруженную копию (любой версии) и открывает ссылку в ней. Этот флаг отключает такую связь.

Кстати, просто создать ещё один профайл для Firefox 3 не получается. Каждый браузер при старте начинает почему-то проверять свои расширения, что раздражает.

Теперь можно запускать. Если ничего не напутано, то Firefox 3 будет использовать новый профайл, а Firefox 2 старый. Проверить это можно например добавив в закладки какую-либо ссылку, и перезапустив оба браузера.

Вот и всё. Теперь имеем 2 независимые лисы. Версия 2.0 продолжает работать как обычно, а 3.0 с параметром -no-remote будет иметь немного отличное от обычного поведение

Удаление. С удаление нужно быть осторожным. Отметку «Удалять личные данные» ставить не стоит – будут удалены профайлы лисы 2.0, а профайл от 3.0 останется нетронутым. Удалять профайл 3.0 (которым мы сами создали и поместили в несвойственное для него место) лучше руками.

пятница, 16 ноября 2007 г.

Некоторые 'проблемы' с prefwindow в XUL

Довелось мне вчера использовать контрол 'prefwindow'

Основное время использования (часа эдак 2) я пытался понять, почему ничего не работает и кто виноват.

Проблема была в том, что моё окно prefwindow появлялось в каком-то кастрированном виде. На диалоге была только одна закладка, в то время как их должно было быть 3. При этом сам FireFox открывал моё окно настроек (из окна управления расширениями) очень даже правильно.

Всё оказалось просто. Я открывал окно без указания опции toolbar, а сами ярлыки закладок были именно там. Поэтому не забываем этот факт и пишем так:

window.openDialog('chrome://ogameextender/content/options/options.xul', 'ogameoptions', 'chrome,modal,toolbar');

понедельник, 12 ноября 2007 г.

Расширяем гуглоблог

Редактор постов на blogger.com/blogspot.com не кажется мне слишком удачным.

Крошечное окошко для редактирования сообщений развивает у меня некое подобие клаустрофобии.

Но на помощь спешит FireFox с установленным расширением GreaseMonkey! Небольшой скрипт исправит положение и раздвинет окна широко, как только возможно.

Сам скрипт тут. Если кликнуть по ссылке при установленном GreaseMonkey, то последний предложит вам установить скрипт. Можете посмотреть исходный код и убедится, что форматировать винчестер я не собираюсь.


З.Ы. Высота окна редактирования пока не изменяется. Позже проработаю этот вопрос глубже, дальше, нежнее.

Update: все скрипты тут.

четверг, 8 ноября 2007 г.

Отдельные излишне возбуждаються...

Тут некоторые товарищи на форумах излишне любят восклицательные знаки. Сиё явление мы будем всячески осуждать и пресекать. Например с помощью этого скрипта к greasemonkey

Updated:
Я вспомнил, что у меня есть ftp доступ к хостингу на tut.by. Даю прямую ссылку на скрипт.
Если у вас установлен greasemonkey, то простого клика будет достаточно - firefox предложит установить его.

Updated2:
Скриптик оказался побит жизнью и движком блога, поэтому в нём не хватало пары кусков кода.
Полностью правильные скрипты тут

четверг, 1 ноября 2007 г.

OGame-Extender

Продолжаю тему игры OGame. Сама игра мне уже порядком поднадоела в виду того, что меня уже пару раз отпиздили (да так вот грубо). Но тем не менее, свой набор скриптов (который уже перерос в нормальное FireFox расширение) я продолжаю дорабатывать.

Сегодня вечером я завершил релиз 1.0. В данном релизе я сделал то чего мне давно хотелось - составил сводную табличку по ресурсам со всех планет.


На панели с ресурсами появилась надпись All resources. При наведенн на неё курсора всплывает табоичка, которую можно видеть на картинке. Колонка Big.Transports указывает примерное число больших транспортов для вывоза всех ресурсов.


Как это происходит. Как только пользователь загрузил страницу на которой присутствует информация о ресурсах, эти данные запоминаются и показываются в дальнейшем. А сам плагин не лазит по страницам в поисках данных, поэтому они быть устаревшими. Об этом говорит последняя колонка данных - время прошедшее с последнего обновления.


В планах составить такую-же табличку для обороны/флотов/уровней построек + считывание информации о флотах находящихся в полёте.

Расширение пока нигде не доступно, но по просьбе могу выслать на e-mail

воскресенье, 28 октября 2007 г.

Игла для распутывания узлов

Хочу рассказать об одном очень удобном инструменте рыболова, о котором однако не все знают. Инструмент этот - игла для распутывания лески. У меня игла встроена в экстрактор, хотя возможно существут такие иглы и отдельно.

Итак выглядит сей чудесный инструмент так:


Пользоватся им очень просто: вонзаем острый конец в узел и пытаемся раздвинуть узел. Так как игла представляет собой конус, то леска в узле раздвигается, после чего уже можно попробовать растянуть ослабленый узел пальцами.

Обычная иголка тут не подходит, так как она хоть и будет с лёгкостью проникать в узел, раздвинуть его будет очень сложно.

Игла эта становится особенно актуальной при ловле на очень тонкие лески - 0.08-0.1. Такие лески очень часто путаются при резких пустых подсечках. Зачастую развязать такой узел без иглы невозможно. Приходится ставить другую оснастку, или хуже того - изготавливать новую.

Вобщем, очень полезная штука - убедился на собственном опыте. Обычно за рыбалку у меня происходит 2-3 серьёзных запутывания. Ну и куча мелких, которые, впрочем, легко распутываются руками.

Превед медвед !

Contex, сцуко, жжот.

Пару дней назад в 12 штучной упаковке презервативов Contex Light было обнаружено следующее чудо:


Поводов для волнения два.
Во первых это был тринадцатый (!) презерватив из 12.
А во вторых, не увижу ли я медведа, когда буду его использовать по назначению ?

Подтвержнеие участия в blogowar.ru

Пробую играть в Blogowar.ru. А пост этот извращённой формы подтверждение.

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

Jabber+Gecko

Появилась странная идея. Записываю, что бs не забыть обдумать её.

Итак, идея в том, что бы написать Jabber клиент на основе XULRunner-а (т.е. на ядре Gecko)

Белорусские дороги

Всё-таки отсталая страна Беларусь.

Кто сказал, что у России 2 беды - дураки и дороги ? Неправда ваша !
Это у Беларуси 2 беды - ДУРАК и дороги.

Ну, насчёт дурака вы и сами наверное всё знаете, а вот насчёт дорог можно посмотреть тут.
И сравнить российские дороги и белорусские.

Оказывается в беларуси 3 дороги и МКАД....

FireFox и OGame - друзья навек

Последнее время играю в одну незамысловатую онлайн игру. Называется ogame. Игра и вправду незамысловатая, особенно в части интерфейса. Интерфейс неудобен и крив. Но на помощь к нам спешит FireFox и один из его плагинов - Greasemonkey.

Плагин Greasemonkey позволяет добавлять на любую страницу свой JavaScript и исполнить его. А так как DHTML это сила, то становится возможным перекроить страницу как только угодно.

Этим я и занялся. Плюсы занятия очевидны - я получаю более удобный интерфейс, и знания в области JavaScript и HTML DOM.

Итак, рассмотрим одну из страниц игры - "Технологии". На ней расположена таблица, в которой отображено какие технологии нужно изучить и на каком уровне для возможности что-то построить/изучить.
Имеем (142 k):

Не очень то удобно... Например, если есть выбор что изучить - Плазменную технологию, или Лазерную технологию, что выбрать ? Нужно выбрать ту, что даёт более желаемый результат. Но, что даст Плазменная технология просто так не узнать. Нужно найти все вхождения её во втором столбце. Что нудно и вообще не интересно.

Значит нужен 3-ий столбец, показывающий что даёт данная технология/постройка. Берём в руки DOM и точим напильником (то есть JavaScript-ом).
Получаем (130k):


Что ещё мы тут имеем ? А вот что:
  • Таблица стала на всю ширину экрана. От уеньких табличек у меня развивается клаустрофобия.
  • Были зверски убиты дополнительные возможности, связанные с реальными деньгами. Я не платил и не собираюсь платить за какого-то там командира. И знать количество Тёмной материи (денег проще говоря) мне незачем.
  • В качестве бенефита я решил слегка изучить Graphviz - комплекс программ, позволяющий генерировать различные графы. И после непродолжительного мучения получен следующий граф (33k):


Пока этот граф нужно генерить самому на основе описания. Описание же графа генерится JavaScript-ом, и помещается под таблицей технологий (на картинках не видно). Что конечно не удобно и вообще...

З.Ы. Скрипт тут

суббота, 29 сентября 2007 г.

Гастрономия - мать всех наук

Сегодня я расскажу о странном способе приготовления куриных лапок.
Первым делом ставим на огонь сковороду, и поливаем её маслом. Масла нужно не много.
Затем кладём на сковороду маринованные лапки курицы. И заливаем 1-2 стаканами воды.
(Этот шаг я бы никогда не додумался совершить, так как поджаристая лапки и вода в сковороде у меня никак не ассоциируются.)

(Нет, такой зелёной курица быть не обязана)

Затем накрываем крышкой, огонь средний и ждём пока не выкипит вода, после чего под присмотром дожариваем до необходимой румяности.

пятница, 28 сентября 2007 г.

RAW формат цифровых фотографий

Неожиданно нашёл в своём фотике возможность сохранения в RAW формат. Провёл небольшой эксперимент по теме стравнения качества. Совсем простой. Сфотографировал местный пейзаж, открывающийся из окна офиса. При этом фотик сделал сразу 2 фотографии - JPG и RAW. Настройки JPG - наилучшее качество.

Далее достал из RAW данных 16-битный TIFF и открыл его в GIMP. Но ! GIMP Не поддерживает 16-битные картинки, поэтому картинка была порезана при открытии до 8-и бит !

Затем я выделил примерно одинаковый кусок неба на обоих фотографиях и инструментом Levels сжал диапазон цветов, что-бы проявить небо. После этого оба участка были немного размыты.

JPG

RAW


На JPG явно заметно покраснение неба, тогда как на RAW - ничего подобного. Опять таки, повторюсь, что при этом GIMP ещё и немного порезал качество RAW. В Photoshop всё будет ещё лучше. Насколько - посмотрим.

вторник, 25 сентября 2007 г.

Некоторые теоретические философствования с практическим уклоном

Сегодня у нас пойдёт речь об одной глубоко философской пословице, а именно "Нельзя приготовить омлет не разбив яиц". А поскольку пост носит сильный практический уклон, то этим мы и будем заниматся - разбивать яйца.

Что важно для рыбака ? Разумеется словить рыбу. Но ещё важнее эту рыбу уметь использовать. Вылов рыбы с последующим её неиспользованием является глубоко порочным явлением, которое мы будем пресекать всеми силами. Итак, рыбу разумеется можно приготовить - пожарить например или посушить. Но для этого её нужно предварительно почистить и выпотрошить. Желательно это действо пропустить и доверить жене/подруге: и совесть чиста и сон крепче. Но, если она упрямо отказывается чистить рыбу (привет, Алёна :) ), то как ни печально, придётся это сделать самим.

Итак, тема сегодняшеного занятия: потрошение бедной, несчасной рыбы, с грустью смотрящей вам в глаза...


Первым делом нужно собрать всё мужество в кулак. Тут торопиться не надо.

Затем в правую руку нужно взять нож, а в левую - рыбу. Глубоко вздохнув делаем надрез кожи брюшка от задницы до головы, или наоборот. При этом необходимо быть аккуратным и не разрезать желчный пузырь, иначе внутренная поверхность станет горькой. Если в этот момент рыба начинает трепыхаться, значит она чем-то не довольна и её нужно оставить полежать в тёмном прохладном месте часик или два.


Потом, как это не отвратительно, нужно засунуть указательный палец прямо в начало разреза со стороны хвоста (в жопу по простому). И... выдавить все внутренности наружу проталкивая палец вдоль спины. (Отвратительно....).


Наконец нужно взять нож и, прижав внутренности к разделочной доске (но не отрезая их !), вытянуть их вплоть до головы.


Готово. Можно выдохнуть и бросить рыбку в заранее подготовленную ёмкость!


Если вас всё ещё не мутит, то остались сущие мелочи - промыть рыбу от остатков крови и внутренностей и при необходимости удалить голову. Кровь с позвоночника нужно удалить как можно тщательнее. При засушивании голову лучше не удалять, так как за неё удобно вешать рыбу. При этом некоторые советуют удалить жабры. Но мы не будем этого делать - мы же не изверги какие. (В действительности автор просто этого не умеет...)

Ну а с чисткой чешуи справится даже ребёнок.

Приятного времяпрепровождения !

понедельник, 24 сентября 2007 г.

Выходные 2

Как обычно по выходным я зависаю на Комсомольском озере.

В субботу зависание было не очень успешным, или вернее сказать очень неуспешным. Были словлены 3 рыбы, 2 из которых были взяты домой и пожарены. Фото этого убогого зрелища я приводить конечно не буду.

Зато в воскресенье было выловлено несколько рыб хорошего размера. И вот их фото (вместе с вездесущей зажигалкой... Ума не приложу, как она всегда попадает в кадр)

четверг, 20 сентября 2007 г.

Сворачивающийся текст в блоге

Как сделать сворачивающийся текст ? Очень просто.
Нужно вставить следующий код в режиме редактирования Html:
<div style="border: solid 1px ;" text="First line
Second line
Third line" onclick="javascript:if(this.innerHTML == '@') this.innerHTML = this.attributes['text'].value; else this.innerHTML = '@'">@</div>
В результате получается вот что (кликабельно !)
@


При этом нужно следить за строками. Движок любит их схлопнуть в одну.

вторник, 18 сентября 2007 г.

Проходной выключатель

Проходной выключатель это то о чём я всегда мечтал, но до сих пор не знал что это просто и доступно. Принцип простой - 2 выключателя, переключение любого из них приводит к переключению света. В своей квартире (если таковая будет) обязательно сделаю, что-бы свет в спальне можно было включить/выключить и лёжа на кровати и при входе в комнату.
Дело за малым - осталось приобрести квартиру.

понедельник, 17 сентября 2007 г.

Выходные

На выходных снова ходил на рыбалку.
В субботу был на Комсомольском озере, на месте разрекламированном местным аборигеном как "плотвичное" место. В итоге одну или две плотвички я там словил, а остальное опять уклейка... В этот раз был довольно неприятный ветер и волны, которые осложняли ловлю. Пришлось поменять свой 1 граммовый поплавок на 2-х граммовый. Вроде помогло и было выловлено 73 рыбы и один подлещик невероятных (для меня) размеров.


Ещё в субботу вечером съездил на Дрозды с братом. Чудом выловил окуня (мой первый окунь) с плотвичкой. Брат на спининг вытащил одного окуня.

В воскресенье поехали на какую-то речушку рядом с минским морем. Опять ветер, волны, холодно и не клюёт. Более-менее ловится начало только часам к 11 и только на мой мах. На спининг брата крокодил не ловился. Мной был выловлен первый ёрш.


Вся рыба засолена и ожидает пива...

четверг, 13 сентября 2007 г.

Вчера

Сходил вчера на рыбалку сразу после работы. Всё-таки маловато времени... Приехал на место в 19.00 а уже в 20.20 начал сворачиватся, так как уже ничего не было видно. Однако же удалось выловить 21 рыбу. Опять таки уклейки с примесью плотвы.
Местный абориген подсказал места получше - на выходных буду пробовать занять их.

понедельник, 10 сентября 2007 г.

Рыбалка

Состоялась моя первая рыбалка в Минске.
Была куплена маховая удочка 6-и метров, несколько поплавков, катушек лески и куча крючков. До 2-х часов ночи перед рыбалкой я огружал поплавки, вязал поводки, отмерял леску и клеил коннектор. Через четыре часа последовал бодрый подъём, вытаскивание опарыша и мотыля из холодильника и долгие сборы. Как всегда все вещи чудесным образом оказались в разных углах и никак не хотели собираться в рюкзак.

К 8-и часам был на Комсомольском озере. Приготовил подкормку и закинул удочку. За 15 минут выловил 2 уклейки. Затем подсыпал размокшей подкормки и тут попёрло... Самым большим тормозом в процессе ловли был я. Пока сниму рыбу с крючка, пока одену мотыля на мелкий крючок... Рыба же не тормозила - 10-15 секунд и можно подсекать.

К 12 клевать практически перестало и я засобирался домой.

Итого было выловлено 79 рып. В основном уклейки, но встретилось и пару плотвиц.