バイト合間休みの今日
abdev バイト合間休みの今日 はコメントを受け付けていません午前中は学校でした。いつものように、あまり興味のない、古代文明についての講義を受けます。こういうときは、大概、講義を受けつつと見せかけて、お決まりの携帯ゲームやメールに耽ります。まぁ、おいらも今時のグータラ大学生なんです。
午後は家でのんびりしていたんですが、外に出たくてウズウズしてます(^^;;;最近、ウチの近くにスーパーオートバックスができたみたいなんで、様子を見にでもいってこようと思いますわ。ついでに、夕食もどっかで食ってこよ〜♪
不思議な17歳??
abdev 1 Comment »数日前、おいらのブログに珍しくトラックバックがついたことを確認しました。で、そのリンク先なのですが、中卒プログラマーmoceanstar君のブログ。
Mocean Star Blog – 中卒プログラマーの日記
http://d.hatena.ne.jp/moceanstar/
ちょっと目を通してみると、なにやら興味深い内容。17歳にして、コンパイラを作りたいとのことです。更に突っ込めば、いきなりコンパイラを作る前にリンカについて調査をするという、計画的犯行を模索しているみたいなんですね。
moceanstar君、おいらは満21歳なので、単純に4つ下ということになるんでしょうか…。ブログプロフィールを読む限り、謎が深いと同時に興味深いです。なんせ、おいらみたいに、純粋にプログラミング環境というヤツに真っ向から挑もうとする「物好き人間」、普通は見当たりません(というか、いません)。
えー、てなことでして、こちらからもせっかくトラックバックを仕掛けるんですから、リンカの作り方についておいらなりの見解を示しておきます。
現代のリンカはややこしいです。よって、ある程度調べただけでは、いっきにそいつを作り上げることはできません。moceanstar君のブログを拝見する限りでは、
リンカの製作
↓
コンパイラの製作
↓
開発環境として完成させる
みたいな流れを想定しているようです。コンパイラを作るより前の段階でリンカを知るという、一見すると合理的な計画のように見えます。が、しかし・・・・・
本人もお気づきのようですが、残念ながらMSDNにある技術文章(特にPEヘッダ及びCOFFの解説部)は、凡人が理解できる文章ではありません。おいらも7割程度は理解しているつもりですが、そのすべてにおいて知識をカバーできたかというと、全くそんなことはありません。更に言うと、MSDNは参考にするだけであり、あとは実際のコードを動かしてみて、試行錯誤を繰り返しながら、それらの値の真意を探る、という手法を先行させています。MSDN技術文章を勉強することはありません。こいつは参考にするものです。
幸いなことに、世の中には数え切れないほどの実行ファイルが存在しますし、自分のパソコンの中にもこれまた沢山のEXEファイル、DLLファイルが存在することでしょう。また、VisualC++、C++Builder、Delphiなど、純正のPEヘッダ、COFFヘッダを吐くリンカを持ち合わせる開発環境がゴロゴロしています。まずは、それら開発環境がどのような仕組みでヘッダを生成しているのかを調べてみると良いと思います。
多分、お持ちのことだと思いますが、eXeScopeというヘッダ解析ソフトが役立ちます。かれこれ2〜3年も前の話になってしまいますが、おいらは、このソフトとバイナリエディタと長い間生活を続けました(MSDN文章をマスターすることを思えば易しいのですが、頭がおかしくなることには変わりないです)。
eXeScope:
http://www.vector.co.jp/soft/win95/util/se072516.html
とにかく、コンパイラが生成するコードはデバッグできても、リンカが生成するヘッダ情報をデバッグすることはできません。結局のところ、リンカを1人だけで、しかも独学で作るのであれば、かなりセコいワザを駆使していかなければなりません。
PEヘッダ・COFFヘッダの構造体の汚さに驚かされたこと、意外と有名ではありながら限られた人間しか手にしないであろうLinkers&Loadersという参考書を買ったはいいが、この技術をたった一人でどうやって実現すればいいのか、道筋が立てられなくなったこと・・・・・こんな悩みを持つ人が近くにいると感じられただけでも、ホッとする瞬間でした。moceanstar君、影ながら応援してますわ〜
朝一番の悲劇
abdev 25 Comments »昨日の飲み会では2次会へは行かず、早々と帰宅しました。今日は昼からバイト、昼前起床というかなりお寝坊モードで、バイト先へと向かいます。
車をとめ、いつものように入り口へと向かうと、裏口からミカねーさんが出てきました。オオッ、朝からラッキーかも!?などと思いながら、「おはよ〜ミカちぁ〜ん」と緩んだ瞬間・・・・・
ポチャッ!!!?
おいらの車のキーレスリモコンが水溜りに落ちました。朝からこれかいーーっっ/(–)/
実は、携帯もろとも洗濯をしてしまうという悲劇を経験済み(更にさかのぼると、便器の中に腕時計を落としたこともあります…)なので、水系の失敗は自分の中ではご法度なんです。携帯を洗濯したときには知識が無かったのですが、何かの電化製品を水に浸してしまった場合は、乾くまでボタンやスイッチを押してはいけないそうですね。濡れたままでヘタに電気がまわって、余計に壊れるそうです。
ということで、バイト中はキーレスリモコンをタオルにくるんで安静に…。帰る際にチェックすると、幸運なことにキーレスは生きていました。まぁ、水溜りにリモコンを落としたくらいでこんなに騒ぎ立てる必要もなかったのかも…
バイトを終えてから、ウチの店のセカンド社員のオギさんを誘ってびっくりドンキーへ。夕飯、おいらから誘ったクセに、四川風ハンバーグをおごってもらいました。結局ラッキーな一日でした☆
昼寝をキメました
abdev 昼寝をキメました はコメントを受け付けていませんバイトだ〜開発だ〜、よく思い返してみると、最近は常に今やるべきことを意識しつつ、動きつづけていました。また、なにかしら動いていないと、心配になってしまうという、おいらの悪いクセもあるんだと思います。今日はいつもと違い、ちょーダルダルモードだったんです。昼時に研究室へ向かったはいいのですが、行きの時点で居眠りぎみ…。家に帰ったときは、なーんにもやる気が起きませんでした。
こうなったら…ということで、おもいきり昼寝をキメたわけですが、しっかりと昼寝をすると、イイですね。すっかりと、気分爽快です。なにも数時間寝てしまうということではないです。お得意のネットラジオで、ジャズ番組を小音量で流しつつ、しっかりと布団と枕を用意してリラックス空間を作るんです。最近は、昼寝というヤツが人間社会でも認められつつあるのですが、いざ堂々としてみると、納得です。おいらは、後一生、毎日昼寝をしてやりたいです。しかも、休日ではなく、あえて仕事がある日を選んで、してやりたいくらいです。
ということで、40分前後でしょうか…理想的な昼寝ができたんで、夕方は気分を変えて静岡へ。実家へ立ち寄り、小雨の中、近所を散歩してから、家へと帰りました。
今夜はバイト仲間で飲む約束をしております(=^〜^)o∀梅雨のジメジメさを吹っ飛ばすくらい、飲むぞぃ〜、てなことで、行ってきます===┌( ・_・)┘→→→
国会中継、見入ってしまいました
abdev 国会中継、見入ってしまいました はコメントを受け付けていません今日、明日は休日です。そういうこともあって、昨夜はバイトを終えてから、実家へ直行したんです。で、うまいメシと酒にありついたのですが、今日は気分を変えて、大学の教授の部屋へと出向くことに。ActiveBasicを題材にした特別講義や、ブースを設けた学生・企業向けのプレゼンなど、今年の計画の突き詰めを行ってワケですが、それはいいとして、学校帰り、おいらの車内のオーディオは音楽ではなく、国会中継を流していたんです。
通学中に国会中継…なんともお堅い大学生なんだと、自分でも突っ込みたくなる部分なのですが、久々に見たこの番組、ヘタにお笑い番組を見るよりも面白いっす。目にしたのは、「郵政民営化に関する特別委員会」。具体的な案件についての話もあれば、議員の汚点を突いたイタイタしい追求、笑いありの答弁のやり取り…。郵政民営化が失敗した場合の紙芝居を民主党の原口さんがやっていたのですが、一国民として面白く見させてもらいました。今更ですが、おいらはこの年齢になって政治の面白さに気付かされています。こんなことだったら、もっと早くに知っておきたかったという感覚さえ覚えます。
明日も引き続き研究室へ行く日なんで、今日のお仕事、早めにすませたいところです。
毎日新聞社、パレスサイドビルにお出かけ
abdev 毎日新聞社、パレスサイドビルにお出かけ はコメントを受け付けていません昨日、東京、行ってまいりましたよ。目的は(株)毎日コミュニケーションズの西田さん、IT系書籍ライターの水野さんと飲むこと。といっても、集合時間が夜の7時だったんで、終電がなくなるだろうと踏んで、ドライブがてら車で行きました。仕事帰りのオヤジのように、
「今日は車だから、生ビール小グラスで一杯ねぇ〜」
なんて感じでしたけど…。まぁ、このようなときはこの一杯が美味しいからいいんですよ。予想通り、お帰りの時間は終電を過ぎたんで、おいらの予想は的中したということですな。
西田さんは、おいらの人生感に絶大な影響を与えた張本人。「ActiveBasicオフィシャルユーザーズガイド」を出版するキッカケを作ってくれたお方です。執筆の際に、アドバイスと編集をしてくれたりしたんですね。
水野さんはというと、普段はサラリーマンという顔を持ちつつ、数々のIT書籍の出版、雑誌数誌に連載をお持ちの旬のライターさんです。5年、10年後はおいらもこんなライター職を持ってみたいものです。目標意識を感じさせられます(汗
行きはパレスサイドビルを目的地にナビの指示とおり首都高を走ります。おいら田舎モンなんで、愛車で首都高走るとマイルドな気分になってしまうんですわ。パレスサイドビルは思い切り皇居の真ん前。こんなところに駐車場なんかあるの??と心配になってしまいますが、あるんですよ。どでかいのが。パレスサイドビルはなんと地下4階まであるんです。300台まで駐車可能なこのビル、おいらは来賓気分でB3の広いスペースへと駐車します。
パレスサイドビル:
毎コミのオフィス、移転して半年だそうですが、キレイな玄関でした。特に受け付け電話が印象的。近未来的な雰囲気を漂わせます。どうやら、オフィスの玄関口が打ち合わせスペース(フリースペース?)のようになっていたので、1時間ちょっとそこで雑談をします。
お2人には、これからのIT分野でどう生きていくか、旬の話題を取り入れながらおいらの悩み相談にのってもらいました。まずは会社を通して社会を知ること、自分の好きなことをめげずにやること…ですね。
そんなこんなで、帰りは夜11時をまわりました。。。この時間になると、都内はタクシーだらけになるんです。え〜、マジでタクシーに囲まれてます…。
前から気になっていたんですが、都内のタクシーって高級車ばかりですよね。タクシー顔したシーマ、マジェスタがゴロゴロいるんで、田舎モンはこれが気になって気になって仕方ないんです。こういうの、普通より高いんでしょうね…。とにかく、眠気を覚ましつつ、ちょっといえないようなスピードを出しながら帰路をたどりました。
XOOPSの本、熟読させてもらいます。今日はバイトなんで、久々にノイハイトのTシャツ着てきます(^^; > 西田さん
タメになるお話、勉強になりました。近い将来、共同著者、実現させたいですね > 水野さん
ここまできてやっと気付きました
abdev 1 Comment »文字化け不具合続きのphpBB、おかしいな〜こんなに文字化けするフォーラムシステムよく皆使ってるな〜と疑問が出てくるほどだったんですが、周りを見渡して、やっと気付きました。
おいらのphpBBは、PHPシステムにも関わらず、思い切りシフトJIS使ってたんです。UNIX上で動くスクリプトなんだから、シフトJISを考慮して処理が進むはずもありません。こんな日本語パッケージ、なんで配布されてるんだ??というグチはさておき、とにかくすべてEUC-JPにでも移行しなければなりません。一応言っておきますが、phpBB日本語版のパッケージのほとんどはEUC-JPなんだと思います。おいらは中でも珍しい役立たないシフトJIS版を運悪くダウンロードしていたんです。。。
パッケージのほうは言語システムの部分を上書きコピーするだけで済みそうなのですが、問題はデータベース。ユーザーの皆さんが書き込んだ内容、ユーザー情報がすべてシフトJISで記録されています。これらをEUC-JPにエンコードする必要があるのですが、おいらが使ってるサーバーは勿論UNIX系。データベースはMySQLを使っています。ということは、そのデータベースを操作するためのソフトウェアインターフェイスもEUC-JPを使っているということになります。なにやらイヤ〜な予感…。
とにかく、文字コードをシフトJISからEUC-JPにエンコードしながらすべてのデータをエクスポートすることにしました。まだコミュニティを開いてから一週間ちょいなんですが、そのデータ量は650KBにもなっとります。活発な議論がなされているということで、結構なことです。そんなことを思いながら、TeraPadを使って内容を確認したら、これまたおかしぃ〜/(><)/
シフトJISからEUC-JPへのエンコードでちょこちょこといらない文字、”\” 記号が混じったようです。調べてみると、EUC-JPでは “\” を特別なエスケープシーケンスとして扱っている模様。更にシフトJISでは、マルチバイトの2バイト目に “\” が来ることがあるみたいです(結構頻繁に)。ということは、2バイト目の “\” 記号をエンコーダーが感知して、”\\” に増やしているっつーことですな。そうすると、なにかしらの単語、たとえば、「構造」という単語が「構\造」となってしまうってワケなんです。
それなら、”\”記号を地道に削除していこう、ということで不慣れな手つきでTeraPadを使いながら作業をしてみました。”\”記号は文書内で頻繁に使われています。ActiveBasicのソースコードなどが投稿されていると、ほぼ確実にその中に含まれているんです。こいつらは削除してはいけないので、無論”\”をすべて削除してしまうような一括置換はできません。ここからは地道な作業です。
え〜20分か30分かたったころでしょうか、この地道な作業が終わり、保存してっと…
・・・・・・・・・
TeraPad落ちました。
どうも、容量が大きすぎるのか、またもや文字コード不具合か、おいらの貴重なこの時間はなんだったんでしょう。泣けます。しょうがなく、Wordを使って再度チャレンジ。さすがに天下のマイクロソフトが作ったWord、ちょっとやそっとじゃ落ちませんでした。これで一息つけました。
ここからがデータベースのすり替えとphpBBシステムのEUC化ということになります。まったくもって、ここからが本番です。最後の最後で、動かなくなっちゃいましたじゃ話が済まされないんで、まずはフォーラムシステムをもう1つ作ってみて、データベースのほうももう1つ作ってみて、おいらのプラン通りにきちんと動くかを検証してみました。色々とつまづきそうな部分はあったんですが、無事動作確認ができたんで、今度は本物forumディレクトリの内容を変えるとともに、本物データベースを一括置換します。
・・・・・・・・・
おそるおそるDiscoversoftコミュニティを開いてみると、そこには見慣れたページが。成功です。今までネックになっていた投稿時の文字化けもすべて直っています。更に、お知らせメールの件名の文字化けまで解消されています。
てなことで、深夜3時までかかったEUC-JPへのエンコード作業は時間はかかったながらも大成功に終わりました。最近、夜更かしが過ぎているんで今日こそはと思っていたんですが、ダメでしたねぇ〜、気付いたらこの時間。
今日こそは早寝しますっっっ
phpBB、またもや文字コードの不具合
abdev phpBB、またもや文字コードの不具合 はコメントを受け付けていませんphpBB、機能はすばらしいんですけど…。←コレばっか(–;;
また日本語コードが混じった文字列の置換部分で不具合を発見してしまいました。
$code_entities_match = array('#<#', '#>#', '#"#', '#:#', '#\[#', '#\]#', '#\(#', '#\)#', '#\{#', '#\}#'); $code_entities_replace = array('<', '>', '"', ':', '[', ']', '(', ')', '{', '}'); $between_tags = preg_replace($code_entities_match, $code_entities_replace, $between_tags);
こいつはBBCodeの[code]タグを表示する際に実行されるコードなんですが、これでは “ー” や “―” や “‐” などの文字が文字化けしてしまいます。なぜかというと、これらの棒線文字ってのは、2バイト目に”]”とか”)”を含んでいるからです。preg_replace関数は1バイト目にマルチバイト判別文字がきても、対処してくれないんですよね。
おいらはPerlの文法がまだよくわかっていないんで、新たに置換ルーチンを作るのはちょっとしんどいです。ということで、置換前に一時的にSHIFT-JISからEUC-JPに文字コードを変換してみることにしました。このEUC-JPってのは、マルチバイト文字がアスキーコードの主要文字コードと重ならないため、間違った置換を防ぐことができます。
で、こんな感じになりました。mb_convert_encoding関数バンザイです。
//置換用の文字を設定 $code_entities_match = array('#<#', '#>#', '#"#', '#:#', '#\[#', '#\]#', '#\(#', '#\)#', '#\{#', '#\}#'); $code_entities_replace = array('<', '>', '"', ':', '[', ']', '(', ')', '{', '}'); //マルチバイト文字と重ならないように、EUC-JPに一時的に変換 $between_tags=mb_convert_encoding($between_tags,"EUC-JP","SJIS"); //置換 $between_tags = preg_replace($code_entities_match, $code_entities_replace, $between_tags); //SJISに戻す $between_tags=mb_convert_encoding($between_tags,"SJIS","EUC-JP");
不具合対処のためだけに文字コードを変換してしまうという邪道な手を使いましたが、なんとかこの問題は回避できました。なんか、ここ数日は毎日こんなことをやってます。phpBB日本語版、ちゃんとしてくれよ〜
Discoversoftトップページに設けるコミュニティ欄
abdev Discoversoftトップページに設けるコミュニティ欄 はコメントを受け付けていません先ほど、件名の文字列が60バイトを超えてしまうとその投稿内容を表示できなくなるバグを、phpBB(日本語版)にて発見してしまいました。HTMLコードのtextareaタグではmaxlengthという要素で最大文字数を指定できるようなんですが、これ、バイト数ではなく、文字数だったんです。ということは、「あいう」も「abc」も同じ3文字として処理されるということになります。しかしこれでは、マズいんです。データベース側では60バイトという制限を設けているため、全角文字で60文字ということは、120バイト、その容量を大きく超えてしまうわけなんですね。そうすると、やっかいなことに、ページが表示されなくなるんです。
この問題については、なんとかJavaScriptを駆使してバイト数を取得し、警告メッセージを出すように改良ておきました。海外版のツールを日本語化したものって、何かしら使い辛いですね。まぁ、このあたりは今後も改良されていくことと思うので、気長に待つとします。
で、phpBBのほうは一段落したわけですが、今度はDiscoversoftのトップページにコミュニティ欄というものを設けようと企んでいます。こちら、YAHOOやlivedoorのように、「ようこそゲストさん」「ログイン」などの表示を行うと共に、各フォーラムへのリンクを貼るものです。
ログイン情報を参照することから、PHPでの記述が強要されるわけですが、Discoversoftのトップページはindex.html。PHPではないんですよ。そうすると、インラインフレームを使って、小細工をするか、LINKタグとJavaScriptを使ってこれまた小細工をするか、どちらにしても面倒です。現在いい方法を模索中です…
Recent Comments