2010年8月10日火曜日

JSON(JavaScript Object Notation)

JSON (JavaScript Object Notation)は、人間にとって読み書きが容易で、プログラムで簡単にパースや生成を行うことができる軽量のデータ交換フォーマット。JavaScriptプログラミング言語 (ECMA-262標準第3版 1999年12月)の一部をベースに作られている。

JSONは、名前/値のペアの集まり(オブジェクト、連想配列、ディクショナリ、ハッシュテーブルなど)と値の順序付きリスト(配列)の2つの構造を基にしている。

オブジェクトは、順序付けされない名前/値のペアのセットで、{(左の中括弧)で始まり、} (右の中括弧)で終わる。各名前の後ろには、:(コロン)が付き、名前/値のペアは、,(コンマ)で区切られる。

配列は、順序付けされた値の集まりで、[(左の大括弧)で始まり、](右の大括弧)で終わる。値は、,(コンマ)で区切られる。

JSON の紹介(日本語)
JSON(英語)
JavaScriptプログラミング言語

JavaScript

JavaScript(ジャバスクリプト)とは、Netscape Communications 社が開発したオブジェクト指向のクライアントサイドで動作するスクリプト言語で、Javaとは名前や記述が似ているが別の言語である。

JavaScript関連サイト

独学 JavaScript
JavaScriptのチュートリアル。

JavaScript小技集
そのままコピー&ペーストして使えるJavaScript/DHTMLのサンプルなど。

JavaScript basic samples
JavaScriptのサンプル集、リファレンス、リンク集など。

MTQ | Movable Type 5 ユーザーコミュニティ

MTQは、MT5(Movable Type 5)について情報交換するためのコミュニティサイト。日本国内のMovable Type(MT) ユーザー同士の交流を支援することを目的にシックス・アパート株式会社が管理・運営している。

MTQ | Movable Type 5 ユーザーコミュニティ

Ruby on Rails

Ruby on Rails」は、オブジェクト指向スクリプト言語「Ruby」向けのオープンソース(MIT license)のWebアプリケーション開発フレームワーク。

10000以上のアプリケーションが既にRuby on Railsで開発されるなど、多くのユーザーによって利用されている。

Rails was created in 2003 by David Heinemeier Hansson and has since been extended by the Rails core team, more than 1,400 contributors, and supported by a vibrant ecosystem.

Ruby on Rails

2010年8月9日月曜日

[Perl][MySQL]INSERT文でシングルクオートを含んだレコードを追加するには

PerlからDBIモジュールを使ってMySQLのテーブルにINSERT文でシングルクオートの含んだレコードを追加するには、次のようにprepare メソッドでプレースホルダを使ったステートメントハンドルを取得して、execute メソッドで値を渡してやれば良い。

my $sth = $dbh->prepare("insert into mytable(foo,bar,baz) VALUES(?,?,?)"); $sth->execute($foo, $bar, $baz);

INSERT文に限らずSQL文で変数値を渡す場合は、プレースホルダを使うのがいいようです。

mysqlデータベースにinsertできない
DBI/DBDの使い方
Perl で、バイナリデータを MySQL に登録する

SQLインジェクション(SQL Injection)

SQLインジェクション(SQL Injection)とは、Webアプリケーション開発者の意図しない悪意のあるSQL文やその一部を入力して、不正にデータベースを操作することを目的とした攻撃のことで、多くの場合データベースを不正に書き換えてコンテンツを改ざんし、ウェブ閲覧者にマルウエアの侵入を試みるプログラム (スクリプト)を実行させようとする。

SQLインジェクションの対策としては、入力値には半角英数字のみを許可するよう制限する方法や、SQLで使える特殊文字をエスケープして対処するという方法が一般的。

SQL インジェクション攻撃とその対策
今夜分かるSQLインジェクション対策

Catalyst

Catalystは、Perlで実装されたWebアプリケーションフレームワーク。

Catalyst - The Elegant MVC Web Application Framework
Catalystのドキュメント。

use Catalyst qw(初挑戦);
MVCウェブフレームワーク Catalyst の使い方の解説。

