2008年4月30日水曜日

関数型言語とPerl 下調べ編

関数型言語というものは、Lispやその派生言語を含めるとたくさん存在しているのがわかった。

以前取り上げたR言語は、プログラムの勉強をJavaから入った自分としては手続き型と似てる面も見られたので良いなーと感じていたが、、それについて言及してくれてる先達がいました。

http://d.hatena.ne.jp/wasisan/20080311/p1

 ・Schemeのような静的スコープが統計計算に適していること
 ・リスト処理言語としてのRはgood とのこと


「言語の用途で適不適が決まる」「種(改め言語)の多様性と繁栄衰亡」など考えるのは面白い。


そういえば、"Perl6 " はHaskell の上に実装されたPugs(?) がベースになるとか何とか。。

→Andrey Tang さん
YAPC2006 概要Haskell プレゼン(←こちらはぜひ)

(ただこのプレゼン見てたら Jifty もいいかもと。。)


Perl5 と Perl6 の違いはやはり先達++。



あとおまけで、自分が Perl にハマった理由は、(勘違いもあるかもだけど)Unix と C が仲違いしているのをつなぐために生まれたところ。いやはや子は鎹。。

それと、これは Unix の思想なのかもしれないけど、単位と単位を結ぶ、上書きする、それでも動く~な発想が油絵具に似てると感じたところからでした。。

Ruby 学習参照

Catalsytいじる際、Ruby on Rails と比べてみると勉強になるのでこれは良い浮気。。

こんなのありましたで、島根IT中核人材育成支援事業「Ruby on Rails 運用コースカリキュラム


コンテンツは

  • セットアップ全般

  • Subversion用法

  • Capistranoデプロイ

  • Rails アプリとWebサーバ

  • FastCGI

  • Lighttpd + FastCGIによるデプロイLighttpd + FastCGIによるデプロイ

  • Mongrel

  • リバースプロキシと負荷分散

  • MySQLその他DB

  • サーバ管理トラブルシューティング(コマンド操作etc.)

と至れり尽くせりというもの。。

教育課程に興味が湧きました。

perl 学習方針メモ 学習開始8か月くらい経過編

これからPerl学習進めていく上で気になるエントリーがあったのでここに記録。


trombik さんのブログ タイトル:「Perl初心者はどうやって勉強したらいいんですかね」
http://trombik.mine.nu/~cherry/w/index.php/2008/02/05/1134/my-perl-history

fbis さんのブログ「Unknown::Programming 」 タイトル:「新人教育」から。
http://d.hatena.ne.jp/fbis/20060504/1146736766


いずれも非常に参考になるので、今後の学習項目として転記。

* foreach文
* ハッシュ
* 配列操作関数push,shiftなど
* packageについて
* グローバル(パッケージ)変数とレキシカル変数の違い
* インクルードパスとパッケージの関係
* 関数とメソッド
* Perlでのオブジェクト指向プログラミング
* bless関数
* リファレンス
* strictプラグマ
* 正規表現
* リストコンテキスト、スカラコンテキスト
* クロージャ
* myとlocal(とour)の違い
* requireとuse(とdo)の違い
* 無名ハッシュ、無名配列、無名サブルーチン
* シンボリックリファレンス
* 動的コンパイル
* 例外処理
* シンボルテーブル
* 型グロブ
* プロトタイプ関数
* BEGIN,END
* DESTROY
* AUTOLOAD
* CORE
* UNIVERSAL
* isa,can
* tie変数
* overload
* $VERSION
* 継承
* POD
* 最後の1;


以下さらに引用で。

で、これを踏まえたうえでCPANのモジュールとかの勉強もしていかないといけないし。

命名規約とかコーディング規約とかも入ってくるとやっぱPerlって新人が勉強するにはハードル高いかもね。

Perlをメインで使ってる会社とかこの辺の新人教育とかどうしてんだろう。

うちでは基本規約を読ませてあがってきたソースは全てレビュー。で、後は個別で各項目に対する課題をやってもらう、例えば明日までにmyとlocalの違いについて調べてこいとか。

