Tag/PHP

mixiアプリで「Restful API for PC」を試してみた

opensocial
opensocial posted by (C)kishir

mixiアプリで「Restful API for PC」を試してみたので、メモ用に残しておく。

  1. APIを使用するため、「Consumer key」と「Consumer Secret」を発行する。
  • 発行するには、mixiアプリ管理画面から可能
  • 各アプリ画面(http://mixi.jp/view_appli.pl?id=[アプリID])の「設定変更」リンクから、アプリ管理画面へ
  • まだ「Consumer key」と「Consumer Secret」を発行していない場合は、一度「同意する」にチェックを行い「設定を変更する」をクリックする必要がある
  • 設定を変更すると、「アプリの説明」の上部に「Consumer Key」「Consumer Secret」という項目が追加される(変更などは出来ないので、テキストでの表示)
consumer
consumer posted by (C)kishir
  1. APIを使用するためにはアクセスに関して制限あり
  • APIを使用するにあたり、誰の権限でアクセスを行うかを指定することが必要
  • 誰の権限かを指定するには「対象ユーザのID」を使用
  • ここで注意するのが「対象ユーザーID」は「一定時間内にWebブラウザで対象のmixiアプリを起動したユーザ」のIDのみが指定可能
  1. 現在(2010.01.25)mixiアプリで利用可能なAPI
  • Person & Friends API

    これだけなので、「ユーザのプロフィールやマイミクに関する情報」しか取得出来ない

    # アプリケーション毎で保持している「永続化データ(AppData)」などは不可

    つまり取得出来るデータは、 JavaScriptAPIで「プロフィール情報を取り出す時」の

var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER), "viewer");
req.send(function(data) {
   if (data.hadError()) {
       var msg = data.getErrorMessage();
       // エラー発生時の処理
   } else {
       // 取得結果に対する処理
       var item = data.get("viewer");
       var viewer = item.getData();
       var id = viewer.getId();
       var nickname = viewer.getDisplayName();
       var thumbnailUrl = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);
   }
});

と同じですね。

参考:mixi Developer Center (ミクシィ デベロッパーセンター) >> プロフィール情報・マイミク情報を使ってみよう
  1. 取得するためのURLパターン
  1. 取得時のフォーマット
  • JSON
  • XML(atom + xml)

指定方法は、

?format=json

例:http://api.mixi-platform.com/os/0.8/people/1234/@all?format=json

  1. 取得可能なフィールド一覧

    基本情報

    • ニックネーム(nickname)
    • プロフィールURL(profileUrl)
    • プロフィール画像URL(thumbnailUrl)
    • アプリ利用状態(hasApp)
    • 血液型 ※A, AB, B, Oのいずれか(bloodType)

    プロフィール情報

    • 現住所(addresses)
    • 生年月日(birthday)
    • 性別(gender)

    基本情報以外の項目を取得する場合は、以下のように fields パラメータに項目名をカンマ区切りで指定

?format=json&fields=birthday,gender

  アプリをインストールしているマイミク一覧を取得する場合は下記のように指定
?format=json&filterBy=hasApp
  1. 実際にデータ取得を試してみる
mixi Developer Centerの「Person & Friends API」には「PHP」「Python」「Perl」のサンプルが記載されているので、そちらを参考にしてみた PHPで試した場合はまず必要になるのが、「OAuth.php」が必要となる。 これは、Google Codeに上がっているoauthから取得してくればOK PHPなら「http://oauth.googlecode.com/svn/code/php/」に各種ライブラリが用意されている

Google Codeやmixiにも記載されているPHPのコードを元に、

簡単に返すクラスを作って使ってみた。

ソースは下記

<?php

require_once('OAuth.php');

define(_CONSUMER_KEY_, 'ここに「ConsumerKey」を記述');
define(_CONSUMER_SECRET_, 'ここに「ConsumerSecret」を記述');

class TestRestfulAPI
{
   private $_base_feed  = NULL;
   private $_consumer  = NULL;
   private $_viewer_id   = NULL;

   public function __construct($viewer_id=NULL)
   {
       if (!$viewer_id && is_null($viewer_id)) return false;
       $this->_viewer_id  = $viewer_id;
       $this->_base_feed = sprintf('http://api.mixi-platform.com/os/0.8/people/%s/@self', $this->_viewer_id);
   }

