Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

WebYaST: Switch from XML into JSON (day one)

This week I'll continue on project that started on recent WebYaST Workshop:WebYaST_Performance

Result from previous tests was that bundled reXML parser is slowest from all ;-)
Now I'd like to continue with comparison XML and JSON performance. For this purpose I created webclient json branch in our git repository.


To install profiling extension you'll need to add repository http://download.opensuse.org/repositories/devel:/languages:/ruby:/extensions/openSUSE_11.2
and install package rubygem-ruby-prof. Also to see results from profiling you'll need kcachegrind package.

I started some tests with Firefox firebug extension (5 measurements from each and then calculate average). First one without any modification, then with profiling enabled.

xml (rexml), no benchmarking xml (rexml), ruby-prof enabled
5.53 6.3
6.53 5.71
6.15 5.79
6.55 5.78
6.15 5.99
6.182 5.914







On this picture you can see (selected line is xml parsing process) with luck we can speed up 1/5 times (about 1 sec in my case). There's almost no difference between creating json and xml output: Calling http://localhost:4984/groups.xml takes average time 655ms, http://localhost:4984/groups.json takes average time 621.4ms.
In rest-service there are some problems - json output is not valid, jreidinger is working on it.
I'll continue tomorrow.
a silhouette of a person's head and shoulders, used as a default avatar

Linux-cертификации Novell

Мой дневник включили в ленту блогов русскоязычной планеты SUSE, и этот пост — первый в сообществе openSUSE. Приветствую всех участников и читателей ленты!

В рамках данной статьи я решил сделать описание имеющихся сертификаций Novell по Linux. Linux — это основная, продвигаемая и рекомендуемая операционная система для всех продуктов Novell, поэтому эта компания достаточно давно разработала набор курсов для подготовки специалистов и экзамены, подтверждающие этот уровень. Как показывает проведенное мной беглое исследование линуксовых форумов, данный вопрос, к сожалению и несмотря на долгую историю своего существования, недостаточно известен в рамках сообщества. Я построю свое изложение следующим образом: сначала сделаю обзор имеющейся сертификации, затем скажу пару слов про то, как проходит экзамен. Если у кого будут вопросы — постараюсь по возможности ответить на них в комментариях. Просьба задавать вопросы в моем основном дневнике, поскольку мониторить что-то еще у меня не хватает времени.


Описание сертификаций и курсов я буду приводить по самой последней поддерживаемой версии SUSE Linux Enterprise 11. Для этого есть несколько причин. Первая заключается в том, что все имеющиеся сертификации по своим названиям, требованиям к знаниям и навыкам совместимы между имеющимися версиями SUSE за некоторыми исключениями, которые я отмечу. Вторая в том, что курсы по SLE 11 проработаны учебным отделом Novell значительно лучше по отношению к предыдущим версиям. Последовательность преподавания тем существенно улучшена (теперь все гораздо более логично), дополнены упражнения. И, естественно, что обучившись по SLE11, знаний хватит на то, чтобы администрировать все предыдущие версии SUSE :). Ради политкорректности я буду приводить ссылки на описание курсов на сайте Novell, а не учебного центра, где работаю :) . Те, кто заинтересуются — легко найдут описание приводимых ниже курсов и экзаменов на сайтах авторизованных учебных центров на русском языке. Материал, приводимый на сайте Novell, содержит также Certification Path - специальную схему, отражающую в графическом виде рекомендуемый процесс обучения и сертификации.

Итак, на данный момент по SUSE 11 имеются три ступеньки сертификации Linux-специалистов (требующих сдачи соответствующих экзаменов):

1. Novell Certified Linux Administrator (CLA) — самая первая ступенька для Linux-специалистов. На сегодняшний день ситуация такова: те, у кого уже есть сертификат LPIC-1, могут бесплатно получить сертификат от Novell. Данный сертификат, применительно к SUSE, удостоверяет следующие ваши знания и практические навыки:
  • базовый уровень владения системой, возможность использовать ее на рабочей станции и умение выполнять базовый набор задач;
  • умение пользоваться встроенной в систему справкой (страницы man и info), а также возможность находить необходимую информацию на сайте вендора дистрибутива;
  • знание структуры файловой системы Linux (FHS);
  • умение работать в консоли Linux;
  • умение работать со средствами пакетного менеджмента;
  • умение работать с правами доступа в системе;
  • умение добавлять в систему пользователей и группы;
  • умение работать с текстовыми редакторами;
  • умение ставить систему;
  • знание и понимание последовательности инициализации системы;
  • умение работать с процессами и сервисами системы;
  • знание и умение способов работы со средствами хранения файлов — создание разделов диска, файловых систем на них, работа с LVM и software RAID;
  • умение конфигурировать сеть средствами дистрибутива и командной строки, а также умение диагностировать и решать проблемы;
  • понимание того, как Linux работает с аппаратным обеспечением, умение администрировать udev;
  • умение настраивать и использовать средства удаленного доступа к системе;
  • умение использовать средства мониторинга системы;
  • умение работать с cron;
  • умение работать со средствами резервного копирования.

