<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>高橋文樹.com &#187; Web制作</title>
	<atom:link href="http://takahashifumiki.com/topics/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://takahashifumiki.com</link>
	<description>小説家高橋文樹が自ら情報を発信するブログです。小説・Web制作などの話があります。</description>
	<lastBuildDate>Sat, 04 Sep 2010 04:30:43 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://takahashifumiki.com/topics/web/feed/" />
		<item>
		<title>WordPressのテーマちょびっとカスタマイズ</title>
		<link>http://takahashifumiki.com/web/design/937/</link>
		<comments>http://takahashifumiki.com/web/design/937/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 01:31:13 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[デザイン]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=937</guid>
		<description><![CDATA[ずっと放置していたテーマファイルですが、ちょっとカスタマイズしました。トップページに縦書きを実装しようとしたんですが、面倒になって途中でやめました。
変更点はこんな感じです。

TopページにYoutubeとスライドショ [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_944" class="wp-caption alignright" style="width: 146px"><a href="http://takahashifumiki.com/wp-content/uploads/2010/08/43fddb4f8e7d5d428233e58fb9b4713d-e1282340722530.png"><img src="http://takahashifumiki.com/wp-content/uploads/2010/08/43fddb4f8e7d5d428233e58fb9b4713d-e1282340722530-136x100.png" alt="縦書きっぽくしました" title="縦書きっぽくしました" width="136" height="100" class="size-thumbnail wp-image-944" /></a><p class="wp-caption-text">縦書きっぽくしました</p></div>
<p>ずっと放置していたテーマファイルですが、ちょっとカスタマイズしました。トップページに縦書きを実装しようとしたんですが、面倒になって途中でやめました。</p>
<p>変更点はこんな感じです。</p>
<ul>
<li>TopページにYoutubeとスライドショーを入れた。</li>
<li>色数を減らした。</li>
<li>Twitterは公式ウィジェットにした。</li>
<li>ポップアップをMultiBoxに変えた。最近オーバーレイのないポップアップがはやってますね。</li>
<li>右カラムにLast.fmのウィジェットを入れてみた。これって普段聞いている曲が出ちゃうので、かなり緊張感ありますね！　アニソンとか聞けない！</li>
</ul>
<p>とまあ、いろいろあります。</p>
<p>ところで、今回テーマをカスタマイズしていて思ったのは、CSSとかJavascriptのキャッシュ問題が結構メンドイということです。</p>
<p>WordPressはデフォルトだとstyle.cssというファイルを必須とするため、なんとなくこれを読み込んでしまいますが、このファイルをそのままこんな感じで読み込んでしまうと、更新性が悪くなってしまいます。</p>
<pre class="brush: php;">
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;&lt;?php bloginfo(&quot;stylesheet_url&quot;); ?&gt;&quot; /&gt;
</pre>
<p>これまではstyle1.0.cssとかいうようにナンバリングすることで別のCSSを読み込ませて、ユーザにキャッシュさせない方法を取っていましたが、ちょこちょこ直す場合は結構面倒だと思っていた次第であります。</p>
<p>これはJavascriptも一緒です。リリースした直後にエラーが発覚した場合なんかは面倒ですよね。バグを直すのに精一杯で、なんとか修正したと思ったらお客さんから「直ってないんですけど」と言われて、「F5を押してみてください」というはめになったり。</p>
<p>そんなことを考えていたら、WordPressにはそこら辺を解消させる方法がありました。</p>
<p><a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_style">wp_enqueue_style</a>と<a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script">wp_enqueue_script</a>です。</p>
<p>この2つの関数は依存関係の解消とバージョン管理を行いながら、cssとjsの読み込んでくれます。</p>
<p>こんな風に使います。</p>
<pre class="brush: php;">
//テーマフォルダのfunctions.phpに以下のコードを書く
//バージョンの定義
define(&quot;MY_THEME_VERSION&quot;, &quot;1.0&quot;);

//initアクションにフックをかける
function my_thmeme_init(){
	//管理画面じゃないかどうかを確認して、読み込み開始
	if(!is_admin()){
		add_action(&quot;wp_enqueue_scripts&quot;, &quot;my_enqueue_script&quot;);
		add_action(&quot;wp_enqueue_styles&quot;, &quot;my_enqueue_style&quot;);
	}
}
add_action(&quot;init&quot;, &quot;my_theme_init&quot;);

//CSSを読み込む関数
function my_enqueue_style(){
	wp_enqueue_style(
		&quot;my-theme&quot;,
		get_bloginfo(&quot;stylesheet_url&quot;),
		array(),
		MY_THEME_VERSION   //ここでバージョンを指定,
		&quot;screen&quot;
	);
	global $is_winIE; //WordPressにはブラウザ判別用のグローバル関数もあります
	if($is_winIE){
		wp_enqueue_style(){
			&quot;ie6&quot;,
			get_bloginfo(&quot;template_directory&quot;).&quot;/js/ie6.css&quot;
		}
	}
}

//JSを読み込む関数
function my_enqueue_script(){
	wp_enqueue_script(
		&quot;my-script&quot;,
		get_bloginfo(&quot;template_directory&quot;).&quot;/js/my.js&quot;,
		array(&quot;jquery&quot;),  //依存関係にあるものを指定する
		MY_THEME_VERSION, //ここでバージョンを指定
		true              //trueにするとフッターに出力。falseでヘッダーに出力
	);
	if(is_singular()){ //この時点で条件タグが有効なので、ページごとに異なるJSを読み込むことも可能
		wp_enqueue_script(
			&quot;my-single&quot;,
			get_bloginfo(&quot;template_directory&quot;).&quot;/js/single.js&quot;,
			array(&quot;prototype&quot;),
			MY_THEME_VERSION,
			true
		);
	}
}
</pre>
<p>とまあ、こんな感じで読み込んでくれます。</p>
<p>こうして登録されたCSSは、たとえばバージョン付きのURLで読み込まれます</p>
<pre class="brush: xml;">
&lt;link id=&quot;my-theme-css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://example.jp/wp-content/themes/style.css?ver=1.0&quot; media=&quot;screen&quot; /&gt;
</pre>
<p>バージョンが変わればURLも変わるので、ユーザのキャッシュには残らないというわけですね。</p>
<p>style.cssだけだと面倒ですが、大量のCSSとJSを利用しているテーマの場合、外部ファイルはこの方法で読み込んで、修正が終わったらfunctions.phpのMY_THEME_VERSIONの数値を変えるだけで済むので、わりと便利なんじゃないでしょうか。</p>
<p>僕はMooToolsをよく使うので、<a href="http://codex.wordpress.org/Function_Reference/wp_register_script">wp_register_script</a>を使ってmootoolsというエイリアスを登録しています。<a href="http://codex.wordpress.org/Function_Reference/wp_register_style">wp_register_style</a>という関数もありますね。</p>
<p>登録さえしておけば、依存関係にあるファイルを読み込んだときに自動で読み込んでくれるというわけです。</p>
<p>あとは画像のキャッシュが残っていた場合ですが、これはファイル名を変更することで対処するしかないですね。</p>
<p>今回はめんどくさくてやらなかったので、右カラムとかカレンダーとかがおかしくなってるかもしれませんが、そんなときは何も言わずにF5キーを押してください。</p>
<h2>gzipにするドロップレットも作った</h2>
<p>最近はWebサイトのレスポンスについて云々されることが多いため、CSSやJSをgzipにしている人も多いかと思いますが、これが意外と面倒なので、ドラッグ＆ドロップで作れるドロップレットを作りました。</p>
<p><a href="http://takahashifumiki.com/wp-content/uploads/2010/08/MakeGZip.app_.zip">ドロップレットのダウンロード</a></p>
<p>Mac限定ですが、D＆Dしたファイルに.gzをつけたgzip圧縮ファイルを同じ階層に作ります。</p>
<p>こんな感じの.htaccessファイルをサーバに上げておけば、更新前にちょちょいと動かすだけで、いつでも小さいサイズのファイルになります。</p>
<pre class="brush: bash;">
&lt;IfModule mod_rewrite.c&gt;
   RewriteEngine on
   RewriteCond %{HTTP:Accept-Encoding} gzip
   RewriteCond %{REQUEST_FILENAME} \.js$
   RewriteCond %{REQUEST_FILENAME}\.gz -s
   RewriteRule .+ %{REQUEST_URI}.gz

   RewriteCond %{HTTP:Accept-Encoding} gzip
   RewriteCond %{REQUEST_FILENAME} \.css$
   RewriteCond %{REQUEST_FILENAME}¥.gz -s
   RewriteRule .+ %{REQUEST_URI}.gz
&lt;/IfModule&gt;
&lt;FilesMatch &quot;\.js\.gz$&quot;&gt;
   ForceType text/javascript
   AddEncoding x-gzip .gz
&lt;/FilesMatch&gt;
&lt;FilesMatch &quot;\.css\.gz$&quot;&gt;
   ForceType text/css
   AddEncoding x-gzip .gz
&lt;/FilesMatch&gt;
</pre>
<p>この.htaccessが合ってるかどうかわかりませんが、もう朝なので寝ます。</p>


<p>Related posts:<ol><li><a href='http://takahashifumiki.com/web/48/' rel='bookmark' title='Permanent Link: .htaccessの正体見たり、枯れ尾花'>.htaccessの正体見たり、枯れ尾花</a></li>
<li><a href='http://takahashifumiki.com/web/programing/659/' rel='bookmark' title='Permanent Link: 複数のWordPressでユーザ情報を共有する'>複数のWordPressでユーザ情報を共有する</a></li>
<li><a href='http://takahashifumiki.com/web/programing/856/' rel='bookmark' title='Permanent Link: WordPressのテスト環境と本番環境を同期する時に使えるSQL文'>WordPressのテスト環境と本番環境を同期する時に使えるSQL文</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/design/937/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://takahashifumiki.com/web/design/937/" />
	</item>
		<item>
		<title>WordPressでrubyタグを挿入できるプラグイン作った</title>
		<link>http://takahashifumiki.com/web/programing/919/</link>
		<comments>http://takahashifumiki.com/web/programing/919/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 19:22:38 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=919</guid>
		<description><![CDATA[というわけで、WordPressでrubyタグを挿入できるプラグインを作りました。
WP-Yomiganaのダウンロード
たぶん動くんじゃないかと思います。名前はWP-Yomiganaです。
見てくれはこんな感じ。Tin [...]]]></description>
			<content:encoded><![CDATA[<p>というわけで、WordPressでrubyタグを挿入できるプラグインを作りました。</p>
<p><a href="http://takahashifumiki.com/wp-content/uploads/2010/08/wp-yomigana.zip">WP-Yomiganaのダウンロード</a></p>
<p>たぶん動くんじゃないかと思います。名前はWP-Yomiganaです。</p>
<div id="attachment_920" class="wp-caption alignleft" style="width: 135px"><a href="http://takahashifumiki.com/wp-content/uploads/2010/08/wp-yomigana.png"><img src="http://takahashifumiki.com/wp-content/uploads/2010/08/wp-yomigana-125x100.png" alt="WP-Yomiganaの見栄え" title="WP-Yomiganaの見栄え" width="125" height="100" class="size-thumbnail wp-image-920" /></a><p class="wp-caption-text">WP-Yomiganaの見栄え</p></div>
<p>見てくれはこんな感じ。<a href="http://wordpress.org/extend/plugins/tinymce-advanced/">TinyMCE Advanced</a>とかと一緒に使っても多分大丈夫です。</p>
<p>動かなかったら教えて下さい。</p>
<h3 class="clrL">rubyタグ挿入プラグインを作った理由</h3>
<p>現在WordPressベースでワンソース・マルチユースを実現すべく、コンテンツを色んなフォーマットで書き出すものを作っています。これはその一環です。</p>
<p>なぜWordPressベースかというと、僕が使い慣れているために拡張が楽なのと、管理画面がついているからです。</p>
<p>自分でWebアプリ作ったりすると、管理画面を作るだけでものすごい工数がかかるので、あり物を使った方が楽だったりするんですね。</p>
<p>とはいえ、WordPressが採用しているwysiwygエディタ<a href="http://tinymce.moxiecode.com/">TinyMCE</a>っていうのは、やっぱり外国の人が作っているわけで、ルビとか心の底から興味なかったりします。</p>
<p>そこで、プラグインとして作った訳ですね。</p>
<h3>今後の予定</h3>
<p>いまのところ、rubyタグだけですが、今後は圏点とか縦中横とかもサポートしていきたいですね。</p>
<h4>追記＠2010-08-21</h4>
<p>Githubに<a href="http://github.com/fumikito/WP-Yomigana">WP-Yomiganaのリポジトリ</a>を作っておきました。Git便利ですね！</p>


<p>Related posts:<ol><li><a href='http://takahashifumiki.com/others/900/' rel='bookmark' title='Permanent Link: 山梨開拓日誌〜水取編〜'>山梨開拓日誌〜水取編〜</a></li>
<li><a href='http://takahashifumiki.com/web/programing/774/' rel='bookmark' title='Permanent Link: WordPressとFlashでブログ縦書き化計画(10)'>WordPressとFlashでブログ縦書き化計画(10)</a></li>
<li><a href='http://takahashifumiki.com/web/programing/449/' rel='bookmark' title='Permanent Link: WordPressとflashでブログ縦書き化計画(3)'>WordPressとflashでブログ縦書き化計画(3)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/programing/919/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://takahashifumiki.com/web/programing/919/" />
	</item>
		<item>
		<title>風と光と三十路の私と電子書籍とPHPとtextareaと改行</title>
		<link>http://takahashifumiki.com/web/programing/874/</link>
		<comments>http://takahashifumiki.com/web/programing/874/#comments</comments>
		<pubDate>Tue, 18 May 2010 19:23:10 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[正規表現]]></category>
		<category><![CDATA[電子書籍]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=874</guid>
		<description><![CDATA[ハマったのでメモ。
データベースに正規表現と後方参照のリストを保存したいという得体の知れない欲求を抱いたのがそもそもの始まりでした。
たまたまテキスト置換が日常茶飯事に行われるCMSを作っていたからなんですが、要するに、 [...]]]></description>
			<content:encoded><![CDATA[<p>ハマったのでメモ。</p>
<p>データベースに正規表現と後方参照のリストを保存したいという得体の知れない欲求を抱いたのがそもそもの始まりでした。</p>
<p>たまたまテキスト置換が日常茶飯事に行われるCMSを作っていたからなんですが、要するに、こういう配列をですね、いっぱい作ってDBに突っ込んで、いつでも呼び出せるようにしておきたかったんですよ。</p>
<p>正規表現セットがですね、ほら、こう、あれですよ、なんかお店のメニューみたいにね。</p>
<pre class="brush: php;">
$regs = array(
   &quot;reg&quot;     =&gt; array(
      &quot;/^tel([0-9\-])+$/s&quot;
      &quot;/\n/&quot;
   ),
   &quot;backref&quot; =&gt; array(
      &quot;電話番号$1&quot;,
      &quot;&lt;br /&gt;&quot;
   )
);
for($i = 0, $l = count($regs[&quot;reg&quot;]); $i &lt; $l; $i++){
   preg_replace($regs[&quot;reg&quot;][$i], $regs[&quot;reg&quot;][$i], $str);
}
</pre>
<p>ほら、これでどんなにたくさん正規表現を追加したって、なんの問題もないじゃないですか。</p>
<p>電子書籍とか作るとき、こういう方法でワンソース・マルチプラットフォームを実現しようと思ったんですよ。</p>
<p>いつもいつもDOMれるわけじゃないですからね。</p>
<p>で、問題は入力系です。</p>
<p>はじめはJavascriptとか使ってソータブルテーブルを作ったらね、いいと思ったんですよ。入力しやすいじゃないですか。</p>
<p>でもね、正直CMSのいいところって、ユーザを教育できるじゃないですか。今回は不特定多数に使われるCMSじゃなくて、業務用アプリだったんで、まあ、textareaでいいかなって思ったんですよ。</p>
<p>textareaを二つ用意して、改行が入るところでexplodeかまして分割すればほら素敵な配列のできあがり！　ってね。</p>
<p>でも問題はいつだってバックスラッシュじゃないですか。</p>
<p>正規表現って、バックスラッシュいっぱい入りますよね。あと、シングルクォートとか、HTMLにとってもDBにとってもアレゲなものがたくさん入りますよね。</p>
<p>というわけで、入力系・出力系ともにいろいろ気を付けますよ。</p>
<p>プレースホルダー使ったり、stripslashes使ったり。</p>
<p>でもまあ、ここまでは別に良かったんですよ。</p>
<p>当然CMSなんで、入力・出力・更新・削除があるじゃないですか。</p>
<p>困ったのは更新ですよ。</p>
<p>更新するからには、元のデータを一回出力して、ユーザがそれを修正できなきゃダメじゃないですか。</p>
<p>だから僕はこういう風に出力されたらいいなって思ったんですよ。</p>
<pre class="brush: xml;">
&lt;textarea name=&quot;reg&quot;&gt;/^tel([0-9\-])+$/s
/\n/&lt;/textarea&gt;
&lt;textarea name=&quot;backref&quot;&gt;電話番号$1
&lt;br /&gt;&lt;/textarea&gt;
</pre>
<p>こうすれば、ユーザにとって入力したときと同じ結果が見えるので、更新もし易いですよね。</p>
<p>で、問題はtextarea内での改行ですよ。</p>
<p>今回はFirefoxを使ったんですが、textareに入っていたデータをPHPで受け取ると、改行部分が\r\nになってたんですね。</p>
<p>ぶっちゃけ蝶ラッキーって思いました。</p>
<p>正規表現を適用するDBのコンテンツデータは改行コードLFなんで、単純にexplode(&#8220;\r\n&#8221;, $_POST["reg"])しちゃえば配列が取れるじゃないですか。</p>
<p>ってことはですよ、ユーザに対して出力するときだって、implode(&#8220;\r\n&#8221;, $arr)ってやれば済むと思うじゃないですか。</p>
<p>ところがなんないんですよ。</p>
<pre class="brush: xml;">
&lt;textarea name=&quot;reg&quot;&gt;/^tel([0-9\-])+$/s\r\n/\n/&lt;/textarea&gt;
&lt;textarea name=&quot;backref&quot;&gt;電話番号$1\r\n&lt;br /&gt;&lt;/textarea&gt;
</pre>
<p>なんか\r\nがそのまま出力されてるんですよ。あれーってなるじゃないですか。<br />
で、僕はバックスラッシュがうまく処理されてないのかなって思って、こうやるわけですよ。</p>
<pre class="brush: php;">
&lt;?php
$str = stripshashe(implode(&quot;\\r\\n&quot;, $reg));
?&gt;
&lt;textarea name=&quot;reg&quot;&gt;&lt;?php echo $str; ?&gt;&lt;/textarea&gt;
</pre>
<p>ところが全然ダメなんですね！　で、ググるじゃないですか。</p>
<p>そうすると、nl2br使えとか得意気にいってるページしかヒットしないんですよ。</p>
<p>途方にくれましたよ。</p>
<p>で、まさかと思ってこうやってみたわけです。</p>
<pre class="brush: php;">
$str = implode(&quot;
&quot;, $reg));
?&gt;
&lt;textarea name=&quot;reg&quot;&gt;&lt;?php echo $str; ?&gt;&lt;/textarea&gt;
</pre>
<p>これでうまく行ったんですよ&#8230;</p>
<p>理由はまったくわかりません。でも、PHPってほんとかわいい奴だなって思いました。</p>
<div class="tmkm-amazon-view">
	<p><a href="http://www.amazon.co.jp/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%82%AF%E3%83%83%E3%82%AF%E3%83%96%E3%83%83%E3%82%AF-Jan-Goyvaerts/dp/4873114500%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dhametuha-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4873114500" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51WWtGcy1dL._SL160_.jpg" border="0" alt="" /></a></p>
	<p><a href="http://www.amazon.co.jp/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%82%AF%E3%83%83%E3%82%AF%E3%83%96%E3%83%83%E3%82%AF-Jan-Goyvaerts/dp/4873114500%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dhametuha-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4873114500" target="_blank">正規表現クックブック</a></p>
	<p><em>著者／訳者：</em>Jan Goyvaerts, Steven Levithan</p>
	<p><em>出版社：</em>オライリージャパン( 2010-04-15 )</p>
	<p><em>定価：</em>￥ 4,410</p>
	<p>大型本 ( 552 ページ )</p>
	<p>ISBN-10 : 4873114500</p>
	<p>ISBN-13 : 9784873114507</p>
<hr class="tmkm-amazon-clear" /></div>


<p>Related posts:<ol><li><a href='http://takahashifumiki.com/web/programing/659/' rel='bookmark' title='Permanent Link: 複数のWordPressでユーザ情報を共有する'>複数のWordPressでユーザ情報を共有する</a></li>
<li><a href='http://takahashifumiki.com/web/22/' rel='bookmark' title='Permanent Link: WordPressのパスワード認証を別アプリに流用する方法'>WordPressのパスワード認証を別アプリに流用する方法</a></li>
<li><a href='http://takahashifumiki.com/literature/38/' rel='bookmark' title='Permanent Link: 文芸作品としてのコード、コードとしての文芸作品'>文芸作品としてのコード、コードとしての文芸作品</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/programing/874/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://takahashifumiki.com/web/programing/874/" />
	</item>
		<item>
		<title>WordPressのテスト環境と本番環境を同期する時に使えるSQL文</title>
		<link>http://takahashifumiki.com/web/programing/856/</link>
		<comments>http://takahashifumiki.com/web/programing/856/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 19:11:34 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[引っ越し]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=856</guid>
		<description><![CDATA[WordPressに限らず、ブログやCMSを運営している人はローカル環境と本番環境を持っていたりすると思います。
で、大体サーバ上にあるデータをFTPでローカルに落として来て環境を反映させたりするのですが、DB内に記述さ [...]]]></description>
			<content:encoded><![CDATA[<p>WordPressに限らず、ブログやCMSを運営している人はローカル環境と本番環境を持っていたりすると思います。</p>
<p>で、大体サーバ上にあるデータをFTPでローカルに落として来て環境を反映させたりするのですが、DB内に記述されている画像ファイルやらリンクやらが書き変わってしまうのが困りもの。</p>
<p>たとえばhttp://example.jpで運営しているサイトのデータベースをローカルに落として来た時、画像がリンク切れを起こしたりするんですね。</p>
<p>これはとても困るので、いつもSQL文をデータベースに発行して書き換えたりするんですが、普段あんまりSQLを書かないので、すぐ忘れてしまいます。</p>
<div id="attachment_857" class="wp-caption alignright" style="width: 310px"><a href="http://takahashifumiki.com/wp-content/uploads/2010/04/pma.png"><img src="http://takahashifumiki.com/wp-content/uploads/2010/04/pma-300x210.png" alt="phpMyAdminでSQLを発行するには" title="phpMyAdminでSQLを発行するには" width="300" height="210" class="size-medium wp-image-857" /></a><p class="wp-caption-text">phpMyAdminでSQLを発行するには「SQL」ボタンを押す</p></div>
<p>PHPerにはSQLを覚えていない人って結構多いんじゃないですかね。普段の開発ではそんなに書かなくてもなんとかなっちゃいますからね。</p>
<p>というわけで、とりあえず発行しておくといいSQLはこちらです。</p>
<p>http://example.jp でブログを運営している人が、 http://localhost の開発環境にデータを移す場面を想像して書いてみました。</p>
<p>phpMyAdminとかでデータベースを選択したら、「SQL」を押して発行するといいと思います。<br class="clrR" /></p>
<pre class="brush: sql;">
UPDATE `wp_options` SET option_value = REPLACE(option_value, &quot;http://example.jp&quot;,&quot;http://localhost&quot;);
UPDATE `wp_posts` SET post_content = REPLACE(post_content, &quot;http://example.jp&quot;,&quot;http://localhost&quot;), guid = REPLACE(guid, &quot;http://example.jp&quot;,&quot;http://localhost&quot;);
UPDATE `wp_links` SET link_image = REPLACE(link_image, &quot;http://example.jp&quot;,&quot;http://localhost&quot;), link_url = REPLACE(link_url, &quot;http://example.jp&quot;,&quot;http://localhost&quot;);
</pre>
<p>と、紹介しておきながらふと思ったんですが、これって簡単に書けそうですね。</p>
<p>書いてみました。</p>
<pre class="brush: php;">&lt;?php
	require_once dirname(__FILE__).DIRECTORY_SEPARATOR.&quot;wp-load.php&quot;;
	$old_url = get_bloginfo(&quot;url&quot;);
	$new_url = &quot;http://localhost&quot;; //←適宜書き換えてください。末尾のスラッシュの有無に注意！

	$sql = array(
	                    &quot;UPDATE `{$table_prefix}options` SET option_value = REPLACE(option_value, '{$old_url}','{$new_url}')&quot;,
	                    &quot;UPDATE `{$table_prefix}posts` SET post_content = REPLACE(post_content, '{$old_url}','{$new_url}'), guid = REPLACE(guid, '{$old_url}','{$new_url}')&quot;,
	                    &quot;UPDATE `{$table_prefix}links` SET link_image = REPLACE(link_image, '{$old_url}','{$new_url}'), link_url = REPLACE(link_url, '{$old_url}','{$new_url}')&quot;
	                    );
	foreach($sql as $s){
		$wpdb-&gt;query($s);
	}
?&gt;</pre>
<p>上記のファイルをWordPressのルートフォルダに置いて、ブラウザからアクセスするとたぶん置換できると思います。</p>
<p>ただし、完全に思いつきで書いたので、ダメでも苦情はナシでお願いします。基本的にローカルの開発環境を想定していますので、サーバに上げたりして飛んでもないことが起きても知りませんよ。</p>
<p>ところで、最近WordPressでサイトを作っていて思うのは、管理画面をハードにカスタマイズする案件が面倒だなと思います。</p>
<p>ちょっと工夫すれば管理画面ジェネレータを作れそうな気がしてるんですが、需要はあるのかな。</p>
<p>あと、yumとかMacportみたいにプラグイン同士の依存を解決する仕組みも欲しいですね。「このプラグインはプラグインAがインストールされていなければ使用できません。インストールしますか？」みたいな。</p>
<p>破滅派も会社になるので、そういうサービスを提供することを考えておいた方がいいんでしょうか。うーむ。</p>


<p>Related posts:<ol><li><a href='http://takahashifumiki.com/web/programing/659/' rel='bookmark' title='Permanent Link: 複数のWordPressでユーザ情報を共有する'>複数のWordPressでユーザ情報を共有する</a></li>
<li><a href='http://takahashifumiki.com/web/603/' rel='bookmark' title='Permanent Link: WordPressが重くなる理由わかった～結局さくらサーバ移転へ'>WordPressが重くなる理由わかった～結局さくらサーバ移転へ</a></li>
<li><a href='http://takahashifumiki.com/web/design/937/' rel='bookmark' title='Permanent Link: WordPressのテーマちょびっとカスタマイズ'>WordPressのテーマちょびっとカスタマイズ</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/programing/856/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://takahashifumiki.com/web/programing/856/" />
	</item>
		<item>
		<title>MooShellでJavascriptのコードをブログに貼って自慢する方法</title>
		<link>http://takahashifumiki.com/web/programing/802/</link>
		<comments>http://takahashifumiki.com/web/programing/802/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 15:30:42 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=802</guid>
		<description><![CDATA[Flashにはカヤックさんが作ったwonderflというWebサービスがあって、自分の書いたコードを公開したり、他人の書いたコードをフォークすることができるというのは、Flasherならもちろん知ってると思います。
この [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_806" class="wp-caption alignleft" style="width: 310px"><a href="http://takahashifumiki.com/wp-content/uploads/2010/03/mooshell.png"><img class="size-medium wp-image-806" title="mooshell" src="http://takahashifumiki.com/wp-content/uploads/2010/03/mooshell-300x193.png" alt="Javascritpのコード共有サービス MooShell" width="300" height="193" /></a><p class="wp-caption-text">Javascritpのコード共有サービス MooShell</p></div>
<p>Flashにはカヤックさんが作った<a href="http://wonderfl.net/">wonderfl</a>というWebサービスがあって、自分の書いたコードを公開したり、他人の書いたコードをフォークすることができるというのは、Flasherならもちろん知ってると思います。</p>
<p>このWonderflのいいところは、コードを紹介するときに一々パブリッシュしなくてもYoutubeと同じ用な流儀で自分のブログに貼付けたりできることですね。</p>
<p>Javascrptの場合、ブログの投稿欄にscriptタグを書くことさえ許可されていれば、コードの紹介自体ができるんですが、ちょっと面倒です。</p>
<p>で、実はJavascriptにもWonderflみたいなサービスがあって、それが<a href="http://mootools.net/shell/">MooShell</a>です。</p>
<p>元々はJavascriptライブラリである<a href="http://mootools.net">MooTools</a>のコードを共有するためのものですが、Javascriptであれば動くので、なんだっていいと思います。</p>
<p>書いたコードのページをリンクで共有することもできますし、こんな風に自分のブログに貼ることもできます。（右上の再生ボタンでコード実行）<br class="clrL" /></p>
<p><iframe style="width: 100%; height: 300px" src="http://mootools.net/shell/bkH9X/embedded/"></iframe></p>
<p>どうです、インターフェースがかっこいいでしょ！</p>
<h2>MooShellの使い方</h2>
<p>使い方は簡単です。</p>
<ol>
<li>まずは<a href="http://mootools.net/shell/">MooShell</a>にアクセスします。</li>
<li>ChangeSettingタブをクリックして、TitleとDescriptionを設定します。</li>
<li>もし他のライブラリなどを使っているなら、Add Resourceに追加。この場合、リソースはどっかのサーバに上げておく必要があります。WordPressならアップロードしてそのURLを貼れば簡単ですね。</li>
<li>Choose Versionタブをクリックして、MooToolsのバージョンを選びます。プラグインも使いたいなら選ぶことができます。</li>
<li>Ajaxを使うなら、エンドポイントも提供されています。<a href="http://mootools.net/shell/zalun/nqvLP/">サンプル</a>を見た方がわかりやすいでしょう。</li>
<li>ページ左下にあるiframeタグを使ってブログに貼付けます（WordPressのビジュアルエディタはiframeを消去するので注意！）</li>
</ol>
<p>というわけで、簡単にですが紹介してみました。</p>
<p>ブログでJavascriptを紹介するのって、実行コードと説明用コードサンプルを書かないといけないので、面倒くさくてやりませんでしたが、これからは簡単にできそうです。</p>
<p>ちなみに、jQueryを使いたい方は、<a href="http://code.google.com/intl/ja/apis/ajaxlibs/">Google Ajax Libraries API</a>を使うといいんじゃないでしょうか。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/programing/802/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://takahashifumiki.com/web/programing/802/" />
	</item>
		<item>
		<title>Flashの低帯域ユーザ体験を再現するための低速サーバ構築 on Mac OS X</title>
		<link>http://takahashifumiki.com/web/programing/794/</link>
		<comments>http://takahashifumiki.com/web/programing/794/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 16:23:34 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[サーバ]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=794</guid>
		<description><![CDATA[他人に教える用です。あんまり面白くはないです。
低速サーバを構築する目的
会社のお仕事でFLVをプログレッシブダウンロードで読み込んで再生するFlashプレイヤーを作ったのですが、回線が速すぎて、下記の2つを検証できませ [...]]]></description>
			<content:encoded><![CDATA[<p>他人に教える用です。あんまり面白くはないです。</p>
<h2>低速サーバを構築する目的</h2>
<div id="attachment_795" class="wp-caption alignright" style="width: 310px"><a href="http://takahashifumiki.com/wp-content/uploads/2010/02/loading_bar_fast.jpg"><img class="size-medium wp-image-795" title="一瞬でFLVの読み込みが終わる" src="http://takahashifumiki.com/wp-content/uploads/2010/02/loading_bar_fast-300x244.jpg" alt="読み込みが速すぎて検証できないよ.." width="300" height="244" /></a><p class="wp-caption-text">読み込みが速すぎて検証できないよ..</p></div>
<p>会社のお仕事でFLVをプログレッシブダウンロードで読み込んで再生するFlashプレイヤーを作ったのですが、回線が速すぎて、下記の2つを検証できませんでした。</p>
<ul>
<li>ファイル読み込みが完了していない時点まで再生が進んだ場合</li>
<li>せっかちなユーザーがシークバーを読み込みの完了していない部分まで引っ張ってしまった場合</li>
</ul>
<p>本当はYoutubeみたいに途中から再生するやつを作りたかったんですが、面倒くさそうなんで後日。なにやらPHPで動画を切り出して渡すらしい。（参考：<a href="http://www.flashcomguru.com/index.cfm/2005/11/2/Streaming-flv-video-via-PHP-take-two">&#8216;Streaming &#8216; flv via PHP, take two</a>）</p>
<p>なにはともあれ、低帯域の環境を再現する必要があったわけです。</p>
<h2>thttpdに出会うまで</h2>
<p>会社ではFlash CS3をMac OS X 10.5.8で使ってます。</p>
<p>Flashに低速環境を再現するモードがあった気がしたんですが、見つけられず。Device Centralにもそういう機能はなし。</p>
<p>Windowsだと<a href="http://hp.vector.co.jp/authors/VA036210/aboutnegies1.html">NEGIES</a>というソフトがあるようなんですが、Macだったので、ダメ。</p>
<p>さらに付け加えると、いちいちFTPしたくないので、Flashでパブリッシュしたらすぐ確認できるようなローカル環境が望ましい。リモート・サーバに上げるとかは無し。</p>
<p>で、探してみると、こんなエントリーが。</p>
<blockquote><p>thttpdには、設定ファイル「thttpd.throttle」で、ファイルの拡張子毎に使用する帯域を設定できるというとても便利な機能がある。<a href="http://shield.jp/blog/?p=4"><cite>(Flashのテスト用に)低速に振舞うWebサーバを建てる</cite></a></p></blockquote>
<p>これで決まり。</p>
<h2>thttpdをインストールしてから動くまで</h2>
<p>一応、環境はこんな感じです。完全自己責任でお願いします。</p>
<ul>
<li>Mac OS X 10.5.8</li>
<li>MacPortsにていろいろインストール済み</li>
<li>makeしてインストールしたものはほとんどない（気がする）</li>
</ul>
<p>さて、<a href="http://acme.com/software/thttpd/">本家thttpdのサイト</a>を見てみると、./configureしてmakeしてとか書いてある。MacPortsにないかなと探したけどなかった。</p>
<p>しかし、さらにググると、<a href="http://do.homeunix.org/ThttpdOnMacOsX.html?index">Mac OS Xにもパッチをあてれば入る</a>らしいということが判明。</p>
<p>いわれたとおりにパッチを当ててからのインストールを試みる。デフォルトでは/usr/local/sbinにインストールされるとのこと。</p>
<p>ルートユーザになってない人は先頭にsudoを追加してください。</p>
<pre class="brush: bash;">mkdir /usr/local/src #とりあえずダウンロード用のフォルダを作る。
cd /usr/local/src #移動
wget http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz #ダウンロード
gunzip thttpd-2.25b.tar.gz #解凍
tar xpf thttpd-2.25b.tar
cd thttpd-2.25b #フォルダ内に移動
wget http://do.homeunix.org/pub/thttpd-macosx.patch #パッチをダウンロード
patch thttpd.c &gt; thttpd-macosx.patch #パッチを適用</pre>
<p>これでインストールできるはずだったんですが、./configureでエラー！</p>
<p>ググった情報を参考にしてとりあえずmakeまで終える。</p>
<pre class="brush: bash;">./configure --host=darwin
make</pre>
<p>ここまではオッケー。しかし、make installでまた失敗。</p>
<p><a href="http://www.kurano.jp/tech/promenade.cgi?id=984">手動でインストールした猛者</a>もいるようですが、makeの仕方・仕組みがわからないので別の方法を探す。</p>
<blockquote><p>これはbinというユーザーが存在しないため。<a href="http://karetta.jp/article/blog/oneline/252370"><cite>Mac OS X 10.5でbinユーザーを作成する</cite></a></p></blockquote>
<p>な・る・ほ・ど〜。では、binを作成。</p>
<pre class="brush: bash;">sudo dscl . create /Groups/bin
sudo dscl . create /Users/bin</pre>
<p>これでいいのか？</p>
<pre class="brush: bash;">sudo make install</pre>
<p>できたー！</p>
<p>さて、本家マニュアルにある通り、/etc/thttpd.confを編集しようとするが&#8230;.存在しない！　ここで絶望のズンドコにたたき落とされる。</p>
<p>ここで諦めず、Spotlightで検索。ダウンロードしたソースファイルの中に発見！　これをコピーして使います。</p>
<pre class="brush: bash;">cp /usr/local/src/thttpd-2.25b/contrib/redhat-rpm/thttpd.conf /etc/thttpd.conf</pre>
<p>中身を編集。</p>
<pre class="brush: bash;"># This section overrides defaults
dir=/path/to/document_root
nochroot
user=&lt;ユーザー名&gt;
#default=nobody
logfile=/Users/&lt;ユーザー名&gt;/Library/Logs/thttpd.log
pidfile=/Users/&lt;ユーザー名&gt;/Library/run/thttpd.pid
# This section _documents_ defaults in effect
port=8080
# nosymlink# default = !chroot
# novhost
# nocgipat
throttles=/etc/thttpd.throttles
# host=0.0.0.0
charset=utf-8</pre>
<p>で、重要なのは13行目で指定したthrottlesファイル。これが帯域速度を制限するための設定ファイルです。これを作成します。</p>
<pre class="brush: bash;">sudo vi /etc/thttpd.throttles #ファイルを作成
#Configuration File for thttpd
**.flv  5000 #limit FLV files to 1/30 fo T1 #これでflvの拡張子が5000バイト/秒でしか読み込まれない</pre>
<p>これで準備オーケー！　起動します。</p>
<pre class="brush: bash;">cd /usr/local/sbin/thttpd -C /etc/thttpd.conf #面倒くさかったらパスを通してください。</pre>
<p>http://localhost:8080 にアクセス！　サーバー動いた！　でも画面が真っ黒！</p>
<p>Firebug先生に聞いてみたところ、どうやらFlash埋込み用のJavascriptをHTMLとして解釈しているっぽいです。</p>
<p>ApacheでいうところのAdd type text/javascript が必要っぽい。しかし、ここはHTMLにJavascriptを直書きすることにして回避。</p>
<div id="attachment_796" class="wp-caption alignleft" style="width: 310px"><a href="http://takahashifumiki.com/wp-content/uploads/2010/02/loading_bar_late.jpg"><img class="size-medium wp-image-796" title="FLVの読み込みが50kbpsに" src="http://takahashifumiki.com/wp-content/uploads/2010/02/loading_bar_late-300x243.jpg" alt="見よ、この圧倒的な遅さ！" width="300" height="243" /></a><p class="wp-caption-text">見よ、この圧倒的な遅さ！</p></div>
<p>で、ようやっと動きました。いやー、プログレスバーが圧倒的に置き去りにできるようになりました。</p>
<p>ところで、このthttpdははじめっからデーモンで動いているっぽいです。</p>
<p>止め方がわかんなかったので、アクティビティモニタでthttpdを選択して「プロセス終了」終了。これで当初の目的は果たせました。</p>
<h3 class="clrL">thttpdを使ってみての感想</h3>
<p>やっぱりApacheほどは設定が細かくないし、CGIも激遅っぽいのでアレですが、throlltesだけでも使うメリットはありますね。</p>
<p>設定できる機能は他にもいろいろあるみたいなので、あとは<a href="http://acme.com/software/thttpd/thttpd_man.html">マニュアル</a>参照してください。</p>
<p>最近はiPhoneをはじめとする3G端末でもガンガンPCサイト見るので（iPhoneはFlashダメだけど）、帯域のパフォーマンス確認は必要です。</p>
<p>Docomo for PCとか、潰れかけのWillcomとかも3Gですしね。</p>
<p>あと、これからはGoogle先生もサイトのスピードを評価するらしいので、いろんなところで役に立つかも。</p>
<p>というわけで、終わり。</p>


<p>Related posts:<ol><li><a href='http://takahashifumiki.com/web/programing/777/' rel='bookmark' title='Permanent Link: Flex SDK 4のアップデートで色々エラー'>Flex SDK 4のアップデートで色々エラー</a></li>
<li><a href='http://takahashifumiki.com/web/programing/659/' rel='bookmark' title='Permanent Link: 複数のWordPressでユーザ情報を共有する'>複数のWordPressでユーザ情報を共有する</a></li>
<li><a href='http://takahashifumiki.com/web/programing/717/' rel='bookmark' title='Permanent Link: WordPressクラックされちゃった記念、2.8.4にアップデート'>WordPressクラックされちゃった記念、2.8.4にアップデート</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/programing/794/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://takahashifumiki.com/web/programing/794/" />
	</item>
		<item>
		<title>Flex SDK 4のアップデートで色々エラー</title>
		<link>http://takahashifumiki.com/web/programing/777/</link>
		<comments>http://takahashifumiki.com/web/programing/777/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 13:49:46 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[バグ]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=777</guid>
		<description><![CDATA[困りました困りました！　あまりにも困ったので、この苦しみを二度と繰り返さないために書いておきます。
1.Flex SDKをアップデート
現在、Flash Builder β2でアプリケーションを作成しているのですが、Te [...]]]></description>
			<content:encoded><![CDATA[<p>困りました困りました！　あまりにも困ったので、この苦しみを二度と繰り返さないために書いておきます。</p>
<h3>1.Flex SDKをアップデート</h3>
<p>現在、Flash Builder β2でアプリケーションを作成しているのですが、TextLayoutFrameworkで背景色の指定にバグありとの記述を見つけたので、急遽Flex SDKをアップデートすることにしました。</p>
<p>要するに、Flash Builder β2に元々入っていたSDKを4.0.0.10485から最新の安定版リリースである4.0.0.13875へ上げたわけですね。</p>
<p>Adobe Open Sourceの<a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4">ダウンロードページ</a>からSDKをダウンロードして解凍、Flash Builderのフォルダ（今回はWin XPだったので<cite>C:\Program Files\Adobe\Adobe Flash Builder Beta 2\sdks</cite>）にコピー。</p>
<p><cite>プロジェクト＞プロパティ＞Flex コンパイラー</cite>とパネルを開き、「Flex SDKの設定&#8230;」をクリックします。</p>
<p>で、「追加」で新しいSDKを選び、それをデフォルトに設定しました。</p>
<h3>2.mx名前空間で名前解決できてないっぽい</h3>
<p>アップデートといってもマイナーバージョンの変更だからそのまま動くかと思いきや、いきなりエラー！</p>
<div id="attachment_778" class="wp-caption alignleft" style="width: 310px"><a href="http://takahashifumiki.com/wp-content/uploads/2010/02/implementation-error.jpg"><img class="size-medium wp-image-778" title="&lt;mx:Text&gt;でエラー" src="http://takahashifumiki.com/wp-content/uploads/2010/02/implementation-error-300x261.jpg" alt="Textひとつ置けないというのか！" width="300" height="261" /></a><p class="wp-caption-text">Textひとつ置けないというのか！</p></div>
<p>パッケージエクスプローラーに赤い×がぽちぽちついています。しかも、新規プロジェクトを作成直後にいきなりエラーを起こしたりと、すごいヤンチャぶり。</p>
<p>最初のエラーはTextコンポーネントを置いただけで起きました。<cite>&lt;mx:Text&gt;をコンポーネントの実装に解決できませんでした</cite>というエラーメッセージ。<br class="clrL" /></p>
<div id="attachment_779" class="wp-caption alignleft" style="width: 310px"><a href="http://takahashifumiki.com/wp-content/uploads/2010/02/intellisence-error.jpg"><img class="size-medium wp-image-779" title="Flash Builderインテリセンスエラー" src="http://takahashifumiki.com/wp-content/uploads/2010/02/intellisence-error-300x261.jpg" alt="nsってもしかしてnamespaceの略？" width="300" height="261" /></a><p class="wp-caption-text">nsってもしかしてnamespaceの略？</p></div>
<p>名前空間が変更になったのかと思ってコードヒントを出してみると、これまで&lt;mx:Text&gt;だったのが、&lt;ns:Text&gt;になってる。なにこれ。</p>
<p>入力すると一応動きますが、すべてのmxタグを変更するのはなんかイヤ。</p>
<p>色々ググった結果、Flexにはこれまでもこういう悲しい歴史があったとか、なかったとかいうことがわかりました。<br class="clrL" /></p>
<p>とりあえず現状を確認するため、設定ファイルを確認してみることに。</p>
<div id="attachment_780" class="wp-caption alignleft" style="width: 300px"><a href="http://takahashifumiki.com/wp-content/uploads/2010/02/namespace.jpg"><img class="size-medium wp-image-780" title="flex-config.xml" src="http://takahashifumiki.com/wp-content/uploads/2010/02/namespace-290x300.jpg" alt="Flexの設定ファイル。はじめて開いた。" width="290" height="300" /></a><p class="wp-caption-text">Flexの設定ファイル。はじめて開いた。</p></div>
<p>僕の場合、設定ファイルは<cite>C:\Program Files\Adobe\Adobe Flash Builder Beta 2\sdks\4.0.0.13875\frameworks\flex-config.xml</cite>にありました。</p>
<p>これを確認すると、やっぱり名前空間のURIが変わってます。<br class="clrL" /></p>
<p>デフォルトのアプリケーションコンポーネントは下記のようなコードがMain.mxmlに書かれるので、mxのURIは<cite>library://ns.adobe.com/flex/halo</cite>のはずなんですが。</p>
<pre class="brush: xml;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
   &lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
   xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
   xmlns:mx=&quot;library://ns.adobe.com/flex/halo&quot;
   minWidth=&quot;1024&quot; minHeight=&quot;768&quot;&gt;
   &lt;fx:Declarations&gt;
      &lt;!-- Place non-visual elements (e.g., services, value objects) here --&gt;
   &lt;/fx:Declarations&gt;
&lt;/s:Application&gt;</pre>
<p>設定ファイルによると、名前空間mxのURIは<cite>library://ns.adobe.com/flex/mx</cite>となっています。</p>
<p>これを変更してみると、名前空間の参照エラー、コードヒントともに直りました</p>
<p>というわけで、アプリケーションやコンポーネントを作成するときはmxの名前空間をちょろっとだけ変えます。</p>
<pre class="brush: xml;">xmlns:mx=&quot;library://ns.adobe.com/flex/mx&quot; //haloをmxに</pre>
<p>なんでhaloがボツになったのかはわかりません。ガンダムに出てくるからでしょうか。</p>
<h3>3.コンパイル時にランタイムエラー</h3>
<p>さて、これで直ったわいと左うちわでデバッグしてみたところ、いきなりランタイムエラー！　バカー！</p>
<p><cite>VerifyError: Error #1014: クラス spark.skins::SparkSkin が見つかりません</cite>というメッセージが出ました。</p>
<div id="attachment_781" class="wp-caption alignleft" style="width: 253px"><a href="http://takahashifumiki.com/wp-content/uploads/2010/02/adobe-sdk.jpg"><img class="size-medium wp-image-781" title="adobe-sdk" src="http://takahashifumiki.com/wp-content/uploads/2010/02/adobe-sdk-243x300.jpg" alt="Adobe Open SourceのDLページ" width="243" height="300" /></a><p class="wp-caption-text">Adobe Open SourceのDLページ</p></div>
<p>また見つかんねーのかよ、と思ったところ、この対処法は<a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4">ダウンロードページ</a>に書いてありました。</p>
<p>spark.skin.swcがRSLであるため起きるエラーだとか。ビルド番号13079から起きるようになったらしいです。</p>
<p>なんのこっちゃわかりませんが、公式リリースには直るとのこと。応急処置だけやっておきます。<br class="clrL" /></p>
<div id="attachment_782" class="wp-caption alignleft" style="width: 310px"><a href="http://takahashifumiki.com/wp-content/uploads/2010/02/change-property.jpg"><img class="size-medium wp-image-782" title="Flash Builderのプロジェクト設定変更" src="http://takahashifumiki.com/wp-content/uploads/2010/02/change-property-300x273.jpg" alt="用語が統一できてないぞ！" width="300" height="273" /></a><p class="wp-caption-text">用語が統一できてないぞ！</p></div>
<p><cite>プロジェクト＞プロパティ＞Flex ビルドパス</cite>を選択し、「フレームワークのリンク」項目を「SDKのデフォルトを使用する（ランタイム共有ライブラリ）」から「コードにマージされます」に変更する。</p>
<p>同じ選択肢で「ですます」調と「である」調が混在しているのは、β版ならではでしょうか。</p>
<p>ともかく、これでランタイムエラーも消え、これまで通りに動くようになりました。<br class="clrL" /></p>
<h3>4.雑感</h3>
<ul>
<li>AdobeはFlexの名前の付け方にそうとう苦慮している。Flash Professional, Flash Catalyst, Flash Builder, Flex Builder, Flex SDKと、もう何が何だかわからない。Spark、halo、mx、fxも、スキンの名前なのかコンポーネントの名前なのか、「俺がお前でお前が俺で」みたいな状況です。</li>
<li>毎回プロジェクトのデフォルトファイルを書き換えるのは面倒臭い。設定方法を知っている人がいたら教えて下さい。</li>
<li><a href="http://progression.jp/ja/">Progression</a>とFlexのどっちで作ったらいいか、まだまだ悩みはつきない。</li>
</ul>
<h3>追記＠2010/02/07</h3>
<p>この後、インテリセンス（コードヒント）でflashパッケージがすべて出てこなくなる現象に遭遇。</p>
<p>ググったところ、<a href="http://stackoverflow.com/questions/326110/flex-intellisense-forgets-flash">Flex intellisense forgets flash.*</a>という記事に遭遇して、言われたとおりにしたら直りました。</p>
<p><cite>プロジェクト＞プロパティ＞Flex ビルドパス</cite>を選択して、ライブラリパスのタブを選択。</p>
<p>ビルドパスライブラリにplayerglobal.swcを追加。このファイル自体は<cite>C:\Program Files\Adobe\Adobe Flash Builder Beta 2\sdks\4.0.0.13875\frameworks\libs\player</cite>にありました。</p>
<p>うーん、すでにここへのライブラリパスを通ってるっぽいんだけどなあ、と不思議に思っていたところ、理由が判明。</p>
<p>ランタイムエラーを消すために「フレームワークのリンク」を「ランタイム共有ライブラリ（RSL）の使用」から「コードにマージされます」に変更しましたが、これが原因だったっぽいです。</p>
<p><acronym title="ランタイム共有ライブラリ">RSL</acronym>ってのは<a href="http://livedocs.adobe.com/flex/3_jp/html/help.html?content=rsl_01.html">Adobeのヘルプ</a>にありましたが、要するにFlash Playerで使い回す共有のライブラリ（まさにflash.*パッケージ）を埋め込まずに、使い回すことです。</p>
<p>このライブラリはFlash Playerがはじめて使われるときにダウンロードされ、半永続的にキャッシュされるらしいです。それを使い回すので、個々のswfファイルが軽くなるというわけですね。</p>
<p>「コードにマージされます」というのは、RSLを使わずにすべてのライブラリをswfに埋め込むこと。</p>
<p>ってことは、僕がこのページで書いたとおりにすると、swfが重くなることになります。普段は埋め込まないflashパッケージを全部埋め込んでるんだから&#8230;</p>
<p>どうやら、リリースビルドの時はplayerglobal.swcへのライブラリパスを外す必要がありそうです。</p>


<p>Related posts:<ol><li><a href='http://takahashifumiki.com/web/programing/710/' rel='bookmark' title='Permanent Link: TextlayoutFrameworkやFlash.text.engineで埋め込みOpenTypeフォントを使う方法'>TextlayoutFrameworkやFlash.text.engineで埋め込みOpenTypeフォントを使う方法</a></li>
<li><a href='http://takahashifumiki.com/web/programing/449/' rel='bookmark' title='Permanent Link: WordPressとflashでブログ縦書き化計画(3)'>WordPressとflashでブログ縦書き化計画(3)</a></li>
<li><a href='http://takahashifumiki.com/web/programing/468/' rel='bookmark' title='Permanent Link: WordPressとflashでブログ縦書き化計画(4)'>WordPressとflashでブログ縦書き化計画(4)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/programing/777/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://takahashifumiki.com/web/programing/777/" />
	</item>
		<item>
		<title>WordPressとFlashでブログ縦書き化計画(10)</title>
		<link>http://takahashifumiki.com/web/programing/774/</link>
		<comments>http://takahashifumiki.com/web/programing/774/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 20:13:22 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[縦書きブログ]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=774</guid>
		<description><![CDATA[このエントリーをずっと書いていなかったので、何もやっていないと思われたらアレだなと書いてみます。
現在、WordPressとFlashで縦書きを実装するのはすでにできていて、それにルビと改ページを挿入することはできました [...]]]></description>
			<content:encoded><![CDATA[<p>このエントリーをずっと書いていなかったので、何もやっていないと思われたらアレだなと書いてみます。</p>
<p>現在、WordPressとFlashで縦書きを実装するのはすでにできていて、それにルビと改ページを挿入することはできました。</p>
<p>あとはクオリティに目をつぶれば、公開できる段階まで来ました。</p>
<p>当初のリリースに併せて実装したかった機能は少額決済なんですが、選択肢があんまりないですね。</p>
<p>イプシロンなどのクレジットカード決済も安くなったのですが、<a href="http://www.ideaxidea.com/archives/2009/11/more_than_1000_is_ok.html">百式情報によると、1000円以下だととたんに審査が厳しくなる</a>とのこと。</p>
<p>法人化すれば済むのかと思っていましたが、そうでもないみたいですね。</p>
<p>唯一の選択肢としてあるのが、日本での普及率がイマイチな<a href="http://www.paypal.jp/jp/cgi-bin/webscr?cmd=_home">Paypal</a>。</p>
<p>とりあえず、パソコンで電子決済できればよしとして、Paypalが日本の携帯電話に対応するのを気長に待つとします。</p>
<p>なんか本腰入れて参入するみたいですしね。</p>
<p>で、今回の本題なんですが、WordPressとFlashのTextLayoutFrameworkを組み合わせてブログを書いている方を発見しました。</p>
<div id="attachment_775" class="wp-caption alignleft" style="width: 310px"><a href="http://takahashifumiki.com/wp-content/uploads/2010/01/macromarionette.png"><img class="size-medium wp-image-775" title="macromarionette" src="http://takahashifumiki.com/wp-content/uploads/2010/01/macromarionette-300x203.png" alt="組版が美しいデザインです" width="300" height="203" /></a><p class="wp-caption-text">組版が美しいデザインです</p></div>
<p>佐賀一郎さんという方で、<a href="http://macromarionette.com">macromarionette</a>というのが件のブログです。相当ハイクオリティですね。</p>
<p>経歴を拝見するに、デザインの専門家でいらっしゃるみたいなので、むべなるかな、という感じです。</p>
<p>これはぜひ見習いたいですね。</p>
<p>はじめはFlexで作られていたようですが、このブログは<a href="http://progression.jp/ja/">Progression</a>で作っているみたいです。</p>
<p>やっぱデザイン得意な形はFlash Professionalの方がやりやすいんでしょうか。</p>
<p>というわけで、2月中には破滅派に縦書きを実装して、その後、iPhone対応・携帯対応を急ぎたいと思います。</p>


<p>Related posts:<ol><li><a href='http://takahashifumiki.com/web/programing/449/' rel='bookmark' title='Permanent Link: WordPressとflashでブログ縦書き化計画(3)'>WordPressとflashでブログ縦書き化計画(3)</a></li>
<li><a href='http://takahashifumiki.com/web/programing/597/' rel='bookmark' title='Permanent Link: WordPressとFlashでブログ縦書き化計画(9)'>WordPressとFlashでブログ縦書き化計画(9)</a></li>
<li><a href='http://takahashifumiki.com/web/programing/559/' rel='bookmark' title='Permanent Link: WordPressとflashでブログ縦書き化計画(6)'>WordPressとflashでブログ縦書き化計画(6)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/programing/774/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://takahashifumiki.com/web/programing/774/" />
	</item>
		<item>
		<title>WordPressクラックされちゃった記念、2.8.4にアップデート</title>
		<link>http://takahashifumiki.com/web/programing/717/</link>
		<comments>http://takahashifumiki.com/web/programing/717/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 14:21:13 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[クラック]]></category>
		<category><![CDATA[恥ずかしい話]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=717</guid>
		<description><![CDATA[WordPress公式ブログでも盛んに喧伝されていましたが、WordPress2.8.4以前に致命的な脆弱性が見つかったとのことです。

管理者アカウントを勝手に作られる
パーマリンク構造を勝手に変更されてスパムリンクを [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress公式ブログでも盛んに喧伝されていましたが、<a href="http://ja.wordpress.org/2009/08/12/2-8-4-security-release/">WordPress2.8.4以前に致命的な脆弱性が見つかった</a>とのことです。</p>
<ul>
<li>管理者アカウントを勝手に作られる</li>
<li>パーマリンク構造を勝手に変更されてスパムリンクを仕込まれる</li>
<li>最悪の場合、サイト全体を削除される</li>
</ul>
<p>詳しくは公式ブログをご覧頂ければわかるので割愛しますが、実際に乗っ取られた経験談でも書きたいと思います。</p>
<h3>1.WordPress2.6.5は9月、静かに死んでいった</h3>
<div id="attachment_718" class="wp-caption alignleft" style="width: 310px"><a href="http://takahashifumiki.com/wp-content/uploads/2009/09/CE089_L.jpg"><img class="size-medium wp-image-718" title="これは栗ね。クラッカーの画像なかった" src="http://takahashifumiki.com/wp-content/uploads/2009/09/CE089_L-300x225.jpg" alt="これは栗ね。クラッカーの画像なかった" width="300" height="225" /></a><p class="wp-caption-text">これは栗ね。クラッカーの画像なかった</p></div>
<p>乗っ取られたのは僕が複数運営しているWordPressの一つです。</p>
<p>他のサイトはすぐに2.8.4にしていたのですが、このサイトだけ激しくカスタマイズした上、新規ユーザ登録できるようにして他の使い方をしていたので、ちょっと面倒で後回しにしていたんですね。</p>
<p>兆候が出たのは9月の初旬。</p>
<p>それまでは滅多にユーザ登録などこなかったのですが、9月初旬だけで5人。これはおかしいなと管理画面を覗いてみました。</p>
<p>パーマリンクがデフォルトの「?p=123」に戻っています。「ぬかったわ！」と一括、早速ユーザ画面を見てみると、gmailアカウントで不審なユーザが3名。</p>
<p>「WordPress + メールアドレス」で検索をかけると、海外のつぶやきがヒット。</p>
<blockquote><p>Andrianq running with <strong>pulvillarrac@gmail.com</strong> tried unsuccessfuls hack on 2 WordPress sites&#8230; must turn off user registration&#8230;<br />
<cite><a href="http://twitter.com/bradyjfrey/statuses/3791545197">@bradyjfrey</a></cite></p></blockquote>
<p>他のアカウントも検索してみたら、またまたブログが2件ヒット。</p>
<blockquote><p>WordPress users, if you have seen the Gmail address: <strong>Pulvillarrac@gmail.com</strong> in your subscribers, you may want to disable or ban the account.  This is the person who registered on my roomies blog through the back door.<br />
<cite><a href="http://mice.org/blog/an-open-note-to-wordpress-spammers-hackers/"> Technical Tidbits</a></cite></p></blockquote>
<blockquote><p>And this is exactly what happened to AC, 7 new users have registered to AC’s WP in the last few days, something that was strange to me, here are their emails:<br />
janson206@Safe-mail.net<br />
<strong> pulvillarrac@gmail.com</strong><br />
<strong> bugbeemershonyhe@gmail.com</strong><br />
obierebelominepyb@gmail.com<br />
<strong> naomyrotenford@gmail.com</strong><br />
<a href="http://arabcrunch.com/2009/09/arabcrunch-and-wordpress-under-attack.html"><cite>ArabCrunch and WordPress Under Attack</cite></a></p></blockquote>
<p>結構大きめのニュースサイトでもやられてしまったようですね。ポイントは「新規ユーザの登録を許可しているかどうか」のようです。</p>
<p>これら3ユーザは管理画面から削除。</p>
<p>それだけでは安心できなくて、データベースを覗いてみると&#8230;メールアカウントを登録していない管理者ユーザが二名追加されていました&#8230;.orz</p>
<p>これは管理画面に現れないため、DBから直接削除しました。</p>
<p>そして、サーバ上の全ファイルを削除して、新規にWordPress2.8.4をインストール。ただし、DBの隅から隅まで見た訳でもないので、しばらく当該サイトを閉鎖して、一から作り直したいと思います。</p>
<h3>2.あったんだかなかったんだかわかんない実害</h3>
<p>今回のクラッキングでは、下記のような症状が出るとのことでした。</p>
<ul>
<blockquote>
<li>パーマリンクやRSSに見慣れない文字列がある。<br />
例：http://example.com/category/%&amp;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&amp;%/<br />
特徴：eval, base64_decode が含まれている</li>
<li>管理画面のユーザーに見慣れないユーザーの登録がある</li>
<p><a href="http://coliss.com/articles/blog/wordpress/wordpress-info-20090905.html"><cite>コリス</cite></a></p></blockquote>
</ul>
<p>取り急ぎパーマリンクを確認してみると、デフォルトに戻っていました。</p>
<p>攻撃方法としては、パーマリンクを変更してスパムリンクに変えちゃうというものだと思うのですが、なんかミスったんですかね？</p>
<p>スパムリンクは見つかりませんでした。</p>
<p>たしか、パーマリンクを変更したとき、.htaccessへの書き換え権限がないとダメだったような気がするんですが、たまたま利用しているサーバのPHPがモジュール版からCGI版へ移行した時期だったので、apacheからは.htaccessのアクセス権限がなかったのですが、それが不幸中の幸いだったんでしょうか。</p>
<p>取り急ぎ、施した対策を書いておきます。</p>
<ol>
<li>不正なユーザをWordpressの管理画面から消去</li>
<li>管理画面で確認できない不正な管理者をDBから直接消去</li>
<li>デフォルトに変更されていたパーマリンクを元に戻す</li>
<li>管理者パスワード、FTPパスワード、DBパスワードを変更</li>
<li>ファイルの変更日時がユーザ登録日より新しいファイルを検索→なかった</li>
<li>サーバのファイルを全削除</li>
<li>保存してあったローカルコピーをアップロード</li>
<li>WordPressを2.8.4にアップデート</li>
</ol>
<p>クラックの手法などの詳細は<a href="http://sakuratan.biz/archives/1208">ゆっくり…して…イってネ！「現在進行中の WordPress に対する攻撃の詳細と再現」</a>に詳しかったです。</p>
<p>まあ、どっちみち一度クラックされちゃったので、サイトは閉鎖ですわ、閉鎖。</p>
<p>というわけで、とんだ9月初旬のアップデートでした。古いバージョンのまま放置してはいけませんね&#8230;</p>


<p>Related posts:<ol><li><a href='http://takahashifumiki.com/web/programing/659/' rel='bookmark' title='Permanent Link: 複数のWordPressでユーザ情報を共有する'>複数のWordPressでユーザ情報を共有する</a></li>
<li><a href='http://takahashifumiki.com/web/82/' rel='bookmark' title='Permanent Link: WordCamp Tokyo 2008に行ってきました。写真ないけど。'>WordCamp Tokyo 2008に行ってきました。写真ないけど。</a></li>
<li><a href='http://takahashifumiki.com/web/programing/919/' rel='bookmark' title='Permanent Link: WordPressでrubyタグを挿入できるプラグイン作った'>WordPressでrubyタグを挿入できるプラグイン作った</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/programing/717/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://takahashifumiki.com/web/programing/717/" />
	</item>
		<item>
		<title>TextlayoutFrameworkやFlash.text.engineで埋め込みOpenTypeフォントを使う方法</title>
		<link>http://takahashifumiki.com/web/programing/710/</link>
		<comments>http://takahashifumiki.com/web/programing/710/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 10:02:38 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[フォント]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=710</guid>
		<description><![CDATA[最近気づいたにもかかわらず、日本語情報でこれだというのがないので、書いておきます。
わりと詳しいのはまつにおまかせさんのエントリーですが、その補足という感じです。
CFFフォントとは
Web上で日本語縦書きレイアウトを作 [...]]]></description>
			<content:encoded><![CDATA[<p>最近気づいたにもかかわらず、日本語情報でこれだというのがないので、書いておきます。</p>
<p>わりと詳しいのは<a href="http://isaomatsunami.blogspot.com/2009/05/flex-sdk-on-mac-os.html">まつにおまかせさんのエントリー</a>ですが、その補足という感じです。</p>
<h3><abbr title="Compact Font Format">CFF</abbr>フォントとは</h3>
<p>Web上で日本語縦書きレイアウトを作る方法として有力なのがTextlayoutframeworkとFlash.text.engineなのですが、この2つは従来通りのやり方で埋め込みフォントを使うことができません。</p>
<p>というのは、<abbr title="TextLayoutFramework">TLF</abbr>や<abbr title="flash.text.engine">FTE</abbr>はよりよい文字表現を実現するためなのかなんなのか、<abbr title="Compact Font Format">CFF</abbr>というフォーマットを採用しているようです。これにより、アンチエイリアス処理なんかがきれいになるようなんですが、詳細はよくわかりません。</p>
<p>実際に<a href="http://livedocs.adobe.com/flex/gumbo/langref/">Flex4 Gumboのリファレンス</a>を見てみると、<abbr title="flash.text.engine">FTE</abbr>の<a href="http://livedocs.adobe.com/flex/gumbo/langref/flash/text/engine/FontLookup.html">FontLookupクラス</a>はDEVICEとEMBEDDED_CFF定数しか持っていません。EMBEDDEDというのはないんですね。</p>
<p><abbr title="flash.text.engine">FTE</abbr>を拡張して作られている<abbr title="TextLayoutFramework">TLF</abbr>もしかりです。</p>
<p>普通のTextfieldはembedFontをtrueにすれば埋め込みフォントを使えました。</p>
<p>単にプロパティが異なるだけなら問題ないのですが、困るのは<abbr title="Compact Font Format">CFF</abbr>でのFontクラス作成がちょっと難しいということです。普通にFlash IDEとかで作っても認識してくれません。</p>
<p>よくやる方法としては、フォントを埋め込んだswfを作成して、それを外部から読み込み、内部で定義されているFontクラスを引っこ抜くというものだと思うのですが、これが<abbr title="Compact Font Format">CFF</abbr>で埋め込まれていないとダメなんですね。</p>
<h3><abbr title="Compact Font Format">CFF</abbr>でのフォント埋め込み方法</h3>
<p>簡単に言うと、以下の流れです。FlexならMXML上で直接埋め込むこともできるのですが、Flash IDE(Flash Professionalのこと)で開発している人はそうもいかないと思うので、下記のやり方を覚えるのがいいと思います。</p>
<h4>1.Flash Builder βかFlex SDK4 Gumboをダウンロード</h4>
<p><a href="http://labs.adobe.com/technologies/flashbuilder4/">Flash Builder</a>は必須ではありません。要するに、<a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4">Flex SDK 4</a>以上を使いたいのです。</p>
<p>Flex SDK 3.*系だと、フォントを<abbr title="Compact Font Format">CFF</abbr>でトランスコードするCFFFontManagerが入っていません。（多分）</p>
<p>Flex Builderを買う予定がないという方は我慢してSDKを使った方がいいと思います。以下、Flex SDKを前提に話を進めます。</p>
<h4>2.フォントファイルのコピー</h4>
<p>作業用フォルダ（この場合はHiraginoMincho）にOpenTypeフォントファイルをコピーします。Windowsなら「コントロールパネル＞フォント」フォルダに入ってます。</p>
<h4>3.クラスの作成</h4>
<p>プロジェクトのメインファイル（HiraginoMincho.<del>mxml</del>as）を作成し、下記のドキュメントクラスを定義します。</p>
<pre class="brush: as3;">package {
   import flash.display.*;
   public class HiraginoMincho extends Sprite{
      [Embed(source=&quot;フォントファイルへのパス&quot;, fontName=&quot;HiraginoMincho&quot;, cff=&quot;true&quot;)]
      public static var font:Class;
      public function Mincho() {
      }
   }
}</pre>
<h4>4.コマンドラインでフォルダまで移動してコンパイル。</h4>
<pre class="brush: bash;">cd /path/to/working/directory/HiraginoMincho
mxmlc HiraginoMincho.mxml</pre>
<h4>5.別のswfで読み込んで使う</h4>
<p>できあがったswfを読み込めば使うことができます。やり方は<a href="http://isaomatsunami.blogspot.com/2009/05/flex-sdk-on-mac-os.html">元エントリー</a>に詳しいです。</p>
<p>フォント名が「クラス名_埋め込みClass変数」に変わるのでご注意。この例ではHiraginoMincho_fontになります。</p>
<h3>注意点</h3>
<p>Flex自体はデバイスフォントを埋め込むことができますが、CFFFontManagerはデバイスフォントを受け付けないようです。</p>
<p>したがって、フォントファイル自体をコピーしてEmbedタグのsource属性で指定することになります。</p>
<p>また、ヘルプを見るとこんなことが書いてあります。</p>
<blockquote><p>To get the system font name in Windows, install the Font properties extension. Then right-click the font’s file in Windows Explorer and select the Names tab. Use the value under Font Family Name as the systemFont value.<br />
<cite><a href="http://livedocs.adobe.com/flex/gumbo/html/WS2db454920e96a9e51e63e3d11c0bf69084-7f5f.html">Adobe Flex4 help &#8211; Using embedded fonts </a></cite></p></blockquote>
<p>「Windowsでデバイスフォント名を知りたい場合はフォントプロパティ拡張機能を使え」ということらしいのですが、これがすぐにわからなかったので、リンクを貼っておきます。</p>
<p><a href="http://www.microsoft.com/typography/TrueTypeProperty21.mspx">Microsoft Typography &#8211; Font properties extension, version 2.30</a></p>
<p><a href="http://www.microsoft.com/typography/default.mspx">Microsoft Typograph</a>yなんてサイトがあったんですね。MSはまったくフォントに興味がないと思っていました。</p>
<p>というわけで、以上です。</p>
<h4>追記</h4>
<p>なんか環境を変えたら上手く行かなかったので、上手くいったソースを追記しておきます。</p>
<pre class="brush: as3;">
package{
   import flash.display.Sprite;
   public class main extends Sprite
   {
      [Embed(source=&quot;assets/ipamp.otf&quot;, fontName=&quot;IPAMincho&quot;, embedAsCFF=&quot;true&quot;)] //←ここが変わった
      public static var IPAMincho:Class;
      public function main()
      {
      }
   }
}
</pre>
<p>Embedの属性名が変わったのかな？</p>


<p>Related posts:<ol><li><a href='http://takahashifumiki.com/web/programing/777/' rel='bookmark' title='Permanent Link: Flex SDK 4のアップデートで色々エラー'>Flex SDK 4のアップデートで色々エラー</a></li>
<li><a href='http://takahashifumiki.com/announcement/914/' rel='bookmark' title='Permanent Link: 破滅派でテーマソングの歌詞を募集中です'>破滅派でテーマソングの歌詞を募集中です</a></li>
<li><a href='http://takahashifumiki.com/web/programing/475/' rel='bookmark' title='Permanent Link: WordPressとflashでブログ縦書き化計画(5)'>WordPressとflashでブログ縦書き化計画(5)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/programing/710/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://takahashifumiki.com/web/programing/710/" />
	</item>
	</channel>
</rss>
