Обновление убунты

Чтобы обновить убунту надо сделать несколько магических действий:
Делаем cat /etc/issue и смотрим название своего релиза. Потом смотрим историю релизов убунты и выбираем следущий после своего. Открываем файл с репозиториями
sudo vim /etc/apt/sources.list
И меняем название текущего релиза на следущий
:%s/current-release/next-release/g<CR>ZZ
Сохранив запускаем собственно обновление.
sudo apt-get update
sudo apt-get dist-upgrade

Со всем соглашаемся и через пару часов убунта уже новой версии :).

2011.06.10 14:16

Vim & Emacs

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

2 года под вимом достаточный срок чтобы переходить на емакс и сравнивать как мне кажется.

2011.06.09 13:52

Gentoo и прилинкованные библиотеки.

Генту хорошая игрушка, но из-за постоянных перекомпиляций нет нет да и случается что llibtool начинает путаться и делать ерунду разбрасывая по системе кучу .la файлов не уведомляя об этом ну уж вообще всё. Из-за этого переодически программы прекращают запускаться говоря что-нибудь на подобие:
libtool: link: `/usr/lib/libGL.la' is not a valid libtool archive

И несмотря на то что некий Жорж Мануэль Б. С. Вичетто хотел это започинить — проблема переодически всплывает. И тут на помощь приходит магия спасения:
emerge -1 lafilefixer && lafilefixer --justfixit && emerge -C lafilefixer

И все снова начинает работать.

2011.06.01 08:30

Про линукс

* Once you've finished running revdep-rebuild, it should be safe to
* delete the old libraries. Here is a copy & paste for the lazy:
* # rm '/usr/lib/liblzma.so.0'

Ну разве после таких сообщений линукс можно не любить?

2011.05.08 18:37

Ограничение скорости emerge

Если хочется чтобы emerge -f world не съедал весь канал, то, если верить интернетам, надо в /etc/make.conf добавить:

# Using wget, ratelimiting downloads
FETCHCOMMAND="/usr/bin/wget -t 5 --passive-ftp --limit-rate=15k \${URI} -P \${DISTDIR}/\${FILE}"
RESUMECOMMAND="/usr/bin/wget -c -t 5 --passive-ftp --limit-rate=15k \${URI} -P \${DISTDIR}/\${FILE}"

2011.05.08 15:33

Старый винт

Запустил через badblocks -n -v /dev/sdc проверку старого винта на беды и он сказал мне: Pass completed, 141101592 bad blocks found.

Вовремя я прикупил новый :)

2011.04.13 23:24

Фейсбук, iframe и дебильные браузеры

Чтобы на фэйсбуке сделать приложение можно воспользоваться встраевым фреймов. Вещь хорошая, но как оказалось из пяти браузеров два проблемы дураки: ie и safari не разрешают пользоваться куками в ифрейме. То есть ли в ифрейме будет редирект, то новый инстэнс этой страницы ничего не узнает про куки.

Для ie есть решение, достаточно просто выдавать специальный хедер:
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT CURa ADMa PHY ONL COM STA"');

Для сафари же решения это проблемы нет: гугл подсказал какой-то дикий анальный геморой с динамическим созданием формы и отсыланием её на сервер. Ну его к черту с таким адом сталкиваться.

Я решил это невероятным костылем: для сафари и ие (я не использовал хедеры, а обошелся одним решением для этих двух неполноценных браузеров) я дублирую куки в сессию, а SID и передаю через get-параметр.

Решение некрасивое, но быстрореализуемое.

Оптимальным же решением будет использование ajax, но в том приложении которое я правил это заложено не было.

2011.01.14 14:29

Про велосипед

Месяца два назад я заимел отличную травму колена и выпал из жизни совершенно: себя то жалко. А сегодня впервые за долгое время немного покатался на велосипеде. По пунктам:

1. Надо обязательно купить щитки, ибо погоды уже не те и вся спина в грязи моментально.
2. Суппорты на колени от конторы Orlett делают своё дело как надо — кататься совершенно ненапряжно.
3. Ездить с фонариком значительно лучше чем без, но надо еще придумать как его закрепить прямо около выноса: руль там сильно толстый и крепленя не хватает.
4. Собственно, совершенно нехолодно, но перчатки с пальцами купить не помешает.
5. Подлый левый шатун, похоже, ненавязчиво добивает вторую каретку. Надо купить сразу и каретку, и шатуны.

Надо снова начинать потихоньку кататься и попробовать съездить до работы и обратно: надо узнать насколько это сложно для колена. Может даже начинать ездить на работу на велосипеде (конечно же, погоды лучше я найти не мог).

Вот и всё. Велосипед это прекрасно, а роликов с моим коленом мне до весны не видать точно.

2010.11.09 00:26

Превращение секунд в нужный формат

У менять есть колличество секунд, а мне понадобилось превратить их в строку виде 00:14:12, то есть, например, если есть есть 14 секунд, то должно получиться 00:00:14, а если 72, то 00:01:12.

Совершенно несложно и в интернетах есть даже большие и красивые функции для этого, но зачем если есть функция date() которая может преобразоваться в нужный формат обычный timestamp. А timestamp в свою очередь это колличество секунд с начала эпохи UNIX, то есть если я её обману и скажу что прошло 14 секунд то date() ничего не должна заподозрить.

Но выполнив
< ?php echo date('H:i:s', 14); ?>
я получил непонятный ответ: 02:00:14. Это все потому что date() выдает локальное время поэтому писать надо:
< ?php echo gmdate('H:i:s', 14); ?>
Как мне сказали в комментариях, а не менять временную зону как идиот.

2010.09.13 12:58

Encoding.com и собака в логине

Есть такой сервис для кодирования всякого как encoding.com. Сервис неплохой: у него даже есть апи, но плохая документация.

Например туда можно послать запрос чтобы их сервер скачал файл, перекодировал как надо и потом записал на указанный ему фтп, фтп предлагается указывать так:
ftp://username:password@example.com

Только одна проблема: иногда в качестве логина используется почта, а ребята на енкодинге плохо программируют и считают что хост это все что после собаки, то есть хост это вот такое:
ftp://myemail@myhost.com:password@example.com

Это, мягко говоря, не совсем правда, но вместо того чтобы совсем немного исправить код они предлагают заэскейпить первую собаку в %40. Забавно и то, что фтп на который надо заливать файл не пускает с измененным логином в котором вместо @ написано %40, а значит это делает сам encoding. Странная реализация.

2010.09.10 16:22

Самостоятельный монитор

В целом мой монитор неплох (vesa крепление бы!) и поначалу он был совершенно бесшумен, но вот через полгода запел дроссель. В тишине ночи, когда уже совсем собрался спать — слышно как поёт дроссель свою песню. И очень меня расстраивало что он не может сам выключаться и сам включаться.

Некоторое время назад на хабре была статья “Выключаем монитор с клавиатуры“. Выключать с клавиатуры мне монитор не надо, а вот повесить в авторан bash-скрипт это да, это — хорошая идея. Правда у меня нет авторана, но зато есть init-скрипты, туда и положу скрипт для выключения монитора:

# cat /etc/init.d/ddccontrol

#!/sbin/runscript

depend() {
	need localmount
	before xdm
}

start() {
	ebegin "Switching monitor on"
		ddccontrol -r 0xd6 -w 1 pci:01:00.0-2 > /dev/null 2>1
	eend $?
}

stop() {
	ebegin "Switching monitor off"
		ddccontrol -r 0xd6 -w 4 pci:01:00.0-2 > /dev/null 2>1
	eend $?
}
# vim:ts=4

И добавляю этот скрипт в автозапуск:

rc-update add ddccontrol default

В скрипте использованы командные коды для монитора LG Flatron W2261V, если у вас другой монитор, то надо исполнить:

ddccontrol -p

найти там свой монитор, скопировать его адрес и выполнить:

ddccprobe -d dev:/dev/i2c-2

Если монитор есть в базе, то покажет известные коды. Если их там нет, то читать статью и подбирать. Мне вот повезло :).

И главное что больше мне не приходится думать о выключении монитора, а он в свою очередь по ночам не гудит и не моргает красным. Линукс — это хорошо.

2010.08.22 12:52

Настройка синхронизации времени в gentoo

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

Сначала надо собрать пакет ntp который и будет всё синхронизировать, под рутом необходимо выполнить:

echo "net-misc/ntp caps" >> /etc/portage/package.use
emerge --ask --verbose net-misc/ntp

Эти строки добавляют необходимые пакету use-флаги в специальный файл и при пересборке мира пакет соберется с нужными флагами автоматически. Ну и сама сборка пакета.

Следущее вынужденное ленивое телодвижение это добавление пакета в авторан:

/etc/init.d/ntp-client start
rc-update add ntp-client default

И в последнем действии необходимо отредактировать файл  /etc/conf.d/clock:

CLOCK_SYSTOHC="yes"

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

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

2010.08.07 19:48

hello world?

hello world

2010.08.01 12:53