<   2009年 08月 ( 21 )   > この月の画像一覧
(Flash Lite)クリップアクションが使えない
Flash Lite 1.1 でボタンを配置して、オーバーフレームにとあるムービークリップを置いて、そのムービークリップに対してムービークリップアクションを書いてみたんですが、全然動いてる風に見えません。

で、調べてみると、「Flash4のActionScriptでは,クリップアクションが使用できないため,...」というのを見つけました。
Flash4 ベースの Flash Lite 1.1 ではクリップアクションが記述できないんですね。
ムービークリップ内のフレームアクションに書いてもいいんですが、そうするとインスタンス毎に違う処理をさせたい時にシンボルをインスタンス数分作らないと行けないので、部品の共通化ができなくなるんですよね。。。
まぁ仕方ないか。。。
[PR]
by jehoshaphat | 2009-08-31 17:02 | Flash/ActionScript | Trackback | Comments(0)
(Firefox)内部データベース最適化
Firefoxって、データの保管に SQLite 使ってるっぽいですね。

で、 IDEA*IDEA ~ 百式管理人のライフハックブログ:再起動なしでFirefoxの内部データベースをさくっと最適化する小技に書いてたんですが、メニューバーのツール→エラーコンソールから、下記のコマンドたたくことで、 Firefox が使ってる SQLite のデータを最適化出来るっぽいです。

Components.classes["@mozilla.org/browser/nav-history-service;1"].getService(Components.interfaces.nsPIPlacesDatabase).DBConnection.executeSimpleSQL("VACUUM");


やってみましたが、若干レスポンスが早くなったような気がします。
長い間 Firefox 使ってる場合は効果大かもしれませんね。

上記は VACUUM コマンドで、不要なデータを削除するものらしいですが、別に REINDEX コマンドを使ってインデックス情報を再作成する方法もあるようです。
それをやってくれるアドオンとかもDo You PHP はてな:sqlite絡みのアドオンをインストールしてみたで紹介されてました。

まだ試してませんが、時間できたらアドオン入れて試してみようかと思います。
[PR]
by jehoshaphat | 2009-08-30 23:25 | 豆知識 | Trackback | Comments(0)
(Flash Lite)インスタンス名使えないから各オブジェクト状態変更はフレームで。。。
今回したいこと:ボタンにマウスオーバーしたら、そのボタンに対応したバナーや説明を表示したい。

インスタンス名が使えたら、on(rollOver){} イベントハンドラで、特定のインスタンスの中のオブジェクトを変更させてやろうと思ったんですが、それが難しいみたいなんで、タイムラインのフレームにそれぞれバナー表示したフレームや説明用吹き出しを表示したフレームを定義して、マウスオーバーしたらそのフレームに飛ばすようにしました。

要は、あるイベント後の状態を全てフレームで表現さすということです。
あんまりきれいなやり方じゃないんで好きではないですが、Flash Lite 1.1 の仕様が厳しいため、仕方ない。。

参考にしたは、 ケータイFlash ラボ!!:ランダムで画像を変える方法です。
ここでは、各フレームにランダムに表示したい画像を置いて、乱数の結果をもとにそのフレームに飛ばすというものみたいです。
[PR]
by jehoshaphat | 2009-08-26 04:33 | Flash/ActionScript | Trackback | Comments(0)
(Flash Lite)1.1ではインスタンス名がつけれない?

ボタンのシンボルを作成し、その中にダイナミックテキストを配置して、1フレーム目でそれぞれのボタンインスタンス内のダイナミックテキストを変更させることで、一つのシンボルで、複数のボタンを作ろうと思ってたんですが、Flash Liste 1.1 はどうやらインスタンス名が指定できないようです。

かといって、シンボル内のダイナミックテキストに割り当てた変数を使って、文字列を代入すると、そのシンボルから生成されたボタン全てが同じ文字列が入ってしまいます。

仕方ないので、ボタン毎にシンボルをつくことにしました。
部品の汎用化という点からは反しますが、仕方ないです。。
なんか、いい方法無いでしょうかね。。。

追記(2009/8/31):
どうやらムービークリップにはインスタンス名を付けることができ、それを使ってクリップ内のオブジェクトにアクセスできるようです。
例えば mc というインスタンス名のムービークリップがあって、その中に txt という変数名を持つダイナミックテキストがあった場合、 _root.mc.txt に文字列を代入することで、ダイナミックテキストの文字列を変更できるようです。

