За последние 3-и недели дважды переезжал из офиса в офис.
Из места А переехал в Б, затем в В, которое рядом с А :).
Сходил в гости на старое место, в котором провёл всю молодость 2-а года девелоперской и не только жизни. Ностальгия.
2008-12-03
I like to move it
2008-11-27
Курьёзы программирования
Тут будут курьёзы программирования, с коротырми я лично столкнулся/породил.
Итак начали.
1. Оператор сравнения vs. лямбды
Классика: вечер, сижу, хочу дописать кусок кода/работы. Подтупливаю ещё не сильно.
if ((backLog.TimeStamp - lastTime).Minutes => minuteInterval) {Unexpected token. Expected ; -Mastro 27/11/2008 19:59
//...
}
Что решарпер от меня хочет в выделенном крассным!? Какая такая ;. Всё же правильно. Может скобку забыл где, да нет - всё на месте. Дай как скомпилю: опа, те же ошибки.
Чешу репу, и через минуту понимаю в чём дело :). Оператор сравнения пишется несколько иначе:
if ((backLog.TimeStamp - lastTime).Minutes >= minuteInterval) {
//...
}
Вот теперь всё в порядке.
2008-11-25
Проверка Google Docs -> Post to Blogger.
Проверка Google Docs -> Post to Blogger.
Проверим форматирование так и так.Коментарий, увидим ли мы его? -Mastro 26/11/2008 12:11
Ещё цвета, разные.
Табличка:Заголовок 1 1 2 3 4 5 6 7 8 9 0
- Список "точками" 1
- Список 2
- И нумерованный список
- Ещё один элемент
Суперскрипт, сабскрипт.
Цитирование.
2008-10-17
Fiat Bravo
Знакомство с моей будущей (я надеюсь) машиной началось вот с этого ролика:
Тепрь я знаю, что песню из ролика исполняет итальянская певица Gianna Nannini. Название песни Meravigliosa Creatura - Удивительное Создание. Что цвет машины в ролике Maranello Red - дань Феррари. Что на создание этой модели ушло 18 месяцев - своеобразный рекорд. Что на её базе созданна новая Lanica Delta и создаётся Alfa Romeo 149.
Ролик одно время был вывешен на сайте Фиата. Но я был не сильно склонен к Фиату как таковому и Браво в частности. Не рассматривал машины дороже 15 тыс., да и курс евро не располагал.
Мы с женой просмотрели множество машин которые нас интересовали: Mazda 3 и 2, Toyota Auris и Yaris, Suzuki Swift и SX-4, VW Golf & Polo, KIA Cee'd & Rio, Ford Focus & Fusion, Pegeot 107, 207 & 308, Renault Megane & Clio, Citroen C3.
Более всего нам понравился Аурис. Но он был дороговат для нас на то время. Да и прав у меня ещё не было. Потом был просмотрен Сузуки SX-4. Он нам то же понравился, как и Свифт.
И вот в конце весны я проехался на Сузуки Свифт робот. Мне понравился, и цвет был синий. Я договорился в салоне что я его беру. Уговор был на то, что я ищу кредит в течении 2-3 дней и покупаю машину. Но на следующий день мне перезвонил менеджер и сказал: "вы знаете, к нам тут пришол клиент, и купил его сразу заплатив деньги. Но вы не переживайте, у нас есть вам предложить SX-4, да и вообще тот Свифт был 2007 года выпуска." Я был огорчен... Ошибка моя была в том, что я не подписывал договор.
Ещё до этого мы интересовались Фиат 500. Очень интересно было на него посмотреть. Посмотрели на выставке - он нам очень понравился. Сходили в салон и заодно уже посмотрели Grande Punto. В салоне был и Браво. Я и его посмотрел, он был хорош, но по цене выходил выше бюджета - евро тогда ещё не упал. Фиат 500 всё таки отпал из-за размеров - уж больно не практично для первой и единственной машины. Хотя сам автомобиль супер.
После отпуска мы ещё раз съездили в салон Фиат, проехались на тестдрайве Гранде Пунто. Время шло, и я стал посматривать на Браво. Почитал обзоры, отзывы, форумы. Затем прокатился на 120 сильном Браво, тот который с турбо мотором TJet 1.4 литра. Живой мотрочик, после 2-ух тысяч тянет очень бодро.
И решил, что хочу вот такую машину: красивую, стильную, приятную, редкую. И плевать на то, что Фиаты у нас не котируются, что у него есть ряд конструктивных недостактов и болячек, что сервис у нас не идеальный (зато не будет очередей), что ценник в хорошей комплектации выходит за 20 тыс. долларов, что... да много чего можно найти в Браво, если искать с лупой и калькулятором. Такие машины выбирают не с калькулятором под подушкой, а сердцем/душой. Ведь главное, что бы машина нравилась, что бы было приятно в ней находиться и ехать.
Авто-мото |
2008-01-09
Format test post
This post will be test playground for various formating tests.
Console output CSS version 1.0.
Some additional command output.
bla bla
Test line.
2008-01-07
Добавим места малышу Eee PC
Добавим места и скорости малышу Eee PC: сожмём /usr используя aufs и squashfs.
Для начала соберём и поставим aufs и squashfs.
Ставим нужные пакеты: sudo apt-get install aufs-modules aufs-tools squashfs-modules squashfs-tools.Фиксим багу в сорцах squashfs. Для этого в начале распаковываем их:
$sudo tar xjv squashfs.tar.bz2
Затем качаем патч. Я взял его отсюда.
Накладываем его:
$sudo patch inode.c 03-remove-slab.dpatch
Компиляем squashfs и aufs.
$sudo module-assistant build aufs
Опция -O нужна для того что бы module-assistant не распаковывал сорцы squashfs затирая патч.
deb пакеты собираются в /usr/src. Ставим их и проверяем загрузку:
$sudo modprobe squashfs
$lsmod | egrep \(aufs\|squashfs\)
Теперь создадим и смонтируем образ /usr
Создаём сжатый образ /usr:Монтируем его:
$sudo mount -t squashfs -o loop /usr.sqfs /usr-ro
Монтируем всё вместе через aufs:
$sudo mount -t aufs -o dirs=/usr-rw:/usr-ro=ro none /usr
В конечном итоге мы получаем наш родной /usr состоящий из двух частей:
1. RO часть лежащая в /usr-ro и являющаяся подмонтированным образом /usr.sqfs
2. RW часть содержащая изменения в RO части и лежащая в /usr-rw
Последнюю часть я пока ещё не сделал. Сжатие данных штука не быстрая. Кроме того, я не знаю как бы так аккуратнее подменить реальный /usr, что бы ничего не упало :).
В дальнейшем можно заново собирать usr.sqfs из /usr. Чистить /usr-rw. И работать со сжатой ФС.
Update
Сделал таки squashfs + aufs. Squashfs файл занимает ~40% (780Мб)от оригинального /usr (1.8Гб) - можно сказать 1 Гиг места. Пока что не удаляю оригинальный /usr, монтирую поверху. Потестирую потом снесу родной /usr.
Пока настраивал сделал косяк. Хотел сделать /usr-rw закрытым для юзерей (хез зачем;) ):
$sudo chmod u+rwx /usr-rw
Настроил всё что надо в fstab, ребут и получаю окошко с квадратиками вместо GDM. Полез в консоль, глядь а /usr то dwrx------ :). Думаю: ага aufs юзает пермишены rw директории. Давай чепятать sudo chmod +rx /usr-rw. bash: chmod: command not found было мне ответом. Single mode полечил граблю.
Забавно что можно на лету mount/umount /usr без особых последствий.
По скорости видны земедления, по крайней мере при старте программ. Не критично, но есть. Чуть более долгая (3-4 сек) загрузка Гнома после логина. Так же чуть дольше (1-2) секунды стартует OO.
Ну и напоследок немного конфигов и статистики:
# /etc/fstab: static file system information.
#
# <file system=""> <mount point=""> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
# /dev/sda1
UUID=4020dd57-e983-46bc-8890-b62a44605da8 / reiserfs notail,noatime 0 1
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec 0 0
tmpfs /var/log tmpfs defaults,noatime 0 0
#tmpfs /var/cache/apt/archives tmpfs defaults,noatime 0 0
/usr.sqfs /usr-ro squashfs ro,defaults,loop 0 0
usr-aufs /usr aufs dirs=/usr-rw:/usr-ro=ro 0 0
$cat /etc/mtab
/dev/sda1 / reiserfs rw,noatime,notail 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
/sys /sys sysfs rw,noexec,nosuid,nodev 0 0
varrun /var/run tmpfs rw,noexec,nosuid,nodev,mode=0755 0 0
varlock /var/lock tmpfs rw,noexec,nosuid,nodev,mode=1777 0 0
udev /dev tmpfs rw,mode=0755 0 0
devshm /dev/shm tmpfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
lrm /lib/modules/2.6.22-14-generic/volatile tmpfs rw 0 0
tmpfs /var/log tmpfs rw,noatime 0 0
/usr.sqfs /usr-ro squashfs ro,loop=/dev/loop0 0 0
usr-aufs /usr aufs rw,dirs=/usr-rw:/usr-ro=ro 0 0
securityfs /sys/kernel/security securityfs rw 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,noexec,nosuid,nodev 0 0
/dev/sdb1 /media/disk-1 vfat rw,nosuid,nodev,shortname=mixed,uid=1000,utf8,umask=077,usefree 0 0
/usr.sqfs 767744 767744 0 100% /usr-ro
1834825 /usr-ro
libnotify - работа из под рута
Заметил одну особенность Ubuntu support скрипты для Eee PC не выводят OSD сообщение на включение/выключение WiFi и Overclock-а. Хотя по описанию должны. Поковырялся внутрях и нашол скрипт на перле который выводил сообщения через libnotify. Но этот скрипт нигде не вызывался. И даже если он как-то вызывается, всё равно он ничего не выведет ибо запуск из под рута выдаёт ошибку связанную с доступом к DBus.
Погуглив, нашол в чём грабли. Первое: надо найти корректный DBus Session ID. И второе: надо запускать send-notify от того польозователя что и ранает иксы.
Вот решение:
#!/bin/bash
# 2008-01-07
# (c) Aleksei Antonovich google mail: aleksei.antonovich.
# Licensed under GPL.
# Ensure that the script is run as root
if [ `id -u` != 0 ]
then
echo "ERROR: this script is intended to be run as root."
exit 1
fi
# Ugly way to find an running X programs for all users
pids=`pgrep gnome-panel`
for pid in $pids; do
#Search for DBus for that process
DBUS=`grep -z DBUS_SESSION_BUS_ADDRESS \
/proc/$pid/environ | sed -e "s/DBUS_SESSION_BUS_ADDRESS=//"`
#Grab user of Gnome process
UNAME=`grep -z USERNAME \
/proc/$pid/environ | sed -e "s/USERNAME=//"`
# echo "user is: "$UNAME
# echo "DBUS is: "$DBUS
DBUS_SESSION_BUS_ADDRESS=$DBUS \
sudo -u $UNAME notify-send "$@"
done
Несколько кривовато определение программ запущенных под иксами, но работает. Если потом руки дойдут - сделаю более универсально.