2.9.99

Mozilla поддерживает теперь Java 1.3 beta.

Еженедельник Python URL и новый сервер Tech Mailings.

Статьи про Zope и Code Fusion. См. также Jessie, написанную на Java.

Небольшая вводная статья для пользоватей X.

1.9.99

Anachronism: историческая игра для Linux

Статья про строку #! в скриптах.

Sun обещает open sourcить Star Office.

Выпущен Mandrake 6.1pre (Cassini).

Джон Кармак начал изучать Perl.

Небольшая статья про Berkeley DB. А также интервью с авторами популярных серверов Slashdot и Freshmeat.

Как всегда оригинальное выступление Larry Wallа на 3й конференции.

Неплохие афоризмы (Я не отличница, я - удовлетворительница).

30.8.99

Шесть статей про программирование PL/SQL и статья про virtual private databases в Oracle 8i.

28.8.99

Date::Pcalc - перевод популярного модуля для манипуляции дат Date::Calc на чистый Perl - для тех у кого нет доступа к C-compilerу (например под Windows или провайдер не разрешает). См. также статью в Perl Wisdom и модуль Date::Manip.

27.8.99

Новый CPAN (сборник модулей для Perlа).

26.8.99

Два полезных перечисления сходств и различий Perlа и Pythonа: 1 и 2.

Выпущен бесплатный Sybase ASE 11.9.2 для Linuxа (см. также Oracle 8i).

25.8.99

Восток - дело тонкое

Рассуждения про Perl-оператор ??, для более короткой формы написания $a = defined ($b) ? $b : $c; в виде $a = $b ?? $c;

Попробовал объяснить, как использовать DB_File.

Выпушены JDK 1.3 beta и Gtk-Perl-0.6123.

Найдена очередная дыра в IE 5.0.

Вторая глава из книги Regulaere Ausdruecke и программа для проверки правильности (соответствия шестому пункту в RFC 822) адреса e-mail.

Максим прислал ссылку на Special Agent KIM, а Вадим на свой flash-трюк.

Снимки из TF2.

22.8.99

Debian GNU / Linux

Статья про Python. А также голос из оппозиции What's wrong with Perl.

Если Вы используете SybPerl, компилируйте Perl без -ldb

Word Perfect 3.5 для Macа будет распространяться бесплатно (вот снимки).

Статья про Netscape 5.0.

Сервер русских комиксов.

21.8.99

Gtk+ и GIMP для Windows.

Набор скриптов Perlfect Search 3.01 для индексирования (использует DBM-файлы) и поиска на WWW-сервере под UNIX или Windows. С поддержкой i18n. Там же - короткие статьи про select и IO::Select, IO::Socket, mp3 streaming-клиент, uploading files, Net::Telnet и как посылать e-mail (в последней ошибка - надо всегда проверять результат закрытия pipe: close SENDMAIL or die "Could not send e-mail: $!";).

Выпущен Heretic 1.0 для Linuxа (вот снимки).

20.8.99

Несколько глав в формате PDF из неплохой книги Effective Perl Programming, например про отладку скриптов debuggerом. Глава из CGI/Perl Cookbook. А также Perl5 Reference Guide - все на одной большой странице.

Интервью с программистом Opposing Force и снимки из любительских расширений к Half-Life: Halflife: Chronicles, Invading Forces (даже со сценарием) и Master Sword.

19.8.99

Database Programming for Perl and CGI

Спекуляции насчет грядущего SP6. А также статья про Kerberos и пара трюков для perfmon.

Два интервью про будущие KDE 2.0 (вот снимки) и GNOME 2.0.

Заметка про Trillian - Linux для процессора IA-64.

Microsoft выпустил shutdown patch для Win 98 SE.

Программисты игр дают советы игрокам разных RTS.

Получил наконец-то по почте из amazon.de книгу MySQL and mSQL и тут же заказал Programming the Perl DBI, а на работе мне пришла Learning Python. Теперь можно будет попытаться составить собственное мнение в очередной войне Python против Perl (более 300 сообщений). Плюс наш webmaster получит на следующей неделе все прошлые выпуски The Perl Journal.

Немецкий плакат.

18.8.99

The Heretic Fortress 2.0

Первая статья из серии о WebDB. И еще одна - про Oracle8i PL/SQL.

Восьмой выпуск C-Scene, например с введением в Objective C и библиотеку X11.

Книга Perl By Example и еще четыре архива книг по программированию: 1, 2, 3 и 4.

Проверьте свой коэффициент интеллекта: 1, 2, 3, 4, 5 и 6.

"Sergey Pavlov" <psv@kw.ukrtel.net> пишет:

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

и разыскивает заказчиков для своей будущей версии преферанса... Насчет моего предположения, что преф-сервер в виде одного процесса, вызывающего select() тратит на однопроцессорной машине меньше памяти и CPU, чем несколько threadов, у него тоже есть свое веское мнение, подкрепленное годами программирования под Windows:

Объяснять что либо - бесполезно и слишком долго, так как нужно начинать 
с самых азов. Так, что учись сынок, а то до старости только на перле 
скрипты глюкавые ковырять будешь.
17.8.99

Книга на русском - Атака через Internet.

Глава из новой книги Programming Internet Email.

15.8.99

Правая дверь внизу: 66%

Статья на немецком про EmbPerl. И про Gimp 1.1.

Там же - решение интересной задачки с помощью Perlа: предположим Вы участвуете в телепередаче, где нужно угадать, за какой из трех дверей спрятана машина. Вы показываете пальцем на левую дверь. Ведущий открывает одну из оставшихся двух дверей, и за ней стоит коза. Ведущий дает Вам возможность выбрать еще раз из двух оставшижся дверей... Неожиданный результат: если Вы настаиваете на своем, то у Вас только 33-процентный шанс выиграть. Если Вы выбираете другую дверь - 66% (а не 50!)

Введение в Zope.

14.8.99

Первая глава из книги Learning Perl.

Глава из новой книги Enterprise JavaBeans.

Что такое VNC.

Interactive Salary Guide - пытается подсчитать Вышу зарплату в США в зависимости от квалификации.

Выпущен Q3 Test 1.08 для Linuxа.

13.8.99

Mini Chess

Статья про SSH.

Анализ алгоритмов сортировки в Perlе.

Книга по установке Debian GNU/Linux.

Вышел Licq 0.70h.

Интервью с аниматором из Gearbox Software. Авторы хороших уровней для Team Fortress Classic могут получить 1000 долларов от Sierra Studios.

11.8.99

Выпущен Ice WM 0.9.44.

Короткое интервью с победителем QuakeCon 99 Григорием Мышляевым.

10.8.99

Hellboy by Mike Mignola

Хорошая статья про обращение с датами в Perlе.

Глава про приближенные вычисления с помощью C.

Глава из книги о конфигурации Windows NT. И еще одна - про MS Access.

Статья на немецком про Expect.pm.

Коммерческий sendmail будет поддерживать POP и IMAP.

Поставил себе последний стабильный 2.2.11-кернель.

Небольшое интервью с Zoidом. И очередное описание Opposing Force.

Купил брату графический таблет Wacom Pen Partner и пытаюсь вдохновить его комиксами Hellboy (например 1, 2, 3 или 4) и др. графикой.

6.8.99

Небольшая статья про Tcl. И история JavaScriptа.

Попробую уговорить шефа купить мне 6 книг по Perlу на одном компакте.

Короткий рассказ о грядущей Half-Life: Opposing Force.

4.8.99

Earth 2150: настоящая 3D-графика

Что такое Hurd-кернель.

Как сконфигурировать DNS.

Глава про Visual Basic controls.

Статья про препроцессор perlpp. И новый проект psh.

Выпущены Q3Test 1.08 (пока только для Windows и Mac, попробуйте model sarge в консоле) и Linux-клиент Kingpin 1.15. См. также новые снимки из Opposing Force.

1.8.99

Science and Industry: Чем больше похищенных ученых, тем лучше оружие

Статья про сервер IIS и ISAPI.

Perl будет включен в Solaris 8.

Хорошая статья про multipage web forms и hidden fields.

Готовы ли Ваши скрипты к Netscape 5?

Статья про Java servlets. И еще три - про Java Micro Edition в Palm Pilot, про JDBC и про Webster.

Интересная статья про кооперацию Valve с авторами modов.

31.7.99

TreLOS Win4Lin выполняет WinWord и др. под Linux

Библиотека cole для манипуляции файлов в формате Microsoft Structured Storage.

Выпущен Windows Commander 4.01 (вот снимок).

Русский сервер Team Void - например со статьей об уязвимостях в MS Office 2000.

IBM выпустила DB2 6.1 для Linuxа и раздает бесплатную 60-дневную демо-версию этой базы данных (которую используют для 4х самых больших банков данных мира).

30.7.99

Say hello to iBook

Две статьи про make: 1 и 2.

Объяснение прототипов в Perlе.

Java IDE Anyj - для нескольких платформ (вот снимки: Win NT, Linux и Solaris).

Вундербаре вельт фон Linux 2.4.

Вышел Licq 0.70g, но у меня не компилируется.

7 снимков из грядущей Opposing Force, в которой кроме всего прочего появится новая инопланетная раса бипедальных питдронов.

28.7.99

Статья про Win32 multithreading и как портировать UNIX-daemonы в Windows. А также серия про exceptions в Visual C++: 1, 2, 3, 4 и 5.

Вышла новая версия замечательного редактора для программистов: Vim 5.4 (добавлена поддержка GTK и многие исправления).

26.7.99

10 украденных у O'Reilly книг и отрывки из Object Oriented Perl.

24.7.99

Распиленный Celeron

Интервью с pumpkingом Гурусами Сарати из ActiveState о будущей версии Perl 5.6.

Amiga Central и ENT Online (журнал о Windows NT).

Глава из книги о программировании Java Servletов.

Введение в Gimp Perl, который наверное многие предпочтут Script-Fu. См. также пример из Perl-журнала.

DiskDrake - свободная альтернатива к Partition Magic (запланирована и Windows-версия).

Интересная статья об Oracle 8i, пользователи которого не спешат воспользоваться интернетными нововведениями этой версии, но хвалят ее быстроту. Linux-версия распространяется бесплатно для частного использования (за 200 долларов в год они пришлют Вам CD).

Получил летний выпуск The Perl Journal - хороший журнал (правда дорогой). В отличие от многих нынешних печатных компьютерных журналов, он не занимается перепечаткой новостей месячной давности из интернета, а довольно глубоко копает выбранные темы (например как послать тремя способами e-mail или читать attachments).

Sharky's Private Eye - сплетни из игровой Hardware-индустрии.

18.7.99

Логотип для Mozillы (автор: Клаус Малорны)

Клон ICQ-сервера - gicqd.

Статья про Jazillу.

Интервью программиста TF2, которая будет поддерживать до 32 игроков.

Вышел Q3A test 2 (пока только Win32-версия).

16.7.99

Логотип для Mozillы (автор: Томи Сарвела)

Введение в JDBC и статья про индексы с функциями в Oracle.

PUK (Pop-up killer) - программка для Windows, убирающая рекламу, выскакивающую в Netscape или Explorerе.

История восхода и заката корпорации Netscape.

Выпущен Kingpin-клиент для Linuxа.

15.7.99

Статья про PHP.

Объяснения IP masquerading (например два компьютера подсоединенные к сети через один модем).

14.7.99

Реклама LinuxCare: Now your ass is covered [Red Hat-ом]

Статья про Java-компайлер Hot Spot.

Опубликована третья из серии статей про Sybase: 1, 2 и 3. Объяснения, как изменить bash prompt. И как использовать Plug and Pray-железо под Linuxом.

Промучался сегодня на работе весь день пока не усек, что:

Последняя вещь (untie-gotcha) объяснена в perldoc perltie и perldoc DB_File, вот кусок из моего скрипта:

my $dbh;                 # это тоже reference к объекту!
my %emails;
my $EMAILS = '/www/cgi-test/eedalf/emails';

die "Can't tie  $EMAILS: $!" unless $dbh = tie %emails, 'DB_File', $EMAILS, 
                                          O_CREAT | O_RDWR, 0666, $DB_HASH;
die "Can't open $EMAILS: $!" unless open  EMAILS, '+<&=' . $dbh -> fd;
die "Can't lock $EMAILS: $!" unless flock EMAILS, 2;

                         # здесь что-нибудь делается с %emails, например
                         # $emails{alex} = 'alex@kawo2.rwth-aachen.de';

$dbh -> sync;
undef $dbh;              # ВАЖНО - иначе не вызовется DESTROY и содержимое
untie %emails;           # %emails возможно не будет записано в dbm-файл
close EMAILS;            # просто закрыть файл, не надо вызывать flock
12.7.99

Dockable Tetris для Window Maker

Статья про Dock Apps для Window Makerа. Поставил, кстати, себе на работе Ice WM вместо After Stepа - теперь на моей старенькой Sparc остается больше цветов для Netscape. Ice WM внешне похож на Windows (вот снимок), но с несколькими Workspaces (кнопки 1,2,3,4 внизу-слева на снимке) и позволяет настроить по вкусу feel. (фокус следует мыши и т.п.)

10.7.99

Dockable TV в натуральную величину

Выпущен Paint Shop Pro 6 beta.

Статьи про mod_perl, Perl/Tk и развивающийся интерфейс Win32::OLE.

Сервер Valve News и Z-TA.

9.7.99

Hopkins FBI - игра для Windows, Linux и OS/2

Статьи про недокументированную Native API и Native Applications в Windows NT.

Статья про программирование RPC и заодно введение в Glade.

Еще одно упоминание BO2k.

8.7.99

Как установить Java на Linux-машину.

Короткое разъяснение протокола IRC.

Интервью с автором эмулятора bochs и история написания банка данных PostgreSQL.

7.7.99

Miner из игры Pingus

Средняя зарплата инженера - $82000 в год.

Две статьи об обезопасивании Linux-компьютеров: 1 и 2.

Интересная статья про Back Orifice 2000, который сможет включать микрофон для подслушивания на атакуемом Windows NT-компьютере или подглядывать печатаемый текст и посылать украденную информацию с помощью меняющихся протоколов кракеру.

6.7.99

Неофициальный логотип Debian

Рассказ о грядущей версии Business Windows NT - Neptune.

Сборник линков Linux Life и интересный Linux Developer's Network.

Присматриваете себе компьютер для WWW-сервера? Рекомендую IBM RS/6000 и AIX 4.3.3 - 40161 HTTP-операций в секунду.

Забавные ответы shell.

5.7.99

Доходчивые объяснения авторов XML и статья о новых концептах search engines.

4.7.99

14.4K на ходу, 28.8K стоя

Статья про JPerl-интерфейс. И обозрение языка Dylan.

Как спрограммировать сервер и клиент для сетевой игры в крестики-нолики на Java.

Репортаж о представленном Sun автомобиле с набором Java-программ и подсоединенном к сети через 14.4K CDPD-модем.

Интервью с 23-летним Cmdr Taco, продавшем за неразглашенную, может быть 6-значную, сумму свой популярный Slashdot: News for Nerds-сервер.

Еще одно описание игры Half-Life: Opposing Force.

3.7.99

Выпущен клиент Quake 2 beta для Solarisа (только для 7й версии) и Linux-демо 3D RTS-игры Fire and Darkness (только для Voodoo-карт).

2.7.99

3D RTS для Linux и Windows: Fire and Darkness

Две статьи про графический login - XDM: 1 и 2.

Как делать фильмы средствами Linuxа.

Black Cat Linux - русско-украинская версия, основанная на Red Hat, с поддержкой печати и переведенными инсталляционной программой и помощью.

1.7.99

Palm Pilot V

Две статьи на русском: Жени - о mod_roaming и Саши - о tmake.

Два немецких сервера: Linux am Mac и Linux Ticker.

Bugtraq переименовался в Security Focus.

Три забавные фотографии: собачка, белочка и Клинтон. А также Perl-скрипт, который вытаскивает всех Dilbertов.

30.6.99

Итальянский TouchPhone: Red Hat 4.2, 386, 8 MB

Выпущен SP1 для Windows 98.

Опубликована очередная статья из серии про PHP: 1, 2 и 3. Плюс немного об Easy GTK.

Интервью с Gearbox Software.

В меня во второй раз врезались, и я на радостях подписался на The Perl Journal. Если в меня еще какой-нибудь идиот врежется, мой Golf 2 окупится целиком и я подпишусь на Linux Journal.

27.6.99

U.R.B.A.N, GPL-shooter для Linux и Windows (25000 строк C++ кода)

Интервью с одним из создателей Net BSD.

Статья про Python.

Linux-вакансии.

Ivrix - еврейский Linux.

Вышел NC 4.61. Они обещают выпустить версии для 23 языков, в том числе и русскую.

Статья про Gimp.pm, учебник по Gimpy: 1 и 2, введение в PHP (вышла кстати версия 3.0.11) и Zope, статья про RAID под Linuxом - все на немецком.

26.6.99

Doom для Windows CE

Выпущена новая версия GUI-библиотеки Qt 2.0, позволяющей писать программы для Windows, UNIX и др. Статья про использование Makefile. Различные PHP-советы.

Интервью с создателем Linuxа.

Рекрутеры программистов из U.K.

Как спрограммировать PCX-Loader/Viewer с помощью SVGAlib и GGI. И сервер Game Design.

22.6.99

Робот-собака, распроданная Sony за несколько часов

Хорошая статья про HylaFAX (faxq для посылки факсов, faxgetty - для приема и hfaxd - служит сервером для обоих).

Новая статья из серии Perl Wisdom - объясняет например, как открыть файл с нужными Вам permissions: use Fcntl; sysopen (FH, $filename, O_RDWR | O_CREAT, 0666) or die "Can't open $filename for reading/writing/creating: $!"; (для подробностей введите perldoc -f sysopen в shell).

Выпущена BeOS 4.5.

Статья про Everquest - игру, ради которой программист Брайан Хук недавно покинул Id Software.

19.6.99

Linux на Psion 5

Простенькая статья про установку Apache и две посложнее - о roaming (конфигурация Netscape 4.5+ запоминается на сервере) и SSL.

Крэш-курс по Photoshopу и статья о новом plugine для него - Photo/Graphic Edges (вот обработанные снимки).

Две статьи про PHP: о создании картинок на лету и о создании карты сервера.

Рассказ о Gunman TC - может быть бесплатном средневеково-фантастическом add-onе для Half Life (вот картинки).

Рискнул и купил всего за сто марок сломанный лаптоп IBM ThinkPad - хорошая была штучка - с цветным TFT-дисплеем, но не смог починить... Провайдер поймал мой преф-сервер и вырубил www.simplex.ru на несколько дней в наказание... Прочел первую главу из The 1st 20M is Always the Hardest и заказал себе всю книжку через Amazon.de. Если Вам тоже нравятся такие мыльные оперы о программистах - взгляните на сериал Silicon Follies.

13.6.99

Лаборатория Касперского выпустила анти-вирус для Linuxа (спасибо Антон).

11.6.99

Новый вирус

Вышел второй выпуск Perl Month, например со статьей про mod_perl и как его отлаживать debuggerом. Кроме того Sun World опубликовал вторую часть введения в Perl и статью о PHP + JavaScript, а Dev Head - очередной выпуск Perl Wisdomregex).

9.6.99

Biss: GUI библиотека для Java

Интересная статья про фирму, которая борется с кракерами.

Женя написал:

Я вот одного не могу понять, зачем на сервере 
заморачиваться с перекодировкой? Этим может и 
сам сервер заниматься... например Russian 
Apache ( www.lexa.ru )

Почти все русские сервера используют Russian Apache, но если задуматься... одни и те же страницы перекодируются им "на лету" каждый раз для каждого посетителя заново. В большинстве случаев - это ненужная нагрузка на CPU сервера, так как содержание страниц не меняется месяцами. Почему бы вместо этого не перекодировать файлы один раз, и не разложить их по разным каталогам (/win, /koi, ...)? Или, если содержание страниц меняется, но медленно (как на http://www.simplex.ru/koi/misc.html), то делать перекодировку ежедневными или ежечасными cron jobs.

8.6.99

Кодировка Windows-1251

Переделал для фирмы отца сервер объявлений www.simplex.ru - на основе MySQL (вышла кстати версия 3.22.23b). Может быть кому-нибудь пригодятся мои рутины для конвертирования из одной кодировки в другую? Они основаны на информации с полезной страницы The Cyrillic Charset Soup. Осторожно - отмеченные мной внизу выражения с $str =~ tr/.../.../; должны писаться в одну длинную строку - я просто сложил их каждый раз в несколько частей, чтобы они поместились на этой странице:

sub koi2win                                # из koi8-r в
{                                          # windows-1251
    my $str = join '', @_;

    $str =~ tr/\xC0-\xFF/\xFE\xE0\xE1\xF6\xE4\xE5\xF4\xE3\xF5
               \xE8-\xEF\xFF\xF0-\xF3\xE6\xE2\xFC\xFB\xE7\xF8
	       \xFD\xF9\xF7\xFA\xDE\xC0\xC1\xD6\xC4\xC5\xD4
	       \xC3\xD5\xC8-\xCF\xDF\xD0-\xD3\xC6\xC2\xDC\xDB
	       \xC7\xD8\xDD\xD9\xD7\xDA/;  # это одна строка!
	       
    $str =~ tr/\xA3\xB3/\xB8\xA8/;         # буквы 'йо', 'ЙО'

    $str;                                  # вернуть $str
}

sub win2koi                                # ... и наоборот
{
    my $str = join '', @_;

    $str =~ tr/\xFE\xE0\xE1\xF6\xE4\xE5\xF4\xE3\xF5\xE8-\xEF
               \xFF\xF0-\xF3\xE6\xE2\xFC\xFB\xE7\xF8\xFD\xF9
	       \xF7\xFA\xDE\xC0\xC1\xD6\xC4\xC5\xD4\xC3\xD5\xC8-
	       \xCF\xDF\xD0-\xD3\xC6\xC2\xDC\xDB\xC7\xD8\xDD
	       \xD9\xD7\xDA/\xC0-\xFF/;    # это одна строка!
	       
    $str =~ tr/\xB8\xA8/\xA3\xB3/;         # буквы 'йо', 'ЙО'

    $str;
}

sub koi2rus                                # из koi8-r в
{                                          # latinskie bukvi
    my $str = join '', @_;
	   
    $str =~ tr/\xC1-\xD0\xD2-\xD5\xD7-\xDA\xDC\xDF\xE1-\xF0\xF2-i
               \xF5\xF7-\xFA\xFC\xFF/abcdefgxijklmnoprstuv`ize'AB
	       CDEFGXIJKLMNOPRSTUV`IZE'/;  # это одна строка!
	       
    $str =~ tr/\xA3\xB3/eE/;               # буквы 'йо', 'ЙО'
    $str =~ s/\xC0/ju/g;
    $str =~ s/\xD1/ja/g;
    $str =~ s/\xD6/zh/g;
    $str =~ s/\xDB/sh/g;
    $str =~ s/\xDD/sch/g;
    $str =~ s/\xDE/ch/g;
    $str =~ s/\xE0/Ju/g;
    $str =~ s/\xF1/Ja/g;
    $str =~ s/\xF6/Zh/g;
    $str =~ s/\xFB/Sh/g;
    $str =~ s/\xFD/Sch/g;
    $str =~ s/\xFE/Ch/g;

    $str;
}

Написание win2lat остается упражнением внимательному читателю ;-) Пример использования: print koi2win ("С днем рождения, Алекс!\n"); Чтобы сделать все заглавные буквы строчными в koi8-r, примените tr/\xE0-\xFF\xB3/\xC0-\xDF\xA3/. В windows-1251 - tr/\xC0-\xDF\xA8/\xE0-\xFF\xB8/.

Обзор грядущего продолжения Half Life - The Opposing Force.

5.6.99

Инструкции по установке Oracle для Linux. Администраторы Oracle (лидера среди корпоративных банков данных) на рабочем рынке не застаиваются.

Планета PDF, с разными утилитами.

3.6.99

GGI-X Doom

