Wednesday, April 23, 2008

Фред Брукс. "Мифический человеко-месяц"

Одна из первых книг по управлению программными проектами, ставшая классической. Книга написана в 1975г. по материалам работы автора над созданием операционной системы OS/360 в IBM в 1965-68гг. Казалось бы, за столько лет индустрия программирования так изменилась, что книга должна была безнадежно устареть. Ничего подобного - устарели только технические моменты, которые не играют в книге важной роли (смешно выглядят советы использовать PL/I и фразы типа "Нередко можно встретить человека, выражающего ужас по поводу того, что в машине, имеющей 2 Мбайт памяти, под операционную систему может быть отведено 400 Кбайт"). Основные идеи книги по-прежнему актуальны - и знаменитый закон Брукса "Если проект не укладывается в сроки, то добавление рабочей силы задержит его еще больше", и "планируйте на выброс" и "эффект второй системы" и т.п.

В 1995-м году вышло юбилейное издание книги, включившее в себя, помимо оригинала, статью автора "No Silver Bullet" 1986г., где он утверждает, что не существует волшебной технологии, способной поднять производительность труда программиста на порядок, разбор критики этой статьи, и новый взгляд на идеи "Мифического человеко-месяца" 20 лет спустя.

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

HTML-вариант книги можно найти здесь. Текст взят с lib.ru и снабжен более-менее приличным форматированием. Также исправлены наиболее вопиющие опечатки и дефекты перевода. Форматирование максимально адаптировано для чтения в программе Books для iPhone, но будет нормально смотреться в любом средстве просмотра HTML (в т.ч. в любом браузере).

Tuesday, April 22, 2008

Windows computer can't get IP address from DHCP

Suppose you configured a Windows computer to obtain IP address automatically via DHCP, but it doesn't work. Ipconfig shows that IP address is 0.0.0.0 and running ipconfig /renew returs errors like "Unknown interface" or "RPC server not available".

The most likely reason for this: DHCP Client service is not running. It is started automatically by default, but some users stop it, because it is not needed when you have a static IP address. Just start the service and ipconfig /renew should get you your IP address.

Friday, April 18, 2008

Apache: How to enable CGI in one user's directory

Recently I had to configure Apache HTTPD server on a Fedora 7 box to allow CGI script execution in one particular user's public_html directory, yet not allowing it for all users.

Easy, I thought. First, Apache needs to know that a certain file is a CGI script and not a regular web page. Normally CGI scripts live in cgi-bin directory and Apache knows that anything in it is a CGI script by virtue of ScriptAlias directive. But how does it know a file outside of cgi-bin directory is a CGI script? Usually, by the file's extension. To tell Apache that any file with .cgi extension is a CGI script, uncomment the following line in the default httpd.conf (or add it if it's not there at all):


AddHandler cgi-script .cgi

Now Apache knows which files are CGI scripts. So far so good, but how do we tell it that it is permitted to run CGI scripts in a certain directory? We do it with ExecCGI option. Where do we add it? In Fedora, Apache configuration is modular. Instead of adding everything to the main httpd.conf file, and then struggling with it when you upgrade Apache, we add bits of local configuration to files in /etc/httpd/conf.d directory. So, I went ahead, created a new file usercgi.conf in that directory and entered the following directives in it:

<Directory /home/cgiuser/public_html>
  Options +ExecCGI
</Directory>

To my surprise, this didn't work. Apache refused to run CGI scripts in /home/cgiuser/public_html. Giving it more thought, I realized that the files in cond.d directory are included into the main httpd.conf before most of the directives there, and the main httpd.conf has the following part regarding users' public_html directories:

<Directory /home/*/public_html>
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    ...  
</Directory>

The default directive comes after my custom directive and overrides it. What can we do? There are three approaches:
  1. Brute-force approach. Modify the main httpd.conf to include our custom directive after the default directive. I don't like this though, since it's easy to loose the configuration when upgrading to a newer version of Apache.
  2. Put the user's CGI scripts in a subdirectory of public_html, say public_html/cgi-bin. Then you will be able to turn ExecCGI on this directory on with the usual directives:
    
    <Directory /home/cgiuser/public_html/cgi-bin>
      Options +ExecCGI
    </Directory>
    
    
    Why does it work for subdirectory? Because a more specific Directory directive (the one with a longer path) always overrides the one that is less specific. Therefore options set for /home/cgiuser/public_html/cgi-bin will override those set for /home/*/public_html.
  3. Use Location directive instead of Directory:
    
    <Location ~/cgiuser/>
      Options +ExecCGI
    </Directory>
    
    
    Apache always processes Location directives after all Directory directives, thus a Location directive will take precedence.

