page_adsence

2010年6月30日水曜日

Adobe CS5 Web Premiumアップグレード版が届きました!

申し込んでから約1ヶ月。
ようやく届きました。
申し込みをしてから20日後に無償アップグレードの承認がされ、
さらにそこから1週間待ってようやく届きました。
Adobe製品を初めて買って、初めてアップデートの申し込みをしてみましたが、
正直面倒くさい上に、届くまでに時間かかるし、メールアドレス取ってるくせにメールでの連絡はない。
毎回AdobeのHP見に行って自分のAdobe IDでログインしてカスタマーサポートポータルで問い合わせ状況を確認しないと現状がわからない。
1ヶ月気長に待てる人はいいけど、自分みたいに買ったものはすぐに欲しいタイプの人は待ち遠しくて結構イライラします。
承認完了してからも商品発送の連絡もこないし・・・。
とはいえ本日届いたので、早速これからインストールしてみます。

2010年6月29日火曜日

マスクをかける

画像の端をぼやっとした感じにするためにはマスクとやらをかければいいらしい。
画像の編集とかしたことないからとりあえず用語の意味から調べてみた自分なりの見解。

「マスク」はマスキングテープなどで使われている「マスク」と同義で、
「マスク」とは保護するといった意味がある。

なるほど。
たしかに、昔プラモデルを作る際にマスキングテープを実際使っていたが、
色の境目になる部分にマスキングテープを貼り、先に塗ってある色を保護した状態で、
新しい色を上塗りすることで、綺麗に色の境目を表現することができるようになる。

Flashなどではこのマスキングテープを色々加工できて、
マスキングテープを加工することで保護しているレイヤーを加工しなくても
同様の効果が得られるようになっているって感じだと思われる。

今回はASを使ってマスクをかけてみた。
といってもできることはFlashの方で作業しておく。

手順1

まずマスクをかけたいレイヤーの上にマスク用のレイヤーを追加する。

手順2

追加したレイヤーにマスク用のシンボルを作成する。
このシンボルはどういったマスクをかけるかによって、形や効果の設定を変える必要がある。
今回は画像全体を角丸っぽくしつつ、画面四隅にぼかしを入れる。
なので矩形プリミティブツールを選択してステージ全体よりちょっと小さめに四角を配置する。
矩形オプションで角丸具合を調整してムービープリップシンボル化し、インスタンス名(今回はmask_mcとする)をつける。

手順3

手順2で追加したmask_mcに対してプロパティパネルの下にあるフィルタプロパティにぼかしを追加する。
ぼかしXとぼかしYは任意で調整する。
また表示のブレンドを標準にし、ビットマップとしてキャッシュにチェックをつける。

手順4

マスクをかけたいレイヤーを選択し、そこにあるムービークリップ(main_mc)に対してもプロパティパネルの表示のブレンドを標準にし、ビットマップとしてキャッシュにチェックをつける。

※注意
グラデーションマスクをかける場合は必ずマスクをかける側とかけられる側の両方にビットマップとしてキャッシュの部分にチェックをつける必要がある。

手順5

ASでMovieClipに対してマスクをかける処理を追加する。

main_mc.mask = mask_mc;

以上でグラデーションマスクをかけることができる。
なお、ビットマップとしてキャッシュにチェックをつける代わりに、
AS側で

main_mc.cacheAsBitmap = true;
mask_mc.cacheAsBitmap = true;

としても実現することが可能。

2010年6月28日月曜日

AS3でのxmlの扱い

読み込んだXMLの各ノードやテキストへのアクセス方法。

読み込んだXMLファイルは以下

<?xml version="1.0" encoding="UTF-8"?>
<imageList>
<image display="show">
<main><![CDATA[./img/main1.jpg]]></main>
<thumnail><![CDATA[./img/thumnail1.jpg]]></thumnail>
</image>
<image display="show">
<main><![CDATA[./img/main2.jpg]]></main>
<thumnail><![CDATA[./img/thumnail2.jpg]]></thumnail>
</image>
<image display="hide">
<main><![CDATA[./img/main3.jpg]]></main>
<thumnail><![CDATA[./img/thumnail3.jpg]]></thumnail>
</image>
<image>
<main><![CDATA[./img/main4.jpg]]></main>
<thumnail><![CDATA[./img/thumnail4.jpg]]></thumnail>
</image>
</imageList>


読み込んだXMLファイルをXMLオブジェクトに格納する

var xmlLoader:URLLoader = new URLLoader();
xmlLoader.dataFormat = URLLoaderDataFormat.TEXT;
xmlLoader.addEventListener(Event.COMPLETE, onXMLLoadHandler);

var urlReq:URLRequest = new URLRequest(url);
xmlLoader.load(urlReq);

private function onXMLLoadHandler(event:Event):void
{
var my_xml:XML;
my_xml = new XML(xmlLoader.data);
}


で、このmy_xmlに対して色々していく。
imageノードにアクセスする
trace(my_xml.image);