とのことです。

本当に身についたかは教える立ち場に立ってみてわかるというので、今年教育されたヒトが翌年以降の教育担当になる~みたいな制度があればいいな、と。

VNC使った授業なら、教師1対生徒複数名(6名くらいでもつまづいたところの指導までならいけそう)が便利かな(教師複数なら多対多のVNCThumbnailViewer)。。

レビューが大変なのは、、、Moodle入れて、オンライン上で教材的に処理とか。


他の perl 学習の素材として、

antipop 「Perlの学習コストが大幅に軽減するスゴイ方法」
http://d.hatena.ne.jp/antipop/20060505/1146822604

がはてブに上がってました。


Charsbar さんのブログからは
http://d.hatena.ne.jp/charsbar/20060505/1146801072

困ったらsearch.cpan.orgに行けとか、perldocしろとか、モジュールはmake (test|install)できるように書けとかいうあたりがPerl固有の学習コスト

選択肢が多すぎて困るとかいう側面もあるけれど、まじめに勉強しようと思えば思うほどPerlの学習コストは下がる

宮川さんの記録にも「perldoc -m (module名)」で勉強‥とあったので、ここでメモ。。

最新のPerl時流など追うにせよ、まずは足元固めたい。

カンファレンスとか出る→聞く→帰宅後コード書いて尾ひれつけられるレベルになりたい。
cf: YAPC::ASIA2008

2008年4月26日土曜日

Firefox my拡張機能

Firefox拡張機能を「ホームページをつくるひとのネタ帳」で知ったので入れてみた。
http://e0166.blog89.fc2.com/blog-entry-463.html

PicLens
https://addons.mozilla.org/en-US/firefox/addon/5579


GoogleImageサーチとかで検索してからブラウザ右上「水色右矢印」ボタンをクリック。

背景が黒に統一され、画像がタイル状に敷き詰められ‥これは凄いのでFirefoxユーザは是非。。


ついでなので、下記。

Firefox 拡張機能まとめ@20080428

入れすぎたままにしておくと動作が重くなるので。
必須には目印(☆)入れてく。


【常駐】
  • ☆del.icio.us
    ‥簡易ブクマ用(技術系ネタはこちら)

  • ☆DownThemAll!
    ‥一つ一つダウンロードでなくWebページ内のファイルを一発ダウンロード

  • easyGesture

  • Faviconize Tab

  • ☆Firebug Japanese
    ‥CSS、XPath表示など
    ‥開発での強力ツール

  • Google Gears
    ‥Javascriptが書けるなら任意のWebページをローカルサーバに保存可能。

  • ☆Google Toolbar for Firefox
    ‥Gmail、YouTube、Amazon、WIkipediaにクリックで飛ぶ

  • ☆Grease monkey
    ‥Firefoxをさらに使いやすくする基盤的なもの

  • ☆hatenabar
    ‥RSSとBookmark
    ‥簡易ブクマ用(雑多ネタはこちら)

  • ☆Hyper words
    ‥単語チェックで、辞書やリンク先へ一発飛び

  • (今回の)PicLens

  • ☆ScrapBook
    ‥オフラインでも見たい記事はこれでローカルに落としておく(GoogleGearsでもいいのだけど)

  • ☆Tab Mix Plus
    ‥タブいじりには必須

  • Tab Scope

  • Tabs Menu

  • ☆View Source Chart
    ‥Webページソースがカラフルに表示

  • 巻き戻し/早送りボタン

【普段は未使用/必要時に使用切り替え】
  • All-in-One Gestures

  • Better GCal

  • Clear Forest Gnosis

  • CLEO

  • Codetch

  • CoScripter

  • FEBE
    ‥Firefoxのバックアップツール

  • Foxmarks Bookmark Synchronizer

  • GoogleBar

  • Japanize
    ‥自動日本語化

  • Pathtrac

  • phplangeditor

  • Screen grab!

  • Slogger
    ‥KLab謹製見たWebページをローカルに自動保存

  • Storage Inspector

  • Stylish

  • TAGIRI Toolbar

  • Talkback

  • Web Developper

