2013年12月10日火曜日

Windows8でMerry X'mas! #vgadvent2013

VOYAGE GROUP エンジニアブログ Advent Calendar 2013 10日目の記事です。

去年のAdvent Calenderから1年が経ちました、@takkyuuplayerです。10月末にパソコンを新調し、ついにWindows8機を手に入れました。せっかくなので前々から気になっていたWindows Storeアプリを作ってみようと思います。

前準備

まずは開発環境を整えましょう。Microsoft Visual Studio Express 2013 for Windowsを手順に従ってインストールしてください。特に詰まるところは無いと思います。Windowsをマシンを持っていなくても評価版を使えば開発環境を整えられるようです。

Hello world

このチュートリアルを参考にクリスマスにちなんでHello WorldならぬMerry X'masプロジェクトを作成してみました。https://github.com/takkyuuplayer/Merry-Xmas

ブランクプロジェクトを作成すると、ブランクのくせにいろいろファイルが追加されます。そのブランクプロジェクトを実行したのが↓
ブランクプロジェクト
何もありません。閉じるボタンもないので終了するにはAlt+F4を押して下さい。

最初にデフォルトビューを変更します。MainPage.xamlにその設定が記述されているようです。既存のものはいらないので削除して下さい。

Projects > Add New Item より、新しいMainPage.xamlを作成します。ビューの選択リストにはよく使う(?)テンプレートがまとまっていました。
右側にサンプルビュー
Basicテンプレートを追加(やはりBasicのくせにいろいろファイルを追加する)して、できたMainPage.xamlを編集するとアプリっぽくなります。ボタンにイベントを追加して終了 です。
Basicテンプレート

メリークリスマス!!

感想

Visual Studioは初めて触りましたが「クリック1回でいろいろやりすぎ!」というのが第一印象ですね。今後他のチュートリアルも触ってみつつVisual Studioが背後で何をやっているのか、把握していきたいと思います。

 明日の #vgadvent2013 は @_zoo さんです。

参考

2013年10月3日木曜日

perl の use について調べたのでメモ

perlのuseについて調べたのでメモ。 use Module LISTは perldoc.jp http://perldoc.jp/func/use によると

BEGIN { require Module; Module->import( LIST ); }

と等価らしいです。

#!/usr/bin/perl
use Data::Dumper (qw(Dumper));
warn Dumper 1; # $VAR1 = 1;
#!/usr/bin/perl
BEGIN {require Data::Dumper; Data::Dumper->import(qw(Dumper)); }
warn Dumper 1 ; # $VAR1 = 1;

確かに同じっぽい。なるほど。

パッケージの import メソッドを呼び出したくない場合(例えば、名前空間を 変更したくない場合など)は、明示的に空リストを指定してください:

    use Module ();
これは以下と完全に等価です:

    BEGIN { require Module }

そこは

BEGIN { require Module; Module->import(()); }

と等価ってことでもあるのかな?と思って実験。まず

use Data::Dumper ();
warn Dumper(1); # Undefined subroutine &main::Dumper called

は importされないわけだからエラー。

BEGIN {require Data::Dumper; Data::Dumper->import(()); }
warn Dumper(1); # $VAR1 = 1;

予想が外れた。どうやらimportは完全に呼ばれないらしい。

2013年6月28日金曜日

Chrome の console で jQuery を使いたい

Web開発者たるもの、Webブラウジング中にちょっとDOM要素を弄りたくなって「Chrome のconsoleでjQueryが使えたら楽なのに」と思うことがあります。もし見ているWebページが http://www.takkyuuplayer.com/ のようにjQueryをインポートしているのであればconsole上でもjQueryを使うことができますが、そうでない場合は使えません。

そのようなときは Include jQuery in the Javascript Console - Stack Overflow のようにしてjQueryを入れれば良いのですが・・・

この方法には致命的な欠点があります。それは

  • 常に同じバージョンのjQueryが使えるわけではない
  • そもそもインポート用のスクリプトを覚えられない
ことです。すでに閲覧中のサイトがjQueryをインポートしている場合「サイトのjQueryを使う」か「新しくjQueryをインポートしてサイト上のjQueryを上書きする」かの二択を迫られてしまいます。

どちらもやりたくはないので、既存のjQueryは置き換えずにいつも同じjQueryを使うためのChrome拡張を作りました。chebo.crxをインポートすればconsole上にて、次のようにしてjQueryにアクセスできます。 withCheboの引数として関数を渡してやれば、その中でjQueryが使えるようになります。便利ですね。

Underscore.jsBackbone.jsも使えるようになっているので、ちょいちょいウェブブラウジング中にDOM要素を弄りたくなる方は使ってみてください

2013年6月17日月曜日

local package manager のすすめ

vimをインストールしたいのにmercurialが無い、ncurseが無い。それらをインストールしようにもroot権限が無い。 

そんな風に思ったことはあるでしょう。慣れ親しんだ開発環境を使えないもどかしさ、分かります。大抵ホームディレクトリにmakeでインストールするのですが、環境が変わるたびに最新のソースを探しだし、makeが終わったと思ったらprefix間違えたorzなんて経験おありかと思います。(いや、そんな環境コロコロ変わらないが)

そんな私を救ってくれたのが LPM: Local Package Manager でした。
Linux を使っていて、root は持っていないけど新規にソフトをインストールしたいと思ったことはありませんか? ちゃんとパッケージ化されていないソフトをインストールするのが面倒だと思ったことはありませんか? あなたの環境でコンパイラエラーを回避するために何度も同じパッチを当てなければならなかったことはありませんか? そんな貴方に LPM は手をさしのべます。
( LPM: Local Package Manager, http://www.kasahara.ws/lpm/index_ja.html, 2013/06/17. )
とあるように、便利でした。1ページのDocumentを読めば、すべての使い方が分かります。lpmスクリプトの書き方もわかります。

vimとかzshとかリポジトリになかったので、オレオレlpmスクリプト作成。
オレオレlpm https://github.com/takkyuuplayer/lpm/tree/master/lpm

そのうちサブミッションしてみようかな、と思います。

Wordpress on AWS やめたった

皆様、円安の昨今いかがお過ごしでしょうか?

私の方はというとAWSの1年間無料利用枠が4月で期限切れになりまして、先月よりきっちり従量課金されるようになりました。その額なんと

56.04 [USD] -> 5,720[JPY]

GW中に調子に乗ってWordpressのDBをlocalhostからRDSに変えなきゃよかった・・・。という反省はさておき、大したアクセスもないのに毎月6000円近く取られるのはキツいです。そこで
  • 開発機用EC2インスタンスを閉じ、開発にはVagrantを利用
  • BlogはBloggerに移動し、RDSは閉じる
  • そのついでに静的コンテンツもWordpressからSinatraへ移行
しました。その際困ったのがブログの更新をどうホームページ上で見せるか?というもの。

こんなの


まぁそういうのはフィードを使うと相場は決まっているわけでして、例に漏れずやってみました。

feedzirraを使った更新一覧表示

rubygemでRSSのパーサーを探していたらfeedzirraに出会いました。他にもいろいろ出会いましたがThe Ruby Toolbox - Atom & RSS Feed Parsingによると一番人気があるようだったので利用。コードは以下です。
できました!ですが、なんか重いです。それはそうです。毎回RSS取りに行ってパースするのだから。キャッシュが必要です。最初sinatraでやろうと調べていたのですが、途中でnginxに任せればいいじゃん、という事に気づきました。nginxでプロキシ&キャッシュサーバー « chibiegg日誌を参考に設定。 これでストレスなく?表示されるようになりました。