   public function get()
   {
       try{
           $params = array('xoauth_requestor_id' => $this->_viewer_id);
           $this->_consumer = new OAuthConsumer(_CONSUMER_KEY_, _CONSUMER_SECRET_, NULL);
           $request = OAuthRequest::from_consumer_and_token(
               $this->_consumer, NULL, 'GET', $this->_base_feed, $params);

           // Sign the constructed OAuth request using HMAC-SHA1
           $request->sign_request(new OAuthSignatureMethod_HMAC_SHA1(),
                                   $this->_consumer, NULL);

           // Make signed OAuth request to the Contacts API server
           $url  = $this->_base_feed . '?' . $this->implode_assoc('=', '&', $params);
           $curl = curl_init($url);
           curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
           curl_setopt($curl, CURLOPT_FAILONERROR, false);
           curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
           curl_setopt($curl, CURLOPT_ENCODING, 'gzip');
           $auth_header = $request->to_header();
           if ($auth_header) {
               curl_setopt($curl, CURLOPT_HTTPHEADER, array($auth_header));
           }

           $response = curl_exec($curl);
           if (!$response) {
               $response = curl_error($curl);
           }
           curl_close($curl);
       } catch (Exception $e) {
           //var_dump($e);
           return false;
       }
       return $response;
   }

   function implode_assoc($inner_glue, $outer_glue, $array, $skip_empty=false)
   {
       $output=array();
       foreach ($array as $key => $item) {
           if (!$skip_empty || $item) {
               $output[] = $key. $inner_glue. urlencode($item);
           }
       }
       return implode($outer_glue, $output);
   }
}

$viewer_id  = $_POST('viewer_id');
$api             = new TestRestfulAPI($viewer_id);
$data           = $api->get();
print($data);

こいつをjsからmakeRequest()関数を使って動作させれば、

viewerの情報が取得出来る。

後々、peopleの部分を永続化データを取得するために「appdata」などに

置き換えるように変更したり、「@self」部分を「@all」などに変更出来るように

クラスを書き換えてやれば、ひとまずこれだけでRestful API対応は出来そう。

[2010-2-4 追記]

== 利用可能なクエリーパラメータの指定方法 ==

OpenSocialの本家サイトなどみれば解りそうだが、念のためメモメモ

上記のコードでURLを指定している箇所があるが、そこに直接クエリーパラメータを付与すると、

401でエラーになってしまう。

例:

<?php

$this->_base_feed = sprintf('http://api.mixi-platform.com/os/0.8/people/%s/@self', $this->_viewer_id);

この部分を「マイミクでかつアプリをインストールしているユーザーのみ1000件取得する」という指定で取得するために、

<?php

$this->_base_feed = sprintf('http://api.mixi-platform.com/os/0.8/people/%s/@friends?filterBy=hasApp&count=1000', $this->_viewer_id);

とやるとエラー