出力:
<image display="show">
<main><![CDATA[./img/main1.jpg]]></main>
<thumnail><![CDATA[./img/thumnail1.jpg]]></thumnail>
</image>
<image display="show">
<main><![CDATA[./img/main2.jpg]]></main>
<thumnail><![CDATA[./img/thumnail2.jpg]]></thumnail>
</image>
<image display="hide">
<main><![CDATA[./img/main3.jpg]]></main>
<thumnail><![CDATA[./img/thumnail3.jpg]]></thumnail>
</image>
<image>
<main><![CDATA[./img/main4.jpg]]></main>
<thumnail><![CDATA[./img/thumnail4.jpg]]></thumnail>
</image>


mainの中のテキストにアクセスする
trace(my_xml.image.main.text());

出力:
./img/main1.jpg./img/main2.jpg./img/main3.jpg./img/main4.jpg


imageノードのdisplay属性にアクセスする。
trace(my_xml.image.@display);

出力:
showshowhide


imageの1番目にアクセスする
trace(my_xml.image[0]);

出力:
<image display="show">
<main><![CDATA[./img/main1.jpg]]></main>
<thumnail><![CDATA[./img/thumnail1.jpg]]></thumnail>
</image>


imageのdisplay属性がshowになっているものだけにアクセスする
trace(my_xml.image.(hasOwnProperty("@display") && @display == "show"));

出力:
<image display="show">
<main><![CDATA[./img/main1.jpg]]></main>
<thumnail><![CDATA[./img/thumnail1.jpg]]></thumnail>
</image>
<image display="show">
<main><![CDATA[./img/main2.jpg]]></main>
<thumnail><![CDATA[./img/thumnail2.jpg]]></thumnail>
</image>


とりあえず今回使ったのはこんな感じ。

iphone4予約後に連絡が来ない・・・。

iphone4を18日の営業終了前に滑り込みで予約。
店員の話だと6月中位には渡せそうとの話だったが、6月もあと2日で終わり。
6月中は無理でもいいから、とりあえず入荷予定日知りたい・・・。

画像のサイズ変更

Loaderを使って画像を読み込んだ後に、画像のサイズを指定のサイズにしたい場合は以下のようにする。
ちなみに画像はStageやMovieClipに追加した後には変更できないらしい。
かといってloadの直後に実行するとまだ画像が読み込み終わってない場合もあり、確実ではない。
なのでlode完了後、addChildする前にサイズを指定する必要がある。
やり方は以下の通り。

var loder = new Loader();
loader.addEventListener(Event.COMPLETE, onLoadImg);

var request:URLRequest = new URLRequest(url);
loader.load(request);

private function onLoadImg(event:Event){
loader.height = 100;
loader.width = 100;
addChild(loader);
}

MovieClipのインスタンス名からMovieClipインスタンスを取得する

読み込んだ画像を指定のMovieClipに追加しようと思ったが、どうやってMovieClipを取得するのかわからなかったので調べた。
MovieClipのインスタンス名を記述するだけじゃMovieClipObjectは取得できないので、
getChildByNameを使う。

var mc:MovieClip = MovieClip(getChildByName('movieClipName'));
mc.addChild(loder);

パッケージ名について

FlashDevelop使っていろいろやっていたらpackageのとこに勝手にディレクトリ構造がドットシンタックスで書かれた状態で追加されていた。
なんだろうと思ってパッケージ名について調べてみた。

パッケージとは
パッケージとはクラスファイルが保存されているフォルダまでのパスのこと
パッケージは省略可能

命名規則
反転ドメイン命名規則を使う。
接頭辞(com、netなど)は小文字のみ。接頭辞以外で単語を続ける時は区切りを大文字。

だそうです。
ふむ、とりあえず誰かに公開する予定もないし、省略しておいていいかな。

2010年6月25日金曜日

外部のasファイルでドキュメントクラスを変更する場合

例)ドキュメントクラスをTestからTest2へ変更する場合

ドキュメントクラスを変更する場合は左の画像のようにクラスをTestからTest2に修正して保存する。
あと、ASファイル名をTest.asからTest2.asに変更して保存する。
これでドキュメントクラスの変更は完了。

Adobeってひどい

Adobe CS5の無償アップグレードの申し込みをしてから20日間、ようやく変化が・・・。
といっても商品が発送されたのではなく、ただアップグレードの受付が完了したとのこと。
しかもメールで連絡が来るわけでもなく、カスタマーサポートポータルで確認しにいって
ようやく受付完了とわかった。
でも、商品がいつ発送するかはわからない。

「製品のお届けは、お申込みの受付順に順次発送しております。
お申込み多数による在庫切れや流通事情により、発送が遅れる場合が
ございますので、あらかじめご了承ください。」

目安の日数すら書かれていない。
いったい何日待てば届くのだろうか・・・。
はやく使ってみたいなぁ~。

2010年6月21日月曜日

関数の引数に初期値を与えておく

こうやるみたい。
まぁ普通だ。

function dummy(test:string='aaa', flag:Boolean=true){
code...
}

Flashの文字コード

