nDiki : 1999年01月20日

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 (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

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

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

follow us in feedly

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