2009/08/06

画像の最適化

スライスをするときにどの画像フォーマットで書きだそう?と迷うことがよくある。
写真はjpg、色数の少ないイラストはgifと決めていたけれど、本当にそれでいいのだろうか?

Web用に画像を書きだすには、以下の3つの画像フォーマットを使用する
簡単な特徴は以下の通り。
・GIF
最大256色、可逆圧縮、透過、アニメーションGIF
・JPG
最大17万色、非可逆圧縮、高い圧縮率
・PNG
最大17万色、可逆圧縮、JPGよりサイズ大、透過
(GIFみたいなぎざぎざなしで透過画像が作れる)
またPNGにはPNG-8、PNG-24、PNG-32などいくつか種類がある。

PNG-8…IE6でGIF並みの表現があり、透過もOK、可逆圧縮
(PNG-24や32を扱いたい場合でも、PNG-8でいけないかを確認し、
できるだけPNG-8を使用する)←軽い・早い!
PNG-24、32はIE6以前のブラウザできちんと表示されず
jsなどの力を借りる必要が出てくる。

さらに縮小化したい方はこちらを参考に。
画像サイズを縮小化する4つの手順(画像劣化なし!)
http://journal.mycom.co.jp/news/2008/11/19/027/

2009/07/24

CentOSにMTをインストールする!

Linuxについてちらほら研究していましたが、もともとはそう、MT環境を構築するためのLinuxだった。。
では早速。


まずはMT4(無償版)のインストールから~
http://www.sixapart.jp/movabletype/license.html#personal

パーミッションがどーのこーのと言われるので、解凍したフォルダをいったんユーザーのフォルダへ移動
MT-4_261-ja.zip ⇒ MT-4.261-ja
(/home/ccoro/以下へ移動)


さて、この作業は必要だったのかなぞですが、一応この手順でやったので…
■参考サイト
http://blog.servered.net/2008/01/yum-rpmforge.html
---
root@host bin]# wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
[root@host bin]# rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

[root@host bin]# vi /etc/yum.repos.d/rpmforge.repo
編集モードで以下のように書き換える
enabled = 1

enabled = 0

保存して終了(:wq)

[root@host bin]# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt


続いて、モジュールを一気にインストール
■参考サイト
http://wp.serpere.info/archives/177#
---
※リポジトリを自動で追加してくれるrpmパッケージを有効にしたいとき
→yumの実行時に「--enablerepo=rpmforge」 オプションを付ける
1.
sudo yum --enablerepo=rpmforge install \
perl-Image-Size perl-SOAP-Lite perl-Crypt-DSA perl-XML-Atom \
ImageMagick-perl perl-Archive-Zip perl-IO-Compress-Zlib perl-PerlIO-gzip
2.
#DB接続モジュールは今回MySQLで。
sudo yum --enablerepo=rpmforge install perl-DBD-MySQL

ここらへん、結構時間がかかります。


あとは「MT-4_261-ja」フォルダをさらにrootの権限で(su -コマンド)
/var/www/cgi-bin/以下へ移動
名前の入力が面倒なので、「MT-4.261-ja」という名前を「mt」に変えてしまいます!

以下のフォルダを作成
(mkdir フォルダ名 ディレクトリ)
/var/www/cgi-bin/html(アプリケーションディレクトリ)
/var/www/cgi-bin/html/blog(ブログディレクトリ)
/var/www/db(データベースディレクトリ)
もうひとつ「スタティックディレクトリ」というのが必要ですが、
これはMTをダウンロードすると中に入っています。

以後パーミッションの変更が必要ならば・・・
chmod 0777 ディレクトリ
■参考サイト
http://www.movabletype.jp/documentation/linux.html
(「パーミッション(権限)の設定」の項目を参考に3つの権限を設定)

ユーザーの変更が必要ならば・・・
chown ユーザ名:ユーザ名 ディレクトリ


そして最後に肝心なこと
SELinuxの設定!!
セキュリティが有効になっていたら
「mt」にアクセスしてもForbiddenが返されてしまいます。
■参考サイト
http://www.server-memo.net/linux-setting/selinux6a5f80fd306e505c6b62

