Sams 1.0.3 вышел

Пару недель назад мы выпустили новый релиз системы управления прокси сервером Squid — Sams 1.0.3. Работа над этим релизом велась почти 6 месяцев и выпуск новой версии приурочен к юбилейному Linux Fest’у, на который я к сожалению так и не поехал. Кстати это уже вторая версия Sams которая имеет неофициальное название Linux Fest Edition.

Это уже вторая bugfix версия после Sama 1.0.0. Мы в очередной раз боролись за стабильную и безглючную работу Sams. А еще я очень многое переделал в пакете для Debian.

С удовольствием хочу отметить что сообщество наших пользователей все активнее и активнее участвует в разработке Sams. Например благодаря Vlad V.V.с Украины у нас есть Ebuild для Gentoo. Многие пользователи Debian и Ubuntu присылают ошибки и пожелания о том как улучшить пакет для Debian.

И в завершении две интересных новости:

  • Основным нововведение в ближайшей версии скорее всего станет обновленный дизайн web-интерфейс, кстати тоже сделанное нашими пользователями.
  • Работа над версией 2.0 вновь возобновляется

Some bits from GSoC 2007

There is some facts about current OVAL support in deb-based distributions (Debian and Ubuntu):

  • Ubuntu 8.04 Hardy released with oval-interpretator 5.3 in universe section
  • oval-interpretator 5.4 already migrated to Debian testing and ready to ship with Lenny
  • oval-interpretator 5.4 migrated to Ubuntu unstable repository and will include in next releas

In next phase we plan to add official support status to OVAL definitions for Debian and Ubuntu distributions.

Sams для Debian

Очередной шаг в нормальному пакету Sams для Debian и Ubuntu сделан. Сегодня я выложил вторую тестовую сборку для 1.0.2[3]. Из интересного стоит отметить:
  • Наступил на большие грабли — в init скрипте я запускал sams с не настроенным соединением с БД. Соответственно sams падал, т.к. запуск init скрипта происходил при установке пакета — установка пакета завершалась с ошибкой. При попытке удалить пакет — init скрипт пытается остановить sams, который и не запущен. Опять выход с ошибкой и пакет удалить нельзя. Кстати интересно почему это попытка остановить не запущенную софтину приводит к ошибке. Решил все это вводом переменной SAMS_ENABLED и установкой её по умолчанию в false. Обычно такие переменные помещают в /etc/default/<пакет>, но я не стал так делать.
  • В основном из-за п.1 пришлось разобраться с debconf. Теперь при установке sams выводится окно с сообщением что sams еще не готов работать из коробки и вам надо донастроить ручками. И ссылка на /usr/share/doc/sams/README.Debian Интересно, сколько человек это сообщение не прочитают и будут слать баги что sams не запускается.
  • Оказывается debconf имеет собственное персональное постоянное хранилище где лежат ответы на все заданные им вопросы. Но изменение параметра в конфиге с помощью sed’а для меня выглядит шаманством.
  • Открою небольшой секрет — я теперь пакеты собираю с помощью launchpad. Ибо так и не настроил нормально build системы на сервере.
  • Теперь чтобы поставить sams не надо качать полтора метров исходников. А еще sams в Debian разбит на три пакета — демоны, web и документация. В результате можно ставить демонов без вытягивания php:)

Правило обновления Linux

Обновлять дистрибутив Linux надо из сетевого репозитария на дорогом или медленном канале. Т.к. такое обновление это хороший повод сделать dpkg -l и удалить лишние пакеты нажитые за последний год.

В этот раз мой ноут избавился от php (что хороший важный факт), ruby (не понял я как его готовят) и кучи другого хлама поставленного чтобы попробовать.

Кстати, раньше php стоял у многих из-за того что использовались всякие web-интерфейсы типа phpmyadmin. Неужели эти времена уходят…

GSOC 2008 — Swarm Development Group (SDG) — I’m in

GSoC 2008 анонсировал своих участников, я среди них со Swarm Development Group. Подробности позже, а здесь тезизы

Build OpenJDK7 under Debian Lenny — Repositore clone