Две статьи о Sybase для Linuxа: 1 и 2.

Интервью с Лэрри Уоллом. Кроме того, Microsoft собирается интегрировать Perl в Windows.

Deception Tool Kit - забавный набор скриптов, который изображает на не нужных Вам портах, будто бы Вы используете buggy software. Адреса script kiddies, поверивших в это и попытавшихся вломиться в Ваш сервер, записываются в лог-файл.

nVidia выпустила 3D-драйверы для Linuxа и sources к ним. Quake 2 работает, а Q3Test - пока нет, но может быть заработает с выпуском XFree86 4.0 в июле. Кстати, вот первая из серии статей о программировании игр для Linuxа и драйверы для 3Dfx-карт.

1.6.99

Кодировка Koi8-r

Статья о грядущем KDE 2.0.

31.5.99

Найден путь прочесть e-mail и cache в NC 4.x.

Интересная серия статей о методах работы script kiddies.

30.5.99

Проверил сервер с помощью checkergcc (checkergcc -opref2 pref2.c),Electrical Fence (export EF_ALIGNMENT=1; gcc -opref2 pref2.c -lefence) и mpr (gcc -ggdb -Wall -opref2 pref2.c -lmpr; export MPRPC=`mprpc pref2`; export MPRFI='cat > mpr.txt') - вроде бы memory leaks и violations нет.

Сижу над игровым полем. Действительно, загрузка графики запускается дважды. Но смогу это исправить наверное только через пару дней, так как мой старый код довольно запутанный.

Съездил вчера на игру Rheinfire (D) vs. Galaxy (Frankfurt) с друзьями в Дюссельдорф. Американский футбол оказался довольно скучным, особенно из-за частых пауз для ТВ-рекламы. Но стадион классный, вчера там уместились 40103 зрителей и я еще обязательно постараюсь попасть туда на настоящий ;-) футбол.

Интервью создателей Doomа.

29.5.99

Последние три дня я сидел по 10 часов над новым преф-сервером. Надеюсь, что он будет лучше, так как плохая связь к одному из игроков больше не будет влиять на скорость коммуникации других. Кроме того, теперь не нужно постоянно перезапускать browser если нет свободных мест - Вы автоматически помещаетесь в очередь длиной в SOMAXCONN (128 на FreeBSD). У сервера еще много проблем (очень хотелось бы обойтись без memory leaks - проверю завтра с помощью checkegcc и mpr), но я перехожу теперь к работе над игровым полем... 1го июня www.simplex.ru переезжает на новое место. Чтобы Вы в любом случае могли попасть на эти страницы, используйте в следующее время цифровые адреса http://216.92.54.1/pref.html (18 мест, тайм-аут 15 минут) и http://216.92.54.1/news.html

27.5.99

Opposite Force

Интервью создателя Javы Джеймса Гослинга о Java 2 в browserах и memory leaks в Swingе. А также статья о давно обещанном чудо-compilerе Hot Spot.

Рассказ о грядущем осенью продолжении Half-Life - Opposite Force - похоже что оно будет еще забавнее оригинала.

Solaris Developer Connection - со статьями и учебниками.

26.5.99

Получил три недовольных письма и отвечу лучше здесь:

25.5.99

Подправил старые sources от prefа, к которым не притрагивался уже больше года. NC 4.6 теперь играет, но деньги из cookies не достает (это bug, будет исправлен Netscape в следующих версиях Navigatorа). Интересно, позволит ли мое исправление играть в pref с помощью MSIE 3 (тоже без денег)? Я, к сожалению, не могу этого сам проверить. Убрал продолжение прерванных игр, все равно оно толком не работало. Поменял загрузку графики и, самое главное, саму графику карт. Замечательные карты на тему Новые русские нарисованы по моей просьбе Максимом Труханом (огромное спасибо!).

Хороший ресурс - Java Coffe Break.

Вышел новый выпуск The Gimp.

24.5.99

В Netscape 4.6 сломан JSOBject, поэтому pref с этой версией работать не будет :-(

Программы, игры и шпаргалки для калькулятора HP 48, вот несколько снимков:
Hex-editor для HP48 Debugger для HP48 Таблица Менделеева для HP48 Boulder Dash для HP48
Doom для HP48 Space Hulk для HP48 Civilization для HP48 Dune 2 для HP48

Как использовать Samba 2.0 на UNIX-машине в качестве Primary Domain Controller.

22.5.99

Loser: multi-player scroller для Linuxа

В кернеле 2.2.8 обнаружена ошибка, которая может привести к потере файлов. Установите себе лучше последнюю стабильную версию 2.2.9. Подробнее - см. Kernel Notes и Kernel Traffic. А также - объяснения, как устанавливать кернель на Linux Planet. Это нетрудно: make xconfig; make dep; make clean; make bzImage; make modules; make modules_install и потом добавить новый кернель в /etc/lilo.conf и запустить lilo.

Parsec - космическая freeware-игра для Windows, Linux, MacOS и DOSа (вот картинки). А также - графический MUD XShipWars.

Вышел gFTP 2.0.1 (вот снимки, удобная программа).

19.5.99

Ghostbusters Doom

Хорошее введение в JavaScript. И еще одно - на русском (спасибо, Wom).

Том Кристианзен выпустил новый учебник по объектам в Perlе.

Новый сервер www.linux.com.

Интервью с Гейбом Ньюэллом, создателем TF2, которая кроме всего прочего будет позволять речевую коммуникацию между игроками.

17.5.99

10 мифов Java I/O.

Статья о Threshе, зарабатывающем 100 тысяч в год профессиональной игрой в Quake.

15.5.99

Подружка Тукса, Гоун

Вышел NC 4.6 (вот Debian-packages).

На страницах Free Software Bazaar, CoSource и sourceXchange Вы можете предложить свои услуги в написании программы или документации - типичная оплата: 50$-100$ за Perl-скрипт.

14.5.99

Небольшая статья про Python.

Про апплеты и SOCKS-proxy (вот пример). Кстати для Java тоже есть regular expressions и другие полезные библиотеки gnu.*.

Кармак пожертвовал 10000$ на Mesa GL.

12.5.99

MATLAB | OCTAVE

Отличный новый ежемесячник Perl Month - например со статьей об использовании модулей GetOpt.

Сдал наконец свою курсовую - надо было написать несложный скрипт на Perlе для обработки Matlab-файлов (или его бесплатного клона - Gnu Octave). Пригодились скрипты одного норвежца, который пытается написать модуль для анализа Matlab-файлов и другие утилиты.

Получил сегодня недавно заказанную у Amazon.de книгу Writing Apache Modules with Perl and C. Ням-ням.

Два программиста Sun заняты портированием Quake 2-клиента для Solarisа и обещают также обновить Quake и Quake World. Кроме того, Джон Кармак пообещал 100$ за каждую успешную атаку на сервер crashtest.idsoftware.com.

9.5.99

Quake 2 для Solarisа

С праздником!

Первая из серии статей о Solaris filesystem.

http tunnel - позволяет запускать TCP/IP-программы типа telnetа из-за firewallа с HTTP proxy. А также - руководство по обезопасиванию Red Hat-сервера.

Бесплатный сервер bnetd для игры в StarCraft и в будущем может быть в Diablo.

Сегодня вечером должен выйти Q3 Test для Windows.

7.5.99

Сравнение библиотек Qt, Harmony и wxWindows, позволяющих писать программы одновременно для UNIXа и для Windows. Возможно в будущем к ним присоединится GTK.

Статья одного бельгийского кракера о туннелировании firewallов. Мое впечатление: если кто-то позволяет пользователям своего интранета хотя бы получать почту из интернета и пользоваться WWW через proxy, то у человека, а еще лучше у группы людей, поставивших своей целью проникнуть в этот интранет, всегда представится для этого возможность - это просто вопрос времени / денег. О таких случаях мы может быть еще услышим. Другая статья того же автора дает дельные советы о том как сделать данные на своем UNIX-компьютере недоступными (наверное лучше сказать - труднодоступными) для посторонних.

Журнал о Windows NT.

6.5.99

52-летний президент Sony Computer Entertainment

Вышел Licq 0.70c и новый, необычно выглядящий Nicq 0.0.5 (вот снимок). А также - настоящий ICQ 2.20 и юбилейный патч к XTermу.

Сообщение на немецком из Heise-tickerа о том, как фирмы борются за молодых электронщиков и программистов.

Осенью выйдет продолжение Halflife - Opposing Force, в которой Вы окажетесь в шкуре солдата, посланного разобраться с Гордоном Фриманом, но переключившегося на инопланетных монстров.

Microsoft выпустит Windows 98, второй забег.

4.5.99

Service Pack 5 для Windows NT выложен на FTP.

Первая часть из введения в Perl (неплохая, если не обращать внимания на странно отформатированые примеры).

Star Wars I

Сопоставление двух Flash-pluginов для Linuxа.

Статья про diald, который будет автоматически подсоединять Ваш Linux-PC к интернету при запуске browserа или чтении почты и потом так же автоматически оключать.

Сравнение объектных технологий COM и CORBA.

Журнал Digital Video Live - профессионально про видео и компьютеры.

Объяснения, как запустить Q3 Test для Linuxа, если у Вас есть подходящая 3D-карта.

3.5.99

Visual GTK - бесплатно для некоммерческого использования.

1.5.99

Railroad Tycoon II

ASCII-таблица для использования в HTML.

Скомпилировал на свой Debian 2.1 новый kernel 2.2.7 - без проблем, видимо все остальные программы в Slinkе достаточно новые для работы с серией 2.2.x.

После моего пламенного призыва к молодому поколению работать, а не играться, я установил на работе сначала Doom, а потом и Quake. Скорость у обоих при разрешении в 320 x 240 неплохая даже на стареньких SPARC 10. Правда multi-player у Doomа почему-то не работает - надо будет попробовать скомпилировать LxDoom. Зато QuakeWorld 2.10 играется в сети отлично - есть даже страница, посвященная специально версии для Solarisа, и мы воюем во время обеденного перерыва по 4-8 человек.

В свете грядущего выпуска Quake 3 Arenы (вот снимки) усилилась работа над поддержкой 3D под Linuxом. NVidia собирается выпустить драйверы для Riva TNT 1 / 2. Дарил Штраус работает над Banshee / Voodoo 3 X-сервером. Похоже что он - правильный человек для этого - см. статью о его работе над специальных эффектах для Titanicа и танковую 3D-игру Bzflag (вот картинки).

25.4.99

2002: два места на человека

Согласно репортажу IDC в Европе к 2002 году будет не хватать 600000 специалиство по сетям (из них 188000 - в ФРГ). Это видимо значит, что хотя в Европе и не любят иностранных рабочих / инженеров (а где их любят?), через пару лет индустрия надавит на правительство, и для компьютерщиков из России и спутников появится возможность приехать на работу в Европу. Если Вы - ученик старших классов или студент в бывшем СССР и Вам вроде бы нравятся компьютеры и интернет, но Вы еще не решили, кем Вы хотите стать (я и сам в таком вялом состоянии был в том возрасте) - то может быть это сигнал для Вас? Это шанс не идти на стройку или в бизнес (раньше это называлось фарца), а заняться интересной и нормально оплачиваемой работой.

Но! На Вашем компьютере всегда установлена новейшая версия Windows 98 и драйверов к ней, Page Maker и Norton Utilities? Вы умеете программировать на HTML? Ваши знакомые звонят Вам при любых компьютерных неполадках? Вы сидите часами в интернете? Всего этого недостаточно. Вы можете так еще 20 лет дальше развлекаться и производить впечатление своими знаниями на подружек и родителей... Что бы я сделал на Вашем месте прежде всего?

Статья про Perl и Open GL (MESA).

24.4.99

DOOM Legacy в режиме split-screen

Поставил себе Licq 0.70b.

Гамбургский проект бесплатных программ и компонентов Free Delphi.

C Meister 1.0 - корейское IDE для программирования на C (вот демонстрация), само написанное на Java.

iODBC - имплементация Microsoftовского ODBC для UNIXа. Может быть мне придется через пару месяцев поставить эти драйверы у себя на работе чтобы можно было из под Solarisа соединяться к SQLBase на Windows NT (тьфу!) с помощью DBD::ODBC... Вот, кстати, глава из книги о программировании баз данных с помощью Visual C++.

Как всегда стоящая статья Натана Торкингтона - о taintingе (про опцию -T) в Perlе.

23.4.99

Узнал от автора CGI.pm, как напечатать META-информацию насчет кодировки:

print meta ({-http_equiv => 'Content-Type', 
             -content    => 'text/html; charset=koi8-r'});

Подобная вещь может понадобиться только если Вы используете CGI.pm для создания каких-нибудь статических HTML-файлов. Посылать HTTP-EQUIV из нормального CGI-скрипта нет смысла - в нем следует создавать обычные HTTP-заголовки:

print header ('text/html; charset=koi8-r');

Уровень для DOOMа 18-летнего убийцы из Денвера

Кстати, как быстренько проверить что выдаст такой header (...)? Введите в Вашей shell: perl -M'CGI qw (:standard)' -e 'print header("text/html; charset=koi8-r")' (введите в shell perldoc perlrun чтобы почитать о других опциях Perl-интерпретера).

Еще один трюк для CGI.pm: при посылке файлов к серверу browser тоже посылает заголовок Content-Type. Эту информацию Вы можете использовать для контроля:

use CGI       qw (:standard);         # обойтись без объекта $query
use CGI::Carp qw (fatalsToBrowser);   # отправлять сообщения die не в
                                      # error_log сервера, а к browserу
$CGI::POST_MAX = 131072;              # прием максимум 128 килобайтов 

...

$filename = param ('upload');         # upload - это поле в нашем формуляре
$type     = uploadInfo ($filename) -> {'Content-Type'};   # см. perldoc CGI

unless ($type eq 'image/gif' or $type eq 'image/jpeg') 
{
    die 'Принимаем только картинки GIF или JPEG!';
}

Миша посоветовал другие русские UNIX-новости наподобие моих: Just News Павла Романченко (вот зеркало), Linux.Ru.Net и Open Net.

22.4.99

База данных Interbase 4 для Linux - бесплатно для частного пользования.

Руководство по программироавнию на mod_perlе.

21.4.99

Витамины

Глава из книги про Visual Basic о программировании FTP-клиента и еще - глава о программировании кнопок при помощи библиотеки MFC. И статья об интернете и Windows CE.

Еще одна глава из книги Learning Python - про JPython. Эта удивительная программа компилирует Javовские class-файлы (в том числе и апплеты) из Pythonовых скриптов. Стоит ли покупать саму книгу - решайте сами - в ноябре будет выпущен Python 2 и соответственно обновленное издание Programming Python.

Болтология на тему Java 2 и другие статьи в регулярной колонке Bite Size Java.

Borland обещает выпустить JBuilder 3 для Windows, Solaris и потом Linux.

Новости и слухи Mac in Touch.

20.4.99

Статья про Java 3D API.

Статья про LDAP.

JRun Magazine - правда больше похожий не на журнал, а на длинную рекламу этого коммерческого продукта для запуска servletов.

18.4.99

Хорошие короткие советы пользователям MySQL.

17.4.99

Новости Solaris Central, Win Info и Ars Technica.

Проект Open Portal попытается скопировать популярные сейчас My Yahoo, My Netscape и т. п.

16.4.99

Вторая глава из книги Just XML.

14.4.99

Pingus - клон Lemmings для UNIXа

Cтатья про JavaBeans.

Драйверы для Windows.

Вышел отладчик програм для многих платформ gdb 4.18.

Введение в AWT, а также первая глава из книги про JavaScript.

Как сделать бегущий текст с помощью JavaScriptа и обсуждение объекта screen. Более подробное описание этого и других объектов Вы найдете конечно в JavaScript reference (место, куда всегда следует заглянуть, прежде чем задавать вопросы в comp.lang.javascript).

Получил наконец карточку VISA - так что через две-три недели Преф Ньюз переедет на http://216.92.54.1/simplex/news/, еще попозже это будет адрес http://www.simplex.ru/news/ - с несколькими редакторами и обсуждениями статей. У нынешнего сервера кстати уже второй день какие-то проблемы...

12.4.99

Learning Python

Объяснения про два вида упомянутых позавчера virual hosts - с одним IP-адресом (работает только с новыми browserами, поддерживающими HTTP/1.1) или с несколькими на одной машине (см. ifconfig alias).

Хорошая статья о JFC. И еще две - о программировании на Perlе socketов и FastCGI.

Быстрый способ рисования небольшого рисунка в апплете - не из paint() и не из update() (как это обычно делается) - а из любой функции с последующим вызовом getToolkit().sync(). Вот пример - java slot machine.

11.4.99

Статья про Macromedia Fireworks А также - про создание анимаций при помощи Gimpа.

Две статьи о языке PostScript: 1 и 2.

Вышел короткий второй выпуск Python Journalа.

10.4.99

Статья о HTTP/1.1 (а здесь - о CGI/1.1). Действительно, новая версия этого протокола вводит постоянные соединения browserов с WWW-серверами по умолчанию (если не был послан заголовок Connection: close). Кроме того введены non-IP virtual hosts - разные URL, расположенные на одном и том же сервере, причем с тем же IP-адресом. Некоторые провайдеры предлагают подобную услугу, но ее недостаток в том, что старые browserы обслуживаются неправильно. Там же объясняется суть метода HEAD - сервер посылает те же заголовки, что и при запросе GET, но не посылает сам файл:

Джон Кармак

$ telnet www.simplex.ru 80
Trying 194.190.194.56...
Connected to www.simplex.ru.
Escape character is '^]'.
HEAD /news.html HTTP/1.0

HTTP/1.1 200 OK
Date: Fri, 09 Apr 1999 23:26:51 GMT
Server: Apache/1.2.0 rus/PL18d
Content-Length: 18306
Last-Modified: Fri, 09 Apr 1999 23:21:49 GMT
ETag: "342c-4782-370e8b8d-koi8-r"
Connection: close
Content-Type: text/html

Connection closed by foreign host.

Две главы из недавно вышедшей книги Learning Python (заказал себе на работе).

Дисковод Димы Турецкого - популярно о компьютерах.

Рассказ о Q3A и несколько интервью с ее авторами.

5.4.99

Warzone 2100

Введение в XML для абсолютных новичков.

Объяснение системы привилегий пользователей MySQL, включая две недавно (начиная с версии 3.22.11) введенные таблицы tables_priv и columns_priv. А также - введение в PHP3.

Qt Architect - генерирует C++-код для програм под Windows и UNIX.

4.4.99

Первая статья из серии Sun World про программирование сигналов под Solaris. И там же - про малоизвестный скриптовый язык ICI и короткое введение в Python, который похоже становится сильным конкурентом Perlа. См. также свободно распространяемую книгу - Picking Up Perl. Есть и PostScriptовый вариант для распечатки на работе ;-)

3.4.99

Doom Bots