getenforce
→Enforcing
となっていたら…

setenforce 0
を入力して、一時的に無効にしましょう。
(※次、リブートすると元に戻ります)


はい、これで完成!
ブラウザで
「http://localhost/cgi-bin/mt/」を叩くと…

「Movable Typeへようこそ」!!!!

あ~嬉しいぃぃぃ(ToT)/~
感動です。


補足
Apache(httpd.conf)の中での設定
■参考サイト
http://www.aconus.com/~oyaji/faq/apache_cgi4.htm

2009/07/15

tar形式で圧縮

PCが壊れてバックアップが必要になった!
メールをバックアップしたい!
というとき…

データの移行でファイルをまとめてzip形式で圧縮しようとすると、ものすごく時間がかかってしまう。
それを回避する方法がtar(ター)形式でまとめる方法。
あまり聞きなれない形式だけど、Linuxとかでよく出てくる。

tar形式の特徴
・中身を圧縮しない
・ひとつのファイルに固めるだけ

そのため容量にほとんど変化はないが、大量のデータを移動したいときには圧縮する時間分短縮できるので効率的。


設定方法は以下の通り。
ソフトが必要(ここではLhaplusを使用)


1.Lhaplus.exeの入っているディレクトリに移動し、開く




2.ダイアログが出るので、[関連付け/シェル]タブを開き、右下の「[圧縮]のサブメニュー項目」のところで「tar」を選択




3.[適用]を選択



これでフォルダの上で右クリックして[圧縮]を選ぶと、tar形式が選択できるようになる。

惜しいっ!!

主婦の知恵でふと考えた。

冷蔵庫の中身がいつでもパッと思い出せたら・・・
  • 夕ご飯何作ろうかしら?が分かる
  • スーパーで何を買うべきか分かる
  • 重複して買わなくてすむ
  • 眠っている食材を意識できる(賞味期限を忘れない!)

ということから、
冷蔵庫の中身を記録・閲覧できるリストがあったら!
とひらめいた。
自分の中ではかなりのヒット☆
もしかしてビジネスができるかもー!

なんてウキウキしていたら・・・・
すでにありました。。
ショミカン http://shomikan.jp/mypage/

悲しすぎます。
でもたとえばこれが携帯アプリケーションだったら?
とか
賞味期限だけを管理するんじゃなくて
今冷蔵庫に何が入っているかが分かるリストがあれば
素晴らしいと思う。

私にプログラミング能力があれば開発してみるんだけど。。。
あーあ、ビジネスチャンスが。残念。

2009/07/10

ファイルシステム(CentOS)

Linuxでは、フォルダのことをディレクトリと呼ぶらしい。

[CentOS内のディレクトリ構造]

/--- bin 一般ユーザーも利用可能なコマンドがあり、基本的な操作に
欠かせないコマンドを格納するディレクトリである。

├ dev Linux で使用するデバイスに適応するためのデバイスファイルが
置かれている。

├ home ユーザーのホームとなるディレクトリがこの下に置かれる。
例えば、"testuser"というユーザーがいれば、/home の下に
/testuserというディレクトリが存在し、ホームディレクトリとなる。

├ lost+found なんらかの理由で破損し、行き先不明となったファイルを
格納する場所である。

├ misc ファイルシステムを自動的にマウントする仕組みである
autofsによって利用される。

├ net /miscディレクトリと同様に、ファイルシステムを自動的に
マウントする仕組みであるautofsによって利用される。

├ proc システムのプロセスを維持するための各種ファイルが置かれている。

├ root ルートユーザーのホームディレクトリである。

├ selinux

├ sys sysfsのディレクトリである

├ tmp プログラムが動作するときに必要な一時ファイルを格納するディレクトリである。

├ var ログ、メール、プリントスプールなどのいろいろなシステムファイルが格納されるディレクトリであり、追加・更新など日常的に内容が変化するファイルが置かれている

├ boot Linux の起動に関するファイルが置かれている。

├ etc システム設定ファイルが入っているディレクトリである。

├ lib システムを起動するのに必要なドライバモジュールやライブラリファイル用のディレクトリである。

├ media CD-ROMやフロッピーディスクなどの外付けメディア用のディレクトリである。

├ mnt CD-ROM やフロッピーディスク、他のOS のパーティションなどをマウントする場所である。

├ opt 追加アプリケーションを格納する場所である。

├ sbin システム管理用のコマンドが置かれる場所である。

├ srv HTTP,FTPなどのサービス用のデータが入るディレクトリである。

├ usr 各種プログラムが置かれる場所である。さまざまなアプリケーションやその設定ファイル、ライブラリを格納する。

CentOSでCtrlキーとCapsLockキーを入れ替えたい

しばらくWindowsでキーマップを変更して使っていたもので
Linux環境でも同じように変更したくて検索してみた。

参考にしたサイト
CentOS 4 : CapsLock と Controlキーを入れ替える。 | ぶっちろぐ

-----
管理者としてログイン
$ su-

キーマップを扱うディレクトリへ移動
# cd /lib/kbd/keymaps/i386/qwerty

「jp106.map.gz」をコピーする
# cp -p jp106.map.gz jp106_Ctrl_CAPS.map.gz

-dオプションで解凍する
# gzip -d jp106_Ctrl_CAPS.map.gz

解凍したファイルを編集
# vi jp106_Ctrl_CAPS.map
keycode 29=Caps_Lock
keycode 58=Control

元ファイルも解凍して、2つのファイルの変更点を比較する
# gzip -d jp106.map.gz
# diff -u jp106_Ctrl_CAPS.map jp106.map

確認できたら元通りに圧縮する
#gzip jp106_Ctrl_CAPS.map
#gzip jp106.map

このディレクトリにjp106から始まるファイルがちゃんと存在するか確認
# ls -l jp106*
-rw-r–r– 1 root root 775 Feb 22 2005 jp106.map.gz
-rw-r–r– 1 root root 783 Feb 15 20:33 jp106_Ctrl_CAPS.map.gz

sysconfigファイルヘ移動
# cd /etc/sysconfig

keyboard内を編集(※赤字部分を編集)
# cat /etc/sysconfig/keyboard
KEYBOARDTYPE="pc"
KEYTABLE="jp106_Ctrl_CAPS"

リブートしなくてもよいように。
# /bin/loadkeys jp106_Ctrl_CAPS


・・・しかし、この通りにできたのに
なぜかキーマップを変更できていない。
なぜだろう。。

2009/07/02

Linux on Windowsの環境構築【VMware Player】

仮想マシン・ソフト「VMware Player」を入れてみた。
仮想マシンなら何かあったとしても起動前の状態に戻すことができるし、既存の環境には触れずに別のOSを使えるから安心。

作成する環境
ホストOS Windows Vista
ゲストOS Linux
(CentOS使用)

1.VMware Playerのインストール(最新版が入手できる)
個人情報の入力が必要
私の場合、バージョン2.5.2をダウンロード
保存先:C:\Program Files\VMware\

2.CentOSのミラーサイト「日本理化学研究所」から必要なファイルを入手
ダウンロードするファイル
「CentOS-5.3-i386-bin-1of6.iso」
~「CentOS-5.3-i386-bin-6of6.iso」まで6ファイル
保存先:C:\Program Files\VMware\CentOS5\

3.ディスクイメージのダウンロード
設定:EasyVMX!2.0
VM Name : CentOS5
GuestOS: Redhat Enterprise Linux 4
それ以外の設定はそのままでCreate Virtual Machine

4.CentOS5.zipができるので、ダウンロードし解凍
VMware Playerはiso形式のファイルを読み込めないため、
「CentOS5.vmx」をsakuraなどで開いて赤字部分を書き換える
(念のため、オリジナルは名前を変えてコピーしておく)
# Settings for physical CDROM drive
ide1:0.present = "TRUE"
ide1:0.deviceType = "cdrom-image"
ide1:0.startConnected = "TRUE"
ide1:0.fileName = "C:\Program Files\VMWare\CentOS5\CentOS-5.3-i386-bin-1of6.iso"
ide1:0.autodetect = "TRUE"