Flashで扱える文字コードはUnicodeとShift-JISの2種類。
Unicodeと言っても標準的に使われている文字コードはUTF-8なので、
現実的にはUTF-8とShift-JISの2種類といっていいと思われる。

FlashでShift-JISを使用する場合にのみ
System.useCodePage = true;

と記述する必要がある。
デフォルトでUTF-8を使うことが想定されているので、
UTF-8を使用する場合には特にこれを意識する必要はない。

2010年6月20日日曜日

flash.display.Spriteとflash.display.MovieClipの違い

Spriteクラスは表示リストの基本的要素で、
グラフィックを表示でき、子を持つこともできる表示リストノード。
ただしSpriteオブジェクトはタイムラインを持たない。

MovieClipクラスはSprite、DisplayObjectContainer、InteractiveObject、DisplayObject、EventDispatcher の各クラスを継承している。
MovieClipオブジェクトには、Spriteオブジェクトとは違ってタイムラインがある。

まぁ最大の違いはタイムラインがあるかないかってことみたい。
タイムライン制御が入っている分、パフォーマンスが悪くなるみたいなので、
Spriteクラスで実現できなかった場合にMovieClipクラスを使うようにしよう。
よく使うと思うので覚えておくことにする。

2010年6月19日土曜日

AS3のループ処理のコストに関して

XMLファイルに書かれている内容を順番に取り出そうと思ってループ処理について調べてみた。

まず書き方。
Arrayクラスの場合(JavaScriptとかと同じ)
arrayName:Array = new Array();
arrayName:Array = [];


Vectorクラスの場合
arrayName:Vector.<typeName> = new Vector.<typeName>();


正直このVectorクラスの書き方は違和感ありまくりです。
ちょっと疑問に思ったのはVectorクラスの場合、短縮形の書き方ないのかなぁ。
調べた感じでてこなかったし、試しに[].<typeName>;って書いてみたけど見事にエラーになったから無理なのかも。ちょっと残念。

次に速度。
wonderflにベンチマークがありました。
for inとfor each inではfor each inの方が早いみたいですね。
ただしfor each inは配列のキーが取得できないので、もしキーが必要な場合は必然的にfor inを使う必要があります。

また、ArrayクラスとVectorクラスでも速度が変わってきます。
Vectorクラスは1つのデータ型のみ格納可能で、0から順に格納することしかできませんが、その分高速に動きます。
なので、優先順位としてはまずVectorクラスを、無理であればArrayクラス使うように癖をつけた方がよい。

今回のXMLファイルのロードに関してはURL:Stringを配列に突っ込むだけの処理だったので、
一番高速なVectorクラスにfor each inで値を格納してみました。
一応理論上は高速なはず。

2010年6月18日金曜日

iphone4を予約してきた

本日の営業終了後に予約を一時停止するとのことだったんで、予約してきた。
入荷日がどのくらいになるのか聞いてみたが、何の情報もないので推測しかできないとのこと。
それでも6月中には渡せるんじゃないかと思うとのこと。
楽しみだ~。

2010年6月16日水曜日

symfony1.4.5でアドミンジェネレーターを作成

楽に管理画面が作れるって聞いてたので使ってみた。
まず結果。

できませんでした・・・。

今回はフロントエンドなしの状態から管理画面を作ろうとしました。
まずこのページにやりかたが書いてあったので、これをベースに進めていきます。
1.プロジェクト作る。
$ ./symfony generate:project test_project

2.database.ymlをデータベースに接続できる状況にする。
$ vi config/database.yml

all:
doctrine:
class: sfDoctrineDatabase
param:
dsn: mysql:host=localhost;dbname=test
username: your_database_username
password: your_database_password

3.管理画面用にアプリケーションを作る。
$ ./symfony generate:app test_project test_app

4.schema.ymlを作るんですが、今回はMySQL_Workbenchを使ってsqlを作っておいたので、
それをデータベースに入れてからbuild-schemaでschema.ymlを作ります。
$ ./symfony doctrine:build-schema

するとconfig/doctrine/schema.ymlができます。
5.fixtures.ymlを作ります。データはとりあえず1つだけ作ります。
$ vi data/fixtures/fixtures.yml

Tablename:
Tablename_1:
field_name1: field_value
:
:

6.doctrine:build-all-reloadってタスクを実行しているのですが、僕の作った環境にはなかったので、
順番に実行していきました。何度も実行するなら自分でタスク作ったほうがいいと思います。
データベースを削除

データベースを新規作成

モデルの作成

モデルからsqlの作成

フォームクラスを作成

フィルターフォームクラスを作成

fixtures.ymlの読み込み

7.apps/test_app/config/routing.ymlに記述を追加
your_database_table_name:
class: sfDoctrineRouteCollection
options:
model: your_database_table_model_class_name
module: your_app_modlue_name
prefix_path: なぞ
column: primary_key_id ← これを書かなかったらエラーになったので追加した。
with_wildcard_routes: true

8.管理画面を作成するタスクを実行する
$ ./symfony doctrine:generate-admin test_app module_name