По SLE 11 для подготовки к сдаче данного экзамена рекомендуется прослушать курсы 3101 и 3102.

2. Novell Certified Linux Professional (CLP) — следующая, гораздо более серьезная сертификация. Она, естественно, включает в себя предыдущий уровень знаний и практических навыков плюс знание следующих тем:
  • установка и конфигурирование базовых сетевых сервисов, к которым относятся: NTP, xinetd, ftp;
  • установка и конфигурирование системы печати CUPS;
  • установка и конфигурирование OpenLDAP;
  • установка и конфигурирование Samba (в том числе настройка ее работы в связке с OpenLDAP);
  • установка и конфигурирование Web-сервера Apache (в том числе настройка openssl и Tomcat);
  • настройка и использование IPv6;
  • базовые знания по использованию средств мониторинга системы, умение находить и устранять проблемы производительности;
  • умение писать shell-скрипты;
  • умение пользоваться средствами автоматической установки SUSE для массового развертывания системы внутри предприятий (AutoYast и методы сетевой установки);
  • виртуализация с помощью Xen.

Для подготовки к сдаче экзамена рекомендуется прослушать (или иметь аналогичный объем знаний) курсы 3101, 3102, 3103. Сдавать данный экзамен можно и без наличия предыдущей сертификации.

2.5. Novell Certified Linux Desktop Professional (CLDP, пока на сайте Novell информации о нем нет) — это новая сертификация, которая появилась для 11-й версии SUSE. Она отражает умение администратора системы решать большинство проблем и задач, возникающих при поддержке рабочих станций пользователей SUSE Linux Enterprise Desktop. Для подготовки к сдаче экзамена и получению соответствующего сертификата имеется курс 3104, включающий в себя следующие темы:
  • базовые знания по настройке графического интерфейса в SUSE Linux Enterpise Desktop;
  • базовая настройка безопасности рабочей станции;
  • использование NetworkManager;
  • настройка и использование IPv6;
  • умение интегрировать SLED 11 в окружение Active Directory;
  • умение интегрировать SLED 11 в окружение Novell Open Enterprise Server;
  • умение интегрировать SLED 11 в окружение UNIX-систем (настройка клиентов NFS, OpenLDAP и CUPS);
  • настройка удаленного рабочего стола;
  • использование Multimedia и Email;
  • умение писать shell-скрипты;
  • умение пользоваться средствами автоматической установки SUSE для массового развертывания системы внутри предприятий (AutoYast и методы сетевой установки).
Данное звание (и курс) на схемах сертификации Novell расположены параллельно 3103, что заметно даже по тому, что некоторые из тем повторяются в обоих курсах.

3. Novell Certified Linux Engineer (CLE)— данная сертификация является самой высокой ступенькой. Для сдачи экзамена необходимо иметь сертификат предыдущего уровня (CLP) по предыдущей версии SUSE. Например, для сдачи экзамена на звание CLE11, кандидат обязан иметь сертификат CLP11 или CLP10. Для подготовки к сдаче данного экзамена рекомендуется курс 3107, включающий следующий набор тем:
  • продвинутая настройка сетевых интерфейсов (сетевые мосты, bonding, VLAN);
  • настройка и использование сетевых хранилищ файлов (SCSI, iSCSI);
  • продвинутое использование виртуализации XEN;
  • настройка безопасности сервера;
  • установка и настройка централизованного сервера обновлений;
  • подготовка сервера к возможным негативным ситуациям;
  • использование средств мониторинга системы.