5.VMware Playerを起動し、「CentOS5.vmw」を開く
ダイアログが表示される
”仮想デバイスparallel0に接続できません。一致するデバイスがホストに存在しません。仮想マシンをパワーオンする度に、この仮想デバイスに接続を試みますか。”
→はい
”operating system~”と出て画面が止まってしまっている場合は、Enterキーを押す
再びEnterキーを押して、CentOSのインストールへ。
テストを始めるか聞いてくるが、時間がかかるので[skip]へ

言語の選択 [日本語]
キーボードの選択 [日本語]

警告がでるが[はい]を選ぶ
”選択したドライブ上のlinuxパーティションを削除してデフォルトのレイアウトを作成します”
再び警告が出るが[はい]で。
あとでカスタマイズするにチェックを入れて、とりあえずはGNOMEのみを入れる

CDを要求されるが、必ず[続行]で。(※[再起動]しない!!)

※以降、たびたびダイアログが出て[CD-ROMの変更]を求められるので、[デバイス]メニューで次のisoファイルを指定して[OK]する(~CentOS-5.3-i386-bin-6of6.isoまで)
私の場合、なぜかCentOS-5.3-i386-bin-5of6.isoを読んだ時点でインストールが完了してしまった・・・
”おめでとうございます!~”

6.「CentOS5.vmw」をsakuraなどで開き、先ほど書き換えた部分を元に戻す
# Settings for physical CDROM drive
ide1:0.present = "TRUE"
ide1:0.deviceType = "cdrom-raw"
ide1:0.startConnected = "TRUE"
ide1:0.fileName = "auto detect"
ide1:0.autodetect = "TRUE"

=その他の設定=
◆ようこそ!の画面での設定
・ファイアウォール
テスト環境にするので、[無効]を選択

・SELinux
デフォルト(Enforcing)のまま

・日付と時刻
[ネットワークタイムプロトコル]タブで
[ネットワークタイムプロトコル(ntp)を有効にする]にチェックを入れる

・ユーザーの作成
・サウンドカード
・追加のCD

その後、IDパスワードを入力する。



■解像度の変更
GUIにて、
システム/管理/ディスプレイ
[ディスプレイ設定]で[ハードウェア]タブを開く
[モニタータイプ]→[設定]
使用可能なモニターをすべて表示にチェックを入れ、
[モニター設定]タブに戻り、[解像度]を1280X1024に変更する
解像度の設定を1280X1024にする(好みの大きさで。)
再起動すれば設定が適用される

■キーマップの変更
・・・もやりたいけど、これは次回!!

=参考にしたサイト=

◆あるSEのつぶやき VMWare Player + CentOS5 環境構築メモ(2008/01/19)



うん、だんだん整ってきて嬉しい^-^
Linuxの勉強頑張ります。

2009/07/01

むずむず

やりたいことがまた増えてきた。。。
以下のページ、気になります。
時間があるときにやりたい&ゆっくり見たいのでメモ書き。
「Design Walker」さんから。


アルファベットを使ったロゴの作成のTips

真似からはじめるウェブデザイン

背景に使えるパターンいろいろ

サイト最適化に使えるツールいろいろ

Tableのデザインまとめ

ニュースレター テンプレートとツールいろいろ

吹き出しいろいろ

気がつけばもう7月。時間経つの早すぎ!!

今日は初めてWindowsの再インストールをやってみました。
保証書、取扱説明書、付属のCD-ROMは、
きちんと管理しておかないとこういう時に苦労する。
今日はそのことを十分思い知らされた・・・。

あ!first bootをハードディスクに戻すの忘れた。。。
明日やろう。

2009/06/14

SQLiteのコマンド

MySQLの勉強をしたら、SQLiteでもある程度コマンドとか同じかなーと思ってなめていましたが…
全然分かりません。

コマンドプロンプトでいろいろ叩いてみるものの、エラー続出。
まだいきなりやるには早かったようです。
初心者がプログラムをやるのは、本当に難しい。いろんなエラーが出過ぎてわかりまへん。