とりあえずこんな感じで管理画面自体は見れるようにはなったが、以下のような不具合があった。
・cssが読み込まれていなかった→これは
・日本語が文字化けしてる。
・データベースのフィールド数が多い場合リスト表示のテーブルと詳細表示のテーブルが重なって見えない

いろいろよくわからなくて調べた時の資料。
- filterとかformをgenerateし忘れたときにでたエラーの回答
http://samsami2u.wordpress.com/2009/04/06/class-formfilter-not-found-in-symfony/
- デバックモード時にでるconfigのタブの中にあるUserのリストの中のdefault_cultureやcultureを変更しようとした時に調べた資料。結局未解決
http://www.symfony-project.org/jobeet/1_4/Propel/ja/19
http://www.symfony-project.org/reference/1_4/ja/04-Settings
http://www.symfony-project.org/reference/1_4/ja/05-Factories
http://www.kazu.tv/blog/archives/000929.html
http://www.pistolfly.jp/weblog/2006/11/default-culture.html
http://www.pistolfly.jp/weblog/2006/12/userculture.html

シンボリックリンクの張り方

毎回どっちがリンク元で、どっちが設置先か忘れるのでメモ。
今回はsymfonyの画像やスタイルが読み込まれないのを対応するためにリンクを張った

$ ln -s リンク先 設置先(ファイルorディレクトリ)

実際はこんな感じ

$ ln -s /home/username/sites/sitename/vendor/pear/data/symfony/web/sf /home/username/sites/sitename/web/

MySQLでフィールドの一覧を確認するには

以前教えてもらって忘れてたのでメモ。

今までMySQLでフィールドの一覧を取得する時には

mysql> show fields from tablename;
+-----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| test_id | int(11) | NO | PRI | NULL | |
| title | varchar(255) | YES | | NULL | |
+-----------+--------------+------+-----+---------+-------+

とこのようにしていたのですが、もっと短く書けるみたいです。

mysql> desc tablename;
+-----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| test_id | int(11) | NO | PRI | NULL | |
| title | varchar(255) | YES | | NULL | |
+-----------+--------------+------+-----+---------+-------+

このように同じ結果が返ってきます。
これでテーブル確認する時間が短縮できます。

2010年6月15日火曜日

MySQLのテーブルタイプ

よくMyISAMかInnoDBを使うか迷うのですが、この記事を見て大抵の場合はInnoDBでいいのでは?と思いました。
記事に書かれている通り、MyISAMを使うケースは以下の場合にくらいらしいです。

・完全に検索Onlyの場合(基幹系とかから一定間隔で検索用テーブルを再構築する。それ以外の時間は検索のみのようなケース。)
・ログ系のテーブルを出力のみする場合(insertは3~15倍程度MyISAMが高速)

この記事は各種のベンチマークがとってあり、ほとんどの場合にはMyISAMとInnoDBの速度はほぼ変わっていませんでした。
InsertやUpdate、Deleteなどに関してはトランザクションの処理があるため速度が落ちていますが、
正常に処理をするためにはトランザクションは必須だと思いますので、必然的にテーブルタイプはInnoDBということになります。

yumのリポジトリ追加

今回はremiのリポジトリを追加したいと思います。
リポジトリの追加方法は以下の通り。

1.追加したいリポジトリのGPGキーを追加します。

# rpm –import http://rpms.famillecollet.com/RPM-GPG-KEY-remi

2.リポジトリファイルを追加します。(今回はwgetで取得することとする)

cd /etc/yum.repos.d
# wget http://rpms.famillecollet.com/remi-enterprise.repo

3.ファイルの中身を確認して、enabledが0になっているかを確認します。
# vi /etc/yum.repos.d/remi-enterprise.repo

[remi]
name=Les RPM de remi pour Enterpise Linux $releasever - $basearch
baseurl=http://rpms.famillecollet.com/el$releasever.$basearch/

http://iut-info.univ-reims.fr/remirpms/el$releasever.$basearch/

enabled=0
gpgcheck=1
gpgkey=http://rpms.famillecollet.com/RPM-GPG-KEY-remi
failovermethod=priority

[remi-test]
name=Les RPM de remi en test pour Enterpise Linux $releasever - $basearch
baseurl=http://remi.collet.free.fr/rpms/test-el$releasever.$basearch/
enabled=0
gpgcheck=1
gpgkey=http://rpms.famillecollet.com/RPM-GPG-KEY-remi

4.remiのリポジトリを使用する。
# yum --enablerepo=remi install XXXX

2010年6月12日土曜日

yumからPHPのアップデート

CentOS5の公式レポジトリは対応が遅いため、最新のプロジェクトがインストールできなかったりします。

そういった場合には新しいリポジトリを追加して、そのリポジトリから最新版を取得するように設定します。

設定方法は以下の通り。

今回新たに追加するリポジトリはUtter Ramblingsという名前のリポジトリです。

まずUtter RamblingsのURL(www.jasonlitka.com)からRPM-GPG-KEYをインストールするコマンドを実行します。

# rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

Utter Ramblingsのリポジトリ情報をyumに追加するため

/etc/yum.repos.d/utterramblings.repo を作成し、下記の内容を記載します。

# vi /etc/yum.repos.d/utterramblings.repo

ファイルの中身は以下の通り

[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

これでyum updateを実行するとバージョンの古いアプリケーションが全て更新されるのですが、必要なものだけ更新するにはyum updateのあとにパッケージ名を指定します。



更新可能な全てをアップデートする場合。

yum --enablerepo=utterramblings update

更新するパッケージを指定してアップデートする場合。(バージョン指定はしなくても問題ない)

例)PHP5.2.13

yum --enablerepo=utterramblings update php-5.2.13

pear経由でsymfonyのインストール手順

まずpearがインストールされているかを確認。

$ which pear
/usr/bin/pear

pearがインストールされていることを確認。

でpearコマンドを使ってsymfonyをインストールする。

環境依存を極力なくすためにライブラリはすべてプロジェクトディレクトリ内にインストールすることが好ましい。

なので今回は以下のようなvendorディレクトリを作成し、その下にsymfonyをインストールする。

$ mkdir project_dir/vendor
$ cd vendor

$ pear config-create /path/to/project_dir/vendor .pearrc
Configuration (channel pear.php.net):
=====================================
Auto-discover new Channels auto_discover
Default Channel default_channel pear.php.net
HTTP Proxy Server Address http_proxy
PEAR server [DEPRECATED] master_server
Default Channel Mirror preferred_mirror
Remote Configuration File remote_config
PEAR executables directory bin_dir /path/to/project_dir/vendor/pear
PEAR documentation directory doc_dir /path/to/project_dir/vendor/pear/docs
PHP extension directory ext_dir /path/to/project_dir/vendor/pear/ext
PEAR directory php_dir /path/to/project_dir/vendor/pear/php
PEAR Installer cache directory cache_dir /path/to/project_dir/vendor/pear/cache
PEAR data directory data_dir /path/to/project_dir/vendor/pear/data
PHP CLI/CGI binary php_bin
PEAR test directory test_dir /path/to/project_dir/vendor/pear/tests
Cache TimeToLive cache_ttl
Preferred Package State preferred_state
Unix file mask umask
Debug Log Level verbose
PEAR password (for password
maintainers)
Signature Handling Program sig_bin
Signature Key Directory sig_keydir
Signature Key Id sig_keyid
Package Signature Type sig_type
PEAR username (for username
maintainers)
User Configuration File Filename /path/to/project_dir/vendor/.pearrc
System Configuration File Filename #no#system#config#
Successfully created default configuration file "/path/to/project_dir/vendor/.pearrc"

pearコマンドを使ってsymfonyのpearチャンネルを登録し、バージョンを指定してインストールを行う

$ pear -c .pearrc channel-discover pear.symfony-project.com
Adding Channel "pear.symfony-project.com" succeeded
Discovery of channel "pear.symfony-project.com" succeeded

symfonyの1.4.5をインストール

$ pear -c .pearrc install -a symfony/symfony-1.4.5
symfony/symfony requires PHP extension "dom"
No valid packages found
install failed

今度はdomがないのでrootユーザーになってyumでインストール
# yum install php-dom

もう一度symfonyをインストール
$ pear -c .pearrc install -a symfony/symfony-1.4.5
downloading symfony-1.4.5.tgz ...
Starting to download symfony-1.4.5.tgz (3,171,881 bytes)
.............done: 3,171,881 bytes
install ok: channel://pear.symfony-project.com/symfony-1.4.5

あとはvendorディレクトリから、プロジェクトルートディレクトリに戻り、インストールしたsymfonyパッケージからプロジェクトの初期化を行う

$ vendor/pear/symfony generate:project example

これでインストールは完了。

Subversionを使用している場合にはプロジェクトディレクトリ内をsvn addしてからsvn ciする

PEAR MDB2をインストール

PEARのMDB2をインストールしようとしたら

pear install MDB2

こっちは問題なく成功。

pear install MDB2_Driver_mysql

としたら

pear/MDB2_Driver_mysql requires PHP extension "mysql"
No valid packages found
install failed

というエラーが。
PHPのモジュールの中にmysqlがないよって話。
ということでphp-mysqlをインストール

yum install php-mysql

完了したら、再び

pear install MDB2_Driver_mysql

無事インストールが完了しました。

pear upgradeに関して

久々にpearをインストールして見た。
といってもyumからインストールしたので、たいした作業ではないはずだった。
スーパーユーザーになってから

yum install php-pear

で、インストール完了。
インストール後に気がついた。
バージョン指定してない・・・。
なのでupdateする。

pear upgrade php-pear

とすると

WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update
pear/Archive_Tar requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9
pear/PEAR dependency package "pear/Archive_Tar" installed version 1.3.1 is not the recommended version 1.3.7, but may be compatible, use --force to install
No valid packages found
upgrade failed

