とりあえずRuby(とC#も)を使えるようになりたいと思った

パソコン歴だけはFM-new7から始まって無駄に長い私。言語は

  • BASIC 触っただけ
  • C 同上
  • Perl 掲示板などが自分で作れた事に感激。
  • Ruby Perlの似たものとして触ってたら、なんとなく好きに
  • C# よさげなのですが、まだIDEへの恐怖感が取れていないというレベル。

Apache2設定

useridirとDigest認証を使ってみようと思いました。apache2.confをあまり触らず、site-enable以下のサイト設定をいじるのがどうも良い雰囲気なのでそうすることにしました。

$ sudo cp /etc/apache2/site-available/default /etc/apache2/site-available/test
$ sudo a2dissite default
$ sudo a2ensite test

デフォルトの設定ファイルをtestという名前でコピーして、defaultファイルを起動しないようにして、testファイルを起動するように設定。

$ sudo a2enmod userdir

これでuserdir.loadとuserdir.confがmods-availableからmods-enableにシンボリックリンクされます。userdir.confの設定を変えないままだと、ホームディレクトリの下のpublic_html以下を使用できるようになります。

$ sudo a2enmod auth_digest
$ sudo htdigest -c /etc/apache2/.digestpass "secret" username
$ sudo htdigest /etc/apache2/.digestpass "secret" username2

auth_digestモジュールをリンク後、ダイジェスト認証用のパスワードファイルを作成。ここの"secret"というのはrealmと呼ばれるもので、とりあえずは後に設定するAuthNameと合わせる必要があります。

$ sudo vi /etc/apache2/.group
GroupName: username username2

グループファイルを作成し、登録しやすくする

$ sudo vi /etc/apache2/site-available/test

AuthType Digest
AuthName "secret"
AuthUserFile /etc/apache2/.digestpass
AuthGroupFile /etc/apache2/.group
Require group GroupName
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On

以前はAuthUserFileの部分は、AuthDigestFileと書く必要があったそうですが、現在はAuthUserFileで動く模様です。最後のBrowserMatchの部分はIE7より前だとURLによってはうまくDigest認証ができなかったIEのバグを回避するためのものです。

やけくそでipv4化

とりあえず良く使うwgetや、使うかもしれないsylpheedを無理やりipv4で使えと指定してみることにしました。本来はこんな事をするのは間違いだとは思いますが、まあためしにやってみます。

$ wget -4 hoge.tar.gz

でも良いのですが、オプションを編集することにしました。

/etc/wgetrc
~/.wgetrc

のどちらかに以下の一文を追加します。

inet4-only = on

次にsylpheedですが、見た感じ設定でどうにかなるのかが分かりませんでした。仕方ないのでソースをリビルドしてみます。

$ apt-get soruce sylpheed
$ cd sylpheed-2.3.0~beta5
$ vi debian/rules

debian/rulesの--enable-ipv6の所を

--enable-ipv6=no

と変更

$ debchange -i

リビジョンを変更してリビルド

$ dpkg-buildpackage -rfakeroot -uc -b

なんだかエラーがでて怒られて終了。どうも作成時に使用するファイルが足らないような感じ。というわけでsylpheedの依存ファイルをインストール

$ sudo apt-get build-dep sylpheed

なんだか結構な数のファイルを入れようとしますがOKしてしばらく待つ。

$ dpkg-buildpackage -rfakeroot -uc -b

そして再びリビルドしてみましたら止まらずに最後までいきました。

$ sudo dpkg -i ../sylpheed_2.3.0~beta5-2_i386.deb

そしてインストールしてみたところ、うまくいきました。

正月も注射

いつもは車で60分、駐車場が開くまでまつのに30分といったところでしたが、さすがは正月車で40分、駐車場はガラ空きで0分でありました。いつもはこれぐらいならばいいのに。
普段、注射の場合インターンか何かですか?というぐらいの新人さんが担当するのですが、以前入院したときの主治医が担当しておりました。しかし以前やった新人さんのほうが注射の腕は上のほうな気がします・・・

ネット使用時に名前解決がとても遅い

以前やったような気がしていたのですが、やってなかったようでDNSに問い合わせに行くたびにものすごい時間がかかっていました。確かipv6で問い合わせてるのが原因の筈なのでそのへんをなんとかすればいけるでしょう。

$ sudo vi /etc/modprobe.d/aliases

上記ファイルの一行を編集

alias net-pf-10 ipv6 

このipv6という部分をoffに変更

alias net-pf-10 off

これで再起動かけたらいけるはずなのですが、変わった様子がありません。

$ sudo update-modules

なんてこともしてみたけれど変わらず。ipv4にはなってると思うのですが・・・あらら以前どうやったっけな。

ircd-irc2のリビルド

なんとなくローカルにircdを入れて遊ぼうとしましたが、ircd-ircu ircd-irc2のどちらのパッケージもiAUTHなどで哀しいぐらい接続に時間がかかってどうしようもないので、設定などを見ても正直なところ何とかできそうな雰囲気がありませんでした。
仕方がないのでソースパッケージからリビルドという奴に初めて挑戦してみようと思い立ったのでありました。

まずは準備。パッケージ作成用ツールを入れる。

$ sudo aptitude install build-essential dh-make devscripts fakeroot

いつの日か自作パッケージを作る日のために、ポリシーのチェックを行うlindaを入れる。

$ sudo aptitude install linda

ソースを取得し、変更を行う。

$ apt-get source ircd-irc2
$ cd ircd-irc2-2.11.p1+dfsg
$ vi debian/maint/config.h

config.hの以下を変更。IAUTH, IDENTの拒否。split-modeに入らないようにしてみました。

#undef USE_IAUTH
#define NO_IDENT
#define SPLIT_USERS 0
#define SPLIT_SERVERS 0
#define ACCEPTTIMEOUT 10

とりあえず変更したのでリビジョンを変えてみる

$ debchange -i

するとChangelogが開かれるので適当なことを追加して編集を終了する。そしてパッケージの作成。

$ dpkg-buildpackage -rfakeroot -uc -b

するとソースパッケージを展開した所にdebファイルなどができるのでインストールして終了

$ sudo dpkg -i ircd-irc2_2.11.1p1+dfsg-2_i386.deb

何か問題があるのかもしれませんが、とりあえず動いているようです。

Refeおよびrefe.elのUTF-8化

使えるようになったのですが日本語が文字化けします。どうもEUCで表記されるのが問題のようですので、UTF-8化をはかります。

12c12
<
---
> require 'iconv'
22c22
<         str
---
>         Iconv.iconv("UTF-8","EUC-JP",str)

上記のパッチ(searcher.patchとでも名づけますか)をsearcher.rbにあてます

$ cd /var/lib/gems/1.8/gems/refe-0.8.0.3/lib/refe/
$ sudo patch searcher.rb searcher.patch
$ sudo vi /usr/share/emacs/site-lisp/refe.el
  (let ((coding-system-for-read 'utf-8))
14行目のeuc-japanをutf-8に変更

これでコンソールでもemacsでもrefeが使えるようになりました。

$ refe Date.now
DateTime.now
--- now([start])
    現在の時刻に相当する日時オブジェクトを生成します。

M-x refe
Class or Method (default 0): Date.now
DateTime.now
--- now([start])
    現在の時刻に相当する日時オブジェクトを生成します。