Intel Secrets - много статей про программирование процессоров (см. например раздел Dr. Dobb's Undocumented Corner).

Beta News и Beta Bites - в основном о программах для Windows. А также - обзор MySQL как продукта.

Дайджест newsgroups по Mozillе.

Интервью одного из авторов Doomа - Джона Кармака.

2.4.99

Введения в Flash (это plug-in для векторной графики), Shockwave и After Effects. А также описание RealFlash и архив нескольких публикаций про продукты Macromedии.

Десять популярных Javascriptовых программок. Например, чтобы сделать кнопку

<FORM>
<INPUT TYPE="button" VALUE="Back" ONCLICK="history.go (-1)">
</FORM>

Моя сессия наконец-то закончилась. На следуюшей неделе я получаю в банке кредитку VISA и плачу за новый сервер, с собственным CGI, 80 MB и MySQL. Всего за 30 долларов в месяц, у того же провайдера, где находятся Blue's News и Sharky Extreme. Провайдера в Зеленограде - Inter Soft - у которого мой сервер был размещен до сих пор, я могу только порекомендовать остальным - отличный сервис. Особенно я благодарен Денису Головенко за помощь с регистрацией www.simplex.ru. У Преф Ньюз появятся скоро несколько редакторов и возможность обсуждения статей. А также - объявления о поиске/предложениях работы для администраторов, программистов и дизайнеров. Максим Трухан нарисовал отличный логотип (спасибо!), и я сижу сейчас над backendом к серверу... надеюсь получится полезный сервер для тех, кто зарабатыает на жизнь компьютерным ремеслом.

Короткое введение в очень мощный (без шуток) текстовый редактор vi.

1.4.99

Полезный JavaScriptовый трюк: чтобы автоматически вносить адрес Вашей странички в bookmarks (фавориты) посетителям, вставьте в нее (между <HEAD> и </HEAD>) следующий код:

<SCRIPT>
<!--
    document.bookmarks[document.bookmarks.length].value = location.href;
//-->
</SCRIPT>
31.3.99

Форум вопросов и ответов по Gimpу для тех, кому не хватает дискуссий в comp.graphics.apps.gimp. Кроме того вышел Gimp 1.0.3, компилирующийся с новым GTK. Кстати, а Вы знаете, что есть довольно оживленные newsgroups для пользователей Photoshopа и Paint Shop Pro?

Где можно поискать работу, если Вы программист или админ: Brain Power, Monster и Linux.de (последний - только по Германии).

30.3.99

Win32 Perl Programming: The Standard Extensions

Как использовать SSI и дополнительные модули с Apache-сервером.

Статья трехлетней давности, но все еще актуальная и приятно написанная - про logи WWW-сервера - как их анализировать и крутить (автоматически укорачивать). И - выступление того же автора на ту же наболевшую тему на недавней Perl-конференции. См. также объяснения в Apache Week.

Собрание stored procedures для базы данных Sybase. А также SybPerl (с которым я ковыряюсь на работе - админ не решается устанавливать DBD::Sybase, так как тот все еще alpha).

Похоже, что лучшая книга по Perlу для Win32 в настоящее время - это Win32 Perl Programming: The Standard Extensions. К сожалению, в сети нет отрывков из нее, но есть 198 примеров - полезные в основном для NT-админов. Про другую книгу - Learning Perl on Win32 Systems - я читал только нехорошие отзывы.

29.3.99

Putty Squad на эмуляторе SNES

Как установить procmail взамен /bin/mail.

Серия из четырех статей о том, как создать базу данных MS Access и присобачить ее к сети при помощи ASP и VBScript: 1, 2, 3 и 4. И вот еще - легкое чтение на тему базы данных и WWW.

Безвредный, но довольно живучий вирус Melissa распространяется через MS Word. При открытии документа запускается макро, которое заражает файл normal.dot и отправляет 50ти первым адресатам из адресной книги Outlook Express письмо со своей копией и субъектом Important Message From ...

28.3.99

Heretic для Linuxа

Новый журнал про Linux Bleeding Edge.

Вышли WWW-сервер Apache 1.3.6 и база данных MySQL 3.22.20.

Один из авторов aps2php пытается создать конвертер из Visual Basic в C/GTK для некоммерческого использования.

Valve выпустит TFC 2го апреля. LokiSoft выпустит Civilization CTP для Linuxа - 26го (вот снимки), Q3A test (возвращение бензопилы!) - через пару недель (снимки здесь). Уже выпущен Heretic 1.0 - с музыкой (вот картинки).

26.3.99

Вышел NC 4.51 для нескольких платформ, включая Linux glibc2.

25.3.99

Zelda III на эмуляторе SNES

Серия из 14 неплохих статей Using Java, а также немного про Perl 5 - из журнала ;login: (остальные публикации - платные). Про Jini, программирование Macromedia Flash (йиппиии - с картинками!) и отладку PHP-скриптов Вы можете почитать в мартовском Web Techniques.

Журнал Visual Developer, пишет например про VBscript и ASP.

Дискуссия о том, что ведет себя стабильнее под большой нагрузкой (база данных Oracle) - NT, Linux или Solaris. (Похоже, что Solaris на Sunовском hardware. Зато Linux / Intel - дешевле всего. NT / Intel - ненадежно.) Там кстати теперь введена система оценки полезности комментариев. Можно сделать так, чтобы slashdot.org показывал Вам только стоящие перлы (Score больше 3 или 4).

Описание грядущей TFC на сервере Threshа. (Парень выиграл Ferrari несколько лет назад на соревнованиях PGL по Quakу. Прежде чем Вы тоже побежите выигрывать машину, подумайте о том, что он тренировался по 6 часов в день и жаловался, что Quake считывает мышь всего лишь с частотой 10 Hz).

24.3.99

Team Fortress Classic

Поставил себе Word Perfect 8 для Linux (35-40 MB). Выглядит красиво, но

Corel рекомендует не устанавливать программу как root. После установки xwp не хотел запускаться: can't load library 'libXpm.so.4'. Из corelsupport.wordperfect-linux и FAQ выяснилось, что нужна старая версия библиотеки Xpm.

23.3.99

Galaga'88 на MAME

Начитался в переехавшем на Tucowsовское подразделение Linuxberg журнале Ext 2 уверений, что в независимом Debianе всегда будет меньше ошибок, чем в находящихся под постоянным давлением коммерческих RedHat и SuSE и поставил себе Debian (slink). Причем если Вы обратитесь к кому-нибудь из giveaway-списка, то все 4 компакта обойдутся Вам, как и мне, марок в десять. Заодно установил себе WXftp 0.4.4 (который компилируется и с GTK и с Motifом - вот снимки) и Afterstep 1.7.75.

Письмо от Жени:

Хочу выразить свое фи по поводу несколько нелепой заявы 
про кучу коннектов к серверу. Коннект в современных 
браузерах и веб-серверах остается один (http/1.1). 
Я статью (если это можно так назвать) про http
написал с месяц назад ( http://www.os2.spb.ru/rdm2/ ).
Там и ссылки есть на стандарты.

Кхм-кхм... он конечно прав. В свое оправдание могу сказать, что треть вызовов в лог-файле моего сервера - HTTP/1.0. Кроме того, если Вы сделали страничку, и там все текстовые надписи сделаны в виде картинок, то может быть есть смысл подумать над своим замечательным дизайном еще полчасика (и не забывать про CSS и DHTML)? В любом случае, этот RDM2 - неплохой русский электронный журнал разработчика, нуждающийся в новых авторах и статьях.

22.3.99

Статьи про новый скриптовый язык Dylan и про модуль для Perlа XML::Parser. А вот еще один маленький, но приятный Perl-модуль, который достает задержанную на 15-20 минут биржевую информацию из Yahoo! Finance - Finance-YahooQuote. После того как Вы установите его (как обычно perl Makefile.PL; make; make install) и запустите скрипт вроде такого,

#!/usr/bin/perl

use Finance::YahooQuote;     # использует LWP::UserAgent и HTTP::Request::Common

@header = ("Symbol", "Name", "Last", "Trade Date", "Trade Time", "Change", 
           "% Change", "Volume", "Avg. Daily Volume", "Bid", "Ask", 
           "Prev. Close", "Open", "Day's Range", "52-Week Range", "EPS",
           "P/E Ratio", "Div. Pay Rate", "Div/Share", "Div. Yield", "Mkt. Cap");

@quote = getonequote 'NSCP';                # получить данные для фирмы Netscape

foreach $i (0 .. $#header)            # $i пробегает от 0 до последнего элемента
{
    printf "%-20s %s\n", $header[$i], $quote[$i];
}

то (при условии, что у Вас установлена библиотека libwww) получите следующие данные:

Symbol               NSCP
Name                 NETSCAPE COMM
Last                 97.625
Trade Date           3/17/1999
Trade Time           4:00PM
Change               +3.5625
...                  ...

Когда я болтаю через ICQ с ребятами, которые делают WWW-странички, то все шлют адреса их работ и предлагают пособить с дизайном. Но мне такой помощи совершенно не хочется, потому что они делают одну непонятную для меня вещь - таблицу с 10-20 отдельными картинками (да и не картинки вовсе, а обыкновенный текст зачем-то в виде графики) на первой странице. Например здесь, здесь и здесь. Ну какой в этом смысл? Для каждой такой (пусть и небольшой) картинки (и для каждого фрейма) browserу приходится устанавливать новую HTTP-связь к серверу. Иногда приходится ждать несколько минут, чтобы в результате прочесть всего несколько слов. Я не против графики, но почему не сделать тогда одну большую картинку <IMG ... ISMAP>? Тогда browserу нужно будет связаться с сервером всего два раза вместо двадцати - чтобы получить страничку и картинку.

18.3.99

Learnin the vi

Microsoft выпустил IE 5.0 (по их уверениям - не beta).

Еженедельная серия статей о программировании игр под Linuxом: 1 и 2.

Много хороших коротких статей про программирование на Perlе на немецком языке. В том числе про использование Java (Lingo), C / C++ и threads (multithreading появится в версии 5.005), а также как подсчитывать clicks и работать с OLE-документами. Последняя статья написана самим автором модулей OLE::Storage и Unicode::Map (CP1251 поддерживается), но к сожалению они пока мало что умеют (сохранять некоторые MS Office-документы как текст, да и то - лишь частично). Зато я узнал два простых способа создавать Excel-файлы на лету.

Новый частный сервер, посвященный Gimpу - например со статьей, как рисовать облака.

Заказал на работе книгу Mastering Regular Expressions и взял неделю отпуска на экзамены. (Кстати, вот еще целая глава из книги про текстовый редактор Vi). Хочу подарить маме на день рождения в апреле подписку на Огонек, вот их ответ:

Попробуйте обратиться в одну из этих организаций:

Lange & Springer                 
Wissenschaftliche                Buchhandlung Raduga
Buchhandlung GmbH & Co.KG        zu Hd. Frau Nina Gebhardt
Otto Suhr Allee 26/28            Friedrichstrasse 176/179
D10585 Berlin                    D10117 Berlin
Tel.: (030) 340050               Tel.: (030) 20302321
Fax: (030) 3420611

или найти в Германии представительство АО Межкнига.
17.3.99

Парень из Израиля собирает PHP-скрипты. А также: Developer Shed - как и Преф Ньюз посвящен веб программированию. Там тоже есть пара скриптов.

Пис

Красивые иконки и анимированные картиники (как та, что справа) от Andy.

Уважаемые господа!

Из-за отсутствия денежных средств вынужден обратиться к Вам с просьбой 
помочь мне в получении одного протеза на ногу. Взамен гарантирую бесплатную  
рекламу продукции Вашей фирмы в 24 газетах Украины. 

С уважением главный редактор украинской газеты Волынский рынок 
Игорь Карвовский, info@vrynok.lutsk.ua
15.3.99

MySQL и mSQL

Подробные объяснения как установить Sambу и настроить Windows. И там же -как установить Apache, MySQL и PHP3.

Статья об управлении веб-сайтом с помощью CVS. Сомневаюсь, правда, что многие так делают.

Поставил себе Licq 0.61, который умеет теперь посылать и принимать файлы, запускать Netscape и позволяет изменять размеры окон.

У моего папы (ICQ# 15845204) день рождения!

14.3.99

Собрание JavaScript- и Perl-скриптов (с демонстрациями оных).

Статья про GIMP. И про Kai's Power Tools.

13.3.99

Team Fortress для Doom

Windows TechEdge - интересное издание IDG.

Три эффектных функции для Ваших Perl-скриптов под UNIX:

sub CLS     { print "\e[;H\e[2J"; } # очистить экран
sub INVERSE { print "\e[7m"; }      # инвертировать экран
sub NORMAL  { print "\e[0m"; }      # вернуть нормальный

Страничка про использование MySQL-базы как backend для WWW-сервера (на нем. яз.)

12.3.99

Civilization CTP для Linux

В comp.lang.perl.modules обсуждали проверку правильности HTML-ссылок. Советуют использовать входящие в libwww модули LWP и HTML::Parse. Джим Вайрих предложил взглянуть на его старую статью в Linux Journalе. Но похоже что посылка только HEAD или даже и GET-запросов ненадежна из-за некоторых неправильно настроенных WWW-серверов. Гораздо более практичное решение предлагает Рэндал Шварц в своих заметках Web Techniques.

Хорошая статья про DBI - стандартный модуль для работы с базами данных. Например с MySQL посредством DBD::mysql - см. красивый пример и архивы по MySQL/mSQL и DBI.

Статья Пауля Стида из Id software, в которой он шаг за шагом показывает создание фигурки игрока из Doomа с помощью 3D Studio Max (вот конечный результат).

Речь создателя Perlа Лэрри Уолла - на этот раз чересчур заумная.

Небольшой крэш-курс Instant Python.

11.3.99

Статья на Linuxworldе про конкурента Perlа - Python. И там же - немного про конкурента Photoshopа - графический редактор Gimp.

7.3.99

Хе-хе. Ребятам, которые делают Linux, наплевать на попытки какой-то корпорации ввести контроль. Поэтому они выпустили кернель Linux 2.0.37pre8, чтобы дать пользователям возможность выключить Intelовский Pentium III serial number.

6.3.99

Книга MacPerl: Power and Ease.

5.3.99

Mastering Algorithms with Perl

Руководство к WinGate на рус. яз.

Новости Emulators Unlimited и Dave's Classics.

Если Вы забыли пароль для rootа под Linuxом:

  1. Загрузите компьютер с rescue-дискеты
  2. mount -t ext2 /dev/hda1 /mnt
    • или /dev/sda1 если Linux установлен на SCSI-диске
    • или b - если это второй диск
    • или 2 - если вторая partition
  3. Запустите редактор vi /mnt/etc/passwd, vi /mnt/etc/passwd- или vi /mnt/etc/shadow
  4. Сотрите в строке, в начале которой написано root, все знаки между первым и вторым двоеточием
    • j - вниз
    • k - вверх
    • h - влево
    • l - вправо
    • ...прыжок на месте - провокация
    • x - стереть
  5. Напечатайте :wq чтобы записать подправленный файл и выйти
  6. umount /mnt
  7. Перезапустите компьютер и вместо пароля к root нажмите клавишу ENTER

Две книги, которые я куплю летом: Mastering Algorithms with Perl и MySQL & mSQL.

4.3.99

Еще не закончившаяся серия статей про стандартную библиотеку C: 1, 2, 3 (про <stdio.h>) и 4 (про <ctype.h>).

Обсуждение, как понадежнее настроить Linux при условии, что в любой момент может вырубиться ток (то есть нет возможности провести shutdown). Советуют mountировать partitions только для чтения (в режиме ro) и запускать при следующем старте fsck.

3.3.99

Линки для sysadminов - страничка автора русского Apache-сервера Алексея Тутубалина.

NC 4.51 для Windows и Linux появился в субботу на пару часов на сервере Netscape и после этого исчез. Если у Вас есть желание, можете скачать неофициальную копию (только для libc5) или почитать release notes.

Шутки ради ответил на вопрос, как принять файл в кодировке Base64.

2.3.99

Duke Gnukem

Из-за Perl Power Tools разразилась дискуссия, в основном между приверженцами Perlа и Pythonа. Там же упомянули Dylan и CorbaScript. И вообще в Sunworld есть серия статей про новые скриптовые языки (Ficl, FIJI, Introl-CODE, Rebol, Ruby, Tcl и WebL): 1 и 2.

Конкурс на ненормальный Perl.

Вышел a2ps 4.10.4.

Новый полезный веб-сайт: Search Linux.

1.3.99

Удобный JavaScriptовый трюк: если у Вас на странице есть форма, напишите:

<BODY ... ONLOAD="document.forms[0].elements[0].focus ()">

и тогда после полной загрузки страницы курсор сам прыгнет к первому полю этой формы.

Том Кристианзен начал новый проект Perl Power Tools (названного по мотивам великолепной книги, которая должна быть в районе досягаемости каждого UNIXоида) с целью замены распространненых утилит UNIX аналогичными скриптами. Это неплохая идея, так как на многих машинах некоторые утилиты отсутствуют. (Полу)готовые утилиты выделены курсивом.

Регулярные новости Linux и журнал UNIXOID - все на рус. яз.

27.2.99

Advanced Perl Programming

Для зачета мне надо было отсидеть два последних дня с 9 до 17 часов на одной лекции, без (!) последующего экзамена. Естественно, что я взял с собой Advanced Perl Programming и поднимал взгляд из-под парты только чтобы преданно поглядеть на лектора, когда он обращался к аудитории.

Прочел все, кроме двух глав о Perl/Tk, потому что Tk корявый (Perl/GTK+ лучше). Интересная книга, но наверное не для каждого, так как автор берет всего несколько тем и копает их в глубину. Думаю, что любому, кто немного разбирается в C и уже долго пользуется Perlом интересно, как этот гениальный язык спрограммирован. Срирам Сринивазан (ни х.. себе фамилия) посвящает несколько глав внутренностям Perlа (см. также perldoc perlguts), расширению Perlа с помощью программ, написанных на C (см. также perldoc perlcall и XS cookbooks) и наоборот - использованию Perlа из Ваших C-програм (см. perldoc perlembed - так работает например mod_perl, временами раз в двадцать более быстрый, чем CGI).

Введение в Perl В. Маслова и полудохлая relcom.comp.lang.perl.

25.2.99

Наконец-то я получил заказанную несколько недель назад Perl Cookbook. Это сборник рецептов решения различных проблем с последующим обсуждением недостатков и преимуществ. Читаю с большим удовольствием и уже заполнил пару дырок в своем знании Perlа. Например, как бы Вы удвоили возраст в такой строке: $text = 'I am 26 years old'; ? Я знал только один способ: $text =~ s/(\d+)/@{[2 * $1]}/; Но можно и проще: $text =~ s/(\d+)/2 * $1/e; Кроме того, в наш отдел на работе пришла книга Advanced Perl Programming. Я ее пока еще не читал, но слышал, что она тоже хороша, и поэтому тут же утащил ее к себе домой :-)

Heretic приспособили для PowerPC. А также: Valve выпустит скоро и бесплатно Team Fortress Classic (вот снимки).

24.2.99

Warzone 2100: RTS-игра для Windows

Oracle начал публикацию журнала Internet Developer.

Бесплатные PFR-шрифты для тех, кто хочет разукрасить свои страницы технологией True Doc. Жаль, что это счастье не работает (пока?) под UNIXом и для создания собственных embedded шрифтов нужно покупать специальный редактор.

GFax - frontend для Mgetty+Sendfax и Hylafax - вот картинка. Кстати, если бы я жил в каком-нибудь большом городе России и имел бы постоянный доступ к сети, то давно уже сделал бы платный факс-сервер с помощью одной из этих двух програм.

Обзоры игр: Andrenaline Vault, заново перепроданный OGR и Game Spot UK.

Подружка подарила двойной компакт Garage Inc. Они играют 27 чужих песен (лучшая - как всегда, не рок, а блюз - Tuesday's gone). Неплохо, но у Metallicи есть альбомы и поприятнее.

23.2.99

С праздником Вас, товарищи бойцы!

Cutting Edge Linux - перечисляет изменения между разными версиями kernelя.

Выпущен ICQ 99a (beta v.2.13 build #1700, что бы это ни значило...)

Испробовал на своем медленном Sparc 5 на работе Blackbox 0.50.3 - действительно быстрый и неприхотливый (жрет мало памяти и не требует никаких графических библиотек). И выглядит неплохо. Но к сожалению слишком неудобный пока - совсем нет икон, нет pagerа и неудобный список запущенных програм. Ответы на вопросы можно получить в FAQе или mailing listе.

Красивые фоновые картинки - Digital Blasphemy и Propaganda.

20.2.99

Три кухни слухов: Apple Insider, Apple Recon и Mac OS Rumors.

Reference Cards - удобные шпаргалки.

19.2.99

Apache: The Definitive Guide

O'Reilly выпустило второе издание книги Apache: The Definitive Guide - про Apache 1.3 - для Windows и UNIX.

Linux для 8086.

Книга Securing Java, с объяснениями, как подписывать appletы.

Borderline Productions собираются заработать деньги на страдании и смерти тысяч людей и выпустить в июне игру The Russian Front. Судя по обзору в NGO технически это творение также будет дрянью.

18.2.99

Энциклопедия вирусов Symantecа. Там например написано, как избавиться от так называемого червяка HAPPY99.EXE, которого подцепил на последней неделе мой старик:

  1. Сотрите файл WINDOWS\SYSTEM\SKA.EXE
  2. Сотрите файл WINDOWS\SYSTEM\SKA.DLL
  3. Переименуйте файл WINDOWS\SYSTEM\WSOCK32.SKA в WINDOWS\SYSTEM\WSOCK32.DLL
  4. Сотрите письма с приложенным HAPPY99.EXE (из всех папок)
  5. В следующий раз не запускайте никакие присланные Вам файлы, даже если они присланы Вам друзьями (если они тоже слабо соображают в компьютерах)

Этот троянский вирус прислал отцу один знакомый, я думаю, не специально. Папа конечно тут же запустил его, щелкнув дважды по приложенному файлу и проигнорировав справедливые предупреждения Outlook Expressа. Пока он любовался фейерверком в честь наступившего 1999 года, вирус подменил интернетные системные файлы, чтобы следить за отправкой почты, и каждый раз добавлял свою UUENCODEнную копию ко всем исходящим письмам.

17.2.99

Серия из трех статей (1, 2 и 3) о различных подсчетах дат средствами shell. В Perlе всю эту календарную арифметику перенимает на себя удобный модуль Штефана Байера Date::Calc.

Вышел gFTP 1.12.

Poot - медленный линк.

16.2.99

Новый Palm V

Похоже, что Microsoft собирается плюнуть на Javу и VJ++ и полностью переключиться на доморощенный язык программирования Cool.

Небольшая статья про архивацию файлов под UNIXом при помощи tar, compress и gzip.

Разноцветные темы для bash.

Upside Today и ирландские (редко обновляемые) Hack Watch News. А также - обзор под редакцией Димы Завалишина - DZ Online.

glDoom будет портирован сперва на G3 Mac и потом на Linux.

10.2.99

Карта Baldur's Gate

Отрывок из книги Perl in a Nutshell - про перспективную альтернативу к медленному CGI - mod_perl. И рядом - статья как сделать меняющиеся под курсором картинки - rollover (см. также обозрение JavaScriptа для начинающих).

Введение в CGI.pm в ежемесячной колонке Dev Headа. Там же - про установку Perlа на Windows NT, или например, как посылать картинки к browserу из MS SQL serverа. Или введение в стандартный язык для управления банками данных - SQL.

Вышел gFTP 1.11 - больше не зависает после отправки файла.

Неподдельная радость и книжка с картинками.

8.2.99

Я разыскиваю инвалидную коляску для одного друга. Вчера ему прислали совет:

From:    Karen <karen@dieh.human.donetsk.ua>
To:      borisov@solar.rtd.utk.edu
Subject: Удавись

решение всех проблем !!!!!!!!!!
7.2.99

Архив CGI-скриптов и учебников.

6.2.99

Куда идем мы с Пятачком...

Дискуссия, что лучше: sendmail или qmail. Похоже, что sendmail умеет больше, но без книжки с летучей мышью при его настройке не обойтись. Параноикам советуют также postfix (бывший VMailer), созданный автором SATANы.

Into the Core - интервью с программистами из Macintoshевской индустрии. Например с Майком Пинкертоном из Netscape. И еще интервью с кем-то из Yellow Dog Linux - расхваливает Linux на G3.

Hack Zone - интересный еженедельный обзор на русс. яз.

Поставил себе ATerm 0.3.2 - и он перестал оставлять core-файл при выходе из Afterstepа. gFTP делает ту же гадость сразу после отправки файла - поставил себе версию 1.1, но это не помогло.

Вбухал все свои деньги в 19-дюймовый Sony-монитор - глазам действительно легче.

4.2.99

Что думает о Perlе Microsoft. И прошлогоднее интервью Larry Wallа.

Mind: RTS-игра для Linux

Вышла февральская Linux Gazette, например со статьей о модулях, которые загружаются kernelем по мере необходимости поддержки какого-нибудь железа, а когда они больше не нужны, умный kerneld убирает их из памяти... Если говорить о поддержке разного hardware, то я не покупал бы портативный компьютер, не проконсультировавшись сперва со страничкой Linux on laptops.

Precision Insight Inc выпустит XFree86 с интегрированной Open GL-библиотекой MESA. Похожую вещь собирается сделать и S.u.S.E. GmbH. Кстати, если Вы увлекаетесь программированием Open GL под Windows, то Вам будет интересно почитать разглагольствования программиста, работающего в знаменитой Id, Брайана Хука.

Журнал C++ Report и статья про неприятные стороны C++ exceptions. И еще две статьи: Coping with Exceptions и Exception-Safe Generic Containers.

3.2.99

Выпущен основанный на LaTeX текстовый редактор LyX 1.0.0 (вот снимки). LaTeX - мощная система - на нем издательство O'Reilly создает удобнейшие книги.

Perl News - про новые модули и др.

Новости британской компьютерной индустрии The Register.

2.2.99

Журналы Web Server Online и Web Techniques. А также ежедневник On top of IT. Кроме того, вышли февральские выпуски e-zinов FreeBSD, Daemon News и Ext2 (в последнем опубликовано интересное интервью автора vimа).

Взял с работы почитать дома книгу Official Guide to Programming with CGI.pm. Особенно рекомендуется новичкам, но и профессионалы cмогут вычитать из этой книги пару хороших советов и посмотреть на красиво написанные скрипты (это Вам не ужасные скрипты из Matt's script archive). Модуль CGI.pm входит начиная с версии 5.004 в джентельменский набор Perlа (см. perldoc CGI). Одно из его преимуществ (по сравнению например с устаревшим и неудобным cgi-lib.pl): один и тот же скрипт используется обычно и для генерации WWW-формы и для последующей обработки ввода - это делает Вашу программу более интерактивной (так удобнее реагировать на недостающие или неправильно введенные данные).

На странице Perl FAQ a day Вы можете подписаться на ежедневную присылку по e-mail (без всякой рекламы) одного вопроса/ответа из замечательного Perl FAQ.

1.2.99

Статья (на нем. яз.), как пользоваться CVS.

На slashdotе обсуждали, какая база данных (для Linux) подходит лучше всего как backend к WWW-серверу. MySQL хвалят за скорость (и бесплатность), но ругают за отсутствие триггеров и трансакций. Видимо MySQL - лучший выбор для несложных манипуляций некритическими данными. Лидер рынка Oracle может все, но его очень трудно настроить (сотни параметров, мало документации). На тему баз данных + web-сервер в сети есть книга Phillip and Alex's Guide to Web Publishing.

Perl-модуль Archive::Zip (+) - к сожалению, пока еще только в процессе написания.

28.1.99

Practical C Programming

Взял с работы полистать Practical C Programming - пока ничего полезного из нее не вычитал, болтология, про указатели маловато написано.

10 страниц о грядущей (q3test ожидается в конце марта) Q3A.

26.1.99

Licq 0.51

Хотел было написать pref-сервер используя pthreads (которые есть и на Linuxе и на Solarisе), причем совсем отказаться от вызова select () и в одном pthreadе все время читать, а в другом все время писать. Но потом передумал: ведь цель сервера - как можно быстрее перебрасывать данные, пришедшие по одному socketу на другой. А на однопроцессорной машине pthreadы это дело только замедлят (из-за часто ненужной смены - ничего не пришло, а CPU все равно pthreadу отдается). По-моему все-таки без select () не обойтись. Поэтому я уже три дня пишу с нуля преф-сервер. Получается хорошо, но я ничего не обещаю, просто нужно время. Единственная проблема, которую я пока не знаю как решить - это GUI клиента. Как изобразить, кто с кем играет и как сделать выбор игроков? Было бы неплохо что-нибудь вроде Swingовского JTable, но ведь в Java 1.02 ничего такого нет?

25.1.99

Поставил себе gFTP 1.0.3 - удобный графический FTP-клиент, внешне (вот снимок) скопированный с Windowsовского WS_FTP. А также - Licq 0.51 (вот снимки).

22.1.99

Статья о том, как использовать CSS1, не портя впечатление владельцам старых browserов. Еще статья о том, как все будет стандартизированно и хорошо в грядущих Netscape 5 и Explorer 5. И - если уж распускать слюни - статья о нововведениях в Linux 2.2.0 (который похоже выйдет через пару недель).

20.1.99

Perl Cookbook

Heretic для Linuxа (пока без звука и сети). Вам понадобится файл heretic.wad, его можно взять из shareware-версии:

cat HTIC_V12.1 HTIC_V12.2 > file.zip
unzip file.zip
mv HERETIC1.WAD heretic.wad

Хе-хе, мне повысили зарплату еще на DEM 120,- и долго извинялись, что так мало. На самом деле я никуда не собирался от них уходить - мне нравится играться с их Solarisом и я был доволен заработком. Но если чувствуешь, что можешь выступить и получить больше, зачем себе отказывать? Хуже чем nein ничего не случится - никто не увольняет работников с трех-летним стажем. К тому же я-то не езжу на такси из Аахена в Дюссельдорф и обратно, как это постоянно делают наши менеджеры... Заказал по такому случаю Perl Cookbook.

Статья про модуль WWW::Search, с помощью которого Вы очень просто (всего неск. строчек кода) можете отправлять запросы к Deja News, Alta Vista и еще к десятку других поисковиков прямо из Вашего Perl-скрипта.

17.1.99

Advanced Perl

И еще одна полезная глава про структуры данных и указатели из книги Advanced Perl. (К ней тоже есть примеры). Например, как понимать $$a[2]? Как ${$a[2]}, {$$a}[2] или ${$a}[2]? Ответ в этой главе.

16.1.99

Глава (о чтении из файлов) из наверное хорошей книги Perl Cookbook. Также можно скачать полезные примеры из всей книги.

14.1.99

Kernel traffic - дайджест событий на очень загруженном Linux Kernel mailing listе.

Маленькие хитрости для Linuxа - всегда полезно просмотреть.

13.1.99

Widgets для Mozillы.

7.1.99

Debian weekly news и gDev-новости.

6.1.99

Сложная статья про внутренности Perlа.

Статья, как сделать более интерактивные WWW-формы (на мой взгляд - слишком много возни и мало пользы от вкл./выкл. элементов).

Интересная статья про методы работы кракеров (взломщиков) - с помощью rootkitов.

4.1.99

Статья про Perl-библиотеку libwww (с помощью которой например каждый час обновляются новостные линки наверху этой страницы).

А я то уже думал, что знаю все HTML-трюки... Полупрозрачные backgroundы на сервере Infinite planes.

3.1.99

PC Watch - линки к компьютерным статьям и новостям на других серверах. Soft Watcher - программы, в основном для Windows.

2.1.99

Снимок моего экрана

File Watcher - ежедневно обновляемый каталог UNIX-программ.

Установил себе After Step 1.6.6 - особой разницы к 1.6.0 не заметно.

И прозрачный (подгоняет background-картинку в зависимости от позиции) ATerm (вместо стандартного XTermа) - выглядит красиво (например, чтобы выглядело как зеленое стекло, запустите: aterm -fg Wheat -bg Green -tr -tint) и заработали наконец клавиши PgUp и PgDown в Midnight Commanderе. А испортившийся было BackSpace починился строкой *backspacekey: ^H (или ^? для Вашей системы?) в файле .Xresources (конечно при условии, что в файле .xinitrc стоит xrdb -merge .Xresources).

31.12.98

Друзья, всего хорошего в наступающем году!

И будьте сегодня ночью поосторожнее с ракетами и выпивкой!

Статья, как скомпилировать и сконфигурировать самый популярный (52 %, теперь есть и Windows-версия) WWW-сервер Apache.

LWN daily.

30.12.98

Введение в CGI-программирование на C. И продолжение: как послать картинку, тоже на C (под Windows или UNIX).

28.12.98

Если Вы хотите продавать компакт-диски с Linuxом (или компьютеры с этой ОС) и у Вас хорошая связь с интернетом, Вам стоит посмотреть на русскую страницу свободно распространяемого Linux Mandrake 5.2 (Leeloo). Это - объединение популярного дистрибутива Red Hat 5.2 с самым развитым (на сегодня) десктопом KDE - вот снимки. Готовый к печатанию на компакт-диски 550-мегабайтный ISO9660-image может быть соверщенно легально взят с download-страницы.

24.12.98

Как руссифицировать postscript-шрифты, чтобы получалась печать из Netscape и Applix- и Star-оффисов.

Обзор Enlightenment (которую можно скомпилировать из CVS) - с множеством красивых снимков.

23.12.98

EEDALF

Когда я шесть лет назад приехал в Аахен, я совсем слабо разбирался в религии и спросил раввина (приезжал к нам каждую пятницу из Антверпена) - нужно ли отмечать Рождество, ведь его здесь все так празднуют? Раввин пошутил, что хотя это и день рождения одного из нас, но евреи его обычно не отмечают :-) Желаю счастливых праздников всем католическим друзьям и моему сокровищу, уехавшему на три недели в Краков к родителям (ура, у меня снова появилось время попрограммировать)!

Xshare - программы для UNIXа.

Microsoft Windows update - для защиты от frame spoofа.

Две страницы, посвященные играм и обновляемые несколько раз в день: Voodoo Extreme (здесь можно поднабраться английской ненормативной лексики от Billy 'Wicked' Wilsonа) и Blue's News (ведутся всегда корректным Blue). А также - оригинальный еженедельник Loony Games.

Учебник - написанный теми же кракерами, которые создали знаменитый Back Orifice (позволяющий захватить контроль над чужим Windows-компьютером) - как использовать buffer overflow для программирования вирусов и т.п. Кстати против Back Orificа существует перехватчик атак - Fake BO.

GTK Yahoo - клиент Yahoo-pagerа (аналог ICQ ?) для UNIXа.

22.12.98

Новый жирный (120 килобайт) вирус Remote Explorer заражает NT-компьютеры и распространяется сам по себе (запуск зараженных програм не требуется) в основном в нерабочее время (1500 суббота - 1800 воскресенье) по сети (Windows-client). Об этом созданном (вероятно за 200 человеко-часов) на C шедевре есть также статьи на CNN и Wired.

Статьи о Linuxе от Mining Co.

Id-программист Брайан Хук высказался на IRC насчет Q3A.

Список модулей Perl - они хранятся в архивах т.н. сети CPAN по всему миру и делают Perl одним из эффективнейших языков программирования. Причем обычно быть root вовсе не обязательно. Например, Вы решаете, что было бы гораздо умнее добавлять размеры картинок в Ваши HTML-страницы скриптом, а не вручную. Поэтому Вы скачиваете себе с вышеуказанной страницы модуль ImageSize. и устанавливаете его например в свой каталог /home/eedalf:

perl Makefile.PL PREFIX=/home/eedalf
make
make test        
make install

Voila. Теперь Вы можете писать в скриптах:

use lib qw (/home/eedalf/lib/perl5/site_perl /some/other/dir);
use Image::Size;
($width, $height) = imgsize ("affe.gif");
20.12.98

Нет, нет и еще раз нет!

O'Reilly выпустит в апреле книжку по MySQL и mSQL (и как писать к ним программы на C, Perl, Java и Python).

Объяснения, как скомпилировать и установить текущую (уже не DR0.14, но еще и не 0.15) версию Enlightenment.

Эйфорическая статья про Gecko.

19.12.98

Простые советы новичкам Linuxа. И еще статья для начинающих.

Обозрение грядущей TF2 (кстати, иметь HL будет не обязательно).

17.12.98

Каким будет Gimp 1.1 - новые функции и снимки. А также - проект Gimp 16 - попытка добавить к нему разрешение 4096 x 3072 и 16 bpp для кинопродукции.

16.12.98

Blender

Mac OPINION - статьи и коментарии.

Статья, посвященная пророку Open Source Software Эрику Реймонду.

Если Вы увлекаетесь 3D-графикой, Вас может заинтересовать страничка с учебниками по Blenderу (версия 1.5 вышла в ноябре - вот снимок).

15.12.98

Вышел Licq 0.50 alpha 2.

Linux Today - все новости по Linuxу. (Например послезавтра выйдет Word Perfect 8).

asclock

Поставил себе After Step (для него тоже темы есть), он мне нравится больше чем Window Maker. Может быть не такой прилизанный, но зато гораздо удобнее ориентироваться на экране, когда запущено много приложений (WinList - вроде Windowsовского TaskBar, потом кнопки на каждом окне и Pager). Все установки очень легко настраиваются в /usr/local/share/afterstep (или где Вы его установили - например на работе я не root и поэтому поместил все в /home/eedalf/bin и /home/eedalf/share при помощи команды configure --prefix=/home/eedalf перед компиляцией). Кстати asclock (картинка справа) можно скомпилировать с русскими картинками (заменить соответственно weekday.xpm и month.xpm).

Какой будет Q3 Arena. (запись конференции на IRC).

13.12.98

Хорошая серия статей (1, 2) о том, как спрограммирован на C сервер FTP. Такие статьи по-моему очень полезная вещь - прочитал, не напрягаясь (не обязательно все понимать) за чашкой кофе на работе, и когда позже натолкнулся на похожую проблему - уже знаешь, с какой стороны подступиться. И вообще, чужие программы полезно читать - самому всех трюков не выдумать.

Netscape выпустил Gecko для Win 32, вроде бы там быстрый layout (изображение таблиц и др. HTML-элементов).

Иконка Licq для Windows Makerа

Вышел Licq 0.50 alpha. Кажется работает нормально (чтобы общаться по-русски с владельцами обычного ICQ для Windows, исправьте строку в файле ~/.licq/conf/licq.conf на Translation=RUSSIAN_WIN - тогда он будет использовать таблицу в файле ~/.licq/translations/RUSSIAN_WIN для перекодировки в koi8-r).

В Perl-скрипте (см. perldoc perlfunc):

    print  (1 + 2) + 4;    # напечатает 3
    print +(1 + 2) + 4;    # напечатает 7

Почему? Потому что в первом случае скобки будут истолкованы как скобки от функции print (...) и передадут ей аргумент (1 + 2), а четверка будет игнорирована. То есть это означает (print (1 + 2)) + 4; А во втором случае аргументом для print служит все это математическое выражение - это то же самое, что и print ( +(1 + 2) + 4));

12.12.98

Rocks'n'Diamonds

Интересная статья про почтовую программу sendmail и ее главного создателя Эрика Альмана. Эта терпеливая к ошибкам программа (главный девиз которой - доставить почту любой ценой, даже если она в неверном формате) была создана в университете Berkeley усилиями многих. А теперь Альман основал коммерческую фирму Sendmail Inc и похоже не будет больше распространять sources.

Вышел After Step 1.6.0 (стабильная версия) - попробую на днях поставить себе дома и на работе.

В конце года меня почему-то потянуло на игры, поэтому скомпилировал на работе под Solaris/SPARC игру для X-Windows Rocks and Diamonds, хорошо выглядит. По мотивам Boulder Dash, с множеством уровней, некоторые довольно tricky. Попытаюсь еще на следующей неделе эмулятор игральных автоматов XMame на работе установить :-)

11.12.98

Сегодня, через 5 лет после выпуска Doomа [ед. игра, в которую мне было страшно играть в темноте 8-) ] будет выпущен glDoom, со всеми радостями, которые может дать 3D-карта: высокое разрешение, прозрачные предметы, взрывы и монстры. Скачать можно будет здесь.

10.12.98

Swatch

Небольшая полезная статья про 5 функций в Perlе.

CSS1 test suite - странички, где можно на примерах посмотреть, что возможно в CSS1 (не очень много, но все равно приятно).

Сервер xml.com. Про XML я совсем ничего не знаю. В журнале iX есть статья на нем. яз. Еще есть страница о том, как XML работает с Perlом, кроме того я слышал, что браузер Gecko и новый сервер Oracle будут поддерживать extensible markup language, но на большее у меня пока не было времени.

9.12.98

Журнал Web Developers, например со статьей о проблемах с поддержкой JavaScriptа. Сравнение на ту же тему находится на WebCoderе. На последнем есть также полезные таблицы по CSS, которыми я часто пользуюсь.

7.12.98

Сервер, посвященный Linux memory management.

6.12.98

Вышел SANE 1.0 - он может использоваться как отдельная программа для сканирования или как расширение к Gimpу.

Inner Worlds для Linux и Win95

Граф. оболочки для сервера Apache.

Журнал Trouble Shooters.

Совет Б.Гейтса: "Не пренебрегайте учебой".

Tech Sightnings - обозрения веб-страниц.

Netscape хочет наконец-то извлечь пользу из открытия источников Mozillы и объявляет проект Gecko.

Русская страничка про клоны и порты ICQ. А также страничка, посвященная только Linux-портам и интересная попытка скопировать не только ICQ-клиент (на Java или GTK), но и сервер (использует банк данных PostgreSQL) - Teaser и Firecat.

Обзоры игрушек и железок - Sharky Extreme. Слухи и сплетни игровой сцены - Bitch X.

3.12.98

Более двухсот серверов в Linux Webring. И слухи на MacOS Rumors.

Статья о том, как на Linux-сервере настраивается доступ через FTP и telnet.

30.11.98

Tudols - аналог известного сборника программ Tucows, только на этот раз для Linux.

27.11.98

Бюро Valve

Unix World и WAN Sites.

Здание номер три - дневник программиста Linux-kernelа Алана Кокса.

В Европе сейчас не хватает пол-миллиона программистов.

Большая статья о доделывании основанной на Quake 1 игры Half-Life. sCary утверждает, что к ней будет скоро выпущен developer's kit.

25.11.98

Журнал 32 bits online - занимался раньше OS/2, но так как это детище IBM тихо уходит в страну вечной охоты, они переключаются на Linux. К каждой статье можно высказать свое мнение (backend их сервера использует MySQL).

Различные советы по Linux.

15.11.98

script-fu

merge-anim-скрипт для Gimpа добавляет задний фон ко всем кадрам анимации (см. картинку справа) - удобный инструмент для тех, кто клепает рекламные баннеры.

Cafe au Lait и Cafe con Leche - популярные странички о Java и XML.

Да, я обещал доделать pref2 в ноябре. Но у меня слишком много более важных для меня дел. Дело не в моем желании или деньгах, а чисто во времени.

12.11.98

Slackware Linux 3.6 - к сожалению, все еще со старой библиотекой libc5.

На Slashdotе обсуждали плюсы и минусы работы программистом по контракту (в основном в США).

6.11.98

И немедленно выпил...

Узнал две полезные вещи для Perlа. Debuggerом я уже несколько месяцев пользуюсь - очень удобно: просто добавить в начало скрипта #!/usr/bin/perl -d и запустить его. Тогда загрузится встроенный в Perl очень мощный отладчик. Программу можно исправлять построчно командами n или s (или нажимать ENTER для повтора). Если нет желания выполнять каждый шаг, то можно поставить breakpoint: например b 56 скажет отладчику остановиться на строке 56. Но если У Вас в скрипте есть какой-нибудь loop (типа while или for), то конечно лучше поставить breakpoint с условием: например, b 56 ($x =~ /^blah/i) и когда все breakpoints расставлены, можно запустиь скрипт командой c и когда она в тех breakpoints остановится, смотреть что лежит в переменных командой p $x. Причем это очень сильная команда, она любое выражение для Вас высчитает, например: p join (', ', @some_array)

Так вот сегодня я узнал что начиная с Perl 5.004 можно пользоваться графической версией debuggerа - надо просто поменять первую строчку скрипта на #!/usr/bin/perl -d:ptkdb. Вот картинка. (Нужно конечно установить себе модуль Devel/ptkdb.pm, который работает и с Windows и с UNIXом).

Вторая вещь касается split: обычно первый аргумент для него - regular expression. Например split / /, ' 1 2 3 '; выдаст массив ('', '', 1, 2, 3) (с пустыми элементами в начале). Но есть исключение: split ' ', ' 1 2 3 '; уберет пробелы в начале и даст (1, 2, 3). Тот же эффект даст $_ = ' 1 2 3 '; split;

5.11.98

MSIE 5.0 beta.

Серия статей Димы Бородаенко про установку Debian Linux.

3.11.98

Вышел Red Hat 5.2.

31.10.98

Licq (Farber)

Вышел Licq 0.44 (картинка справа). Для него есть небольшой patch для Window Makerа. (Поставил себе Window Maker дома и на работе, чтобы перед коллегами выпендриться... но ничего особенно удобного - я думаю, что самым популярным десктопом будет Enlightenment, когда Red Hat Labs его доделают, с темами и поддержкой GNOME).

Mozilla наконец-то откажется от прожорливого Motifа и будет использовать GTK, отличное решение! GTK - это так здорово, правда пока эта библиотека еще не очень хорошо документирована, но уже есть учебник и справочник. И вместе с GTK можно пользоваться библиотекой Glib. Все это будет гораздо класснее корявой Sunовской Javы и в отличие от Javы не тормозится желанием Sun как-нибудь заработать деньги. В октябрьском журнале iX есть статья о GTK на нем.яз.

Apache Week и Performance Computing Magazine (бывший Unix Review).

The Linux Game Tome и Linux Games - пингвины тоже хотят играться... И LxDoom.

Crack dot comДейвом Тейлором - бывшим сотрудником Id Software) к сожалению разорились, но сделали красивый шаг и отдали 33 MB C++ sources (130 MB всего) от их недоделанной стратегической 3D-игры Golgotha в общее пользование.

C'est need to know - английская сетевая тусовка.

30.10.98

Linux Magazine на нем. яз.

23.10.98

Олег Артамонов, ches@cityline.ru

Beta News - информация для инсайдеров о еще невышедших Windows-программах.

Как писать приличное UNIX-software. А также статья про X resources для Motif-программ.

IP Labs начинает распространять руссифицированный Mandrake Linux - это популярный дистрибутив Red Hat, скрещенный с самым продвинутым сейчас desktopом KDE (посмотрите на красивые снимки KDE). Если Вы торгуете компьютерами, то может быть это хорошая альтернатива вместо OEM Windows?

Alex прислал адрес анти-СОРМ-овских картинок.

Если Вы хотите увидеть, какое чувство юмора царит в общежитии, в котором я живу, Вы можете посмотреть на картинку, которую мне прислали соседи, но не говорите потом, что я Вас не предупреждал...

22.10.98

Magic Point - аналог Power Pointа для X11.

Service Pack 4.0 для Windows NT.

21.10.98

Новая конференция comp.graphics.apps.gimp. Ее всегда будет полезно почитать. Например там было объяснено, как делается прозрачный цвет:

WM Tune

  1. Нажать правую кнопку чтобы появилось меню и выбрать в нем Layers -> Add Alpha Channel. Это даст Вашей картинке способность быть прозрачной.
  2. Потом выбрать в меню Select -> By Color... и ткнуть в тот цвет, который Вы хотите сделать прозрачным. Все точки этого цвета станут выбраны для последующих операций.
  3. Выбрать в меню приказ Edit -> Clear, чтобы все те точки удалить.
  4. Сохранить как GIF (выбрать до этого Image -> Indexed).

17.10.98

UNIX-программисты из Netscape призывали присылать все случаи зависания Communicatorа по адресу rocksolid@netscape.com. Может быть новый NC 4.5 (4000 исправлений) покажет теперь чудеса стабильности? Они также выпустили версию для SPARC-Linux.

Linux World.

14.10.98

Java Report

Еще одно интервью Larry Wallа. Снимки Quake III Arena. JBuilder 2.01.

Очень удобный трюк для Perl-скриптов (не CGI, а тех что запускаются в shell) - completion - что означает, что когда Вы печатаете пару букв и потом нажимаете клавишу TAB, скрипт угадывает за Вас все слово целиком или пищит, если подходящих слов несколько. Все это счастье достигается всего парой строчек:

use Term::Complete;
$input = Complete ('prompt: ', <*>);
print "input = $input\n";

Например 3 строчки наверху подбирают имя файла из списка всех <*>. Но это не обязательно должен быть список именно файлов - пойдет любой массив (к примеру список всех имен коллег).

13.10.98

Узнал в comp.lang.misc.perl полезные правила, какие знаки нужно escape (ставить перед ними \) в character classes (выражения в квадратных скобках в reg. exp.):

  1. ^ только в начале, например: [\^AB] - это то же самое, что [AB^]
  2. - везде кроме начала или конца: [A\-Z] суть [AZ-]
  3. ] везде кроме самого начала
  4. \ нужно escape-ить всегда: [m\\n]
  5. $ и @ - иначе они интерполируются в переменные и массивы.

