【GUI】wxWidgets(旧w ..
[2ch|▼Menu]
184:179
07/04/08 19:56:40
>>183
単純な話なんだから、分かってるのなら答えて欲しいんだけど。
・マルチユーザシステムであるUnixでは、ユーザ毎にLC_CTYPE設定が異なり得る。
 これが前提。
・何もしなければ(少なくとも昔のUnixでは)システムコールにchar*を渡せば
 それは「そのまま」kernelに素通しで渡るはず。つまり、一貫性の無い
 異なるエンコーディングの名前がkernelに渡されることになる。しかも
 kernelに渡ってしまった後はそのエンコーディングを判断するすべが無い。

 ユーザモードで呼ばれるシステムコールのCインタフェース(ラッパ)には
 呼び出し側プロセスの環境のLC_CTYPEが分かっているので、多分ロケールに
 従った変換をかけるならここがベストである、ように俺には見える。

で、
・↑のような変換を行うシステムコールラッパの仕掛けなんですか
・kernel内部はUTF-8で統一されているのですか
というのが質問。
間違っているのなら、どこがどう間違っているのか説明してほしい。

185:デフォルトの名無しさん
07/04/08 20:09:41
>>184
何つーかさ、↓こういう質問が出る時点で答えるのを躊躇しちゃうのよ。

>・kernel内部はUTF-8で統一されているのですか

正直、君のレベルに合わせて回答を作るのは「単純な話」じゃないと思うよ。
誰にとっても。

186:179
07/04/08 20:13:21
>>185
>・kernel内部はUTF-8で統一されているのですか
なぜ、この疑問がそんなに問題なの?
Windows NTは、kernelが扱う「名前」「テキスト」は、全てUTF-16だよ。
kernelの扱う名前のエンコーディングに一貫性が無いと、例えばファイルシステム
のファイル名のエンコーディングが統一されていないと、問題でしょ?
UTF-16に統一することで、そのような問題を避けつつ、ASCIIよりはるかに
大きな文字集合を無問題に扱うことが出来ているわけ。
少なくともWindowsでは。

無論ファイルの中に入っていたりネットワークを流れるデータ(バイト列)の
具体的な中身にはkernelは関与しないよ。それはユーザレベルの話。

187:179
07/04/08 20:19:48
例えば

fd = creat(filename, 0666);
を実行した時に、

1) filenameはどこかでUTF-8に変換されますか
2) それはどこで行われますか
3) 変換されないならば、「全ての」ユーザコードが「各自」適切な
 エンコーディングを指定しない限り、
 ファイルシステムのエンコーディングの一貫性は保障されないということで
 良いですね。

ということなんだが。

188:デフォルトの名無しさん
07/04/08 20:31:18
>>186
前にも書いたけどさ、符号化方式はファイルシステム固有の話であって
「カーネル内部で統一」という言い方はおかしいよね?
単に一個のカーネルモジュールに過ぎない訳だから。
君も一応マイクロカーネルな OS 使ってるんでしょ?

これはオケ?

189:179
07/04/08 20:52:19
>>188
・非Unicodeの符号化形式を採用しているファイルシステムは、それだけで
 i18n/m17n対応においてUnicodeベースのもの(FAT32やNTFS)より劣ると
 いわざるを得ないだろう。

・ファイルシステムが非Unicodeの符号化形式を用いている場合、ファイルシステムの
 モジュールなりドライバなりが、相互変換を行うべき。そしてその層に
 それが閉じているならば、カーネルとしてはUnicodeで考えることが出来るので
 「統一」と呼べるのでは。
 統一されていれば、異なるファイルシステム上の名前を比較したり、ファイル
 システム間で名前をコピーすることの問題も無くなるし、
 ユーザの実行環境のロケールが何であろうと、そのロケールとの相互変換を
 どこかのレイヤが行いさえすれば、問題なくファイル名を取り扱うことが出来る。

・今きづいたのだが、ファイルシステムの符号化形式との間の決めウチ変換を
 行うのがkiconvの役目?もしかして。
 だとすれば、それだけではWindowsの提供する環境より
 随分劣るといわざるを得ない。

190:デフォルトの名無しさん
07/04/08 20:57:58
相変わらず、話が全然噛み合ってねえな…

191:179
07/04/08 21:10:05
>>187のような単純な質問には誰も答えてくれないの?

filenameの中身がUTF-8エンコードされていないなら、結局どうなるの?
1) EILSEQエラーなどではじかれる。
2) 普通にテキストと解釈できないへんな名前のファイルが出来る。
3) プロセス実行環境のLC_CTYPEに応じて、UTF-8に誰かが変換してくれる。
4) ファイルシステムに甚大な被害を及ぼす可能性がある。

192:デフォルトの名無しさん
07/04/08 21:14:45
>>191
何答えても屁理屈こねられそうだからみんな嫌がってんだよ。

193:デフォルトの名無しさん
07/04/08 21:15:33
>>187
1. いいえ
3. はい

194:デフォルトの名無しさん
07/04/08 21:16:49
>>191
2

195:デフォルトの名無しさん
07/04/08 21:17:24
↓勝ち誇った書き込みキター

196:179
07/04/08 21:19:08
>>192
具体的に俺の「どの」発言が屁理屈なの。
誤っている箇所があるなら指摘してくれよ。

俺はそもそも屁理屈をこねるほど最近のLinuxのことを知らないから、
聞いてるだけなんだが。


197:デフォルトの名無しさん
07/04/08 21:21:54
>>196
↓これ

>>189
>・ファイルシステムが非Unicodeの符号化形式を用いている場合、ファイルシステムの
> モジュールなりドライバなりが、相互変換を行うべき。そしてその層に
> それが閉じているならば、カーネルとしてはUnicodeで考えることが出来るので
> 「統一」と呼べるのでは。
> 統一されていれば、異なるファイルシステム上の名前を比較したり、ファイル
> システム間で名前をコピーすることの問題も無くなるし、
> ユーザの実行環境のロケールが何であろうと、そのロケールとの相互変換を
> どこかのレイヤが行いさえすれば、問題なくファイル名を取り扱うことが出来る。

198:179
07/04/08 21:22:24
>>193, 194
教えてくれてあんがと。
んじゃ、問題ないとか言い切ってる>>171は勇み足さんかな。