ただ、ボタンにインスタンス名はつけれないので、ボタン内のアップやオーバーフレームにムービークリップ配置して、インスタンス名つけてもボタン内ではムービークリップインスタンス名はサポートされないみたいですね。
ボタン内にインスタンス名付きで配置したムービークリップのフレームアクションに下記のスクリプトを書いてみました。
trace( getProperty("" , _name) );

出力されたのは instance8 というもので、設定したインスタンス名は返ってきませんでした。
後、ターゲットパスも下記スクリプトで取ってみましたが、やはりボタンとその中のムービークリップということでこちらで設定した名前は返ってこないっぽいです。
trace( getProperty("" , _target) );
 
出力の結果:/instance6/instance8

つまり、ボタンの中に入ったムービークリップを含むオブジェクトは外のスクリプトから操作不能ということです。
[PR]
by jehoshaphat | 2009-08-26 04:32 | Flash/ActionScript | Trackback | Comments(0)
(Flash Lite)フォーカスの黄色枠を除ける
なぜかケータイ向けのwebで Flash Lite 1.1 でのテスト開発が始まりました。
数年ぶりの Flash で悪戦苦闘中です。

で、本題ですが、ボタンにロールオーバーすると、黄色の枠がついてしまいます。
こんな感じです。
e0091163_4303848.jpg


で、ケータイFlash ラボ!!:携帯向けFlashの作り方 フォーカス(ボタン枠)を外すには?に枠を除けるためのコードがありました。
_focusrect = false ;

この ActionScript を1フレーム目に入れるといいようです。
[PR]
by jehoshaphat | 2009-08-26 04:30 | Flash/ActionScript | Trackback | Comments(2)
(Windows7)ライセンス認証に失敗する
Windows7 でプロダクトキーを入力しライセンス認証をしようとしたんですが、下記のように コード:0x80072F8F セキュリティエラーが発生しました。
e0091163_2322339.jpg


セキュリティエラー? なんじゃらほい? と思って調べてみると、どうやらPCの日時が狂っていると発生するようです。
確かに2003年になってました。

MS:Windows 製品のライセンス認証で使用されるポートでも、コンピュータの日付や時刻設定が正しくない場合にも、Windows 製品のライセンス認証がエラー 32777 で失敗することがあります。とあります。

PCのシステム時刻を正しく調整すればちゃんと認証できました。

Winodowsってアクティベーション時に日時もキー生成に使ってるんですかね。
[PR]
by jehoshaphat | 2009-08-24 23:02 | 豆知識 | Trackback | Comments(4)
Webサイトの一部を別ドメインに移したためリダイレクトさせてみた

Webサイトの一部の動的なコンテンツをもっとサクサク動くレンタルサーバーに移行することになりました。

で、移行後に古いURLで来た人を移行後のサイトに移すために、リダイレクトをすることに。。

当初は、JavaScript で「新しいページに移行しました。○○後に自動的に飛びます」的な感じにしようかと思ってたんですが、調べてみるとリダイレクトする方法いろいろあったんですね。

Like@Lunatic:リダイレクト手法まとめによると、HTTPの301レスポンスコードを使う方法、HTMLの meta データを使う方法、JavaScriptの location.href を使う方法があるようです。

SEO的にお勧め間のは HTTP 301 レスポンスコード(301リダイレクト)使う方法みたいなので、これで行くことにしました。
要件としては、http://www.oldurl.com/forum/ 配下のアクセスを新しい http://www.newurl.com/forum/ にリダイレクトさすというものです。

最初、.htaccessファイルに

Redirect permanent /forum/ http://www.newurl.com/forum/

という方法でやってたんですが、どうもレンタルサーバのApacheがうまくやってくれないようで。。。

なので、Mod-Rewrite モジュールを使う方法にしました。
.htaccessファイルにこんな感じで設定し、/forum/ の配下に置きます。

RewriteEngine On
RewriteRule ^(.*) http://www.newurl.com/forum/$1 [R=301,L]

これで、http://www.oldurl.com/forum/index.php?ID=11 とかのパラメータ付きクエリも http://www.newurl.com/forum/index.php?ID=11 というようにちゃんとリダイレクトできるようになりました。