これは、「mixi Developer Center」の「2-legged OAuthによるAPIアクセス」に記載されている。(あんまり詳しくは書かれていないけども・・・OpenSocialの本家サイト見た方が良いかもねー。 :-P

解決方法は、下記の部分の配列にパラメータを指定する

<?php

$params = array('xoauth_requestor_id' => $this->_viewer_id); // この部分
$this->_consumer = new OAuthConsumer(_CONSUMER_KEY_, _CONSUMER_SECRET_, NULL);
$request = OAuthRequest::from_consumer_and_token(
    $this->_consumer, NULL, 'GET', $this->_base_feed, $params);

上記にある「// この部分」の箇所を下記ように記述する

<?php

$params = array(
    'xoauth_requestor_id' => $this->_viewer_id,
    'filterBy'            => 'hasApp',
    'count'               => 1000
);

これで正常に取得する事が出来る。

Posted at: 
2010/01/26 23:17:27
0 Comments
0 TrackBacks
Tags: 
JavaScript
PHP
Restful
Trackback: 
http://kishi-r.com/2010/01/26/mixi_restful_api/trackback/

MT3.3からWordPress2.5への移行時に行った事

メモ代わりに。

移行する際に気になるのがパーマリンクの保持。

ようは以前と同じURLで移行しないとダメだよねって事で、

色々と調べてみたが最新の2.5対応が無かったorz

でもやる事としては、同じだよね。


  1. パーマリンクの保持

  2. タグの保持

  3. RSSフィードのURLの保持

  4. トラックバックとコメントの保持


位かな。

4のトラックバックとコメントはそのままデータをインポートすればOKで、

3のRSSフィードはMTのRSSのURLを.htaccessでリダイレクトしてやるなどで、

対処出来そう。

ただ1のパーマリンクと2のタグがやっかいだった。

そこで参考にしたのが、

ググったら絶対上位に出てくるサイト

MovableTypeからWordPressへのURL込みの移行方法

ここが解りやすいので、参考にさせていただきました。

まずやる流れが下記になる。

  1. WordPressのインストール

  2. WordPressのパーマリンクの設定

  3. MovableTypeへのパッチ

  4. WordPressへのパッチ

  5. MovableTypeからデータをエクスポート

  6. WordPressへデータをインポート


1.WordPressのインストール

WordPressの日本語サイトから最新バージョンの2.5をダウンロードしてくる。

インストール作業自体は以前のバージョンよりも全然簡単になっているので、

WordPress日本語版のインストールを見れば簡単にサクっと出来るはず。

2.WordPressのパーマリンクの設定

インストールが完了したらパーマリンクの設定になるので、

wordpress管理画面01



にあるタブから「設定」を選択して「パーマリンク設定」を選択する。

そうすると「一般的な設定」に「カスタム構造」というのがあるので、それを選択する。

設定内容は下記になる。

/%year%/%monthnum%/%postname%.html

この「カスタム構造」は「.htaccess」を使用するため書き込み権限が無いとダメみたいです。

その場合、ガイダンスが表示されるみたいなのでそちらの指示に従ってください。

3.MovableTypeへのパッチ

こちらは、MovableTypeからWordPressへのURL込みの移行方法参考にするのが一番良い。

実際にも記載されている通りにやりましたので、一応書いておきます。

mt(MTをインストールしたディレクトリ)/lib/MT/ImportExport.pmファイルの541行目へ追加を行う。

丁度540行目にある

DATE: <$MTEntryDate format="%m/%d/%Y %I:%M:%S %p"$>

の下に

PERMALINK: <$MTEntryPermalink$>
<MTEntryIfTagged>
TAGS: <MTEntryTags glue=","><$MTTagName$></MTEntryTags></MTEntryIfTagged>
ID: <$MTEntryID$>

を追加する。

4.WordPressへのパッチ

これは何処にも載っていなかったが、

以前のバージョンへの対応を見れば簡単に解る。

ファイルは色々なサイトに記載されている通り

wordpress/wp-admin/import/mt.php

になる。

このファイルの丁度325行目に追加する。

以前のバージョンでは「PHPのSwitch」で処理されていたみたいだが、

最新は「ifとかelseifとか」で処理されてたw

} else if ( 0 === strpos($line, "PERMALINK:") ) {
$value = trim( substr($line, strlen("PERMALINK:")) );
$tmpvalue = strrchr($value,"/");<br />
$post->post_name = substr($tmpvalue, 0, strpos($tmpvalue, "."));
この4行を追加する。

なぜこの4行を追加するかと言うと、

DBへインポートする際に「wp_post」テーブルのカラム「post_name」へMTの記事データのタイトルが入ってしまうため、記事とURLのつながりが無くなってしまう為にパーマリンクがちゃんと保持されないという現状になるみたいです。

なので、上記を追加する事で正常にデータがインポートされます。

5.MovableTypeからデータをエクスポート

次に記事データをエクスポートします。

MovableTypeの管理画面のメニューから「読み込み・書き出し」を選択する。

上記タブから「エントリーの書き出し」を選択する。

最後に「~からエントリーを書き出す」ボタンをクリックするとデータが「.txt(テキスト形式)」で保存されます。

中身は、
AUTHOR: kishi-r
TITLE: 最近読む著者たち
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: __default__
ALLOW PINGS: 1
PRIMARY CATEGORY: Book
CATEGORY: Book

DATE: 12/04/2006 09:49:02 PM
PERMALINK: http://kishi-r.com/2006/12/post_4.html
TAGS: book
ID: 8
-----
BODY:
・石田衣良
ご存知、池袋ウエストゲートパークを書いている人
他にも結構面白い本が沢山ある。
例えば、「4TEEN」「うつくしい子ども」「エンジェル」「ブルータワー」などがおもしろかった。
一番グっときたのは「ブルータワー」です。
簡単に説明すると内容はSFなんですが、
現代と自分の頭の中の世界を行き来し、世界を救うという話です。
それぞれ登場するキャラが個性的でおもしろい。
映画化すると結構人気がでるかもしれない。
他の作品も是非読んで欲しい。

・・・・・・・・以下続きます。

って感じで保存されているはずです。

6.WordPressへデータをインポート

最後にWordPressへデータをインポートします。

管理画面から下記画面にある「管理」を選択します。

wordpress管理画面02

その中にある「インポート」を選択します。

そうすると色々なブログの選択項目が出てくるので、ここから「MovableTypeとTypePad」を選択します。

次に「自分のコンピュータからファイルを選択する」で先ほどエクスポートしたファイルを選択して、

真ん中にある「ファイルをアップロードしてインポート」ボタンをクリックすれば自動でインポートされます。

これでパーマリンクへの対応は完了です。

このブログ自体も上記の手順で移行しました。

RSSのフィードもさくらインターネットであれば、リダイレクトも出来たので多分OKなのかな?

タグに関してはまた試してみて記載しようと思います。

Posted at: 
2008/04/20 22:59:00
0 Comments
0 TrackBacks
Tags: 
PHP
WordPress
Trackback: 
http://kishi-r.com/2008/04/20/mt33%e3%81%8b%e3%82%89wordpress25%e3%81%b8%e3%81%ae%e7%a7%bb%e8%a1%8c%e6%99%82%e3%81%ab%e8%a1%8c%e3%81%a3%e3%81%9f%e4%ba%8b/trackback/

PHPってそんなに・・・

最近PHPをディスるってのが、
はやっているみたいw

でもディスるってのも久々に聞いたから、
ウケるw

90年代のHIPHOPでは結構聞いたけどなぁ~。
ICE CUBEとCypress Hillとかがディスってるレコードも
持ってるし。

でも向こうでは本当に殺されるから怖い。
2PacとかNotorious BIGとかもそうだもんなぁ~。
好きだったのに・・・。

まぁ~ネタだから、
そんなことが起きないように願ってます。

自分自身PHPからプログラムを始めたんですが、
PHPには感謝してます。
だってそれがきっかけだから。
一番大事ですよね。

Posted at: 
2008/01/31 23:34:36
0 Comments
0 TrackBacks
Tags: 
PHP
Trackback: 
http://kishi-r.com/2008/01/31/php_1/trackback/

今年初勉強会は「第30回PHP勉強会」でした

最近自分のサーバのインストール大会ばっかで、
コードなんかは会社の作業でしか書いてない。

そんな中、
今年初めての勉強会「第30回PHP勉強会」に行ってきた。

メインとなった話は

4→5への移行の話でした。
PHPマニュアルにも記載されているらしいが、
情報量はかなり少ないらしい。

弊社でもその話が出ていて、
マンモス本参考の勉強会がありました。

色々と聞いていて疑問に思った事は、

・フレームワークが5に対応してなかったらどうするの?
・E_STRICTを使ってエラーを無くすのは、時間が掛かるのでは?
・&=をGrepしてもどれを修正するのか精査するのに、時間が掛かるのでは?

などを感じました。
もうちょっと移行するのに簡単な方法は無いのかな?

無いか・・・?。

後は、
懇談会でrhacoの中の人と色々話しを聞きました。
やはり自分的にはフレームワークというよりこちらの方が使いやすそう。
Djangoっぽい作りが入りやすそうなので、
ちょっと試してみる事にします。
簡単な案件なんかがあったら、
是非業務で使ってみようと本気で考えています。

ipythonのように対話的な事も出来るらしいので、
それもすごい惹かれました。

とりあえずPHPをインストールしないと始まらないので、
インストールしないとな。

発表者の皆様はお疲れさまでした。
名刺交換していただいた方、
どうもありがとうございました。

今回も名刺がかなり増えてうれしかったです。

※ウノウの名刺が変わっていてビックリした。
※rhacoの名刺が出来ていて感動した。それもかなり素敵。

Posted at: 
2008/01/30 01:28:00
0 Comments
0 TrackBacks
Tags: 
PHP
Trackback: 
http://kishi-r.com/2008/01/30/php/trackback/

さくらインターネットで「OpenPNE」をインストール

さくらインターネット
OpenPNE」をインストールしてみた。

プランは「スタンダード」でインストールした。
ライトプランだとPHPとMySQL使えないとの事です。

参考したサイトは
OpenPNE.jp ~OpenPNE公式SNS~
http://www.openpne.jp/wiki/OpenPNESetup#section4

おぢさん日記改
http://blog.cano-lab.org/archives/academic/openpne/

インストールした「OpenPNE」のバージョンは「2.6.4

1.ファイルのダウンロード

OpenPNE.jp ~OpenPNE公式SNS~ 」から最新版をダウンロード
http://sourceforge.net/projects/openpne
OpenPNE-2.6.4.zip」をダウンロード
※バージョンは、これを書いている時点では「2.6.4

2.ファイルの解凍

ダウンロードしたファイル「OpenPNE-2.6.4.zip」を
適当に解凍すると「OpenPNE」というフォルダが出来る

3.設定ファイル

解凍して出来たフォルダ「OpenPNE」にある「config.php.sample
というファイルがある。
これが設定ファイルなので、これを編集する

まず「config.php.sample」を「config.php」にリネームする

次にリネームした「config.php」を編集する
編集するのは下記



まず13行目の
ユーザー名

さくらインターネットのユーザ名を入力する


次に14行目の
サーバのパスワードを入力
さくらインターネットのサーバパスワード


15行目の
ホスト名を入力
コントロールパネルにどのデータベースサーバが使えるか表示されているので、
そちらを参考に入力


16行目の
データベース名を入力
さくらインターネットはユーザー名と同じなので、データベースの名前にはユーザー名を入力


次に22行目の
DB暗号化キーを入力
会員ログイン情報の暗号キー(56バイト以内のASCII文字)
他人に推測されにくい文字列を入力


最後に
メールサーバードメインを入力
これは携帯版でメール投稿をする場合に使う


4.さくらインターネットにサブドメインを追加しエイリアスで設定

今回は「おぢさん日記改」を参考にしたので、「/home/ユーザー名/www」ディレクトリの下に「sns」というディレクトリを作成

次に「さくらインターネットサーバコントロールパネル」の一番左下にある
ドメイン設定」欄にある「ドメイン設定」のリンクから



設定画面へ遷移しドメイン名の設定を行う

まず設定画面の上部分「ドメインの追加」タブから「さくらインターネットのサブドメインを使う」を設定する
※さくらインターネットが提供するドメイン名に、好みの名前を追加してサブドメインの形で利用可能





上記画面にある「さくらインターネットのサブドメインを使う」の欄にある
ドメイン名:」を設定する
※こちらはさくらインターネットのユーザ名を入力し、プルダウンから選択する

ドメイン名を記入、選択したら送信

次にドメインの使用方法を選択する

1.「エイリアスとして使用する」で設定する
2.リダイレクト・エイリアスの対象のフォルダを入力
/home/ユーザー名/sns


これで「サブドメインを追加しエイリアスで設定」が完了

5.データベースを作成

今回は「MySQL 4.0 の場合」で作成
2.ファイルの解凍」で出来た「OpnePNE」フォルダの
OpenPNE/setup/sql/install


内に下記の4ファイルがある

・install-2.6-create_tables-mysql40.sql

・install-2.6-create_tables-mysql41.sql

・install-2.6-insert_data.sql

・option-2.6-pnebiz-header.sql


今回使用するのは
・install-2.6-create_tables-mysql40.sql

・install-2.6-insert_data.sql

・option-2.6-pnebiz-header.sql


の3ファイルを使用する
※install-2.6-create_tables-mysql41.sqlは「MySQL4.1」の場合のため

次にデータベースを設定する
まず「さくらインターネットサーバコントロールパネル」から「アプリケーションの設定」欄にある「データベースの設定」リンクから設定画面へ遷移





設定画面内の「管理ツール(phpMyAdmin)」のphpMyAdminの画像をクリックし
画面遷移





まず上記画面にある
Language: を 「Japanese (ja-utf-8)」を設定する

次に「ユーザー、パスワード、サーバーの選択」をそれぞれ記入・選択しログインする
※ サーバーの選択はコントロールパネル内に記述してあるので、そちらを参照

次に使用するデータベースを選択する

データベース内のテーブルなどが表示されるので、画面上部にあるタブの中から



SQL」を選択する

遷移したら下記の画面から



・install-2.6-create_tables-mysql40.sql

・install-2.6-insert_data.sql

・option-2.6-pnebiz-header.sql


を上から順番に実行する

これでデータベースの設定が完了

6.ファイルのアップロード

2.ファイルの解凍」で出来たフォルダ「OpenPNE」内の
ファイルをアップロードする。
公開用ディレクトリ : 

public_html


OpenPNE設定ファイルなどのディレクトリ :
 
bin

lib

var

webapp

webapp_biz

webapp_exr


その前に「public_html」ディレクトリの下にある「config.inc.php」を書きの通りに設定する





これは「公開用ディレクトリ(ブラウザから閲覧可能)」を
/home/ユーザー名/www/」へアップし、
OpenPNE設定ファイルなどのディレクトリ」を
/home/ユーザー名/OpenPNE/」へアップするため

設定したら次にアップ作業

/home/ユーザー名/」の下に「OpenPNE」といディレクトリを作成

作成した「OpenPNE」ディレクトリ内に「OpenPNE設定ファイルなどのディレクトリ」に記載したディレクトリやファイルをアップする

アップしたらパーミッションを下記の通りにの変更
※こちらは「OpenPNE.jp ~OpenPNE公式SNS~ 」を参照しました





ここでは「777」と変更する箇所がいくつかある

おぢさん日記改」で下記を注意と書いてありましたので、記載しておきます
binディレクトリの中にあるcronファイルのパーミッションも
755になっているかどうか確認しておきましょう。
これを忘れるとお知らせメールとかが飛ばなくなります。


アップとパーミションの変更が完了したら、次に「公開用ディレクトリ(ブラウザから閲覧可能)」をアップする

こちらは「さくらインターネットにサブドメインを追加しエイリアスで設定」で
「2.リダイレクト・エイリアスの対象のフォルダを入力 : /home/ユーザー名/sns
と設定したので、
/home/ユーザー名/sns」の下に「public_html」以下のファイル、フォルダを丸ごとアップする

アップが完了したら、次にパーミッションの変更

アップしたファイル、フォルダは全て「755」に変更する

最後に「3.設定ファイル」で作成したファイル「config.php」を
OpenPNE」ディレクトリの下にアップする
これを忘れると動かないので、注意!!!

以上でファイルのアップロードが完了

7.OpenPNEのセットアップ

最後に「OpenPNE」のセットアップを行う

4.さくらインターネットにサブドメインを追加しエイリアスで設定」で設定したURLにアクセスする
※ドメイン名を「hoge.uh-oh.jp」で設定した場合は「http://hoge.uh-oh.jp」で
アクセス

下記画面に遷移する




SNS名、PCメールアドレス、パスワード、ユーザー名、パスワード」の各項目を
入力し、セットアップ実行ボタンを押下するとログイン画面に遷移する





これでインストールの完了

ここから招待メールなどを送り「SNS」の開始!!!

Posted at: 
2007/02/21 16:01:49
4 Comments
0 TrackBacks
Tags: 
PHP
Trackback: 
http://kishi-r.com/2007/02/21/openpne/trackback/

jpGraphをインストール時にハマったこと

jpgraphインストールした後、「さぁ試すぞだ!!!」って時に文字が化けてしまった。

イロイロと調べた結果下記のようになる。

PHPの内部エンコーディングがEUC-JPの場合、日本語フォントの
設定方法での対処だけでは日本語が化けてしまう。
jpgraph 1.20.5の場合、EUC-JPでないとwarningが発生して表示できないらしい。

gd_image.inc.phpの1349行目あたりに、

// Do special language encoding
   $txt = $this->langconv->Convert($txt,$this->font_family);

   $txt = mb_convert_encoding( $txt, "EUC-JP", "UTF-8"); <-ここを追加


jpgraph.phpを以下のように修正する。

2898行目付近 太字やイタリック体をとりあえずノーマルで表示する。

FF_MINCHO =>  array(FS_NORMAL=>MINCHO_TTF_FONT, 
FS_BOLD=>MINCHO_TTF_FONT,
   FS_ITALIC=>MINCHO_TTF_FONT, FS_BOLDITALIC=>MINCHO_TTF_FONT ),
FF_PMINCHO => array(FS_NORMAL=>PMINCHO_TTF_FONT, 
FS_BOLD=>PMINCHO_TTF_FONT,
FS_ITALIC=>PMINCHO_TTF_FONT, FS_BOLDITALIC=>PMINCHO_TTF_FONT ),
FF_GOTHIC  => array(FS_NORMAL=>GOTHIC_TTF_FONT, 
FS_BOLD=>GOTHIC_TTF_FONT,
FS_ITALIC=>GOTHIC_TTF_FONT, FS_BOLDITALIC=>GOTHIC_TTF_FONT ),
FF_PGOTHIC => array(FS_NORMAL=>PGOTHIC_TTF_FONT, 
FS_BOLD=>PGOTHIC_TTF_FONT,
FS_ITALIC=>PGOTHIC_TTF_FONT, FS_BOLDITALIC=>PGOTHIC_TTF_FONT ));


