k001
k001
:...
Back Viewing 60 - 80 Forward
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 -- ну очень удобно!

Tags: ,
vimperator

Пробую плагин vimperator. Что-то в этом есть...

map g :tabopen http://www.google.com/search?q= <-- так не делайте, gg идёт в начало документа, как положено.

Tags:
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).

Ну и ещё там много всего есть...

Tags: ,
век живи, век учись...

... дураком помрёшь.

Открыл ответы к задачке с 1 <= level <= 5. Практически все ответили правильно, всем зачёт. :)

Из комментов узнал для себя две интересные вещи:

1. Питон такие вещи писать позволяет и интерпретирует их так, как задумал программист (сообщил [info]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. Перл не позволяет так писать, ругается (сообщил [info]fenster@lj).

3. gcc -Wall тоже не хуже перла, ругается на такой код (сообщаю вам я сам):
warning: comparisons like X<=Y<=Z do not have their mathematical meaning

глюки в 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 -- ещё не знаю, полетит ли...

Tags: , , ,
code wtf

Вот такой эпический код сегодня встретился:

        assert '(( 1 <= level <= 5))'


В комментах желающие могут рассказать, почему это не работает. Завтра расскриню.

Да, это написано на bash, но на С будет примерно так же.

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

Tags: ,
про Линукс, личную жизнь и солёные огурцы

В [info]ru_linux@lj творится дикое необузданное веселье, хотя вроде не первое апреля. Ну и я тоже поучаствовал.

Tags: , ,
рутконф

Я писал только что, что все рассказывают про виртуализацию. Таки да, все.

Андрей Бешков рассказывает сегодня про 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?

rootconf day 2

Рассказ про вчерашний рутконф закончен, читать тут.

Сегодня до последнего готовился к докладу, хотелось как можно больше рассказать, ибо тема-то большая. Получилось, наверное, нагромождение, хотя я старался ограничиться темой управления ресурсами. Кстати, меня можно было наблюдать в онлайне -- интересно, видел кто-нибудь? Жалко, если никто не видел.

Дальше человек из РедХата рассказывал про виртуализацию (на слайде у него написано, что у Virtuozo (с одной z), Linux VServer, Sun Containers плохая изоляция, а спросить, чем именно плохая, не удалось).

Вообще много докладов про виртуализацию (я бы даже сказал, что слишком много). Microsoft воспевает Hyper-V (а на вопросы про проброс USB или там PCI устройств говорит, что это вам не нужно), Citrix пиарит Xen, Sun рассказал про VirtualBox, ну и так далее и тому подобное. Только я не совсем про OpenVZ рассказал, а больше про управление ресурсами.

Да, слайды моего доклада доступны тут.

LVEE

Как-то я пропустил такой ивент, как LVEE. Надо непременно будет посетить их с докладом. Организаторы -- "Minsk Linux Users Group, а также активисты из Гродно и Бреста".

готовимся к RootConf-2009

Готовлю презентацию для RootConf-2009 (собственно, тезисы моего доклада тут).

Впервые на моей памяти презентацию надо делать, используя шаблон от организаторов конференции! Уточню -- случаи использования шаблонов были (шаблон под LaTex для статьи в сборник докладов LinuxSymposium), но не для презентаций. А тут вот как. Занятно и странно, ну да ладно.

Шаблон прислали в четырёх форматах, три для ПауэрПойнта, один для ОупенОфиса. Хорошо.

Только весь текст (там примеры всякие и пояснения) куда-то расползся. Я заподозрил неладное, и точно -- большинство контента использует шрифт Calibri (придумавшему название пАдонку -- зачОт!) (да-да, я понимаю, что это от слов "колибри" и "калибр", и призвано, наверное, отразить ювелирную точность дизайнеров шедевра). В общем, как я понял, этот самый Калибри нельзя легально использовать под Linux, не купив его (в отличие от предыдущих, входящих в так называемый microsoft truetype corefonts). Вот такой удар со стороны организатора. Плохо.

Неприятно, но скачал, поставил в ~/.fonts, смотрю -- всё нормально стало, ничего никуда не растопыривается. Хорошо.

Дальше. На первой странице большой такой логотип RootConf и много оранжевого цвета. Как туда добавить чёрный с зелёненьким логотип OpenVZ, чтобы он не смотрелся инородно -- не совсем понимаю. На каждом последующем слайде тоже в верхнем левом углу логотип RootConf, надпись "RootConf-2009" и меленько слова "Профессиональная конференция системных администраторов", в правом нижнем -- абстракция оранжевого цвета. А более всего я не понимаю, зачем это надо -- в каждом докладе на каждом слайде показывать логотип конференции, на которой этот доклад рассказывается? Чтобы люди не забыли, куда они попали, что ли? Я, в конце концов, не про конференцию рассказываю, а про свой проект... Плохо.

Буду пытаться всё это как-то совместить, и рыбку, так сказать, съесть, и на самокате покататься.

PS это второй шаблон, улучшенный(!) -- в первом верхний логотип был не в углу, а занимал почти всю верхнюю шапку, то есть то место, где обычно название слайда. Учитывая, что формат слайдов 16:9, там и так места по вертикали немного...

mkdir/chdir эксплойт

Update: сей пост был как-то неправильно опубликован и посему не попал, похоже, во френдленты. Посему выкладываю его вновь.

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

  1. Привести его текст полностью.
  2. Устроить что-то вроде викторины.
текст программки )