perl2exe - добавляет к скриптам Perl-интерпретатор (500 KB) и делает из обоих exe-программу для Windows. Создание GUI тоже возможно с помощью Perl/Tk или продаваемой там pro-версии. Там же можно найти и sendmail для Windows.

Cool. Сказал шефу, что лишних полтысячи марок у меня нет, и что мои коллеги и так все время моими книжками пользуются и он подписал мою заявку на покупку 4х книг и подписку на Perl-журнал.

12.10.98

Graphics Muse - много полезных трюков из Linux газеты.

Серия из 5ти статей как сделать простую базу данных на Perlе с хорошей демонстрацией.

8.10.98

Интервью L. Wallа. Новый Jikes - компайлер для Java, очень быстрый потому что написан на C. Вышел Licq 0.43 - ICQ-клон для Linux с перекодировкой win-1251. И - Oracle 8 (142 MB) - лидер с большим отрывом среди сегодняшних баз данных.

Письмо одного типа, как стать contractorом (Я без понятия насколько он прав, просто меня это интересует. Было бы интересно послушать какого-нибудь русского контрактора):

First, make no indication whatsoever at your current 
job that you are looking for work if it doesn't pay out.

Step 1) put your resume on www.occ.com, www.maximgroup.com
Step 2) put a base pay rate of $50/hr, more if you can get it
Step 3) indicate you are willing to relocate
Step 4) if ever asked why you're leaving your job just say I hate it 
        where I live, unless the job happens to be where you live
Step 5) if anybody tries to talk you down in price, laugh at them and 
        tell them you already have 4 offers higher than them and they 
	can go fuck themselves
Step 6) don't take any shit, when you get an offer, ask for 
        a confirmation and a contract
Step 7) spend all your free time becoming as effecient at your new 
        job as possible, work 12 hours a day and claim 8, you'll be 
	a miracle worker.
Step 8) master your job
Step 9) show no mercy
Step 10) get big fat paycheck

Other notes: If some scumbag recruiter calls you at work, make it as plain 
as possible that you do not wish to be called at work and that email and 
your personal phone is the best bet to reach you. Be timely in responses, 
but not desperate timely. If a recruiter ever tells you "well, I don't think 
you have enough experience" fire them tell them, "fine, you no longer work 
for me anymore, I have 30 other recuiters (and beleive me you WILL) working 
for me and you just don't seem competent - you're fired". A recruiter will 
only respect you if you treat them like garbage. Recruiters (90% at least) 
are garbage.

Any contracter will tell you this.

You will be selling out, become comfortable about this.
You will be over paid, become comfortable about this.
You will be a high tech whore, think of your contract 
agency as your pimp, become comfortable with this.

7.10.98

Don't copy that floppy - правительство США объявляет войну пиратству. Почему? Настоящая причина кажется в том, что Клинтону недавно пришлось отклонить расширение рабочих H-1B-виз под давлением профсоюзов. Что наверное мало понравилось Silicon Valley где вкалывают много иностранных (индийских, русских, канадских) рабов...

Кстати на Slashdotе обсуждают stock options и похоже что они еще никого не сделали миллионером, скорее трюк, чтобы заставить программистов вкалывать больше и дешевле надеясь на IPO (убеждать помогает статистика 1996 года: каждые 24 часа в Silicon Valley появлялось 62 новых миллионеров). Но лучше наличных еще ничего не придумано ;-)

Вышел Applixware Office 4.4.1 для кучи платформ. У меня его нет, так как он не бесплатный, но мы пробовали полгода назад его на работе и он был ужасно медленный на SPARC/Ultra 5. Может сейчас это улучшилось?

6.10.98

