Study-Daily
なんとか再開したい
memo的な感じで再開したい。
でもその前にWordPressの勉強をしなおして、改良してから再開したい。
当面はメモはEvernoteにとどめておくしか無いかな。
Perlの動作環境?について
長らく更新してませんでしたが、その間にFlask試したり、最近なんかは
ちょっとだけVisual C++を初心者本見ながら動かしてました。
C++分かんない。
さて、PerlをVPS上で動かす&Mojolicious::Liteで作成中の簡単なFAQアプリの為、Perlを
どうやって動かすのか、簡単に試したのでまとめてみた。(まとまってないし解説にもなってない)
perlを使えるように設定する
1,Perlを入れましょう。既に入っている場合はバージョンを確認してできるだけ偶数ナンバーの最新版を入れましょう
※奇数番号のバージョンは実験要素が強いと聞いたことがありますのでperl-14.xが良いかと
※perl -v でバージョンの確認ができます。
2,Perlbrewを入れましょうバージョンを切り替えたりライブラリを追加したりが楽になるそうです。
3,ターミナルベースで動かす
ファイルの拡張子を「.pl」とかにして内容はprint “Hello,World\n”;とか書いて
ターミナルで「perl aaa.pl」とかやると起動して処理実行しますね。
厳密にはファイルエンコードはUTF-8にしましょうとか、ソースの行頭にお決まりの書き方をするとかありますけど
その内容については省略するので他で調べてください。
4,ApacheにCGIの設定して動かす
特になんの設定もせずPerlファイルをWeb公開領域に置いてもソースをそのまま画面に出力したり、
エラーになったりします。
・ApacheにCGIの設定を書いていない
・作成したPerlファイルに実行権限がついていない
などが主な理由です。権限についてはchmodコマンドで実行権限を付与してください。
Apacheの設定ファイル「httpd.conf」もしくはVirtual-Hostの設定をしているなら「httpd-vhost.conf」を
開いて設定を記述します。
———-
<Directory “/virtualhostdirectory/hoge”>
AddHandler cgi-script .cgi .pl .py .rb
Options All
AllowOverride All
Order allow,deny
Allow from all
———-
フレームワークちょいちょい
ここ最近はフレームワークを少し触ってる。
Perl:Mojolicious::Lite
→DBをFileMakerで簡単な検索をするものを作成。Liteの場合は?APPPATH/templates直下に
各ビューテンプレートファイルを置く。ベースとするレイアウトはAPPPATH/templates/
layouts直下にdefault.html.epて名前で配置する。静的ファイルはAPPPATH/public配下に配置する。
このあたりの説明でドンピシャ説明しているのが見つからなくて、なかなかつまづいた。
Ruby:Sinatra
→Hamlの書き方とか忘れてて大苦戦。あとなんかサーバー再起動しないと変更が摘要されない感じとか
ちょっと苦労。Mojolicious::Liteでやったのと同じ事をSinatraでも実践。という訳でDBはFileMaker。
これは前に一度やっているのでコードをちょっと変える程度だったのにとにかく上記の不可思議で苦戦。
PHP:FuelPHP
→最初はSilexで挑戦してたんだけど、意味不明過ぎて挫折。そんでシンプルそうなFuelに手を出す。
これもDBをFileMakerで簡単な一覧表示検索という上の2つと同じ事をやるものを作成。たいぽや
コンテキストでちょいちょい間違えて詰まったけど、割と簡単だった。FuelPHPの時は静的ファイルは
public/assetsて階層に配置するんですね。
PythonのFlaskに手を出す予定だったのに時間が足りなかったから来週はFlaskかな。
OS再インストールしたせいだと思うけど、前に作ったDjangoが動かなくなってた。モジュールがインポート
出来ないとかで……
Perl勉強してるメモ1
何故か最近Perlの勉強を始めた。
気になった箇所のまとめ、
■変数と型
・普通(単一)のデータはスカラー変数で扱う:$val = ‘Hello’;
・配列は「$」の代わりに「@」でも中の要素を扱う時は「$」でインデックスの指定は[]
:@array = (1,2,3,4,5); print $array[0] # 1
・ハッシュは「$」の代わりに「%」でも中の要素を扱う時は「$」で指定は{}
:%hash = (‘a’=>’1′,’b’=>’2’); print $hash{a} # 1
■変数スコープ
・{}ブロックでスコープは仕切られている。そのため変数はmyを使ってスコープを意識した変数宣言を
すると良いとされている。
・ファイルスコープは実は1ファイル1パッケージ的な扱いでパッケージスコープ。
・例えばファイル直下の位置で$cgi = CGI->new; とかやっておけば、subを呼ぶ時に毎回$cgiを
引数として渡す必要はない。
参考 Gist:https://gist.github.com/3855891
■リファレンス
・C言語で言うところのポインタ?配列やハッシュをサブルーチンに渡す際に変数のリファレンスを
渡す。そうしないと呼び出し先では1つの引数データに連結されてしまっているのでうまく復元できない。
・リファレンスで渡された値をsubスコープ内の新たな変数に入れてデリファレンスして編集すると、
元の変数の値が変わっている。デリファレンスした値を新たな変数に入れて編集した場合は影響しない。
参考Gist:https://gist.github.com/3850245
https://gist.github.com/3856617
■ファイルの扱いなど
・use IO=>’utf8′; としておくとUTF-8でファイルIOで扱う。
・ファイルハンドルはレキシカルスコープ変数を使うようにしましょう。
・またopen関数は3引数の形で使いましょう。
open(my $fh,’<‘,$file_path);
■モジュールについて
・use strict;と use warnings; はワンライナー(or実験)以外では必ずつけましょう。
現状整理
現状の整理。ちっとも進まない。。
開発環境:
・開発環境のOSはOSX 10.8にアップグレード
・WebサーバーはローカルのApache、エディタは主にEmacs
各言語の勉強進捗:
・Java・・・お休み中。来年にはAndroidさわさわする一環で復帰したい。
・Grovy・・・お休み中。たまにメンテナンスで仕事で既存のもののデバッグ用途に使用する程度。
・Scala・・・未着手。
・Clojure・・・未着手。
・Haskell・・・未着手。有名な本は買ったけれど、まともに読んでいない。
・PHP・・・唯一仕事で使えるレベル。最近は全くふれず、CakePHPやFuelPHPにそろそろ触れねば…
・Ruby・・・Railsの進化が早すぎるので、もう少し他の言語の習得が進んで余裕が出るまでは手を出さない。
・Python・・・去年そこそこ触ったきり。まだ仕事で使えるレベルに達していないのに中断中…
・Perl・・・なぜか最近はPerlを勉強中。基本文法は理解したが…
・ActionScript・・・簡単なものは分かるとして、使用用途が特殊なのでなかなか…
・JavaScript・・・一番習得が進んでいると思うが、スマフォ向けや派生言語の習得まで考えると…
・VB・・・簡単なデスクトップアプリなら…
・C#・・・来年には着手したい
・C++・・・いいかげん、そろそろ勉強しないとな〜
・Objective-C・・・本はいろいろ買い揃えたけれど…
あぁ、自分の心の弱さに嫌になりますね。
趣旨変え
ここのブログの内容の趣旨を変えました。
元々のネタはBlogger?Googleのところに移動。
ここは元々MTで少しやってた勉強メモに変更。それに伴いMTでからデータも適当に移行。
FileMakerとRubyのSinatra
Sinatraのチュートリアルを少し触って、これなら簡単にFileMakerと接続出来るんじゃない?
と思ったのでやってみました。
gihyo.jp:第9回 SinatraとSequel・Hamlで掲示板アプリを作る
http://gihyo.jp/dev/serial/01/ruby/0009
が自分がチュートリアル(以下、見本)としてやってみみたもので、これのmodel部分をFileMakerに
置換えました。
※FileMakerやRuby、Sinatraそのものの細かい説明は省きます。
最終的な階層は以下(見本のファイルも混在してます)
—
—
FileMaker部分
・bbsテーブルの作成、カラムは見本のapp/model/comment.rb内で定義しているクラス
Commentsを真似て定義。但し、posted_dateはFileMaker側ではtimestamp型で作成時に自動で
現在のタイムスタンプが入るよう設定。
Ruby部分
・app/model/comment.rbにFileMakerとの接続クラス追加
—以下をcomment.rbに追加—
・hamlを編集(追加)
—app/view/fmbbs.haml
※HamlはPythonのようにインデントが文法になってるので注意!
・app/start.rbを編集