事実上そのUTF-8対応したLinuxとそうでない従来型ロケールベースでは
運用方法から何から全然変わってこない?
皆が皆UTF-8に移行してるわけじゃないでしょ?

どっちでも動くプログラムとか書くの、面倒じゃないの?

199:デフォルトの名無しさん
07/04/08 21:25:00
>>198
>>>171は勇み足さんかな。

勝手にあんたの持論に巻き込むな。

200:デフォルトの名無しさん
07/04/08 21:31:09
>>198
>事実上そのUTF-8対応したLinuxとそうでない従来型ロケールベースでは
>運用方法から何から全然変わってこない?

誰か俺にも分かるように翻訳してくれ。

201:179
07/04/08 21:42:51
>>200
非UTF-8カーネルでユーザ毎にLC_CTYPEが異なる昔ながらのL10N環境と、
カーネルからユーザロケールまでUTF-8を前提とした環境と、
UTF-8カーネルに従来型ロケールの環境では、
ユーザコードでiconv()やwcstombs()等を用いた変換が必要な箇所が
変わってくるんでは?と思ったんだけど。

気のせいだというのならいい。

202:179
07/04/08 21:43:50
>>197
えーと、俺は見ての通り頭が悪いし最近のLinuxのことは知らないので、
誤りはもっとピンポイントかつ具体的に指摘してくれると嬉しいのですが。

203:デフォルトの名無しさん
07/04/08 21:54:41
>>202
> 誤りはもっとピンポイントかつ具体的に指摘してくれると嬉しいのですが。
スレ違い

204:デフォルトの名無しさん
07/04/08 23:46:39
よくある逃げ方だな。
ごくろーさんw

205:デフォルトの名無しさん
07/04/08 23:52:15
↑捨て台詞キター

206:179
07/04/09 00:00:11
>>204は俺ではないですよ。どうでもよいことですが。

207:デフォルトの名無しさん
07/04/09 00:54:49
で結局
EUCベースのlinuxでwxWidgetsでUTF-8を用いたアプリを開発するにはどうすればよいかという話でしょ

1.wxWidgetsが馬鹿なので書き換える
2.アプリをEUCで作る
3.linuxをUTF-8に対応させる

さあどれだw

208:デフォルトの名無しさん
07/04/09 00:57:38
話の発端はwxMACだっけ
ということはMACのカーネルは何のコードがデフォなんだ?

209:デフォルトの名無しさん
07/04/09 01:32:03
わかってもいないし調べる気もない奴らばっかだということはよくわかったから
もうここで続けるな。どこか他所でやってくれよ。

210:デフォルトの名無しさん
07/04/09 01:55:55
>>193-194を見る限り、
$ touch ほげ
とかやった場合、要するにロケール設定によって全然別の名前のファイルが
作られるわけか?
なんかもう脳死してるっていうか、どうしようもないんじゃねぇのこれ


211:デフォルトの名無しさん
07/04/09 02:04:26
wow wxWidgetsの話はどこに行ったのさ?

212:デフォルトの名無しさん
07/04/09 02:04:34
つか、非ASCII文字を含むファイル名を表示するまともな方法、存在すんのか?
ほげ:sjis
ほげ:euc-jp
ほげ:utf-8
みたいなファイル名が混在し得るんでしょ?
一つのファイルシステムに。

213:デフォルトの名無しさん
07/04/09 02:28:20
>>211
readdir()やftsを使ってで読み取ったファイル名のリスト
をリストボックスか何かに表示したいです。
どうするのが正しいのでしょうか。

214:デフォルトの名無しさん
07/04/09 02:41:11
WindowsだってeucとかUTF-8のファイル作ろうと思えば作れる罠

215:デフォルトの名無しさん
07/04/09 02:45:52
リストボックスは当然ながらKDEとかGNOME依存でこれらは結局kernelの文字コードにあわしてある
kernelがEUCなら当然XシステムもEUCでフォントデータベースもEUCだからEUCのフォントインデックスじゃないと
いわゆる文字化けした状態になる

216:デフォルトの名無しさん
07/04/09 02:56:42
>>215
> kernelの文字コード
> kernelがEUCなら

いみが
わかりません。

Linuxでは、文字エンコーディングを指定してカーネルを再構築するのでしょうか?
それによって、具体的にkernelの何が変わるのですか?
Unixはマルチユーザシステムですが、他のLocale設定を使いたいユーザは
どうすればよいのでしょうか?

217:デフォルトの名無しさん
07/04/09 03:06:44
>>214
「やろうと思えば出来る」のと、「通常の使用でそういう事故が起きる」
のとでは、当然ながら全然違うんだが。

WindowsのコードページはUnixのロケールほど揮発性でも動的でもないし、
むしろ日本語Windowsなら実質CP932決めウチ、みたいな世界だ。
そしてAnsi版APIは、APIレベルでUTF-16への変換を試みるから、そこで
妙な名前はガードされる。
Unicode版APIは素通しだけどな。CreateFileW()にUTF-16として
正しくない並びの文字列を渡してもそのファイルを作れてしまうのは確か。
ただし、「ユーザが」「普通に」使用していてそういう事態に陥ることは
まずない。


218:デフォルトの名無しさん
07/04/09 03:55:56
>>215
もうそのネタを引っ張るのは無理でしょ。流石にフォントの並びは変わらねえw
「カーネルの文字コード」という概念は個人的に破壊力抜群だったけどww
「EUC ベースの Linux」は後々まで語り継がれる名言だったなwww

釣り、なんだよね?

219:デフォルトの名無しさん
07/04/09 04:06:30
また過去においては Linux の C Library にはロケール機構の実装は行われて
おらず X Window System の提供するロケール機構を使用していた。近年になっ
て X のロケールから GNU C Library version 2 に実装されたロケールへの移
行が進んでいる。残念ながら現時点では日本語をはじめとする多バイト文字の
ロケール機構は機能していないが実装作業が進行中であり、近日中に利用可能
になるものと思われる。

220:デフォルトの名無しさん
07/04/09 04:20:33
>>210,>>212,>>217
Windows だって一緒やがな。メールに添付されたファイルのファイル名が EUC-JP
だったら誰が valid なファイル名を探してくれるのでしょうね。zip に入っていたファイルの
ファイル名が UTF-16 のエンディアン違いだったらどうするのかな?

スレ違いなんで↓続きはこっちでやってね。

文字コード総合スレ part2
スレリンク(tech板)