参考:
301リダイレクトの設定方法
CSS Lecture:301リダイレクトの記述方法
btmup Blog:PHPのページをWordPressのブログに301リダイレクトする。
mod_rewrite
[PR]
by jehoshaphat | 2009-08-24 22:44 | Webがらみ | Trackback | Comments(0)
Windows環境に OPEN PNE 2.14.1をインストールしてみた
新しい案件でオープンソース SNS で定番らしい OPEN PNE を使うかもしれないので、実行環境作ってみました。

まず、OpenPENダウンロードページからダウンロードします。

今回使ったのは安定版となっていた、 OpenPNE Ver.2.14.1 です。

解凍した中の setup/OpenPNE_Setup.html にセットアップがガイドが入ってるんで、これに従って入れます。

とりあえず要所のみメモって行きます。


「1. ファイルの設置」
ファイル構造はそのままで行きます。

「2. 設定ファイルの変更」
OPENPNE_DIR/config.php.sample を OPENPNE_DIR/config.php にコピーしてconfig.phpを修正します。

変更したのはDBアクセス周りと、DB暗号化キー、メールサーバードメインです。

「3. データベースの設定」
DBは今回 MySQL5.0 を使います。MySQL5 も setup\sql\mysql41\install の中を使ったんで構わないようです。
新規データベースとして openpne というデータベースを新たに作りました。

後は初期化スクリプトを走らせます。


D:\openpne\setup\sql\mysql41\install>mysql -h localhost -u root -pパスワード --default-character-set=utf8 openpne < install-2.14-create_tables.sql
D:\openpne\setup\sql\mysql41\install>mysql -h localhost -u root -pパスワード --default-character-set=utf8 openpne < install-2.14-insert_data.sql



「4. サーバ設定」
次は Apache の設定をしろということなんですが、既にメインのホストアクセスは CakePHP 用の開発にとっているんで、バーチャルホストを使うことにしました。
LAN内用のDNSサーバ構築してたんで助かりました。


ServerName pc2.xxx.local
DocumentRoot "D:/openpne/public_html/"
ServerAdmin aa@aa.ne.jp
ErrorLog logs/error_log
TransferLog logs/access_log



「4-2. メールサーバの設定」はよくわからんのですっ飛ばし、Windows版なんで「4-3. cronの設定」も飛ばします。


「5. セットアップモジュールの実行」
http://サーバ名/?m=setup
で初期ユーザと管理者ユーザを作成します。


「6. 管理画面へのアクセス」
初期値では
http://サーバ名/?m=admin
が管理画面の初期値だけど、セキュリティ考えたら、別ドメインにするかモジュール名を変更したほうがいいですね。
楽なのはモジュール名の変更で、
config.php 内にある ADMIN_MODULE_NAME の値を変更するだけでいいようです。
この値が m= の後に続く文字列になるようですね。


■外部メールサーバを OPEN PNE から扱う
これでOpenPNEが使えるようになるんですが、まずユーザを作らないといけません。
で、管理ページから行くと招待メールを送らないと行けないようで。。。

OpenPNEはどうやら外部のメールサーバを使うオプションは無いようなのでググってみたら、[はまる]OpenPNEをXAMPPで使うという記事を見つけました。
ここに書いてるように webapp\lib\util\mail_send.php で
return mail($address, $subject, $body, $headers, $params);
を下記のように書き換えます。
include_once('Mail.php');
$recipients = $address ;
$headers = "" ;
$headers['From'] = $from ;
$headers['To'] = $address ;
$headers['Subject'] = $subject;
 
$mail_options = array(
'host' => 'smtp.mailsv.co.jp', // SMTPサーバー名
'port' => 587, // ポート番号
'auth' => true, // SMTP認証 true false
'username' => "test@mailsv.co.jp", // ユーザー名
'password' => "testtest", // パスワード
'localhost' => 'localhost', //送信元サーバーのFQDN名 HELOに使う
);
 
$mail_object =& Mail::factory("SMTP",$mail_options);
$result =$mail_object->send($recipients, $headers, $body);
return $result;



これでメール送信実行したら、こんなエラーが。。。

Warning: Mail_smtp::include_once(Net/SMTP.php) [mail-smtp.include-once]: failed to open stream:
No such file or directory in D:\openpne\lib\include\Mail\smtp.php on line 206

