Gauche > Archives > 2009/11/16

2009/11/16 00:14:00 UTCshiro
#
齊藤さんいるかな。mingwでgdbmを使われているようですが、このgdbmはmsysのやつですか? それともmingw dllで動作するように独自コンパイルしたやつですか? msysのgdbmだとすると、動かすにはmsys dllが必要ですよね?
#
mingw版のバイナリ配布をする場合、msys dllには依存できないので、どうしようか考えてます。
2009/11/16 01:04:56 UTCshiro
#
というかそもそもうちのmingw+msysでgdbmがなんか動かないぞ…
2009/11/16 01:56:07 UTC齊藤
#
スタティックリンクしました。
#
gdbm のコンパイル時に --disable-shared にしてます。
2009/11/16 02:00:40 UTCshiro
#
なるほど。ソースからコンパイルしたってことですね。
#
mingw+msys下で普通に./configure+makeでした?
2009/11/16 02:10:16 UTC齊藤
#
--prefix=/mingw もつけとかないと gcc が探してくれません。 コンパイル時オプションはそのふたつだけです。
2009/11/16 02:15:38 UTCshiro
#
了解です。gdbmはGPLなんで、バイナリ配布するとしたらgdbmをスタティックリンクしたモジュールを本体とは別に配布することになるかなあ。
2009/11/16 02:31:02 UTCshiro
#
むむ。flockにまつわる定義が見つけられなくてfailするな > gdbm on mingw
#
msys絡みで足りないものがあるのかな?
2009/11/16 03:56:28 UTC齊藤
#
どこかにパッチがあったかも。
#
http://www.openldap.org/lists/openldap-bugs/200402/msg00012.html
2009/11/16 03:59:58 UTCshiro
#
どちらにせよ別配布になるので、とりあえず0.9は現状で出しちゃう方向でいます。
2009/11/16 06:30:42 UTCshiro
#
これすんごく面白い: http://www.cowlark.com/2009-11-15-go/ Google Goと「ある言語」との比較 (言語マニアならどの言語かすぐにわかっちゃうけど)。
#
しかし、concurrencyの言語レベルでのサポートっていうのは、一巡するのかなあ。Schemeも一番最初のやつにはconcurrencyの組み込みサポートがあったんだよね。いつの間にかなくなってしまった。
2009/11/16 07:09:45 UTC(び)
#
R3RSからしか知らない...
2009/11/16 07:16:49 UTCyuumi3@twitter
#
最後まで読むと面白い!RT : shiro: これすんごく面白い: http://www.cowlark.com/2009-11-15-go/ Google Goと「ある言語」との比較 (言語マニアならどの言語かすぐにわかっちゃうけど)。
2009/11/16 07:21:33 UTChigepon
#
おもしろい> Brand X
2009/11/16 07:41:02 UTCgaraemon
#
shiroさんとhigeponさんにgoogle goに対する現状の意見を聞いてみたい
2009/11/16 07:42:45 UTCshiro
#
うーん、Goの重要は言語仕様よりむしろ実装(ランタイム、コンパイラ)だと思うんで、そこは使ってみないとわからないですね。
#
s/重要は/重要な点は/
2009/11/16 07:44:15 UTCgaraemon
#
実際使われるのかなー? というところにかなり疑問がありますが > go
2009/11/16 07:44:23 UTCshiro
#
Erlang並にスケールするならかなり使えるんじゃないかと思います。
#
外の人が使わなくても中の人がこつこつ使ってればかなり仕様実績を積み重ねられるのでは。ErlangだってEricssonの中で使われてた時期が何年もあったんじゃないでしょうか。
2009/11/16 07:53:12 UTCgaraemon
#
なるほどー
2009/11/16 07:57:40 UTCgaraemon
#
goのベンチマーク http://blog.cnu.jp/2009/11/14/go-benchmark/
2009/11/16 08:06:18 UTChigepon
#
ネイティブコンパイルってのは Google 内部の要求に思えますね。そこが Erlang と違う。
#
Erlang は自分で使っていてやっぱり遅いなと思います(腕がないからかもしれませんが)
2009/11/16 08:07:49 UTCshiro
#
Erlangはどっちかというと耐障害性に重点を置いてるような印象がありますが、そのへんはどうですか。
2009/11/16 08:08:41 UTChigepon
#
耐障害性のフレームワークはあって部品はそろっています。ただやっぱりノウハウがないとつらいなと感じます。Ericson のエンジニアにあって自分にないのはノウハウ。
#
>Erlang
#
C/C++/Java 風の文法は普及するかもと思わせますね>golang
2009/11/16 08:11:00 UTCgaraemon
#
あのシンタックスはださいな... と思ってしまうのですが... > golang
#
go-mode.elがいまいちなだけかも
2009/11/16 08:11:26 UTChigepon
#
まあそうなんですが、世の中の大半は Java プログラマーと思うと(ry
#
結局 Google は C++ はもういやになったのかもしれませんね。20 % プロジェクトから昇格させたって事は多少本気かもしれない。
2009/11/16 08:13:48 UTCshiro
#
シンタクスなんて飾りですよ(ry
#
コンパイル時間の問題は深刻だったんじゃないでしょうか >C++
#
私もUnreal Engine使ってた時にコンパイルの遅さに悩まされました。
2009/11/16 08:16:17 UTChigepon
#
コンパイルは分散コンパイルでどうにかしていると聞いた事があります、リンカは分散できないので gold を作ったとか。
2009/11/16 08:24:16 UTCshiro
#
分散コンパイルも起動時のオーバヘッドがあるんですよね。リンカも含めて結局は従来のC/C++のツールチェインの問題なので、そこをいじるなら言語から全部書いちゃった方が手っ取り早いという発想はありだと思います。
#
そうした場合の問題点は枯れるまで時間がかかるってことなんですが、Googleくらいの規模でがしがし使ってたらわりと早く枯れるかもしれませんし。
2009/11/16 08:26:31 UTChigepon
#
そうですね。しかし面白い物はほとんど Google からでてくるな。
2009/11/16 08:31:23 UTCgaraemon
#
しかしgoogleはなんでplan9が好きなんだろう? やっぱ分散やってるとそうなるのかなー
2009/11/16 08:37:27 UTCshiro
#
「googleが好き」なんですかね? あれだけバックグラウンドの厚い人がいれば、むしろ「関わった人たちが好き」という方が説明になっていそうな。GoについてはKen ThompsonやRob Pikeがやってるわけですし。
2009/11/16 08:38:30 UTCgaraemon
#
googleのマスタープランでplan9って結構な位置にありませんでしたっけ? http://undergoogle.com/tools/GoogleMasterPlanEN.html
#
google osの2こ右
2009/11/16 09:03:30 UTCshiro
#
なるほど。ただ、googleもあれだけ大所帯ですから、「googleはこれが好き、これが嫌い」というような主体があり得るのかなあ、というふうには思います。(会社の空気として何となくの傾向というのはあるでしょうし、また会社内での目立つ人物の好みというのが外から見えるということもあるでしょうが、「Naughty DogはLispが好き」というような話とはレイヤが違うのかなあと)
2009/11/16 09:21:14 UTCgaraemon
#
なるほどー
2009/11/16 09:26:35 UTCgaraemon
#
googleは現代のbell研みたいになってきてますねー
2009/11/16 12:24:07 UTC齊藤
#
--prefix=/mingw は gdbm の configure に必要っていうつもりだったんですけど…
#
/mingw/lib にインストールして欲しいところが素のままだと /msys/1.0/lib の方にインストールされちゃって、 gcc が見付けてくれないという感じ。
2009/11/16 12:38:41 UTCshiro
#
何らかのdbm系ライブラリが存在することはunixではデファクトだったんだけど (NISとかsendmailとかが使ってた)、gdbm系入れるのは色々面倒だなあ。*BSDはdbm系ライブラリには何を使ってるんだっけ。Berkeley DB?
#
BSDライセンスで軽いやつがあるなら、フォールバックとしてバンドルしちゃうって手もあるかもしれない。
#
今のBerkeley DBは完全にBSDライセンスと互換じゃないのかな。 http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html *BSDはforkしたのを使ってる?
2009/11/16 12:48:02 UTCshiro
#
そういえばそのへんがよくわからなくてdbm.bsddbをほったらかしにしていたような気がする。
2009/11/16 12:50:36 UTCeyasuyuki@twitter
#
http://bit.ly/353cDE これですか? RT : shiro: 今のBerkeley DBは完全にBSDライセンスと互換じゃないのかな。
2009/11/16 12:53:13 UTCshiro
#
はい。最初のライセンスの第3項は、"complete source code for the DB software and any accompanying software that uses the DB software" をつけなくちゃならないっていうcopyleft的な項目になってますね。
2009/11/16 12:59:41 UTC_enami@twitter
#
NetBSD が OS と一緒に配布してるのは db 1.85 ですね。
2009/11/16 13:01:26 UTC(び)
#
最近のBSD DBって、sleepycatからOracleに買われた奴のことを指すんですかね?
2009/11/16 13:02:17 UTCshiro
#
いや、sleepycatの時のライセンスもなんかbsdコンパチじゃなかったような気がする。
2009/11/16 13:02:53 UTC(び)
#
なるほど
2009/11/16 13:02:57 UTCshiro
#
1.85ってことはかなり前にforkしたのかな。
2009/11/16 13:03:06 UTC(び)
#
db4ってのは違うわけですね
2009/11/16 13:08:21 UTCeyasuyuki@twitter
#
QDBMもTokyo CabinetもLGPLだからだめですね
2009/11/16 13:14:23 UTCeyasuyuki@twitter
#
SQLiteバンドルってわけにはいかないか。 http://bit.ly/TsZx8
2009/11/16 13:18:25 UTC_enami@twitter
#
1.85 が import されたのが 1996 なので、13 年前?
2009/11/16 13:20:06 UTCshiro
#
SQLiteはちょっと性質が違うというか。単純なkey-value storeがあればいいわけで (まあkey value storeとして使えないわけじゃないけど)
#
fsdbmをもうちょっと真面目に実装するってのが一番無難かもしれない。
2009/11/16 13:30:31 UTC_enami@twitter
#
でも NetBSD では /etc/s?pwd.db も alias.db もそれで賄っているのでそれで大抵は足りるということかも
2009/11/16 13:33:16 UTCshiro
#
まあ、berkeley dbのトランザクションとか色々アドバンストな機能は、dbm互換として使ってる限りは必要無いわけですしね。
2009/11/16 13:44:36 UTC_enami@twitter
#
fallback っていう用途ならメンテナンスのし易さといった観点で選べばいいのかな
2009/11/16 14:17:22 UTC齊藤
#
何か妥当なものがないかと検索してたらこのチャットがひっかかった。
#
Googleさん捕捉が早いなー
2009/11/16 14:25:59 UTC齊藤
#
1.86まではBSDライセンスってことみたいですね。 < Berkeley DB
2009/11/16 20:09:53 UTCshiro
#
Windowsの日本語版使ってる方って、コンソールウィンドウ(cmd.exe)で日本語ってどうやって出してますか? うちにあるのはXPもVistaも英語版なんですが、eastern language supportを入れてもコンソールのコードページは932にできず、フォントもデフォルト以外はLucida Consoleしか出てきません。
#
chcp 65001してフォントをLucida Consoleにすればλとかは表示できるんで、単にフォントの問題だと思うんですが。
#
レジストリ見ると932にしたらMSゴシックが使われる感じなんだけど932に出来ないしなあ。
#
(chcp 932すると"Invalid code page"と言われる)
2009/11/16 20:31:58 UTCshiro
#
Consolasフォント入れてみたけどやっぱり日本語は駄目みたいだなあ。λは出る。
2009/11/16 20:34:31 UTCとおる。
#
日本語版だと Shift_JIS でだせばそのまま表示されます。たしか。
#
逆に英語版の動きをエミュレートしたい場合は、英語モードみたいなのがあったような。
2009/11/16 20:35:29 UTCshiro
#
chcpって実行すると何が出ますか。
2009/11/16 20:36:52 UTCとおる。
#
あ、いま会社なので日本語版がためせないんですけど、chcp で出てくる結果は、Windows の言語設定で設定できます。
#
会社の Windows Vista 64 は 437。
2009/11/16 20:38:02 UTCshiro
#
英語版はそうなんですよね。で、多分日本語版だと932になってると思うんですが、問題は英語版windowsで932にしようとしてもできないってところで…
#
言語設定が日本語になってないとcp932が選べない、とかそういう制約があるのかなあ。
2009/11/16 20:39:04 UTCとおる。
#
んー、アジアフォントセットをインストールしていれば、日本語にできましたよ。えっと、どうやるんだったかな。
2009/11/16 20:39:29 UTCshiro
#
というかできればunicodeで使いたいし、cp65001 (utf-8) は選べるわけで、あとはcp65001対応のコンソールフォントがあればいいって話なんですが、検索してもそういうものが出てこない。
#
(ああ、LucidaやConsolasはcp65001対応といえばそうなんだけど、CJKが入ってない)
2009/11/16 20:40:19 UTCとおる。
#
なんか、Vista の言語設定は XP とも微妙に違うみたい……。
2009/11/16 20:40:42 UTCshiro
#
コンソールなんてあんまりサポートする気が無いのかなあMS。
2009/11/16 20:54:33 UTCとおる。
#
Control Panel -> Regional and Language Options -> Administrative にある、Current language for non-Unicode programs で Japanese ってでてきません?
2009/11/16 20:54:41 UTCshiro
#
XPで日本語環境にしたらCP932が選べてフォントもMSゴシックが選べるようになりました。
#
コードページの選択は言語設定に依存するってことですね。まあレガシーのコードページだと言語を決めないと解釈できないから理屈のうえでは正しい設計か…
#
日本語環境でもコンソールをcp65001に切り替えると、選択できるフォントからMSゴシックが外れ、LucidaとConsolasだけになります。で、日本語は化ける。
#
kore
#
これ、やっぱりcp65001対応の多言語フォントファイルがひとつあればいい話じゃないのかなあ。誰か作ってないかなあ。
#
というか他のアプリでは言語設定英語でも日本語表示出来てるわけで、つまりはコンソール自体が対応しきれてない(レガシーである)ってことなのか。
2009/11/16 21:02:01 UTCとおる。
#
Lucida Sans Unicode にして、Windows API で表示するときに UTF-8 -> WCHAR に変換したら、大体の文字は表示できたんですけど、
#
Windows の言語設定を日本語にすると韓国語が出ないとか、英語にしておくと日本語も韓国語も出るとか、いまいち挙動が良くわかりません。
2009/11/16 21:02:51 UTCshiro
#
WriteConsoleWを使ったってことですか?
2009/11/16 21:03:10 UTCとおる。
#
ああ、すいません、フォントの描画です。
2009/11/16 21:03:53 UTCshiro
#
ああ、了解。コンソールのコードページはアプリから変えられるけど、フォントの設定はユーザに変えてもらわないとだめっぽい。
2009/11/16 21:04:21 UTCとおる。
#
なので、Windows API レベルで、どんな言語でもオッケーな方法って、ないんじゃないかなぁとおもって。
2009/11/16 21:05:23 UTCshiro
#
MinGWのプリコンパイルバイナリを配布するのに、できればutf-8でコンパイルしとくのがトラブるが少ないと思うんだけど、そうするとかようにコンソールで日本語が出ないということになるなあと悩んでたんです。
#
shift-jisでコンパイルしとけば日本語環境で使ってる人は日本語が見られるけど、それって日本語圏にしかメリットないし。
#
Gauchebox推奨にしてみんなMeadowから使ってもらうか。
2009/11/16 21:07:15 UTCとおる。
#
出力するときにコード変換ポートかますのを推奨するとか。
2009/11/16 21:09:07 UTCshiro
#
出力のコードページを見て932だったらshift-jisに変換するってことはできますね。ただ、cp65001にしてるユーザがutf-8 gaucheを使った場合、プログラムから見たら全てのunicode文字を素通しでいいはずなんですよ。単にフォントが対応してないってだけで。
2009/11/16 21:17:50 UTCとおる。
#
んー、おしいですねぇ。あ、でも、Windows 的には UTF-8 のバイト列は、中でいっかい WCHAR に変換しないと文字として認識できないでしょうから、UTF-8 を素通りさせるのはむりなんじゃないでしょうかね。
#
フォントを描画するときに、かならず文字単位で座標の計算をしないといけないから。
#
フォントだけで解決しない気がするんですけど。
2009/11/16 21:20:36 UTCshiro
#
うーん、それはランタイムで解決されてるんじゃないでしょうか。現に、出力コードページが932の状態でshift-jisバイト列を出力すれば日本語は表示されるわけですし、出力コードページ65001の状態でutf-8バイト列のギリシャ文字はやっぱりちゃんと表示されるわけです。
#
まあcp932(や、その他のCJKローカルコードページ)の場合だけ特殊なハックを仕込んで幅可変フォントに対応してるって可能性は無きにしもあらずですね。cp932に限れば、漢字は倍の幅ってことで座標計算できるわけで。
#
真面目にunicode汎用にしようとするとフォントの方から情報を取らないとならないから、そこまでは面倒でやってないのかも。
2009/11/16 21:24:46 UTCとおる。
#
なるほど。
#
UTF-8 がそのまま通れば、ぼくのしごともだいぶ楽になるんですよねぇ。
2009/11/16 23:04:56 UTCshiro
#
Gauche/mingwについては、まともなフロントエンド(emacs)とかをかませばutf-8で問題ないのでとりあえずこれで行くかなあ。後は何かのオプションをつけたら独自にコンソールを開いて何とかする、とかいう方向の方が悩まずに済みそうだ。
2009/11/16 23:05:20 UTCeyasuyuki@twitter
#
PLTみたいに独自のシェルを作るしかないのか>Windows
2009/11/16 23:07:24 UTCshiro
#
そっちの方が話が楽な気がします。Windowsのいろんなセッティングに悩まされるより。
#
Windows console APIにはだいたいGaucheからアクセスできるようになってるんで、Gaucheだけで独自コンソール書けないかなあ。まだちゃんと見てないからわからないんですが。
2009/11/16 23:08:22 UTCeyasuyuki@twitter
#
Windows版でcmd.exeシェルを捨てるなら、Benjaminさんのアイデア通りMeadowのロゴをGaucheロゴにした方が良いのか。でもMeadowのロゴはMeadowのインストーラーが作ってるんだよな。
2009/11/16 23:10:55 UTCshiro
#
それはMeadowを公式Gaucheシェルとしてバンドルしてしまおうってこと?
2009/11/16 23:37:32 UTCeyasuyuki@twitter
#
Gaucheboxに限ってはその方が自然かも>Meadowがシェル
#
Gauche MinGW単独のインストーラの場合はcmd.exeをシェルにするしかないですね。またはPLT方式で何か作るか...
2009/11/16 23:44:02 UTCshiro
#
今悩んでるのはそっち>単独インストーラ
2009/11/16 23:46:36 UTCeyasuyuki@twitter
#
cmd.exeがUTF-8を通さないのはWindowsのバグなんだから、堂々とUTF-8で出荷するというのはどうでしょう。
2009/11/16 23:58:39 UTCshiro
#
0.9はそれで行くしかないでしょうね。将来的には、例えば出先のマシンでちょろっとgosh欲しいと思った時にさくっとダウンロードして使えると嬉しいので、それなりに便利にしたくはあります。