なんか依存関係があってうまくupdateしてくれない。
調べたらバージョン指定してupdateすればOKとのことだったので、最新版の1.9.1を指定してupdateしてみた。

pear upgrade PEAR-1.9.1

と打ったら

pear/Archive_Tar requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9
pear/PEAR dependency package "pear/Archive_Tar" installed version 1.3.1 is not the recommended version 1.3.7, but may be compatible, use --force to install
No valid packages found
upgrade failed

同じエラー・・・。
なんだこれ。
とりあえず1.5.4を指定してupgradeしてみた。

pear upgrade PEAR-1.5.4

そしたら無事にupgradeができました。
んで、こっからさらに最新版である1.9.1にupgrade。
先程と同様に、バージョンを指定。

pear upgrade PEAR-1.9.1

無事完了しました。

2010年6月8日火曜日

FlashCS4とFlashDevelopの連携

FlexSDK+FlashDevelopで開発しようと思っていた関係で、FlashDevelopをせっかくインストールしたのに消しちゃうのがもったいないなーと思っていたら、
FlashとFlashDevelopを連携して開発している人がいるみたいです。
まだちょっとしかFlash触ってないけど、FlashよりFlashDevelopのエディタの方がいい感じな気がする。
extendsするとimport文を勝手に生成してくれるし、他にもいろいろと小技があるみたいです。
ちょっとこの2つを使っていろいろ開発してみようと思います。

2010年6月6日日曜日

vimの設定ファイル(.vimrc)を作る

vimの設定を初期状態から変更する場合はホームディレクトリに「.vimrc」というファイルを作る。
中身はとりあず適当なサイトからコピペ。
"----------------------------------------------------
" 基本的な設定
"----------------------------------------------------
" viとの互換性をとらない(vimの独自拡張機能を使う為)
set nocompatible
" 改行コードの自動認識
set fileformats=unix,dos,mac
" ビープ音を鳴らさない
set vb t_vb=
" バックスペースキーで削除できるものを指定
" indent : 行頭の空白
" eol : 改行
" start : 挿入モード開始位置より手前の文字
set backspace=indent,eol,start

"----------------------------------------------------
" バックアップ関係
"----------------------------------------------------
" バックアップをとらない
set nobackup
" ファイルの上書きの前にバックアップを作る
" (ただし、backup がオンでない限り、バックアップは上書きに成功した後削除される)
set writebackup
" バックアップをとる場合
"set backup
" バックアップファイルを作るディレクトリ
"set backupdir=~/backup
" スワップファイルを作るディレクトリ
"set directory=~/swap

"----------------------------------------------------
" 検索関係
"----------------------------------------------------
" コマンド、検索パターンを100個まで履歴に残す
set history=100
" 検索の時に大文字小文字を区別しない
set ignorecase
" 検索の時に大文字が含まれている場合は区別して検索する
set smartcase
" 最後まで検索したら先頭に戻る
set wrapscan
" インクリメンタルサーチを使わない
set noincsearch

"----------------------------------------------------
" 表示関係
"----------------------------------------------------
" タイトルをウインドウ枠に表示する
set title
" 行番号を表示しない
set nonumber
" ルーラーを表示
"set ruler
" タブ文字を CTRL-I で表示し、行末に $ で表示する
set nolist
" 入力中のコマンドをステータスに表示する
set showcmd
" ステータスラインを常に表示
set laststatus=2
" 括弧入力時の対応する括弧を表示
set showmatch
" 対応する括弧の表示時間を2にする
set matchtime=2
" シンタックスハイライトを有効にする
syntax on
" 検索結果文字列のハイライトを有効にする
set hlsearch
" コメント文の色を変更
highlight Comment ctermfg=DarkCyan
" コマンドライン補完を拡張モードにする
set wildmenu

" 入力されているテキストの最大幅
" (行がそれより長くなると、この幅を超えないように空白の後で改行される)を無効にする
set textwidth=0
" ウィンドウの幅より長い行は折り返して、次の行に続けて表示する
set wrap

" 全角スペースの表示
highlight ZenkakuSpace cterm=underline ctermfg=lightblue guibg=darkgray
match ZenkakuSpace / /

" ステータスラインに表示する情報の指定
set statusline=%n\:%y%F\ \|%{(&fenc!=''?&fenc:&enc).'\|'.&ff.'\|'}%m%r%=
" ステータスラインの色
highlight StatusLine term=NONE cterm=NONE ctermfg=black ctermbg=white

"----------------------------------------------------
" インデント
"----------------------------------------------------
" オートインデントを無効にする
"set noautoindent
" タブが対応する空白の数
set tabstop=4
" タブやバックスペースの使用等の編集操作をするときに、タブが対応する空白の数
set softtabstop=4
" インデントの各段階に使われる空白の数
set shiftwidth=4
" タブを挿入するとき、代わりに空白を使わない
set noexpandtab

