【備忘録】FreeBSD&プログラミング言語

FreeBSD、プログラミングで忘れた頃に見直すメモ
【   目次   】
 

2004-09-12 FreeBSDメモ・JNetHackで遊ぶ

FreeBSDメモ・JNetHackで遊ぶ

FreeBSDNetHackというゲーム日本語版を入れる。

内容は、ダンジョンを探検するRPG風のゲーム

  1. portsでjapanese/nethack34をインストール
  2. テキスト版でやるなら、「.jnethackrc」というファイルを作り、「OPTIONS=windowtype:tty」と記述する。
  3. コマンドラインで「jnethack」と入力すればゲームが始まる。
  4. ゲーム中は?でヘルプが見れるのであとは適当に・・・

あとは、スポイラーという物をネットで検索すると便利。

2004-07-28 オブジェクト指向スクリプト言語Ruby・メモ

RubyCGIスクリプトを作る下準備・cryptを使う・改

前回(http://d.hatena.ne.jp/BeForU/20040704)のバグフィックス

checkpwdの引数が空だとエラーになるので対策。(一応nilの時も考慮)

def checkpwd(chk, pwd)
  # ↓この行だけ追加
  return false if chk == nil || chk == "" || pwd == nil || pwd == ""

  if pwd =~ /^\$[0-9]\$([A-Za-z0-9\.\/]+)\$([A-Za-z0-9\.\/]+)$/ # MD5
    salt = $1
  else
    pwd =~ /^([A-Za-z0-9\.\/]{2})/ # MD5以外は一般的なDESとしてみる
    salt = $1
  end

  if pwd == chk.crypt(salt)
    return true
  else
    return false
  end
end

2004-07-23 FreeBSDメモ・crontabの使い方

FreeBSDメモ・crontabの使い方

crontabを使ってコマンドを定期的に実行させる。

  1. 「crontab -e」でエディタを起動。
  2. 「/etc/crontab」ファイルも参考にして編集。
  3. 「crontab -l」で確認。
  4. 必要無くなったら「crontab -r」で削除。

設定例

  • 「15,45 * * * * コマンド」で15分と45分に起動。
  • 「30 1-6 * * * コマンド」で1〜6時30分に起動。

備考

  • 環境変数が設定されてないのでSHELLやPATHぐらいはセットする。
  • メール通知が一切要らないならコマンドの所は「コマンド > /dev/null 2>&1」

2004-07-12 オブジェクト指向スクリプト言語Ruby・メモ

RubyCGIスクリプトを作る下準備・Rubyからsendmailを使う・改1

前回 http://d.hatena.ne.jp/BeForU/20040705 の改造。

SubjectをBase64でエンコードしてみるVersion。

FreeBSD + Ruby1.8.1 だとencode64でバグがある。→ http://www.daifukuya.com/kagemai/guest.rbx?project=kagemai&action=view_report&id=210

encode64→Base64.encode64にしたら動いた。他のOSは知らない。

#!/usr/local/bin/ruby

#
# Rubyからsendmailを使うデモ
#

SENDMAIL = "/usr/libexec/sendmail/sendmail" # sendmailのパス

def sendmail sm_from, sm_to, sm_cc, sm_bcc, sm_sub, sm_com
  require "kconv"
  require "base64"

  sm_sub = sm_sub.tojis
  sm_sub = Base64.encode64(sm_sub)
  sm_sub.chomp!
  sm_sub = "=?ISO-2022-JP?B?#{sm_sub}?="
  sm_com = sm_com.tojis

  IO.popen("#{SENDMAIL} -t", "r+") { |io|
    io.print "From: #{sm_from}\n"
    io.print "To: #{sm_to}\n"
    io.print "Cc: #{sm_cc}\n" if sm_cc != nil
    io.print "Bcc: #{sm_bcc}\n" if sm_bcc != nil
    io.print "Subject: #{sm_sub}\n"
    io.print "MIME-Version: 1.0\n"
    io.print "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n"
    io.print "Content-Transfer-Encoding: 7bit\n"
    io.print "\n"
    io.print "#{sm_com}\n"
  }
end

# from@hoge:差出人、to@hoge:宛先
sendmail("from@hoge", "to@hoge", nil, nil, "テストメール", "テスト")
 
Google