Perl.com: Catalyst の翻訳

[Perl]2次元配列のサンプルプログラム

C言語やC++なら2次元配列といっても配列の階層を増やすだけなので、わりと簡単に理解できるのですが、Perlはそこでリファレンスという、いまいちわかりにくいものが出てくるのでちょっと面倒です。

とはいっても、2次元配列程度ならそんなに複雑なコードになるというわけでもありません。

以下は、numdata.txtというコンマで区切られたテキストファイルのデータを、2次元配列に格納してからレコードごとに標準出力に出力するPerlのサンプルプログラムです。

--- numdata.txt ---

1,2,3,4
11,12,13,14
21,22,23,24
31,32,33,34
41,42,43,44

--- sample.pl ---

#!/usr/bin/perl
use strict;
use warnings;

#use Data::Dumper;

my @list;
open my $infh, '<', "numdata.txt";
while (my $rec = <$infh>) {
    chomp $rec;
    if ($rec ne '') {
        push @list, [split(/,/, $rec)];
    }
}
close $infh;

#print Dumper(@list);

foreach my $item (@list) {
#    print Dumper($item);
    my ($a, $b, $c, $d) = @{$item};
    print "$a, $b, $c, $d\n";
}

2010年8月8日日曜日

[Perl][HTML::Template]<TMPL_LOOP>タグのサンプルプログラム

<TMPL_LOOP>タグはセクションを区切り、名前をつけることができます。この名前つきループの内側に<TMPL_VAR>タグを置き、プログラムでパラメータに代入するハッシュ・リファレンスの param() にリスト(配列リファレンス)を渡すと、リスト分の出力が繰り返されます。

以下は、<TMPL_LOOP>タグの使い方を示すサンプルプログラムです。サンプルプログラムでは、コンマで区切られたデータファイルを読み込んでリストを作成し、それをパラメータに渡してテーブルを表示しています。また、<TMPL_IF>タグ、<TMPL_ELSE>タグを使用してデータがない場合は、テーブルが出力されないようにしています。


--- データファイル(userdata.txt)

kagahiro,kitaakita,kagahiro3@59log.com,011678901
admin,tokyo,webmaster10@59log.com,011778901
buzei,kawasaki,support2@59bbs.org,041758901

--- テンプレートファイル(tmplloop.tmpl)

<html>
<head>
<title>HTML::Templateのサンプルプログラム LOOP</title>
</head>
<body>
<h1>HTML::Templateのサンプルプログラム LOOP</h1>
<TMPL_IF NAME=DATA_NUM>
    <table>
    <tr>
    <td>User Name</td>
    <td>Address</td>
    <td>Email</td>
    <td>Tel</td>
    </tr>
    <TMPL_LOOP NAME=USER_INFO>
    <tr>
    <td><TMPL_VAR NAME=USERNAME></td>
    <td><TMPL_VAR NAME=ADDRESS></td>
    <td><TMPL_VAR NAME=EMAIL></td>
    <td><TMPL_VAR NAME=TEL></td>
    </tr>
    </TMPL_LOOP>
    </table>
<TMPL_ELSE>
    No data
</TMPL_IF>
</body>
</html>

--- CGI(tmplloop.cgi)

#!/usr/bin/perl

use strict;
use warnings;

use HTML::Template;

my $template = HTML::Template->new(filename => 'tmplloop.tmpl');

my @loop_data = ();
open my $infh, '<', "userdata.txt";
while (my $rec = <$infh>) {
    chomp $rec;
    if ($rec ne '') {
        my %row_data;
        my ($username, $address, $email, $tel) = split(/,/, $rec);
        $row_data{USERNAME} = $username;
        $row_data{ADDRESS} = $address;
        $row_data{EMAIL} = $email;
        $row_data{TEL} = $tel;
        push @loop_data, \%row_data;
    }
}
close $infh;

$template->param(USER_INFO => \@loop_data);
$template->param(DATA_NUM => scalar(@loop_data));

print "Content-Type: text/html; charset=utf-8\n\n";
print $template->output;

[Perl][HTML::Template]<TMPL_VAR>タグのサンプルプログラム

HTML::Templateの<TMPL_VAR>タグは、プログラムでパラメータに値を設定すると、タグの部分がパラメータで設定された文字列で置き換えられるという簡単なものです。

以下は、<TMPL_VAR>タグの使い方を示す単純なサンプルプログラムです。


--- テンプレートファイル(tmplvar.tmpl)

<html>
<head>
<title>HTML::Templateのサンプルプログラム VAR</title>
</head>
<body>
<h1>HTML::Templateのサンプルプログラム VAR</h1>
<p>
My Name is <TMPL_VAR NAME=NAME> <br />
My IP Address is <TMPL_VAR NAME=IPADDR> <br />
</p>
</body>
</html>

--- CGI(tmplvar.cgi)

#!/usr/bin/perl

use strict;
use warnings;

use HTML::Template;

my $template = HTML::Template->new(filename => 'tmplvar.tmpl');

$template->param(NAME => 'Yamato, Taro');
$template->param(IPADDR => $ENV{'REMOTE_ADDR'});

print "Content-Type: text/html; charset=utf-8\n\n";
print $template->output;

[Perl]DBI経由でMySQLに接続して、SELECT文でデータを取得するサンプルプログラム

PerlのプログラムからDBI経由でMySQLに接続し、SELECT文でデータを取得する処理のサンプルプログラムです。

あらかじめphpMyAdminを使用してMySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「users」を作成、3件のレコードを登録しておきます。