"----------------------------------------------------
" 国際化関係
"----------------------------------------------------
" 文字コードの設定
" fileencodingsの設定ではencodingの値を一番最後に記述する
"set encoding=utf-8
"set termencoding=utf-8
"set fileencoding=utf-8
"set fileencodings=ucs-bom,euc-jp,cp932,iso-2022-jp
"set fileencodings+=,ucs-2le,ucs-2,utf-8
set encoding=utf-8
set termencoding=utf-8
set fileencoding=japan
set fileencodings=iso-2022-jp,utf-8,euc-jp,ucs-2le,ucs-2,cp932

"----------------------------------------------------
" オートコマンド
"----------------------------------------------------
if has("autocmd")
" ファイルタイプ別インデント、プラグインを有効にする
filetype plugin indent on
" カーソル位置を記憶する
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
endif

"----------------------------------------------------
" その他
"----------------------------------------------------
" バッファを切替えてもundoの効力を失わない
set hidden
" 起動時のメッセージを表示しない
set shortmess+=I

とりあえずこれで使ってみて、後から調整しよう。

2010年6月5日土曜日

apacheでVirtualHost作ったら403 Forbidden

ApacheでVirtualHostを作ってサイトを作ろうと思ったらVirtualHostの設定を書いたらForbiddenになるという現象にあった。

httpd.confはVirtualHostの記述以外はほぼ初期状態で変更した部分は以下の通り。
・DocumentRootは/var/www/html
・ServerNameはコメントアウトしたまま
・Directory関連の記述もそのまま
・IPでアクセスする時に/var/www/htmlが参照される状態

#NameVirtualHost *:80 → NameVirtualHost *:80

以下を追記

<VirtualHost *:80>
ServerAdmin admin@mailaddress.co.jp
DocumentRoot /home/linux_user/sites/sitename/web
ServerName dummy.servername.co.jp
ErrorLog /home/linux_user/sites/sitename/log/error_log
CustomLog /home/linux_user/sites/sitename/log/access_log common
</VirtualHost>
<Directory /path/to/document_root>
AllowOverride All
Order allow,deny
Allow from all
</Directory>


で、再読み込み

# /etc/rc.d/init.d/httpd reload

するとdummy.servername.co.jpにアクセスしてもIPでアクセスしてもForbiddenがでるようになってしまった。
VirtualHostの設定を削除し、IPでアクセスするとまた見れるようになる。
いろいろ調べてみたがSELinuxも切ってあるし、ファイルのパーミッションも問題なさげ。
apacheのOrderの記述も問題ない。
とりあえず原因の切り分けのために、httpd.confのDocumentRootを書き換えてみた。
するとForbidden・・・。
ということはファイルのパーミッションかということで確認してみると、
VirtualHost設定内に書かれているlinux_userのとこ(今回の場合は自分のホームディレクトリ)のパーミッションが700になっていた。
ここを755に修正して再度確認すると問題なかった。
その後にもう一度VirtualHostの設定をすると、問題なく表示された。

2010年6月4日金曜日

Apacheの初期設定

エラーページ等でOS名を表示しないようにする

ServerTokens OS → ServerTokens Prod

エラーページ等に表示される管理者メールアドレスを指定

ServerAdmin root@localhost → ServerAdmin webmaster@centossrv.com

サーバー名を指定(VirtualHostをメインとして使う場合はコメントアウトしたままでOK)

#ServerName www.example.com:80 → ServerName centossrv.com:80

ディレクトリ内のファイルを表示しないようにする

Options Indexes FollowSymLinks → Options FollowSymLinks

エラーページ等でApacheのバージョンを表示しないようにする

ServerSignature On → ServerSignature Off

文字化けしないようにApacheでContents-typeのcharsetの指定をしないようにコメントアウトする

AddDefaultCharset ISO-8859-1 → #AddDefaultCharset ISO-8859-1

Test Pageを表示しないようにコメントアウト

vi /etc/httpd/conf.d/welcome.conf

#<LocationMatch "^/+$">
#    Options -Indexes
#    ErrorDocument 403 /error/noindex.html
#</LocationMatch>

VirtualHostのみを使用する場合は以下のようにする
DocumentRootをコメントアウト
DocumentRoot /var/www/html → #DocumentRoot /var/www/html

IPアドレスでアクセスされないようにする
<VirtualHost *:80>
ServerName any
DocumentRoot /tmp
</VirtualHost>
<Directory /tmp>
order deny,allow
deny from all
</Directory>

2010年6月3日木曜日

Adobe製品を買ってしまった・・・。