Теперь пара слов про сами экзамены Novell. Это практические экзамены, которые содержат набор заданий, требующих своего решения. Для каждого экзамена есть набор курсов, которые рекомендуются к прослушиванию. Обязательного требования к предварительному обучению нет. Задание экзамена обычно описано достаточно детально в плане того, что именно нужно достичь. Не стоит тут пытаться показать все свои умения — достаточно просто выполнить то, что написано. Например, если указано, что необходимо настроить виртуальный хост Apache, запаролив доступ к нему, то так и следует сделать. Понятно, что кто-то из вас может знать, что самый правильный путь с точки зрения безопасности — это еще настроить SSL для доступа к нему. Но если вы решите сделать так — ваши усилия (и, что немаловажно, время) пропадут даром. Оценка задания производится бездушным скриптом, который вряд ли оценит красоту ваших решений. К слову, этому скрипту абсолютно не важно как именно вы будете решать поставленные задачи - настраивать что-то через средства командной строки или через Yast.

Экзамен сдается в учебных центрах, которые имеют необходимую авторизацию. Если вы решили сдать экзамен, то для этого вам необходимо сначала зарегистрироваться на сайте Novell, затем выбрать экзамен и тот учебный центр, в котором вы намерены его сдавать. На почту вам придет вся необходимая для сдачи экзамена информация. Ее лучше всего распечатать и принести с собой. Естественно, администратор центра тестирования сможет найти эту информацию, даже если вы ее не принесете, просто это займет время.

Сдача экзамена происходит путем удаленного доступа к виртуальным машинам через браузер с использованием Flash и Java-апплетов к нему. Я это пишу только для того, чтобы те кто хочет сдавать экзамен были морально готовы к задержкам ("тормозам", простыми словами) в его процессе (те, кто уже сдавал, легко поймут о чем я). Пока, на сегодняшний момент, они неустранимы, даже с учетом мощности машин, на которых происходит сдача экзамена, и широкого канала в сеть. Хорошие новости тут только в том, что это не повод для нервов, поскольку время на сдачу экзамена отводится с учетом этих задержек, и его (времени) обычно более чем достаточно. По моим личным наблюдениям, у большинства не сдавших экзамен сдавали (пардон за тавтологию) именно нервы, в то время как знаний у них хватало. Поэтому, готовясь к экзаменам, следует взять себя в руки, чтобы в процессе выполнения заданий у вас была холодная голова.

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

По выполнении заданий следует щелкнуть в браузере кнопку «End Exam» и согласиться с тем, что вы его действительно заканчиваете. После этого начнется процесс оценки выполнения вами контрольных заданий, по окончании которого на экране появится Score report, отражающий степень решения вами предложенных проблем с итоговым баллом. Там же будет написано сдали вы экзамен или нет. В случае успешной сдачи спустя день-два вам на почту придет сертификат в PDF-формате, который можно распечатать, повесить на стенку и гордиться им :). Что еще важно, после регистрации на сайте Novell у вас появляется собственный профиль, в котором будут указаны все ваши текущие сертификации и те сертификации, экзамены по которым вы можете сдавать.

Успехов в подготовке и сдаче экзаменов!

Полезные ссылки:
2. Профиль, где можно посмотреть свои сертификации (требует наличия аккаунта Novell). На сайт можно найти следующим образом: зайти на сайт novell.com, затем в раскрывающемся меню "Services & Support" разделе "Technical Training" найти пункт "Certification and Testing". Затем в меню слева выбрать "Certification"-"Certification db (login)"
3. Список всех авторизованных курсов Novell (с возможностью поиска).

a silhouette of a person's head and shoulders, used as a default avatar

Difficult, difficult...

KDE Project:

It is interesting to notice what is sometimes seen as difficult. "It's too hard for me, I can't do that." "I'll never be able to do that, that's nothing for me." Like if most things could be done instantly just by snapping one's fingers. They instead require all these tedious things like effort, trying, learning, practicing and so on. The funny thing is, figuring out things in the IT area is not really that demanding. Wanna write a Plasma applet? There's a step-by-step tutorial at Techbase, just follow it blindly and with a decent skill in reading and typing, tadda, there's a Plasma applet. Wanna a package in the build service? You can use another one as a template, find a tutorial on the wiki or just google for it, and if you'll be just a little lucky, a tool can even do the work for you.

For getting a good comparison of what can difficult actually mean, let me show you something I consider to be pretty hard to learn. To have a better contrast, let's go in some completely different area that has absolutely nothing to do with computers. So if you think something is difficult, instead of doing this whatever something, try doing for example the Salchow jump. And since I expect many people here have no idea what that is, it looks like this, performed by yours truly:

