2013/01/01

【10周年】Masanori's WebSiteをリニューアルしました。

2013年、あけましておめでとうございます。

2003年より公開してきましたMasanori 's WebSiteですが、
この2013を持ちまして、
おかげさまで\10周年を迎えました。

「昌紀のHP」として公開して依頼、幾度もデザイン変更、
コンテンツも変わって参りました・・・
そして今回。10周年記念...というと大げさなのですが、
リニューアルを行いました。 http://ohgita.info/

2013年1月1日 - Masanori's WebSite 10周年記念
(ちなみに以前から何やら作成していたProject.MIとは別のものでして...
2日間ほどで急遽作成したのですが...体調を崩しましてww
間に合っていない機能やコンテンツもあります・・・。今後髄時アップデートしていきます(笑) )


今年は大学も3年となり...研究もありますし、
プロジェクトの開発のほうにもこれまで以上に取り組んでまいります。

本年も、そして今後とも何卒宜しくお願い申し上げます。

2013年 元旦 Masanori.

2012/12/17

Sublime Text2を使い始めた

Sublime Text2というエディタを使い始めました。
http://www.sublimetext.com/

私は、WindowsではTeraPadユーザ...
また、Linuxでは、(にわか) Vimmer...(CUIでは専らVimです。一応。)
Eclipse/Aptana Studio ユーザでして....

エディタというのは慣れたもの以外は使いたくならないモノだったりしますが、
そんななかでも気になるエディタなのですw

簡単に言うと・・・
わりと美しいUIで...GUIを適度に活かしていて、
操作がややこしくなく、サクサク軽いということ。
インクリメンタルに結構気持ちよく補完してくれたり。
尚、ファイルは、単体はもちろん、フォルダごとプロジェクト的に開くことも可能。
ファイルの切り替えなんかもインクリメンタル検索でプレビューしながら行えますし、
あと、ミニマップで俯瞰できたり、終了するときは何も表示されず次回起動時に自動復元されるとか...
自分としては...これ面白いな&良いな〜と思うところが色々w


Sublime Text2で perlのファイルを編集しているところ。
Ctrl+Pでこのようにファイルをインクリメンタル検索しながらプレビューできる。
対応開発言語は幅広い。各種ライブラリのための入力補完・サポートなども...Packageで拡張可能。

特に何でも使えますが、私としてはWeb向きのエディタかなーと思います。
シンプルなテキストエディタや、逆にEclipseのようなIDEも良いのですが、
エディタとIDEの中間的なアプリケーション...という感じでしょうか。
ちなみに、Linux/Windows/Macのクロスプラットフォームで動作します。
(有料 59ドルですけど...全機能を制限なしにずっと試せます。払う価値もありそうです。)

基本からシンプルで使いやすいのですが、
Packageのインストールで機能強化できるところがミソですね。

他のブログで特徴や使い方を紹介してくださっているのでそちらを。
例えば、jQueryなどの各種フレームワークのサポートや、
MarkdownやLaTeXのための入力補完とか...。
Gitを組み込めるとか...。簡単に実現できます。

まずは、"Package Control"というPackageをインストールしておくと、
他のPackageをSublime上で楽々インストールしていくことができます。
こちらのページにあるコードをコピーして、[View]メニュー → [Show Console]をクリック、画面下に表示されるコンソールへ入力。

あとは、コマンドパレット(Ctrl+Shift+P)を開いて、
"install"などと入力して、Package Controlを呼び出すだけです。

(参考)私がインストールしたPackage:
  • Abacus - 複数行のコードを整形表示
  • AngularJS - AngularJSのスニペット
  • AutoFileName - ファイル名を自動補完
  • BracketHighlighter - カッコの強調表示
  • CSS Snippets - CSSのスニペット
  • Color Picker - 色ピッカー
  • Dart - Dartのスニペット
  • Git - Gitを扱うためのPackage
  • Gist - GitHubのGistを扱うためのPackage
  • HTML - HTMLのスニペット
  • jQuery - jQueryのスニペット
  • Markdown Preview - Markdownのプレビュー
  • Mojolicious - perlのWAF "Mojolicious" のスニペット
  • SublimeCodeIntel - 各種開発言語の自動補完など
  • SublimeLinter - HTML/CSS/JavaScriptなどなどのLint(構文チェック)
  • Terminal - ターミナルでカレントファイル/ディレクトリを開く
  • Nexus - Theme(テーマ)
  • ...