Wednesday, April 16, 2008

Google и Харьков

Что общего между Google и Харьковом? Непосредственно - ничего, но косвенная связь имеется.

В 1960-е годы в МГУ учился талантливый молодой математик Михаил Брин. После окончания МГУ он написал диссертацию, но в те годы еврею защититься в Москве было проблематично, и с защитой не складывалось. Вместе с Брином учился Дмитрий Ахиезер, сын знаменитого харьковского математика Наума Ильича Ахиезера. Дмитрий решил через отца помочь соученику. И вот Наум Ильич Ахиезер, используя свой авторитет и влияние, организовал для Брина защиту в Харькове. Оппонентом был другой известный харьковский математик Ю.И. Любич. Брин успешно защитился и продолжил работать в Москве.

Через несколько лет он уехал в США, где сейчас работает в Университете Мэриленда. А что сделал его сын, все знают.

Прошло много лет, и Михаил Брин решил почтить память Н.И. Ахиезера, который так помог ему в свое время. На собственные средства он организовал в Харькове Фонд им. Н.И. Ахиезера для поддержки молодых математиков, живущих и работающих в Харькове. Фонд уже третий год дает стипендии молодым математикам Харькова.

Историю рассказал мне Г.М. Фельдман, член Координационного совета Фонда.

Friday, April 04, 2008

NTLM authentication in Apache

NTLM authentication is Microsoft's way to enable Windows users to transparently (i.e. without entering user name and password) authenticate to web sites. Apache can support this style of authentication too with mod_auth_ntlm_winbind. This module is developed as part of Samba. It is available in Fedora. More information on it can be found here: http://adldap.sourceforge.net/wiki/doku.php?id=mod_auth_ntlm_winbind, including the basic information on how to install and configure this module.

An important piece of information that I didn't see mentioned by any documentation and that I discovered the hard way is that Apache's KeepAlive directive should be on, otherwise NTLM authentication doesn't work. Unfortunately Fedora 7 default httpd.conf has "KeepAlive off" (don't know why). So, one has to turn it into "KeepAlive on" to use mod_auth_ntlm_winbind. With keep-alives turned on, it works great.

Thursday, April 03, 2008

Правила для SpamAssassin'а - Kerio MailServer

Почему-то много спама проходит через ПО почтового сервера Kerio MailServer. Поэтому такое правило для SpamAssassin'а удачно работает:

header KERIO_MAILSERVER Received =~ /Kerio MailServer/
describe KERIO_MAILSERVER Sent through Kerio Mailserver software
score KERIO_MAILSERVER 2.5

Впрочем, с этим правилом надо быть осторожным. В самом Kerio MailServer нет ничего преступного, просто статистика против него. Если статистика изменится, правило может начать давать false positives. Но пока такого не замечено.

Wednesday, April 02, 2008

Превоапрельские тезисы

Google сообщила о запуске совместно с Virgin Group проекта Virgle для освоения Марса. В то же время команда Google Talk сообщает, что для снижения выбросов CO2 Google Talk будет автоматически сокращать все сообщения (т.к. "every character (byte) we send in a message results in about 0.0000000000000000034 metric tons of CO2 being released into the atmosphere"), а Blogger объявляет о новом поколении блогов: Google Weblogs.

KDE.news сообщают, что KDE решило поддержать Микрософтовский Office Open XML. Смешно для тех, кто в курсе.

Korrespondent.net сообщил, что в зоне отчуждения Чернобыльской АЭС голландцы построят аквапарк ("Мы добавим в воду флуоресцентный зеленый краситель, чтоб посетители получали зрительный эффект посещения зараженной радиацией территории"). Также, Шевченко переходит в "Шахтер". Также Korrespondent.net сделал подборку самых веселых цитат прошлого года (и это не розыгрыш).

Но лучше всех BBC, которая сообщает о недавно открытом виде перелетных пингвинов: