nDiki : 1999年01月中旬

1999年1月19日 (火)

昨日友人東芝 Satellite 2520 を購入

いきなり昨日の話。本日誌は今日からだからご愛敬。

昨日、友人ノートパソコン購入に同行。 日曜日にいって ThinkPad i Series が欲しかったらしいが、生産終了の札ばかりで、品物がなかったらしい。 6時間も歩いたとのこと。

結局、昨日 東芝 DynaBook Satellite 2520を購入。 東芝を薦めたのは私の好みによるところが大きい(笑)。

個人的にはオールインワンは大きくて好みではないのであるが、初心者にはやはり便利であろう。 本人も内蔵モデルを希望していた。 内蔵されている CD-ROM ドライブCD-ROM をいれている姿をみると、やっぱりPC カードを挿してどうのというよりは楽だねと感じる。 でも CD-ROM ドライブ、薄いだけあってなんかちょっと力をいれるとバキッといきそう。 壊れても内蔵はリプレースするのが大変なんだよね。

パッケージを開けて気がついたのだが、このモデル内蔵モデムがないのね。 てっきりあると思っていた。 この友人クレジットカードをもっていないので、今日済ませてしまう予定だった(勝手に私が考えていただけ?)ISP へのオンラインサインアップどのみちできなかった。 うーん、とりあえず余っている PC カードモデムかしてあげたほうがいいかな?

スポンサード リンク

なぜこの日誌を始めるのか

  • 知人の日記ページをみて楽しいから。
  • でも、プライベートは話は書きたくないし、
  • でも、計算機ネタで書きたいことはある。
  • それなら誰か役にたつかもしれない。
  • それに困った事を書いておけば誰かコメントしてくれるかもしれない。
  • あと、内容まとまったらその部分をページのネタにできるから。

果たして長続きするだろうか。


[ コンピュータ日誌 ]

mirror-2.9, put の chmod 不具合

WWW ページ管理の仕事で mirror 2.9 を利用しているのだが、いままでアップロード(put)時にサーバ側で chmod がうまくできないでいた。 相手 FTP サーバは FTP server (Version wu-2.4(7) Tue Jun 9 21:37:03 JST 1998)。 ftp で chmod すると

 501 CHMOD: Mode value must be between 0 and 0777

というエラーになってしまう。 どうやら Perl の関数でローカルのファイルの mode を取得した時のものをそのまま送ってしまっているのが問題のようだ。

mirror の 3419行目

 # Convert from octal
 # Suggested patch to limit bits being set
 # $mode = $mode & 0777; ここ!

のコメントマークを外して有効にすると chmod 成功するようになった。

[ 1月19日全て ]

1999年1月20日 (水)

Squid-2.1.RELEASE-src.tar.gz へ更新

自機 Linux on PORTEGE 7010CT の SquidSquid 2.0/PATCH 2 から更新。

 $tar zxvf squid-2.1.RELEASE-src-tar.gz
 $cd squid-2.1.RELEASE
 $./configure --prefix=/usr/local/squid
 $make all
 #su
 #mv /usr/local/squid /usr/local/squid-old
 #make install
 #rm /usr/local/squid/etc/squid.conf
 #ln -s /etc/squid.conf /usr/local/squid/etc/squid.conf
 #cp /usr/local/squid/bin/RunCache /usr/local/squid/bin/RunCache.original
 #cp /usr/local/squid-old/bin/RunCache /usr/local/squid/bin
 #mkdir /usr/local/squid/cgi-bin
 #cp /usr/local/squid/bin/cachemgr.cgi /usr/local/squid/cgi-bin

squid.conf は /etc/squid.confにおくようにしている。 また RunCache で起動すると DNS のチェックを行うのだが、これだとネットワーク未接続時に DNS が接続できずエラーになってしまう。 ノート PC では、ネットワークに接続していないこともあるのでこれは困る。 ので、同スクリプト中の squid の呼び出しに -D オプションを追加している。 また logdir を /var/squid にし squid.outを同ディレクトリに出力するようにしている。

また既に前のインストール時に、

 #mkdir -p /var/squid/logs
 #chown -R nobody:nogroup /var/squid

などの設定が済んでいる。また Apache の設定として srm.conf に

 ScriptAlias /Squid/cgi-bin/ /usr/local/squid/cgi-bin/

を追加し、access.conf に

 <Location /Squid/cgi-bin/cachemgr.cgi>
   order deny,allow
   deny from all
   allow from localhost
 </Location>

Perl で lex/yacc

最近 Perl で字句解析ルーチン生成系/構文解析ルーチン生成系を作ろうかな、などと考えている。 前にもやろうと思っていたのだが、なにもしていなかった。なぜ Perl でかというと、

  • C/C++言語にはすでに存在する(flex/bison)。
  • Perl にはいいものが存在しない(知らない)。
  • flex/bison はC/C++のものしか生成できない。
  • これは動的に生成し利用すること、また動的に変更することが考慮されていない。
  • Perl なら実行時にサブルーチン定義したり eval できたりする。
  • Perl なら気が楽。

などが理由であろうか。 また自分の研究で設計している言語を Scheme 上で実装しようかなと思っているが、その字句解析ルーチン生成系/構文解析ルーチン生成系が欲しい(あることにはあるが)。 一旦 Perl で生成系を自作しておけば、簡単に他の言語の解析ルーチンを生成できるように拡張できるであろう(と考えたい)。

動的な側面が念頭にあるのは、自分の研究がそういうことをやっているから。

とりあえず lex/yacc(flex/bison)互換/ライクなものを作る予定である。 これらはそれぞれ仕様記述のファイルを読み込んで解析ルーチン(解析用テーブル)を生成する。 ので、とうぜんこの仕様記述言語の字句解析ルーチン/構文解析ルーチンが必要である。 手で書いてもいいのだが、それも面倒だ。 当然字句解析ルーチン/構文解析ルーチン生成系が欲しい。 しかしまだない。 これから作ろうとしているものそのものだから。

方法としては、

  • Perl で手書きで解析ルーチンを作る。それで Perl 用生成系の仕様記述を読ませて、置き換える。
  • Perl の既存の生成系を使う。
  • flex/bison を使って C/C++ 版を作成。その後その生成系で Perl 用生成系の仕様記述を読ませる。

などが考えられる。今回はとりあえず一番最後の方法をとろうと思う。 ただし実際には完全に C/C++ で作るのではなく、字句解析/構文解析ルーチンを flex/bison で生成し、それを Perlエクステンションとして、Perl から呼べるようにすることにする。こうしておけば、

とすることができる。最初のものを全部 C/C++ で書くと、解析ルーチン生成部を C/C++Perl で2回書かなければならないが、この方法ならその部分は Perl で書いておけるので2度手間にならないであろう。

ということ一昨日は flex のコードを眺めて、昨日は Perl エクステンション書き方を調べてみている。 flex で吐いたファイルをそのまま Perl エクステンションのコードとは当然できないので、そのトランスレータをまず作ることする。

[ 1月20日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・PO をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.047126s / load averages: 0.35, 0.38, 0.40
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker