神様にすすめられるままに、思わず衝動買いしてしまいました。読んで理解出来るかということは抜きにして、データの扱い方を勉強できそうです。
いまRubyの本を読んでいるので、それが終わったらこの本を読もうと思ってます。
そのあとは、Unixシェルの本、そのあとはTCPの本と当分は寝る前の読書に困ることはなさそうです。。
2009年2月18日水曜日
2009年2月14日土曜日
[Perl]リファレンスの壁。デリファレンス。
少し調べた結果、リファレンスとは場所を示すものなんだということ。
とりあえずデリファレンスするには
${$scalar} # 先頭の記号はそれぞれ参照先の型
$$scalar
@{$array} # 配列全体のデリファレンス
@$array
$array->[0] # 要素をひとつだけデリファレンス
%{$hash} # ハッシュ全体をデリファレンス
%$hash
という感じだと思いました。
これを組み合わせれば配列のハッシュやハッシュのハッシュなど
ネストされたものを扱えそう。
とりあえずデリファレンスするには
${$scalar} # 先頭の記号はそれぞれ参照先の型
$$scalar
@{$array} # 配列全体のデリファレンス
@$array
$array->[0] # 要素をひとつだけデリファレンス
%{$hash} # ハッシュ全体をデリファレンス
%$hash
という感じだと思いました。
これを組み合わせれば配列のハッシュやハッシュのハッシュなど
ネストされたものを扱えそう。
[Perl]リファレンスの壁。配列の配列。
ネストされた配列やハッシュの値を取り出す
foreach my $i (@array){
foreach my $m (@i){
print "$i";
}
}
とやってもエラーになってしまいます。
Rubyのときは意識しなくても似たような感じで取得できましたが、Perlではうまくいきません。
で、よくわかんないけどリファレンスとかデリファレンスって言うものが関係あるんじゃないかと今調べてます。
foreach my $i (@array){
foreach my $m (@i){
print "$i";
}
}
とやってもエラーになってしまいます。
Rubyのときは意識しなくても似たような感じで取得できましたが、Perlではうまくいきません。
で、よくわかんないけどリファレンスとかデリファレンスって言うものが関係あるんじゃないかと今調べてます。
2009年2月11日水曜日
[Perl]useしても自作packageが使えない件(その2)
前回「useは@INCの変数を参照する」という事が分かり確認作業をしました。
実際に自作packageを使うには、どうするんだろ?と考えを巡らせていたところ
さらに神様の救いの手が。
use lib "/hoge/hoge/lib";
見たいな感じで行きなさい。と。非常にダイレクトで分かり易く。
さらには
use FindBin;
を使って、実行パスを取得しなさいと。
これを組み合わせれば、
use FindBin;
use lib "$FindBin::Bin/lib";
みたいに出来ました。
最後に、神様はちゃんとrequireとuseの違いやimportの事も説明してくれました。
実際に自作packageを使うには、どうするんだろ?と考えを巡らせていたところ
さらに神様の救いの手が。
use lib "/hoge/hoge/lib";
見たいな感じで行きなさい。と。非常にダイレクトで分かり易く。
さらには
use FindBin;
を使って、実行パスを取得しなさいと。
これを組み合わせれば、
use FindBin;
use lib "$FindBin::Bin/lib";
みたいに出来ました。
最後に、神様はちゃんとrequireとuseの違いやimportの事も説明してくれました。
[Perl]useしても自作packageが使えない件。
会社にいる神様にお伺いを立てたところ、useしたものはグローバル変数@INCを見ながら探しにいくそうで。
だからとりあえずDumperして@INCの中を見てみなさいよ、と。
#!/usr/bin/perl
use Data::Dumper;
warn Dumper @INC;
としてみたら、あらビックリ
$VAR1 = 'C:/strawberry/perl/lib';
$VAR2 = 'C:/strawberry/perl/site/lib';
$VAR3 = '.';
$VAR3でちゃーんとカレントディレクトリを見にいってるじゃあーりませんか(win環境で試しました)。
とりあえず、今回は確認作業終了。
だからとりあえずDumperして@INCの中を見てみなさいよ、と。
#!/usr/bin/perl
use Data::Dumper;
warn Dumper @INC;
としてみたら、あらビックリ
$VAR1 = 'C:/strawberry/perl/lib';
$VAR2 = 'C:/strawberry/perl/site/lib';
$VAR3 = '.';
$VAR3でちゃーんとカレントディレクトリを見にいってるじゃあーりませんか(win環境で試しました)。
とりあえず、今回は確認作業終了。
2009年2月10日火曜日
[Perl]のImagerでリサイズ
アップロードするときに画像のリサイズをしたいと思い、Imagerをチョイスしました。
my $img_fh = $query->upload("img_$i");
$img->read(fh => $img_fh) or die $img->errstr;
$img = $img->scale (ypixels => 500, type => 'min');
$img->write(file => "./$file_path/img_$i.jpg", jpegquality => 80) or die $img -> errstr;
まだまだスマートには書けませんが、今のところ必要最低限を目指します。
6枚のjpgを一気にリサイズするように作ったので、処理に時間がかかります。
待ち時間が気になるので、後々loading movieでも使って使用者に待ってもらおうって言う寸法です。
my $img_fh = $query->upload("img_$i");
$img->read(fh => $img_fh) or die $img->errstr;
$img = $img->scale (ypixels => 500, type => 'min');
$img->write(file => "./$file_path/img_$i.jpg", jpegquality => 80) or die $img -> errstr;
まだまだスマートには書けませんが、今のところ必要最低限を目指します。
6枚のjpgを一気にリサイズするように作ったので、処理に時間がかかります。
待ち時間が気になるので、後々loading movieでも使って使用者に待ってもらおうって言う寸法です。
[Perl]現在の疑問点。
Perlについての現在の素朴な疑問集。
my $hoge = CGI -> new();
と
my $hoge = new CGI;
の違い。どういう風に違ってどちらが正しいのか?
うーん、Rubyを忘れそう。。。
my $hoge = CGI -> new();
と
my $hoge = new CGI;
の違い。どういう風に違ってどちらが正しいのか?
うーん、Rubyを忘れそう。。。
2009年2月9日月曜日
[Perl]でアップロードしてみます。
会社のサーバーが堅牢なサーバーなので、Perlで簡単な・かつ穴の多いフォトアルバムみたいなものを作ってみます。
Perlに関したら会社に神様がいらっしゃいますので、躓いた時にはすぐにお伺いを立てることが可能です。
まず、引っかかった点は
・文末の「;」は慣れるまでは鬼門。
・「->」は何となくメソッド?(関数?・プロパティ?)の呼び出し?
・ヒアドキュメントの作り方
・useの使い方。とりあえずstrictとwarningsは使いました。
後は何とか頑張りました。今日は画像の単純なアップロードまで。
アップロードまではRubyでCGIの勉強をしたときに一度作ってみたことがあるので、何となく流れは理解していました。そのため意外とスムーズに出来ました。
ただ、とにかくアップロードだけなのでサイズの制限も付いてないし、ファイルタイプでの制限など実装しなければならない部分はたくさんありますが、それはまた後で。
リサイズはRMagickみたいなものがあるのでしょうか?それとももっと簡単に出来るのでしょうか?
もう少し調べてみるか、神様に聞いてみたいと思ってますzzz
プログラミングって言語云々より、やっぱり楽しいです!
Perlに関したら会社に神様がいらっしゃいますので、躓いた時にはすぐにお伺いを立てることが可能です。
まず、引っかかった点は
・文末の「;」は慣れるまでは鬼門。
・「->」は何となくメソッド?(関数?・プロパティ?)の呼び出し?
・ヒアドキュメントの作り方
・useの使い方。とりあえずstrictとwarningsは使いました。
後は何とか頑張りました。今日は画像の単純なアップロードまで。
アップロードまではRubyでCGIの勉強をしたときに一度作ってみたことがあるので、何となく流れは理解していました。そのため意外とスムーズに出来ました。
ただ、とにかくアップロードだけなのでサイズの制限も付いてないし、ファイルタイプでの制限など実装しなければならない部分はたくさんありますが、それはまた後で。
リサイズはRMagickみたいなものがあるのでしょうか?それとももっと簡単に出来るのでしょうか?
もう少し調べてみるか、神様に聞いてみたいと思ってますzzz
プログラミングって言語云々より、やっぱり楽しいです!
[BlueQuartz]よ、ご馳走様でした。
会社でのホスティングは何故か社長の意向でbluequartz一本やり。
お客様にメールアドレスを切ってもらったりするのに便利だそうで。。
結局手を尽くしましたが、今の自分のスキルじゃrubyのRMagickすらインストール出来ない
状況でありました。
自分の技術レベルに辟易したところで終了です。
簡単なアップローダーを作ろうと思いましたが、それすら出来ないというのは非常に残念です。
お客様にメールアドレスを切ってもらったりするのに便利だそうで。。
結局手を尽くしましたが、今の自分のスキルじゃrubyのRMagickすらインストール出来ない
状況でありました。
自分の技術レベルに辟易したところで終了です。
簡単なアップローダーを作ろうと思いましたが、それすら出来ないというのは非常に残念です。
2009年2月5日木曜日
FreeBSD(jail環境)にApache22をインストール!
さくっとwebサーバーを立ち上げようと少し調べてみたところ、候補は
1.apache
2.lighttpd
3.nginx(netcraftで見て)
4.thttpd(wikipediaで読んだ)
と言うところでした。
今回はネットで検索しても苦労することが少ないであろうapacheを選択してみます。
インストールは
# cd /usr/ports/www/apache22/
# make install clean
で簡単にインストールできました。オプションはデフォルトのまま。
めちゃくちゃ時間がかかったけどスムーズに完了。
設定をするために
# vi /usr/local/etc/apache22/httpd.conf
でサクッと設定。その後起動。
# /usr/local/etc/rc.d/apache22 start
なぜかエラーで起動しませんでした。
いろいろ調べた結果、
/etc/hosts
に自分のドメインを追加して、再度httpd.confを編集。ssl関係のモジュールを適当に
コメントアウト。
今度は起動しました。
# less /var/log/httpd-error.log
を確認したらなんかエラーが出まくってましたが、今日はapacheが起動したって言うことで
ま、いいかな。と。
1.apache
2.lighttpd
3.nginx(netcraftで見て)
4.thttpd(wikipediaで読んだ)
と言うところでした。
今回はネットで検索しても苦労することが少ないであろうapacheを選択してみます。
インストールは
# cd /usr/ports/www/apache22/
# make install clean
で簡単にインストールできました。オプションはデフォルトのまま。
めちゃくちゃ時間がかかったけどスムーズに完了。
設定をするために
# vi /usr/local/etc/apache22/httpd.conf
でサクッと設定。その後起動。
# /usr/local/etc/rc.d/apache22 start
なぜかエラーで起動しませんでした。
いろいろ調べた結果、
/etc/hosts
に自分のドメインを追加して、再度httpd.confを編集。ssl関係のモジュールを適当に
コメントアウト。
今度は起動しました。
# less /var/log/httpd-error.log
を確認したらなんかエラーが出まくってましたが、今日はapacheが起動したって言うことで
ま、いいかな。と。
FreeBSD(jail環境)にRailをインストールしました。
この前、会社にいる神様がFreeBSDの上にjail環境を自分の為に用意してくださいました。。。
んで、久しぶりにRailsを触ってみようと思いgemをダウンロードしてセットアップ。
いろいろなサイトを参考にしながら
% gem install rails
と。あっさりインストール出来ました。でも、ここまではスムーズにできましたが
その後に大きな壁が。
% rails test
とすると、
/usr/local/lib/ruby/gems/1.8/gems/rails-2.2.2/bin/../lib/rails_generator/options.rb:32:in `default_options': undefined method `write_inheritable_attribute' for Rails::Generator::Base:Class (NoMethodError)
と言うエラーが出てしまし、railsのプロジェクトを作れませんでした。
いろいろ調べた結果、下記サイトにたどり着きました。
http://theschmitzer.blogspot.com/2008/12/rails-22-undefined-method.html
(リンクの貼り方が分かりません)
どうやらjailにruby-iconvがインストールされていないことが原因でactiverecordがエラーをはいていました。
% cd /usr/ports/converters/ruby-iconv/
% make install clean
して、無事完了。
今度は
% rails test
で出来ました。
んで、久しぶりにRailsを触ってみようと思いgemをダウンロードしてセットアップ。
いろいろなサイトを参考にしながら
% gem install rails
と。あっさりインストール出来ました。でも、ここまではスムーズにできましたが
その後に大きな壁が。
% rails test
とすると、
/usr/local/lib/ruby/gems/1.8/gems/rails-2.2.2/bin/../lib/rails_generator/options.rb:32:in `default_options': undefined method `write_inheritable_attribute' for Rails::Generator::Base:Class (NoMethodError)
と言うエラーが出てしまし、railsのプロジェクトを作れませんでした。
いろいろ調べた結果、下記サイトにたどり着きました。
http://theschmitzer.blogspot.com/2008/12/rails-22-undefined-method.html
(リンクの貼り方が分かりません)
どうやらjailにruby-iconvがインストールされていないことが原因でactiverecordがエラーをはいていました。
% cd /usr/ports/converters/ruby-iconv/
% make install clean
して、無事完了。
今度は
% rails test
で出来ました。
ラベル:
FreeBsd Rails