不思議な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を題材にした特別講義や、ブースを設けた学生・企業向けのプレゼンなど、今年の計画の突き詰めを行ってワケですが、それはいいとして、学校帰り、おいらの車内のオーディオは音楽ではなく、国会中継を流していたんです。

通学中に国会中継…なんともお堅い大学生なんだと、自分でも突っ込みたくなる部分なのですが、久々に見たこの番組、ヘタにお笑い番組を見るよりも面白いっす。目にしたのは、「郵政民営化に関する特別委員会」。具体的な案件についての話もあれば、議員の汚点を突いたイタイタしい追求、笑いありの答弁のやり取り…。郵政民営化が失敗した場合の紙芝居を民主党の原口さんがやっていたのですが、一国民として面白く見させてもらいました。今更ですが、おいらはこの年齢になって政治の面白さに気付かされています。こんなことだったら、もっと早くに知っておきたかったという感覚さえ覚えます。

明日も引き続き研究室へ行く日なんで、今日のお仕事、早めにすませたいところです。

割引券、捕られました(泣

apparel 割引券、捕られました(泣 はコメントを受け付けていません

今日は休日なんで、昨日の出来事でも書きます。昨日は遅刻から始まったのですが、それ以外にも色々ありました。

まず、最近車を手に入れた警察学校通いの福井ちゃんがウチの店まで遊びに来ました。まぁ、業務中にも関わらず、色々とおしゃべりをしたわけですが、ここで割引券を一枚。こいつをあげたんだから、ちょっとは買い物してくれるだろうと思いきや、1000円Tシャツを買ってそそくさと帰ってしまいました。また今度、買いに来てくれー、福井ちゃん。

で、夕方ころでしょうか、以前、おいらが接客したオヤジさんがニタニタしながら近づいてきます。このオヤジはリーバイス501の1947年ビンテージモデルを購入してくれた常連さん。

オヤジ「どうもどうも。」

おいら「あ、・・・ど、どうもです。」

オヤジ「オニーチャンに言われて買ったこのデニム、ちょっとサイズでか過ぎだよー」

おいら「マジっすか!?丈見させてもらうんで、ちょっとはいてみてくださいよ」

そう、復刻ビンテージのデニムってのは、洗い加工をしていないため、3インチ程度の縮みがでるんです。そうこともあって、どうしてもちょっと大きめを進めてしまう接客スタイルをとってしまうのですが、このオヤジさんはピッタリめで501を穿きたかったようなんです。ピッタリめで穿くというと、数本のビンテージを購入してもらって、個人個人で感覚を掴む必要があります。そう、初めから自分にとってのピッタリサイズのビンテージなんてのは見つからないもんなんです。

おいら「縮みってのは、洗ってまた穿いてもらわないとなかなかわからないですからねぇ〜」

オヤジ「ほら、この余裕、見てよ、こんなだよ(~w~)」

おいら「そ、そうですねぇ〜、チョット余裕ありますね。でも、ベルトされれば全く問題ないと思いますよ」

オヤジ「高校生のガキみたいにダボッと穿けってのか?まぁ、それも悪くないけどよ…」

おいら「次回はこの1つ下で見るしかないですね」

このオヤジさんは別に怒っているわけではないんですが、世間で言う、ちょっとヤンチャな部類に入るお方です。

オヤジ「しょんないな〜、もう一本買うからいいよ」

おいら「すみませんね〜」

オヤジ「二本目は、安くなるに決まってるよね。まさか、定価で売るわけないよね」

おいら「・・・・・っに決まってるじゃないですか、ハハハ」

オヤジ「だよねぇ〜、いくらくらいになるの?」

おいら「3割くらいなら、がんばらせてもらいますよ」

オヤジ「なんだよ、5割とかじゃないの?情けないねぇ〜」

おいら「ホント、これが限界なんですよ」

オヤジ「しょうがねーな、それでいいよ」

こんなやり取りがなされ、おいらの貴重な残り一枚の3割引券が強制的に捕られてしまったというわけです。トホホホ

今日は遅刻から始まりました

apparel 28 Comments »

バイト初遅刻をキメテしまいました。言い訳はあるんです。道が混んでいたんです。しかも、事故で。いつものように、新富士駅に面している大通りを富士山方向へ向かって運転していると、かなり手前のほうから渋滞。ちょっと進んでは、また渋滞・・・・・

おいらはいつもギリギリに出て行くタイプなんで、あまり時間に余裕はありません。そう、無計画タイプなんです。当然のように時間はなくなっていくわけで…「このままだとマズイな…日曜日だってのに、よく混んでるな〜」とボヤきつつ、チンタラと進みます。

よく見ると、前方ではパトランプがクルクルとまわっています。ここで気付いたんです。前方で事故ってるんだということに。「ったく、こんな昼間からアホしてんなよ〜」とこれまたボヤきながらすぐ手前まで近づきます。様子をうかがうと、予想以上に大事故のようです。クレーン車が出動しております。乗用車、ひっくり返ってます(コワッ)。

事故った人、かわいそうだな〜、でもいい迷惑だよな〜、まぁこのペースならギリギリ間に合いそうだ☆事故現場直前まで進んだおいらが、こう思ったのもつかの間。なんと、この急いでいる一市民を目前して、クレーン作業が始まったんです。10分くらいでしょうか。道はふさがったままです。なんと、運の悪いこと…

てなことで、今日は10分遅刻というテンション低めのバイトスタートなのでした。。。

リーバイス527購入

apparel リーバイス527購入 はコメントを受け付けていません

チェック柄のボトムス、買ってしまいました。リーバイス527、SEMI TIGHT BOOT CUT。

ここまでチェック柄が押し出されたパンツは持ってなかったんで、どのトップスを持ってこようか、検討中…。まずは、黒のポロシャツあたりでもサラッと合わせてみようかといったところでしょうか。あとは適当にアクセサリでもつければ、夏初めには最適ですなv(^^)

毎日新聞社、パレスサイドビルにお出かけ

abdev 毎日新聞社、パレスサイドビルにお出かけ はコメントを受け付けていません

昨日、東京、行ってまいりましたよ。目的は(株)毎日コミュニケーションズの西田さん、IT系書籍ライターの水野さんと飲むこと。といっても、集合時間が夜の7時だったんで、終電がなくなるだろうと踏んで、ドライブがてら車で行きました。仕事帰りのオヤジのように、

「今日は車だから、生ビール小グラスで一杯ねぇ〜」

なんて感じでしたけど…。まぁ、このようなときはこの一杯が美味しいからいいんですよ。予想通り、お帰りの時間は終電を過ぎたんで、おいらの予想は的中したということですな。

西田さんは、おいらの人生感に絶大な影響を与えた張本人。「ActiveBasicオフィシャルユーザーズガイド」を出版するキッカケを作ってくれたお方です。執筆の際に、アドバイスと編集をしてくれたりしたんですね。

水野さんはというと、普段はサラリーマンという顔を持ちつつ、数々のIT書籍の出版、雑誌数誌に連載をお持ちの旬のライターさんです。5年、10年後はおいらもこんなライター職を持ってみたいものです。目標意識を感じさせられます(汗

http://www.takaaki.info/

行きはパレスサイドビルを目的地にナビの指示とおり首都高を走ります。おいら田舎モンなんで、愛車で首都高走るとマイルドな気分になってしまうんですわ。パレスサイドビルは思い切り皇居の真ん前。こんなところに駐車場なんかあるの??と心配になってしまいますが、あるんですよ。どでかいのが。パレスサイドビルはなんと地下4階まであるんです。300台まで駐車可能なこのビル、おいらは来賓気分でB3の広いスペースへと駐車します。

パレスサイドビル:

http://www.palaceside.co.jp/

毎コミのオフィス、移転して半年だそうですが、キレイな玄関でした。特に受け付け電話が印象的。近未来的な雰囲気を漂わせます。どうやら、オフィスの玄関口が打ち合わせスペース(フリースペース?)のようになっていたので、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日本語版、ちゃんとしてくれよ〜

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン