2007年7月31日火曜日

セキュリティ強化でWebアプリが動かない

IE7のセキュリティ強化によってIE6で使っていたWebアプリケーションが使えなくなるトラブルを招く可能性がある。

セキュリティ強化でWebアプリが動かない

Smartyのキャッシュを使って負荷を下げよう

【PHP TIPS】 47. Smartyのキャッシュを使って負荷を下げよう

いま知るべきRubyCocoa - Mac OS X Leopard最新情報

オブジェクト指向スクリプト言語Rubyとその周辺では、 Ruby on Rails や JRuby 、 IronRuby などホットな話題が続いています。そんな中、RubyCocoaプロジェクトでは、10月にリリース予定のMac OS X Leopard(RubyCocoa標準搭載)に向けて、オープンソースソフトウェアRubyCocoa 1.0の開発を進めています。

いま知るべきRubyCocoa - Mac OS X Leopard最新情報

Web関連ニュース

消えてしまったWebページを閲覧する

Webマスターが変える 企業サイトの「秘力」:

Webサイト更新に6割強の企業がアウトソーシングを利用

米ヤフーが無償分析ツールとアドバイス集を提供開始 
Webページを軽くする13の改善ポイント


Web経由の攻撃が激増、問題サイトの8割はハッキングで被害に

第2回 Amazon WebAPIを使ってみる

グレープシティ、Ajaxを強化した「SPREAD for .NET 3.0J Web Forms Ed.」

最小構成で6227万円

日本IBMがPOWER6搭載の「System i」新製品、「MySQL」への対応も打ち出す

MySQLをSystem iの専用OS「i5/OS」に対応させたと。
IBMといえば、DB2なのだが、これは驚きだ。しかも将来的には
DB2とMySQLの連携を計画していると。

最小構成で6227万円

しかし、最小構成で6227万円もするシステムで、
オープンソースが利用したいという声に応えて・・・ん~素晴らしい

MySQL文字コード

文字コードの違いによる弊害は,文字化けという表示の問題だけではない。データベースは,データの蓄積と提供が重要な役割である。大量のデータを提供する際には,並べ替えが必要になる。実は,文字データの場合,文字コードによって,並びが変化することをご存知だろうか。今回は,ソート処理と文字列の関係を解説する。

【MySQLウォッチ】第37回 文字コードに起因する問題は文字化けだけじゃない,ソート順とcollationの関係

PHP版Ruby on Rails? - DB操作クラスを自動生成する"PHP Object Generator"

PHPのソースコードを自動生成するWebアプリケーションであるPHP Object Generatorの最新版「PHP Object Generator (以下、POG)3.0」が26日(米国時間)、公開された。

PHP版Ruby on Rails? - DB操作クラスを自動生成する"PHP Object Generator"

Googleカレンダーをテレビ番組表に

Googleのカレンダー・サービスを使ってマッシュアップ・サイトを作ります。テレビ番組サイトが配信しているRSSデータを取得して,Ruby on Railsでカレンダーのフォーマットに変換します。それをGoogleカレンダーに取り込んで,オリジナルの番組表を作ってみましょう。

Googleカレンダーをテレビ番組表に

Ruby普及を支援する「Rubyアソシエーション」設立

プログラミング言語「Ruby」の開発者まつもとゆきひろ氏とネットワーク応用通信研究所(NaCl、本社:松江市)は、Rubyの普及支援を目的とする「Ruby アソシエーション」を2007年7月27日付で設立した。"日本版LLC"である合同会社として設立したもの。 RubyとRuby on Rails ...
Ruby普及を支援する「Rubyアソシエーション」設立

ImageMagick

PHPのライブラリでImageMagickという画像処理ライブラリが存在する。
【PHP TIPS】 48. ImageMagickで簡単に画像処理

2007年7月30日月曜日

POST

Webシステムを開発する場合、どんな言語を使おうが
ベースはHTTPプロトコルである。

POST/GETは理解できているかな?
このPOSTデータを言語からどう利用するか?

PHPなら、$_POST["変数名"]だ。以前は、直接変数名でも参照できたが
セキュリティ上それは不可能になった。

2007年7月29日日曜日

データベース/フィールド/整数型/AUTO_INCREMENT

MySqlでは整数型のフィールドにAUTO_INCREMENTをつけると、1から自動で番号を振ります。


mysql> CREATE TABLE `user` (
-> `ID` int(11) AUTO_INCREMENT,
-> `MAIL_ADDR` varchar(50) default NULL,
-> `NICKNAME` varchar(50) default NULL,
-> `NAME1` varchar(50) default NULL,
-> `NAME2` varchar(50) default NULL,
-> `password` varchar(50) default NULL,
-> KEY `index_USER` (`ID`)
-> ) ;
Query OK, 0 rows affected (0.06 sec)

mysql> describe user;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| ID | int(11) | NO | MUL | NULL | auto_increment |
| MAIL_ADDR | varchar(50) | YES | | NULL | |
| NICKNAME | varchar(50) | YES | | NULL | |
| NAME1 | varchar(50) | YES | | NULL | |
| NAME2 | varchar(50) | YES | | NULL | |
| password | varchar(50) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
6 rows in set (0.03 sec)

2007年7月28日土曜日

データベース/フィールド/整数型/UNSIGNED

mysql> create table t3 ( i integer unsigned);
Query OK, 0 rows affected (0.08 sec)

mysql> insert into t3 values(-1);
ERROR 1264 (22003): Out of range value adjusted for column 'i' at row 1
mysql>
mysql> describe t3;

+-------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| i | int(10) unsigned | YES | | NULL | |
+-------+------------------+------+-----+---------+-------+

1 row in set (0.01 sec)

Typeのところでint(10)となっているが、この10は10バイトという意味ではない。表示幅が10桁という意味です。

mysql> create table t ( i integer);
Query OK, 0 rows affected (0.07 sec)

mysql> describe t;

+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+

1 row in set (0.03 sec)

signedで作成した場合は、11桁になります。-2147483648でマイナス符号の分が考慮されています。


絶対にマイナスにならない値を保持するような場合には、
例えば年齢とか、なんかの点数など
UNSIGNEDにして、利用できる値を大きくする、もしくは利用する領域を減らす
ということに対応できます。

データベース/フィールド/整数型

* MySQLもPostgreSQLも、多くのデータ型をもつ。
* どんなデータ型が存在するのか、どういう指定ができるかを整理しておく必要がある。
* 別名なども利用できるが、基本型が何で、別名がどれなのか。
* どれとどれが同意であるのかも把握しておく必要がある。


データ型 サイズ 最小値 最大値
TINYINT  1 -128 127
SMALLINT 2 -32768 32767
MEDIUMINT 3 -8388608 8388607
INT 4 -2147483648 2147483647
BIGINT 8 -9223372036854775808 9223372036854775807


基本型の別名が用意されている。


型名 データサイズ 備考
INT2 2 SMALLINTの別名
INT 4 INTEGERの別名
INT4 4 INTEGERの別名
INT8 8 BIGINTの別名


UNSIGNEDの場合 †

負の値が絶対に有り得ないフィールドの場合は、MySQLではUNSGINEDを検討してもよい。
その分、正の数の範囲が倍近く多くなる。

型名 データサイズ 最小値 最大値
TINYINT UNSIGNED 1 0 255
SMALLINT UNSIGNED 2 0 65535
MEDIUMINT UNSIGNED 3 0 16777215
INT UNSIGNED 4 0 4294967295
BIGINT UNSIGNED 8 0 18446744073709551615


TINYINTを例に、実際にテーブルを作り、インサートしてみる。

mysql> create table t2 (a tinyint);
Query OK, 0 rows affected (0.08 sec)

mysql> describe t2;

+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| a | tinyint(4) | YES | | NULL | |
+-------+------------+------+-----+---------+-------+

1 row in set (0.02 sec)

mysql> insert into t2 values(-129);
ERROR 1264 (22003): Out of range value adjusted for column 'a' at row 1
mysql> insert into t2 values(-128);
Query OK, 1 row affected (0.03 sec)

mysql> insert into t2 values(128);
ERROR 1264 (22003): Out of range value adjusted for column 'a' at row 1
mysql> insert into t2 values(127);
Query OK, 1 row affected (0.03 sec)

符号ありであれば、-128から127までの値はセット可能。
MySQL4.xの頃は、警告だけで登録はできていたはずだが、5.0からはエラーとなり登録できない。

データベース/フィールド/ビット型

mysql> CREATE TABLE t (b BIT(8));
Query OK, 0 rows affected (0.08 sec)

mysql> INSERT INTO t SET b = b'11111111';
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO t SET b = b'1010';
Query OK, 1 row affected (0.01 sec)

mysql> select * from t;
+------+
| b |
+------+
|  |
|
|
+------+
2 rows in set (0.00 sec)

表示はさすがに化けます。何かちゃんと出力する方法があるのだろうか?

ビットフィールドを扱えるというのは、非常に便利だ。
例えば、ひとつのフィールドごとに、何かの有無を表現するテーブルを作成する場合

自転車の有無
自動車の有無
家の有無

などそれぞれ1で、整数のフィールドを持つのは無駄である。
それぞれ、ビットフィールドにするのでもよいが、

それこそ3ビットのフィールド1つにすることも可能である。

C言語のプログラムではないのでここまでやる必要もないが。
メモリ使用量は減るが、その分、ロジック側で考える部分もでてくるので
利用する場合は、ある程度の指針をもって使いべきである。

データベース/フィールド

テーブルの論理設計の段階では、整数、文字列などのレベルでもよいが、
物理設計レベルで、具体的にどのデータ型にすればよいのかはすこし悩む。
MySQLもPostgreSQLも、多くのデータ型をもつので、まずはどんなデータ型が存在するのか、
どういう指定ができるかを整理しておく必要がある。
別名なども利用できるが、基本型が何で、別名がどれなのか、
どれとどれが同意であるのかも把握しておく必要がある。

環境

Linux/Fedora7
System Linux fedora7.localdomain 2.6.21-1.3194.fc7 #1 SMP Wed May 23 22:35:01 EDT 2007 i686 Build Date May 8 2007 08:15:45

Apache
[root@fedora7 ~]# httpd -v
Server version: Apache/2.2.4 (Unix)
Server built: May 9 2007 06:26:12

MySQL
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.37 Source distribution

PHP
PHP Version 5.2.2

2007年7月27日金曜日

LAMP類似用語

LAMPは、1998年、ドイツのコンピュータ雑誌C'tでM. Kunzeという人が提唱したのが始まりだそうだ。で、そのLAMPの構成をすこし変えたものの類似用語というのがWikipediaにのっていた。
やはりWindowsの場合は、WAMPだった。

























AMP LAMPからLinuxを除いたもの
LAPP LAMPのMySQLの代わりにPostgreSQLのもの
FLAP LAMPのMySQLの代わりにFirebirdのもの
WAMP LAMPのLinuxの代わりにMicrosoft Windowsのもの
MAMP LAMPのLinuxの代わりにMacintoshのもの
SAMP LAMPのLinuxの代わりにSolarisのもの

PHP4サポート終了時期決定

PHP 4 end of life announcement


・PHP5がリリースされてから既に3年がたった。
・PHP4には多くの改良が行われてきた。
・PHP5は速く、安定していて、PHP6の生産準備もできているので、PHP4は製造中止になるでしょう。

・PHP開発チームは、PHP4のサポートは今年いっぱいで終わると発表した。
・2007年12月31日以降、PHP4.4のリリースはない。
・セキュリティに関する改善はケースバイケースで2008年8月8日までフィックスし続けるつもりだ。
・アプリケーションをPHP5へ対応してください。
・PHP4からPHP5への移植に関するドキュメンテーションとして、移植ガイドを提供する。
・移植に関するPHP5.0からPHP5.1、PHP5.1からPHP5.2で利用可能な追加情報があります。

2007年7月22日日曜日

WindowsへのLAMP環境構築

WindowsでApache, MySQL, PHPの環境を作ることもできる。この場合はLinuxではなく
Windowsなので、WAMPか。

LAMP環境の構築

まずは、環境をつくる話から。

Linuxが登場して、すでに20年近くたとうとしている。Linuxのディストリビューションも沢山出てきて、インストールは楽チン、デスクトップとしても十二分に利用できるくらいにアプリが豊富で、日本語利用も問題なし。ちなみにLinuxという場合には、Linuxカーネルの部分を指して、ディストリビューションは、Linuxカーネルと一緒にインストーラーやサーバやアプリケーションのパッケージをまとめて提供しているものです。

さっそくLinux環境の構築から。

ディストリビューションは、今回Fedora7を利用する。
DVDのisoイメージをダウンロードしてきて、DVDに焼くか、もしくはDVD附属の雑誌を買うのもでもよい。

http://fedoraproject.org/wiki/

魔法のランプ

魔法のランプといえば、ディズニー映画のアラジンを思い出す。
この作品の原作は、「アラジンと魔法のランプ」だが、千夜一夜物語の中の1つの物語だ。

ここで書くのは、そのランプではなく、Linux, Apache, MySQL, PHP構成での開発についてである。それぞれオープンソースで提供される、OS, httpサーバ、DBサーバ、そして開発言語環境だ。これらを組み合わてWebサイト制作や、社内のイントラシステムを構築しているところは多い。またPHPがクラスに対応したことや、MySQLがトランザクションやストアドプロシジャーに対応することにより企業システムとしての利用も益々増加すると思われます。