せっかくなので、今日学んだコマンドを。
.databases データベース一覧を表示する
.dump データベースをダンプする
.echo コマンド表示を設定する
.exit コマンドラインプロンプトを終了する
.explain EXPLAINコマンド実行結果の表示方法を設定する
.header ヘッダを表示するか設定する
.help コマンドの使用方法を表示する
.import ファイルからデータをインポートする
.indices テーブル名を表示する
.mode コマンド実行結果の表示方法を設定する
.nullvalue NULLを置き換える文字列を設定する
.output 実行結果の出力先を設定する
.prompt 標準的なプロンプトを変更する
.quit コマンドラインプログラムを終了する
.read コマンドファイルを実行する
.schema テーブルスキーマを表示する
.separator フィールド区切り文字を設定する
.show 設定値を一覧表示する
.tables パターンにマッチするテーブル名を表示する
.timeout テーブルロック長の時間(ミリ秒)を設定する
.width フィールドの表示幅を設定する


で、ついでに使えるSQLコマンドも。
ALTER TABLE テーブル構造を変更する
ATTACH DATABASE データベースを追加する
BEGIN TRANSACTION トランザクションを開始する
COMMIT TRANSACTION トランザクションをコミットする
COPY データをインポートする
CREATE INDEX インデックスを作成する
CREATE TABLE テーブルを作成する
CREATE TRIGGER トリガーを作成する
CREATE VIEW ビューを作成する
DELETE データを削除する
DETACH DATEBASE データベースを切り離す
DROP INDEX インデックスを削除する
DROP TABLE テーブルを削除する
DROP TRIGGER トリガーを削除する
DROP VIEW ビューを削除する
END TRANSACTION トランザクションを終了する
EXPLAIN SQLコマンドを解析する
INSERT データを追加する
ON CONFLICT データ衝突時の動作を設定する
PRAGMA 設定値を取得/設定する
REINDEX インデックスを再作成する
REPLASE データを置き換える
ROLLBACK TRANSACTION トランザクションをロールバックする
SELECT データを取得する
UPDATE データを変更する
VACUUM 不要領域を回収する

ファイルのアップロード

PHPでファイルをアップするには、フォームに以下のコードを追加する
<input type="file" name="image" size="40">

POSTされてきた画像をプログラム内で扱うには、PHPのスーパーグローバル変数「$_FILES」を使用
例)
$upload_file = date("ymdHis")."_".basename($_FILES["image"]["name"]);
$upload_path = "<保存先のディレクトリ名>".$upload_file;
$upload_url = "./images/".$upload_file;
move_uploaded_file($_FILES["image"]["tmp_name"],$upload_path);

2009/06/10

Enterキーはなぜ2つあるか

おなじみEnterキー。
テンキーにも小さなEnterキーがあるし、いったい何の意味があるんだろう?って思う人多いのでは?

実はこのEnterキー、違う役割があるんです。

たとえばPhotoshopで文字ツールを使用して、テキストを編集している途中で
メインのEnterキーを押すと・・・?

そうです。改行されます。


一方、同じ状況で
テンキーのEnterキーを押すと・・・?

なんと、改行ではなくてテキストの確定になるんです!!
つまり文字ツールの編集終了になって、通常の状態に戻るんです。

すごーーーーーい!パチパチ☆

ようやく一段落。

ここ1カ月くらいは半Wワーク的な勢いで仕事をしてたので
ようやく解放されてほっとしてます。

さて、私がこれからやりたいことはたっくさーん。
Ruby,PHP,JS,FlashCS4、Fireworks・・・
気になる気になる!!
時間と気力の勝負です。

新しい会社に入って1か月。
今の会社では、みんなすごく向上心があって日々せっせと勉強してるけど、私はみんなに早く追いつきたいし、むしろ追い越したいとも思う。
現場で制作に携わるのは初めてだけど、私だってそれなりに勉強してきた意地があるので、絶対負けたくないのだ!小さい。。。
でもどうせやるなら本気で行こうと思う。

上に書いたようなことは直接仕事に結びつかないのが悲しいところだけど、CSSももっと極めたいなーと思う。これから仕事で出会った発見はここにメモしていこうと思います♪
ではではまた。

2009/06/02

楽しくWeb!