InternetExploerしか知らない・使わないはもったいない。。
まだ触ったことないならBlog右パネルの狐(ふぉくすけ)をクリック。

2008年4月25日金曜日

AxisでSOAP体験記

Salesforce(略S.F.) で必要になったので、忘れないうちメモ。。


JavaSDK ver 1.5(5.0)はインストール済み。
環境はWindowsXP SP2


今回必要となったWebサーバは下記2点。インストール順とS.F.対応のメジャーバージョンに注意。

①Apache Tomcat 5.5.26.exe
②Apache Axis-bin 1_4.zip

イメージは①の上で②が起動する感じ。



【参照】

  1. Axis 取扱い方法、まずは本家サイト
    http://ws.apache.org/axis/ja/java/

  2. webサービス環境構築メモ-Windows編
    http://www.tt.cs.titech.ac.jp/~yonai/webService/windows.html

  3. Axis でのデプロイ手順
    http://www.wakhok.ac.jp/~sakamoto/webservice/web_service_c6.html

  4. SOAPアプリ作成手順
    http://iihito.dip.jp/docs/java/no12/soap-4.html

つまづきどころはやはり環境変数。
あとはファイルアドレスとかURI。

「webサービス環境構築メモ-Windows編」が2007年情報なので、鮮度がお勧め。

参照1. を見ながらところどころ参照2. でチェック。


ファイルのコピーは①~③
①「axis/webapps/axis」ディレクトリを「tomcat/webapps」へ

②「tomcat/webapps/axis/WEB-INF/libのsaaj.jarとjaxpc.jar」を「tomcat/common/lib」へ

③「%JAVA_HOME%\libのtools.jar」を「tomcat/webapps」に。。



環境変数設定では、
・JAVA_HOME = sdkフォルダbinディレクトリに通す(java.exeのあるフォルダ)

・TOMCAT_HOME = C:\Program Files\Apache Software Foundation\Tomcat (デフォルトならここ)

・AXIS_HOME = (これはバイナリファイルを解凍場所による、C:\axis でもOK)

・AXIS_LIB = %AXIS_HOME%lib

・AXISCLASSPATH = %AXIS_LIB%\axis.jar; ‥(順に必要な .jar ファイル)


・WEBSEV = C:\Program Files\Apache Software Foundation\Tomcat\ webapps/axis/WEB-INF/lib のようにしておくと、CLASSPATH で通したい沢山のファイルの変数設定がラク。

・CLASSPATH = %WEBSEV%axis.jar; ‥(順に必要な .jar ファイル) ;C:\Program Files\Apache Software Foundation\Tomcat\common\lib\saaj.jar ; C:\Program Files\Apache Software Foundation\Tomcat\common\lib\jaxpc.jar

コピーしたファイル群にもCLASSPATH通すのを忘れない。



インストール、セッティング済んだら
tomcatを起動でhttp://localhost:8080/ へのアクセス確認
Axisは http://localhost:8080/axis で確認。。


環境設定は以上。

アプリ作成とクライアント/サーバでのデプロイ方法は参照3.と4.にて。。

Mech::Googleサーチ 試し打ち

下記参照
http://d.hatena.ne.jp/hakobe932/20070131/1170266398
参照先のコードでは気をつけないと、"syntax error" "requires explicit package name" とか出てしまう。
「;」 と「my」の欠けは注意。

あと、コード末尾のエンコードはutf-8のままならエンコード/デコード処理は不要。。
そのまま実行すると文字化けします。
下は修正後。。


#!/usr/bin/perl
use strict;
use warnings;
#http://d.hatena.ne.jp/hakobe932/20070131/1170266398
use WWW::Mechanize;
use HTML::TreeBuilder::XPath;
use Encode;
use Readonly;

sub say {print @_, "\n";}

my $mesh = WWW::Mechanize->new();