>>219
残念ながらそのネタも面白くないと思われるよ。

221:デフォルトの名無しさん
07/04/09 04:49:56
>>220
ちゃんと規格確認してから言ってる?
特定の実装の問題を全体に拡大解釈するなよ


222:デフォルトの名無しさん
07/04/09 05:18:41
>>221
規格って、zip に入れるファイル名の文字コードの規格があるの?
特定の実装って何の実装の事?

実際には Linux だってわざわざファイル名に複数の文字コードを混在させて使おうと
する人間はいない。混在可能ってだけだし、それは Windows でも一緒。

223:デフォルトの名無しさん
07/04/09 05:35:45
知識自慢ばっかで解決策を語れるスマートな人間はまったくいないな
wxWidgetsのソースをいじるなんてのは非現実的だし
ロケールをわざわざUnicodeに変換したって既存のソフトが動かなくなるだけ
答えは1つ、デフォルトロケールにアプリを合わせて自前でコード変換するだけ
それ以外の方法はない
それ以外の方法しか考えられないやつはただの馬鹿

224:デフォルトの名無しさん
07/04/09 05:38:24
知識自慢というか、正しい認識を持つことは重要だよ。
で、何の解決策が必要なんだっけ?

225:デフォルトの名無しさん
07/04/09 06:06:24
ボケ老人は無理して話に加わらなくていいのに・・・。

226:デフォルトの名無しさん
07/04/09 06:51:00
> zip に入れるファイル名の文字コードの規格があるの?
zip に入れるファイル名の文字コードの規格はないの?


227:デフォルトの名無しさん
07/04/09 07:26:40
無い

228:デフォルトの名無しさん
07/04/09 08:08:56
無いよなぁ…

229:デフォルトの名無しさん
07/04/09 08:11:09
>>223
>wxWidgetsのソースをいじるなんてのは非現実的だし

ノンサポートのライブラリなんだから、きちんと全容を把握して
自分で手を入れられるようになっておいた方が良いぜ。

230:デフォルトの名無しさん
07/04/09 08:54:57
>>223
オープンソースなんだし常識じゃないの?
カーネルのソースも、wxWidgetsのソースも動作がおかしい場合は、
読んで修正しないとねぇ。


231:デフォルトの名無しさん
07/04/09 12:06:11
>>220
あのさぁ。メールの添付ファイルだのzipアーカイブの中身だのに含まれる
ファイル名をどうシステムのファイル名にマップするかってのは、
そのプロトコルなりRFCなりファイルフォーマットなりの話であって
OSの仕事ではないでしょ?
そこに不備があるのなら、それはOSでなくて、符号化形式が
self-containedではないそれらの不備ってだけだろ?

232:デフォルトの名無しさん
07/04/09 12:08:37
少なくともWindowsでは
単にシェルでファイルをとりあつかうだけのことで問題が生じることは無い。
ファイル名はUTF-16「である」のがWindowsだ。
Windowsのファイル名はコードページに依存しないし、コードページによらず
漢字や拡張ラテン文字を含むファイル名を同時に正しく扱える。

Linuxでは
$ >ほげ
とかやるとどうなるんだっけ?

233:デフォルトの名無しさん
07/04/09 12:36:11
スレ違いage

234:デフォルトの名無しさん
07/04/09 13:32:49
結局、>>213の答えは?

235:デフォルトの名無しさん
07/04/09 13:38:35
>>229
入れられるのと実際に入れるのとでは意味が違う
手を加えたらパッチが当たった時にまたそれに合わせて全部拾い出していくのか?
よっぽど暇なんですね

236:デフォルトの名無しさん
07/04/09 13:41:47
せっかくクロスプラットフォームで多くのチェックが入ってバランス統一されたものに
わざわざ手を加えてクロスプラットフォームじゃなくならせるなんてよっぽど馬鹿なんですね

237:デフォルトの名無しさん
07/04/09 17:45:41
>>234
見ればわかると思うけど、ここ能無ししかいないから
誰も答えられません。

238:デフォルトの名無しさん
07/04/09 18:26:14
じゃあお前が答えろよw

239:デフォルトの名無しさん
07/04/09 18:34:55
知識が無いことより、分かっている振りをすることのほうがはるかに馬鹿な事なのに
プログラマはそれがわからない馬鹿が多くて本当に嫌な人種だな
むしろ人間じゃねーな

240:デフォルトの名無しさん
07/04/09 20:18:26
>>231
そこまで書いたら自分で気付けよw

241:デフォルトの名無しさん
07/04/09 21:49:34
>>240
要するに、Windowsのファイル名はUTF-16固定だが
Unixのファイル名のエンコーディングに関しては、規約も標準も
何も無い無法地帯で、かつシステムグローバルでも何でもないLC_CTYPE
環境変数の設定でエンコーディングがころころ変わってしまい、
結果としてプログラム的にどうあるべき、という正しい判断のしようが無いから
糞なんだろ?

どこが「Windowsも同じ」なの?
Zipのようなファイル形式で困ったことになる点だけは確かに同じだな。
だが、それはOSの問題ではないし、論点ずらしだろ。

242:デフォルトの名無しさん
07/04/09 21:51:50
>>241
惜しい。あと一歩真実へ踏み出してみよう。