今日は私のお気に入りツールをご紹介。

まずは大好きなFirefoxのアドオン「Firebug」!!
大好きなんて言ったら変体がられるけど、でも好きなんです。

ほかにもアドオンは「Web Developer」と「HTML Validator」を入れています。
便利なのは「Colorzilla」。ブラウザ上の色の情報を16進数でそのままGET♪素敵です。

あと関係ないけどFirefoxつながりで、「Firebug」の虫のマークが変更できるって知ってます?
デフォルトではゴキブリみたいな虫ですが、私はハチさんに変えてます。
ほかにもイモムシやテントウムシなどがあるんですよ。かわいい^^
http://koress.jp/2008/07/firebug.html


それからそれから
■Launchy
http://webos-goodies.jp/archives/50752356.html
アプリケーションの起動が一瞬です。

IETester
http://coliss.com/articles/browser/ie/928.html
最近ご紹介しましたがIE全バージョンでチェックできます。

■Flexible Renamer
http://hp.vector.co.jp/authors/VA014830/FlexRena/
ファイル名を一括変更

Skype
http://www.skype.com/intl/ja/
言わずと知れた無料チャット&ビデオ電話

Winshot
http://www.forest.impress.co.jp/lib/pic/piccam/capture/winshot.html
ショットをバンバンとります

GmailGoogle Docs
http://mail.google.com/mail/help/intl/ja/about.html
https://docs.google.com/
8GB程度の容量を持つメールの王様です。
チャットもできるし、ほかのアプリケーションと連携していて超賢い!
何はなくともつけっぱなしてます。

英辞郎
http://www.alc.co.jp/
アルクが提供する多機能な英和・和英辞典
例文がたくさんあって、使いやすい。


・・・こんなとこかなあ。
今日のところはこんな感じで。。

それにしてももう6月です。
早いなあ。

2009/05/28

IE5.5再来!!?

久しぶりの投稿です。
最近忙しすぎてなかなか書けなかったけれど、今日は個人的に感動の発見があったのでメモします。

IE8が登場してあとはIE6がいなくなれば・・・と思っていた矢先、仕事でIE5.5対策を強要されてしまい、IE5.5~8までをカバーすべくここ数日奮闘していました。

visibility:hiddenを使ったロールオーバーをやっていたのですが、IE5.5だけどうしてもうまくいかなくて悩まされていたのです


HTMLソース
<ul>
<li><a href="home.html"><img src="nav_home.jpg" alt="home" width="12" height="30" /></a></li>
....
</ul>



CSSソース
li.nav {
width:120px;
height:30px;
background:url(nav_home_on.jpg) no-repeat left top;
}
li.nav a {
display:block;
width:120px;
height:30px;
}
li.nav a:hover {
background-color:transparent;
}
li.nav a:hover img {
visibility:hidden;
}


ほかのブラウザ(IE6~8、FF2.0、3.0)では全部見えているのにいったいなぜ??!
と思っていたら・・・

なんてことはない、

li.nav a:hover {
background-color:transparent;
}

「-color」を消したら見事反応しました!!
パチパチパチー☆

こんなことだったのか。勉強になりました。。。


それにしても世の中便利なツールがあるものです。
IETester
IEの全部のバージョンを一気に表示させることができる
だけどすぐ落ちちゃうのはなぜ??!

あとは一台で幅広い環境でのチェックができるように
Firefox2.0と3.0の同居
FF2.0はサポートが終了したので、探すのに苦労しました。
参考にしたサイト
http://www.koikikukan.com/archives/2006/11/06-002826.php

仮想マシンの導入でネイティブIE6.0を印刷用に

してます。こんなことできるなんて知らなかったー!!

2009/04/27

と、思ったけれど?!


Ruby②を本屋さんでパラパラ見てみたら、
アルゴリズムがあーだとかファイル構造がこーだと
あまり何につながるのかパッと浮かばない感じだったので
モチベーションが上がらず・・・

結局、これ買いました☆

どうでしょう?このワクワクするタイトル。
もう変数や配列の説明は、詳しく要らないので
ちょっとレベル上がりますが、ここから行ってみたいと思います!

