2009-11-22

Сборка NetHack в MSYS/MinGW (Windows).

Давно хотел собрать NetHack в Windows ради спортивного интереса.
  • Получил исходные тексты: http://nethack.org/v343/download-src.html.
  • Получил работающую среду MSYS/MinGW: http://www.mingw.org.
  • Почитал nethack-3.4.3/sys/winnt/Install.nt. Встретил команду mingw32-make -f Makefile.gcc install, но как оказалось Makefile.gcc рассчитан на использование SHELL = cmd.exe, как я понимаю mingw32-make. Я же решил собирать make с SHELL = /bin/sh.
  • В Makefile.gcc установил значение переменной GRAPHICAL в "Y" для сборки также и GUI версии.
  • Запустил nhsetup.bat (скрипт кроме всего копирует Makefile.gcc в nethack-3.4.3/src)
  • Поправил nethack-3.4.3/src/Makefile.gcc с win-shell (cmd.exe) на unix-shell (/bin/sh):
    $(subst /,\,copy nhdat $(GAMEDIR))
    на
    cp nhdat $(GAMEDIR)
    регулярным выражением s=$(subst /,\\,copy \(.*\))=cp \1=
  • $(subst /,\,if exist $(GAMEDIR)/makefile del $(GAMEDIR)/makefile)
    на
    [ -f $(GAMEDIR)/makefile ] && rm $(GAMEDIR)/makefile || :
  • @copy $< $@
    на
    cp $< $@
    подстановкой copy на cp
  • $(subst /,\,@if not exist $(GAMEDIR)/*.* echo creating directory $(GAMEDIR)) $(subst /,\,@if not exist $(GAMEDIR)/*.* mkdir $(GAMEDIR)) $(subst /,\,@echo directory created > $@)
    на
    mkdir $(GAMEDIR)
  • И т.д.
  • Затем запустил сборку:
    $ cd nethack-3.4.3/src $ make -f Makefile.gcc install
  • В каталоге nethack-3.4.3/binary появились NetHack.exe и NetHackW.exe.
См. также

2009-11-08

Мои настройки blogger.

Я записал полезные настройки blogger, что б не забыть.

Первым делом при создании нового блога на blogger я устанавливаю эти настройки!

  • Отключить WYSWYG редактор.
    Settings ==> Basic ==> Show Compose Mode for all your blogs? ==> No.
    Я редактирую статьи в чистом HTML для полного контроля над видом статьи (WYSWYG редактор вставляет свои теги, они могут портить вид).
  • Включить ссылки быстрого редактирования статьи.
    Settings ==> Basic ==> Show Quick Editing on your Blog? ==> Yes.
    Не то что б я их использую, но оставил в шаблоне код, который создает их.
  • Открывать новую странице для создания комментария.
    Settings ==> Comments ==> Comment Form Placement ==> Pop-up window.
    Уменьшается использование площади страницы и чуть чуть сохраняет трафик тем кто не собирается оставлять комментарий.
  • Только авторизированные пользователи могут оставлять комментарии.
    Settings ==> Comments ==> Who Can Comment? ==> Registered Users.
    Нет anonymous. Не забудьте включить OpenID!
  • Отключить backlinks.
    Settings ==> Comments ==> Backlinks ==> Hide. Settings ==> Comments ==> Backlinks ==> Backlinks Default for Posts ==> New post do not have backlinks.
    Мне они не нужны (я даже удалил код из шаблона, который создает backlinks).
  • Использовать CAPTCHA.
    Settings ==> Comments ==> Backlinks ==> Show word verification for comments? ==> Yes.
    Остановим спам!
  • Сообщать о новых комментариях по email.
    Settings ==> Comments ==> Backlinks ==> Comment Notification Email ==> <Enter emails>.
    Мне нужно знать что кто то оставил комментарий.
  • Не вставлять <br/> после LF.
    Settings ==> Formatting ==> Convert line breaks ==> No.
    Я хочу иметь полный контроль дан содержимым статьи.

2009-11-04

Переименование пользователя в Linux.

Необходимо переименовать пользователя и его домашний каталог.
Собственно переименовать пользователя легко (используется дистрибутив Debian). От имени root выполняем команды:
# groupmod --new-name newuser olduser # usermod --login newuser --home /home/newhome olduser
Перемещение домашнего каталога командой mv не ограничится:
# mv /home/oldhome /home/newhome
Множество программ, используемых пользователем, использует файлы настроек (dot-файлы). Их придется править вручную ((. В каждом случае решение о правке приходится принимать человеку на основании знания форматов конфигурационных файлов.

Находим все вхождения слова olduser в конфигурационных файлах:

# find /home/newhome -maxdepth 2 -type f | xargs grep -Hn
Обычно пользовательские конфигурационные файлы находятся в корне домашнего каталога пользователя или в соответствующем подкаталоге. Потому глубина поиска ограничена 2.

Можно было использовать следующий способ поиска вхождений:

# grep -Hn user .* .*/*
правда некоторые программы отклоняются от стандартов именования конфигурационных файлов (или каталогов с конфигурационными файлами) - их названия не начинается с точки (dot).

Я для правок использовал команду Emacs grep-find, это позволяло мне быстро переходить в место вхождения заменяемого слова:

C-x d C-a C-k /home/newuser RET С-x grep-find grep -Hn user .* .*/* RET C-x ` =edit= C-x ` =edit= C-x ` =edit= C-x ` ....
Приятного Вам переименовывания пользователей!