尚、SublimeLinterなどの一部のプラグインでは、nodeを介してコマンドを実行したりします。その場合は、nodeのインストールが必要です。
(参照: Ubuntu 11.04 Natty Narwhal に Node と npm をインストール - 自分の感受性くらい)

インストールしたPackageは
基本的にコマンドパレット(Ctrl+Shift+P)から呼び出せます。

また関係ないんですが、
設定ファイルがJSONフォーマットということも...
ある意味、今どきのエディタらしいですねw

カスタマイズはかなり効きます。
 参照: Y.A.M の 雑記帳: Sublime Text 2 の設定

私はとりあえずこれだけですが、設定しています:
{
 "color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme",
 "draw_white_space": "selection",
 "highlight_modified_tabs": true,
 "ignored_packages":
 [
  "Vintage"
 ],
 "theme": "Nexus.sublime-theme"
}

ショートカットもある程度は覚えておくと捗ります。チートシートを作ってくださっているので使わせていただきましょう。
 Sublime Text | Periodic table of the Keyboard Shortcuts.
また、キーバインディングは自分好みに変更できます。

「今までのエディタは放り投げろっ!」とも言えませんし...私もそうは思いませんが、
それでも、「お!?」と思えた、なかなか良さそうなエディタです。
しばらく弄ってみたいと思います。

2012/12/03

組み込み(マイコン)、はじめました。

プログラミングというモノを独学&趣味でかじりはじめて...
...気づけば、もう8年にもなるのですね〜・・・。
まだまだ初心者の域を出ませんが(汗;)w

ここ5年間くらいはWebやネットワーク系を独学で遊び・学んできましたし、
大学に入って、C++やアルゴリズムを学びつつ、ちょっとばかり組み込み方面にも触れて...といった感じで過ごしてきました。

そして大学2回生 冬となった今。

昔から「組み込み(*)をやりたいな〜」と思うことが幾度もあったにもかかわらず、これまで結局は取り組んだことが無かったのだと言う事を
友人のおかげで気づかされた...そんな今日このごろです。

(* 組み込み...というかセンサーロボットとかヘリコプターとか(ry) ロボコンとか!!)

やるなら今だっ! (ある意味、私にとっての新境地開拓ですww)

ということで、組み込み(マイコン)を始めました(笑)

最初のテーマは組み込みOSの自作です。
(何年か前にPC向けの自作OSをかじり...かけたこともありました。見事に投げてしまいましたがw)

理由としては・・・
  • 何よりOSの勉強になる!
  • 低階層な組み込みを折角やってみるのだから、
    面白そうですし踏み込んでやってみたいな〜。
というところです。

低階層を理解することが自分にとっての貴重な学びになるのだ...ということを、
友人・知人から教えてもらった、影響を受けた...という理由も大きいです。