243:デフォルトの名無しさん
07/04/09 21:56:50
つづきまだ〜?(チンチン(AAry

244:デフォルトの名無しさん
07/04/09 22:02:56
ちゃんと考えなきゃダメだぜ。

245:デフォルトの名無しさん
07/04/09 22:10:28
例えばプレーンなテキストファイルのエンコーディングは分からない
(符号化形式がselfcontainedでない)ってのはOSに限らない
普遍的かつ伝統的な問題なわけで、
ファイルの中のデータを扱う部分はどうしても汚い仕事にならざるを
得ないと思うのよ。典型的なのが日本語のエンコーディングの自動判別の
ようなヒューリスティック。

Unixの世界ではファイル名もこれと同じなわけだけど、Unicodeに
統一できるなら、したほうがいいに決まってるし、完璧ではないにしろ
それが可能な世界だと思うんだ。
Windowsではそうなってるわけでしょ。

246:デフォルトの名無しさん
07/04/09 22:18:35
少なくともWindowsでは、何かファイル名を外部からもらった時に、
それをOSに渡す際にはUTF-16に変換するのが「正しい」ことは分かる。
どうやったらUTF-8に変換できるのか分からないならば、それは貰い方、例えば
ファイル形式やプロトコル等に問題があると言うことが出来る。
それはWindowsの問題ではない。

Unixはそれ以前の問題。それが非ASCII文字を含む場合、どう扱うのが
「正しい」のかが全く分からない。
一般解は存在せず、環境・プログラム毎の特殊解のみがあるのだろう。

247:デフォルトの名無しさん
07/04/09 23:07:08
>>246
>どう扱うのが「正しい」のかが全く分からない。

どう扱うのが正しいのかを決めるのはユーザ様な世界なんだよ。
分からないんじゃなくて、勝手な決め打ちしないだけ。
全能なるユーザ様が入力なされた物を勝手に変換するなと。
"touch ほげ" の結果生成されるファイル名がロケール依存で
変化するのは UN*X 的に正しい世界。何故ならユーザ様が
ロケールを設定しているから。アプリはロケールに従ってデータを
読み出せば全く問題無い。これが UN*X 的な正しい扱い方。
入力には寛容に。

ファイル名のエンコードは一応それなりに決まっていて、HFS+
なんかは UTF-16 になっている。決まっているだけで EUC でも
書き込めるのは Windows と一緒だね。

248:デフォルトの名無しさん
07/04/09 23:26:45
UNIXの世界において、kernelのレイヤでは全て単なるバイト列。
\0と/は特別扱いやけどな。
エンコーディング等は、kernelの知・っ・た・こ・と・で・は・な・い。

249:デフォルトの名無しさん
07/04/09 23:39:55
正しいとか正しくないとか俺様理論は他でやってくれないか?

250:デフォルトの名無しさん
07/04/09 23:41:01
あのな\0が特別って\0だけで十分にエンコード依存なんだよ馬鹿

251:デフォルトの名無しさん
07/04/09 23:42:50
俺様理論っつうか、エンコードとかkernelの話は他でやってくれ

252:デフォルトの名無しさん
07/04/09 23:47:16
何度も言うけども
wxWidgetsを正常に使いたかったらわざわざロケールを変更するような暇なことしたり
wxWidgetsを自分好みに作り変えたりするのは馬鹿のすることだ
デフォルトロケールのエンコードにあわせるのが正当なやり方だ
Windowsの場合はSJISとUnicodeの両者が共存出来るようなうまいしくみがあるから選べるだけ

253:デフォルトの名無しさん
07/04/09 23:50:48
>>249
核心を突いたね。そう。単一の文字コードに決め打ちして正しいとか言ってるのは
俺様理論なんだよね。簡単に破綻するのにね。しかも UTF-16 だからなあ…

254:デフォルトの名無しさん
07/04/09 23:53:05
>>252
一生 Windows だけ使ってる分にはそれで良いと思うよ。
Microsoft 以外が出しているおかしな OS なんて使う必要無いよ!

255:デフォルトの名無しさん
07/04/09 23:57:45
どうせMACはバージョンによって文字コードが違っても互換性がないのだからw
UNIX系なんてそもそもバイナリ配布できるような環境にないだろw
どうせそのコンピュータでコンパイルして動かすのだからロケールなんて統一したほうがかえってややこしいことになる
コンパイル環境のロケールでそのまま動くように作ればいいだけ
問題になるのはスタティック文字列くらいなもん

256:デフォルトの名無しさん
07/04/10 00:02:38
オケ

257:デフォルトの名無しさん
07/04/10 01:07:07
また一人気違いが……。よそでやれ。

258:デフォルトの名無しさん
07/04/10 01:10:54
>>247
> "touch ほげ" の結果生成されるファイル名がロケール依存で
> 変化するのは UN*X 的に正しい世界。何故ならユーザ様が
> ロケールを設定しているから。アプリはロケールに従ってデータを
> 読み出せば全く問題無い。

touch ほげを実行したユーザが、ファイル名を読み取るユーザと同じとは
限らないのがUnixでしょ。読み取るプロセスはデーモンかもしれないし、
cronあたりから実行されているバッチかもしれない。
ftpやtelnet越しのユーザかもしれない。
実におめでたいね。

>>248
うん、それで?
結果として、単に非ASCII以外の文字を含む名前がひどく扱いにくい世界に
なったわけだよね。
時代遅れだね。

>>253
Unixの「自由」は欲しくない自由なんだよ。俺に言わせれば。
プレーンテキストどころか、ファイルの中の行毎にエンコーディングが
異なる、何がなんだか分からないファイルを考えてみればよい。論外だろ?
「自由」にしたいのなら、せめてエンコーディング方式が分かるようにしろと。

259:デフォルトの名無しさん
07/04/10 01:40:40
「議論」したいのなら、せめて該当するスレに移ってくれと。

260:155
07/04/10 02:18:16
ぎょえ。なんかすごいことに。
しかもなぜか関係ないファイル名の話になってるし…。
荒れるからもう Unicode の話はふらないよ…。
ゴメンネ。


261:デフォルトの名無しさん
07/04/10 08:24:38
>>258
それで問題無いよ。お仕着せが良いなら Windows を使っていれば良い話。
見掛け上の統一感に満足していれば良い。Windows が最高なんでしょ?
俺は、文字コードの揺らぎは常に存在するものである事を前提に、自分で
自由に制御出来る環境の方が優れていると思う。

いつだって他人の流儀を認められないのが Windows ユーザだよなあ。
ぬるい世界で満足しているなら、そこから出て来なければ良いのにね。

262:デフォルトの名無しさん
07/04/10 10:12:08
>>261
> いつだって他人の流儀を認められないのが Windows ユーザだよなあ。
イラッとして書いたんだろうけどこういうひとくくりにする発言はやめようよ。
使ってるOSの問題じゃないからさ。


263:デフォルトの名無しさん
07/04/10 10:58:01
イラッとして書いたんじゃなくて、そのあたりが>>261のレベルなんです。
あらゆるコミュニティから「お前は入ってこないで」と思われるタイプ。

264:デフォルトの名無しさん
07/04/10 12:29:12
こーゆー輩は他人を貶して優越感に浸りたいだけだから放って置いたほうが良いよ

265:デフォルトの名無しさん
07/04/10 12:43:38
>>261ね。
テクニカルな内容がほぼゼロ。本人の品性が良く分かる煽り文ですね。

> 俺は、文字コードの揺らぎは常に存在するものである事を前提に、自分で
> 自由に制御出来る環境の方が優れていると思う。

エンコーディング情報が正しく含まれるのならそれもいいだろうけど、
実際には、各行のエンコーディングがごたまぜ、何が使われているか分からない
テキストファイルも同然の状態なわけですよ。ファイル名が何でエンコードされてるか
どこにも記録されない上に、一貫性のある規約も無いのが現実。

自分の環境は自分の都合のいいように運用するからそれでおk?
あなたは仮にもプログラマでしょう?
趣味でLinuxいじってるだけのパソコンオタクじゃないんでしょ?
プログラマとしてコードを書くときに、自分の環境しか考えないの?

例えば「ゆらぎがあることを前提に」、あなたなら>>213のケースにどう
回答するの?
Windowsはあなたに言わせればぬるい環境で、Unixは優れてるんでしょ?

俺様環境でしか通用しない糞コードではなく、
素晴らしい回答を期待してますよ。

266:261
07/04/10 19:11:39
なんか変なのがまとめて沸いてきたなぁ。それとも同一人物か?
自分の痛さを指摘されて逆上した Windows ユーザ?

まぁ、まともなレベルのものが書けたら相手してあげるよ。頑張ってね。

267:デフォルトの名無しさん
07/04/10 20:25:50
自分が痛いとはこれっぽっちも思ってないらしいな(ワラ

268:261
07/04/10 21:00:09
痛くないから当然だな。
まともなことを言ってるのに「痛くてすみません」ってな態度を取るのは
謙虚でもなんでもない。ただ間違っているだけだ。

それにしても、本当に逆上してるんだな。
負け癖のついた議論好きってこんな感じなんだよな。

269:デフォルトの名無しさん
07/04/10 21:01:12
新着で100もレスついてるから何かと思えば…

270:261
07/04/10 21:07:58
馬鹿は一匹出てくると立て続けに何十匹も出てくるからな。
スレが無駄に伸びる伸びる。

271:デフォルトの名無しさん
07/04/10 21:10:27
>>266,>>268,>>270
お、俺がもう一人居る。あんたが >>261 だとすると、俺は誰だw
何にせよ >>261 の書き込みは破壊力抜群だったみたいで何より。
>>262 には悪い事したけど、まともな人はもう居ないと思ってた。

>>265
あんたプログラマだったの?
プログラマは平日昼間から 2ch やれて羨ましいなあ。
エンコーディング情報は環境変数からとって来るから良いんだよ。
あんたが思ってる様なカオスの世界では無いよ。

272:271
07/04/10 21:13:42
話を簡単にまとめると、エンコーディングが静的に決まっているのが
NTFS や HFS+(どちらも UTF-16) で、行儀の良いアプリであれば
そのエンコーディングに従って文字列を格納してくれる。勿論、zip
の例の様に、人間にとって valid な文字列を生成出来ない場合も
あるし、ファイル名が ASCII である事を前提に書かれたプログラム
も存在している。
一方で、エンコーディングが環境に合わせて変わるのが UNIX 方式。
ファイルシステムの数も扱うロケールの数も沢山あるし、OS 自体も
色んな種類があるので入力には寛容に作られている。行儀の良い
アプリならロケールを見てきちんとデータを変換してくれる。勿論
入力が ASCII のみを想定している様なプログラムもあって、8 bit
clean じゃないコマンドも残っていたりする。

どちらの方式でも言えるのは、人間にとって valid じゃない文字列を
生成するのは簡単だという事。valid じゃない文字列を生成する
プログラムが良いか悪いかは別として、そういうプログラムが存在する
事は間違いない。だとすると、エンコーディングを決め打ちして満足
しているのは抜けてるんじゃないかなあというのが俺の意見。

Windows な人が共感出来るかどうかは別として、論理としては理解
出来るように書いているつもりだけど、どうよ?

273:デフォルトの名無しさん
07/04/10 21:52:01
>>271
> エンコーディング情報は環境変数からとって来るから良いんだよ
環境変数はユーザ毎、プロセス毎、それどころかプロセス実行中にも
変化し得る揮発性のデータでしょ。実際、
$ LANG=C man foo
のように、一時的にLANGを変えてコマンドを実行するようなことは
日常茶飯事のはずだ。

環境変数が指し示すのはあくまで「プロセスの実行環境」であって、
「ファイル名が何でエンコードされているか」ではない。それらは
全く別のものなのに、一体それでなぜ「良いんだよ」と言えるのか。

・ファイル名のエンコーディング方式が固定化されているか
・ファイル名のメタデータとしてエンコーディング方式が取得/設定できるか

以外に正しい解は無いよ。そんなこと、分かりきってるだろうに。

274:デフォルトの名無しさん
07/04/10 21:57:11
>>272
> 論理としては理解出来るように書いているつもりだけど、どうよ?

あなたがUnix方式の穴/不備に故意に目を瞑っていることだけはよく理解できる。
そして、「完璧な方式など無い」と主張することで、そこから目をそらさせようと
しているわけだ。

1. エンコーディング固定化方式
2. エンコーディングが可変で、形式をメタデータとして保持する方式
を比較するなら分かる。
どちらにも得失はあるが、「まともな」やり方だ。
Unixはそのいずれでもない。可変で、形式情報が失われてしまう。
Zipと同じだよ。

275:271
07/04/10 21:57:12
>>273
ファイル名が何でエンコードされてるかは重要じゃない。
ファイル名のバイト列をどの文字コードで解釈したいと
ユーザが指定しているかが分かれば良い。

エンコードを決め打ちしても当然例外は発生するんだから
正しい解なんて存在しないんだよ。それに気付ければオケ。

276:デフォルトの名無しさん
07/04/10 21:59:53
もうちょっと論理的に頼むわ。
馬鹿でもいいから、限界まで頑張って。

277:271
07/04/10 22:00:13
>>274
>完璧な方式など無い

まさにその通り。それを認識する事が重要だよ。
そうすればもっと色んな考えに寛容になれるよ。

278:デフォルトの名無しさん
07/04/10 22:01:44
Windows方式は完璧ではないよ。無論。誰もそんなことは主張していない。
Unix方式よりずっとマシだ、といっているだけだ。

279:デフォルトの名無しさん
07/04/10 22:01:47
>>276
お前は >>261 なんだろ...
自分の役割を忘れるな

280:デフォルトの名無しさん
07/04/10 22:03:58
>>275
>ファイル名が何でエンコードされてるかは重要じゃない。
>ファイル名のバイト列をどの文字コードで解釈したいと
>ユーザが指定しているかが分かれば良い。

環境変数という荒くて大雑把な手段では、実際に個々のファイル単位に
エンコーディングを指定することは出来ないし、インタラクティブな
プログラムばかりではない。
問題が大きいのに相変わらず故意に目をつぶりまくっているな。

281:デフォルトの名無しさん
07/04/10 22:05:43
>>278
それなら君は Windows ユーザじゃないってことだ。

282:デフォルトの名無しさん
07/04/10 22:06:57
>>281
キミ、面白すぎ
Windowsマンセー、欠陥など一切認めないって信者以外はWindows使っちゃ
いけないのネ

283:デフォルトの名無しさん
07/04/10 22:09:28
>>282
物事を面白がれるのはいいことだと思うよ。

現実と架空の区別さえついていれば。

284:デフォルトの名無しさん
07/04/10 22:10:06
マルチバイト文字の2byte目の引き起こす下らない問題に
煩わされてきた日本人であるならば、
名前なんてただのバイト列でいいよ、エンコーディングなんてどうでもいいよ、
なんてことは言えない筈だぞ。

UnixとCの時代遅れな設計がいかに多くの下らない「日本語対応パッチ」のような
adhocな生産物を意味出してきたことか。

285:デフォルトの名無しさん
07/04/10 22:18:40
>>278
悪いけど俺にはとてもそうは思えないし、エンコード決め打ちなんて
俺の基準からすると作法がなっていない。

286:デフォルトの名無しさん
07/04/10 22:19:53
>>284
いいからしばらく黙ってろって。襤褸が出まくってる。

287:デフォルトの名無しさん
07/04/10 22:25:18
>>285
> エンコード決め打ちなんて俺の基準からすると作法がなっていない。
そういう「気分」「好み」でしか語れないのか?
技術者なら、Unix方式に比べてどういう具体的な問題・欠陥があるか語れよ。

288:デフォルトの名無しさん
07/04/10 22:27:47
>>287
散々書いたじゃん。今まで何読んでたの?
鬱陶しいから横から煽るのは止めてくれ。
あと >>284 みたいな見当違いの事書くのも勘弁な。

289:デフォルトの名無しさん
07/04/10 22:29:16
>>288
> 散々書いたじゃん
「Windowsも完璧ではない、Windowsも同じ」以上のことは書いてない気が
するが?

290:デフォルトの名無しさん
07/04/10 22:32:23
今ある環境を*肯定*して最大公約数的なものを
提供するのがwxWidgetsだと思うのだが。

OS批評がしたいならOS板に行ってくれないかな。

291:デフォルトの名無しさん
07/04/10 22:39:22
>>284はそんなに見当違いか?

テキストとバイナリを区別せずただのバイト列として扱うのが
伝統的なUnixおよびCの文化だ。
実際にはそうした愚直で単純なやり方ではマルチバイトテキストを
扱う上で大きな問題を引き起こす。
無論UnixおよびCでそうでないプログラムを書くことは可能だが、
それに対するサポートレベルがWindowsに比べて非常に低い。

Windowsはテキストを明確に区別する。ほぼ全てのテキストを受け渡しする
APIには、Ansi版とUnicode版が存在し、APIユーザ=プログラマは、
自分のプログラムに適したストラテジーによってそれらを使い分けることが出来る。
Ansi版を使う場合はUnixのロケールモデルに近くなり、それらの切り替えは容易だ。
正しくWindowsの作法に従って書かれたプログラムなら、OSに渡るテキストは
全てUTF-16だ。
そうした世界では、もともとm17n対応であり、SJISの2byte目が引き起こす
伝統的な下らない問題とも無縁だ。
ファイルシステム内のファイル名も一貫しており、どんなコードページで
実行していようが全てのファイルを正しく扱える。
テキストを意識し、テキストを正しく扱っているから出来ることだ。

Unixは「何でもあり」と一見自由のようなことを言っていて、
実際にはエラーを起こしがちで問題の多い解でしかないわけだ。
ちょうど行毎にエンコード形式の異なるテキストファイルのように。

292:デフォルトの名無しさん
07/04/10 22:41:05
>>291
ガンガレ
もっとガンガレ

293:デフォルトの名無しさん
07/04/10 22:59:47
>>289
書いて無くても書いたんだよ!

294:デフォルトの名無しさん
07/04/10 23:01:57
案外ここ住人いたんだなあ
なんだかうれしいよ

295:デフォルトの名無しさん
07/04/10 23:24:59
ここまで俺の自演

296:デフォルトの名無しさん
07/04/10 23:31:07
いやいや、オレオレ

297:デフォルトの名無しさん
07/04/10 23:40:31
VC++ 2005 express edision(無料のやつ)

wx_dll.dswをコンパイルすると
MessageBox@16が見つからないとかいうエラーが出てdllが生成されないんだけど
なんじゃこりゃ

298:デフォルトの名無しさん
07/04/11 00:27:41
普通の質問になると黙るのがワロス

299:デフォルトの名無しさん
07/04/11 01:16:44
ダメ文字と半端バイト、エンディアン、改行の扱いで問題なければ別にどうでも良いよ
……Windows&SJIS/UTF-16が苦手にするところだなぁ。WindowsもUTF-8(N)にならんかね?


300:デフォルトの名無しさん
07/04/11 01:22:32
>297
ちゃんとWindowsの開発環境整えてる?Platform SDKとか。


301:デフォルトの名無しさん
07/04/11 01:28:18
>>300
libがなかったらそれ以前にlibが無いってエラーが出るからね
その辺はちゃんとやってる
wx.dswのほういわゆる静的リンクは問題なくコンパイルできる
DLLのほうがだめ

302:デフォルトの名無しさん
07/04/11 07:49:05
>>299
どこでも UTF-16 は負の遺産と化してるね

303:デフォルトの名無しさん
07/04/11 12:00:37
Javaも.NETもTclもICUもUTF-16だけどな。
ファイルやネットワークで使用するデータ交換形式としては無論UTF-8が
望ましいが、マルチバイト処理を必要とするから、内部コードとして
使うにはUTF-32のほうがいいよ。
UTF-16はまぁ中途半端の観は否めないが、内部コードとして使っている分には
それほど大きな不満はないな。

内部コードとしてのUTF-8の問題は、マルチバイト処理を必要とするだけでなく、
全部char*になってしまうということ。これは一見単純で良いようだが、
Unicodeデータかどうかの識別がつきにくく、プログラミング言語の
オーバーロード機能なども利用しにくくなってしまう。

304:デフォルトの名無しさん
07/04/11 13:04:20
>>303
内部コードにUTF使うか?
エンディアン無視してUCSそのままだろ。


305:デフォルトの名無しさん
07/04/11 16:58:30
>>303
エンコーディングの問題とプログラミング言語の問題も分離できないくせに
偉そうなフリしてて笑えるw

306:デフォルトの名無しさん
07/04/11 17:35:01
ここは何のスレ?

307:デフォルトの名無しさん
07/04/12 19:06:05
ねぇ、2.6.3のサンプルでpenguinサンプルをビルドして動かしてみたんだけど、
ウィンドウを閉じようとしたら「ハンドルされていないエラーが発生しました」とかいうエラーが
出てしまう。他のOpenGL使うサンプルもみんなそうなんだけど、これってwxWidgetsのバグ?

308:307
07/04/13 14:14:50
>>307
原因がわかったぽい。
NVIDIAの提供しているデバッグ用ドライバだとエラーになるっぽい。
通常のGeForceドライバだとエラーにならなかった。

まさかドライバで動作が違うとはね。

309:デフォルトの名無しさん
07/04/13 21:16:38
wxPythonで使ってるんだけど、いわゆるショートカットキー(ホットキー)って
どうやって実装するの?
wxAcceleratorKeyはメニュー用のようだし、wxKeyEventはフォーカスされた
ウィンドウにしかトリガーしない。
リファレンスにもそれっぽい方法は見当たらなかったのだけど。

310:デフォルトの名無しさん
07/04/13 21:24:15
メニューのファイル(F)の"Alt+F"みたいなの?
それだったら"ファイル(&F)"でできるけど。

311:デフォルトの名無しさん
07/04/13 21:50:37
>>310
いや、違うだろ。
グローバルホットキーのことでしょ?
OS依存度高そうだな。


312:307
07/04/13 22:01:38
>>308
と思ったら、普通のGLUTアプリでもこけた。
こりゃwxWidgetsとは全然関係のない話で、単にドライバの仕様な予感。
スマンカッタ・・・。

313:309
07/04/13 22:18:52
>>311
それもだけど、当面はアプリケーションごとのCtrl+Zで取り消し、みたいなやつ。
wxMenu.Appendでitem="Undo\tCtrl+Z"とすればできるけど
これだとメニューを出せない場合に困るし、どうしたらよいものかと。

314:デフォルトの名無しさん
07/04/16 16:11:20
質問です。
条件によってUIを機能しない(ボタンだったら表示が薄くなって押せなくなる)ように
するにはどうすれば良いのでしょうか。
wxWidgetsのサンプルではEVT_UPDATE_UIというイベントを使っているようですが、
真似して試してみたところ上手く行きません。

315:デフォルトの名無しさん
07/04/16 16:31:43
Disable()

316:デフォルトの名無しさん
07/04/20 16:19:35
URLリンク(www.averdevelopment.com)
面白いの見つけた(windows限定みたいだし余り魅力的ではないかも…)
でも
dc = AggDC(wx.PaintDC(self))
b = aggBrush(self.dc.GetBrush())
p = aggPen(self.dc.GetPen())
みたいに使用するのは簡潔でいいと思うけど

def aggBrush(wxBrush):
def aggPen(wxPen):
を使うたびにどこかで定義しないといけないとか、これなら
素直にGDI+を使ったほうが良いかなという気もしないでもない。

というか日本語資料が一件しかないしな…

317:デフォルトの名無しさん
07/04/22 13:01:11
そんなもん使うことあるか?
ゲーム作るんならどにみちバッファ直接書いたほうが早いぞ
DirectXより早いぞ

318:デフォルトの名無しさん
07/05/05 02:07:54

誰か、コレを和訳してないかな?

Cross-Platform GUI Programming with wxWidgets


319:デフォルトの名無しさん
07/05/05 06:39:51
wxWidgetsによるプラットホーム非依存なグラフィカルユーザインターフェイスプログラミング

してみたけど。

320:デフォルトの名無しさん
07/05/05 11:16:14
ああ流石に寒いかなと思ってやらなかったのに…

321:デフォルトの名無しさん
07/05/05 22:59:17
だれか、これで2chブラウザつくらないのかな?

322:デフォルトの名無しさん
07/05/06 01:33:23
メリットは?

323:デフォルトの名無しさん
07/05/06 01:41:18
弱酸性です。

324:デフォルトの名無しさん
07/05/06 02:00:32
>メリット

ネタになるだろ?

だれかやって味噌〜

325:デフォルトの名無しさん
07/05/06 02:25:38
C#の方が簡単だよ

326:デフォルトの名無しさん
07/05/06 02:48:26
>>324
ネタと言うか宣伝だわな

327:デフォルトの名無しさん
07/05/06 06:59:32
そんなあふれたもん作ってもしょうがないぽ

328:デフォルトの名無しさん
07/05/06 09:40:40
あふれた?

329:デフォルトの名無しさん
07/05/06 15:18:54
wxPythonなら Monarchってブラウザがあったらしい
URLリンク(monarch.sourceforge.jp)

330:デフォルトの名無しさん
07/05/06 18:26:03
輝けジャンケル(Woo! Ohowo!!)空高く(Owo!!)
技と力と心が通う ザビタン(hehe!!)
         イビル(hehe!!)ガブラ(Woo!Ohooho!!)
うなれジャンケル! アクサイザー3!!


331:デフォルトの名無しさん
07/05/06 19:42:18
なんやねん

332:デフォルトの名無しさん
07/05/06 20:14:11
これの代わりになるものをみんなで作ろう!!

333:デフォルトの名無しさん
07/05/06 20:16:53
おちつけ!!!!

334:デフォルトの名無しさん
07/05/06 20:25:59
行く道ひとつ Ohowo!! ただひとつ
これが われらの 生きる道

アクサイザー!(Zanzan zazan!) アクサイザー!(Zanzan zazan!)
アクサイザー3!!

335:デフォルトの名無しさん
07/05/06 21:27:25
これって、あまり人気がないのか?

336:デフォルトの名無しさん
07/05/10 03:49:37
wxSocketBase::Callbackが2.8で完全に削除されてるけど
コマンドアプリでイベント処理する場合にはどうすれば?
自作クラスにイベントハンドラを作る方法ってあるの?

ちなみにプログラムの特性上スレッドは却下、同期処理も却下

337:デフォルトの名無しさん
07/05/10 04:31:27
EVT_SOCKET(id, func)

338:デフォルトの名無しさん
07/05/10 05:09:20
自己解決した

ふふり

339:デフォルトの名無しさん
07/05/11 20:01:03
みんなもっと使おうぜ!!
便利なんだから(?)

340:デフォルトの名無しさん
07/05/11 22:58:07
wxDateTimeについて

システムの時刻とアプリケーションの時刻を独立して管理したいんだけど
wxDateSpanとwxTimeSpanをwxDateTime::Nowに加算すればいいわけですね
問題はアプリケーションで管理すべき時刻とシステム時刻の差の計算はどうすればいいの?
wxDateSpanとwxTimeSpanを2個のwxDateTimeの差から計算するには?

341:デフォルトの名無しさん
07/05/11 23:24:29
あ、自己解決w

342:デフォルトの名無しさん
07/05/12 16:44:23
これ、人気ないですか?

343:デフォルトの名無しさん
07/05/12 20:18:49
どうしてそう思うの?

344:デフォルトの名無しさん
07/05/12 21:01:48
まだ何も思ってないのでは

345:デフォルトの名無しさん
07/05/12 21:53:13
中身が人気無いというより

コンパイルに数時間かかるし
ドキュメントはほとんど英語しかないし
容量が1G以上いくし
内部構造まで解析できないとバグと仕様の区別が付けられないから不安定だし

まあようするに厨房には無理w

346:デフォルトの名無しさん
07/05/12 22:33:32
メリットは何ですか?

347:デフォルトの名無しさん
07/05/12 22:47:36
環境に左右されない。
でも、コンパイルは各環境で行わないといけない。

MFCの代わり?
(似てるし)


348:デフォルトの名無しさん
07/05/12 23:51:09
>容量が1G以上いくし

まじっすか・・・

349:デフォルトの名無しさん
07/05/13 01:23:23
メリットは

MFCライクだけどMFCをさらに洗練したような感じになってること
完全クロスプラットフォームだからネットワーククライアント関係を作るなら便利
完全に無料だからライセンスを一切気にする必要がない
多国語サポートとかとにかく機能はすさまじく充実してるけどクラス設計が洗練されてて覚えやすい

350:デフォルトの名無しさん
07/05/13 01:30:20
クラス設計が洗練されているというのは
クラスの命名規約やパラメータのパターンやイベント処理方法がすべて統一されているから
ダイアログの表示の仕方を覚えると、フレーム作ったりMDI作ったりする方法がなんとなく想像できる
ちょっとそれらしい名前のクラスリファレンスを見るだけでダイアログを表示する方法と同じ方法で
いろんなものが表示できる

351:デフォルトの名無しさん
07/05/13 17:04:37
デメリット

英語が出来ないと辛い


352:デフォルトの名無しさん
07/05/13 19:36:07
C++のコード読めないとつらい。

当方、wxPython使い。

353:デフォルトの名無しさん
07/05/13 20:49:24
GUI以外のシステム依存機能が大量に入ってて便利な反面
使わない機能も勝手に付いてきて重い

354:デフォルトの名無しさん
07/05/14 00:01:36
重くは無い
でかいけどw

355:デフォルトの名無しさん
07/05/14 01:55:39
wxJoystickを使ってゲームパッドで操作するアプリを作成中なのですが、
ボタンの押下はポーリングでスキャンする方法しかないのでしょうか??
ボタンを長押ししたりすると、連打してるようになるし、
ボタンをちょっとだけ押しても反応しない時があるので困ってます。。

ボタンが押された時にだけイベントを発生させることはできないのでしょうか?

356:デフォルトの名無しさん
07/05/14 02:41:26
wxJoystick::SetCapture

357:デフォルトの名無しさん
07/05/14 10:06:15
すごく・・・おおきいです

358:デフォルトの名無しさん
07/05/14 13:49:10
大きい・・・のか

359:デフォルトの名無しさん
07/05/14 21:10:12
英語が出来ないので、断念 ⇒ Turbo C++ 使い方が良くわからないので断念 ⇒ WinAPIでガリガリ書く
みんなが辿る道

360:デフォルトの名無しさん
07/05/14 21:22:29
英語つっても文学作品じゃないんだから嵩が知れてるでしょ。
やっぱりデカイのが痛い。

361:デフォルトの名無しさん
07/05/14 21:33:18
>>360
デカイと痛いのか。。。

力を抜けよ。

362:デフォルトの名無しさん
07/05/14 21:43:01
Turbo C++ で十分

363:デフォルトの名無しさん
07/05/14 21:45:43
アッー!

364:デフォルトの名無しさん
07/05/14 21:45:59
>>361
いやまて、チ○コじゃなくて、オパーイかも知れんぞ。

365:デフォルトの名無しさん
07/05/14 22:22:07
>>364
そっちだって、でかいとジャンプするだけで痛いよ?

366:デフォルトの名無しさん
07/05/14 23:01:20
>>359
それはつまり,C++を理解できてない人が打ちのめされたあげく,
Cだけで書こうと思い立つもCすらよく理解できていないからハンドラの扱いが
よくわからなくてWinAPIのサンプルをコピペしてダイアログ作って
テキストボックスに身長を入力したら標準体重を表示するだけの
プログラムの計算ルーチンだけを書いていたら頭の中でガリガリなった
ような気がする状態のことですね。あるある。

367:デフォルトの名無しさん
07/05/15 01:46:53
wxScintillaの内部で利用しているScintillaをさ1.62から
1.71以上にしたいんだけど、どうすればいいの?

368:デフォルトの名無しさん
07/05/15 03:07:02
DLLにすればでかくないw
しかしDLLを作るには英語力が必要w

369:デフォルトの名無しさん
07/05/15 03:35:10
メモリに読み込んだらサイズは一緒

370:デフォルトの名無しさん
07/05/15 04:08:22
メモリ量なら.Netは誰にも負けないw


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5177日前に更新/262 KB
担当:undef