Warning: Mail_smtp::include_once() [function.include]: Failed opening 'Net/SMTP.php' for inclusion
(include_path='D:\yopenpne/lib/include;D:\\openpne/webapp/lib;.;C:\Program Files\PHP\pear') in
D:\openpne\lib\include\Mail\smtp.php on line 206

Fatal error: Class 'Net_SMTP' not found in D:\openpne\lib\include\Mail\smtp.php on line 210

Net_SMTPクラスが入ってないってことらしいですね。

Net_SMTPクラス は PHP のクラスライブラリ PEAR の一部なので、まず PEAR をインストールします。


■PEAR のインストール
PEAR のインストールは PHP インストールフォルダの go-pear.bat をたたくと開始できます。
(バッチたたくと「LIBPQ.dllが見つからなかったため、このアプリケーションは開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。」という PostgreSQL 周りのエラーが出ますが、今回 MySQL を使うので無視します。エラー無くすには、php.iniの「extension=php_pgsql.dll」をコメントアウトするといいようです。)


Are you installing a system-wide PEAR or a local copy?
(system|local) [system] : system

system と入力します。



Below is a suggested file layout for your new PEAR installation. To
change individual locations, type the number in front of the
directory. Type 'all' to change all of them or simply press Enter to
accept these locations.

1. Installation base ($prefix) : C:\Program Files\PHP
2. Temporary directory for processing : C:\Program Files\PHP\tmp
3. Temporary directory for downloads : C:\Program Files\PHP\tmp
4. Binaries directory : C:\Program Files\PHP
5. PHP code directory ($php_dir) : C:\Program Files\PHP\pear
6. Documentation directory : C:\Program Files\PHP\docs
7. Data directory : C:\Program Files\PHP\data
8. User-modifiable configuration files directory : C:\Program Files\PHP\cfg
9. Public Web Files directory : C:\Program Files\PHP\www
10. Tests directory : C:\Program Files\PHP\tests
11. Name of configuration file : C:\Windows\pear.ini
12. Path to CLI php.exe : C:\Program Files\PHP\.

1-12, 'all' or Enter to continue:

そのままEnter入力します。
番号やallと押下すると、インストールパスを変更できるようです。



Beginning install...
Configuration written to C:\Windows\pear.ini...
Initialized registry...
Preparing to install...
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Archive_Tar-1.3.2.tar...
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Console_Getopt-1.2.3.tar...

installing phar://go-pear.phar/PEAR/go-pear-tarballs/PEAR-1.7.1.tar...
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Structures_Graph-1.0.2.tar.
..
pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
install ok: channel://pear.php.net/Archive_Tar-1.3.2
install ok: channel://pear.php.net/Console_Getopt-1.2.3
install ok: channel://pear.php.net/Structures_Graph-1.0.2
install ok: channel://pear.php.net/PEAR-1.7.1
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)

PEAR: To install optional features use "pear install pear/PEAR#featurename"

******************************************************************************
WARNING! The include_path defined in the currently used php.ini does not
contain the PEAR PHP directory you just specified:
<C:\Program Files\PHP\pear>
If the specified directory is also not in the include_path used by
your scripts, you will have problems getting any PEAR packages working.

Would you like to alter php.ini <C:\Program Files\PHP\php.ini>? [Y/n] :

Y を押下します。これにより、php.ini に PERA のパスを自動的にに追記してくれる用です。
下記のパスが追加されてました。

;***** Added by go-pear
include_path=".;C:\Program Files\PHP\pear"
;*****




php.ini <C:\Program Files\PHP\php.ini> include_path updated.

Current include path : .;C:\php5\pear
Configured directory : C:\Program Files\PHP\pear
Currently used php.ini (guess) : C:\Program Files\PHP\php.ini
Press Enter to continue:

とりあえずそのままEnterします。


** WARNING! Old version found at C:\Program Files\PHP, please remove it or be su
re to use the new c:\program files\php\pear.bat command

The 'pear' command is now at your service at c:\program files\php\pear.bat


* WINDOWS ENVIRONMENT VARIABLES *
For convenience, a REG file is available under C:\Program Files\PHP\PEAR_ENV.reg
.
This file creates ENV variables for the current user.

Double-click this file to add it to the current user registry.

続行するには何かキーを押してください . . .

これでキー押すとコマンドプロンプトが閉じます。