これで日本語化されるはず。

2~3時間くらい悩んでしまった・・・。
ハマったらしょうがないよね。。。

Posted at: 
2006/12/29 17:04:36
0 Comments
0 TrackBacks
Tags: 
PHP
Trackback: 
http://kishi-r.com/2006/12/29/jpgraph/trackback/

phpでGDを使う場合のconfigure

とりあえずメモしておこっと。

忘れちゃうからね・・・。
そういえば、「GD」をインストールする前に「Feetype」「png」「jpeg」「zlib」は
先にインストールしないと「GD」をconfigureしても反映されないんだね・・・。

「Freetype」をインストールせずに「GD」をconfigureしたら

# tar zxvf gd-2.0.28.tar.gz

# cd gd-2.0.28

# ./configure --without-libiconv-prefix


** Configuration summary for gd 2.0.28:


Support for PNG library: yes

Support for JPEG library: yes

Support for Freetype 2.x library: no

Support for Xpm library: yes

Support for pthreads: yes


ってなったから、「Freetype」をインストールしてから
「GD」をインストールしたら

# tar zxvf gd-2.0.28.tar.gz

# cd gd-2.0.28

# ./configure --without-libiconv-prefix


** Configuration summary for gd 2.0.28:


Support for PNG library: yes

Support for JPEG library: yes