Вопросы будут такие:

  1. Что и почему произойдёт в Линукс-системе, где такое запустят?
  2. Почему OpenVZ от этого помогает?

Комменты скринятся. Сам отвечу в понедельник после обеда.

Tags: , ,
РусКрипто

Воскресенье, раннее утро, все спят, а я допиваю кофе и выезжаю в подмосковный пансионат "Липки", что близ Звенигорода, с целью прочитать доклад.

Засада в том, что там на два часа пять докладов, а то, что я анонсировал и приготовил, меньше чем за полчаса не расскажешь. Придётся слушателям выбирать -- либо про OpenVZ, либо про управление ресурсами и эксплойты.

Кстати, об эксплойтах. Никогда не запускайте следующий страшный и вредоносный код на Си продакшен машине -- всё умрёт! А в контейнере -- сколько угодно. Я предупредил.

while (1) {
	mkdir("somedir", S_IRWXU);
	chdir("somedir");
}

Tags: , ,
xserver crash

Очуметь. Открываем в браузере некую страничку, и иксы падают! Подозреваю, всё это проклятый XComposite.

backtrace )

Tags: ,
да не убоимся 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).

sudo: epic fail

На одной системе (в VE) у меня смешно глючила sudo -- писала три раза, что пароль неправильный, и отваливалась. Я стал думать на sudo, на pam, проверил там всё...

А оказалось всё до смешного просто -- вместо устройства /dev/tty на системе был почему-то простой файл.

Tags: ,
как "поймать" процесс

Имеется процесс, который хочется пострейсить. Проблема в том, что он суидный, диалоговый, и запускается не из-под рута, а strace надо запускать из-под рута.

Наверное, следовало запустить strace -u myuser, но я такого флага не знал, потому что тупой. Поэтому написал вот такую машинерию:
while ! strace -oout -p $(ps --no-header -o pid -C sudo); do :; done

Пояснения.под кат )

Tags: ,
DB-MV78100-A

Прислали мне игрушку.
boot log )

Сделал я для игрушки ядро, а оно не бутится:

Read more... )

В свои ядра, конечно, бутится и работает.

Говорят, Марвелл сделает на базе этого проца нетбук. По-моему, заманчиво.

javascript

Как это так случилось, что в JavaScript нет операции типа sleep, ну то есть чтобы сделать задержку. Там есть setTimeout(), который запустит указанную функцию через указанное время, но вот чтобы приостановить выполнение основного треда — я не нашёл.

Или я тупой?

Посчитать до 10000 не предлагайте, пожалуйста.

Update: вот такое нашёл, кажется, работает, во всяком случае в Thunderbird'е.

function sleep(millis) {
        var notifier = new EventNotifier();
        setTimeout(notifier, millis);
        notifier.wait->();
}    


Update2: ан нет, не работает нифига.

Back Viewing 60 - 80 Forward