後は、PHPインストールフォルダの
PEAR_ENV.reg
を実行すると、環境変数にPEAR周りのパスが登録されます。



■Net_SMTPクラスライブラリのインストール
後は、Net_SMTPクラスライブラリをインストールします。
まず、http://pear.php.net/package/Net_SMTP/downloadアーカイブをダウンロード。
そして、コマンドプロンプトで解凍したフォルダのパスへ移動し、

<pear install Net_SMTP-1.3.3


でインストールし Apache を再起動します。
※(追記)上のリンクからダウンロードしなくても、 pear install Net_SMTP-1.3.3 するだけで、pear自体がリポジトリから取ってきてくれるっぽいです。

これで、メールが送信できるようになるはずだったんですが、一つハマってしまいました。
それは、webapp\lib\util\mail_send.php を書き換えた時に、SMTP認証で入れたメールアドレスを、OPEN PNE の管理画面の SNS 設定の管理メールアドレスにしないと行けないということです。
SNS 設定の管理メールアドレスがメールでの from になるんでしょうが、smtp認証時に異なっていると、メールサーバによってはスパムとみなして送信できないっぽいです。
これにかなりの時間かかったので、気をつけましょう。


参考:
OKWave:SMTP.phpについて
PEARのインストール
PHP5.2とPEARのインストール手順
[PR]
by jehoshaphat | 2009-08-21 18:48 | PHP開発 | Trackback | Comments(1)
(MySQL)ログイン時のパスワード指定と外部SQLファイルの実行
余り普段使わない MySQL ではログインでも四苦八苦する時があります。

(MySQL)スクリプトファイルからクエリを実行する方法では、MySQLクライアントにログインしてから外部ファイルを読み込んでますが、今回はコマンドラインから直接外部ファイルを読み込むための方法です。

こんな感じでOKみたいです。

>mysql -h ホスト名 -u ユーザ -pパスワード DB名 < hogehoge.sql


ハマったのは -p の後に空白入れずにパスワードを入れる部分ですね。(空白を入れてしまっていました)
外部ファイルは入力リダイレクト(<)でファイルを指定するだけでいけます。
[PR]
by jehoshaphat | 2009-08-21 10:57 | SQL | Trackback | Comments(0)
Windows7 のインストールメディアのエディション
TechNet サブスクリプションで Windows7 RTM インストールメディアイメージをダウンロードしようと思ったんですが、Vista とは違いエディション別メディアになったんですね。

でも不思議なことに x86 , x64 版ともに全エディションほぼサイズが一緒なんですね。
しかし、SHAのハッシュは異なります。

おそらく一部のファイルだけ異なり、後は全エディション共に一緒ではないかと思って調べてみました。

ググった結果、ITサポーターズの仲間たち:Windows7のインストールメディアを作成するでピンポイントな答え見つかりました。

メディアルート:\sources\ei.cfg ファイル内にエディション情報が入ってるようです。

Ultimate エディションの ei.cfg 確認したら、こんな内容のテキストファイルでした。

[EditionID]
Ultimate
[Channel]
Retail
[VL]
0

このファイル削除してインストールメディア作るとVista時のように全エディション対応になるようです。

いったん TechNet からダウンしたISOイメージをマウントして、中のファイルをHDDにコピーし、ei.cfg を削除してからライティングツールでブートファイルを指定し焼いてもいいんですが、今回は上記ページにあるように Windows7 用 AIK の oscdimg を使う方法をとってみました。

TechNet から Windows Automated Installation Kit for Windows 7 をダウンロードしインストールします。
で、下記コマンドで ei.cfg を削除した Windows7 のフォルダを oscdimg で、ISO化します。

c:\Program Files\Windows AIK\Tools\x86>oscdimg.exe -u1 -m -o -bE:\win7_x86\boot\etfsboot.com -lGRMCULFRER_JA_DVD E:\win7_x86\ E:\ja_windows_7_multi_x86_dvd_X15-65939.iso

あとはできた ISO を焼くだけです。
まったく、Vista ん時みたいにエディション共通ディスクを最初から配布してくれるとこんな手間いらんかったんですがね。。
(Windows Server 2008 R2 はエディション共通ディスク使ってるっぽいですね)
[PR]
by jehoshaphat | 2009-08-19 01:31 | 豆知識 | Trackback | Comments(0)