четверг, 21 октября 2010 г.

Установка grub

Выдержка из документации по GRUB Legacy


Installing GRUB natively

Caution: Installing GRUB's stage1 in this manner will erase the normal boot-sector used by an OS.

GRUB can currently boot GNU Mach, Linux, FreeBSD, NetBSD, and OpenBSD directly, so using it on a boot sector (the first sector of a partition) should be okay. But generally, it would be a good idea to back up the first sector of the partition on which you are installing GRUB's stage1. This isn't as important if you are installing GRUB on the first sector of a hard disk, since it's easy to reinitialize it (e.g. by running `FDISK /MBR' from DOS).

If you decide to install GRUB in the native environment, which is definitely desirable, you'll need to create a GRUB boot disk, and reboot your computer with it. Otherwise, see 3.3 Installing GRUB using grub-install.

Once started, GRUB will show the command-line interface (see section 12.1 The flexible command-line interface). First, set the GRUB's root device(4) to the partition containing the boot directory, like this:
 
grub> root (hd0,0)

If you are not sure which partition actually holds this directory, use the command find, like this:
 
grub> find /boot/grub/stage1

This will search for the file name `/boot/grub/stage1' and show the devices which contain the file.

Once you've set the root device correctly, run the command setup (see section 13.3.34 setup):
 
grub> setup (hd0)

This command will install the GRUB boot loader on the Master Boot Record (MBR) of the first drive. If you want to put GRUB into the boot sector of a partition instead of putting it in the MBR, specify the partition into which you want to install GRUB:

grub> setup (hd0,0)

If you install GRUB into a partition or a drive other than the first one, you must chain-load GRUB from another boot loader. Refer to the manual for the boot loader to know how to chain-load GRUB.

воскресенье, 10 октября 2010 г.

Наращивание swap-памяти.

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

Создаем файл нужного размера:
# dd if=/dev/zero of=/mnt/swapfile bs=1024k count=3072

Подгатавливаем для использовения в качестве swap-файла:
# mkswap /mnt/swapfile

Подключаем в систему с нужным приоритетом. Чем выше значение, тем выше приоритет
# swapon -p 5 /mnt/swapfile

Переподключаем текущий раздел подкачки с более высоким приоритетом:
# swapoff /dev/sda3
# swapon -p 10 /dev/sda3

Правим /etc/fstab в соответствии с новыми реалиями (не забываем добавить параметр приоритета pri=):

---
/dev/sda3 swap swap defaults,pri=10 0 0
/mnt/swapfile swap swap defaults,pri=5 0 0
---

Посмотреть текущее состояние разделов/файлов подкачки можно следующей командой:
# swapon -s

вторник, 14 сентября 2010 г.

Пассивный мониторинг

Ощущаю человека с номером +7-9510-98-89-08 родственником, ни или может другом. Ну в-общем человеком небезучастным.

Помню года 3-4 назад занялся он продажей стройматериалов. Кирпич-цемент и т.п. Да цифрой в объявлении ошибся (или "редакторы" ошиблись, не суть). Именно тогда, впервые, я узнал что где-то в Ульяновске живет предприимчивый человек с номером телефона, отличающимся от моего всего на одну цифру. В следующих номерах газеты, был уже правильный номер. Оттуда, я его собственно и узнал.

С тех пор начало строительного сезона я знаменуется для меня звонками с вопросами о "моих товарах". Я честно отвечаю, что я этого не продаю, но могу подсказать номер где им помогут :D Не подумайте плохого, не часто в объявлениях мой номер указывают. Звонящие сами ошибаются.

Чего это я его вспомнил осенью? Поделиться радостью. Недавно мне позвонили спрашивали, можно ли у меня окна пластиковые заказать :) Не успел я на пусть истинный наставить. Однако, в этот раз звонящая дама произнесла именно мой номер...

Блин, жаль денег нет, чтобы конкурс объявить. Типа, кто найдет газету с моим номером и позвонит по нему? Тому новенький iчё-нибудь и рукопожатие.

Так о чем это я? Ах,да. Растет чувак! Глядишь, через пару лет будут спрашивать г-на Somebody. Вот такой пассивный мониторинг у меня идет...

А что бы вы делали на моем месте?

суббота, 4 сентября 2010 г.

Зачем облака Ульяновску?

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


Предистория. (kuznetso3v - я)

kuznetso3v 
Опять ИТ-спецов собирают :) Думаю заглянуть... RT @ulgrad: Обещают бесплатный Wi-Fi http://bit.ly/aGhcjN


JetP1L0t 
@kuznetso3v с 2 до 4 можно посмотреть, а фтыкать на понты црдева с айтеком нет никакого желания

kuznetso3v 
@JetP1L0t На сколько помню, мы "понтоваться" не собираемся. Про реальные облака + SaaS в #ulsk не слышал рассказов. Послушал бы...

kuznetso3v 
@JetP1L0t Лично я с удовольствие про достижения #ulsk'их компаний послушаю. Это мой город и я за его развитие :)

JetP1L0t 
@kuznetso3v ну да,а толку ульску от облаков,когда еще большАя часть промышленых,жилых территорий для интернетов использует энфоры и мегафоны

kuznetso3v 
@JetP1L0t Что делать с облаками, вопрос идеи и реализации. Про облака многие слышали, но не многие трогали. Мы в них работаем...

mechan1c 
@kuznetso3v Ага, так же как толку от SaaS. Лично я рынка как такового у нас не наблюдаю. :)

kuznetso3v 
@mechan1c Бывает. А какой рынок SaaS ты хотел бы "у нас" наблюдать? Что именно ты имеешь в виду? И где именно "у нас"? Уточни, пожалуйста.

JetP1L0t 
@mechan1c ну SaaS еще можно как то пропихнуть, в отличии от облаков ))

kuznetso3v 
@JetP1L0t @mechan1c SaaS без облаков, конечно, возможен, но менее эффективен на порядки. Облака - это мегаудобный, очень надежный инструмент

JetP1L0t 
@kuznetso3v ну да, суперэкономное решение и жизненнонеобходимое для развития #ulsk


Развернутый ответ 2 @JetP1L0t and @mechan1c
Попробуйте посчитать стоимость создания кластера такой же надежности/доступности/защищенности, как облака Amazon или Rackspace, только состоящий, скажем, из десятка серверов. Не забудьте про стоимость обеспечения ресурсами и поддержку. Условно оценим это в...пару миллион тугриков.

А теперь представьте, что вы делаете все эти вложения, чтобы запустить всего один сервис :) Вы уверены, что только что запустили убийцу Facebook'а/ВКонтакта/Одноклассников вместе взятых или может убийцу Twitter'?  У вас есть лишний/свободный миллион тугриков? Тогда я могу за вас порадоваться!

Но наша действительность такова, что не у многих есть такая сумма. Скажем прямо: вообще мало у кого она есть...

Итак, у вас есть Идея, есть Команда, и даже Реализация. Но нет Надежного/Доступного/Безопасного хостинга. Точнее есть, но стоит такой хостинг Дорого.

А теперь, Господа, посмотрите за что и сколько денег просит тот же Amazon EC2. Я не аффелирован с ними, я просто знаю как оно работает. Главный смысл: Вы платите ровно за те ресурсы, которые использовали! Не нужен десяток серверов, 80% времени не использующий свои вычислительные мощности.

Это про облака вообще.

Зачем забугорные облака Ульяновску? А затем, что наши университеты выпускают ежегодно пачку специалистов. Часть из них сдружат с головой и хотят шевелиться, но они не знают, что в наше время можно стартовать сервис/услугу мирового масштаба с мизерными затратами хотя бы на серверную инфраструктуру. Кто-то что-то слышал об облаках, но таких не много. И уж вообще единицы тех, кто реально держал их в руках...

Да, мы (Креативная разработка) работаем в облаках. Да, это невероятно удобно/надежно и т.д.
Да, мы готовы немного поделиться своим опытом. И, если это поможет хоть нескольким ульяновцам запустить успешный проект с мировым/всероссийским именем, я думаю наш город от этого только выиграет :)

P.S. Забыл сказать. Речь идет о высоконагруженных сервисах 24/7. Не о сервисах уровня одного предприятия.

понедельник, 30 августа 2010 г.

вторник, 13 июля 2010 г.

Плюсы Твиттера

Настолько понравилось, что решил на память сохранить. Оригинал: http://habrahabr.ru/blogs/twitter/72795/#comment_2107747

Плюсы Твиттера: информативность, скорость, защищенность, незаспамленность, интерактивность, концептуальная простота

1. Информативность складывается из сжатого стиля изложения твитов (по горизонтали много влезает), скорости чтения ленты (по вертикали видно сразу много твитов), насыщенности ссылками (сокращатели bit.ly и подобные удобные способы вставки ссылки в твит), которая существенно выше ЖЖ и ему подобных блогов (не говоря уже о соцсетях, в которых ссылок оч мало)

2. Скорость вызвана тем что подавляющее большинство твитерян (пока международных) твитит и читает твиттер из телефонов (через смс) и смартфонов (через клиентов). Вы едете в метро, стоите в пробке, сидите в кафе, или на скучном совещании и в одним взглядом получаете личную информационную картину: от друзей до новостей и медиаблогов. Соответственно, и скорость ответа на порядок выше традиционных сред — речь даже не о минутах а, более-менее, о секундах — все вместе это дает невероятное ощущение причастности к происходящему в мире здесь и сейчас. Как сказал Иван Уильямс (создатель Блоггера и Твиттера) в своей лекции на ТЕДе: твиттер это очень просто, это когда я написал СМС и через несколько секунд ее прочитали 60 тыс человек

3. Защищенность складывается из многих вещей: (1) от троллей: представьте, вы читаете интересного сообщение от интересного человека, но спасены от гоблинов-комментаров, точнее вы видите в своей ленте только реакцию своих (уже проверенных) друзей, по сути проекцию дискуссии на свой круг, либо же его собственные ответы, но только на те комменты (а он их видит) которые показались ему лично важными и интересными. Иными словами, если тролли в твиттере и есть, то их никто не никогда не прочитает. Все потому что в твиттере нет традиционного для блогов поста и комментов к нему, нет и троллей, которые зарабатывают капитал, устраивая срач в блогах знаменитостей. Знаменитостям нечего боятся огрести кучу мусора в комментах, не надо никого банить, разбираться с цензурой и тд и тп. — ведь никто никогда не прочитает троллинговые комменты! Точнее их прочитают только друзья тролей, и шанс повысить свою видимость у тролля нулевой. (2) Нет графоманов, которые взрывают вашу ленту длинными бессмысленными текстами

3. Незаспамленность: mashable.com/2009/09/13/twitter-spammers/ — прочтя этот текст, станет понятно, какие недорогие и несложные механизмы в твиттере избавляют его от большого количества вида спам и абьюза.

4. Интерактивность — твиттер подталкивает к оперативной реакции и оперативному написанию текста. Почему? (1) краткий формат освобождает от «обязательств» по качеству текста, (2) нет страха троллинга у популярных авторов — см выше, (2) — скорость попадания к вам информации, в том числе в виде ревтитов такова, что побуждает вас к быстрой ответной реакции, (4) смс-гейты (не дешевые пока только у нас) делают твиттер самым обычным смс (но только с мультикастом на друзей), который по определению супероперативен, (5) все это вместе в подталкивает к оперативному ответному написанию текста

5. Простота. Простые системы побеждают сложные. В unix «всё — это файл». В twitter «всё — это поиск». При помощи такого незамсловатого (но доведенного до совершенства в том числе то 1-2 сеундной латентности в real-time) механизма как полнотекстовый поиск, по сути, в твиттере сделано всё. Твиты автора — это ПОИСК по первому слову (всегда имя автора), ответы на ваши твиты — это ПОИСК вашего имени, но «с собакой», группы — это ПОИСК «слова-группы» но с хэштегом. Даже сообщества сделаны через ПОИСК. Вдумайтесь, сколько нужно сделать действий чтобы создать сообщество для какого нибудь события в ЖЖ, выбрать его при написании поста, написать туда пост, рассказать о нём друзьям, им, в свою очередь, выбрать это сообщество, пройти процедуру присоединения к сообществу, написать туда пост, решить проблему с кросспостом и тем, что не все читающие, прочитают то, что вы написали в сообщество, и тд и тп. В твиттере сообщество создается в момент, когда вы пишете твит: вы выбираете слово для сообщества и помечаете его хэштегом. Всё. Сообщество создано. Все друзья о ней тоже уже узнали, так как они прочитали ваш твит. Чтобы им написать «в сообщество» им надо лишь упомянуть нужное слово в твите. Чтобы новичку присоединиться к сообществу достаточно написать такое же слово с тегом в своем твите, его прочитают интересующиеся и зафоловят если он не спамер (иначе заблокируют и см пп выше). Заодно этот механизм — идеальный способ задавать вопросы лектору, спорить на круглых столах и тд и тп.

Ну а минусы твиттера?

Наверное они проистекают из плюсов, но я их не знаю.

Безопасное испытание нового скрипта iptables

Системные администраторы иногда сталкиваются с задачей написания нового / изменения существующего скрипта фаервола.

Когда-то давно (во времена моей админомолодости) я слышал присказку: правка фаера на удаленном хосте - к дальней поездке.

Так вот, есть небольшая последовательность команд, которая позволяет больше не вспоминать про присказку:

# iptables-save > /root/iptables.save && /path_to_script/your_new_script.sh && sleep 30 && iptables-restore < /root/iptables.save

Как всегда все гениальное просто. Узал я об этом когда-то от тов. Михаила Карандашева aka madox. Глядишь, еще кому поможет :)

пятница, 18 июня 2010 г.

About a pig and a chicken :)

A pig and a chicken are walking down a road. The chicken looks at the pig and says, “Hey, why don’t we open a restaurant?” The pig looks back at the chicken and says, “Good idea, what do you want to call it?” The chicken thinks about it and says, “Why don’t we call it ‘Ham and Eggs’?” “I don’t think so,” says the pig, “I’d be committed, but you’d only be involved.”

http://en.wikipedia.org/wiki/Scrum_(development)

понедельник, 24 мая 2010 г.

Apache mod_rewrite - Modifying the Query String

By default, the query string is passed through unchanged. You can, however, create URLs in the substitution string containing a query string part. Simply use a question mark inside the substitution string to indicate that the following text should be re-injected into the query string. When you want to erase an existing query string, end the substitution string with just a question mark. To combine new and old query strings, use the [QSA] flag.

Origin.

суббота, 27 февраля 2010 г.

Мегафон порадовал.

Являюсь я счастливым владельцем 3G-модема HUAWAY, приобретенного с подпиской Мегафона.

До последнего времени сей девайс чудесно обнаруживался моей Fedor'ой как модем. Соответственно, подключение к Сети настраивалось в 3-4 клика мышью в мастере настройки модемного соединения NetworkManager'а. Но вот пришли обновления udev и NetworkManager'а. Очень неприятные, надо сказать, обновления.

"Благодаря" первому девайс перестал обнаруживаться как модем. Откат обновлений исправил ситуацию. Но тут подоспело обновление NetworkManager'а, после которого модемное подключение через оный перестало работать вообще :( Подробнее здесь.

С горя решил я заглянуть в flash-раздел, который располагается на том же девайсе. И, не поверите, среди виндоподобного хлама я узрел директорию Linux. В ней оказался дистрибутив программы аналогичной, что пользуют с модемом под Windows. Установка с помощью ./install оказалась простой и удобной: спросила куда лучше развернуться, развернула свою JRE, развернула себя. :)

Сия программа видит девайс и устанавливает соединение! Ура, я в Сети. Спасибо ребятам из Мегафона, за продуманность сервиса.

Теперь можно неторопясь ждать, когда все-таки пофиксят это, чтобы проверить это. Т.к. после последнего обновления udev, даже даунгрейд не помогает.

понедельник, 18 января 2010 г.

Сборка примеров plplot под Fedora x86_64

plplot - это чудесная библиотека, позволяющая формировать графики и отображать их на экран либо сохранять в файл. Главная прелесть библиотеки заключается в том, что она позволяет не заморачиваться на GUI и графическом приложении, что мне собственно и понадобилось. Кому интересно, библиотека имеет громадную пачку биндингов от C++ до Perl. Но мне лично нужен C.

Прежде чем встараивать библиотеку в мою прогу, решил я собрать plplot'ские примеры. На моем ноуте живет Fedora x86_64, а програма, которую я разрабатываю собирается пока только под i386. Соответственно, и примеры мне нужно было собрать под i386.

Что установлено:

$ yum list plplot\*
Installed Packages
plplot.x86_64            5.9.5-1.fc12         @fedora
plplot-devel.i686        5.9.5-1.fc12         @fedora
plplot-libs.i686         5.9.5-1.fc12         @fedora
plplot-libs.x86_64       5.9.5-1.fc12         @fedora
plplot-qt.i686           5.9.5-1.fc12         @fedora
plplot-qt.x86_64         5.9.5-1.fc12         @fedora
plplot-qt-devel.i686     5.9.5-1.fc12         @fedora
plplot-tk.x86_64         5.9.5-1.fc12         @fedora

Для начала скопировал всю директорию с примерами из /usr/share/plplot5.9.5/examples/ к себе в домик.

$ make
cd c; make
make[1]: Entering directory `/home/neuron/study/development/plplot_examples/c'
/usr/bin/gcc x01c.c -o x01c `pkg-config --cflags --libs plplotd`
Package plplotd was not found in the pkg-config search path.
Perhaps you should add the directory containing `plplotd.pc'
to the PKG_CONFIG_PATH environment variable
No package 'plplotd' found
In file included from x01c.c:25:
plcdemos.h:14:22: error: plConfig.h: No such file or directory
plcdemos.h:15:20: error: plplot.h: No such file or directory
plcdemos.h:51:1: warning: "isnan" redefined
In file included from plcdemos.h:10,
                 from x01c.c:25:
/usr/include/math.h:257:1: warning: this is the location of the previous definition
x01c.c:26:21: error: plevent.h: No such file or directory
...
x01c.c:349: error: ‘y’ undeclared (first use in this function)
make[1]: *** [x01c] Error 1
make[1]: Leaving directory `/home/neuron/study/development/plplot_examples/c'
make: *** [c/x01c] Error 2

