2012年7月16日月曜日

さくらVPSにTengをインストールしてみました


前回のエントリの続き。
きっかけはPerl Begginers#3に参加して、MySQLとO/Rマッパーに興味を持ったから。
(Perl今のところ関係ないw)

本家サイトはこちらになります。
http://search.cpan.org/~nekokak/Teng-0.12/lib/Teng.pm

1.さくらVPSにrootユーザでログイン。

2.前提としてDBDモジュールが必要なので、DBDモジュールをインストール

# cpanm DBD::mysql
--> Working on DBD::mysql
Fetching http://www.cpan.org/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.021.tar.gz ... OK
Configuring DBD-mysql-4.021 ... OK
Building and testing DBD-mysql-4.021 ... FAIL
! Installing DBD::mysql failed. See /root/.cpanm/build.log for details.

なんか失敗した・・・?
エラーメッセージでログを見なさい、と言われてるのでログを見てみた。

----ログ抜粋----
gcc -c  -I/usr/lib64/perl5/auto/DBI -I/usr/include/mysql  -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC   -DUNIV_LINUX -DDBD_MYSQL_WITH_SSL -DDBD_MYSQL_INSERT_ID_IS_GOOD -g  -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic   -DVERSION=\"4.021\" -DXS_VERSION=\"4.021\" -fPIC "-I/usr/lib64/perl5/CORE"   dbdimp.c
In file included from dbdimp.c:20:
dbdimp.h:24:49: error: mysql.h: No such file or directory
:(後略)
と何やらコンパイル関係でわらわらエラーが出ている。

MySQLをインストールしただけではDBDのインストールで失敗するということか・・・

調べてみたら、
yum install mysql-devel

で、Perlモジュールなどのその他のMySQLクライアントをコンパイルする場合に必要なライブラリとインクルードファイルがインストールされるらしいので、実行してみる。
(MySQL-devel.rpmについての詳細は http://dev.mysql.com/doc//refman/4.1/ja/linux-rpm.html に記載あり)
確認すると/usr/include/mysql以下にmysql.hが入っていた。これでうまくいくかな?

再度、cpanm DBD::mysqlを実行するとエラーも出ずにインストールできたのでうまくいったようだ。
# cpanm DBD::mysql
--> Working on DBD::mysql
Fetching http://www.cpan.org/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.021.tar.gz ... OK
Configuring DBD-mysql-4.021 ... OK
Building and testing DBD-mysql-4.021 ... OK
Successfully installed DBD-mysql-4.021 (upgraded from 4.013)
1 distribution installed

3.Tengをインストールしてみる。

# cpanm Teng
:(中略)
Successfully installed Teng-0.14
16 distributions installed

こちらはすんなりうまくいった。

4.テスト用データベース・テーブル・ユーザの作成
テスト用データベースとテーブル、ユーザを作成する。
とりあえず動作確認用なので、テーブルは1カラムだけ設定することに。

mysql> create database testdb;

mysql> use testdb

mysql> create table tengtest(
name text
);

mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| tengtest         |
+------------------+
1 row in set (0.00 sec)

mysql> grant all privileges on testdb.* to testuser@localhost identified by 'testpassword';

mysql> quit

mysql -u testuser -p

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
| testdb             |
+--------------------+
3 rows in set (0.00 sec)

mysql> use testdb

mysql> select * from tengtest;
Empty set (0.00 sec)

mysql> quit

5.Perlスクリプト実行
以下のtest.plを準備、実行して、データをテーブルにInsertしてみる。
(本家サイトを参考に見よう見まね・・・)

------------------------------------------------------------
#!/usr/bin/env perl
package main;
use Teng;
use Teng::Schema::Declare;

{
    package TestDB;
    use parent 'Teng';
}
{
    package TestDB::Schema;
    use Teng::Schema::Declare;
    table {
        name 'tengtest';
        columns qw(name);
    };
}

my $teng = TestDB->new(connect_info => [
    'dbi:mysql:database=testdb',
    'testuser',
    'testpassword'
]);

$teng->insert('tengtest', {
    name => 'penguinjr1',
});
------------------------------------------------------------
スクリプト実行後、MySQLにログインしてデータが登録されたかどうか確認したところ、正しくデータ登録されていた。

mysql -u testuser -p

mysql> use testdb

mysql> select * from tengtest;
+------------+
| name       |
+------------+
| penguinjr1 |
+------------+
1 row in set (0.00 sec)

<所感>
Tengは慣れれば非常に使いやすいと思います。とてもシンプルだな、という印象を受けました。スクリプト実行時のエラーメッセージもわかりやすい。
MySQLだけでなく、Oracleとも連携させてみたいです。
また、次回の Perl Begginers#4 は8/24(金)開催、「オブジェクトとパッケージ」がテーマということで今からとても楽しみです。
http://atnd.org/events/30711

2012年7月8日日曜日

さくらVPSにMySQLをインストール


さくらVPSにMySQLをインストールしました。
前回参加した Perl Begginers#3 でPerl→MySQLのO/Rマッパーについてたくさん紹介があったので、その事前準備です。

インストール手順については、既に色んな方がブログでエントリーを書かれているので、こちらの内容は自分用メモです。


1.さくらVPSにrootユーザでログイン

2.MySQLインストール
yum install mysql-server

3.MySQL起動
/etc/init.d/mysqld start

4.MySQLルートパスワード変更
mysql -u root

5.rootパスワードを更新
UPDATE mysql.user SET Password = PASSWORD('設定するパスワード')  WHERE User = 'root';

6.グラントテーブルを再読み込み
FLUSH PRIVILEGES;

7.MySQLとの接続を切断
quit

8.MySQLの再起動
/etc/init.d/mysqld restart

------------------------------------------------------------------------------------------------------
1.MySQLにログイン

mysql -u root -p
MySQLのrootパスワード入力

2.データベースの一覧表示
SHOW DATABASES;

2012年6月30日土曜日

Perl Begginers #3に参加してきました。


2012/6/29 19:00~21:00 Perl Begginers #3に参加してきました。
Perl Begginersの参加は前回に続いて2回目となります。

◯ATNDはこちら
http://atnd.org/events/28810

◯Togetter(@xtetsujiさん、ありがとうございます!)
http://togetter.com/li/329315

まず、セッション内容とは全く関係ないのですが、今回はノートPCなしでiPod touch(ATOK Pad装備) + Bluetoothキーボード(8,000円くらいだったと思う)というセットで、勉強会のメモに挑みました。
理由は、ノートPC(とはいってもネットブックだから1kgちょいなんだけど)が重たくて持ち歩きたくなかったから。

これはすばらしく効率がよかったです。いい買い物をしました。
難点は、一緒にTwitterはできません。
わからない言葉が出てきた時にググろうとするのも大変です。

それでも、ハンズオンでない限りPC持って勉強会に行く事はないかなー、と思いました。
では、肝心のセッション内容へ。


◯ビギナーズセッション
@studio3104_com さん


_人人 人人人人_
>  突然のFlentd  <
 ̄Y^Y^Y^Y^Y^Y^ ̄ 


に会場騒然。

6月号のSoftwareDesign読んどいてよかったー。概要くらいならわかる。
fluentd Casual Talksはメンツからしてガチュアルな人たちが揃ってて恐ろしすぎていけなかったし。
ちなみにMySQLもよくわからないけど、頭の中でOracleに置き換えて頑張りました。

MySQLのクエリに対してEXPLAINをかけてFluentdでログを出すPerlモジュールを作ったけれど、始めにuse databaseが実行されていないとどのデータベースに対してEXPLAINをかけたらいいかわからないから、その判別をしたい、という内容でした。(あってるよね・・・?)

シャーディングしていたMySQLのデータベースを一つにした時に、テーブル名が全く一緒になるので判別しようがなく、困るということ。

そしてガチな方々からのまさかのバッドノウハウ連打
・SQLのコメントにデータベース名を書いてしまえば?→結果的にコメントはログに流れなかったので無理でした。
・SQLのWHERE句にそれとなく書いちゃう?

今のSQL文全部作り直しですやん・・・
と、思いつつ、それくらい逃げ道のない難しい話のようです。

このシステムはオンラインのWebアプリケーションということだったので、EXPLAINをかける前にどのデータベースを使っているのか問い合わせる別のWebアプリを間に挟むのはどうか、ということで落ち着きました。

その後、別の部分で「後置if」は何もデータが返らなかったりはまることがあるのでやめたほうがいいですよ、というありがたいお言葉も。
(Javaでいうところのぬるぽですか?)

そもそも「後置if」を使うという発想がなかった。。。
ワンライナーも見てる分には面白いんですが、後でメンテする人のことを考えるとどうしてもネストしたくなっちゃいますね。
それくらいには社畜ってことさ♪


◯LT
※これだと内容が全くわからないので、Slide Shareでリンクできるようになったら後で資料を貼りたいと思います。

@ytnobody さん
PerlではじめてDBを触った時の思い出話。
Class::DBIは難しいので、DBIx::SimpleでさっさとO/Rマッパーに乗り換え。
(Class::DBIは見た感じJDBC接続とあんまり変わらなくて、そんなに難しそうにも見えなかったのだけど・・・歳の差かねえ・・・)
その後、色々乗り換えたけど、今はTengがお気に入り嬢だそうです。

まかまかさん
趣味のPerl同人活動が何よりも重要なのであります!
今年の夏コミでブース出るそうです。みんな行ってあげてね!
 どんぞこ楽屋 日曜日 東U-10a

@toku_bass さん
MySQLの検証環境と本番環境の環境を一緒にしてくれる MySQL::Diffの紹介。

確かに検証環境だけ微妙に構成違ってたりして困ることはよくありますね。
Oracleだと面倒くさいのでエクスポート-インポートしちゃいます。


@hirobanex さん
TengがDBIと比較してどれだけ便利か、という詳しいお話。
こちらのLTでTengでSQL直書きできることがわかったので、かなり興味がわきました。
あとは・・・DBがOracleでもうまく動くといいなあ・・・

あと、YAPCにトークを書かれたそうなので、「いいね」してあげてくださいー
http://yapcasia.org/2012/talk/show/2c531ede-c1ac-11e1-860d-28556aeab6a4


◯発表資料



おまけ
今回の個人的名言:
「ぽすぐれはオワコン」 緩いライセンスなのに、なんで流行んないんだろうね
「バインド変数を使わないと、椅子が飛んできます」 ふじわらさん、こんなところまで 
「データベース」→「ダースベーダ」 その発想はなかった


2012年6月14日木曜日

INTEROP 2012 に行って来ました

6/13(水)に幕張メッセで開催されていたINTEROPに行って来ました。
ちなみに幕張メッセ、INTEROP共にお初でした。


↓2階から撮ったブースの写真。

















残念ながら企業ブースはあまり回れませんでしたが、講演をたくさん聞いて満足して
帰ってきました。


◯基調講演:サイバー攻撃と戦うために理解すべき5つの最重要トレンド
サム・カリー氏
講演内容は詳細に書くといけないかもしれないので、3行ですませます。(当たり障りのないところで)

・クラウド化で基盤が見えなくなってきているから、利用者(サービス提供者)は気をつけろ
・モバイル端末が増えたから社用目的の場合、管理者は気をつけろ
・組織だったハッカーはヤバい

<所感>
英語のプレゼンを生で聞きたかった・・・というのが正直な感想。
しかし、自身の英語力がないので仕方ない。同時通訳をがんばって聞きとりました。
講演者の方はさすがですね。ほとんどスライドを見ないし、プレゼン資料に書いていないことまで
ほとんど記憶していてお話されている。
話の内容が興味深いこともさることながら、プレゼンテーションの仕方も勉強になりました。
(ろくろの手つきがちょっとありました)


◯NTTコミュニケーションズ:ソーシャルとクラウド化がもたらす日本社会の変化と今後のあり方

クラウドやビッグデータが現実的になってきた今の時代にあわせて、政府がプラットフォームに
なりましょうというお話。
ここでは、Gov2.0という言葉が出てきました。
この言葉を作ったのは、Web2.0を提唱したティム・オライリーとのこと。
アメリカでは既に数年前から実際に導入している事例があるようです。

まず、自治体がデータやプラットフォームを用意して、後は開発者側で自由にiPhoneや
Androidアプリの開発を行ってもらいます。
自治体はそれらのアプリを公開して、ユーザから情報を自治体へ流してもらうようにします。
例えば、どこそこの道路に穴が空いているといった情報を写真と一緒に添付して報告して
もらえれば、いちいち人手をかけて道路のチェックなどをしなくてもよくなります。

日本ではこれまで実証実験型の開発が行われてきましたが、うまくいっていないという現実が
ありました。
(実験だけして、商用サービスに発展しなかった。ITゼネコンという言い方をされていました) 
Gov2.0が整備されると、日本の雇用形態も変わっていって、グローバルに活躍できる人、
単純作業をする人、グローカル(グローバルで起こっていることを国内に展開する)の三種類に
分かれるだろうということでした。

<所感>
クラウドとビッグデータは本当によく聞く言葉になったと思います。
特にクラウドに関しては数年前から言葉はありましたが、スマートフォンの普及やクラウドサービス
ベンダーの台頭によって本当に身近になりました。
SNSの発展具合と比較して、クラウドを利用したアイデア家電個人的にちょっと残念感が
ありますが・・・国内家電メーカーの底力を見せてほしいところです。

Gov2.0という言葉は恥ずかしながら今回初めて聞きました。
日本でも実現出来れば面白いと思いますが、法律を整えるのに時間がかかりそうな気が
します。あと、現状の公務員を減らせない気が・・・

また、今後は終身雇用制度の崩壊と共に、優秀な人材以外はどんどん年収が下がっていくと
はっきり言及され、身が引き締まる思いでした。
もっと自分自身に付加価値をつけていかねば。
(英語か・・・)


◯最新標的型攻撃の実態と効果が見える防御対策

通常のウイルス対策ソフトやIDSでは検知できないマルウェア検知する、FireEyeという製品の紹介。
最近の企業情報漏洩は内部犯行はほとんどなくなって、ハッキングの割合が高くなってきている
そうです。しかも、なかなか削除できない厄介なものが増えてきているとか。
FireEyeはシグネチャベースでなく推論型でマルウェアを検知するため、侵入検知が可能だそう
です。

おまけ:
一部で噂になっている、オライリーの缶バッジコンプガチャ・・・
一回300円でバッジが3個入っているらしいのですが、さすがに3個はいらないかなーと思って躊躇してしまいました。今となっては、やっておけばよかった。(ネタ的に)




2012年6月9日土曜日

【雑記】会社で技術を得るということ

今まで私は、「会社」というものは「組織が利益を得るために、社員が自身の保有するスキルを
生かして貢献する場所」であり、その「対価として給料を得ている」のだと考えていました。

少なくとも「職場は自分がスキルアップするための場ではない」と思っていました。
会社にいる間は単純作業であろうと何だろうと「仕事」をこなさなければいけないのだから、
与えられた仕事をより速く正確にこなすことが最重要だと思っていました。
(その考えは今でも変わっていませんし、社畜と言われても構いません)

「仕事」をこなすために必要なスキルはプライベートな時間を使った自主学習でやって、
会社でそのスキルを業務に生かすべきだと。


しかし、その考えは少し違っているかもと最近思うようになりました。

ここ2週間ほど、UNIX上で動く業務システムの環境設定(主にミドルウエア)をやっていましたが、
勉強になることの多かったこと。

これまでUNIXはほとんど触ったことがなく、最近ようやくLinuxをさくらVPSで触るようになった
ばかりなので、実際に手を動かしてみると色々とエラーの壁にぶち当たるのです。
そのうちエラー内容に対してもパッと勘が働くようになり、レベルは低いけど「少しは成長した
かな」と実感することもありました。


普通は定時間でも8時間は会社にいるのだから、その時間で仕事をこなしつつ、同時に
新しいことに触れられればそれは成長して当たり前ですよね。


どんな業務に携われるか、どんなプラットフォームのシステムに携われるか、流動的な
人員配置・ローテーションが可能かどうか、
会社から与えられる「環境」は重要なんだと気づかされた件でした。

その上で、今仕事で必要とされているスキルに優先順位をつけて自主学習を進めて
いけたらいいなと思っています。


<補足>
自分で勉強もしなければ、工夫もしない。与えられたことだけを何も考えずに淡々とこなす。
こういう人が増えたような気がします。
複数ファイルのGrep、文字列置換など、知っていれば1分で終わることを永遠と手作業で
1時間もかけてやるのはなんだかなあと思います。


会社の環境も大事ですが、それだけが全てではありません。

2012年5月20日日曜日

qpstudy 2012.05 エンジニアのためのハードウェア徹底入門 に参加してきました(途中まで)

約1年前、初めて勉強会に参加するきっかけとなった、とっても思い入れのあるqpstudy。

今回は本当に初めて初心者にやさしいインフラ勉強会でした。(訳:自分でも理解できた)
ひとえにスタッフの皆さんの努力によるものと思います。一参加者としてとても嬉しかったです。
おつかれさまでした!

qpstudy公式ツイッターアカウントによる事前の案内、qpstudyポータルサイトに掲載されているセミナールームへの行き方、入退館の諸注意の案内などなど、全て完璧だったと思います。(だって迷わなかったし!)


受付がバーコードリーダ方式を採用してスタッフ業務が楽になったり、色々新たな試みを工夫されてました。これからもどんどん成長していきそうですね、期待しています。

また、開始15分前に会場入りしたのに、すでに席の8割が埋まっていてビックリしました。いつもは直前まで結構空いているのに。ぬかったぜ・・・
そして顔見知りでない参加者が8割・・・いつもなら顔見知りの人8割なのに。
qpstudyも前回宣言した通り、新しいステージに来たのかなと実感した出来事でありました。

しかし本軸が全くブレないのがqpstudy、ネタは満載。
まずはセッションのネーミングがひどい素晴らしい。


・やさぐれギンガさんのアーキテクチャ入門(ためしてガッテン)(仮)
・卑しいしょっさんのCPU入門(仮)
・いやらしい@hasegawのI/O入門(仮)
・優しいしののめのインタフェース入門(仮)


・・・よくこのタイトルで新人さんが70人近くも集まったなあと思います。


セッションタイトルは、常連さんは「いつもどおり」のイメージで、新人さんは「怖くてツッコメない」状態だったのではないかと勝手に思っています。

また、「一緒に行こうよ!」って口コミで広まったケースがあったみたいです。

勉強会に行ってみたいけど、1人だと恐い・・・という方は、お友達を誘って一緒にくるのもいいですね。
ベテラン・新人問わず世代を超えた交流ができるのが、勉強会の一番いいところだと思っています。

前置きが長くなりました。
では、セッションの内容について。

・やさぐれギンガさんのアーキテクチャ入門(ためしてガッテン)(仮)
コンピュータの五大装置(制御、演算、記憶、入力、出力)についての小芝居がありました。
ダメなコンピュータを擬人化していましたが、面白かったです。
(主記憶の「揮発しちゃったー」はわかったのかな・・・)

このあたりの基本って、私が新人だった頃から全く変わってません。
基本は大事です。復習しなきゃ。(ちょっと忘れてた)

(感想)
新人教育として、今回の寸劇はなかなかいいですね。
というか、クオリティ上げてDVD出してほしい。(コミケで売れば・・・) →冗談です。
セッション内容とは関係ないのですが、新人さんにはちょっとお高いし内容は堅いけどITECの
以下の本をオススメします。
基本情報処理技術者試験の参考書としても使えます。

コンピュータシステムの基礎
http://www.amazon.co.jp/dp/4872687728


・卑しいしょっさんのCPU入門(仮)
CPUがどのように演算処理を行なっているかという真面目なセッションでした。
Fetch→Decode→Execute→Write Back というステージをCPUは順に繰り返しています。

CPUの高速化技法として
・パイプライン
・スーパースカラ
・アウトオブオーダー(Out-of-Order) →これ知らなかった
という方法があります。(詳しくはWikipediaを見てね!)

(省略)CISCとRISCの話 →今あまり気にする必要ないそうです。仕組みをおさえておけばOK。

CPUの動作を知るためには、マシン語を理解する必要があります・・・が、
それはさすがに大変なので今回解説で使用する言語はアセンブラでした。フー。

アセンブラはレジスタの種類と幾つかの命令を知っていればだいたいのことはできます。

まとめ:
アセンブラは重要です。そして命令数も少なくて覚えやすいので Let's try!
英語も重要です。


(感想)
昔、業務でアセンブラをやっていたので、低級言語をやると高級言語のありがたみがよくわかる、
というのはすごく気持ちがわかりました。
あと、プログラミングは 一つの言語を極めると他でも応用が利くので、最初はあれこれやらずに
一つの言語を徹底してやるというのを私はお勧めします。(特にアセンブラはいいね!)


・いやらしい@hasegawのI/O入門(仮)
・優しいしののめのインタフェース入門(仮)
→こちらのセッションは時間切れで聞けなかったので、別途Ust視聴後に感想を(書ければ)書きたいと思います・・・


◯togetter
http://togetter.com/li/306227

◯Zusaarはこちら
http://www.zusaar.com/event/272008?utm_campaign=qpstudy&utm_feed=twitter

2012年5月16日水曜日

【第3回】#SmartHacks - スマートフォンブラウザ技術勉強会 - ~ スマートフォン上で動くhtml5 + CSS3 + Javascriptについてhackathon形式で学びます ~ に参加してきました

スマホアプリ開発の仕事は予定にないのですが、今ホットなソーシャルゲームの実装に興味があったので参加してきました。

HTML+JavaScript+CSSで出来るっていうのがやっぱりすごい。
昔では考えられなかったから、はじめに思いついた人はすごいと思う。納豆みたいなもの?
私も昔はRIAといったらFlashでしょ、みたいな感覚でした。(恥)

◯ATNDはこちら
http://atnd.org/events/27983 

◯株式会社フォリフ 大橋氏 実践!HTML5で作るスマホブラウザゲーム 資料 

◯togetterまとめ
http://togetter.com/li/303969

 
1. 実践!HTML5で作るスマホブラウザゲーム
Corollin' PlanetというアプリをHTML5+JavaScript+CSSで実装したそうです。
セッションで使用されたCorollin' Planetのゲーム本体はこちら
http://apps.facebook.com/corollin/


Corollin' Planetにはfacebook 連携機能があります。
画面右上に他の人がクリアした結果を見ることができるボタンが配置してあり、
他人がどうやってクリアしたか、プレイ記録を見ることができます。
面白いですね。

ちなみに技術的な実装方法は・・・
slideshareを見たほうがよく理解できると思います。全部書いてあるし。
(さすがに手抜きなので、後で追記します・・・)

アニメーションは複雑な動きができるcanvasと実装が簡単なCSS3という2通りがあって、ゲームのメインはcanvas、メニューやストーリー部分はCSS3を組み合わせて使っているということです。

パフォーマンスについては登壇者の方がかなり気にされていて、

・Retinaディスプレイ対応(ただし、iOS4だと逆に遅いことがある)
・描画範囲を最小限にする
・GPUアクセラレーション(ただしiOS限定)

canvasのレイヤーを2枚(キャラクターと背景)にして、キャラクター部分のみ描画させることで描画範囲を最小限にしてパフォーマンスを改善するという工夫をしているそうです。


ちなみに、開発者として一番参考になったのが、最後のまとめでした。^^;

とにかく、Android端末のチェックを万全に。
端末、メーカー別の詳細チェック。特にAndroid2.1でのバグつぶしが大変だったようです。
当時で10端末ほどテストしたとのこと。
(特に苦労した端末はIS03と最初のXperiaだそう。昔あった、IEとそれ以外のブラウザで動作が違うというトラウマを思い出す・・・)

iOSで動いているものをAndroidで動かそうとすると大変だけど、
逆はそうでもないとのこと。Androidで開発してからiOSに移植するのをオススメしていました。


2.安定した機能を使う。
実際に他社で使用されているものなどを積極的に取り入れる。
俗に言う「枯れた技術を使う」なんていう感じでしょうか。


3.ライブラリを使用する。
ここ一年ほどでJavaScriptのライブラリはかなり充実してきていて、
enchant.js、arctic.js、easal.js などを使うと安定したものを提供できるそうです。

などなど、プラットフォームは変われど、開発の基本は変わらないという印象でした。

※ライブコーディングについてのセッションは、色々あったので割愛・・・




◯おまけの感想
・めったに行かないから怖かったよ、渋谷。
でも、ハチ公口じゃなくてよかった・・・


・女性が多めでしたよ!独身男性の皆さんチャンスです!


・飲み物が無料で、バリスタさんがカフェオレ入れてくれました。
上級者(?)の方はホイップクリームが乗るやつオーダーしてた。ムリムリ。
懇親会もビールや軽食が出て無料なんて初めてでした。参加できなかったけど。

2012年5月10日木曜日

さくらVPSにPlackをインストールして実行してみた(cpanmで再挑戦)

「Plackインストール時の警告について調べてみた」のエントリでアドバイスのあったcpanmのインストールとPlackの再インストールを実施してみました。

http://penguinjr1.blogspot.jp/2012/05/plack.html

手順はすごく簡単でした。

1.cpanmのインストール
     cpan App::cpanminus

2.Plackのインストール
     cpanm Task::Plack

root権限でこの2行を入力するだけ。
Plackのインストールも[yes]をいちいち聞かれないし、楽々でした。
これは非常にオススメです。

pluckupを実行するとサーバも動いて、ブラウザから問題なくアクセスできました。

2012年5月9日水曜日

Plackインストール時の警告について調べてみた

以前のエントリでPlackインストール時に警告メッセージが幾つか出ていましたが、それについて調べて(= ググって)みました。

make test had returned bad status, won't install without force

しかし、よくわからない・・・
他のモジュールでこのエラーが出るとモジュールの実行ができないみたいだけど、今回のPlackは普通に動いていたし。


そこで、これは専門家に聞いたほうが早いと思い、Perl Beginnersの公式サイトに質問してみました。
http://www.perl-beginners.org/

@ytnobodyさん、素早い回答ありがとうございます!


◯質問内容
さくらVPSにPlackをインストールして動作させてみました。
http://penguinjr1.blogspot.jp/2012/05/vpsplack.html

インストールの最後に「make test had returned bad status, won't install without force
」というエラー(?)が出たのですが、これは気にしなくてもいいのでしょうか?
また、but 3 dependencies missing という警告も将来的に何か悪さしたりするのでしょうか。

エラーメッセージでググってみましたが、ちょっとよくわからず・・・
もしご存知でしたら、教えてください。

◯回答
ブログ読みました!まずはPlackデビューおめでとうございます!!!

実はcpanコマンドは、今日ではあまりオススメできない状況です・・・
かわりに、cpanm(App::cpanminus)を使うと楽々です。

※手前味噌ですが参考にしてください><
http://yellowstore.blogspot.jp/2010/04/perlperlercpanminus.html

エラーについてですが、Perlでは、CPANモジュールのインストール時に自動でテストを行います。
このテストと言うのは、CPANモジュールが期待通りに動作することを保障するための物で、今回は、そのテスト結果がNGだった、と言うことになります。
原因は、Plackに必要とされているCPANモジュール(=依存モジュール,dependency)のうち、3つのモジュールのインストールに失敗していることです。

対策として、まずcpanmを導入し、cpanm --reinstall Plack を実行してみてください。
これで依存モジュールがきちんと導入されると思います。

------------------------------------------------------------------------------------------------
なるほど・・・これはcpanmを使ってぜひ再チャレンジしてみたいですね。
エラーはやっぱり気持ち悪い><





2012年5月7日月曜日

JUnitからPL/SQLのテストをする方法

が簡単に実現できたらいいなあ~
自動テストしたいよ、自動テスト。

残念ながら、まだ作ってないよ!てへぺろ☆(・ω<)

とはいえ、一応構想はあって、
JDBCでOracleに接続するClassを作って、そこからPL/SQLをCallする。
そのClassをJUnitから使うのはどうかなあ。

とにかく、やってみないとできるかどうかわかんないな(汗)


※釣りエントリでごめんなさいね。
 逆にいい方法があったら教えてほしいです。><

5/9 追記
なんとか上に書いた方法でJUnitを使った自動テストはできるようになりました。
ただし、PL/SQL側の共通モジュールだけ。。。残念。

PackageのMAIN_PROCからCALLされる内部関数をどうしてやろうか、ちょっと思案中です。
まとまったところで、エントリしたいと思います。

2012年5月6日日曜日

Oracle Database 11g R2 Express Edition(Windows x32)のインストール

Oracle Database 11g R2 Express Editionを自PCにインストールしました。

インストール先OS:Windows7 Starter

1.ダウンロードとインストール

◯ダウンロードサイト
http://www.oracle.com/technetwork/products/express-edition/downloads/index.html
ダウンロードしたzipを解凍すると、中にsetup.exeがあるので実行します。
SYSとSYSTEMのパスワードを入力するように促されるので、入力して「次へ」でインストールが開始されます。

個人的には、「サマリー」画面は念のためスクリーンショットを取っておいたほうがいいと思います。(以下はデフォルトの設定)
2.DB起動

スタートメニューの「データベースの起動」というメニューからDB起動ができます。
スタートメニュー→Oracle Database 11g R2 Express Edition→データベースの起動

起動中画面↓



サービスで確認すると 、OracleDBが起動しています。


3.DB停止

DB起動と同様に、スタートメニューの「データベースの停止」というメニューからDB停止ができます。
スタートメニュー→Oracle Database 11g R2 Express Edition→データベースの停止


停止中画面↓












サービスで確認すると、DBが停止しています。








4. SQL*Plus の起動

こちらもDB起動、停止と基本操作は同じです。
スタートメニュー→Oracle Database 11g R2 Express Edition→SQLコマンドラインの実行

で、SQL*Plusが立ち上がります。

connect / as sysdba

でDBにログイン出来ました。


5. GUI管理ツール

簡単な管理ツールがついています。
スタートメニュー→Oracle Database 11g R2 Express Edition→スタートガイド


こちらのツールで、表領域の使用状況や初期化パラメータの内容を確認することができます。
ログイン時にはインストール時に入力したSYSTEMパスワードを聞かれます。


※Enterprise Editionのような機能満載の派手な操作画面ではありません。
コマンドを使うことも多そうなので、いい意味でDBAのSQLを覚えられるかもしれません。

2012年5月5日土曜日

さくらVPSにPlackをインストールして実行してみた


2012/4/27に開催された Perl Bigunners  #2のLTで発表のあった、
@ytnobodyさん「PSGIへの誘い」

の資料を参考に、さくらVPSにPlackをインストールしてみました。

LT資料はこちら
http://www.slideshare.net/ytnobody/psgi-12705043


Webアプリケーションを動作させるのに、Apache等のウェブサーバが必要ないというお手軽さ。
LTでは設定も簡単そうに見えたので、チャレンジしてみました。


1. CPANのインストール
perl -MCPAN -e shell コマンドを実行すると、
Can’t locate CPAN.pm in @INC …のエラーが出て実行できませんでした。
調べてみると、どうもCPAN自体がデフォルトでインストールされていない様子。

さくらVPSのリモートコンソールからrootユーザでログインし、以下のコマンドを実行したところ、
CPANのインストールが実行されました。

yum install perl-CPAN

実行後、動作するか確認します。
cpan →起動しました!
exitでcpanモードから抜けます。












2.Plackのインストール
いよいよ本題のPlackのインストールです。
こちらのサイトを参考に、インストールを進めました。


◯Plack入門:Plackでウェブサーバを起動してhello worldするまで


例のごとくrootユーザで
cpan Task::Plack

を実行。

ここからが異常に長かった・・・
ところどころ、[yes]を聞かれるのですが、その数の多いこと・・・!
途中で盛大に寝落ちしていました(汗)
(あとあとフォロワーさんに教えてもらったのですが、yesコマンドというものがあるらしい。
ただ、今回は「n」を勧められる場面もあったので使えたかどうかは・・・?)

それでもなんとかインストールを終わらせることができました。

最後の画面はこんな感じです。
赤枠部分でいくつかエラーが出ているように見えるのですが問題ないのかな?
後でまた調べます。







エラーと警告らしきもの
but 3 dependencies missing (依存関係の警告?最新にすればいいのかな?)
make test had returned bad status, won't install without force

※今回、全体のインストールログを取るのを忘れました・・・大失敗!
次は気をつけます・・・

※ツイッターで「cpanコマンドじゃなくてcpanmを使うとインストールが楽になるよ」と教えて頂きました。ありがとうございます。


3.動作確認
/home/ユーザ名 ディレクトリ以下にsample.psgiを作成して配置しました。
内容は「Hello World」を表示させるだけの単純なもの。

plackup  /home/ユーザ名/sample.psgi

で常駐プロセスを動作させ、ブラウザから動作確認します。





プラウザからの確認







意外とあっさり動いてくれて、驚きました。
環境構築が楽でコード量も少なくてすむのはありがたいですね。(^^)


---追記 5/5 11:20
ふと、日本語の表示ってできるのかな?と疑問に思い、Hello Worldの部分を日本語に変えてみました。

結果としては、全く問題なく動作しました。








今回は、理屈は後回しにしてとりあえずやってみよう!という姿勢で始めたので、仕組みをきちんと理解できていません。少しずつ、PSGIの仕組みについても理解を深めていきたいです。

2012年5月4日金曜日

【雑記】今になってブログを始めた理由

Perl Beguinners #2 勉強会の感想をTwitterに流していて、その様子を見ていたフォロワーさんにブログがないことを伝えたところ、

「これを機に作ってみてはどでしょ?きっかけは重要ですよw」

とチキンな私の背中を押してくれたのが直接のきっかけでした。


これまで、参加してきた勉強会では
「ブログを書くまでが勉強会です!」 (小学生の遠足・・・?)
と散々言われていたので、そのたびに心苦しい思いをしていたのは事実です。

ただ、昨年度は仕事もプライベートもゴタゴタしていて、正直ブログを書く余裕がありませんでした。
やっかいだったのは、仕事がほぼ24h体制で会社からの電話を常に気にしていないといけなかったことと、家にいないと万一の際の対応ができないので外に自PCを持ちだして勉強する、というのも難しかったことです。
様々な精神的プレッシャーから体調を崩してしまったこともありました。

また、勉強会は土日開催が多く、半日(懇親会まで行くとほぼ1日)家を空けることになるので、家族の理解を得るのも大変でした。

そういった状況で、ブログを書く時間と気力を捻出するのは非常に難しく、結局勉強会で自分用にメモしたものをPCに保存して終わっていました。
それでも新しい言葉を覚えたり、貴重な現場の経験談を聞くことができたので、勉強会に参加することは非常に楽しかったです。


現在は仕事内容が変わったので、会社からいったん離れてしまえば仕事のことを気にする必要がなくなりました。プライベートの時間に集中して勉強することができるようになり、充実した生活になってきたなと感じています。

それでも主人と過ごす時間は一番大切にしていて、業後に一人でPCに向かうことはほとんどありません。
(ですので主人が寝ている朝の時間にこうしてブログを書いたり、勉強したりしています。しかもキーボードの音がうるさくないようにマクドナルドとかで(笑))


※最初は勉強会の感想だけ書く予定だったのに、おかしいなあ・・・
色々エントリが増えてきたぞ。ま、いいか。(適当)

さくらVPSのsshd_config 追加設定

昨日のブログエントリをTwitterのフォロワーさんに見ていただいたところ、以下の様なアドバイスを追加で頂きました。

(一部抜粋)
-------------------------------------------------------------------------------------------------------------------------------
鍵認証でログインできたら、USEPAM NO しておくと完璧ですヾ(@⌒ー⌒@)ノ
-------------------------------------------------------------------------------------------------------------------------------

USEPAMはsshd_configの設定にあったので、修正してプロセス再起動しました。
(デフォルトの設定はyes)

ちなみに、この「USEPAM」のパラメータの意味がわからなかったので、調べてみました。

USEPAMのPAMとは「PAM認証」のことであり、
-------------------------------------------------------------------------------------------------------------------------------
PAM(Pluggable Authentication Module)とは、 各種の認証処理を実行するモジュール群と、 それを利用するための標準的なAPI(Application Programming Interface)を備えたライブラリからなるユーザー認証システムのことです。

PAMを搭載したシステムでは、認証を必要とするほとんどのアプリケーションがPAM対応に作られており、標準の状態では/etc/passwdファイル(あるいは/etc/shadow など)の情報を元に認証を行うPAMモジュールを使うように設定されています。このPAMモジュールは、アプリケーションに代わって従来のUNIXパスワード認証を行っているに過ぎません。
(出典:http://www.atmarkit.co.jp/flinux/samba/sambatips02/sambatips02.html


-------------------------------------------------------------------------------------------------------------------------------



このあたりが問題なんでしょうね。
便利だけどセキュリティ的には・・・?というところなのでしょうか。

前回からsshd_configの設定を色々変更してきましたが、
sshd_configのパラメータ全体については、以下のサイトがわかりやすかったです。

◯sshdの設定(CentOS5)
http://www.obenri.com/_ntp_sshserver/sshdconfig501.html

前回変更したsshd_configのパラメータの意味は以下の通りです。

RSAAuthentication yes        →RSA認証(許可)
PubkeyAuthentication yes      →公開鍵認証(許可)
AuthorizedKeysFile      .ssh/authorized_keys    →鍵ファイルの場所(デフォルト値) 

PasswordAuthentication no    →パスワードなしでの認証(拒否)


2012年5月3日木曜日

さくらVPS公開鍵認証の設定でドハマリしました(汗)


前回からの続きです。
さくらVPSのセキュリティ設定で、公開鍵認証でのログインに挑戦しました。
これが3時間近くかかるというドハマりっぷりでした・・・

@ITに詳しい記事があったので、参考にさせて頂いてます。

鍵交換方式のsshでアクセスするには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/429usekeyssh.html


1.PuTTYを使って公開鍵・秘密鍵の作成

PuTTYダウンロードサイト
putty-gdi-20120211.zipをダウンロード、フォルダを解凍しputtygen.exeを実行。

鍵生成の際は、「Generate」ボタンをクリック後、アプリ上でマウスをグリグリ動かしました。
鍵生成時は擬似乱数じゃなく、ちゃんと乱数で生成しているのですねー。真面目だ(当たり前?)

そうすると、こんなイメージで認証ファイルの中身ができます。
「Save public Key」をクリックすると公開鍵が、「Save Private Key」をクリックすると秘密鍵ができます。
「Save public Key」の場合、なぜか拡張子がつかないので、ファイル名の最後に「.pub」をつけます。

ファイルは適当な場所に保存します。



2.公開鍵のアップロード
1.で作成した公開鍵をサーバの/home/ユーザ/.ssh 以下にアップロードします。

私はGUI大好き人間なので、WinSCPを使用してファイルをサーバにアップロードしました。
このあたりは各人の好きな方法で何でもいいと思います。

WinSCPダウンロードサイト


3.公開鍵ファイルのOpenSSH化
PuTTYで作った公開鍵はそのままでは使用できず、OpenSSHの形式にする必要があります。
サーバ上で、以下のコマンドを発行し、OpenSSHの形式にしましょう。
root権限で行なってください。

ssh-keygen -i -f 公開鍵ファイル名 > 新公開鍵ファイル名


4.公開鍵ファイル名の変更
3.で作成した、新公開鍵ファイルをコピーし、名前を「authorized_keys」に変更します。
もともとauthorized_keysが存在している場合は、catコマンドで追加します。

cat  新公開鍵ファイル名 >> $HOME/.ssh/authorized_keys


4.パーミッションの変更
rootでログインして、.sshとauthorized_keysのパーミッションを以下の通りに変更します。
.ssh → 700(rwx------)
authorized_keys → 600(rw-------)


5.動作確認
putty.exeで動作確認を行います。
putty.exeを起動すると設定画面が出てくるので、以下の設定をしてOpenします。
・Host Name
・Port(デフォルト22から変更している場合)
・Private key file for authentication →秘密鍵を指定

他にも細かい設定がありますが、とりあえず最低限これだけ設定すれば動きました。

鍵認証が成功すると、以下の様な画面が立ち上がってパスフレーズを入力するように促されます。鍵を作成した際のパスフレーズを入力すると、ログインすることができます。


















6.sshd_configの編集・プロセス再起動
上記設定だけではパスワード認証が可能なので、 sshd_configを編集し、パスワード認証を不可にします。

変更箇所は以下の通り。
vi /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

PasswordAuthentication no

その後、プロセス再起動をかけます。

/etc/init.d/sshd restart

これでパスワード認証が拒否されるようになります。


★たったこれだけのことで、文献もたくさんあるのに、なぜドハマリしたか
1.公開鍵をOpenSSH方式にしないと動かないことを見逃していた。(1回目)
2.公開鍵をOpenSSH方式に変換後、authorized_keysをコピー作成する際にtypoした。(2回目)

ここからはクライアントからサーバまで、設定を洗いざらい見直しました。
「サーバーが鍵を拒否しました。」
の文字列は当分見たくありません・・・


公開鍵認証ができなくて困っていることをTwitterでつぶやいた時、フォロワーさんがアドバイスをたくさんくださいました。
本当にありがとうございます!

------------------------
●Twitterでいただいたアドバイス

鍵ファイルのパーミッション?

あと ~/.ssh ディレクトリのパーミッションが700になってないとか・・・?

sshの鍵認証が通らない原因か・・・ あとよくあるのが「公開鍵コピー時に改行混入」

「authorized_keys のファイル名間違い」「(OS再インストール時などの場合)クライアント側のknown_hostsに古いhostkeyが残ってる」とか?

特にコピペでauthorized_keys作るときになりがちなのが改行混入

wc -l authorized_keys とかして行数確認するよろし

あと、公開鍵認証で正常ログインできるようになったら、忘れないうちにパスワード認証を無効してsshdを再起動だな これやらないと意味がない・・・

サーバ側で必要なキーは初回起動時に自動作成されるはずだから気にしなくても大丈夫 puttygen使ってるんだったら、サーバへコピーする鍵はOpenSSH用でないとまずいですねー

ぼくも何度か鍵を拒否されましたが、きちんと鍵作り直したらいけました。
鍵を2048bitで作ってみてください

------------------------

2012年5月1日火曜日

さくらVPS(月額980円)を借りてみました



2週間のお試し期間につられ(笑)、さくらVPSを契約しました。
一度プランを決めてしまうとスケールアウトはできないようですが(そんなのはクラウド
サービスの方でやれってことですね)、月額980円で利用できるのは魅力的なので契約
しちゃいました。(白い小動物との契約では(ry)

前回参加した Perl Beginners #2で、PSGIを設定しても怒られないのがさくらVPSだというのを聞いて
刺激を受けたのは確かですが、それ以上にLinuxの設定・運用に興味がありました。

会社ではWindowsサーバの運用しか経験がなく、今までUnix、Linuxに触る機会がありませんでした。
また、去年までインフラ系の仕事をしていた関係で、Twitterのフォロワーさんは自宅にサーバーが
あったり、サーバーラックがあったり、ネットワーク機器がしこたまあったりする方ばかりで、
家に置き場がない私には正直実機を使ったインフラの勉強は無理だと思っていました。

今年度からは古巣のアプリ屋に戻ってきましたが、開発は自分のPCだけでできることも多いので、
主にJava6の新機能を勉強しています。

本題からだいぶそれましたが、そんな身の回りの変化もあり、本腰を入れて色々チャレンジする年に
してみようかなと思っています。

なお、さくらVPSの初期設定を行うにあたり、以下のサイトを参考にさせて頂きました。
ありがとうございます。
http://www.obenri.com/_command/passwd01.html
http://suin.asia/2010/10/11/sakura_vps_ssh

実際にやったことは以下の通りです。ほとんど上記サイトの手順で実施できました。
  1.rootのパスワード変更
  2.ユーザーアカウント作成、パスワード設定
  3.SSH待受ポートの変更
  4.rootのパスワードを無効化
  5.SSHDの再起動
  6.外部からのSSH接続でrootアカウントのログインができないことを確認。
  2.で作成したユーザアカウントからはログイン可能。

公開鍵認証はまだ設定していないので、明日以降実施する予定です。


2012年4月28日土曜日

Perl Beginners #2 に参加してきました


ATNDはこちら
http://atnd.org/events/26500


2012/4/27 Perl Beginners #2 という勉強会に参加してきました。
感想などをつらつらと書いてみたいと思います。

1.勉強会全体について
  「初心者向け」とうたっている、玄人多めの勉強会にまた参加してしまいました。
  (でも、某qpstudyの玄人割合よりひどくないと思います)
  ※某といいつつ隠す気ゼロなのは突っ込まないでください。|д゚)チラッ >リーダーゴメンネ

  ちなみに私はWebシステムでPerlを使用していません。
  運用でログ(テキスト)の加工処理をPerlで行なっている程度なので本当に初心者です。

  今回の勉強会は、質問セッションとLTという内容でした。
  質問セッションでは、初心者が困っていることを質問するという形でしたが、登壇者の方は
Perlをかなり触っている印象でした。

WebシステムでPerlを使っていない身としては内容についていくのが精一杯でした。
ごめんなさい。

LTはさすがPerlを長年触っていらっしゃる方の内容という感じで、非常にわかりやすく勉強に
なりました。
  普段、JavaやCなどのかっちりした系の言語を扱っているので、PerlでWeb(しかもCGI?)って
どうなんだろうと思っていましたが、実際に商用サービスでも実績があるんですね。

このあたりは完全に私の勉強不足です。
  次回はPerlのWebシステム(商用)について、システム構成やアプリの作り、障害時の対応
などの生の業界話を聞いてみたいです。

2.会場について
  文京シビックホールは行ったことがあったので、とくに迷いませんでした。
  (※ただし建物に着くまでの話)
  建物内部はズドーンと吹き抜けている構造で、入った瞬間やばいと思いました。
  トイレ探すのにウロウロして、かなり不審者度が高かったと思います。
  しかし、これは私の迷子スキルが高いせいなので、会場のせいではありません。
  会議室は綺麗で、椅子の数にも余裕がありとても良かったです。

3.開催日時について
  家族がいる身としては、平日の夕方2時間程度の勉強会というのは非常にありがたいです。
  土日で丸一日かかる勉強会だと結構いやがられるので・・・
  2時間くらいだと集中力も切れずに聞いていられるので、適切だと感じました。

4.次回に向けて
  耳慣れない用語ばかりで戸惑う場面もありましたが、とても勉強になったので次回の開催を
心待ちにしております。

  Web関連のセッションであれば、他の言語と比較したシェア率とかPerlは他と比べてここが
 優れているんだ!(もしくはここがちょっと弱い)といった強み弱み
を聞いてみたいです。
  後は本格的にWeb開発されてる方の開発環境やデバッグ・テストの方法などが知りたいです。

個人的にはビジネスよりの話に興味があります。

5.その他
 ・主催者殿がMac派でなく、Windows派でうれしかった。
デモでviを使っていたのは見なかったことにします。
 ・ガチホモ合コンを遠目から眺めたかった。(参加したらガチホモ合コンでなくなってしまうのでw)
 ・さくらVPS借りてPSGIやってみようかな・・・(予定は未定)