That's roughly it. I assume it looks quite unimpressive to anyone who's never tried it or anything close (and, possibly, in this specific case it probably looks quite unimpressive even to whose who have). Yet this thing was bloody hard to learn for me. I probably learnt coding with Qt quite decently with much less effort (although, that's one of Qt's selling points, isn't it). Writing .spec files and creating packages? Nah, eeeasy. Even getting into Xlib programming was probably less effort, and I read a good part of the Xlib manual as a part of that. I admit getting into compositing effects and adding them to KWin might have been harder than the Salchow though :). Still, for somebody whose reaction to the idea of writting an alternative KDE workspace shell was 'how hard can that be?', the Salchow proved to be an unexpectedly difficult matter.

I was first shown and explained the Salchow about 9 months ago. I think I needed about 2 or 3 months just to perform it in the most lame way that'd technically qualify, about as much as x = 1 qualifies for a math equation. The video is from April, i.e. more than 3 months on top. Today I can perform it somewhat higher and at slightly faster speed, but it still hardly qualifies for anything better than 'decent'. And while I hope it'll one day get to something I'd consider good, I'll probably never ever get to those crazy things like multiple rotations or anything even remotely close to what you can see on the TV, no matter how much and how hard I'd try. Do you still think that e.g. creating and maintaining a package is hard, compared to this? And don't even get me started on the next jumps ... the Salchow is actually easy. Try to think of this next time when you'd want to do something but would consider it too difficult (besides, take this from me, trying difficult things is actually much more interesting than the easy ones).

PS: Come to think of this, I've never thanked Danimo and Scott Wheeler, who happen to be ultimately reponsible for me starting with skating and having a lot of fun, as I'd probably never come across any such idea myself. So, well, thank you.

the avatar of Stephan Kulow

Buildservice development on 11.3

The build service (and any other of openSUSE infrastructure software using RoR) is using rails 2.3.5, because we once decided to harmonize on the version of SLE11 SP1. Of course the latest version has less bugs (usually), but mixing RoR versions between different developers and deployment is a nightmare, so we had to decide on one.

Now comes the catch: 11.3 has rails 2.3.8 and as such you can’t develop the build service on factory/11.3 as is. But the good news, openSUSE:Tools has all the right versions, so you can add the repo (zypper ar -r http://r.opensu.se/openSUSE:Tools/f/r) and then install zypper in -f rubygem-rack-1.0.1 rubygem-activesupport-2_3-2.3.5

To make sure, the next zypper dup is not going to take it away, use zypper al rubygem-rack rubygem-activesupport-2_3

a silhouette of a person's head and shoulders, used as a default avatar

Atualizações esporádicas - 3

Na minha constante preguiça de trocar o papel de parede do GNOME escrevi um script Python p/ fazer isso. A idéia original era colocar a entrada abaixo no cron, mas não deu certo (estou tentando descobrir o porquê): * * */30 * * /usr/bin/python /home/isis/bin/troca_wallpaper.py Por enquanto coloquei na inicialização da sessão (Sistema > Sistema > Sessões). Se eu usar o módulo gconf, recebo um
a silhouette of a person's head and shoulders, used as a default avatar

a silhouette of a person's head and shoulders, used as a default avatar

Livro - impressões

O nome completo é "Alla Ricerca della Via Più Breve - Un'Avventura Matematica". É. Grande e envolve matemática. Li em italiano porque foi o que eu consegui arranjar. O curioso é que não é a matemática de segundo grau de colégio, mas tópicos de Ciência da Computação apresentados dentro de uma narrativa.Não existe uma trama central do tipo que você não pode perder o nome de um personagem ou deixar

a silhouette of a person's head and shoulders, used as a default avatar

Details that sometimes do matter

Some things are really really tiny details, yet they can be annoying in way. Something that's been occassionally bugging me is that fact that KDE uses the same wallpaper as KDM background, the splashscreen background and desktop background, yet depending on the screen resolution it may not be exactly the same background - during login the picture may stretch or shrink at certain points. The times when decent monitor screens had a 4:3 ratio are a thing of the past, starting with LCD makers making 5:4 "narrow-screens", then changing their minds and making 16:10 or 16:9 wide-screens. The choice of screen resolutions is not that limited either and that means that the wallpaper has to be scaled ... and that was the problem. Plasma has code to select how to do the scaling, KSplashX has code for that and KDM has code for that, and yes, you guessed it, it's always a different code. So unlucky resolutions get different wallpapers from different code. Since I actually spent some time in the past trying to make the login as seamless as possible, this indeed made me twitch whenever I saw it.

Seeing this again while testing openSUSE 11.3 made me finally spend the time to patch the openSUSE package to use the same selection code in all the three components. We really lack polish in so many places :(. But now it looks like the change is almost not there - there's just a progressbar and logo shown during startup and that changes to the desktop. With compositing enabled there would be also the fade-in animation.

Seeing that 4.4's KDM had no support for differently sized wallpapers, I was about to submit a copy of Plasma's code there when I noticed that trunk has some code for it. Of course, different from the rest again. Also, the login sequence is basically just lucky to be so smooth. The splashscreen is supposed to stay visible until Plasma is ready with its wallpapers and panel layout. And there is code in KSMServer to ensure this. And Plasma uses it. Yet it's apparently not used properly - during the first login, when there is more setup to be done during login, it's perfectly possible to see how the panels are set up. Well ... maybe in time for openSUSE 11.3 + 1.

the avatar of Michael Löffler

Let’s beat the drum for openSUSE conference 2010

Robert and myself visited most open source projects attending LinuxTag 2 weeks ago and invited them to come to the openSUSE Conference – be it as visitor, giving a presentation or doing a workshop. Feedback was all over the place positive. But feedback isn’t enough – we’ll do some follow up to make some of them participate and all of us should now promote the openSUSE Conference where possible.

Let’s spread the word about the openSUSE Conference and its motto “Collaboration across borders”, invite developers of other communities and other projects to join as a visitor or to give a presentation on a topic which affects all of us or lets do a workshop, hack session or just having fun. Call for papers is open till July 31 – so now is the time to shape the conference. Send in our proposal or idea to cfp@opensuse.org.

Robert and gnokii created some artwork for the openSUSE conference which is perfect to add it on web pages or to print out the posters to do some promotion in your area.

openSUSE Conference in short:

  • October 20-23 in Nürnberg, Germany
  • Free entrance
  • 4 days conference with 4 tracks plus hack sessions and workshops
  • Topics:
    • Technology and Upstream Development
    • Education and Science
    • Business
    • User and Home
  • Everything is possible – just send an email to cfp@opensuse.org

a silhouette of a person's head and shoulders, used as a default avatar

Hack Week project: Cydin

Last week was a Hack Week at Novell, so I spent some time working on a new idea I've been cooking in the past weeks: a Community Add-in Repository for MonoDevelop, which I'm calling Cydin.

The idea is to have a web site where add-in developers can publish their MonoDevelop add-ins and make them available to all users. The site works like a build bot: it pulls the source code of add-ins from version control repositories, builds and packages them, and then publishes them in an add-in repository, to which MonoDevelop will be subscribed.

In one week I've been able to implement the basic functionality, although it still needs some polish before I can make it publicly available. I implemented the site using ASP.NET MVC. I didn't know much about MVC in ASP.NET, so it has been also great to learn something new.

Beware: I put zero effort to the visual design.

So, how does it work? This is the home page:


The first thing you have to do is to log in. Authentication will be based on OpenID, but this is not yet fully functional (I'm using the DotNetOpenAuth library but I'm having trouble making it work on Linux).

The home page is very simple. It shows a list of the projects owned by the user and a list of recent releases. I planed to include add-in browse and search options, but I had no time for this.

The Create Project link allows creating a new add-in project:


This page allows entering the add-in name, the identifier and a description. When clicking on Create, the source definition page is shown:


This page allows specifying the location of the source code of the add-in. Right now it only supports Subversion, but I plan to add support for GIT soon.

When specifying the URL of the subversion repo, there is a twist: if the URL ends with "/*" the build service will pull all directories bellow that URL, and each directory will be considered a
different release. So for example, if you specify:
https://test.googlecode.com/svn/trunk/tags/test-project/*
then all tags of test-project will be pulled as independent releases.

If the auto-publish checkbox is set, the build service will automatically publish new versions of the add-in at every commit.

After saving the changes, the project home page is shown:


The page will be empty because pulling and building the source code may take some time.

Source code is pulled and built by a Build Service. The build service is independent from the web site and can run in a different host. Communication between the two is done through a web service.

So after a bit we'll see:


This shows that the build service found six directories below the specified svn url, and pulled all of them. Then it started building.

Notice that the build service extracts some information from the add-ins: the add-in version, the MonoDevelop version that the add-in is targeting, and the target platforms.

Sources with the 'Ready' status are already built and packaged, but not yet available in the add-in repository. To make them available, you have to click on the 'Publish' link. This is not necessary if the auto-publish option is set for this SVN source (in this case the release would be automatically published after building).

This is how the page looks like after publishing some releases:


The site administrator has some control over which releases are published. By default, new projects releases have to be validated by an administrator.

Published add-ins can be installed using the MonoDevelop add-in manager:


There is still some work to do, but I hope I can publish the site as a beta soon so you can start experimenting with it.