Локализуем ошибку.

$ pkg-config --cflags --libs plplotd
Package plplotd was not found in the pkg-config search path.
Perhaps you should add the directory containing `plplotd.pc'
to the PKG_CONFIG_PATH environment variable
No package 'plplotd' found

Ага. Информацию о пакете найти не может... Устанавливаем необходимую переменную окружения и идем дальше.

$ export PKG_CONFIG_PATH=/usr/lib/pkgconfig
$ pkg-config --cflags --libs plplotd
-I/usr/include/plplot  -lplplotd -lltdl -ldl -lm -lcsirocsa -lcsironn -lqhull -lqsastime -lfreetype

$ make
cd c; make
make[1]: Entering directory `/home/neuron/study/development/plplot_examples/c'
/usr/bin/gcc x01c.c -o x01c `pkg-config --cflags --libs plplotd`
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.4.2/../../../libplplotd.so when searching for -lplplotd
/usr/bin/ld: skipping incompatible /usr/lib/libplplotd.so when searching for -lplplotd
/usr/bin/ld: cannot find -lplplotd
collect2: ld returned 1 exit status
make[1]: *** [x01c] Error 1
make[1]: Leaving directory `/home/neuron/study/development/plplot_examples/c'
make: *** [c/x01c] Error 2

Собираться пытаться начинает, devel-пакета не находит. Помните, что установлен только plplot-devel.i686? Поэтому идем в директорию 'c' и правим Makefile. В параметры сборки добавляем ключ -m32. Так как меня интересовали только примеры на C, то в этой директории я и остался. Собираемся дальше.

$ make
/usr/bin/gcc x01c.c -m32 -o x01c `pkg-config --cflags --libs plplotd`
/usr/bin/ld: skipping incompatible /usr/lib64/libltdl.so when searching for -lltdl
/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [x01c] Error 1

Угадайте откуда косяк? Правильно. Собирраем мы теперь 32-битное приложение и зависимости ему нужны 32-битные...

$ rpm -qf /usr/lib64/libltdl.so
libtool-ltdl-devel-2.2.6-17.fc12.x86_64
$ sudo yum install libtool-ltdl-devel.i686

Далее таким же образом выяснилась необходимость qhull-devel.i686, freetype-devel.i686, gtk2-devel.i686, atk-devel.i686, glib2-devel.i686, pango-devel.i686, cairo-devel.i686 и fontconfig-devel.i686. И вуаля:

$ make
/usr/bin/gcc x01c.c -m32 -o x01c `pkg-config --cflags --libs plplotd`
/usr/bin/gcc x02c.c -m32 -o x02c `pkg-config --cflags --libs plplotd`
...
/usr/bin/gcc x31c.c -m32 -o x31c `pkg-config --cflags --libs plplotd`
/usr/bin/gcc x32c.c -m32 -o x32c `pkg-config --cflags --libs plplotd`

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

P.S. Не зря Bugzill'е есть репорт об ошибках при сборке примеров ;) Там, кстати, решили баг не фиксать кажется...