April 2032
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
4/29/09 12:17 am
vimperator so far
Осваиваю vimperator. Ощущения странные.
Уже понял, что зря заремапил g на открытие гуглопоиска, потому что gg переходит в начало страницы (уже нажимал на автомате), а гуглопоиск есть итак (:[tab]open my search words или :[tab]open google my search words).
Когда пишешь :[tab]open и дальше часть УРЛа, который раньше открывал, то есть делаешь поиск по хистори, вылетают варианты, и хочется ходить по ним стрелочками. Не одному мне хочется, кстати. Так вот, выяснилось, что ходить полагается табом и шифт-табом.
Ещё поведение этого комплишена регулируется (как и в виме) через :set wildmode. Дефолтное значение меня устраивает более остальных.
Хинтами пользоваться пока не научился, тыкаю мышкой по старинке.
В ~/.vimperatorrc у меня пока всего ничего: command! dom :emenu Tools.DOM Inspector set guioptions=rbn
:dom -- ну очень удобно!
4/27/09 05:30 pm
vimperator
Пробую плагин vimperator. Что-то в этом есть...
map g :tabopen http://www.google.com/search?q= <-- так не делайте, gg идёт в начало документа, как положено.
4/21/09 12:52 pm
neat tricks with top
Наверное, все пользуются утилитой top время от времени.
Не все знают, что она умеет разноцветно выводить. Для этого надо нажать z. Второй раз нажать -- опять будет чёрно-белое.
При этом там начинают выделяться процессы в состоянии R (running). Выделяться они могут либо ярким цветом, либо сменой цвета фона. Для изменения типа выделения нажимайте b.
Если процессы в R не выделяются, нажмите y.
Ещё top, как известно, сортирует список процессов, наверху оказываются те, кто потребляет много CPU. Если нажать заглавную M, то будет сортировка по памяти. Чтобы обратно вернуться к сортировке по CPU, нажимайте заглавную P.
Тот параметр, по которому сейчас идёт сортировка, тоже можно подсветить -- нажмите x.
Более универсальный способ задать колонку, по которой top будет сортировать -- это клавиши < и >, которые двигают колонку, по которой идёт сортировка, влево и вправо.
Настроить цвета, которыми всё это выводится, можно, нажав заглавную Z.
Чтобы все ваши настройки сохранить, нажмите заглавную W, при этом текущая конфигурация запишется в ~/.toprc.
Чем я ещё пользуюсь?
Нажав s, можно задать интервал обновления, например 0.5 или даже 0.
Нажав k, можно послать сигнал процессу.
Нажав c, можно увидеть целиком аргументы командной строки каждого процесса (насколько в ширину хватит терминала, конечно).
Нажав H, можно увидеть отдельные треды (как было в Linux kenrel 2.4).
Ну и ещё там много всего есть...
4/20/09 12:36 pm
век живи, век учись...
... дураком помрёшь.
Открыл ответы к задачке с 1 <= level <= 5. Практически все ответили правильно, всем зачёт. :)
Из комментов узнал для себя две интересные вещи:
1. Питон такие вещи писать позволяет и интерпретирует их так, как задумал программист (сообщил shep256@lj), то есть выражение 1 <= level <= 5 будет возвращать true, если level принимает значения от 1 до 5, и false в противном случае! Вот что говорит по этому поводу питонодокументация: Comparisons can be chained arbitrarily; for example, x < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).
2. Перл не позволяет так писать, ругается (сообщил fenster@lj).
3. gcc -Wall тоже не хуже перла, ругается на такой код (сообщаю вам я сам): warning: comparisons like X<=Y<=Z do not have their mathematical meaning
4/20/09 11:36 am
глюки в CentOS 5
Такие интересные глюки я ловил на прошлой неделе (а на этой, похоже, продолжаю)! На CentOS 5 (который самый первый, без апдейтов).
1. OpenVZ ядро не ставится. Точнее, ставится, но не грузится, что-то там в initrd не то. Сравнил initrd от "штатного" ядра и от openvz'шного -- никакой разницы. Но не грузится. Я и так, и эдак, и initrd сам пересобирал -- никак.
Сказал yum update mkinitd -- и всё полетело.
2. Есть скрипт на bash, читает (при помощи while read line; do ... done < /proc/file) файлик из /proc. Так вот, его как-то заклинивает, и read возвращает постоянно одну и ту же строку (первую из файла). Соотвественно процесс в состоянии R (running) и бесконечный цикл. Посмотрел его с пом. strace и gdb -- ничего толком не увидел (update: на самом деле увидел, что оно висит в _dl_sysinfo_int80, что навело меня на мысль, что что-то может быть не так в glibc).
Сказал yum update bash glibc -- и всё полетело.
3. Тоже какие-то скрипты на шелле, иногда сразу несколько запущено, и делают они в числе прочего rpm -q somepkg. Вот сейчас пришёл на работу, а там висит два процесса /usr/lib/rpm/rpmq -q somepkg. Висят себе и висят, шеллы-родители их ждут. Наверное, между собой задедлочились.
Сказал yum update rpm -- ещё не знаю, полетит ли...
4/17/09 05:04 pm
code wtf
Вот такой эпический код сегодня встретился:
assert '(( 1 <= level <= 5))' В комментах желающие могут рассказать, почему это не работает. Завтра расскриню. Да, это написано на bash, но на С будет примерно так же.
4/17/09 02:33 pm
git
Выношу из комментов.
Если кто вдруг думает, что пользоваться системой контроля версий трудно, что надо как-то там учиться этому, тратить время... то вот вам более чем краткое введение в git:
$ cd myprog
$ ls
a.c b.c b.h Makefile
$ git init
Initialized empty Git repository in /home/kir/myprog/.git/
// это надо, чтобы гит знал, чьи коммиты
$ git config --add user.name "John Doe"
$ git config --add user.email "john@doe.org"
// добавляем файлы
$ git add a.c b.c b.h Makefile
// создаём коммит
$ git commit -as
// открывается редактор, пишем что-то вроде initial commit,
// выходим с сохранением
Created initial commit 75458fd: initial commit
4 files changed, 12 insertions(+), 0 deletions(-)
create mode 100644 Makefile
create mode 100644 a.c
create mode 100644 b.c
create mode 100644 b.h
// смотрим лог
$ git log
commit 75458fdd6f132014b20c5019afd660d8703a78a2
Author: John Doe <john@doe.org>
Date: Fri Apr 17 13:51:31 2009 +0400
initial commit
Signed-off-by: John Doe <john@doe.org>
// делаем правку
$ vim a.c
// смотрим правку
$ git diff
diff --git a/a.c b/a.c
index 1cc11f7..c3e3aa2 100644
--- a/a.c
+++ b/a.c
@@ -2,5 +2,6 @@
#include "b.h"
int main(void) {
+ printf("Entered main()\n");
return b();
}
// коммитим правку
$ git commit -s a.c
// описываем правку, выходим с сохранением
// снова смотрим лог
$ git log
commit 2cd08484a3a192b7234bbe9da672e8bd054f1606
Author: John Doe <john@doe.org>
Date: Fri Apr 17 13:54:37 2009 +0400
main(): added debug printf
Signed-off-by: John Doe <john@doe.org>
commit 75458fdd6f132014b20c5019afd660d8703a78a2
Author: John Doe <john@doe.org>
Date: Fri Apr 17 13:51:31 2009 +0400
initial commit
Signed-off-by: John Doe <john@doe.org>
Ну и так далее. git очень мощная штука, распределённая, быстрая, крайне удобная. Впрочем, лучше вот посмотрите кино — создатель про него рассказывает очень задорно и познавательно. Кстати, и SVN там тоже упоминается. Torvalds on Git
4/16/09 07:48 pm
про Линукс, личную жизнь и солёные огурцы
В ru_linux@lj творится дикое необузданное веселье, хотя вроде не первое апреля. Ну и я тоже поучаствовал.
4/14/09 03:36 pm
рутконф
Я писал только что, что все рассказывают про виртуализацию. Таки да, все.
Андрей Бешков рассказывает сегодня про Hyper-V, прямо сейчас можно его видеть в живой трансляции.
Картинка архитектуры Hyper-V очень похожа на картинку архитектуры Xen. Говорят, что они, собственно, взяли все части Xen, которые позволила лицензия, а остальные переписали. Прозвучала также фраза "Linux с поддержкой Hyper-V" -- это, собственно, Linux over Xen, то есть ядро, обученное тому, что снизу у него лежит не железо, а гипервизор Xen. То есть гипервизор Hyper-V отдаёт вверх такой же интерфейс, как и Xen. Наводит на мысли.
А вообще что-то странное происходит в MS. Настройка Hyper-V в каком-то текстовом окошке, там меню в ДОСовском стиле 20-летней давности, типа "нажмите 1 для этого, 2 для этого". Это что, приложение, написанное на power shell? Это же чудовищно!! В линуксе нету никакого powershell, но есть тот же zenity или xmessage. Кто мешает заскриптовать простой GUI?
4/14/09 03:06 pm
rootconf day 2
Рассказ про вчерашний рутконф закончен, читать тут.
Сегодня до последнего готовился к докладу, хотелось как можно больше рассказать, ибо тема-то большая. Получилось, наверное, нагромождение, хотя я старался ограничиться темой управления ресурсами. Кстати, меня можно было наблюдать в онлайне -- интересно, видел кто-нибудь? Жалко, если никто не видел.
Дальше человек из РедХата рассказывал про виртуализацию (на слайде у него написано, что у Virtuozo (с одной z), Linux VServer, Sun Containers плохая изоляция, а спросить, чем именно плохая, не удалось).
Вообще много докладов про виртуализацию (я бы даже сказал, что слишком много). Microsoft воспевает Hyper-V (а на вопросы про проброс USB или там PCI устройств говорит, что это вам не нужно), Citrix пиарит Xen, Sun рассказал про VirtualBox, ну и так далее и тому подобное. Только я не совсем про OpenVZ рассказал, а больше про управление ресурсами.
Да, слайды моего доклада доступны тут.
4/13/09 11:29 pm
LVEE
Как-то я пропустил такой ивент, как LVEE. Надо непременно будет посетить их с докладом. Организаторы -- "Minsk Linux Users Group, а также активисты из Гродно и Бреста".
4/6/09 07:33 pm
готовимся к RootConf-2009
Готовлю презентацию для RootConf-2009 (собственно, тезисы моего доклада тут).
Впервые на моей памяти презентацию надо делать, используя шаблон от организаторов конференции! Уточню -- случаи использования шаблонов были (шаблон под LaTex для статьи в сборник докладов LinuxSymposium), но не для презентаций. А тут вот как. Занятно и странно, ну да ладно.
Шаблон прислали в четырёх форматах, три для ПауэрПойнта, один для ОупенОфиса. Хорошо.
Только весь текст (там примеры всякие и пояснения) куда-то расползся. Я заподозрил неладное, и точно -- большинство контента использует шрифт Calibri (придумавшему название пАдонку -- зачОт!) (да-да, я понимаю, что это от слов "колибри" и "калибр", и призвано, наверное, отразить ювелирную точность дизайнеров шедевра). В общем, как я понял, этот самый Калибри нельзя легально использовать под Linux, не купив его (в отличие от предыдущих, входящих в так называемый microsoft truetype corefonts). Вот такой удар со стороны организатора. Плохо.
Неприятно, но скачал, поставил в ~/.fonts, смотрю -- всё нормально стало, ничего никуда не растопыривается. Хорошо.
Дальше. На первой странице большой такой логотип RootConf и много оранжевого цвета. Как туда добавить чёрный с зелёненьким логотип OpenVZ, чтобы он не смотрелся инородно -- не совсем понимаю. На каждом последующем слайде тоже в верхнем левом углу логотип RootConf, надпись "RootConf-2009" и меленько слова "Профессиональная конференция системных администраторов", в правом нижнем -- абстракция оранжевого цвета. А более всего я не понимаю, зачем это надо -- в каждом докладе на каждом слайде показывать логотип конференции, на которой этот доклад рассказывается? Чтобы люди не забыли, куда они попали, что ли? Я, в конце концов, не про конференцию рассказываю, а про свой проект... Плохо.
Буду пытаться всё это как-то совместить, и рыбку, так сказать, съесть, и на самокате покататься.
PS это второй шаблон, улучшенный(!) -- в первом верхний логотип был не в углу, а занимал почти всю верхнюю шапку, то есть то место, где обычно название слайда. Учитывая, что формат слайдов 16:9, там и так места по вертикали немного...
4/5/09 06:37 pm
mkdir/chdir эксплойт
Update: сей пост был как-то неправильно опубликован и посему не попал, похоже, во френдленты. Посему выкладываю его вновь.
Судя по всему, читателям моей уютненькой жежешечки понравился эксплойт из предыдущего сообщения. Поэтому я решил
- Привести его текст полностью.
- Устроить что-то вроде викторины.
( текст программки )
Вопросы будут такие:
- Что и почему произойдёт в Линукс-системе, где такое запустят?
- Почему OpenVZ от этого помогает?
Комменты скринятся. Сам отвечу в понедельник после обеда.
4/5/09 08:15 am
РусКрипто
Воскресенье, раннее утро, все спят, а я допиваю кофе и выезжаю в подмосковный пансионат "Липки", что близ Звенигорода, с целью прочитать доклад.
Засада в том, что там на два часа пять докладов, а то, что я анонсировал и приготовил, меньше чем за полчаса не расскажешь. Придётся слушателям выбирать -- либо про OpenVZ, либо про управление ресурсами и эксплойты.
Кстати, об эксплойтах. Никогда не запускайте следующий страшный и вредоносный код на Си продакшен машине -- всё умрёт! А в контейнере -- сколько угодно. Я предупредил.
while (1) {
mkdir("somedir", S_IRWXU);
chdir("somedir");
}
4/1/09 12:36 am
xserver crash
Очуметь. Открываем в браузере некую страничку, и иксы падают! Подозреваю, всё это проклятый XComposite.
( backtrace )
3/25/09 04:43 pm
да не убоимся KLOC
Я в блоге OpenVZ написал о результатах небольшого исследования, которое сделал Паша Емельянов. Тут пишу примерно о том же самом по-русски.
Собственно, целей исследования было две: * прикинуть количество изменений, которые OpenVZ патчсет вносит в ядро; * сравнить с количеством изменений, которые вносит в ядро RHEL.
Были взяты три ядра: * RHEL5.3 2.6.18-128.1.1.el5 (на базе 2.6.18); * OpenVZ 2.6.18-028stab062.1 (на базе вышеупомянутого RHEL5.3); * OpenVZ 2.6.27-aivazovskiy.1 (на базе 2.6.27).
По результатам подсчётов нарисовали картинку, которую можно наблюдать во всей красе, тыкнув тут или в превьюшку справа. Для OpenVZ ядер мы различаем собственно основные изменения в ядре и то, что можно собрать как отдельные модули. Патчи RHEL ядра мы делим на несколько категорий, типа drivers, Xen, ext4; всё, что ни в одну из этих категорий не входит, записываем в other.
Выводы из разглядывания оной картинки можно сделать вот какие: 1. Даже если выкинуть из набора патчей RHEL5 драйвера, то остаётся 434 добавленных/удалённых KLOC*, что в 8.5 раз больше, чем весь OpenVZ патч (51 KLOC). Нет, конечно, патч большой, но не такой уж и большой. 2. Основная часть патча OpenVZ (то есть без модулей) для 2.6.27 ядра похудела на 40% по сравнению с 2.6.18. Положительно сказываются усилия по интеграции контейнеров в мейнстрим.
Вот такие пироги.
* KLOC -- это тысяча строчек кода (Kilo-Lines of Code).
3/23/09 06:17 pm
sudo: epic fail
На одной системе (в VE) у меня смешно глючила sudo -- писала три раза, что пароль неправильный, и отваливалась. Я стал думать на sudo, на pam, проверил там всё...
А оказалось всё до смешного просто -- вместо устройства /dev/tty на системе был почему-то простой файл.
3/23/09 06:08 pm
как "поймать" процесс
Имеется процесс, который хочется пострейсить. Проблема в том, что он суидный, диалоговый, и запускается не из-под рута, а strace надо запускать из-под рута.
Наверное, следовало запустить strace -u myuser, но я такого флага не знал, потому что тупой. Поэтому написал вот такую машинерию: while ! strace -oout -p $(ps --no-header -o pid -C sudo); do :; done
Пояснения.( под кат )
3/20/09 05:18 pm
DB-MV78100-A
Прислали мне игрушку. ( boot log )
Сделал я для игрушки ядро, а оно не бутится:
( Read more... )
В свои ядра, конечно, бутится и работает.
Говорят, Марвелл сделает на базе этого проца нетбук. По-моему, заманчиво.
3/18/09 01:36 am
javascript
Как это так случилось, что в JavaScript нет операции типа sleep, ну то есть чтобы сделать задержку. Там есть setTimeout(), который запустит указанную функцию через указанное время, но вот чтобы приостановить выполнение основного треда — я не нашёл.
Или я тупой?
Посчитать до 10000 не предлагайте, пожалуйста.
Update: вот такое нашёл, кажется, работает, во всяком случае в Thunderbird'е.
function sleep(millis) {
var notifier = new EventNotifier();
setTimeout(notifier, millis);
notifier.wait->();
}
Update2: ан нет, не работает нифига.
|