2009/04/24

やりました!!

ようやく「ちょっと実用掲示板」が完成しました。
いっぱいエラーが出て、どうなることかと思ったけれど、ちゃんと稼働して、新規入力・検索・コメント挿入・初期化とかができるのを実感して感動しました~^▽^

PHPも面白いなぁ。
でも、
とりあえずはRubyだ!

さて、次の私のお目当てはですね・・・
Ruby②

これだ!
あー楽しみ♪

PHPからMySQLを操作する

ようやくPHPから操作する時がきた!

■PHPスクリプトでMySQLサーバーに接続する
|sample|
+-----------------------------------------------------------------------+
<?php
$s=mysql_connect("localhost","root","1234") or die("失敗です");
print "成功しました";
mysql_close($s);
?>
+-----------------------------------------------------------------------+
mysql_connect(サーバー名,ユーザー名,パスワード)
接続に成功すると、「データベース接続の値」を返す
失敗すると、「false」を返す

or die(メッセージ)
()内を表示して、スクリプトの実行を中止する(=exit())

mysql_close(データベース接続の値)
切断に成功すると、「true」
失敗すると、「false」を返す


■PHPスクリプトでクエリを発行する
|sample|
+-----------------------------------------------------------------------+
<?php
$s=mysql_connect("localhost","root","1234") or die("失敗です");
print "成功しました";
mysql_select_db("db1",$s);
mysql_query("INSERT INTO tb1 VALUES('K777','PHP太郎',20);
mysql_close($s);
?>
+-----------------------------------------------------------------------+
mysql_select_db(データベース名,データベース接続の値)
データベースを指定する
mysql_query(SQL文)
SQL文を発行する
(※SQL文のデリミタはつけない、「"」「'」を入れ子で使うかヒアドキュメントを使用)


■PHPでSQL文の実行結果を受け取る
$re=mysql_query("SELECT * FROM tb1);で
print $re;としても、mysql_queryの返す値が単純な文字列でないため結果が実行できない!

mysql_fetch_array(結果)
SQLコマンドの結果を配列として得る
呼び出すときは、while文を使って
while($kekka=mysql_fetch_array($re)){
print $kekka[0];
・・・
}
とするとよい。

|point|
mysql_queryで実行されるクエリで、エラーが起こった場合、
mysql_query(・・・) or die(mysql_error());
でエラーの内容を表示できる


データベースに存在するテーブルの一覧を取得する
mysql_list_tables(データベース名,データベース接続の値):
|sample|
+-----------------------------------------------------------------------+
<?php
$s=mysql_connect("localhost","root","1234") or die("失敗です");
$re=mysql_list_tables("db1",$s);
while($kekka=mysql_fetch_array($re)){
print $kekka[0];
print "
";
}
mysql_close($s);
?>
+-----------------------------------------------------------------------+

2009/04/12

環境変数

phpinfo関数による表示の中の「Apache Environment」のブロックにあり、「Webサーバのソフトウェア」「クライアントIPアドレス」などの重要な情報が保管されている
REMOTE_ADDRは、使用中のマシンのIPアドレス(localhostの場合127.0.0.1)

getenv関数
環境変数を返す、引数に指定した情報を得られる
getenv(得たい情報の項目)
得たい情報の項目得られる情報
SERVER_SOFTWAREWebサーバーのソフトウェア
SERVER_PORT使用しているポート
PATHサーバーに設定されているPATH
REMOTE_ADDRクライアントのIPアドレス
HTTP_USER_AGENTクライアントのブラウザの情報


gethostbyaddr関数
IPアドレスからホスト名を得る
gethostbyaddr(得たいホストのIPアドレス)

例)クライアントのホスト名を表示する
<?php
print gethostbyaddr(getenv("REMOTE_ADDR"));
?>

PHPの基礎知識

「MySQL+PHPでWeb上でデータベースを操作する」をテーマに進めていくので、
まずはPHPの基礎を学習する。
気になったものだけを箇条書きでメモ。

・PHPでは変数に型を宣言しなくてよい
[変数のデータ型]
integer(整数)
float(浮動小数点)
double(浮動小数点)
string(文字列)
boolean(論理値)
object(オブジェクト)
array(配列)
NULL(空)
・文字列をつなげるには「.」
例)「あいうえお」と出力したい場合
「"あいう"."えお"」

◆「"」と「'」の違い◆
文字列のデータは「"」か「'」で囲む
「" "」で囲んだ変数は展開され、「' '」で囲った変数は展開されない
「" "」で囲った文字の中に「"」の文字を入れたり、「' '」で囲った文字の中に「'」の文字を入れたりすることはできない
[対処法]
・「\"」でエスケープ処理する
・「' '」と「" "」を組み合わせる

MySQLによるWebアプリケーションを作成するとき、PHPスクリプトによってSQL文を発行する
SQL文を文字列としてmysql_query関数の引数にする
mysql_query(文字列としてのSQL文)
例)INSERT INTO tb1 VALUES('A101',・・・)のSQL文を発行する
mysql_query("INSERT INTO tb1 VALUES('A101',・・・)")

