Давненько я хотел как-то активизировать свои обои на рабочем столе. Один из способов - это мотиватор, который блюрит картинку в зависимости от дальности цели (чем ближе цель - тем меньше блюр). Для этих
целей использовался imagemagick и habak. Первый - тулбокс для работы с картинками, имеющий мощное API и не менее мощный набор shell-утилит. Второе - хрень, которая умеет ставить картинку на X root window
(читай на рабочий стол) и писать на ней всякий текст.
Была также идея насчет мозаики вебкамер из разных городов там же... Однако сцуко mplayer как и vlc не захотели грабить mjpeg поток, который используется например на харьковских вебках укртелекома :(.
Сейчас же я реализовал привязку картинок к положению светила нашего небесного для того, что бы меньше отрываться от окружающего реального мира :D Для начала я начал гуглить утилиту для расчета высоты солнца, времени заката и восхода в зависимости от географического положения. Гуглеж, как ни странно, ни к чему не привел. :(. Посему нашлась
недопиленная программулина. Я её допилил до работы с getopt (правда не очень все там красиво и правильно в плане дуракоустойчивости, но оно работает).
Программулина сия компилируется gcc с флагом -lm (линковать с математикой :)). Так же я её пропатчил на предмет расчета текущей высоты солнца над горизонтом. Для этого использовал мысль, что солнце по небосводу
(видимому и невидимому, т. е. ночью) движется по синусоиде.
Вывод этой программы втупую парсится в bash-скрипте, который позволяет:
менять обоину днем и ночью
Яркость обоины днем зависит от высоты солнца над горизонтом
В сумеречное время картинка ПЛАВНО (с помощью alpha-канала) перетекает из дневной в ночную и наоборот
суется в cron и работает раз в минуту :)
позжее будет tar.bz2
нас совершенно не прет... Погуглив на этот счет (искал какой-то стандартный способ форматирования) нашел всякую хиромантию типа нагугленное.
Подумав о немного другой задаче, связанной с той же проблемой, (мне нужна была сериализация данных в базу) я загуглил JSON под python... и нашел что мне надо:
Во истину он крут :). При условии возможности кормить ему команды из параметров шелла - получается такая себе доунлоадилка (а-ля wget). Хотя wget тоже это умеет :)
Сегодня, при апдейте на кейворженные иксы, месу и дрова видяхи (кагбэ задолбали рывки в 3d) я обнаружил, что конфиг переключалки раскладки в xorg.conf ВНЕЗАПНО поломался. Гугл вывел на аналоги с помощью setxkbmap, чем я и воспользовался.
Так же меня давно достало тянуться к Esc в vim, и я решил координально соптимизировать кнопы на клаве:
Сие означает, что теперь для переключение раскладки используется абсолютно незаюзанная кнопка Menu (у меня на буке находится возле стрелок), а капс с ескейпом поменяны местами. Т. е. в vim теперь не придется постоянно носится в верхний угол клавы :). Ко всему прочему, на тех терминалах, для которых в свое время разрабатывался VI, приблизительно так и было. Ссылка в тему
Ко всему прочему станут доступны разнообразные хоткеи, использующие ctrl+shift. (В gimp, например)
Давненько уже юзаю proftpd на серваке. Кузявая, кастомабельная и удобная штука. Сегодня произошел апдейт с 1.3.2d в 1.3.3a на серваке (гента харденовая). Все хорошо, но вдруг, ВНЕЗАПНО, перестал работать
anonymous login. Меня это ни-разу не возбудило, начал ковыряться, в гугле - хуй. Слава товарисчу вуглускру, у него все завелось и до апдейта, и после. Оказалось что acl работает не совсем так, как нужно.
Посему acl был выпилен из USE и все завелось.
Ко всему прочему, emerge Не захотел собирать proftpd при запущенном proftpd, и попросил его стопнуть!. Вот такая фигня.
Кстати, блог уже гуглиться по запросу asmer blog, asmer vim и т. п. :). Ушел гулять :)
Собственно сабж. Остальное - потом :). Скоро фото повыкладываю :). Видели Шипот, г. Стой, озеро Синевир и хуеву гору охуительной природы :). Буду тут висеть пока смогу :)
Согласно статистике сайта http://www.netindex.com/, Харьков занимает 12 место по средней скорости даунлоада и 15 место по скорости аплоада в МИРЕ. Данные со спидтеста. Я знал, что этот день придет, когда интернет будет крут и дешев :). Осталось дождаться такого же в мобильной сфере.
Давненько я хотел сделать из ViM полноценную IDE. Нагуглив пару вагонов конфигов (и плагинов), я сделал из ViM следующее:
Проектный файловый менеджер. Был Project, потом заюзал NERDTree. NERDTree круче чем яйца. всем советую. Просто дерево каталогов слева, как в любом другом IDE
Работа со всяческими разными системами контроля версий. VCS. Просто команды, которые коммитят файл(ы) в svn, с расстоновкой комментов, просмотром логов, просмотров DIFF между файлом и ревизией в SVN и так далее. Кстати, для тех, кому хочется почувствовать разницу в ViM, попробуйте vimdiff для двух разных файлов со схожим содержимым. Будете приятно удивлены. (Hint: dp - что бы засунуть в другое окно, do - что бы оттуда взять)
Любому человеку, который работает с файлами, в которых могут быть комментарии, нужен толковый комментатор. Юзаю NERDCommenter. Офигенская вещь, за исключением пары недостатков.
Всем, кто работает с HTML, впадлу писать закрывающие тэги. Пускай это делает плагин. Гуглите closetag.vim. Ctrl+\ и никаких проблем :)
Всякий программер постоянно работает с парными хреновинами, типа скобок, логических скобок блоков кода (будь то if, while или функция), и т. п. ViM содержит в себе изначальную фичу для работы с такими конструкциями - %. Однако искаропки % понимает далеко не все, что хотелось бы. С matchit ViM начинает понимать > и <, а также парные тэги HTML. Очень полезно при верстке и т. д.
Пробовал даже дебаггер (питоновский плагин для ViM + xdebug в апаче). Неудобно, но, в принципе работает. Для веба, в любом случае, дебаггером мало кто пользуется.
В-общем, можно сказать что джентльменский набор у меня был. Но не хватало умного автодополнения для ViM. Словарное было.
Теоретическое отступление
Как это работает. Работа с автодополнением в ViM происходит следующим, unixwayным образом: специальная тулзня генерит специальный файл (файл тэгов), в котором хранится информация о разнообразных идентификаторах в коде (переменные, классы, методы, функции и т. п.). ViM же с помощью специального параметра конфигурации использует этот файл для автодополнения в редакторе. UNIXWAY это круто, но.... ...Но из такого подхода сейчас выплывают следующая проблема - отсутствие обновления базы тэгов на лету. Если для компилируемых языков обновление базы органично вписывается в makefile компиляции, то для веба это все как-то нетривиально.
Решаем траблу.
Логично в такой ситуации сделать обновление базы тэгов по сохранению файла. Для этого в ViM есть соответствующий хук:
1 au BufWritePost * silent!~/scripts/tagsUpdate <afile>
Засовываем это в конфиг (~/.vimrc), или же в ~/.vim/ftplugin/php.vim (если используется filetype-plugin, который позволяет использовать разные конфиги для разных типов файлов).
Суть хука простая - по сохранению файла вызвать шелл-скрипт, который будет обновлять базу тэгов, и передать ему имя файла. База тэгов может быть одна на целое дерево директорий (обычно одна на проект).
ViM же умеет искать эту базу вверх по дереву каталогов от текущего файла. Таким образом пользователь может, с одной стороны не разводить бардак из десятков и сотен tags-файлов, с другой - добится разделения разных несвязанных проектов.
Ниже приведены 3 строки, которые нужны для работы автодополнения:
1 set omnifunc=phpcomplete#CompletePHP
2 au BufWritePost * silent!~/scripts/tagsUpdate <afile>
3 set tags=./tags;
ViM умеет подхватывать обновления в базе тэгов на лету. Т. е., если вы в другом редакторе отредактировали другой файл проекта и перезапустили ctags (тул для сбора базы тэгов), ViM поймет это БЕЗО всяких шевелений с вашей стороны. Ему достаточно, что он нашел файл с тэгами, а обновления он в нем находит САМ :).
Далее, собственно скрипт, который выполняется при сохранении файла в ViM:
1 #!/bin/bash
2 CURPATH=`pwd`
3 TAGS="tags"
4
5 dir=${1%/*}
6 cd $dir
7
8 while [ 1 ];do
9 if [-f"$TAGS"];
10 then
11 pwd
12 echo'tags found'
13 #FILES=`find -newer "$TAGS" | xargs`
14 ctags-a --fields=iafksS --extra=+q -f"$TAGS""${CURPATH}/${1}"
15 break
16 fi
17 if [ `pwd` == "/" ];
18 then
19 echo'tags not found. Exit';
20 break
21 fi
22 cd ..
23 done
24
25 cd ${CURPATH}
Работает это скрипт следующим образом:
Из имени файла, который только что сохранен, извлекается путь, и происходит переход в эту папку. Это строки 5 и 6
Далее бесконечный цикл, в котором происходит путешествие из папки с файлом вверх и поиск файла, заданного в переменной $TAGS.
При нахождении файла $TAGS есть два варианта обновления. Можно обновить только тот файл, который только что был сохранен в ViM. А можно найти все файлы, которые новее $TAGS (были сохранены позже) и обновить их все. Вариант с поиском новых сейчас закомментирован для ускорения сохранения.
Команда ctags выполняет добавление новой информации из нового файла в старый файл $TAGS. Сие приводит к постепенному засирательству файла $TAGS, поэтому я думаю еще засунуть ctags с нуля (не аддиктивный/инкрементный) в крон.
Рецепт
Установить всё что надо. Linux, ViM, ctags.
Засунуть в нужный конфиг ViM три строки - имя файла с тэгом и хук на скрипт, а также выбор режим автодополнения
Засунуть скрипт в нужное место. Удостоверится, что путь к нему конфиге ViM верный. Или что скрипт лежит в верном месте.
Создать файл tags. Приходим в папку с проектом, и запускаем ctags БЕЗ -a (без добавления) и с -R (рекурсия). -f tags для стандартного имени tags писать не обязательно.
пользоваться
Ну написал, ну написал.... А ПОЛЬЗОВАТЬСЯ-ТО КАК?
Как-как. С удовольствием :-D. Первое: вызов автодополнения происходит по ctrl-x ctrl-o. Не нравится - перебиндите на шо-нить иное. Это вам не MSVS. У меня - ctrl-f. И еще, хотите увидеть объявление - ctrl-w ctrl-]. И сразу откроется то, на чем сейчас курсор.
и, наконец, ложка говна дегтя
Я пока не знаю, как добится хотя бы типов параметров функции. Они попадаются в тэгах, которые есть в ViM для стандартных функций PHP (мне вот интересно, как их выпилить ]:->), но не работают с моим кодом :(.
Отсутствие поддержки разнообразных documentorов. Для меня не проблема, так как всегда могу быстро открыть исходник функции или еще чего.
Как в принципе знают все мои товарисчи ITшнеги, я любитель unixway. Т. е. я люблю всевозможные варианты использования разнообразных утилит, которые предоставляет стандартное UNIX-окружение.
Достаточно давно я задумался о том, что было бы неплохо скачивать новую серию Хауса не нажимая f5 на лостфильме каждую минуту в ожидании, а возложить это на сервер с торрент-клиентом. Итак...
Как это сделать?
Нам надо узнать о том, что новая серия вышла
Для решения сией проблемы есть два пути:
Парсинг html-кода сайта lostfilm.tv.
Парсинг rss.
RSS парсить намного проще, поэтому был выбран именно этот путь.
Нам надо скачать и передать торрент-клиенту торрент-файл.
rTorrent умеет сканировать папку, ожидая появления в ней торрент-файла, и после появления файла в этой папке тут же начинать скачку. Т. е. достаточно сохранить файл в папке - и торрент тут же начнет качаться.
Что же получилось?
#!/bin/bash
P=/root/autotorrent #рабочая папка скрипта
PT=/srv/media/download/torrents #папка с торрент-файлами для rtorrent
CURP=`pwd` #сохраняем текущую папку
cd $P #переходим в рабочую папку
wget http://lostfilm.tv/rssdd.xml -O rss.xml #скачиваем rss-ленту.
LINK=`grep /House. rss.xml` #выгрепливаем ссылку на торрент-файл
LINK=`echo $LINK | replace '<link>' '' '</link>' ''`
cd $PT #заходим в папку, сканируемую rtorrent
wget -N --load-cookies $P/cookies.txt $LINK #скачиваем торрент-файл
ls
cd $CURP #возвращаемся в исходный каталог
Комментарии и пояснения
Как видно, скрипт получился элементарный. Главная загвоздка была в том, что для скачки торрент-файла с lostfilm.tv надо быть залогиненым на сайте. Для этого надо дать wget кукисы из залогиненной сессии в браузере. wget использует cookies.txt в формате netscape navigator. Для извлечения кукисов в таком формате из православного FF3 есть правильный плагин.
В рабочей папке скрипта сохраняется rss.xml с сайта и файл с куками. Во имя безопасности и выпилил всё, что не касается lostfilm.tv из cookies.txt.
Скрипт не проверяет, скачан ли уже торрент-файл. Но это проверяет rtorrent.
TODO
Проверка, скачан ли файл УЖЕ, и не качать его, если он УЖЕ скачан (я о .torrent)
мыльные оповещения (как следствие предыдущего пункта)
Вот и всё. Enjoy!
PS: ну, и конечно же, не забудьте добавить сие в крон.
[17:53:15] <413574747@icq.asmer.org.ua> Привет, как поживаешь?
[17:53:29] <asmer> ты хто
[17:53:31] <asmer> бот?
[17:53:33] <413574747@icq.asmer.org.ua> вот тебе маленький сюрприз от меня. кинь смску на номер 3381 с текстом 571151 и посмотри что придет. не бойся это стоит как обычная смс, это реально того стоит, надеюсь тебе понравится :)
[17:53:39] <413574747@icq.asmer.org.ua> Интересную темку хочешь посмотреть? :)
[17:53:43] <asmer> пошел нахуй
[17:53:45] <413574747@icq.asmer.org.ua> Ладно, давай я отключаюсь, позже спишемся :)
Уже полтора месяца у нас тут есть второй канал малопонятной конторы maxhet. Да, сайт у них именно maxhet.info, нифига не maxnet. Мне собсно по барабану, благо на прием канал бывает до 50 мегабит, а отдача
до 6. (5mb/0.5mb). Так как уже есть велтон, а к локальным городским сетям у меня доверия нет, я решил не отказываться от нашего текущего (и очень стабильного, как в плане скорости, так и в плане наличия
интернета как такового) Велтона (1.6 мегабита вход и около 0.8 выход).
Как выяснилось, настройка multipath, т. е. многоканального инета в linux - штука простая. Конечно сделать так, что бы каждый пакет мог ходить разными путями в интернет с одного и того же IP через два канала
невозможно без AS (автономной системы) и всякий умных роутинговых вещей типа BGP, OSPF и т. п.
Итак, используем iproute2 для организации multipath-балансированного доступа в тырнет:
первым делом придумываем пару таблиц роутинга и суем их в /etc/iproute2/rt_tables:
...
250 velton
249 maxhet
...
это типа номер таблицы и её имя. Для удобства.
Далее, суем в каждую из них следующие заклинания:
ip route add $LOCAL_NET dev $LOCAL_IF table $VELTON_TABLE
ip route add $VELTON_NET dev $VELTON_IF src $VELTON_IP table $VELTON_TABLE
ip route add default via $VELTON_GW table $VELTON_TABLE
где $LOCAL_NET - локалка (в моем случае 192.168.1.0/24)
$LOCAL_IF - локальный интерфейс (в моем случае eth0)
$VELTON_TABLE - таблица из /etc/iproute2/rt_tables (в моем случае velton и maxhet)
Вообще первое правило нужно для того, что бы роутились внешние айпишники сервака во внутреннюю сеть. (Я словил немалый butthurt, когда пытался достучаться до своих девелопментских сайтов, которые прекрасно работали
снаружи). Без этой фигни нихрена не будет работать ping velton.asmer.org.ua изнутри сети.
Еще два правила собственно устанавливают велтоновскую сеть (так как ppp, я использовал IP адрес пира, т. е. шлюза, с маской 32), что в неё надо ходить с велтоновского IP адреса и что правило надо засунуть
в велтоновскую таблицу роутинга. Также там указан дефолтный шлюз для велтоновской таблицы.
Те же правила устанавливаются и для максхетовской таблицы.
После добавляем правила, которые намекают на то, что для пакетов уходящих в сети провайдеров, надо использовать правильные интерфейсы и IP:
ip route add $VELTON_NET dev $VELTON_IF src $VELTON_IP
ip route add $MAXHET_NET dev $MAXHET_IF src $MAXHET_IP
Эти два правила обеспечивают, что ответ на входящий трафик будет отправлен через тот же интерфейс:
ip rule add from $VELTON_IP table $VELTON_TABLE
ip rule add from $MAXHET_IP table $MAXHET_TABLE
Далее идет самое интересное: балансировка нагрузки:
ip route add default scope global nexthop via $VELTON_GW dev $VELTON_IF weight 1 nexthop via $MAXHET_GW dev $MAXHET_IF weight $WEIGHT
Здесь мы ставим приоритет каналов. Приоритет не по траффику, а, скорее по соединениям. Т. е. жирное соединение на youtube будет равнозначно какому-нибудь краткому соединению на получение страницы с гугла.
Однако большое количество соединений нивелирует этот эффект. Ко всему прочему, соединения кэшируются, т. е. если Юречное ходил на youtube.com через велтон, то я через несколько минут тоже пойду туда через
велтон. Сие не есть круто, но пока особенных проблем с этим не замечено. В моем случае $WEIGHT = 10, так как в среднем maxhet работает раз в десять быстрее ADSL с Велтона.
UDP
Некоторые товарищи неплохо знают, что я люблю поиграть в urbanterror. Это замечательный `клон КСа` на движке от q3 (координально переработанном). У maxhet'а, кроме всего прочего, есть очень неплохое качество
- низкая латентность. Если на velton в лучшем случае пинг в игре около 70-120, то в локалке пинг около 30-60. Поэтому мне было интересно, как будет работать многолучевой роутинг в этом аспекте. Поигравшись
немного, я заметил, что пинг действительно стал намного лучше, НО, иногда меня перекидывало на другой канал, и я не мог двигаться в игре. Однако вокруг меня бегали другие игроки. Погуглив, я нашел решение:
iptables -A PREROUTING -i eth0 -t mangle -p udp -s 192.168.1.0/24 -j MARK --set-mark 1
ip rule add from all fwmark 1 table maxhet
Суть решения проста - существует связь между iproute2 и файрволлом iptables. iptables может разрешать, запрещать, натить и делать хрен знает что еще с траффиком, причем можно выбирать отдельные протоколы, порты
и прочие условия. Так же iptables может `помечать` пакеты определенным образом. И эту метку может прочитать и учитывать при роутинге iproute2. Итак, первое заклинание `iptables...` говорит, что все пакеты
из локальной сети протокола udp надо пометить меткой 1. Может быть еще метка 2. Или 3. И так далее (какой лимит, я хз, но уж точно не меньше 256, а скорее всего 65535..2**32). Тем временем второе заклинание
указывает iproute, что все пакеты, помеченные меткой 1 должны отправляться в таблицу maxhet. Это реально помогло :)
НАРУЖА
А как теперь быть с тем, что приходит снаружи на мой доморощенный хостенк?
Да очень просто. Берем ДНС и разворачиваем его на два IP:
...
palladium IN A 85.90.221.60
IN A 109.86.156.250
...
Был также гуглеж на тему весов в выдаче IP в ДНС, но я толку так и не добился. Вроде как добавление строк `IN A 109.86.156.250` должно добавить веса maxhetовскуму айпишнику, но внешнее тестирование этого не показало.
Так же был поднят лимит скорости для внешних айпишников в фтпсервере (proftpd), причесан торрент-клиент (rtorrent таки перестал работать под рутом O_o и обзавелся uTorrent-образной вебмордой), и установлен
сервак UrbanTerror (как оказалось очень просто и быстро).
Когда-то давно (лет 6 назад), я с помощью Погорелова надыбал карты генштаба. Их было два CD. К ним был корявый просмотр с помощью общей карты Украины, поделенной на части. Года три назад я взял это дело, и
немного причесал. Теперь есть минимап, на которой можно кликать в регион Украины, зум, и возможность ходить по картам в разные стороны.
По нынешним временам это всё не очень-то и актуально (благо яндексы и гуглезы решать практически все проблемы веб-картографии), но, тем не менее, сегодня я выложил это на всеобщее оборзение: тыц
PS: на самом деле я на ноуте место на винте чистил :-D
PPS: кстати, есть еще карта кавказа: тыц
PPPS: за скорость не обессудьте, никак руки не дойдут до разруливания двух каналов в инет.
Многие полезные вещи есть в vim. Однако, в периодических стычках на эту тему со своими знакомыми программистами, многие из них доказывали мне, что большинство этих
полезных вещей есть и в других редакторах кода.
Сейчас я хочу показать некоторые главные фишки vim, которые являются уникальными. Сегодня мы рассмотрим `основной` режим этого великого программатора текстов.
Ибо редактором его назвать сложно.
Для начала, советую распечатать и повесить на стену (как я в свое время) следующую шпаргалку):
В основном режиме каждая клавиша на клавиатуре обладает определенной функцией. Многие из этих функций могут комбинироваться. На этом щите зеленым помечены клавиши, которые предназначены для перемещения по
тексту(слово вперед, слово назад, поиск символа в строке и т. п.). Это во много перекликается со структурой текста программ или языков разметки, так как в них, как правило, специальные символы отделяют одни структурные
элементы от других. Например:
для текста `<html>` комбинация `f>` позволит сразу же `перепрыгнуть` на конец тэга html, или же
для `foreach ($foo as $bar)` 2f$ сразу же перейдет к началу переменной $bar. 2 в данном случае обозначает повтор действия f$, то есть переход не к $foo, а $bar
(ко 2-му вхождению символа $ в строке)
желтые - `прямые` действия, т. е. операции над текстом. Например вставка из буфера, копирование строки, ввод текста в конце строки и т. п. Например:
для текста `<html>` клавиша `S` сотрет всю строку, установит курсор на начало тэга html (сохраняя сдвиг в коде) и переведет редактор в режим ввода текста.
для текста `foreach ($foo as $bar)` `D` удалит все символы от курсора и до конца строки
оранжевые - действия, которые требуют дополнительного указания движения после символа действия. Например, замена, удаление или копирование в строке. Например:
для текста `<html>` f<lct>div поменяют тэг html на div не трогая угловые скобки. Разберем `программу` замены:
f< - перемещает на символ <
l - аналог стрелки вправо, однако не требует перемещения рук со символов клавиатуры (т. е. руки могут оставаться в месте, положенном для слепого набора - asdf и jkl;).
После этого курсор находится на первом символе тэга (`h` в нашем случае)
ct> - собственно `оранжевая` команда. Т. е. `c` обозначает изменение текста (change), а вот что конкретно ты хочешь изменить указывается дальнейшей операцией
перемещения. `t>` означает `до >` (till), и, следовательно, редактор удаляет весь текст от текущей позиции до конца тэга, после чего происходит
переход в режим ввода.
div - в режиме ввода происходит обычный ввод, и мы вводим слово div в тэге.
Таким образом можно менять практически любые части текста в строке. Например, для PHP, быстрое добавление ключа в foreach:
foreach ($foo as $bar) - `2f$i$key => <ESC>`
2f$ переходим на $bar
i - переходим в режим ввода перед текущим символом
`$key => ` - ввод текста, который нам нужен.
<ESC> - нажимаем кнопу на клаве для того, что бы вернуться в нормальный режим из режима ввода текста
Начну я с того, что сегодня на Уркаине выборы. Второй тур. Янык VS Юля. Ну это и так все знают, и, в принципе, это не важно.
Вечером, общаясь в жабере с Котячкой и Лежей я слышал от них что по телеку уже начался срачь, что Юля уже говорит что свое поражение она так просто не оставит, и т. п... А я был голоден, и мне хотелось приготовить чего-нить поесть...
Ну и поставил я себе статут `В ПИЗДУ ВЫБОРЫ!!! ПОШЕЛ ГОТОВИТЬ УЖИН!!!!`... Через несколько минут, один из моих заказчиков мне написал следующее:
...ненужная хуита скипнута...
[20:29:47] <asmer> Hello Miles. Of course, this is possible.
[21:02:50] *** milesbaustin@gmail.com is Away
[21:06:13] *** milesbaustin@gmail.com is Online
[21:57:22] *** milesbaustin@gmail.com is Away
[21:57:35] *** milesbaustin@gmail.com is Online
[22:05:35] <milesbaustin@gmail.com> Your text is in Russian/ I can't read Russian
[22:05:47] <milesbaustin@gmail.com> /Ukrainian
[22:13:14] <asmer> hm
[22:13:15] <asmer> where?
[22:13:24] <asmer> may be some codepage error
[22:13:29] <milesbaustin@gmail.com> В ПИЗДУ ВЫБОРЫ!!!! ПОШЕЛ ГОТОВИТЬ УЖИН!!!!
[22:13:40] <milesbaustin@gmail.com> :)
[22:15:06] <asmer> this is my status. That means now time for dinner :)
[22:16:29] <asmer> and, also, today is elections for president in Ukraine... and this subject is annoying when everyone talks about it
[22:16:39] <asmer> this too described in my status
[22:18:59] *** milesbaustin@gmail.com is Away
[22:51:17] *** milesbaustin@gmail.com is Online
[22:53:06] <milesbaustin@gmail.com> Я понимаю
[22:54:32] <asmer> :). I'm understand this well :))
[22:54:41] <milesbaustin@gmail.com> :)
...ненужная хуита скипнута...
орал долго :)
Update от 10.02.10 02:38
Гугл транслейт нам сказал следующее в ответ на `В ПИЗДУ ВЫБОРЫ!!!! ПОШЕЛ ГОТОВИТЬ УЖИН!!!!`: Elections in the pussy!! Went to prepare dinner!!.
Так что я Майлзу доставило. Как и мне :-D.
уууужесть.... весча.... гаража....
... когда два человека, к которым я очень тепло отношусь копипастят общение друг с другом из аськи мне одновременно :-D
котячка и огуречное - вам привет!
:-P
Сейчас раздупляюсь с openssl. долго мудрил с компиляцией и gcc, в итоге для компиляции надо всего лишь:
gcc ssl_client.c -lssl -o ssl_client
и никакие конструкции в духе:
asmer@iridium ~/progging/c/ssl $ gcc ssl_client.c -L/usr/lib -L/lib/ /usr/lib/libssl.a /usr/lib/libcrypto.a -o ssl_client
/usr/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
(.text+0x2e4): undefined reference to `dlsym'
/usr/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
(.text+0x394): undefined reference to `dlerror'
/usr/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_var':
(.text+0x404): undefined reference to `dlsym'
/usr/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_var':
(.text+0x4b4): undefined reference to `dlerror'
/usr/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_unload':
(.text+0x50d): undefined reference to `dlclose'
/usr/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
(.text+0x5c2): undefined reference to `dlopen'
/usr/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
(.text+0x62d): undefined reference to `dlclose'
/usr/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
(.text+0x65a): undefined reference to `dlerror'
collect2: выполнение ld завершилось с кодом возврата 1
"На экзамене по химии в Университете Торонто был поставлен следующий вопрос: является ли Ад экзотермической системой (выделяющей тепло), или эндотермической системой (поглощающей тепло)? Студенты должны были ответить, исходя из своих верований об Аде, и используя закон Бойля: газ охлаждается, расширяясь, и нагревается, сжимаясь.
Единственный студент, получивший пятерку написал следующее:
Во–первых, мы должны выяснить, как меняется масса Ада с течением времени. Поэтому мы должны узнать, с какой интенсивностью Ад наполняется душами, и с какой интенсивностью они его покидают. Мы должны учитывать, что однажды попав в Ад, душа уже никогда его не покинет. Для того, чтобы понять, сколько душ попадает в Ад, давайте изучим, как к этому относятся различные религии. Большинство из них утверждают, что если вы придерживаетесь иного вероисповедания вы обязательно попадете в Ад. Так как религий больше, чем одна, и так как люди обычно придерживаются только одной религии, мы можем утверждать, что все души попадают в Ад. При сохранении существующих уровней рождения и смертности, можно утверждать, что количество душ в Аду увеличивается экспоненциально. Теперь рассмотрим темпы роста объема Ада, так как при сохранении постоянной температуры и давления, объем Ада должен увеличиваться пропорционально количеству попавших в него душ.
Существуют две возможности:
Если темп расширения Ада будет медленнее, чем темп поступления в него душ, следовательно, температура и давление в Аду будут повышаться до тех пор, пока он не взорвется.
Если темп расширения Ада будет быстрее, чем темп поступления в него душ, следовательно, температура и давление в Аду будут уменьшаться, до тех пор, пока он не замерзнет.
Если мы примем за аксиому утверждение, которое выразила в отношении меня Тереза, когда я был на первом курсе, что "Прежде Ад должен замерзнуть, чем я пересплю с тобой", а также принимая во внимание тот факт, что я спал с ней прошлой ночью, наиболее верным представляется вариант #2. Следовательно, Ад уже замерз и является эндотермической системой. Так как Ад уже замерз, он не может принимать души дальше, следовательно, Ад прекратил свою деятельность… Рай остался единственным подтверждением существования Высших Сил, что объясняет, почему прошлой ночью Тереза все время кричала "О Боже, о Боже!".
[10:31:26] <Ирка-Данька> я с ней поговорила
[10:31:34] <Ирка-Данька> нно я реально именно охуела
[10:31:44] ВАУ!!!!!
[10:31:47] ИРААА!!!!!
[10:31:55] КАК ТЫ МОЖЕШЬ МАТОМ РУГАТЬСЯ!!!!
[10:31:56] <Ирка-Данька> да, со мной такое бывает
[10:31:57] НЕУЖЕЛИ!!!!
[10:32:00] Я АЖ ПРОСНУЛСЯ
[10:32:01] <Ирка-Данька> у Дани спроси
[10:32:08] <Ирка-Данька> и что он мне после этого устраивает
На последних выходных мы с Котячкой катали к Нюрцу и Дроенковичу в село :). Это было тут:
Село Веселое, улица Зеленая. Природа, молоко, поля, баня, шашлык, лес... Отдых что надо. Чуть позже выложу фотки :)
Ниже идет проба пера в области html DOM. Очень удобная штука (в сочетании с регэкспами) для обдиралова (скрейпинга) разнообразных сайтов и блоков. Попытка сделать нечто подобное без использования DOM-парсера привела к велосипедостроительству (оное закомментировано). Сырцы simple html DOM на сурсфорже.
Ниже идет файл с моим ассемблерным 3d-движком времён 2000 года. На стенках рисуется фрактал Мандельброта. Код к сожалению утерян :(. Для запуска используйте dosbox.
Для лентяев.
Да и для того, что бы выковырять этот код пришлось использовать интернет-машину времени для ныне дохлого сайта assembler.ru.
Ниже следует весь код блога :).
Теперь для того, что бы вывалить исходник в блог надо просто его скопировать в правильную папку, и он автоматически появится в блоге подсвеченный согласно подсветке ViM.
Собственно добавил в блог поддержку колоризации кода. Работает просто, дешево и сердито, как и всё в этом блоге. Для раскраски используется ViM, из-за чего
колоризация может тупить. Однако так же используется прозрачный механизм кэширования, что сводит тупняки на нет :). Предыдущее сообщение - и есть
тест колоризации.
Классически ставить на раздел `/` больше гига у меня лично не принято. Но, однако, бывают и подъебосы. Пример - urban-terror и прочее проприетарное поделие, которое ставится в /opt. Или java.
Однако unixway спасает нас и в этой, неприятной ситуации. Можно перенести /opt в места попросторнее (у меня, например, в /var):
Как видно, на / у нас есть только 200 метров (до переноса opt было еще меньше и не хватало места для установки urban-terror), a на /var место имеется Решаем проблему:
cp -pvrf /opt /var/ # копируем /opt на другой раздел /var с сохранением всех прав доступа и принадлежности файлов (флаг -p)
rm -rf /opt/* # удаляем всё из /opt - освобождаем место на /
mount /var/opt /opt -o bind # монтируем /var/opt в /opt
Теперь осталось сие упузырить в автомонтирование при загрузке(sudo vim /etc/fstab):
/var/opt /opt autodefaults,bind0 0
Посмотрел Wall-E. Оценил. Всем советую. Pixar - жжот. Единственное что людей как-то недостаточно кайфово прорисовали. Остальное очень даже выглядит (роботы, ландшафты)
Сегодня ДР Лежи. Собсно с 26-летием его :). Охренеть - растем, стареем :).
А неделю назад было ДР Димки Богуна...
И в обоих случаях мы все были удивительно трезвы. Пили, ели, отдыхали... но нифига от этого не менялись...
Сегодня выпили в 2.5 человека бутылку коньяка и съели полторы `пиццы`, выпили 2 литра сока. Трезвы. Юрец завтыкал после вчерашнего в urban terror, не спал нихрена, урулил
по-раньше (около 3 ночи). Мы допили бутылку вдвоем.
Скоро и мое :)
С удовольствием слушаю Rob Dougan - Furious Angels (как всегда, по кругу подряд днями). Музня очень осенняя. И голос у солиста (самого Дугана?) очень подходит.
Для тех, кто в танке - Дуган автор Clubbed To Death (Kurayamino Version) - неубиваемой темы из первой матрицы и блейда 3.
Так что это всё такое? - Это аццкая хуйня, которая вызвана вечным стремлением Ваныча выебнуться. Я не хочу ставить wordpress. Я не хочу наворотов. Я не вижу смысла во
вбивании нужного и не нужного в вебинтерфейсы. Мне нахуй не нужно хранить это всё в mysql. У меня есть VIM (почти всегда). У меня есть доступ к серваку (всегда, когда есть VIM и инет). Если что - я придумаю, как
эту хрень редактировать с мобилы, причем малой кровью. Поэтому код сего поделия весит 39 строк с 3 строками комментариев, и мне им удобно пользоваться. Эта хрень уже сейчас
позволяет выложить файлы, картинки, html и текст. Она была написана за час с отладкой на коленке. Думаю будут еще тэги, и, возможно, комменты. А так же еще куча всякого - и у меня получится ВОРДПРЕСС!!!! :-D.
Бывает микроблоггинг, бывает макроблоггинг, а это просто высерблоггинг. Всем чмоки в этом чятике.
Странные глюки с dcopserver и kdeinit (нихуя не пахало из-за того, что не работал dcopserver, а именно kmix, amarok, kbluetooth) были обусловлены переполнением / раздела...
Мораль - следите за местом на разделах... OS крайне редко пишет об этой проблеме - обычно просто странно глючит.