Raspberry Piとか、mbed、Arduinoなど、比較的容易に扱えるボードにとても興味があって、
目的に応じてやりたいことを手軽に(そこに注力して)やれるのが良いな〜と思うのですが、
ただ、今のうちにもっと低いレベルにも触れておくことも大事なんだなーと悟ったのですw(

Rasberry Piを使って作りこんだりというのもまた必ずやってみたいです。
また、もっと新しいマイコンでロボットなども近いうちに挑戦してみるつもりです。

参考にさせていただく本は...


です。

これは、H8/3069Fのマイコンボードを使って、シンプルな組込みOSを作る本です。
ブートローダーから、割込み/スケジューリング等々をすべて実装していきます。
まさにこんな事、やりたかった><!
(筆者の方のサポートサイトでは、TCP/IPスタックの実装、Webサーバの搭載まで広げているようです。
私も、実はネットワーク系を志していたりするので、ココは外せないところですねw)


さらに参考にさせていただくウェブサイトとして...
2回目のC言語で『12ステップで作る組込みOS自作入門 』の通りに組込みOSを作ってみた - 三等兵
かなり最近(3ヶ月前)の記事ですが、Mac OS (Lion)を用いてこの本に取り組まれたそうです。私もLinux(Fedora 17)での開発となりますし、詰まった時には特に参考にさせていただこうと思います(><;)ゞ

早速、ボードのほうも調達しました。
ちょっと昔の自分みたいに、半田ゴテを持ち出して(汗;)...とも思ったのですが、
流石にここは大人しく...本の指示どおりに、部品実装済みのボードを購入しました。
秋月のAKI-H8/3049Fネット対応マイコンLANボード完成品 という商品です。

使用するマイコン自体、アーキテクチャ的にはもう古くなってしまっている?感じもするのですが、私にはこれで十分すぎますw
なにせ最初の第一歩なので、本どおりに進めてもつまづきそうですし(笑)


とりあえず...初日の今日は、セルフコンパイルのための開発環境構築から...。
とはいっても、普段使いのFedoraにはgccやその他諸々が入っていて、何かと使っている状況なので、特段やることはなさそうです。

シリアル<->USBケーブルがまだ手元ににないので、この先はお預けです(´・ω・`)w
(家を探しまわれば、どこかに落ちているかもしれませんがw)
尚、今回、シリアル<->USBケーブルは、BUFFALOのBSUSRC0610BSを購入しました。


のんびりでも、確実に取り組んでいきたいな〜と考えています。
友人とのWeb開発や、他にも進めたいプロジェクト・勉強がありますので、
平行になりますが、逐一メモを兼ねて、このブログに進捗状況をアップしていけたらな〜と考えています(><)/
頑張りますっ。

今後、一連の記事は"自作OS"というタグでまとめたいと思います。
こちらから一覧できます。

2012/11/05

【解決】GitLabでGit HTTPが使えない問題 (※サブディレクトリ環境)

昨日に引き続き、GitLabの話です。
GitLab 2.7から"Git HTTP"(Git Smart-HTTP)が実装されていたのですが、

いつもはSSH経由で利用しているため、これまでは使っていませんでした。
(※ Git HTTP = HTTP経由でGitLabを通してリポジトリにアクセスする機能)

さて...今日はこのGit HTTP機能をいざ使ってみようと...

GitLab3.0の画面。[SSH]ボタンと並んだ [HTTPS]ボタンをクリックすると
Git HTTPによるURLが表示される。
(URLは、プロジェクトの通常のURLに".git"を付加したものとなる)
表示されたURLをブラウザから開いてみる...と...
回やっても認証画面がwww

正しいメールアドレス+パスワードを入力しているのに
401エラーが出るという・・・(汗;)w

ところで。GitLabでは、サブディレクトリ下での運用を本来サポートしていません。
ですので、私はリバースプロキシ(nginx)を通して少々無理やり運用しています。
(それについては、記事:Gitlabの導入 (Unicorn+nginxでサブディレクトリへ配置)を参照)

今回は恐らく、そのための問題なのだろう...と仮定して調べてみました。
(他の可能性としては、gitlab.ymlの設定ミスもありますが、今回は問題ありませんでした。)

→ 結果...その通り!やはりサブディレクトリ下で運用していることが問題なようですorz

とりあえず...手探りで試行錯誤してみましたので、
対策方法を以下に残しておきます。

[注意] GitLabのサブディレクトリでの運用が本来サポート外であるうえに、
私はいまのところ Ruby/Unicornに全く詳しくありませんww
そのため保障はできませんが、参考にまで。
...もっと良い方法があればアドバイスお願いします m(_ _)m )





/gitlab/lib/gitlab/backend/grack_auth.rb : 17行目付近〜

@env['PATH_INFO'] = @request.path
@env['SCRIPT_NAME'] = ""

# Find project by PATH_INFO from env
#if m = /^\/([\w-]+).git/.match(@request.path_info).to_a #コメントアウト
if m = /^(\/([\w-]+))*?\.git/.match(@request.path_info).to_a
    self.project = Project.find_by_path(m.last)
    if m2 = /\/([\w-]+*?.git\/.*)/.match(@request.path).to_a
        @env['PATH_INFO'] = "/#{m2.last}"
    end
    return false unless project
end

変更点としてはこれくらいです。



以下に、何を行ったかの解説&メモを書いておきます。

まずGitLabでは、Grackというモジュールを用いることで
このGit HTTPを実現しているようです。
GitLabのルーター(/gitlab/config/routes.rb)はユーザからアクセスを受けると、
Git HTTPのためのアクセスをここで受け取ります。

Grackの認証(Basic認証)には、GitLab上のアカウント情報が用いられます。
実際にその処理を行なっているのは/gitlab/backend/grack_auth.rb ですね。


上のgrack_auth.rbでコメントアウトした行とその次行の
# if m = /^\/([\w-]+).git/.match(@request.path_info).to_a
    self.project = Project.find_by_path(m.last)
はリクエストされたパス(@request.path_info)からプロジェクト名を抜き出しています。
本来、パスが"/hoge.git/aaaa"だとしたら、
hogeという部分が正規表現で抜き出され、self.projectに代入されるわけです。

ただ当然これでは、パスがサブディレクトリを含んでいると正しく抜き出せないですね。

ですので...コメントアウトした行の代わりにこのように追加しました:
if m = /^(\/([\w-]+))*?\.git/.match(@request.path_info).to_a

これにより、サブディレクトリであっても正しくプロジェクト名が抜き出せます。

さて...この修正だけで、事態(?)には光が見えてきます(笑)w
プロジェクト名が正しく抜き出せなかったために、
プロジェクトを探せず、401エラーになっていたようです。

これでとりあえず、401エラーが改善し、認証は正常に通るようになります。

が...。

ここでまだ、git cloneしてもうまく行かないはず・・・。

Grackの認証が済むと...
プロジェクト名やパスを環境変数(@env)で渡して次の処理を
/gitlab/vendor/bundle/ruby/*.*.*/bundler/gems/grack-*/lib/grack/*.rb
が行うわけですが・・・。

ここでリポジトリ上のファイルを読み込む時・・・
サブディレクトリのせいでパスを正常に扱えず、ファイルが見つからないのですw
なのでエラーとなります。

この対策のために、前のステップでパスを直しておくことにしました。
先ほどとおなじくgrack_auth.rbでやってしまいましょうw

以上の理由から、先ほどの行の後に2行追加しました:

        if m2 = /\/([\w-]+*?.git\/.*)/.match(@request.path).to_a
                @env['PATH_INFO'] = "/#{m2.last}"

正規表現マッチもあれな書き方ですが、未だ詳しくないので許してください(><;)

これににより、環境変数に入れるパスからサブディレクトリ部分が削られます。
つまり、本来、GitLabが意図しているパスになるわけです(>ω<)♪

これで一応、解決です。

試しに...クライアントから
$ git clone https://example.com/git/hoge.git
を実行してみてください。正しくcloneできるはずです。

今回は以上となります。

今回もこのヒントを得るためにGitHubやコミュニティを参考にさせていただきました。
ありがとうございました m(_ _)m♪


p.s.

そもそもサブディレクトリじゃなくルートでGitLabを運用したらいいのに...
と思われる方もいらっしゃるかもしれません・・・。

私は学生個人でサーバを運用しています。
そしてこういったものに、HTTPSは必須だと考えております。
ところで、ルートディでGitLabを運用するには、当然、サブドメインなり別サーバ/IPアドレスなりの方法を取らなければなりませんが、
それをするとなると、サーバ証明書もGitLab用に別途用意することになります・・・。
サブドメインでも使える証明書は高価ですし・・・。
そこまでの余裕は無いのです(´・ω・`)...。

尚、GitLabはサブディレクトリへの対応を実装することは今のところないそうです。


2012/11/04

GitLab 2.8→3.0にバージョンアップ

前回の記事(Gitlab 2.7 → 2.8にバージョンアップ)から約2ヶ月...
9月末にGitLab 2.9が公開されていたんですが...
つい先月(10月)末に、GitLab 3.0が公開されたようです。
http://blog.gitlabhq.com/gitlab-3-dot-0-released/

とりあえず変更点を...(適当に翻訳しましたw)

2.9での変更点は以下の通り (公式ブログより抄訳)
  • 400コミット以上の素晴らしいコード
  • コメントの表示順を変更 (Wallを除く)
  • omniauthのサポート (twitter, google…)
  • Bunch of stuff の修正 (訳注: たくさんのモノ/諸々 とでも訳しておきますかw)
  • 多くのコードのリファクタリング
  • Gitolite v3への対応
  • 絵文字機能
  • LDAPとOAuth設定を一つに集約 -> config/gitlab.yml
  • ProfileとAdmin画面に新機能
  • 多くのAPIを追加

そして 3.0での変更点は以下の通り (こちらも公式ブログより抄訳)
  • 300コミット以上の素晴らしいコード
  • ウェブエディタ機能
  • より多くのAPIを追加
  • ファイルブラウザの改善
  • SSH鍵の追加と削除についての致命的な不具合修正
  • (非公式な) Postgreサポート
  • プロジェクトグループ機能
  • ファイルとコミットについてのパフォーマンスがかなーり改善
  • コードのリファクタリングとクリーンアップ など...
うーん。これは楽しみ!!
ということで、3.0へのバージョンアップを行いたいと思います(>ω<)

私の場合、2.9→3.0ではなく2.8→3.0のバージョンアップとなるため・・・
こちらのドキュメントを参考にしたいと思います:

https://github.com/gitlabhq/gitlabhq/wiki/From-2.6-to-3.0
(そうじゃなくてすでに2.9をお使いの方はこちらを参照)

毎度のことですが、更新はgit pullして取得できて楽ですね。
今回はそれに加えて、hooks(post-receive)の上書きと、
gitlab.ymlの再設定が必要になりました。
必要に応じて、バージョンアップ前にバックアップをとっておくといいかもしれません。
(さらに私の環境では、サブディレクトリで動作させる等々しているので殆ど前回同様に再設定が必要でした。)


GitLab 3.0にバージョンアップ完了

それにしてもGitLab、友人と一緒の開発に使っていますが...使いやすいですね。
(元々のアイデアであるGitHubもそうですけれど)
他のプロジェクト管理システムよりも色んなモノを削って、またGitに特化している分、
使いやすさがあるんだろうな〜と思います。

GitLab 2.9から追加された Issueでの+1 機能。
コメントを書く時、"+1"という文字を入れておくと、カウントしてくれます。
こういう機能も他のプロジェクト管理システムだとプラグインで使えたりしますが、
標準で実装されるのはちょっと嬉しいですねw
(尚、軽めにぼかし入れてますが、開発中のモノです。見えてもいいんですけど一応軽くw )
Trac,Redmine,etc...を使っていると、
欲を言えば、GitLabはモノ足りないかなーと思うことが無いこともないんですけど、
それでも...必要十分以上の機能は揃っているわけです。
毎日のように使うツールですから、”シンプル”であることは大切だと思います。
開発メンバーが増えたときの慣れやすさを考えてもそうですしね。




2012/10/30

Perl/Wx - Wx::Demo サンプルGUIアプリケーションを試そう

昨日(Perl/Wxをはじめてみよう (PerlでGUIアプリケーション))に引き続き、
PerlとWx(WxWidgets)でGUIアプリケーションを作るという話題です。

今回はCPANで公開されているデモアプリケーション(Wx::Demo)を試してみます。
サンプルプログラムとソースコードをインストールできるモジュールになっていて、
インストールするだけ、とっても簡単に試せます。

利用する環境は昨日の記事とおなじく、Linux(Fedora 17)+ perl-5.14.2 です。
すでにwxWidgetsとWxモジュールもインストール済みとなっています。



まずはWx::Demoをビルドしてインストールします。
http://search.cpan.org/~mdootson/Wx-Demo-0.19/lib/Wx/Demo.pm
執筆時点の最新版は、Wx-Demo-0.19となっています。
アーカイブファイルを適当なディレクトリに展開して、いつもどおりビルドします:

$ wget http://search.cpan.org/CPAN/authors/id/M/MD/MDOOTSON/Wx-Demo-0.19.tar.gz
$ tar zvxf Wx-Demo-0.19.tar.gz
$ cd Wx-Demo-0.19/
$ perl Makefile.PL
$ make
$ make test
$ sudo make install

これでWx::Demoのインストールは完了です♪

あとは実行するだけ:

$ wxperl\_demo.pl

これでこのようなウィンドウが表示されます。



左側のペイン("Categories"タブなど)に、サンプル一覧がツリー表示されます。
これを選択すると、右側のペインにこの画像のようにサンプルが表示され、
さらにSourceタブから該当ソースコードも閲覧できる仕組みになっています。

ちなみに、このWx::DemoをMacやWindowsなど他の環境で実行すると...
それぞれの環境に用意されたネイティブGUIを使って、違和感なく表示されます。
これは"ネイティブGUIへのラッパーを基本としているwxWidgetsの強み"でもあります。
(また、その環境のネイティブGUI上に該当するパーツが存在しない場合には、wxWidgetsによって再現された共通的なパーツで代替する仕組みになっています。)

今日はここまで(>ω<)♪


2012/10/29

Perl/Wx(wxPerl)をはじめてみよう (PerlでGUIアプリケーション)

Perl/Wxをはじめてみよう...ということで。
WxWidgets(クロスプラットフォーム対応のGUIライブラリ)で
超シンプルなGUIアプリケーションを作りますw とっても簡単です。


まず、wxWidgetsというのは、
Windows / Mac / Linux(GTK)のネイティブGUIを利用できるラッパーライブラリです。

PerlのCPANで公開されているWxモジュール(WxPerl)は、
このWxWidgetsをPerlから利用するためのモジュールです。
最新版は、0.9914 (2012年10月02日)、かなり最近です。
これに関して、Perlでこの話題を持ちだしてきたのにはちょっと理由があるのですが、それは最後にでも(笑)

余談ですが、かの "Google Drive"のPC向けアプリケーションも
wxWidgets(wxPython)で開発されているようです (→公式サイトのNews
参照)
様々なアプリケーションに利用されているライブラリであることは何より安心できますね(>ω<)♪



さて今回は、Linux(Fedora 17)環境で wxWidgets 2.9.4による
GUI(GTK+2)アプリケーションを作ってみたいと思います。

(尚、WindowsやMacにおいても、書くべきソースコードは共通となります。
WxWidgetsとWxモジュールのインストールが少々異なってきますが、参考にしてください。)

perlの環境がインストールされていることが前提です。
(私のFedora環境では、perl-5.14.2を利用しています。)

まず、GTK+2の開発パッケージをインストールします。
$ sudo yum install gtk2-devel

次に、Alien::wxWidgetsモジュールをビルドしてインストールします。
(今回はCPANでうまくインストールできなかった為、自前でtar.gzをダウンロードしビルドしました。)
http://search.cpan.org/~mdootson/Alien-wxWidgets-0.62/lib/Alien/wxWidgets.pm
このモジュールは、ビルド時に適切なWxWidgetsを取得してビルドしてくれます。

$ wget http://search.cpan.org/CPAN/authors/id/M/MD/MDOOTSON/Alien-wxWidgets-0.62.tar.gz
$ tar zxvf Alien-wxWidgets-0.62.tar.gz
$ cd Alien-wxWidgets-0.62/
$ perl Build.PL
〜ここで以下のような質問が表示されますが適当に答えて... 2.9.4 (執筆時点のLatest Development版) をインストールしてもらいますw〜 Which wxWidgets version? (2.8.10, 〜 , 2.9.4) [***] 2.9.4
Which archive type? [tar.bz2 ] (そのままEnter)
Do you want to include OpenGL support [no ] (そのままEnter)

$ perl Build
$ perl Build test
$ sudo perl Build install
$ sudo ldconfig

次に、Wxモジュールをビルドしてインストールします。http://search.cpan.org/~mdootson/Wx/Wx.pm

$ wget http://search.cpan.org/CPAN/authors/id/M/MD/MDOOTSON/Wx-0.9914.tar.gz
$ tar zxvf Wx-0.9914.tar.gz
$ cd Wx-0.9914/
$ perl Makefile.PL
$ make
$ make install
(後述のようにユーザディレクトリ下にPerl環境を置いている場合は、sudoをつけないほうが良さそうです。
もちろん、システムでPerl環境を共有している場合には、sudoをつけてmake installしてください。)

これで準備完了です。

あとは... ソースコードを書くだけです。
use Wx;

my $app = Wx::SimpleApp->new;
my $frame = Wx::Frame->new( undef, -1, 'Hello, world!' );

$frame->Show;
$app->MainLoop;

(http://search.cpan.org/~mdootson/Wx/Wx.pm より引用)

これを適当に保存して、実行してみましょう。
$ perl hoge.pl

こんなウィンドウが表示されたら成功です(>ω<)♪



この時、もしも...次のようなエラーが表示されたら...
Can't load '/***/Wx/Wx.so' for module Wx: libwx_gtk2u_adv-2.9.so.4: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません at /***/DynaLoader.pm ***.
この場合はライブラリが認識されていません。

どうやらperlの環境によっては、ライブラリファイルがユーザディレクトリ内にインストールされてしまい、その結果として認識されないことがあるようです。
(Alien::WxWidgetsのビルド時にBuild.PL --prefix=***を指定しても効きませんでした・・・
調査中です。どなたか正しい方法をご存知でしたらアドバイスをお願いいたします m(_ _)m
Perlbrewの環境とかもそうなったりするんでしょうか・・・未確認です。)


(あんまり良い方法では無い気がしますが...)とりあえず対策として
ライブラリパスをユーザの環境変数に追加しておきます。

まずは目的のライブラリファイルを探します...
$ sudo find / -name "libwx_gtk2u_adv-2.9.so.4"

ファイルは見つかりましたか?
(例: /home/hoge/perl5/lib/perl5/x86_64-linux-thread-multi/Alien/wxWidgets/gtk_2_9_4_uni/lib/libwx_gtk2u_adv-2.9.so.4 )

見つかったファイルのあるディレクトリを登録します:
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:***/Alien/wxWidgets/gtk_2_9_4_uni/lib/ (上の例であれば...ディレクトリは、/home/hoge/perl5/lib/perl5/x86_64-linux-thread-multi/Alien/wxWidgets/gtk_2_9_4_uni/lib/)

さらに、同じexport文を ~/.bashrc の末尾にも追加しておきます:
$ vi ~/.bashrc

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:***/Alien/wxWidgets/gtk_2_9_4_uni/lib/

その後、もう一度、sample.plを実行してみてください。今度は動くはずです(汗;)
$ perl sample.pl


さて...今回はこのへんで。
大学のテストが間近なのでテスト勉強してきますっ(`・ω・´)シャキーン (汗;) (

デモアプリケーションがCPANでWx::Demoとして公開されているので
そちらを参考にしつつ使わせてもらいましょう(>ω<)♪


[2013/06/23 追記]
Arch Linux(64bit), perl-5.18.0の環境で試してみたところ...
$ cpan Alien::wxWidgets Wx
とCPANシェルでインストールするだけで、wxPerl環境の構築が楽にできました。
上記のサンプルコードもそのまま動作しました。何か作ってみようかな♪

また、直接関係ありませんが、wxWidgetsのドキュメント日本語訳プロジェクトが新たに始動されていました。
日本でもwx関連がまた活発になっていくといいですね。


[余談]

この記事を突然書くことにしたのには経緯があったりします。
実は以前から私はWxWidgetsとWxモジュール(WxPerl)をかじっていた時期がありました。
ただ、2010年になってからしばらく...モジュールのアップデートが特になくなり...。
私も、Web開発のほうに興味が傾いていた事もあって、GUIアプリ開発そのものが少なくなり、
その後はたまにWxPerlのウェブサイトをのぞいたり...といった程度になっていました・・・。

そんななかで先日、2012年になって再びアップデートが積極的に行われていることを知りました。
何より嬉しくなったのと、最近流行り(?)のWebアプリケーションでなく、
Linuxでも使えるスタンドアロンなGUIアプリケーションを作りたいな〜と考えていたことから
ちょっと記事に起こしてみることにしましたw

おっとww 余談が長くなってすみませんでした(^^;)ゞ