■今回扱うPHP関数
関数名内容
dieスクリプトの実行を中止する
execコマンドを実行する
phpinfoPHPの情報を表示する
mysql_connectMySQLサーバーに接続する
mysql_closeMySQLサーバーから切断する
mysql_select_db使うデータベースを指定する
mysql_fetch_arraySQL文を発行する
mysql_error最後に起こったエラーを返す
getenv環境変数を得る
gethostbynameホスト名からIPアドレスを得る
gethostbyaddrIPアドレスからホスト名を得る


(※mysql_で始まるのは、MySQLデータベースを扱う関数)

date関数
日時の書式返す値
g12時間単位の「時」
h12時間単位の「時」2桁表示
G24時間単位の「時」
H24時間単位の「時」2桁表示
j「日」
l「曜日」の英語の文字列
F「月」の英語の文字列
n「月」
m「月」2桁表示
s「秒」2桁表示
Y「年」
y「年」2桁表示


その他
■「繰り返し処理」
for(初期値;繰り返しの条件;変化){
繰り返し実行する処理
}

while(繰り返しを行う条件){
繰り返しの処理
}
最初にカウンタ変数の初期値を設定する
繰り返していくうちに、必ず繰り返しを行う条件がfalseになるようにする


do{
繰り返しの処理
}while(繰り返しを行う条件)

■「条件分岐」
if(条件が正しいときに実行する処理){
else{
条件が正しくないときに実行する処理
}

switch(変数){
case 変数の値1:
処理1
break;
case 変数の値2:
処理2
break;
...
default:
すべての条件が正しくないときに実行する処理
}
変数がcaseの条件と一致した場合、それぞれの処理が実行される
一致する値がなければ、default:以降の処理を実行


■「配列」「連想配列」

IE6で透過pngを表示する

久しぶりにやってきました、この課題。
前回やったときはスイスイできたはずなのに、なぜか今回はうまくいかない・・・。
結局最終的にできたのは、この方法でした。

透過PNGをCSSで背景に指定してIE6や5.5のバージョンでも綺麗に表示してみる(参考)

iepngfix.jsをダウンロードし、ディレクトリに保存

②透過pngを含むHTMLファイルの<head>~</head>内に、以下を記述
<script language="JavaScript" type="text/javascript" src="iepngfix.js"></script>

③CSSの背景画像として読み込んでいる タグorIDorクラス に、以下を設定
* html タグorIDorクラス {
behavior: expression(IEPNGFIX.fix(this));
}

----
ほかに試した方法で、JQueryを使う方法がある。

①以下をダウンロード
pngFix.zip

②この中の2つのjsファイルをコピーし、ディレクトリに保存
・jquery-1.3.2.min.js
・jquery.pngFix.js

③HTMLファイルの<head>~</head>内に、以下を記述
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="jquery.pngFix.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(document).pngFix();
});
</script>

・・・でもなぜかこれを<a>タグに読み込んだCSSの背景画像として表示させると、IE6でリンクがきかなくなってしまった。そのため、今回は見送ります。。。
私のやり方が間違っている可能性もあるので、またトライしてみたい。