Microsoft выпустил VJ 6.0, там же есть и 30-дневная пробная версия.

Gnu SQL server - делается русскими ребятами.

5.10.98

Введение в MySQL, с нуля. А также ГУМ - руководство к Gimpу. Gimp - гениальный графический редактор, лучше Photoshopа. Настоящая killer app, Linux стоит установить уже ради одного Gimpа (хотя ведется работа и над его Win32-портом).

Письмо сегодня утром:

Между прочим для того, чтобы поработать в GIMP линух ставить совсем не
обязательно. Насколько я знаю он прекрасно работает во FreeBSD - что
касается юниксов.

Кстати, есть порт для OS/2 (я его лично попробовал - работает) -
http://www.netlabs.org/gimp/  Всетаки правильную штуку в свое время для
OS/2 сделали. Порт XFree86 - http://set.gmd.de/~veit/os2/xf86os2.html
И вообще - касательно OS/2. Может ты не знаешь - взгляни как нибудь на
наш сайт http://www.os2.spb.ru/
      
 Юджин.
	
PS: сейчас модно стало писать о всяких мульках - 
вот две из них для windows:
eConsole - http://zeus.informatik.uni-frankfurt.de/~corion/
LiteStep - http://www.litestep.net/

4.10.98

Если говорить о языках - вот еще список различий английского языка у американцев и англичан. Например pissed - нормальное состояние моих ирландских коллег :-) которые работают у нас по контракту - пьяный. А для американцев - это разозленный. Или еще забавно, что если американец прдеставляется кому-нибудь в Англии и говорит Hi I'm Randy! то реакция может получится довольно странная, так как у англичан это Hello friend, I'm feeling horny :-)

3.10.98

I'll be back

Sun выпустил JDK 1.1.7, IBM - Visual Age (60 MB, до 500 классов, screenshot). Выпущены NC 4.07 и #33 Linux-газеты. Кстати, а Вы умеете пользоваться debuggerом для Perlа?

Поисковая машина Google использует гениальную идею для сортировки результатов. Обычно поисковые машины выдают первыми адреса тех страниц, на которых введенные Вами при поиске слова встречаются относительно чаще. Но часто это плохой критерий, хотя бы потому что некоторые пытаются писать такие слова несколько раз, чтобы привлечь больше посетителей. Ребята из Stanford делают иначе - первыми выдаются страницы к которым существует больше линков в сети (и на которых упомянуты ключевые слова).

Женя прислал линк к Красной кнопке, но мой linux от нее не зависает...

28.09.98

10 червей

Максим доделал карты. Замечательные, на них приятно посмотреть!

Я сдал с 4й попытки Опер. системы и моя сессия наконец-то закончилась. Теперь до диплома мне остались 1 экз., 5 зач., 2 лаб., 1 студ. и 13-недельная практика - наверное еще год учебы. Сейчас у меня будет пара относ. свободных месяца и я хотел бы позаниматься префом2. А ведь я его надеялся доделать еще весной... все время что-нибудь к сожалению отвлекает. Поэтому я подумываю о том, чтобы открыть java sources префа, чтобы другие помогли мне находить ошибки и вносить улучшения. Правда я сомневаюсь в двух вещах: найдутся ли люди, которые захотят вместе со мной возиться над префом и второе - имеет ли это смысл, поможет ли это доделать преф2 побыстрее или мы просто потонем в дискуссиях и будем тратить все силы на переписку.

24.09.98

Palm Pilot - тоже умеет Linux

Sybase ASE 11.0.3.3 можно скачать у Calderы и похоже, что он бесплатен, даже для коммерческого пользования. Oracle 8 скачать нельзя, их 50 000 бесплатных CD разошлись по рукам в первые два дня.

23.09.98

Трюки для Apache - из выступления Линкольна Стейна (автора CGI.pm) на Perl-конференции, довольно интересно. А также: введение в mod_perl - модуль для Apache (кстати вышел Apache 1.3.0). И Sybase выпускает свой сервер для Linux, бесплатно. Обязательно скачаю, у нас такой на работе стоит (под Solaris).

22.09.98

Web monkey

Web database crash course - серия из 5ти статей о том, как сделать веб сервер, подкрепленный базой данных MySQL.

3D Linux-, Open GL- и X11-новости.

21.09.98

Насчет немецкого языка (как всегда, когда мне на самом деле надо бы готовиться к экзамену, меня тянет на все что угодно, только не учебу - поэтому я сейчас выскажу свое очень умное мнение о нем. яз.) - за 7 лет, что я здесь, я так и не научился говорить без акцента, да и никогда не старался. Но я более-менее научился говорить так, что люди меня понимают. Может быть, Вы учите немецкий - тогда Вам могут пригодиться четыре моих правила.

Но прежде - одно анти-правило: звук Р. Многие русские думают, что это самый трудный звук, и стараются картавить (каГтавить) или грассировать (г'асси'овать). Ерунда. Звучит просто идиотски и нисколько не помогает Вам говорить по-немецки понятнее. Иногда мне трудно сдержать себя и не сказать знакомому/знакомой: Кончай придуриваться! Говорите нормальное русское Р: руссиш. Ну а теперь 4 правила, как быть понятым:

  1. Х. Точнее Хь! ихь, нихьт. За собой надо следить, концентрироваться - чтобы не говорить твердое русское Х, а мягкое немецкое.
  2. Немецкая буква E, например в слове leben. Поляки произносят его еще хуже чем русские: лЭбЭн. Немцы тут же слышат мягкое славянское Э. Звучит на мой вкус даже приятнее, чем режущее правильное немецкое произношение этого (трудного!) звука. Но тем не менее Вы рискуете быть непонятым/непонятой. Говорите лучше лЕбЕн, пожестче.
  3. Не говорите А вместо О! Мне смешно наблюдать, как мой отец говорит по телефону и время от времени разговор останавливается полностью из-за того, что на другом конце его просто не понимают. Мой отец повторяет тогда это слово снова и снова (довольно четко) и не понимает, почему же не понимают его. Он не слышит ничего неправильного, потому что в русском языке всегда нужно менять О на А: мAлAко. Ну а немцы так не делают. Нету такого слова, пAлиерен. Есть пОлиерен.
  4. И самое трудное - длинные гласные, например в том же leben: ле-ебен. Я этому так и не научился :-)

20.09.98

Всего хорошего в 5759 году!

18.09.98

Boom!

С. Байер выпустил Date::Сalc 4.2. Это - удобный Perl-модуль, я его уже в неск. скриптах на работе использовал - им легко высчитать день или например номер недели. Или сколько недель в каком-нибудь году (оказывается иногда бывает 53, а не 52).

17.09.98

Generation

Ouch. Вырезали аппендицит.

13.09.98

Mozilla binaries

Mozilla binaries на MozBin.

Microsoft вроде собирается открыть некоторые sources от NT - чтобы наверное позже заявлять, что они тоже Open Source (TM).

Дима Вернер печатает теперь адрес посетителей в обсуждениях анекдотов и забавно, как быстро нацисты и хамы прижухли ;-) Я уже давно программирую CGI, но не знал, что в 90% можно узнать адрес клиента, даже если он использует proxy: $host = $ENV{HTTP_VIA} ? $ENV{HTTP_X_FORWARDED_FOR} .' via proxy ' . $ENV{REMOTE_HOST} : $ENV{REMOTE_HOST}; - спасибо Косте за объяснение!

12.09.98

Английская NT 5 beta на немецком сервере Microsoft. Netscape выпустил source code к Grendel - недоделанному mail/news-клиенту отмененного Javagatorа. Вышел NC 4.5 PR2.

8.09.98

MySQL поддерживает русский (для сортировки) - надо перед компиляцией сделать configure --with-charset=koi8_ru

7.09.98

Преферансная страница Стефана переехала на новый адрес.

Хорошая статья о DBI-модуле, который позволяет писать переносимые скрипты для различных баз данных (mSQL, MySQL, Oracle, Sybase). Oracle кстати выпустил бета-версию для Linux, я ее правда не стал скачивать, т.к. на работе у меня все равно Sybase (который они не спешат выпустить для Linux), а в личное пользование мне она не по карману. Зато я скачал себе MySQL, которая выглядит очень неплохо, с multi-threading! И ее можно бесплатно использовать даже на коммерческом веб-сервере! slashdot.org сделан на MySQL, а на него большая нагрука, они даже переехали на T1-линию... Обязательно поковыряюсь с MySQL на этой неделе.

4.09.98

Установил себе Licq 0.41 для UNIX. Здорово, он теперь переводит koi8-r в cp-1251 и обратно, теперь я смогу нормально общаться с несчастными пленниками Winbloze.

Mozilla-binaries - каждую ночь и новый Mozillazine.

30.08.98

Perl для Ундервуда :-) Меня наконец-то опять выпустили на футбольное поле и мы выиграли 1:0

Удобный скрипт (помещается в wc\autoexec.cfg) для снайпера в Team Fortress - первое нажатие левой кнопки мыши целится и увеличивает, второе стреляет и возвращает нормальное зрение:

bind mouse1 shoot
alias shoot shoot1
alias shoot1 "+attack; fov 25; sensitivity 8;  alias shoot shoot2"
alias shoot2 "-attack; fov 90; sensitivity 14; alias shoot shoot1"

29.08.98

Выступление L. Wallа на конференции по перлу. Странное.

Самоуверенное интервью одного Sunовца. Он думает, что при 40 миллионах строчек кода у NT 5 впереди еще много сюрпризов (у Solaris - только 11 млн).

Вышел новый компайлер Pentium GCC.

Сдает новый русский компьютер по гарантии... Смотрят - у монитора 
здоровенная дыра пробита в правом нижнем углу. Как же это так?
"Да вы чё мне продали!!! Я полгорода держу!!! Передо мною вся братва 
строится!!! А тут какая-то скрепка мне пальцами да у виска крутит!!!"

26.08.98

John Romero... шутит

Subject: Re: www.pref.com
Date: Tue, 25 Aug 1998 18:43:24 -0500
From: James Davenport <cineman@nol.net>
To: Alex Farber <alex@kawo2.rwth-aachen.de>
					   
Yes, I am currently not using pref.com 
and it is available for $7,500 U.S.
I have already turned down $5,000 for 
it because it is such a good name.

James Davenport

- это я спросил Джеймса, не хочет ли он мне перепродать адрес, раз он сам его не использует... Ха-ха, зат гай из крейзи.

23.08.98

Юджин прислал линк к Fortify - патч для Netscape (под неск. ОС), чтобы включить 128-битное шифрование.

22.08.98

Поставил себе Licq 0.40 final - вроде постабильнее и поддерживает koi8-r (жаль что не windows-1251).

Web Techniques- и UNIX Review спеца по Perlу Р. Шварца.

Провалился на Операционных системах. Вот невезение :-( Придется теперь готовиться к 3й, устной попытке 23го сентября...

20.08.98

Pref2 - придумал WWW-дизайн. Наученый возней с рус. лит. в интернете, я теперь думаю, что чем больше автоматичности и автономности вносится в страницу, тем больше шансов выживания у веб-проекта (пример: www.perl.com Тома Кристианзена). То, что вначале нетрудно делать "руками", становится уже через пару месяцев занудным и отнимающим время. Моя преф-страница будет на этот раз управляться несколькими cron jobами (так как они не так сильно будут загружать сервер в сравнении с CGI) и CGI-скриптами. (Когда нибудь я еще сделаю cron job для проверки адресов на лит-ре...)

Сделал два cron job-скрипта для ежечасного вытягивания страниц с моих любимых slashdot и freshmeat. Они конечно мало подходят к префу и на англ... посмотрим удастся ли мне договориться с какими-нибудь интересными русскими ресурсами...

segfault.org

Придумал наконец как выяснять лучших игроков: сразу после соединения с преф-сервером апплет будет получать через CGI-скрипт на Perlе пятерку лучших игроков. Если после какого-то тура игрок набирает денег больше чем пятый игрок в этом списке, апплет опять соединится с тем скриптом и (если денег действительно хватает, чтобы войти в top 5 на этот раз) внесет корректуру в список. А сам этот список будет вставляться каждый час в мою семи-статичную веб-страницу ежечасным cron jobом.

With a PC, I always felt limited by the software available. On Unix, I am limited only by my knowledge. (PJS) - верно подмечено.

18.08.98

Sun откладывает выпуск Hot Spot и JDK 1.2 на ноябрь. Параллельно к ним пишутся совместимые библиотеки для Java - GNU Classpath.

17.08.98

Выпущен NC 4.06. UNIX-версия использует теперь шрифты koi8-r для windows-1251 и iso-8859-5.

15.08.98

Evolve

Сдал экзамен. Купил UNIX Power Tools. Очень хорошо написана, как и все книги O'Reilly.

Послезавтра выйдет Star Office 5.0 для Linux, Solaris и др. (pre-final, окончательная версия будет готова 30.09.98). Уже доступен Word Perfect 8.0 для Linux (pre-release).

14.08.98 (ночь перед экзаменом, я больше не могу!)

UNIX Power Tools

       ГРУСТHАЯ ПЕСHЯ.
                 Автор неизвестен

Hе  наслушался  бы  я  BBC,
Hе  навиделся  бы  я   CNN -
Жил спокойно бы сейчас в СHГ
И  закончил  бы  уже  ПТУ.
    И работал  бы  себе  в  АЧХ,
    И в какой-нибудь вступил ЖСК.
    Вечерами  бы  смотрел  КВH
    И  ходил  бы  за  отгул в ДHД.
По субботам брал пивка с ДДТ,
После  драки  попадал  в КПЗ,
Все  ж  родное  МВД  с  КГБ -
Это  вам  не  ЦРУ  с  ФБР.
    Отслужил бы  я  свое в  ВДВ,
    Потаскал бы  пару  лет  АКМ,
    Полечился б, наконец, в ЛТП
    От привычки потреблять ГСМ.
Hо покинул  я  родной СHГ,
И сижу теперь в таком ДРМ-
Всей-то мебели-кровать ДСП,
Да и та, как оказалась, Б/У.
    А ведь кто-то там купил JVC,
    А  другие - IBM c HDD.
    Разъезжают, подлецы, в  BMW,
    И  работают,  поди,  в  LTD.
Эх, достать бы на денек БТР
Да принять для куражу ЛСД !
Я разнес бы всех к таким ЕБH -
Позавидует   сама  ООП.
    А  пока что  докурю  я  БТ,
    Почитаю  пару  глав  из УК,
    Завалюсь  на  ДСП  ЗПТ
    И забудусь тяжким сном ТЧК

12.08.98

Прочел в Linux Focusе объяснение устройства IP-адресов: в интернете есть 3 класса (и еще несколько зарезервированны на будущее) - A, B и C:

  1. 127 подсетей класса A (от 1.0.0.0 до 127.0.0.0): около 1,6 млн. компьютеров, различающиеся последними тремя числами
  2. 16320 подсетей класса B (от 128.0.0.0 до 191.255.0.0): по 65024 компьютера, различаемых последними двумя числами
  3. Около 2 млн. подсетей C (от 192.0.0.0 до 223.255.255.0): в каждой - 254 компьютера, различающиеся последним числом.

254 в последнем случае, а не 256, так как числа 0 и 255 используются для специальных целей: 0 обозначает всю подсеть, а 255 - broadcast-адрес - датаграммы (не e-mail ;-), посланные к нему будут разосланы всем. Все эти классы имеют, наверное, мало значения для нормальных программ, но могут быть интересны, если Вы пытаетесь закрыть (или разрешить) доступ к Вашей программе определенным людям (которые конечно всегда могут сменить провайдера, если им очень захочется). Речь не только о черном списке для префа, а например интересна, если Вы пишете CGI-скрипт, который требует пароль от пользователя (для входа на порно-сайт ;-) или poll-скрипт для опроса различных мнений). Тогда можно пытаться дополнительно проверять переменную REMOTE_ADDR.

11.08.98

Pref2 - сделал загрузку графики с помощью prepareImage и imageUpdate, а не с помощью стандартного MediaTrackerа (как в преф1), потому что это дает больший контроль (сколько процентов загружено, повтор при прерывании) и к тому же в MediaTrackerе были bugs в старых версиях Netscape.

Вадим сказал, что мой любимый 3D-эффект выглядит "как в фильме ужасов" :-) Не переживайте, карта (одна) будет так наклоняться только в момент таскания ее мышью (как будто берется со стола). Он также подкинул забавный около-компьютерный адресок.

10.08.98 (день)

Pref2 - гм... я сделал supersampling - сглаживание цветов соседних точек что уменьшает зубчатость картинок, но делает их более размытыми и занимает время. Но не уверен, улучшает ли он вид наклоненной карты, надо подумать, нужно ли это сглаживание вообще... Чтобы легче было сравнивать, нажмите:

  1. левую кнопку мыши, чтобы увидеть поворот без всякого сглаживания
  2. среднюю кнопку - сглаживание цветов двух соседних точек (раза в 2 медленнее)
  3. правую - четырех (еще медленнее)

10.08.98 (ночь)

text

