2014年11月22日

SWI-Prolog-Editor

今いる研究室では、Prologが使われている。
当たり前だけれども、それが問題なわけではない。
ただ、それでもTeraPadで書くというのは、さすがにどうなのよ?と思うわけである。
しかもそれ、Perlモードだから。(拡張子が.plのため)

というわけで、軽くエディタを調べてみることにした。
真っ先に出てきたのはEmacsだったが、TeraPadを使っているのでちょっと、と思ってしまった。
次に出てきたのがこれ、SWI-Prolog-Editor
名前の通り、SWI-Prologを前提とした開発環境。
エディタの説明は上のリンクから公式サイトに行ってもらうとして、入れる際の注意と入れたあとの注意を。
・32bitのSWI-Prologしか対応してない。別に64bit OSでも32bitのPrologが動くのでそっちを入れれば良いけれど、なんかもやっとすると言うか・・・
・言語設定ファイルが読めるので、日本語翻訳したものを突っ込むとインストールからエディタの起動まで全部日本語でできる。ただし一部の記述のフォントが違うせいで、その部分で文字化けする。
・設定(Configuration)は一度エディタを再起動しないと反映されない。フリーカーソルモードは使わない人も多いだろう。あと括弧の対応表示はほしいところ。設定して、再起動。XPCEのマニュアルがないと保存時に(ドイツ語で)文句を言ってくるけれど、別に普通に動くので問題ない。
・フォントの設定はメニューの設定の真上か、エディタ画面で右クリック。なんで設定の中じゃないんだろう。
・構文要素を斜体(italic)にすると、こいつが斜体にしたときの幅を再計算しないために文字がめり込む。Pとか。できれば全部斜体は解除することをオススメ。

あと思いついたらいくつかここに書く。
言語設定ファイル(一部翻訳不完全・適宜更新)はここに置いておくので必要な人は持っていってほしい。
文字化け対策で、その部分だけ英語にしようかなと考え中。
posted by chiguri at 23:50| Comment(0) | PC

2014年10月24日

Squid、透過多段プロキシの試行

今いる研究室は、大学のネットワークポリシーの関係上、直接ではなく大学のプロキシを通してしかインターネットにアクセスできない。
ああ面倒くさい、家のネットワークと大学のネットワークで切り替えなければならんのか、と思いながら過ごして半年、嫌になってプロキシの自動検出(WPAD、DNSの方)を導入した。
これで良いか、楽になったな、などと思っていたら、なぜかFirefoxが「ネットワークが切り替わったとき」に自動判別をしないという非常にアホな仕様だったので、やはり不便が微妙に解消されない。
本気でChromeとかIEにしてやろうか、などと思ったりもした(これらはネットワークが切り替わると自動で判別しにいく)。
え、FirefoxからIEの情報を見に行け?使ってみれば分かるが、自動検出はプロキシの設定をしないのと同じ扱いになる。無用の長物もここに極まれり。

とりあえずブラウザの切り替えは悩むとして、他にないのかと考えることにした。
幸い、研究室のインフラ自体はそれなりに自由に動かして問題ないので(だからWPADを導入した)、ルーター付近で何かできないか、と思ったりした。
いろいろ調べると、透過プロキシというのがあるという。
なるほど、来たリクエストをプロキシとして通す。これなら自分でプロキシの設定がなどといわなくて良い。ゲートウェイがうまくやってくれるわけだ。

ふと気づくと、透過プロキシは直接そのサーバーがアクセスを行うものだった。調べども調べどもその用例ばかり。
これはどうだろうと考えたが、昔そういえば多段串とか聞いた。透過プロキシが多段プロキシとして動作するならどうだろうか?

というわけで、仮想サーバーとしてUbuntu、その上にSquidをインストールし、試してみることにした。
Squidの設定は普通に調べれば出る。
透過プロキシの設定は、待ち受けポートにtransparentを付けるだけ。あとはiptablesで80番ポート行きのパケットをむりやりその待ち受けポートへ投げる。
多段プロキシの設定は、親のプロキシの設定及びアクセス方法を親のプロキシ経由のみに限定。
やってみたところ・・・ビンゴ!
透過多段プロキシによって、プロキシを設定しなくてもHTTPアクセスができるようになった。

・・・80番ポート?あれ、HTTPSは?

調べたら、Squidでの透過プロキシはHTTPSに対応できない、とのこと。
夢、絶たれる・・・

redsocksという(透過)SOCKSプロキシに、なにかHTTPSプロキシがどうの、と書かれているのを見つけたので、機会を見つけてそちらもチャレンジしてみよう。
あ、ちなみに大学のプロキシはSOCKSプロキシではないので、いろんなSOCKSプロキシ通すもの(widecapとかいろいろあるらしいが)は全て使えない。
redsocksも当然SOCKSプロキシとしては使えないわけだが・・・HTTPS使えればだいぶ違うし・・・


おまけ:SOCKSプロキシかどうかはcurl -x socks5://hogehoge という感じでcurlを使ったproxy設定をすることで確かめた。便利だ。覚えておこう。
posted by chiguri at 00:03| Comment(0) | PC

2013年11月19日

そしてまたSML#

もうあきらめたって良いと思うんだが。
SML#のビルドを試してみた。1.2.0。
どうでもいいつまらないことで詰まったのでメモ。

今度はpaxかcpioがないとダメだと言われた。
多分前も言われた。
mingw-getで入るのはbsdcpio.exeとかで、コピーして使った。
なんかしらんがlibz-1.dllがないとか言われたのでlibz1.dllの名前を書き換えてWindowsフォルダにたたき込んだ。
いろいろダメな気がする。

・・・あれ、でも割とすんなり終わった。時間はかかったけど。
posted by chiguri at 02:12| Comment(0) | PC

2013年02月27日

Agdaのインストール

ダウンロードしてインストールするだけ。

しかし、これをやるとpre-compiledなAgdaをインストールできない(特にWindows。pre-compiled AgdaがHaskell Platformを入れるから。)。

まあ、しかしHaskell Platform入れてればcabalで簡単にインストールできるからよしとする。


ただし、Haskell Platform 2012.4.0.0に入ってるcabalはUTFの扱いがおかしいのか、エラーを吐く。

教えてもらった対策は二つ、cabalを新しくするか、set LANG=Cで解決する。

cabalはcabalで新しくできるが、そのためには後者が必要。

あとは、Win Vista以降だと管理者でやらないと--globalがこける。


誰に宛てた物でもないただのメモなので、読みにくいとか言われても困る。

posted by chiguri at 19:36| Comment(0) | TrackBack(0) | PC

2012年09月01日

SML#をビルドし・・・ようとした。

以前使ってみようとしたときにlibgmpがないことがわかっていたので、先にmingw32-libgmpを入れてみた。

だが、思わぬところ(configure)で時間かかってしまった。

bash上で./configureをすると、-lgmpがどうのこうのといってくる。


またお前か!


で、いろいろ調べたらmingw32-gmpというパッケージがあり、それを入れたら通った。

その割に、configureの最後にエラーが出たのが気になるのだけれども・・・

まあ、とりあえずml.grm.smlのコンパイルで詰まったようだ。

posted by chiguri at 16:56| Comment(0) | TrackBack(0) | PC