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);