# Googleにアクセス
$mesh->get('http://www.google.com');

# 検索フォームにPerlを入力してサブミット
my $res = $mesh->submit_form(
fields => {
q => 'Perl',
}
) or die 'submitting failed';

# レスポンスを取り出してパース
my $tree= HTML::TreeBuilder::XPath->new();
$tree->parse($res->content()) or die "parsing failed";

# 結果をXPathで取り出して表示
my @nodes = $tree->findnodes( '/html/body//div[@class="g"]/a[@class="l"]' );
for my $node (@nodes) {
say $node->as_text, ' (', $node->attr('href'), ')';
}


コードここまで。

出力結果は下記。

Perl - Wikipedia (http://ja.wikipedia.org/wiki/Perl)
Perl基礎入門 (http://www.kent-web.com/perl/)
とほほのperl入門 (http://www.tohoho-web.com/wwwperl.htm)
The Perl Directory - perl.org (http://www.perl.org/)
Perl講座[入門からデータベース連携なども] (http://www.site-cooler.com/kwl/perl/
)
Amazon.co.jp: Perl - プログラミング: 本 (http://www.amazon.co.jp/Perl-%E3%83%97%
E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E3%82%B3%E3%83%B3%E3%83%9
4%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%
8D%E3%83%83%E3%83%88-%E5%92%8C%E6%9B%B8/b?ie=UTF8&node=515826)
Perl.com: The Source for Perl -- perl development, conferences (http://www.perl.
com/)
Perl講座 [Smart] (http://www.rfs.jp/sb/perl/)
Perlとは 【Practical Extraction and Report Language】 - 意味・解説 ... (http://e
-words.jp/w/Perl.html)
Perlメモ (http://www.din.or.jp/~ohzaki/perl.htm)

以上、取れました。。

2008年4月15日火曜日

blog 右パネル欄

2008年4月12日現在では "iKow"  と"MARU-TEN-TEN"がお気に入り。

前者はオンラインEnglish ラーニングSNS、、後者は‥クリックしてみるとわかります。。
"iKnow"ははてブでも注目のサイトなのだけど、ケータイからもアクセスできる優れもの。

参加までの経緯は amachan さんのIT戦記読んでてアイコンクリックしたところからで、つい先週登録したばかり。
OpenIDですんなり登録したものの、ケータイからのログイン用に別途パスワード必要なのは盲点でした。


豆知識には、学習コースをガンガン登録して(ビジネス英語、TOEFL、GREの○○編)、ケータイからアクセス。
マイコース→コース一覧→各コース"学習項目" で、電子単語帳みたいに使える。。

各コースごとに200語くらい収録、100語目あたりのページをブックマークしておいて圏内でキャッシュに納めておけば、地下鉄乗車中でもチェックOK。。


あと、iKnowを提供している(c)Carego社の募集人材スキルが興味深いです。

(参考までに①はプログラム開発、②はサーバ管理業務)
①* Mac/Unix/Linux の経験。AJAX 、XHTML 、CSS 、およびXML、Rubyの知識
6ヶ月以上のRailsの経験(できれば1年以上)

下記の知識、経験
* ActiveRecord: associations, validation, callbacks.
* ActionController: routing, filters and verification, caching.
* ActionView: XML Builder templates, layouts and components, partials.
* テスティングとテスト駆動開発: unit and functional testing, fixtures, mocks.
* 一般的なSQLとMySQLに特化した知識

②*24台のサーバと7つの製品の構築と管理経験
*Rubyの深い知識を持っている方
* ロードバランサー
* LVS, PF
* Can give estimates on required h/w specs to support 10k max connections
* Understand the pros and cons of different scheduling algorithms
  * 自動インストールとシステムの構築

Rubyでのアプリ開発が推進されていると想定され、知らない間にRuby案件が増えているのかな、、と。。

2008年4月12日土曜日

科学のところ

ニコニコ動画の科学スレから転載。

科学実験とかディスカバリーチャンネルとか良いです。

教育は何かを教えたり、知識を与えたりする以上に、関心を持たせる、やってみようと思わせることが大事な気がした。
作りたいものを強くイメージできるとゴールが明確になるって意味でも、手早く触れるインターフェースは大事‥なはず。

  • phun 2次元物理シミュレータアプリ

"2分で学ぶ phun "





下記はYouTubeから

MITの実験
  • tangible
"open labs"





デスクトップ操作動画キャプチャツール "jing"
オープンソースで、ローカル保存もWeb上での動画の共有もできます。
http://www.jingproject.com/

processing で動かしたものもアップしていけるように、動画ツールもダウンロード。。

「範囲指定→スタート→ストップ→保存先指定」で録画OK。
ちなみにデフォルトの保存形式は「.swf 」、flash playerが入っていれば見れます。

使い方詳細はこちら。
http://pcgenki.com/soft2/jing2.htm

2008年4月10日木曜日

Salesforce考

"Salesforce"(以下S.F.)でCRM。

昨年夏頃にいじってたときの開発者環境は全部Englishだったと思ったら、気づけばいまは日本語ドキュメントも揃うようになってる‥。
そのときはオープンソースの SugarCRM と比較して何か開発できないか探っていたけど、ダラダラしてたらノータッチで半年過ぎてしまったし。


以下特徴。。
  • GUI操作で既存のフレームワークを組み合わせていくとWebアプリが完成するという流れ。
  • 単純に混ぜるだけでなく、Java・AdobeFlex・Javascript・VB・.NETやその他軽量言語(PHP,Perlでもいけるらしい、CPANモジュールもあったし。。)で、アプリや追加機能を作成できる点もウリとのこと。
  • 日々改定されている。(20080411あたりでGoogleApp提携とか)

表題のApexなる開発言語はS.F.独自のもので、JavaとJavascriptの中間のような構文、ajax toolkit や dojo toolkit からAPIを組み込んだり、DBいじるのに(S.F.仕様ではSQLでなくSOQLなるものもある)書いたりするもの、、とのこと。

S.F.開発者ブログ(資料は本家サイトで充実)
http://adnblog.salesforce.co.jp/apex_code/index.html

SaaSからPaaS、プラットフォームとしてサービスを提供する方向でビジネス展開するS.F.。
言うなればディベロッパーに道具と箱を提供して、製作物の管理、共有、エンドユーザへ提供するその間で仲介料をとる仕組みはよくできてるなぁ、と。

ただ、管理可能なコンテンツの容量制限やデータ転送量などの物理的な課題もあるのが気になる。

それに、郵政公社が導入するなどのニュースから単なる流行りものでなくなった気がした。

2008年4月5日土曜日

Vim 導入記

Web上にはさっと見れて便利な チートシートが見られるものの、書店で立ち読みした”Vim 完全バイブル by技術評論社”が忘れられず、Amazon で購入。。細かなセッティング方法も載っているので、辞書的に使用希望。。


とはいえ、普段 vim を使う機会に乏しく、Eclipseやサクラエディタで済ませてしまう傾向にあるので慣れていきたいと考え中。

参考
・「Vim 初心者メモ

→vimrc / vim script の用法までカバーされていることもあり、Vim はこの参考先からさらに各紹介サイトに飛ぶのが良いかと。さらには「おまけ欄には"Vimチートシート(コマンド集)"とウノウラボ"Viエディタ練習サイト"」も記載あり。


発展
・Vim プレゼン「効率的なテキスト編集の7つの習慣」
http://peace-pipe.blogspot.com/2007/02/7-vim.html

・拡張するなら、、「名無しのVim使い」
http://nanasi.jp/

・コマンドざっくり一覧、、「Vimコマンド覚書」
http://www.7key.jp/software/vi.html


(追記)
・Vim/gVim をGUI操作したい場合は "Cream"
http://opentechpress.jp/developer/article.pl?sid=07/05/21/0118250&tid=4

・[記事] Vimマスターへの道
http://opentechpress.jp/special/article.pl?sid=07/07/18/0849244

・Vimの使い方(←便利テクニックが収録)
http://www15.ocn.ne.jp/~tusr/vim/vim_text2.html#mozTocId119707

2008年4月2日水曜日

macbook 購入録

macbook買いました@ヤマダ電機

昨年Vista ノートPC を買って、、よもや今年は Mac に手を出すとは思わなんだ。。

購入動機をまとめると、いろいろあるのだけど‥

  • 院の知人の影響は大
    (KeyNoteなるアプリでのプレゼンがカッコよかったのです。。)

  • UnixOS的技術に触れてみたい感は当然有り(FreeBSDやSolarisなら若干経験あるけどサーバを除くで)

  • Windows系と比べ、15万円相当以上のスペックのノート。しかも13inch サイズが魅力。

  • VMwareを入れてUbuntu もしくはその他Linuxもいじってみたい。。

  • センサーネットワーク向けのインターフェースを何気に内蔵している→試してみたい実験もある
    (先行例には"mac のモーションセンサーで○○する" があります。参照:ちょい絶‥Gainer使わずって点も創意工夫の賜物ですね。。)

といったものです。

今後買入検討な方はモデル一覧(ここ)。。


で、


入れておくべき系のソフトも自分用備忘録として残しておこうと思います。。


まずは参照URL

・はてなクエスチョンから
http://q.hatena.ne.jp/1205856811

・Macソフト
http://hackmylife.net/mt/mt-search.cgi?tag=mac&IncludeBlogs=1
http://d.hatena.ne.jp/poafag/20080122
http://d.hatena.ne.jp/i2k/20071027/ten_or_more_mac_apps_2

・開発者向けカスタマイズ
http://d.hatena.ne.jp/viver/20070829/p1

・"Ruby on Rails with Mac"のセッティング
http://japan.cnet.com/blog/kenn/2007/12/19/entry_25003169/?ref=rss

・2ch的なMacトリビア
http://nikuch.blog42.fc2.com/blog-entry-203.html

・Mac OS Leopard 開発環境
http://d.hatena.ne.jp/viver/20080203/p1

・Mac の 推薦 Editor
http://q.hatena.ne.jp/1202355575

・OSハッキング
http://journal.mycom.co.jp/column/osx/

・先人のカスタム参考

◇MacBookAir版
http://d.hatena.ne.jp/HolyGrail/20080305/1204729899

◇MacBook版
http://d.hatena.ne.jp/amachang/20080318/1205824212



参考URLが溜まっていたのは購買欲の現れだったのかも(^^;)

後日、Mac でやってみたことを追記予定。。

2008年4月1日火曜日

processing 下見

Javaに最近触れてないので、感覚を忘れないようにと探していたらの "processing" です。

Javaで作図などするには Swing などのパッケージを入れてコーディングすればいいのですが、、なるべく書いた→動いた!!の直観的なものがいいなーということで。。

Javaの実行環境が必要ですが、下記からダウンロード可。
http://processing.org/download/

processing はアートとプログラミングの融合を意識して生まれたとのことで、プロの技術を拝見しては感動です。

◇参照:下記 URL群

 ・Articulate

 ・Base26

 ・Bubble Chamber


ソースを見ると構文はJavaライクなのですが、①記述量少ない&②関数とライブラリが充実が魅力です。

ざっと利用できるライブラリを挙げていくと、以下のようなものが見つかります。

  • GUIで便利な OpenGL
  • 音声形式の .mp3
  • web camera対応の OpenCV
  • illustrator で加工するための SVG形式
  • 2次元バーコード QRcode
  • Ajaxで有名なGoogleAPI
  • ネットワーク通信 TCP/UDP packet
  • 音楽ファイルのMIDI
  • データベースもMySQL
  • センサーで捕えられる感覚データに EnviromentalXML ...etc



  • いやはや、至れり尽くせりですね。。

    あとはデザインの遊び心と、データ素材を組み合わせて。。

    Let's Enjoy Processing!!

    Blogger Syntax Highliter