Pref2 - сделал 3D-эффект (нажмите на поле) и уже очень им доволен (довольно быстрый), хотя он еще не полностью готов, я хочу еще в нем сделать:

  • Supersampling - брать 4 (или 2?) соседних точки текстуры и высчитывать среднее значение цвета, чтобы сгладить картинку (пока это дает мне вместо сглаживания цветов странный сдвиг - что-то я неправильно делаю)
  • Подобрать более реалистичные значения расстояния глаза до стола
  • Сделать более физическое движение карты (видимо, угол наклона карты должен зависеть от расстояния между курсором и центром тяжести карты)
  • Сделать тень (позже)

    Как сделать в Gimpе прозрачный цвет в GIFе? Если Вы знаете, напишите мне, пожалуйста, я потратил час на поиски (в учебнике и справочнике), но так и не разобрался.

  • 29.07.98

    В понедельник у меня 2я попытка в Betriebssysteme und Internprogrammierung. Заказал себе PII-233, 128 MB, 2 GB SCSI - большее мне сейчас не потянуть, но на моем нынешнем компьютере невозможно было серьезно программировать.

    Был неделю в Мюнстере и мама принесла мне почитать (она там в университетской библиотеке работает) Веселый солдат Астафьева в пятом и шестом номерах Нового мира. Какая повесть! Давно я таких умных вещей не читал...

    18.07.98

    Oracle 8

    Pref2 - доделал частные сообщения игрокам (выбрать имя в списке игроков и нажать кнопку сказать). Методы clear () и delItems () у java.awt.List под UNIX работают неправильно (только теперь я понял что под Linux из-за этого очень неудобно играть, sorry!) - надеюсь мой workaround для очистки List будет теперь работать везде:

    remove (playerList);
    playerList.clear (); /* java.awt.list bug workaround */
    add (playerList);
    

    Oracle все-таки выпустит Linux-версию своего банка данных, вслед за Informix.

    Выпущен Swing 1.0.3. И Enlightenment DR 0.14 - очень красивая игрушка, но еще не все работает. Следующие 2 недели я готовлюсь к экзамену.

    17.07.98

    TransVirtual Technologies выпустили Kaffe 1.0b под свободной (в отличие от Sunовской) GNU-лицензией.

    Страница с описанием программ для отслеживания ошибок, связанных с динамическим выделнием памяти и т. п. в C / C++ программах.

    dz-online перевел доходчивую статью о Perl-модуле Win32:OLE.

    15.07.98

    My

    Netscape выпустил NC 4.5 beta 1 - особых изменений там не заметно, если не считать полной поддержки JDK 1.1 и более удобного для чтения почты и новостей трех-панельного вида messenger mailbox.

    Доделал что мог в font.properties.ru для UNIX - теперь работают русские буквы везде - на кнопках, в текстовых полях и на самом поле. Но проблема в том, что кириллический ввод в кодировке KOI8-R ошибочно (как я думаю) не переводится Sunовским JDK в Unicode, а просто посылается как есть. Поэтому если Вы поставите себе этот файл (в /usr/local/lib/netscape/java/classes/font.properties), то хотя Вы увидите русские надписи и сможете печатать по-русски, Вы не сможете общаться на русском с игроками под Windows. Я написал об этом bugе нескольким людям из Sun и Netscape и больше на это время тратить не буду.

    В пятницу обещают выпустить Enlightenment DR 0.14 - Rasterman старается подогнать его под Gnome (который начинает воевать против KDE, потому что многим программистам не нравится, что красивый KDE основан на коммерческом Qt, хотя Troll Tech и выпустил его под специальной лицензией).

    14.07.98

    Вадим прислал адрес русской странички, посвященной игральным картам.

    Microsoft выпустил Visual J++ 6.0 tech-preview 2. Из всех Java-IDE - это на мой взгляд самое лучшее (особенно для начинающих, поэтому советую воспользоваться бесплатной возможностью испробовать VJ++). Не обращайте внимания на тех, кто говорит, что программы будут непортируемы - просто надо отключить Microsoftовские Java language extensions и не использовать библиотеку WFC. Кроме того, идея писать чисто Windows-программу на Java, используя WFC не так уж плоха (хотя бы уже тем, что в отличие от C / C++ не приходится мучаться с освобождением памяти деструкторами - за Вас все делает garbage collection). Думаю, что когда Microsoft выпустит осенью свой Developer Studio появится много таких програм и увеличится спрос на программистов Java.

    Сам я теперь пользуюсь Emacs JDE под Linux (который может и под Windows работать), так как мне так гораздо удобнее одновременно над Java-клиентом и C-сервером работать. Удобная надежная вещь, можно многое настроить под свои привычки. Что меня раздражает - так это стандартный отладчик jdb поставляемый с Sunовским Java JDK. Он не умеет ничего, и в подметки не годится gdb. К примеру, он еще напечатает Вам значение print i, но print arg[i] для него уже китайская грамота (то ли дело gdb для C, он любое выражение для Вас высчитает, даже с макросами и препроцессорными константами, если программу с опцией -ggdb скомпилировать). Потом, в gdb можно нажать [ENTER], чтобы повторить предыдущую команду или напечатать команду сокращенно (n, b, p, at...) На такие вещи jdb реагирует идиотским huh? try help...

    Pref2 - сделал перенос строк рисуемых на поле и печатаемых в текстовом окне:

    /** 
      * Напечатать строку с переносом, если не умещается в ширину, в textArea
      *
      * @param str   Unicode-строка
      * @param width ширина textArea (без scrollbars)
      */      
    void appendText (String str, int width)
    {
        int start = 0, end, space;
    	 
        do
        {
            end = str.length ();
    	    
    	while (start < end &&
    	       fontMetrics.stringWidth (str.substring (start, end)) > width)
    	{
    	    space = str.substring (start, end).lastIndexOf (' ', end - 1);
    
    	    if (space < 0) /* длинное слово, придется печатать как есть */ 
    	    {
    		break;
    	    }
    	    else
    	    {
    	        end = start + space; /* отойти назад к пробелу */
    	    }
    	}
    
            textArea.appendText (str.substring (start, end) + "\n");
    	    
            start = end + 1;
        }
        while (start < str.length ()); 
    }
    

    12.07.98

    Написал font.properties.ru для X-Windows (на котором должны быть установлены русские Cronyx-шрифты) - к сожалению, русские буквы работают пока везде кроме TextField и TextArea. Чтобы испробовать, установите себе NC 4.05 с поддержкой JDK 1.1 и скопируйте этот файл в $MOZILLA_HOME/java/classes/font.properties. Заодно сделал fonts.alias, который прописывает Cronyx-шрифты как ISO8859-1 (дополнительно к KOI8-R)- это workaround для NC чтобы заголовки писем и новостей в нем читались по-русски. (Будет работать, только если эти шрифты будут первыми в fontpathе - видимо Netscape хватает первые попавшиеся).

    11.07.98

    Кажется, Linux- и Windows 95/NT- версии Netscape Communicatorа могут использовать общие файлы для e-mail, если сделать линк ~/nsmail -> Program Files/Users/имя/Mail. Я сам правда еще не пробовал, прочел об этом на snews://secnews.netscape.com/netscape.communicator.unix.

    Open Group обещают скоро выпустить JDK 1.1.6 порт для Linux, который будет поддерживать библиотеку Linux Threads (спец. версия распространяется с glibc 2).

    09.07.98

    Sybase

    Купил книгу Linux Application Development, написанную в феврале двумя программистами Red Hat Software (один из них был также редактором Linux Journal и основывал Linux Documentation Project).

    Все еще не доделал два CGI-скрипта на SybPerlе, которые мне еще месяц назад надо было сдать. Потому что меня все время дергают, гррр... Но за что я ценю мою работу, что обычно никто не знает, сколько мне потребуется времени на какое-нибудь задание, полчаса или неделя. Поэтому пару месяцев назад я решил, что если мне нужно какое-нибудь действие сделать раз десять или больше, то я пишу для этого скрипт на Perlе, хотя часто это утомительно. Например, часто приходится вставлять какой-нибудь текст в пару десятков WWW-документов. Любая обезьяна может 20 раз открыть файл в редакторе, отыскать нужную строчку и скопировать туда этот текст. Но что делать, когда завтра надо будет сделать то же самое и к тому же для сотни документов? Лучше конечно скрипт написать который использует inline editing:

    $^I = '.bak';   # или $^I = ''; если без страховочной копии
    
    open INSERT, '~/some.txt' or die;
    $insert = join '', <INSERT>;         # считать весь текст из файла в $insert
    close INSERT;
    
    while (<>)
    {
        print;                           # копировать старый текст
        print $insert if /<BODY/i;       # вставить новый текст после <BODY
    }
    

    И все. Можно теперь запускать insert.pl *.html или find / -name '*.html' -exec insert.pl {} \; (если понадобилось рекурсивно заходить в под-каталоги). Часто бывает нужно знать имя файла, который как раз обрабатывается while (<>) - оно хранится в $ARGV. Или нужно знать когда while (<>) расправилось с очередным файлом - if (eof) ... Или надо взять файлы не как параметры командной строки, а из какого-нибудь каталога - @ARGV = glob '/home/alex/*.html';

    Вышел Pine 4.00 с поддержкой HTML. Большая статья о Java и BeOS. Maxwell 0.5.3 - Word processor для Linux, может быть альтернатива (вот картинка) для 80-мегабайтного Star Office.

    06.07.98

    BeCQ

    Описание протокола ICQ. Аська.ru.

    Грустная статья о том, что никто не спешит портировать банки данных на Linux (вышел, кстати, MySQL 3.21.32). Netscape официально отказывается разрабатывать JVM для их browserа. В принципе это правильно, наверное они определят API для того чтобы фирмы, производящие ОС, сами писали виртуальные машины для их платформ и эти машины будут использоваться Netscape. Хуже, что M. Andreessen подтверждает отказ от дальнейшего развития Javagatorа (неизвестно отдадут ли они sources) и плохо отзывается о client side Java (наверное, потому что у них нет денег делать такую же хорошую имплементацию Java, как Microsoft).

    05.07.98

    Из лог-файла:

    Sun Jul  5 10:36:00 1998
            new player from ppp26-8-46.cityline.ru, no free sockets available
    

    ...19 раз подряд! Возникает естественный вопрос - а почему не 20?

    04.07.98

    SSLeay

    Вышел Apache SSL 1.18. Ведется также работа над Cryptozillой, чтобы добавить полную поддержку шифрования в Mozillу. Забавно, что ни один из работающих над ней программистов не живет в США.

    Установил себе Emacs JDE, выглядит на 1й взгляд хорошо, буду с ним разбираться...

    03.07.98

    Потратил около часа пока научился пользоваться стандартным Java-отладчиком jdb, поэтому напишу как это делается, может кому-нибудь пригодится:

    1. Скомпилируйте программу: javac -g -J-Dfile.encoding=KOI8_R Pref2.java
    2. Получится файл Pref2.class (и др. файлы) содержащий также информацию для debuggerа (из-за опции -g)
    3. Запустите отладчик: jdb Pref2
    4. Выставьте breakpoint (место где программа должна быть остановлена, чтобы с ней можно было поковыряться): stop in Pref2.init
    5. Запустите программу: run
    6. Она должна тут же остановиться сама и напишет: Breakpoint hit: Pref2.init (Pref2:номер строки)
    7. Чтобы увидеть где Вы находитесь, напишите: list (Если source code Вашей программы находится в том же каталоге, откуда был запущен jdb, то Вы увидите кусок своей программы и стрелку)
    8. Чтобы исполнить одну строку, введите: next
    9. Чтобы при этом углубиться в вызываемые функции, введите: step
    10. Чтобы посмотреть на актуальное содержимое переменной, напишите: print имя_переменной

    Чтобы это все работало, нужно чтобы была правильно выставлена переменная CLASSPATH (она должна указывать на расположение классов, включая тот каталог, где лежит исследуеман программа. Например у меня в bash это сделано так: export CLASSPATH=.:$MOZILLA_HOME/java/classes/java40.jar:/usr/local/lib/jdk1.1.6/lib/classes.zip) или использоваться флаг -classpath. Так как jdb не может исполнять апплеты я добавил код, чтобы апплет запускался и как аппликация:

    public class Pref2 extends Applet implements Runnable
    {
        static Frame frame;
        ...
        
        public static void main (String args[])
        {
            frame = new Frame ("Pref2");
            Pref2 pref2 = new Pref2 ();
            frame.add (pref2);
            frame.resize (750, 430);
            frame.show ();  
            pref2.init ();
            pref2.start ();
        }
    }
    

    В аппликации перестанут работать некоторые вещи, например getCodeBase (), так что неплохо проверять перед их вызовом, чему равна переменная frame (если null, то это апплет).

    Java-FAQ и куски кодов на How do I...

    Pref2 - сделал выбор шрифтов. Сервер (пока на 16 мест) уже 3й день работает, память не жрет, это хорошо:

    USER       PID %CPU %MEM  SIZE   RSS TTY STAT START   TIME COMMAND
    alex       991  0.0  0.6   844   392  ?  S  Jul  1   0:00 pref 
    

    01.07.98 (ночь)

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

    Bug

    Так что, если Вы одно из моих интервью уже читали, не тратьте время.

    До этого днем я запустил у себя дома под Linuxом простенький UDP-сервер и попытался соединиться с ним с работы (там очень большой intranet) через firewall. Но, к сожалению, безрезультатно. Так я и думал. Какой смысл закрывать firewallом TCP-связь и оставлять дырку через UDP? Ну хорошо, тем проще для меня, не надо изобретать велосипед, и имплементировать протокол который бы гарантировал, что клиент еще не прервал связь, все его пакеты приняты (причем в ед. числе и в том же порядке что они были посланы). Все это для меня сделает TCP, причем оптимальным способом (они даже смотрят на статистическую длительность доставки пакета и приспосабливаются под нее). UDP хорош для action-игр, где TCP-протокол только мешал бы (кого интересует, где был твой противник полминуты назад - если TCP посылает все пакеты заново). Или для программ типа ICQ, которые посылают всего пару пакетов. Через firewall пройдет HTTP-протокол, но сделать multi-player игру типа префа было бы очень сложно и к тому же напряженно для сервера.

    Значит TCP (через порт 4000, спросите своего sysadminа открыть его, если у Вас firewall). Не пишите мне об ошибках в преф1, зеркалах и нехватки мест. Вы только отвлекаете меня от преф2.

    30.06.98

    Ура нашел! Во-первых мое удивление почему присваивание якобы не работало было глупым - оно конечно работало, просто в тот момент когда сервер умирал и я смотрел (сквозь слезы) на его core этот for-loop уже несколько раз пробегал. А сама ошибка была в том, что я в моем linked list забыл выставить якорь этого listа на NULL. Пойду сейчас на работу, а вечером постараюсь уже сетевую часть доделать, чтоб на Pref2 болтать можно было.

    29.06.98

    Увидел в сигнатуре одного парня на comp.unix.programmer (A day without a core file is a day without sunshine....). Scheisse, мой сервер почему-то все время умирает на одном месте:

    for (ppmsg = &client[i].output;
        *ppmsg != NULL;                    /* здесь! */
        ppmsg = &(*ppmsg) -> next)
    {
    }
    

    И самое непонятное, что присваивание в предыдущей строке не работает (и из-за этого последующее обращение к *ppmsg адресуется неизвестно куда и вызывает Segmentation fault):

    (xxgdb) print &client[i].output
    $1 = (MESSAGE **) 0xbffff670
    (xxgdb) print ppmsg
    $2 = (MESSAGE **) 0x203a656b
    

    28.06.98

    C Scene - интересный журнал о программировании на C и C++. Например доходчивая статья о native methods на C для Java-программы. (Кстати для comp.lang.c существует хороший FAQ).

    Pref2 - доделал пользовательский интерфейс. Максим обещал нарисовать иконки для tabs (сделанных кстати из 6 прямоугольников, т.к. в AWT такого контейнера нет).

    Андрей заработал красную 1000$-бумажку :-)

    27.06.98

    Pref2 - пока не работает ничего.

    26.06.98

    Поговорил только что еще раз с Максимом, сказал ему, что за его карты проголосовали 18 против 4. Он прислал мне еще пару картинок. Здорово, мне такие никогда не сделать. Максим предлагает ввести тему в игру. Мне кажется, было бы неплохо сделать клуб (Максим считает, что у членов клуба должен быть какой-нибудь сдвиг по фазе) с тем же прикольным привратником (например, ясно, что имя должен спрашивать при входе он). Нужно побольше веселых идей, фраз или маленьких картинок. Если Вам приходит в голову что-нибудь не очень тяжело исполнимое, напишите мне!

    Мне всегда Преф-клуб для MS-DOS больше других нравился (я слабо играю), поэтому я был рад сегодня случайно на окончательную версию наткнуться. Она больше не виснет, и у нее замечательная графика.

    25.06.98 (день)

    Привет, Алекс!

    Тут, кстати, Дима Алексеев говорит, что ты хочешь отключать всяких нехороших людей. Расскажи, пожалуйста, по какому критерию ты будешь это делать? Ты же не можешь со стопроцентной гарантией быть уверен, что на одном IP всегда сидит один и тот же человек, или хотя бы его знакомый... Было бы не только интересно, но и, возможно, полезно узнать, что ты по этому поводу думаешь. А насчет зала ожидания - мысль очень хорошая.

    С приветом,
    Олег.

    В последнее время я редко играл, поэтому не знаю, насколько эта проблема (с хамством) серьезна. Сегодня я начал писать сервер (установил кстати себе уже Checker), в котором будет возможность выбирать партнеров по игре (и заодно заранее спрашивать, хотят ли они играть всю пулю до конца или нет). Надеюсь, что тогда эта проблема урегулируется сама - никто не будет играть второй раз с грубиянами, они будут сидеть в прихожей и скучать. Черный список мне не хотелось вводить по нескольким причинам:

    Тем не менее, я теперь черный список введу для совсем клинических случаев и устрашения. Он будет отличать адреса (точнее группы адресов, причина: у многих людей адрес динамический) по последним двум словам (типа knox.pace.edu) или по первым двум числам (например 205.232.102.18). Напишите мне, если я технически не прав. Пришлите мне адрес, если кто-то Вас постоянно персонально атакует, я начну вести учет. Но прошу Вас при этом быть самокритичными.

    Еще мое личное мнение: ругань матом сама по себе (или в сторону программиста) - это по-моему еще не хамство. Бывают такие прикупы, что просто нет сил ;-)

    25.06.98 (ночь)

    Kernel panic...

    Зашел в тупик с преф-сервером - с каждым клиентом в любой момент может произойти: прерыв связи, тайм аут или он отключится сам. Об этом нужно сообщить другим. Но с ними в этот момент может произойти та же история... Последние несколько дней я только над этим безрезультатно сидел... Решил посмотреть, как это сделано в hybrid IRC-сервер. Куча умных людей боролась с теми же проблемами и нашли естественнейшее решение. Я копал совсем в другую, тупиковую сторону. Будет мне уроком: всегда сначала посмотреть, что другие придумали. Придется начать сначала. Но ничего, зато с их дизайном легко будет сделать прихожую, в которой будут выбираться партнеры для игры. Единственная проблема - все построенно на выделении / освобождении памяти с malloc и free. Надо бы использовать какую-нибудь библиотеку для отладки, иначе будет куча ошибок. Checker?

    Doctor Fun - множество забавных комиксов, не хуже Dilbertа.

    23.06.98

    Выучил (точнее вспомнил хорошо забытые) две вещи в C: первая - что в макро не должно быть пробела между именем этого макро и первой левой скобкой:

    #define NEXT (X) (((X) + 1) % 3) /* неправильно и даст ошибку ниже в программе, так как */
    #define PREV (X) (((X) + 2) % 3) /* будет подставлять (X)... вместо слов PREV и NEXT */
    

    Новые карты?

    Правильно будет:

    #define NEXT(X) (((X) + 1) % 3) /* без пробела */
    #define PREV(X) (((X) + 2) % 3)
    

    Вторая вещь (помогли ребята из comp.lang.c) - при передаче много-димензионального массива функции только одна скобка может быть пустой (в отличие от Java). Например, в prototype: void dropClient (client[][], byte, byte, byte, fd_set*, fd_set*); придется писать void dropClient (client[][3], byte, byte, byte, fd_set*, fd_set*);

    Поставил себе под Linux ICQ для Java.

    Поставил себе отладчик DDD 3.0. Он неплохой, но у меня с ним две проблемы: я еще не выяснил как сделать, чтобы он запоминал положение окон переменных (и мне надоедает эти diplayи все время заново расставлять). Во второй проблеме виноват скорее я сам - отвел слишком маленький swap-файл, так как надеялся, что моих 64 MB RAM хватит: так как у меня нет библиотеки Motif, мне приходится запускать статически залинкованные с ней DDD и NC что приводит к нехватке памяти... Вернулся пока к xxgdb.

    Максим прислал мне новые карты для префа (см. справа). Напишите мне, нравятся ли они Вам больше, чем теперешние или нет. По-моему, Максим очень весело рисует, вот еще одна его картинка. Обратите внимание на ГРУСТЬ во втором ряду справа!

    20.06.98

    Сегодня утром я получил письмо от одного из авторов оригинального Преф-клуба для MS-DOS:

    Hi Alex,

    My name is Maxim Troukhan, I am one of the authors (graphics programming and pictures) of PrefClub . It seems you know the game :) It is always pleasant to see pictures from PrefClub around. Just came back from your nice website. Very good interface and I don't really know whether you are willing to improve on it. But just in case if you feel that some more of PrefClub style graphics would help please let me know. We wrote PrefClub together with Andy Grigoriev. And we wanted to go on with Pref for Internet long ago (I even have some graphics for it) but unfortunately Andy doesn't have enough time to proceed. He is in Berlin and I am in LA now... Well, hope to hear from you soon.

    Maxim

    Ultima online

    Потом я пошел поиграл в футбол с персами и марокканцами (Это всегда морока: 5 минут мы играем, а потом 10 минут арабы кричат друг на друга и плюются. Но почти никогда к сожалению не дерутся по-настоящему. Я бы с ними не играл, но у меня нет выбора - в клубе пауза до 21 июля, а играть хочется)... А когда я пришел, со мной связался по ICQ Максим и мы поговорили. (Вначале я его спросил, на чем они писали ПрефКлуб, и почему он так часто зависал на 386+).

    Всю неделю меня отвлекали 2 программы на SybPerlе, которые от меня на работе вообще-то уже на позапрошлой неделе ожидали. Постараюсь теперь на выходных продвинуться с префом... Программировать такую client - server программу под Linux гораздо удобнее чем под Windows: ковыряюсь с C и Java под Emacs, потом не выходя из него компилирую (gcc и JDK 1.1.6 для Linux), запускаю сервер на своем же компьютере (не приходится по 50 раз возиться с FTP и telnet чтобы запускать сервер, как раньше) и соединяюсь с ним, открывая локальный файл в Netscape Communicator. И к процессу сервера на заднем фоне можно подключаться отладчиком gdb.

    jwz, один из создателей Netscape, выразил свое интересное мнение о Linuxе.

    Free Builder - IDE для программирования Java (кажется скопировано с JBuilder). Еще есть Jacob для Emacs (тоже сам сделан на Java).

    Смешные сообщения ICQ.

    Оказывается, Origin обещал выпуск следующего Wing Commanderа совершенно бесплатно, причем серией из 7 частей. У Origin есть еще удивительный проект - Ultima Online, виртуальный сказочный мир, в который месяцами играют через интернет тысячи людей. Они даже выпускают газету. А когда они демонстрировали против неполадок, сотни людей разделись и пошли пить пиво на главной площади Ultimы.

    18.06.98

    Alphaworks IBM выпустили новую версию Remote AWT для Java, которая позволяет писать client - server аппликации и апплеты. Компоненты программы, запущенной на сервере, рисуются на клиенте и пересылают все события через TCP/IP. Там же можно найти high performance compiler, который компилирует Java-bytecode в native code систем AIX, OS/2, Windows 95 / NT.

    Be OS

    Netscape обещал выпустить NC 4.5 beta в июле.

    Вышел BeOS 3.1.

    Друг подарил CD Led Zeppelin. Половина песен мне не очень нравится, чем-то блюз напоминает, зато другая половина гениальна - особенно с акустической гитарой.

    17.06.98

    ICGnu - интересный open source проект. Они попытаются вместе сделать систему связи аналогичную коммерческому ICQ.

    Интервью R. Walker о том, каким будет Team Fortress 2, multi-playerная часть Half Life.

    16.06.98

    Half Life

    Демонстрация использования программ MS Office через Java thin-client.

    Velocigen для Perl - обещают ускорять связь WWW-сервера с банком данных в 25 раз.

    В сентябре в Москве выступят Depeche Mode.

    15.06.98

    Подкидной дурак на JavaScriptе.

    NetBeans Developer 2.0 - Java IDE для любой платформы.

    12.06.98

    Весь день провозился, стараясь исправить русские буквы в апплете под Linuxом (я думаю это одинаково под всеми UNIXами, но кириллица появилась только частично:

    Может быть, кто-нибудь из UNIXоидов сможет продвинуться дальше? Вот файл. В нем находятся 3 шрифта (которые я сделал из ttf с помощью утилиты ttf2bdf) в кодировке ISO-8859-5. Я взял именно эту кодировку, потому что в файле java40.jar от Netscape Communicator обнаружил только один класс, относящийся к русскому языку: sun.io.CharToByte8859_5 (okay, там есть еще sun.io.CharToByteUnicode, но как его приспособить?) Эти шрифты надо установить в FontPath Вашего X-Windows (mkfontdir; xset +fp dir_name; xset fp rehash). Потом установить NC 4.05 с поддержкой JDK 1.1 и переместить файл font.properties в каталог Netscapejava/classes/. Важно иметь NC 4 именно с поддержкой JDK 1.1 и если у Вас выставленна переменная CLASSPATH, то классы java40.jar должны там быть раньше классов JDK.

    11.06.98

    Линукс-чайник и руссификация Solaris. Женя также конвертировал ttf-шрифты от Windows в формат *.bdf.

    10.06.98

    В comp.unix.programmer мне объяснили, что сообщение segmentation fault поймать в лог-файл нельзя, так как оно генерируется shell.

    Русская версия NC 4.05 для Windows.

    9.06.98

    Чем больше я в Unix вникаю, тем больше он мне нравится. Emacs + gdb просто гениальная комбинация для написания программ. gdb умеет подсоединяться (attach #pid) к уже запущенным на заднем фоне процессам. Сегодня за полчаса нашел 4 ошибки, которые без gdb искал бы неск. недель: 2 опечатки + дважды вызывал макро FD_ISSET на негативные file descriptors, что приводило к segmentation fault (о чем вообще-то предупреждают в man select), но я об этом не знал, так как сервер просто тихо умирал. Надо бы кстати сделать, чтобы stderr и stdout в лог-файл писали... (Как? dup или freopen?) Вроде бы доделал сервер, начну завтра клиента (тоже под emacs :-)

    Мне кажется, что в следующие год-два популярность Linuxа очень сильно поднимется. Например Red Hat Software - они набирают себе известных программистов (например Rasterman) для их Red Hat Advanced Development Labs, которые будут делать Linux more managable for non-technical users.

    7.06.98

    Running Linux

    Одолжил на выходные у коллеги Running Linux. Отличная книга. Там есть и про установку и конфигурацию, но мне больше всего понравились главы про компайлер gcc, дебаггер gdb, редактор emacs (гениальная вещь, я только начал им пользоваться) и др. UNIX-программы. Понятно и коротко написано - как раз для self-starters.

    Вышли Gimp 1.0 (хороший графический редактор, с plug-inами и со скриптами, которые могут делать за Вас разные эффекты: тени, хром...) и Gnome 0.20 (= GNU Network Object Model Environment, десктоп). А также: Linux 2.0.34, Red Hat 5.1 и Slackware 3.5 beta.

    Linux Focus - журнал на русс. яз.

    3.06.98

    Gimp

    Саша поместил рекламу префа на Паравозов-Ньюз. Спасибо!

    Красивая датская игра на Java: Palle Pedalpost (0.5 MB).

    30.05.98

    Исправил segmentation fault - дело было совсем в другом - я неправильно передавал указатель функции setsockopt. Теперь все компилируется, но почему-то под Solaris я получаю сообщение Option not supported by protocol при запуске программы, когда пытаюсь выставить SO_KEEPALIVE. Но можно обойтись и без этой опции (которая посылает пакет для проверки связи, правда редко, каждые 2 часа), так как тайм ауты (приходило ли что-нибудь за последние 15 минут от клиента) будет проверять теперь сам преф-сервер.

    TIOCNOTTY /* void tty association */ нашелся под Solaris в файлах sys/ttold.h (не нравится мне его название) и sys/termios.h (возьму этот). Олег посоветовал проверять, успешно ли прошел fd = open ("/dev/tty", O_RDWR), но я наверное не буду этого делать, так как close () все равно игнорирует отрицательные аргументы.

    Осталось придумать стратегию подключения новых игроков, так как теперь в отличие от преф1 при отсоединении 1го игрока остальные 2 будут оставаться на связи. Еще было бы здорово сделать так, чтобы при невозможности установления TCP-связи, устанавливалась UDP-связь, пусть даже не очень оптимированная. Надеюсь, это будет не очень трудно добавить к преф-серверу, так как я все равно проверяю в нем тайм ауты - пусть он заодно смотрит, дошел UDP-пакет или послать его еще раз. UDP позволит играть служащим фирм с некоторыми firewallами :-) Порт сделаю 4000, как у ICQ.

    2 моих знакомых ирландцев поедут в понедельник на 3й день фестиваля Pink Pop в Heerlen, где также выступят Smashing Pumpkins и Garbage, но наверное я не поеду - 70 гульденов дневной билет.

    27.05.98

    Последние три дня я занимался сервером для преф2 и наконец-то сдвинулся с места. Сегодня правда потратил несколько часов пока нашел опечатку: #define NOBODY 3; Точка с запятой лишние, но компайлер заявлял что ошибка была не там где они стояли (наверху файла), а где-то рядом со строкой, где NOBODY подставлялось. Теперь Pref2.c компилируется, но при запуске выдает segmentation fault под Solaris и bus error под Linux. Может быть, это следствие моей лени писать скобки в выражениях типа:

    k = write (table[i].player[j].socket, 
              &table[i].player[j].buffer[table[i].player[j].read], 
               table[i].player[j].buffer[0] - table[i].player[j].read);
    

    хотя надо бы & (((table[i]).player[j]).buffer[((table[i]).player[j]).read]) ? Надо бы проверить, какой оператор идет первым: &, . или [] и т.п... И посмотреть, где еще моя программа пишет в память. Еще, почему-то не компилируется под Solaris:

    fd = open ("/dev/tty", O_RDWR);
    ioctl (fd, TIOCNOTTY, 0);		/* Solaris не может найти TIOCNOTTY */	
    close (fd);
    

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

    26.05.98

    Symantec дает испробовать Visual Cafe 2.5 (58 MB) и dbANYWHERE - evaluation versions. Borland называется теперь Inprise и выпустил JBuilder 2. Sun выпустил JavaPC Software beta.

    16.05.98

    Так как мне надоело вручную укорачивать лог-файл посещений, я выставил ежечасный cron job. Это очень удобная вещь в UNIXe - Вы можете сделать так, чтобы определенная команда или программа выполнялась ежечасно, ежедневно, eжемесячно, ежегодично или еженедельно (например послылать почту каждое утро командой mailx -t имя_файла ;-) При этом rootом обычно быть необязательно. Нужно вызвать crontab -e. Небольшая проблема еще в том, что если невыставлена shell-переменная EDITOR, то запустится неудобный редактор ed. Поэтому есть смысл сначала выставить EDITOR, чтоб она показвала на Ваш любимый редактор, например: setenv EDITOR vi. И когда он запустится, ввести строку (подробнее можно прочитать в man crontab):

    00 * * * * cp /dev/null /inet/www/partners/afarber/pref/pref.log
    |  | | | | |
    |  | | | | |
    |  | | | | команда, которую надо выполнять
    |  | | | |
    |  | | | день недели
    |  | | | 
    |  | | месяц
    |  | | 
    |  | день месяца
    |  |
    |  час
    |
    минуты
    

    Интересным трюкам в UNIXе можно научиться в Linux Gazette и в Sun World (например, про редактор vi).

    Полезная страница (с примерами) о LiveConnect (связи Java с JavaScript): Real's home. И официальная - на Dev Edge.

    У меня, к сожалению, куча всяких проблем, пока совсем не было времени на преф2, sorry.

    Garbage выпустили новый альбом Version 2.0 и они будут выступать в Германии. Правда один мой друг был на их концерте в Берлине и говорит, что они были там хуже всех, под фонограмму.

    9.05.98

    Учебник Java на рус. яз.

    6.05.98

    Вышли JDK 1.1.6 и Swing 1.0.2. Посмотреть на красивые компоненты Swing можно у него дома и в учебнике.

    Оказывается, Apache-сервер поддерживает servletы.

    27.04.98

    Хотя Netscape отложил делание Javagatorа, появился проект по переписанию кода Communicatorа из C++ в Java: Jazilla (почему-то не одобряемый jwz). Еще есть Jozilla - browser для Java OS.

    Если Вы тоже интересуетесь программированием на Java и написанием русских программ, то много полезной информации доступно через группы новостей различных фирм, причем там обсуждаются и общие вопросы:

    about:jwz

    26.04.98

    Modern Talking

    На тренировке все кончилось всеобщим порицанием, не знаю когда они меня теперь пустят играть... Все еще сижу над новым преф-сервером... Не выдержал и купил новый альбом Modern Talking...

                         ПОСЕЩЕНИЕ ПИВБАРА
    Возможные неполадки при употреблении пива и способы их устранения
    
    ПРИЗНАК                   ПРИЧИНА         СПОСОБ УСТРАНЕНИЯ
    
    Вкус пива не ощущается;   Кружка пуста    Найти кого-то, кто
    пропало чувство                           купит еще кружечку
    наслаждения. Кружка                       пива.
    прозрачна на свет.
    
    Вкус пива не ощущается;   Не открыт рот   Необходимы регулярные
    пропало чувство           или кружка      тренировки перед
    наслаждения. Рубашка      подносится      зеркалом.
    мокра от воротника.       не туда
    
    Ноги холодные и мокрые.   Неправильное    Установить кружку
                              положение       так, чтобы пена была
                              кружки          направлена в сторону
                                              потолка.
    
    Ноги теплые и мокрые.     Недостаточный   Встать около собаки с
                              контроль за     ошейником. Через
                              мочевым         несколько минут
                              пузырем         потребовать с хозяина
                                              пиво в компенсацию.
    
    Пол расплывается.         Вы смотрите на  Найти кого-то, кто
                              пол через дно   купит еще кружечку
                              пустой кружки   пива.
    
    Пол качается.             Неустойчивое    Вставить под пиджак
                              сиденье без     метлу древком вниз,
                              спинки          для создания дополни-
                                              тельной опоры.
    
    Пол поехал.               Вас несут       Если Вас несут не в
                                              другой пивбар, кричите
                                              о помощи. Требуйте
                                              пиво в компенсацию.
    
    Люминисцентные лампы на   Вы упали на     Попросите кого-нибудь
    стене.                    спину           посадить вас к стойке.
    
    Ничего не видно, во рту   Вы упали на     см. выше
    сломанная сигарета.       живот
    
    Вокруг быстро темнеет.    Пивбар          Выяснить у окружающих,
                              закрывается     где еще открыто.
    
    Вы просыпаетесь в мокрой  Вы упали в      Спросить время у прохожих.
    холодной твердой постели  канаву          Если пивбар открыт, идти
                                              туда. Нет - спать дальше.
    

    19.04.98

    Ужас. Сегодня была моя 1я игра в Kreisliga C и мы проиграли 7:1. По моей вине 3 гола за те полчаса, что я был на поле... Увижу во вторник на тренировке, чем это для меня кончится :-(

    18.04.98

    Обнаружил, что в C есть vfprintf и переместил весь лог-код в отдельную функцию:

    #include <time.h>
    #include <stdio.h>
    #include <stdarg.h>
    
    #define LOGFILE "pref.log"
    
    void logString (char *format, ...)
    {
        va_list         list;
        time_t          now; 
        static FILE     *logfile = NULL;  /* static, инициализируется только 1 раз */
    
        if (logfile == NULL)                    /* запуск 1й раз, открыть лог-файл */
        {
            logfile = fopen (LOGFILE, "ab");
    
            if (logfile == NULL)
            {
                perror ("pref-server: can not open log file");
                exit (1);
            }
    
            setvbuf (logfile, NULL, _IOLBF, 0);          /* построчная буферизация */
        }
    
        time (&now);
        fprintf (logfile, "%s\t", ctime (&now));
    
        va_start (list, format);
        vfprintf (logfile, format, list);
        va_end (list);
    }
    

    Не пишите мне больше об ошибках в преф1, так как я уже пишу преф2. Также извиняюсь за то, что я не на все письма отвечаю из-за нехватки времени - я их читаю и ценю!

    17.04.98

    Urban legends

    Олег подал идею запустить преф-сервер на одном из SSL-портов (https=443, ssmtp=465 или snntp=563), что позволит играть сквозь многие firewallы. Надо будет испробовать на моем PC дома, когда доделаю преф2 и спросить Грега, так как обычный user не может использовать порты ниже 1000. Другой вариант - UDP. Сегодня я на работе вычитал, что наш firewall запрещает incoming TCP-connections, но разрешает UDP. Нелогично как-то... Не знаю, где бы мне достать информацию о firewallах.

    Наткнулся на несколько адресов: лауреты редко забирают Darwin Awards (не очень этично, но трудно оторваться от чтения) и байки Urban Legends. И еще Flash Mountain - check out номер 8 :-)

    13.04.98

    Дал интервью Майе для московского журнала Навигатор игрового мира.

    Red hat linux

    Стер Slackware и поставил себе Red Hat 5.0 (Hurricane). Это фактически коммерческий продукт, все очень здорово организованно и настроенно (программы распространяются в спец. RPM-фомате), и они его кроме продажи на CD-ROM, выкладывают бесплатно в сети. Если Вы такой же новичок в LINUXе, как и я, то рекомендую, они даже за Вас Х-Windows настраивают. Причем так как я подключен из общежития напрямую к сети, я смог его установить через FTP (к сожалению, через модем это не получится, Вам придется сначала скопировать все файлы к себе):

    1. Сделал стартовую дискетту: rawrite boot.img
    2. Сделал дополнительную дискетту: rawrite supp.img
    3. Загрузил (boot) компьютер со стартовой дискетты
    4. Ответил на пару вопросов, и выбрал FTP-метод установки c ftp.redhat.com и /pub/redhat/redhat-5.0/i386/

    12.04.98

    Окрыленный вчерашней безболезненной установкой LINUXа, я поехал сегодня на работу и к моему удивлению быстро установил русские шрифты под Solaris, хотя год назад очень старался, но у меня тогда ничего не получилось. Видимо, я немного поумнел. Итак, если Вы, как и я, работаете в иностранной компании на UNIX-workstation и не прочь в рабочее время почитать русские газетки, но слабо разбираетесь в X-Windows, а sysadmin-у о своем естественном желании сказать стесняетесь, то попытайтесь сделать следующее:

    1. Скачайте себе файл cyrfonts.zip (123 KB - я выкинул все лишнее и оставил в нем только русские шрифты Cronyx-Times 10, 12, 14 и Cronyx-Courier 8, 10, 12).
    2. Распакуйте его (zip -d cyrfonts.zip или unzip), так чтобы шрифты оказались в каталоге cyrfonts Вашего home-каталога.
    3. Введите xset +fp ~/cyrfonts
    4. Введите xset fp rehash
    5. Запустите заново Netscape и выберите у него через меню в Preferences шрифты Cronyx для кодировки Cyrillic (KOI8-R).

    Чтобы шрифты было видно при каждом запуске X-Windows, Вам надо найти у себя в home-каталоге файлы .xinitrc или .Xsession и внести в середину файла (не в конец!) эти xset...-приказы.

    11.04.98

    Установил себе Slackware LINUX, FVWM95 и NC 4.05 и без проблем (и звука :-]) поиграл в преф.

    10.04.98

    Предположим, Вы хотите, чтоб в Вашем апплете параллельно к реакции на действия пользователя делались еще 2 вещи, например, анимация и чтение от сервера. Как это сделать?

    The happy hacker

    Очевидный вариант - это произвести от Thread 2 новых класса, создать от них в апплете 2 объекта и запустить их. Но это слишком много возни и 2 лишних class-файла, особенно если учесть, что все что делает анимационный Thread - это спать и время от времени вызывать repaint (), а 2й просто вызывает все время read ().

    Более простой вариант - использовать конструктор Thread (Runnable target), где target - это какой угодно объект, который симплементирует Runnable. Ну а имплементировать-то этот Runnable просто - нужно просто написать функцию run () для этого объекта. Она-то и будет запущена, когда мы startанем Thread.

    Ну так какой объект для этого взять? Возьмем сам апплет. То есть:

    public class Pref extends Applet implements Runnable
    {
    
    Если сейчас попробовать скомпилировать, компайлер возмутится, так как мы заявляем, что наш апплет имплементирует интрефейс Runnable, а где же тогда функция run ()? Надо ее сделать. Но мы хотим же два разных действия? Ничего, одной функции хватит, надо просто внутри ее различать, что к чему:
        Thread readerThread, animatorThread;
    
        public void run ()
        {
            while (animatorThread == Thread.currentThread () )
            {
                // анимируй здесь
            }
    
            while (readerThread == Thread.currentThread () )
            {
                // читай данные от сервера здесь
            }
        }
    
    Почему так странно, Thread.currentThread ()? А это такая функция в классе Thread. Она статическая, значит и вызывать ее надо, приписывая спереди имя ее класса (Thread) с точкой.

    Окей, осталось только эти 2 Thread-а создать и дать им пинок под зад:

        public void init ()
        {
            animatorThread = new Thread (this);     // создать
            readerThread = new Thread (this);
      
            animatorThread.start ();                // запустить
            readerThread.start ();
        }
    }
    
    А что это за this? Елки-палки, ну я же уже объяснял про конструктор, который мы хотим использовать! this показывает на объект, в котором он стоит, то есть здесь это наш апплет Pref, тот объект, у которого run () есть!

    Купил себе мой 1й CD: Fat of the land, Prodigy (это те, чье видео - с неожиданной концовкой с зеркалом - боится показывать MTV). Еще мне Smashing Pumpkins нравится, до сих пор жалею, что не пошел год назад на их концерт в Крефельде.

    Прочитал о том, как хакеры играют в короля горы - стараются вломиться в систему и потом защитить ее от других.

    9.04.98

    Netscape выпустил поддержку JDK 1.1 для NC 4.05. Она включает JavaBeans, печать из апплетов и новый AWT.

    Все-таки сдал экзамен по электронике! 4 gewinnt :-) Cессия наконец-то кончилась. Делаю Преф 2 и еще один multi-player проект - Город...

    6.04.98

    Нашел в сети Visual Cafe 2.0 (64 MB), который мне не нравится - неудобно, слишком много окон (SDI), русский не выставить. Вроде бы умеет компилировать native code для Windows и MacOS. Java World утверждает, что новая 2.5-версия лучше (SDI / MDI). Еще есть Kawa, и Visual Age (версия 1.0 entry, позволяет компиляцию не более 100 классов - на заднем фоне, оригинальная безфайловая система на любителя) которые я еще недостаточно испробовал (тоже с русским неудобства, или может быть я не умею настроить). Хорошо работает русский и удобный интерфейс в JBuilder (trial-версия в книге Teach yourself...), но он очень часто зависает, debugger вообще не работает. Не знаю, исправлено ли это в 1.01-update и 2.0 beta... Моя сессия закончилась и я начал делать Преф 2 (новые клиент и сервер), на этот раз на Visual J++ (tech-preview 6.0-версия, 36 MB, красивая игрушка, с русским языком проблем нет). Microsoft проталкивает WFC, но на VJ++ можно писать и pure Java code.

    2.04.98

    Free the lizzard!

    Tail Gunner и War Zone - неплохо сделанные на Java 3D-игры. Tail Gunner даже с кодом, всего 1800 строчек, красиво спрограммированно, объектно.

    Полезный адрес: Developer's library - более сотни книг по программированию. Немного устаревшие, зато бесплатно.

    Вышел NC 4.05 (Java на 30-50% быстрее). И его код! Было бы здорово, если бы Navigator руссифицировали, для разных платформ. Тот, кто это сделает, принесет пользу и самому себе - сможет разрекламировать себя или свою фирму... Может быть, это Ваш шанс? ;-)

    1.04.98

    Если Вы не играли больше недели, то рейтинг стирается. Он может стереться и так, если browser-у понадобилось место для других cookies. Многие люди написали мне, что их рейтинг меньше того, что они на самом деле заработали. Конечно это неприятно, я очень извиняюсь! Если у Вас включен JavaScript, нажмите сюда, чтобы ввести Ваш правильный рейтинг.

    30.03.98

    Сделал контекстное изменение курсора и загрузку звука до начала игры. У 1го игрока (справа) висты были перепутаны, поменял. Карты немного подправил. Сделаю, чтобы можно было видеть последнюю взятку и прикуп (в пуле, где маленькие картинки взяток), но сначала хочу поменять генерацию карт.

    2 интересных адреса: карточные трюки и хорошо сделанная на Java игра Diamond Mines.

    24.03.98

    Сделал баннер с помощью Ulead. Если Вы хотите привлечь сюда больше игроков, скопируйте его к себе и вставьте в свою WWW-страничку HTML-код (спасибо, Stefan и Serge! И Антон и Дима!):

    <A HREF="http://www.simplex.ru/pref.html"><IMG SRC="pref.gif" BORDER=0 
    WIDTH=468 HEIGHT=60 ALT="Хотите сыграть в преферанс?"></A>
    

    Хотите сыграть в преферанс?

    Или маленький логотип:

    <A HREF="http://www.simplex.ru/pref.html"><IMG SRC="logo.gif" 
    BORDER=0 WIDTH=88 HEIGHT=31 ALT="Распишем пульку?"></A>
    

    Распишем пульку?

    Кстати, комментарии в GIFах всегда выглядят так: 00 21 FE blah blah 00, где 00 - это конец блока (коментария и др.). Конец всего файла обозначается 3B.

    20.03.98

    Сделал новые карты (на основе стандартных карт от Windows) с помощью PSP (хороший графический редактор) - получилось по-моему неплохо (хотя я использовал только 16 безопасных цветов) - благодаря теням: когда Вы рисуете выпуклый предмет, делайте правый и нижний край потемнее, а верхний и левый посветлее, как будто свет падает сверху-слева.

    16.03.98

    Вернул пока пересдачу карт. Владельцы MSIE 3 могут играть на этой странице. Остальное будет исправлено вместе с новым сервером и протоколом через 3 недели.

    15.03.98

    У моего папы день рождения.

    Okay. Я знаю, что играть можно. Следующие 3 недели я учусь. Я должен сдать хоть один экзамен в этом году. Карты приходят с задержкой из-за подтверждений - just keep chatting. MSIE 3 не работает и работать не будет, так как я не могу его у себя поставить. Ставьте MSIE 4 или любой Netscape. Исправил открывание чужих карт, спасибо, Алеша!

    13.03.98

    Пятница, 13е... :-( Мне не хватило 4 пунктов чтобы сдать экзамен "Операционные системы", WWW-сервер почему-то не работал 2 часа, какие-то ребята прыгали все время ища какого-то дружка (jazz и rakot, нехорошо это...), и вдобавок я сделал вчера глупую ошибку: (dealer - 1) % 3. Что давало ArrayIndexOutOfBoundsException, так как становилось отрицательным. Исправил на (dealer + 2) % 3 и извиняюсь за испорченные игры. Сделал теперь, что новый тур не начинается (и карты не раздаются), пока не подсчитаны очки у всех игроков и не послано подтверждение об этом. Надеюсь, теперь все сносно заработает и медленно начинаю делать новый сервер, с улучшенной скоростью (читаться будет только то, что уже пришло и не блокирует, согласно select (), после этого сервер не будет ждать продолжения как он делает сейчас, а просто переходить к следующему socketу).

    12.03.98

    Если разыгрывающий считает что все ясно (например чистый мизер), он может показать другим свои карты, нажав кнопку Откр. во время игры.

    Думаю, что исправил ошибку с незаписью очков в пулю после "выхода" и поэтому убираю раздражающую "пересдачу карт". Все та же причина - плохой протокол игры - пока одни еще считали очки, другие уже начинают новый тур. Ну ничего, я уже дочитываю книжку про TCP/IP и начинаю писать новый сервер, заодно и изменю протокол игры.

    Сделал восстановление партий, пока коряво, но я рад, что мне вообще удалось запоминать данные в cookies из апплета (на MSIE 4+ и NN 3+, если Вы их не выключили), не прибегая к signed applets, так как иначе мне пришлось бы покупать годовые сертификаты Netscape (20$) и отдельно Microsoft (20$). Сейчас это сделано так: когда Вы играете, после каждой записи в пулю, она сохраняется в cookies. Ключом служат 2 адреса обоих Ваших соперников, с отрезанным началом (то есть cityline.ru для ppp06-2-73.cityline.ru или pa.us.ibm.net для slip129-37-113-89.pa.us.ibm.net) и если теперь кто-нибудь вываливается (даже прерывание модемной связи и смена динамического адреса), а потом быстро (< 1 недели) возвращается к тем же игрокам, то можно играть дальше. Это не идеальное решение, так как:

    1. это может оказаться другой клиент cityline.ru
    2. у некотрых эти cookies уже стерлись
    3. нет смысла урезать IP-адреса (137.226.146.100)
    4. никто не хочет доигрывать
    но я это исправлю позже, так как это тоже требует смены протокола.

    Microsoft выпустил Visual J++ 6.0 beta (36 MB).

    Так как меня часто спрашивают, как мешаются карты, вот моя функция:

    StringBuffer str = new StringBuffer (32);
    int 	i, j;
    char 	c;                             // каждый char - это карта
    
    for (i = 0; i < 8; i++) for (j = SPADE; j <= HEART; j++)
    {
        str.append ((char) ((i << 8) | j));   // сначала по порядку
    }
    
    for (i = 0; i < 32; i++)                  // 32 карты в колоде
    {
        c = str.charAt (i);
        j = (int) (Math.random () * 32);
        str.setCharAt (i, str.charAt (j));    // теперь поменять
        str.setCharAt (j, c);                 // два char's местами
    }
    
    Мне кажется, она достаточно случайная (каждая карта может оказаться на любой из 32 позиций, верно?) Но если Вы так не думаете, напишите мне.

    11.03.98

    Косметическое исправление: слишком длинные адреса теперь урезаются (полный адрес все равно виден в лог-файле).

    Я не виноват, это какие-то проблемы с www.friends-partners.org, был очень медленный сегодня.

    Сделал запоминание (максимум на неделю) имени и денег (в самом нижнем-правом углу пули, пока только для личного пользования). Таким же путем сделаю скоро запоминание пули, так что если Вы вываливаетесь в середине игры и потом возвращаетесь к тем же партнерам (те же адреса), можно будет продолжить игру.

    10.03.98

    Исправил торговлю (перебитие мизера). Но все еще не могу найти ошибку, когда после "выхода" не у всех пишутся очки в пулю и рассинхронизуется игра.

    9.03.98

    Вставил задержку в 2 секунды после каждого принятого события (ход картой, текст сообщения...) - может быть теперь будет удобнее играть, карты не будут так мелькать?

    Кстати, я заметил забавную вещь: не было еще такого случая, когда я играл здесь с мужчиной из России или Украины и какой-нибудь девушкой, чтобы россиянин не сказал что-нибудь вроде "смотри-ка, женщина, а (хорошо) в преферанс играет". Ну то есть, это мне-то забавно, а вот женщинам наверное очень неприятно постоянно такие "комплименты" выслушивать.

    Идея! (Как всегда ночью). Когда Вы приходите играть и на сервере уже играют 6 человек в играх 0 и 1, то Вы становитесь игроком 0 в игре 2 и ждете соперников. Предположим, после этого вываливается или уходит игрок в игре 0. Тогда все игроки в игре 0 отсоединяются. Теперь все новые игроки сначала будут помещены в игру 0. Пока вся игра 0 не заполнится, к Вам никто не придет. Поэтому нередко бывало, что в то время как в игре 0 маются два игрока, Вы все еще сидите в игре 2. Что делать? Нужно просто сразу после отсоединения всех игроков в какой-нибудь игре (здесь в 0й), сдвинуть все верхние игры на одну вниз! Так просто! Добавил в disconnect (int game) 5 строчек и перезапустил сервер:

    for (i = game + 1; i < GAMES; i++)
    {
        cli[i - 1][0] = cli[i][0];
        cli[i - 1][1] = cli[i][1];
        cli[i - 1][2] = cli[i][2];
    }
    
    Теперь если Вы зашли на сервер и партнеров нет, Вы можете быть уверены, что 1й человек, который придет после Вас, будет направлен к Вам. Нужно только ждать и время от времени (каждые 10 минут) что-нибудь печатать, чтобы Вас не выкинуло за бездействие.

    8.03.98

    Нельзя было закончить игру. Исправил: она закончится, когда все горы будут списаны (остаток будет записан в пулю).

    6.03.98

    Доделал мизер - теперь его можно заявить либо сразу, либо никогда. Убрал "мизер без" (прикупа) как устаревший (см. 3.6.2). После "10 без" (козыря) теперь не требуется выбирать игру еще раз. Сделал отмотку списка наверх, так как иногда можно было промахнуться. Исправил прилипчивость карт. Ограничил кукукание.

    5.03.98

    Исправил подсказку.

    Так как ненавижу напрягаться, вистуя на мизере, сделал табличку - запись прикупа и карт разыгрывающего на мизере разрешена правилами (см. 3.6.8).

    Кажется, если после "выхода" кукукнуть, происходит какая-то ошибка, но мне нужны детали...

    4.03.98

    Убрал ходы картами из текстового окна. Пол-виста (1/2) теперь можно говорить только на 6й и 7й игре, согласно пункту 3.8.7 кодекса преферанса (там же написано, что на 6 пик можно говорить "здесь" и играть в открытую). Если оба пасуют, то им теперь записывается по 0 взяток. На 10й вистующим надо теперь взять 1 взятку (см. 3.8.2, к тому же так интереснее).

    3.03.98

    После сноса теперь не надо выбирать мизер из списка игр во 2й раз.

    Купил себе все-таки (жутко дорогую, но интересную) книжку Internetworking With TCP/IP.

    2.03.98

    Исправил перенос слов в текстовом окне.

    Может быть ошибка не в подсчете очков, а в том, что пока они (довольно долго) подсчитываются, иногда приходят уже новые карты для следующего тура? Тогда обнуляются все взятые взятки, потому что начинается новая игра. Поэтому когда подсчет очков добирается до разыгрывавшего, у него уже ноль взяток, вместо шести взятых, поэтому он и получает 6 x 2 = 12 в гору, хотя и сыграл 6ю. Или 28 в гору за вообще-то сыгранную 7ю. Изменил кое-что, надеюсь теперь эти неприятные ошибки исчезнут.

    1.03.98

    Вышла версия 4.01 русского MSIE для Windows. В настоящее время это самая лучшая программа для java-префа. Они также выпустили MSIE для Sun Solaris, но я его еще не пробовал.

    25.02.98

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

    21.02.98

    Извиняюсь за испорченный выходной: на скорую руку снизил число игроков обратно до 15, но при этом опечатался, и из-за этого сегодня нельзя было играть ("Непредвиденная ошибка"). У меня сейчас сессия, поэтому все замедлилось, а вообще мои планы:

    Кстати, в интернете можно также играть в шашки и бридж, но за плату и только под Windows.

    16.02.98

    Сделал новую пулю (клавиша [TAB] или кнопка "Пуля").

    14.02.98

    Доделал упорядочивание карт, они сортируются теперь также по старшинству (по-прежнему правая или средняя кнопка мыши). Я попробовал располагать карты одинаковой масти горизонтально рядом друг с другом, но тогда совсем не оставалось места на столе, так что я решил оставить расположение всех карт в одну линию. Надо будет позже сделать, чтобы видно было, кто какую карту положил. Надеюсь также, что исправил проблему с прыганием карт при взятии или сносе прикупа, извиняюсь за испорченные мизера ;-)

    Ввести черный список для хамящих игроков? Это не очень трудно, я мог бы изменить преф-сервер, чтобы он к примеру отсекал все попытки соединения от *.pace.edu. Но жаль тратить на это время.

    13.02.98

    Изменил layout и уменьшил размеры префа, чтоб влезал на маленькие мониторы с 640 x 480. А вообще в MSIE есть удобная вещь в меню: Вид - Во весь экран. Надо бы сделать автоматический перенос печатаемых в текстовом окне слов.

    Sorry! Внес при этом (ночью) ошибку - карты сами сносились.

    Сделал перенос слов. Все еще какая-то ерунда с картами, прыгают сами... И пуля уродливая, и подсказка не влезает. Изменю все позже.

    12.02.98

    Мало игроков? Рекламируйте эту страницу!

    Исправил ошибочную запись в гору за пас-1/2-пас. Спасибо Tutso!

    Я не знаю солько взяток записывать на вистующих, если они оба пасуют, после того, как разыгрывающий назвал игру. Сейчас они получают 0-2 на 6й и 0-1 на 7й. На остальных по 0 взяток. Это кажется мне странным. Если Вы разбираетесь в Ростове, напишите мне, пожалуйста.

    11.02.98

    Ввел новую, более гибкую, систему ухода (записи без игры). Если оба вистуют и число взяток на 2 не делится, то 2й вистующий получит на одну больше. А так - пополам. Нашел 2 маленькие ошибки в подсчете очков на 8й и 9й, когда пули закрыты. Больше ничего не нашел. У меня совсем нет времени играть, поэтому все зависит от Вас - пришлите мне подробное описание (что играли, сколько взято взяток, пули закрыты или нет, что в пульке...) замеченой Вами ошибки в подсчете игры или она не будет найдена. Но нужно еще учесть, что каждый раз когда я меняю что-то (как сейчас), то некоторые продолжают какое-то время еще играть старую версию, потому что она лежит в кэше proxy (компьютер Вашего провайдера, между Вами и интернетом) и это вызывает неувязки. Тогда Вам надо отключить использование proxy в Вашем браузере или подождать (пару дней?).

    Теперь вистующий ходит при открытой игре обеими руками, а спасовавший сидит и смотрит. Сделал пока кое-как, надо бы уход и подсказку соответственно изменить.

    10.02.98

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

    9.02.98

    Может это и другие неувязки случаются от попыток одновременно посылать несколько сообщений и поможет synchronized?

    8.02.98

    Так как мне жаловались, что иногда не видно карт, вернул MediaTracker (но на другой манер). Теперь пока вся графика не загрузится, соединение с преф-сервером устанавливаться не будет. Надеюсь, это также повлияет на те случаи, когда люди вылетали сразу после 1й раздачи карт. Съездил на работу и проверил - вроде все (NN 2.02, NN 3.01, NC 4.04) под Solaris работает. Надо бы мне как-нибудь LINUX установить дома...

    Добавил в преф тысячедолларовую картинку, хотя и понимаю, что большинство из вас ее никогда не увидит ;-) Но должна же в жизни быть цель.

    Идея! Зачем я так стараюсь уследить, все ли еще на месте? Вот если кто-то в середине игры неожиданно присылает мне свой адрес и имя, то становится ясно, что игрок, который до этого играл под этим номером, оказывается вывалился. Значит я просто убираю карты со стола, обнуляю пулю и очки, пишу "Misha zanimaet mesto Vasi" и начинаю всю игру сначала. А если к тому же оказывается, что адрес игрока не изменился, то это означает, что тот игрок (Vasya) успел вернуться (перезашел быстренько). В этом случае я пулю не обнуляю, а просто посылаю возвращенцу пулю и очки и пересдаю карты. Игра продолжается! Скоро так и сделаю, и мучения с отключением всех прекратятся.

    Andrew Gierth помог мне найти ошибку в сервере. Дело было в том, что я устанавливал функцию для отключения заснувшего при чтении или письме клиента (после 90 секунд) с помощью signal ():

    /* when SIGALRM signal received, call disconnect () */
    if (signal (SIGALRM, disconnect) == SIG_ERR)
    {
        puts ("pref-server: can not catch SIGALRM");
        exit (0);
    }
    
    Но по умолчанию, в SunOS и других системах прерванная сигналом SIGALRM функция read () и write () запускаются снова! Поэтому когда такой медленный клиент приходил, мой сервер вместо того, чтобы его отсоединить, умирал сам. И вам приходилось его перезапускать. Поменял теперь на sigaction ():
    struct sigaction act;
    
    /* when SIGALRM signal received, call disconnect () */
    act.sa_handler = disconnect;
    sigemptyset (&act.sa_mask);
    
    act.sa_flags = 0; /* clear SA_RESTART in POSIX */
    
    #ifdef SA_INTERRUPT
    act.sa_flags |= SA_INTERRUPT; /* or set SA_INTERRUPT in SunOS */
    #endif
    
    if (sigaction (SIGALRM, &act, NULL) < 0)
    {
        puts ("pref-server: can not catch SIGALRM");
        exit (0);
    }
    
    и надеюсь, что мой сервер больше не будет зависать. Теперь read () и write () прерываются после обработки SIGALRM и выставляют errno = EINTR. (Случаи отключения слишком медленных клиентов видны теперь в лог-файле, когда disconnect () вызывается дважды:
    Sun Feb 8 14:05:50 1998 
        disconnecting all players from game 2
    Sun Feb 8 14:05:50 1998 
        disconnecting all players from game 2
    
    Тогда я не буду писать новый сервер, потому что нынешний нравится мне своей простотой и экономией CPU-времени и памяти - увеличил сейчас число игроков с 15 до 24. Просто позже немного изменю его, как описано выше, чтобы позволять продолжать игру при быстром перезаходе после выпадания клиента.

    Получил уже 2 жалобы на то, что после успешно сыгранной 7й записывалось 28 в гору, но не могу пока найти где это происходит. Мне нужно подробное описание: сколько при этом у кого взяток, в какой момент это происходит и как выглядит пуля до и после этого происшествия. Иначе я могу еще долго искать...

    7.02.98

    Добавил возможность уйти за свои. Если вистовали 2 игрока, то на 7й взятки будут 7-1-2 и на 9й - 9-0-1.

    Преф-сервер уже несколько раз выключался. Не знаю, в чем причина: в том что я его плохо написал (ничего, я его позже все равно перепишу), или это просто связано с самим www.friends-partners.org. Написал его шефу, Грегу (он пока не ответил), а пока если у Вас точно нет firewall, но Вы не можете соединиться, то нажмите сюда, чтобы запустить преф-сервер. Если Вы увидите после этого pref-server: okay, started, то он дейтсвительно был до этого выключен (и это очень хорошо, что Вы его запустили). Если Вы увидите pref-server: can not bind server socket, то это означает, что он и так уже работает (и уже слушает socket) и Вы не можете соединиться по другой причине. Если Вы увидите что-нибудь другое, пишите мне.

    6.02.98

    Дима Вернер поставил на своих замечательных Анекдотах из России ссылку на мой преф и теперь здесь много посетителей. Powered by JBuilder

    Вышел JBuilder 1.01.

    Через 2-3 недели (после экзамена) перепишу сервер: сейчас он довольно неуклюжий, так как если сервер читает данные от кого-нибудь с плохой связью, то всем остальным приходится ждать, пока он кончит слать эти данные целиком, или сервер выкинет его (и заодно его партнеров) после тайм-аута (в 90 секунд). Новый сервер будет читать (и писать) только то, что уже доступно (функция select ()) для чтения (письма) без блокирования, то есть все будет вертеться быстрее. Еще сделаю показ всех вышедших на мизере карт и уход за свои. Что еще сделать?

    5.02.98

    Теперь после каждого тура показывается сколько у игроков денег (кучками). Потом надо что-нибудь сказать, чтобы были разданы карты.

    4.02.98

    Заново нарисовал карты и заодно уменьшил количество цветов до 16ти, теперь вся картинка на 10KB меньше. Исправил запись вистов на распасах, когда 2 победителя. Общая сумма очков была не равна нулю из-за неточности округления. Исправил (теперь +/- 1). Изменил пол-виста (1/2) - теперь возможны 2 варианта: пас-1/2-вист или пас-1/2-оба пас (в последнем случае 2 вистующий получит 2 виста на 6й и 1 на 7й игре).

    3.02.98

    Доделал подсчет очков, включая вливание в пули и списывание с гор. Там еще гарантировано есть ошибки, но играть уже можно, а я должен готовиться к 3м экзаменам. Так что буду исправлять замеченные ошибки постепенно, (сделаю позже еще что-нибудь веселое с привратником, если у Вас есть идеи, пишите).

    Java-преф сделан для развлечения и моего образования. Игра всегда будет бесплатной, и на этих страницах не будет рекламы. Пару долларов, что могут принести мозолящие целый месяц глаза придурковатые баннеры, я и так за полчаса заработаю. Если Вы хотите помочь этому проекту и привлечь сюда больше игроков, поместите, пожалуйста, у себя ссылку на http://www.simplex.ru/pref.html или упомяните возможность игры в преферанс под любой ОС и без установки дополнительных программ на IRC или USENET.

    30.01.98

    Исправил очень неприятную ошибку, когда Вы например выбирали 6 черви, а преф заявлял, что Вы играете 6 бубы (на 1 меньше). Спасибо Alf и Alx ;-) Исправил незначительную ошибку в mouseExit (). Исправил NN 2 для Windows 95: там не работает метод clear () у java.awt.List. Сделал вместо list.clear ():

    if (list.countItems () > 0)
    {
        list.delItems (0, list.countItems () - 1);
    }
    

    30.01.98

    Оказывается когда я упрощал код (два дня назад), я повторно внес ошибку в распасы - было видно карты противника. Исправил опять. Спасибо А. Маликову - если бы он мне не написал, я бы не заметил, так как у меня мало времени играть самому.

    При соединении Java-клиенты дважды менялись своими именами и адресами. Исправил это - старт будет теперь немного быстрее. Почти закончил подсчет пули. Осталось сделать "помощь" другим, списывание с горы и подсчет фактических очков.

    Нашел и исправил заедание игры в самом начале. А может это исправит и те случаи, когда игра заедала в середине (все ждут хода одного игрока, а он сам ждет другого)? Если я не замечу таких новых случаев заедания и другие мне об этом не напишут, то скоро уберу насильную пересдачу (2й щелчок по таймеру).

    www.friends-partners.org тормозит. Грег говорил, что у них какие-то перемены, запланированные на пятницу (сегодня). Надеюсь, начиная с выходных сервер заработает быстрее.

    Теперь все работает под Solaris! NN 2 не нравилось в run ():

    while (name == null)
    {
        ;		// ждать пока будет введено имя
    }
    
    Хотя я и вызывал Thread.currentThread ().setPriority (Thread.MIN_PRIORITY) до этого. Поменял теперь на более медленный:
    while (name == null)
    {
       try
       {
    	Thread.sleep (3000);
       }
       catch (Exception e)
       {
           e.printStackTrace ();
       }       
    }
    

    NN 3 не нравился Mediatracker - выкинул его (теперь правда карты будут не сразу появляться) и просто проверяю, что возвращает drawImage (). Проверил еще на NC и AppletViewer - все начало работать (по крайней мере на моем Solaris 2.5).

    И мне сказали, что работает на Silicon Graphics и Linux.

    29.01.98

    Сделал подсчет очков для распасов, остальное пока не готово. Подсчет очков будет по системе Ростов игра 6/12 (До 12 в пулю и все начинают с 6 в горе. Пока пули не закрыты, за недобор на вистах (надо взять 4 на 6, 2 на 7, 1 на 8, 1 на 9) - 1, 2, 3, 4 в гору вистующим - а после закрытия пуль - 2, 4, 6, 8. Прикуп на распасах не открывается. За каждую недобранную разыгрывающим взятку - по 10 вистов остальным. Играют, пока не останется 1 гора.), т.е. в отличие от Сочи надо будет играть осторожно и вистовать часто.

    28.01.98

    С любезного разрешения Грега Коуля сервер запущен теперь на более быстром WWW-сервере Друзья и Партнеры (у них правда на этой неделе ремонт) и позволяет теперь играть одновременно 15 человекам.

    27.01.98

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

    25.01.98

    Sorry! В программе была ошибка из-за которой преф не работал в Netscape Communicator, невозможно было после ввода имени соединиться. Когда я позавчера переписал сервер пожестче, положение еще больше ухудшилось: люди с Communicator-ами, "умирая", начали захватывать и других игроков с собой. Я сейчас эту ошибку исправил. Заваливаюсь спать, а утром доведу все до ума, а потом поеду на работу и прогоню все на Navigator 2.02, 3.02 и Communicator 4.03 для Sun Solaris.

    Начал делать подсчет очков (пока не готово). Клавиша [TAB] переключает теперь поле/пулю. Если преф завис, пришлите мне для анализа содержимое Java-console!

    Исправил появление двойной колоды. Добавил прощание: если кто-то закрывает браузер или уходит со страницы префа, а не вырубает компьютер или модем, то есть шанс это увидеть. По желанию публики, теперь также можно ходить двойным щелчком, хотя тянуть карту мне кажется естественней. Все еще проблемы с синхронизацией: иногда все ждут, что походит один игрок, в то время как он ждет другого. Вряд ли это от того, что потерялся пакет. Ведь TCP гарантирует доставку. (Или?) Наверное, это возникает от того что игрок успел нажать на какую-нибудь кнопку дважды, прежде чем апплет среагировал и потом выключил ее. Изменю action (). Если Вы все-таки оказались в таком заколдованном круге, то пусть тот игрок, чей ход должен быть, дважды щелкнет мышью на желтый прямоугольничек таймера (внизу-справа). Это вызовет уборку памяти (garbage collection) и перераздачу карт. Не делайте это слишком часто, а то вырастут волосы на ладонях.

    24.01.98

    Улучшил сортировку карт. (Средняя или правая кнопка мыши).

    23.01.98

    Переписал заново сервер. Изменил:
    1. Теперь могут играть больше 3х человек одновременно (выставил 9).
    2. Тайм-аут 1.5 минуты во время чтения сервером. Это значит, если кто-то просто вырубит компьютер во время, все игры на сервере не остановятся.
    3. Теперь за один раз посылается максимально 255 байтов вместо 127. Хотя пока это никому и не нужно, сделал заодно.
    4. Самое большое изменение: если уходит один игрок, игра оканчивается для всех. И если Вы после этого хотите дальше играть, Вам придется перезайти Может это не очень приятно, но мне приходится делать это, если я не хочу вводить систему тайм-аутов и новый протокол. Потому что бывают случаи, когда не посылая запроса к клиенту, не узнать подсоединен он или нет. А тайм-аут по умолчанию в TCP - 2 часа. Так что лучше вылететь один раз всем, чем сидеть и удивляться, почему это Vasya так долго не ходит.

    22.01.98

    Теперь игра должна работать с NC. Проверяю теперь, как сделать русские буквы в полях NC. Было бы интересно полностью настроить UNIX-овские NN 3 и NC 4, но я не специалист. Может кто-то знает как?

    Также исправил распасы (было видно чужие карты :-) Чтобы под Windows 95 работал русский язык (не только названия кнопок, но и текстовые поля) в Communicator-е, поместите файл font.properties в его каталог \Program\Java\Classes\. Все еще не решил проблему с List в NN 2.02. Может поменять его на Choice?

    Была проблема с синхронизацией (все ждут хода другого). Кажется, дело было в том, что не все обнулялось, когда кто-то уходил и приходил заново. Вроде бы исправил. Напишите мне, если что-то подобное заметите. Лучшая сортировка карт, double-click и возможность уйти за свои, перенос длинных строк в текстовом поле - будут сделаны позже. Что еще добавить? Сейчас переписываю сервер, чтобы могли играть больше 3х человек и чтобы был тайм-аут на серверной стороне для отсечения тех кто к кому очень плохая связь.

    21.01.98

    Работает с MSIE 4.0, NN 3.04 и AppletViewer для Windows 95 и NN 3.02 для Solaris. Пишите мне подробно об ошибках в игре! Не работает с NN 2.02 ("мусор" в list) и NC 4.04 (NullPointerException, не понимаю, почему). На остальных платформах/браузерах не пробовал.

    18.01.98

    Идея: зачем рисовать заново все 32 карты, когда я двигаю только одну? Теперь вся графика гораздо быстрее, но какая-то ошибка в самой игре: взятки отдаются неправильно. Займусь завтра. Увеличил текстовое поле из-за UNIX-овского Netscape.

    17.01.98

    Как делаются русские буквы в апплетах? Пишите все русские Strings (напр. названия кнопок) в кодировке CP-1251 и компилируйте Ваш апплет так: javac -J-Dfile.encoding=Cp1251 Pref.java. Можно также писать в KOI8_R, Cp866, 8859_5 или MacCyrillic. Чтобы AppletViewer правильно показывал под Windows русские буквы, надо поместить в \java\lib\ файл font.properties. Вот еще функция, которой я делаю латинские буквы из Unicode для тех пользователей у которых нет поддержки русского языка:

    String lat (String uni)                 // перевести Unicode в латиницу
    {
        String ABCDE = "ABVGDEZZIJKLMNOPRSTUFXCCWW'Y`EUQabvgdezzijklmnoprstufxccww'y`euq";
        StringBuffer str = new StringBuffer (uni);
    
        for (int i = str.length () - 1; i >= 0; i--)
    
            if ((int) (str.charAt (i)) >= 0x0410 &&             // от "а"
                (int) (str.charAt (i)) <= 0x044F)               // до "я"
    
                str.setCharAt (i, (ABCDE.charAt ((int) (uni.charAt (i)) - 0x0410)));
    
        return str.toString ();
    }
    
    16.01.98

    Вроде можно играть и в мизер (и в мизер без прикупа).

    15.01.98

    Уже можно кое-как играть (3 человека). Вставил тайм-аут: отключение через 10 минут, тех, кто ничего не делает. Сделал шрифт в текстовом поле поменьше, а то под Solaris в NN 3 нижней половины букв не было видно. Пока нет: проверки какую карту можно класть (надо следить самому пока), подсчета очков (надо считать самому пока, считает только взятки), тайм-аута на стороне сервера. Проблемы с java.awt.List у NN 2.02 для Win 95, это bug? Как это обойти? NC 4.04 для Win 95 рус. не показывает русские буквы в текстовых полях java.awt.TextField и java.awt.TextArea, а AppletViewer - в графике drawString (). Не знаю как исправить.

    13.01.98

    Прикуп и вистование готовы, вожусь с самой игрой. Правая кнопка мыши упорядочивает карты, средняя еще и сортирует (пока плохо, улучшу позже). На Макинтоше для этого вроде бы надо нажимать [META] или [ALT] и одновременно щелкать мышью.

    26.11.97

    Закончил торговлю, вожусь со сносом и вистованием.

    26.10.97

    Сделал раздачу карт (появляются когда есть 3 игрока) и теперь работаю над торговлей. См. также неплохую страницу.

    22.10.97

    Играть все еще нельзя, но работает чат (переписал заново сервер, чтобы можно было печатать по-русски - unicode; также исправил отсоединение игроков).

    29.09.97

    До 15 октября я в Питере или Горьком.

    09.09.97

    Проклятая сессия кончилась и я начинаю ковыряться с графикой. Завел себе UIN 3252017.

    26.07.97

    Okay, в третий и последний раз начну все с нуля, на этот раз с русским шрифтом и картами-картинками. (Пока не работает ничего).

    15.07.97

    Добавил сортировку карт. У меня сессия, поэтому на преф сейчас мало времени. (Вообще-то запуск сервера через CGI - это не самый лучший вариант. Когда будет готова сама игра, сделаю inetd-вариант преф-сервера).

    13.06.97

    Попытался сделать pref также в виде аппликации, чтобы обойти firewall. Не удалось: security restriction, мешающее в NN и MSIE отпало, но firewall не позволяет установить TCP-connection. Изменил pref-сервер: теперь если в течении 15 минут ничего не происходит, он закрывает связь ко всем игрокам и выключается сам. Если потом приходит новый игрок, то после неудачной попытки связи с pref-сервером, он автоматически запускает сервер через CGI и пытается соединиться еще раз. Это удлиняет время инициализации в таких случаях, но дает 2 плюса: уменьшает ненужную нагрузку на WWW-сервер и мне не нужно запускать pref-сервер вручную, если он по каким-то причинам выключился - через короткое время он сможет запуститься сам. Все еще не занялся самой игрой. Знаю, что не работает мизер, при вистовании неправильно: pas+pas и pas+pol-vista+pas. Что еще?

    08.06.97

    Нарисовал карты.

    01.06.97

    Вроде бы можно играть и в открытую. Осталось доделать мизер без прикупа, упростить мой spaghetti-код и сделать подсчет очков (пулю).

    27.05.97

    Moj novyj PC v garantijnom remonte, poetomu segodnya prishlos' zaderzhat'sya na rabote ;-) I, po-moemu, uzhe mozhno igrat' (pol'zujtes' double click). Pravda tol'ko "v temnuyu" i o vist/pas pridetsya dogovarivat'sya v chate. Napishite mne o grubyx oshibkax.

    26.05.97

    Исправил проблему с thread security exception. Но все еще проблемы с торговлей.

    24.05.97

    Кажется, распасы работают. Напишите мне, пожалуйста, если найдете ошибки.

    23.05.97

    Торговля - это сложно. Сначала сделаю распасы (по системе "Ростов" - без прикупа).

    20.05.97

    Теперь все работает и с MSIE и, надеюсь, со всеми версиями NN. Ковыряюсь c торговлей.

    16.05.97

    Теперь можно изменять размер окна NN, не вылетая из игры.

    13.05.97

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

    05.05.97

    Уже умеем кое как раздавать карты. Если Вы позже собираетесь играть, можете прислать мне свои e-mail адреса, а лучше talk (wintalk) и/или ICQ-адреса, и я помещу их здесь.

    02.05.97

    Си-сервер готов и Ява-чат работает без проблем. Сейчас я занимаюсь самой игрой. C MSIE почему-то проблемы: не показываются Listы.


    Pref News alex@kawo2.rwth-aachen.de ICQ 3252017 talk alex@alex.kawo2.rwth-aachen.de

    Реакция на java-преф: + + + + + + + +


    Русская Литература в Интернете: Россия, Америка.