Support for Freetype 2.x library: yes

Support for Xpm library: yes

Support for pthreads: yes


ってなったので、

# make

# make install


でインストール。

ちなみに「Freetype」って

TrueTypeフォントをレンダリングするライブラリ

1989年にApple社が開発し、同社のMac OS 7.0(当時はSystem 7.0)から搭載している

フォントシステム。

また、同システムで用いられるフォント形式。

Microsoft社に技術供与され、Windows 95からはシステム標準のフォントシステムとして

広く用いられている。

TrueTypeはOSの機能として実装されたアウトラインフォントシステムであるため、

拡大・縮小してもジャギー(ギザギザ)が生じず、解像度によらない精細な出力を画面と

印刷の両方で同じように得られる。

らしい。

PHPのconfigure
一応「MySQL」と「Postgres」を両方使う場合。

./configure

--with-pgsql=/usr/local/pgsql

--with-mysql=/usr/local/mysql

--enable-track-vars

--with-apxs=/usr/local/apache/bin/apxs

--enable-versioning

--enable-mbstring

--enable-mbregex

--enable-mbstr-enc-trans

--with-gd

--with-freetype-dir=/usr/local/include/freetype2

--with-jpeg-dir=/usr/local/lib

--with-png-dir=/usr/local/lib

--with-zlib-dir=/usr/local/lib

--enable-gd-native-ttf

--enable-gd-jis-conv

--enable-bcmath


※「浮動小数点の計算が何やらおかしくなることがあるから(--enable-bcmath)はあった方がいい。
画像サイズをピクセル単位で計算して変換する時に計算が狂う場合があるので、
PHPのBCMath任意精度数学関数を使うと良い」とNさんから助言されオプションに付けました。
Thanksです。
そして忘れないようにしないとね・・・。
こういうのでハマルからさ。

「GD」使うのに解らない場合、ここ結構良いかも。
「Shinta's website」
http://www.gadgety.net/shin/tips/unix/php-gd.html

Posted at: 
2006/12/24 11:34:12
0 Comments
0 TrackBacks
Tags: 
PHP
Trackback: 
http://kishi-r.com/2006/12/24/phpconfigure/trackback/

あわせて読みたい 人気ブログランキング - kishi-r.com track feed

Categories