ちょっと前からFlashを作ってみようと思ってFlexSDKとFlashDevelopを使ってFlashを作ろうとしていたんですが、
なんかデザイン性のあるようなものを作ろうとしたらこれじゃ大変そうだと思ったのでAdobeのサイトに行ってみた。
そしたらちょうどCS5が5月末に発売すると書かれてた。
せっかくだしFlashCS5とか買って勉強してみようかと思ったんですが、
どうせならWeb系の仕事が全部できるやつがほしいなーと思ってWeb Premiumとか幾らするのか調べたら20万オーバー・・・。
やっぱ高いとあきらめようかと思ったんですが、なんかCS4のWeb StandardからCS5のWeb Premiumに無償でアップデートできるっていうじゃないですか。
早速検索してみるとMac版のCS4 Web Standardはなかったけど、Win版のCS4 Web Standardはありました。
値段は12万程。ポイント還元を計算すると10万強。
高いけどFlashだけ買っても8万4千円だし、Web PremiumはFlashやFlexだけじゃなく、DreamweaverとかFireworks、Photoshop、Illustratorも入ってる。
これがあれば何でもできると思ったので思わず買ってしまいました。
CS4は届いたけど、CS5へのアップグレードは依頼がいっぱいあって発送が遅れているらしい。
発売日以降に申し込んだ僕は1ヶ月待ち。
とりあえずCS4でもFlashとかできるし、いろいろ試してみようと思います。

2010年6月2日水曜日

CentOS5.5の初期設定

1.一般ユーザーを作成しパスワードを設定する


常にrootユーザーで作業しないように一般ユーザーを作成する。
通常者用の一般ユーザーと管理者になれる一般ユーザーの2系統のユーザーを作成しておくとよい。
(理由は後述する)

# useradd testuser
#passwd testuser
Changing password for user testuser.
New UNIX password: ← testuserのパスワードを入力
Retype new UNIX password: ← testuserのパスワードをもう一度入力(確認)
passwd: all authentication tokens updated successfully. ← 成功するとこのようなメッセージが出る。

2.rootユーザーによるsshログインを禁止する。


rootユーザーのアカウント情報を複数の人間が知っていた場合に作業者が不明になるのを防ぐために、
一度一般ユーザーでログインさせてから、必要な時にrootユーザーになって作業するように運用する必要がある。
/etc/ssh/sshd_config

#PermitRootLogin yes → PermitRootLogin no

修正後に設定ファイルを読み込む

# /sbin/service sshd reload

3.一般ユーザーの中でもrootユーザーになれるアカウントを絞る


セキュリティ面や、知識のない人間による作業によってシステムダウンする可能性があるので、
不用意に管理者権限を配布すべきではない。
そのため必要最低限の人間にのみ管理者にになれるような設定をしておく必要がある。

# usermod -G wheel testuser ← 管理者用のユーザをwheelグループに追加する

authの行のコメントを解除する

# vi /etc/pam.d/su
#auth required pam_wheel.so use_uid → auth required pam_wheel.so use_uid


4.yumの自動アップデートを停止させる


デフォルト1時間ごとにアップデートチェックを行うようになっており、アップデート中はメモリの大量消費(約10MB以上)などの負荷がかかる。
その負荷を回避するために停止する必要がある。
また、手動で行ったパッケージインストールと競合するとインストールが失敗するので停止させる。

# /etc/rc.d/init.d/yum-updatesd status ← 現状を確認
yum-updatesd (pid 2284) を実行中...

# /etc/rc.d/init.d/yum-updatesd stop ← 現在のステータスが実行中の場合は停止させる。
yum-updates を停止中: [ OK ]

# /etc/rc.d/init.d/yum-updatesd status ← 念のため停止したか確認

2010年6月1日火曜日

VMWareにCentOS5.5をインストール

CentOs 5.5をテキストモードでインストールしたときのメモ
DVDを入れてブートする
インストールの種類を選ぶ

linux text

と打ち込んでエンターキー

Welcome Centosの画面で

OK

を選択し、エンター
言語を選択

japanease

を選択し、エンター
テキストモードでのインストールは日本語を使えないとでるので

OK

を選択し、エンター
Keyボードの選択

jp106

を選択
インストールするデバイスとパーティションを決める
ガイドを使うか選択してくる

Yes

を選択し、エンター

Remove All partitions on selected drives and create default layout

を選択し、エンター
確認されるので

Yes

を選択し、エンター
レビューするかどうか聞いてくる

No

を選択し、エンター
ネットワークの選択

OK

を選択し、エンター

Activate on boot
Enable IPv4

を選択し、エンター

Dynamic IP configuration

を選択し、エンター

automatically vi DHCP

を選択し、エンター

System clock uses UTC

にチェックが入っているので、外す

Asia/Tokyo
OK

を選択し、エンター
rootのパスワードを決める
パッケージの選択

Desktop - Gnome

にチェックが入っているので外す

Server

にチェックを入れておく
インストールするソフトのカスタマイズをするので

Customer software selection

にチェックをいれる

OK

を選択し、エンター
必要なもにチェックをつけ、入らないもののチェックを外す

OK

を選択し、エンター
インストールを始める確認

OK

を選択し、エンター
完了したら、再起動する
DVDを抜いて、

REBOOT

を選択し、エンター
リブート後にはこっちを参考に。
http://www11.ocn.ne.jp/~mizuniwa/c5/c501.html

VMWareサーバーでCentOSをインストールする際にはまった

VMWareサーバで仮想HDDを作るときにCustomで作らないと仮想HDDがSCSIで作られてしまうので、
CentOSインストール時にエラーになってしまう。

参考サイト
・http://itlicense.iinaa.net/Vmware_Server_linux_setup.html