I’m start series of articles devoted to download, build and install latest version of OpenJDK 7 under Debian Lenny. And in first article i want to describe how we can get latest source code from official mercurial repository.
At first stage we must read Repository Guide and install mercurial >= 0.9.4. Lenny already include mercurial 0.9.5 (1.0 version can be included in release). Also i create separate dir for openjdk repository in /opt/repos/mercurial/openjdk/openjdk7
Please be attentive, to proper clone openjdk repository you must use fclone commant (this command provided by extension called forest and not included in official mercurial package and Debian repository). Therefore you must manual install this extension:

     mkdir -p /opt/repos/mercurial/mercurial/forest/
     cd /opt/repos/mercurial/mercurial/forest/
     hg clone http://hg.akoha.org/hgforest/
     cp hgforest/forest.py /usr/share/python-support/mercurial/hgext/
   

And the configure your .hgrc to enable the extension by adding following lines:

     [extensions]
     hgext.forest=
     # or, if forest.py is not in the hgext dir:
     # forest=/usr/share/python-support/mercurial/hgext/forest.py
   

After this we are ready to clone openjdk repository:

     mkdir -p /opt/repos/mercurial/openjdk/openjdk7
     cd /opt/repos/mercurial/openjdk/openjdk7
     hg fclone http://hg.openjdk.java.net/jdk7/jdk7
   

This action require around 70 Mb and around 10-20 minutes of time. But after this you would have own copy of main openjdk development tree.
ps: You need fclone because openjdk repository use nested mercurial trees inside main tree. If you try to use clone instead of fclone you dowload only some documentation files without source code.

Ocaml SoC — Прием заявлений завершен

1го апреля OCaml community прекратила прием предложений от студентов и их руководителей для участия в OCaml Summer of Code. Результаты будут известны во второй неделе апреля, немного раньше аналогичного события в Google. Интересно отметить еще одну аналогию с GSoC — ребята из OCaml тоже продлевали период подачи заявок, хотя это сложно назвать продлением — т.к. изначально жестких сроков названо не было. Лично мне очень интересно взглянуть на более подробную статистику о количестве студентов и проектов, и конечно узнать тех счастливчиков которые совместят летом приятное с полезным.

GSoC 2008 текущее состояние

Очень интересная ситуация наблюдается сейчас в Summer of Code. До окончания подачи предложений от студентов осталось чуть больше суток — а предложений подано очень и очень мало. Вот некоторые примеры:

  • Debian в прошлом получил более 120 предложений, сейчас цифра в районе 40
  • Haiku готовы выбрать только одного студента
  • Некоторые проекты получили меньше 4 предложений от студентов

Надо отметить при этом что хорошие предложения есть, но их действительно меньше. Очень хочется узнать причину такого феномена в этом году, но похоже мне остается только гадать. Хотя одна зацепка конечно есть: в конце прошлого лета в рассылке было обсуждение о размере выплат студентам и падении курса доллара. При этом все больше и больше проектов включает требования полной занятости студента на лето. Вывод был простой — некоторым студентам становится невыгодно участвовать в SoC, а Google отказывается повышать выплаты аргументируя это тем что — деньги должны быть не главным стимулом для участия.

ps: В качестве решения Google не остается ничего кроме как продлить Application period до конца следующей недели и активно заняться рекламой.

Introduction to Java Swarm for ABM

Swarm is a platform for agent-based models ABMs that includes:

  • A conceptual framework for designing, describing, and conducting experiments on ABMs;
  • Software implementing that framework and providing many handy tools; and
  • A community of users and developers that share ideas, software, and experience.

It mostly written in Objective-C but give ability to develop model in Java. In this article i give first introduction in Java Swarm and show how to run one of examples — Heatbugs. Heatbugs — is one of our canonical Swarm demonstrations, an example of how simple agents acting only on local information can produce complex global behavior.

All commands in this article given for Debian GNU/Linux distribution (and must work similar on most other moder Linux distributions). Good article about building and running Swarm on Debian written by Jakson Aquino (but their article don’t contain information about Java Swarm).

Java installation

Currently i don’t have information about supporting GNU Java by Swarm, therefore i use Sun Java SE 1.6.0_03 as java virtual machine. To install Sun Java on Debian you have two options:

Build Swarm with Java support

  1. Install the software necessary to download and compile swarm:

    sudo apt-get install gobjc gperf libxpm-dev libpng12-dev automake1.9 emacs21-nox libhdf5-serial-dev blt-dev cvs autoconf libtool make xfonts-75dpi xfonts-100dpi

  2. Swarm needs automake1.9. Thus, run update-alternatives and select automake1.9 if it was not the default yet (For Debian Etch — automake 1.9 is already default version):

    sudo update-alternatives —config automake

  3. Now, you can download the swarm source code. There are two options:

    • Paul Johnson’s web site:

      wget http://pj.freefaculty.org/Swarm/swarm-2.2.3.tar.gz tar -xzf swarm-2.2.3.tar.gz cd swarm-2.2.3

    • The official cvs repository:

      cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/swarm co swarm cd swarm ./autogen.sh

  4. Then, you can compile swarm with java support:

    • If you install Java from backport package:

      ./configure —with-jdkdir=/usr/lib/jvm/java-6-sun —with-gnu-ld —with-tclinclude=/usr/include/tcl8.4/ —with-tclscriptdir=/usr/lib/tcl8.4/ —with-tkscriptdir=/usr/lib/tk8.4/ —with-tcl=/usr/lib/tcl8.4/ —with-tk=/usr/lib/tk8.4 —with-tkinclude=/usr/include/tcl8.4

    • If you install Java from binary distribution archive — replace java_path on real Java installation path:

      For swarm from cvs

      ./configure —with-jdkdir=java_path —with-gnu-ld —with-tclinclude=/usr/include/tcl8.4/ —with-tclscriptdir=/usr/lib/tcl8.4/ —with-tkscriptdir=/usr/lib/tk8.4/ —with-tcl=/usr/lib/tcl8.4/ —with-tk=/usr/lib/tk8.4

      make

      sudo make install

      For swarm 2.2.3

      ./configure —with-jdkdir=java_path —with-gnu-ld —with-tclincludedir=/usr/include/tcl8.4/ —with-tclscriptdir=/usr/lib/tcl8.4/ —with-tkscriptdir=/usr/lib/tk8.4/ —with-tcldir=/usr/lib/tcl8.4/ —with-tk=/usr/lib/tk8.4

      make sudo make install

  5. Swarm is already installed. You should now put this line at the end of your ~/.bashrc, because, by default, the Makefiles that come with swarm applications are configured to look for swarm at /usr, but since we installed it at /usr/local, we need to inform the Makefiles about this:

    export SWARMHOME=/usr/local

    In addition to putting the above line in your ~/.bashrc, copy and paste it in your terminal too. When you logoff and login again the .bashrc will be re-read and the SWARMHOME environment variable automatically will be active.

Build and run Heatbugs

You can download Heatbugs from Swarm ftp:

> wget http://ftp.swarm.org/pub/swarm/apps/java/sdg/jheatbugs-2.1.tar.gz
> tar -xvzf jheatbugs-2.1.tar.gz
> cd jheatbugs-2.1/
> make

If build failed with error like:

> HeatbugModelSwarm.java:297: cannot find symbol
> symbol  : constructor FArgumentsImpl(HeatbugModelSwarm,swarm.Selector,boolean)
> location: class swarm.defobj.FArgumentsImpl
>    new FCallImpl (this, proto, sel, new FArgumentsImpl (this, sel, true)));
>                                                 ^
> 1 error

Then you must download and apply my patch for jheatbugs:

> wget http://nixdev.net/projects/swarm/patches/jheatbug-2.1-FArgumentsImpl-parameters.diff
> patch -p1 -l < jheatbug-2.1-FArgumentsImpl-parameters.diff

After this you can repeate you build. If all finished OK — you can finally run this demo:

> javaswarm StartHeatbugs

Please note that javaswarm is a script written on top of java, which set proper environment settings and run swarm java application. Now you can play with Heatbug and see it evolution.
Heatbugs in action

References

To be continued

GSoC 2008

Несколько часов назад был официально анонсирован Google Summer of Code 2008. Практически весь март Google будет принимать заявки от Open Source проектов на участие в программе, а с 24 марта наступит время написания и подачи предложений от студентов.

Я в этом году обязательно буду подавать заявку на участие, хотя нет точно уверенности в какой проект. Т.к. Python — проект который мне был наиболее интересен весь 2007 год, меня так и не зацепил. Поэтому сейчас активно знакомлюсь с проектами участвовавшими в GSoC 2007 и выбираю себе по душе и интересам.