CREATE TABLE `users` (
  `userid` varchar(100) COLLATE utf8_bin NOT NULL,
  `password` varchar(250) COLLATE utf8_bin NOT NULL,
  `status` int(11) NOT NULL,
  `auth` int(11) NOT NULL,
  `username` varchar(250) COLLATE utf8_bin NOT NULL,
  `address` varchar(250) COLLATE utf8_bin NOT NULL,
  `mailaddr` varchar(100) COLLATE utf8_bin NOT NULL,
  `hpurl` varchar(250) COLLATE utf8_bin NOT NULL,
  `widgets` text COLLATE utf8_bin NOT NULL,
  `createdate` datetime NOT NULL,
  `lastupdate` datetime NOT NULL,
  PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

insert into `users` (`userid`,`password`,`status`,`auth`,
 `username`,`address`,`mailaddr`,`hpurl`,`widgets`,
 `createdate`,`lastupdate`)
  values('admin','1234','1','0','webmaster','',
  webmaster100@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
 `username`,`address`,`mailaddr`,`hpurl`,`widgets`,
 `createdate`,`lastupdate`)
  values('test1','5678','1','1','user 1','',
  'test1@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
 `username`,`address`,`mailaddr`,`hpurl`,`widgets`,
 `createdate`,`lastupdate`)
  values('test2','abcd','1','1','user 2','',
  'test2@59log.com','http://59log.com/','',now(),now());

以下のPerlプログラムでは、テーブル「users」からステータスが1のレコードを全て取得、一旦配列に格納してから標準出力に出力しています。

検索条件の設定にはプレースホルダを使用し、DB処理でエラーが発生した場合は、例外処理に飛んでエラーの内容が出力されるように、RaiseErrorに1を設定しています。

--- mysql_select.pl ---

#!/usr/bin/perl

use strict;
use warnings;

use DBI;

my $data_source = "DBI:mysql:testdb"; # 接続先はtestdb
my $username = "test"; # データベースへのアクセス権限を持つユーザーを指定
my $password = "abcd"; # そのパスワード

my $status = 1;
my @recs = ();
eval {
    my $dbh = DBI->connect($data_source, $username, $password,
                          {RaiseError => 1, PrintError => 0});
    my $sql  = "select * from users where status = ?";
    my $sth = $dbh->prepare($sql);
    $sth->execute($status);
    while (my @rec = $sth->fetchrow_array) {
        push @recs, [@rec];
    }
    $sth->finish;
    $dbh->disconnect;
};
if ($@) {
    print "Error : $@\n";
}

foreach my $rec (@recs) {
    print join(",", @{$rec}), "\n";
}

[gcc]iconvで文字エンコードを変換するサンプルプログラム

単にテキストファイル等の文字エンコードを変換するのであれば、iconvコマンドを使用して変換すれば良いのですが、ときにはプログラム内部で取得した文字列の文字エンコードを変換したい場合もあります。

以下のプログラムはLinuxやCygwinの環境でC言語のプログラムからiconvを呼び出して文字エンコードを変換する場合の手順を示したサンプルプログラムです。

--- tst_iconv.c ---

#include <stdio.h>
#include <iconv.h>

#define  BUFSIZE  1024

char outbuf[BUFSIZE];

int convert(char const *src,
            char const *dest,
            char const *text,
            char *buf,
            size_t bufsize);

main(void)
{
    int ret;

    ret = convert("SHIFT-JIS", "UTF-8",
                  "日本語テストメッセージおはよう",
                  outbuf, sizeof(outbuf));
    if (ret) {
        printf("%s\n", outbuf);
    }
    else {
        printf("Oops!\n");
    }
}

int convert(char const *src,
            char const *dest,
            char const *text,
            char *buf,
            size_t bufsize)
{
    iconv_t cd;
    size_t srclen, destlen;
    size_t ret;

    cd = iconv_open(dest, src);
    if (cd == (iconv_t)-1) {
        perror("iconv open");
        return 0;
    }

    srclen = strlen(text);
    destlen = bufsize - 1;
    memset(buf, '\0', bufsize);

    ret = iconv(cd, &text, &srclen, &buf, &destlen);
    if (ret == -1) {
        perror("iconv");
        return 0;
    }

    iconv_close(cd);
    return 1;
}

コンパイル方法
$ gcc -o tst_iconv tst_iconv.c -liconv

ICONV

[Perl]メールフォームCGIの作り方

オンラインショップの商品が注文された際に顧客に注文内容の確認メールを送信したり、掲示板にコメントが書き込まれた際に管理人宛てに通知メールを送信したりするには、フォームで入力された項目の内容をCGIからメールとして送信する必要があります。

一般的なレンタルサーバーでCGIからメールを送信する場合の基本的な処理手順は次のようになります。

1.フォームから入力された各項目の値をパラメータから取得
2.subject(件名)をMIME-Base64形式に変換
3.メッセージを作成
4.メール送信する文字列の文字コードをJISに変換
5.sendmailを使用してメールを送信

下記のCGIスクリプト(UTF-8)はレンタルサーバー等で利用可能なsendmailを使用してフォームから入力された、 Subject、宛先メールアドレス、差出人、本文を使用してメールを送信するサンプルプログラムです。


--- mailform.html (入力フォーム) ---
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>メールフォーム</title>
</head>
<body>
<h1 class="title">メールフォーム</h1>
<form method="post" action="sendmail.cgi">
<input type="hidden" name="a" value="exec">
件名(Subject) :<br />
<input type="text" name="subject" size="80" value=""><br />
宛先(To) :<br />
<input type="text" name="to" size="80" value=""><br />
差出人(From) :<br />
<input type="text" name="from" size="80" value=""><br />
本文(Body) :<br />
<textarea name="body" rows="10" cols="65"></textarea><br />
<p>
<input type="submit" value="送信">
</p>
</form>
</body>
</html>

--- sendmail.cgi (メール送信CGI) ---
#!/usr/bin/perl
use strict;
use warnings;

use CGI;
use Encode;

my $cgi = CGI->new();

# パラメータからフォームの入力値を取得
my $subject = $cgi->param('subject');
my $to = $cgi->param('to');
my $from = $cgi->param('from');
my $body = $cgi->param('body');

# subject(件名)をMIME-Base64形式に変換
$subject = Encode::encode('MIME-Header-ISO_2022_JP', $subject);

# メッセージを作成
my $message = <<"END_MESSAGE";
From: $from
To: $to
Subject: $subject
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

$body
END_MESSAGE

# メール送信する文字列の文字コードをJISに変換
Encode::from_to($message, 'utf8', '7bit-jis');

# sendmailを使用してメールを送信
my $sendmail_path = '/usr/sbin/sendmail';  # sendmail path
open my $mailh, "| $sendmail_path -t -oi $to";
print {$mailh} $message;
close $mailh;

# 送信終了を表示
my $html = <<"END_HTML";
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>送信終了</title>
</head>
<body>
<p><big>送信終了</strong></big></p>
</body>
</html>
END_HTML
print "Content-Type: text/html\n\n", $html;

なお、フォームからのパラメータの受け取りにはCGIモジュールを、メール本文の文字コードの変換やsubject(件名)のMIME-Base64形式への変換にはPerl 5.8以降では標準モジュールなっているEncodeモジュールを使用しています。

また、このサンプルでは、処理手順をわかりやすくするために、入力チェックなどの実際に運用する場合に必要な処理は省いてますが、入力チェック処理も含まれたより実用的なシンプルなメールフォームCGIの無料配布(ライセンスはGPL)も行っていますので、よろしければご活用ください。

2010年8月7日土曜日

HTML::Template

HTML::Templateは、シンプルで高速なループ構造を表現するのに適したテンプレートエンジン。テンプレートファイルでは変数を入れるために以下のタグが使用できる。

<TMPL_VAR> <TMPL_LOOP> <TMPL_INCLUDE> <TMPL_IF> <TMPL_ELSE> <TMPL_UNLESS>

HTML::Template - CGI スクリプトから HTML テンプレートを使うための Perl モジュール
HTML::Template.pm

Template Toolkit (TT)

Template Toolkit (TT)は、HTML::Templateなど他のテンプレートと比較してより汎用性の高い処理をすることが可能なテンプレートエンジン。出力をサブルーチンに渡したりファイルに出力することもできる。

また、テンプレートファイル内の変数置換だけでなく、テンプレートの中にTT2言語と呼ばれる言語で簡単なプログラムを書いたり、DBIなどのプラグインを使用してデータベースへの接続をすることも可能。

Template Toolkit Home Page
Template Toolkit Manual -テンプレートツールキット和訳マニュアル-
Template Toolkit Manual(英語)

Web Application Firewall (WAF) 読本

Web Application Firewall 読本」は、IPA(独立行政法人情報処理推進機構)がウェブサイト運営者向けに作成した、Web Application Firewall(ウェブ・アプリケーション・ファイアウォール、WAF)の解説資料。

Webアプリケーションの脆弱性を悪用した攻撃を遮断する技術「WAF」の導入を検討する際に、WAFの理解を手助けとなる資料で、WAFに関する取り組み、WAFの概要、機能の詳細、導入におけるポイント等がまとめられている。

Web Application Firewall 読本

アプリやろうぜ!by GMO

アプリやろうぜ!by GMO」は、GMOインターネットグループが、日本のクリエイターやエンジニアを対象に、世界へ通じるソーシャルアプリ開発を支援する総額3億円の支援プロジェクト。ソーシャルアプリ・ゲームを開発するための資金や開発環境の提供をはじめ、技術サポート、必要人員のマッチングなどを行っている。

アプリやろうぜ!by GMO
「アプリやろうぜ!」

2010年8月6日金曜日

EPUB(イーパブ)

EPUB(イーパブ)は、米国の電子書籍標準化団体「International Digital Publishing Forum(IDPF)」が開発したオープンな電子書籍ファイルフォーマット規格。オープンな規格であることとフォーマットの単純さから、対応する電子書籍ハードウェアや電子書籍アプリケーションが多く、アップルやGoogle、ソニーなども採用を発表している。

EPUBファイルは、XML、HTML、CSS、画像等から構成され、全てのファイルはzip形式で圧縮され拡張子はepubでなくてはならない。

電子書籍 ePub電子書籍の作り方2 シンプル ePUB フォーマット ガイド :How to create an ePub ebook? Simple ePUB Format Guide
OPF 2.0 v1.0 日本語訳 [Open Packaging Format (OPF) 2.0 v1.0]
International Digital Publishing Forum(IDPF)

Perl6ディストリビューション「Rakudo Star」

Rakudo.orgとPerl 6開発チームが、アーリーアダプター向けのPerl 6ディストリビューション「Rakudo Star July 2010 Release」を公開した。

Rakudo Starは、Perl 6の文法や正規表現、イントロスペクション、オブジェクトモデル、ジャンクションとオートスレッドなど 多くの機能が搭載されたPerl 6の実装で、仮想マシン「Parrot Virtual Machine 2.6」やRakudo Perl 6コンパイラ、Perl 6の 各種ドキュメントを含んでいる。

Perl 6実装「Rakudo Star」リリース
Rakudo.org

Zen Cart

Zen Cart(ゼンカート)は、オープンソースECサイト構築ソフト「osCommerce」から派生した、PHPとMySQLを使って実装されている高機能のオープンソースのECサイト構築ソフト。 ライセンスはGPLを採用しておリ誰でも無料でダウンロードして利用できる。また、プログラムの改変や再配布も自由に行うことができる。

Zen Cartの特長

  • インストールが簡単
  • テンプレートシステムでデザインが変更可能
  • カラー、サイズなどの多彩な商品オプション機能
  • 多彩な割引き機能
  • ダウンロード販売
  • 多言語、多通貨対応
  • 豊富なモジュールで機能を追加
  • 携帯対応
  • 高機能なポイント
  • 決済・配送
  • 各種CMS(XOOPS、Geeklog、WordPress、Movable Type)との連動
  • コミュニティが活発

Zen-Cart.JP(Zen Cart 日本語公式サイト)
Zen Cartの日本語化を行う団体のサイト。日本語化されたZen Cartのダウンロードができる他、インストール方法の説明などの日本語ドキュメント、デモショップ、ドキュメント、FAQ、掲示板、開発Wikiなどのコンテンツがある。

PHP

PHPはHTMLタグと処理を実行するコードを同じファイル内に記述することで、手軽にサーバーサイドで動作するWEBアプリケーションを作成することができる、WEBアプリケーション開発用に作られたスクリプトプログラム言語の一種で、通常のCGIとして使用できるだけでなく、PHPモジュールをApacheサーバーに組み込むことにより、 JSP/Java サーブレットなどよりも処理が早くサーバー負荷も低いためWebアプリケーションの開発言語として人気が高い。

Perlと同様にPHPで記述された多数のフリーソフト(オープンソースソフト)が公開されており、現在ではほとんどのレンタルサーバーで利用できるようになっている。

PHP関連サイト

日本PHPユーザ会
PHPのダウンロード、日本語マニュアル、メーリングリスト、リンク集など。

PHP日本語ページ
PHPに関連するニュース、書籍、Windows版・ツールなどの関連情報。

PHPの基礎体力
PHPのTips、PHPで記述されたフリースクリプト、掲示板、リンク集など。

レッツPHP!
PHPのチュートリアル、掲示板、アクセス解析・日記帳・掲示板などのスクリプト。

PHPプロ!
PHPのコミュニティポータルサイト。Q&A掲示板、TIPS、マニュアル、ニュース、用語集など。

phpspot - PHPスクリプト/MySQL/掲示板
フリーのwindows用php開発環境「PHPエディタ(forWin)」や、フリーのPHPスクリプト(掲示板、webshot、webimager、CMS)、PHPツールバーなど。

2010年8月5日木曜日

[日本語訳]Secure Programming for Linux and Unix HOWTO

Linux および Unix システム上で安全なプログラムを書く際に必要となる設計や実装について、そのガイドライン。遠隔のデータを見るためのビューアーや Web アプリケーション(CGI スクリプトを含む)、ネットワーク・サーバ、setuid や setgid してあるプログラムが対象。CやC++、Java、Perl、PHP、Python、TCL、Ada95 の個別ガイドラインも掲載されている。

Secure Programming for Linux and Unix HOWTO

Ruby

Ruby(ルビー)は、まつもとゆきひろ氏によって開発されたオブジェクト指向のスクリプト言語のことで、Perlに匹敵する強力なテキスト処理能力とシンプルな文法などが特長。

David Heinemeier Hansson氏によって開発された優れたWebアプリケーションフレームワーク「Ruby on Rails」の出現によって、現在はWebアプリケーション開発において人気の高い言語になっている。

オブジェクト指向言語Ruby
オブジェクト指向のスクリプト言語 Rubyのサイト。ダウンロード、リファレンスマニュアル、FAQ、メーリングリストなど。

Ruby on Rails
オブジェクト指向スクリプト言語「Ruby」向けのオープンソース(MIT license)のWebアプリケーション開発フレームワーク。

Rubyアソシエーション
Ruby関連のプロジェクトやコミュニティ、ビジネスの関係を強化し、エンタープライズ領域におけるRubyの利用に関する諸問題の解決に取り組むことを目的とする合同会社。理事長はRuby開発者のまつもとゆきひろ氏。

日本Rubyの会
Rubyの利用者の支援、Ruby(+Rubyのライブラリ)開発者の支援を目的とした任意団体。

逆引きRuby
Rubyを使ってやりたい事から、その方法を調べられる逆引きリファレンス。

Ruby(Japanese)
Rubyのスクリプト集。

Rubyコーディング規約
Rubyのコーディング規約の雛型。

Ruby Draft Specification
IPAがJIS規格として標準化を進めているオープンソースのプログラミング言語「Ruby」の標準化仕様のドラフト(英語)。

Ruby のサンプルプログラム投稿サイト
Ruby のサンプルプログラムを登録、閲覧をするためのサイト。

テンプレートエンジン

テンプレートエンジンとは、テンプレートと呼ばれるHTMLページのひな形をプログラムからデータを渡し合成した結果を HTMLページとして出力するためのライブラリのことで、テンプレートエンジンを利用することで、プログラムのロジックと Webページのデザインを分離することができるため、プログラマーとWebデザイナーの分業が可能になる。

Webアプリケーションの開発においてはテンプレートエンジンの使用が標準的になっており、多くのWebアプリケーションフレームワークでその一部となっている。

Perlで利用できるテンプレートエンジンには、Template Toolkit(TT)HTML::Templateなどがある。

テンプレートエンジン
60行で作るPHP用テンプレートエンジン
40行で作るPerl用テンプレートエンジン
[perl] TTより5倍速い?テンプレートエンジン"Tenjin"を試す
Pure JavaScript Template Engine

正規表現(regular expression)

正規表現(regular expression)とは、異なる文字列の集まりを一つパターンで表現するための表現方法で、テキストエディタやAWK、Sed、Perl、Python、Rubyなどのテキスト処理を目的とするプログラミング言語において文字列の検索や置換を行う機能として実装されている。

2010年8月4日水曜日

Django

Djangoは、 DRY(Don't Repeat Yourself、同じものを繰り返さない/重複させない)というコンセプトで、コンポーネントの再利用と自動化によって、素早くより少ないコードでのWebアプリケーション開発ができるオープンソース(BSD license)のPython向けWebフレームワーク。

Django | The Web framework for perfectionists with deadlines

クラウドコンピューティング

クラウドコンピューティングとは、ソフトウェアやプラットフォーム、システムインフラなど コンピュータを利用したサービスをインターネット経由で提供するもので、ユーザーはハードウェアへの 投資を行うことなくすぐに必要なサービスを受けることができる。

クラウドコンピューティングの三つの形態

1. SaaS(Software as a Service)

インターネット経由でのソフトウェアサービスの提供。ASP(Application Service Providor)とも呼ばれる。専業の Salesforce.comによるCRMソフトウェアの提供が象徴的だが、Oracle、IBM、マイクロソフトなど大手ITベンダーも多くのサービスを提供している。

2. PaaS(Platform as a Service)

アプリケーションソフトウェアを構築および稼動させるためのプラットフォームをインターネット経由で提供する。Google App Engine、マイクロソフトの Azure Services Platform などがある。

3. IaaS(Infrastructure as a Service)
コンピュータシステムを構築・稼動させるためのインフラ(仮想マシンやストレージなど)を、インターネット経由のサービスとして提供する。Amazon EC2/S3 が代表的。

2010年8月3日火曜日

Python

Python(パイソン)とは、現在Google社に在籍中のGuido van Rossum 氏によって開発された、フリーなオブジェクト指向のスクリプトプログラミング言語で、「シンプル」で「習得が容易」という特徴があり、初心者がプログラミングを学ぶための最適な言語とされており、欧米ではPHPやPerlなどとともにWebアプリケーションの開発言語として広く普及している。

UNIX、Windows、Mac OSなどの各種プラットフォームに対応しており、テキスト処理、GUI、インターネットプロトコルなどのライブラリが標準で添付されている。

Python関連サイト

Python Japan User's Group
日本Pythonユーザ会(PyJUG)。開発環境のダウンロード、ドキュメント、リンク集など。

ニシキヘビを飼おう Python入門
Pythonプログラミングの基本を解説。

Python Programming Language
Pythonの公式サイト(英語)。

MySQL

MySQLは、フィンランドのMichael Widenius氏よって高速性を重視して 開発され世界で広く普及している軽快なオープンソースのRDBMS。スクリプト言語のPHPやPerl、Runyなどとの組み合わせでブログソフトウェアやコンテンツ管理システム(CMS)といったWebアプリケーションのデータ管理にも広く利用されている。 以前は、MySQL AB によって開発、提供、サポートが行われていたが、2008年にコンピュータメーカー「Sun」が約10億ドルで買収。 その後、SunがOracleに買収されたため、現在は商用データベースとして大きなシェアを持つOracleの支配下にある。

MySQL関連サイト

MySQL::世界でもっとも普及している、オープンソースデータベース
MySQLの公式日本語サイト。トライアル版のダウンロードやドキュメント。

日本MySQLユーザ会
MySQLに関する各種情報やメーリングリストの案内。

MySQL リファレンスマニュアル
MySQL のリファレンスマニュアル。

MySQLクイック・リファレンス
MySQLの基本的な使い方について解説。

Perl

Perl(パール)とは、Larry Wall(ラリー・ウォール)氏によってテキスト処理(テキストの検索や抽出やレポート作成など)のための言語として開発された、C言語に似た表記法のインタープリタ型のスクリプトプログラミング言語で、現在ではテキスト処理だけでなく、システムプログラミングやネットワークプログラミングなども可能な、汎用的なプログラミング言語となっている。比較的簡単にプログラミングが可能であることから、CGIやWebアプリケーションの作成言語としても人気が高い。アーティスティック・ライセンスおよびGPLのもとでフリーソフトウェアとして配布されている。

Perl関連サイト

Japanized Perl Resources Project
Perlの日本語リソースの収集と文書を日本語訳するプロジェクト。perldoc.jp

CPAN.jp
perl日本語ドキュメント全文検索。

Tokyo Perl Mongers
東京地区のPerlユーザーのコミュニティー(メーリングリスト)。

Jcodeを使おう(実用本位のJcode紹介)
文字コード判別、変換のための日本語文字コード用汎用モジュール、Jcode.pmの解説。

Perlリファレンス
Perlの日本語リファレンスを掲載しているサイト。

Perl.com Home Page
Perlのホームページ。ソースコード、各種OS別のPerlの実装、マニュアル、モジュール、バグレポート、PerlのFAQ集など。

The Perl Programming Language - www.perl.org
Perlのコミュニティサイト。

ActiveState
Windows上で動作するフリーのPerlパッケージ「Active Perl」の配布イト(英語)。

CPAN(Comprehensive Perl Archive Network)
Perlのライブラリ、モジュールソフトウェア等、Perlで書かれたプログラムが集積されている巨大なアーカイブ。

Appliworks(アプリワークス)とは

Appliworks(アプリワークス)は、オープンソースソフトをはじめとする各種ソフトウェア、Webサービス、API、サンプルコードなどの技術情報や開発者向けの解説書などを紹介するブログです。