(1)電源を切る
(2)電源ボタンを押す
(3)「option」キーを押し続ける
(4)Macintosh HDかRecovery HDを選択する画面が表示されるので、「Recovery HD」を選択
(5)Mac OS Xユーティリティ画面で「ディスクユーティリティ」を選択
(6)左側の対象HD選択画面でMacintosh HDが選択されていることを確認し、右側の消去タブを選択
(7)消去ボタンをクリック(HDの中身が消える)
(8)Mac OS Xユーティリティ画面に戻り、「Mac OS Xを再インストール」を選択
参考:CREMAU - Lion(Mac OS 10.7)を初期化する方法
2012年5月27日日曜日
2012年5月13日日曜日
XAMPPとの別れ
Mac OS X上の開発環境としてXAMPP for mac osを使用してきたが、これをアンインストールすることにした。
理由はmysqlやphpのバージョンアップがめんどくさいため。
ターミナルの使い方やxamppの仕組みがなんとなくわかってきたので、次はapache, mysql, phpをひとつずつ入れてみたいと思う。
とりあえず、このサイトを参考に一から環境構築し直します。
参考:Qiita - PHPerがMacBookAirを買ったら直ぐにすること 2012
理由はmysqlやphpのバージョンアップがめんどくさいため。
ターミナルの使い方やxamppの仕組みがなんとなくわかってきたので、次はapache, mysql, phpをひとつずつ入れてみたいと思う。
とりあえず、このサイトを参考に一から環境構築し直します。
参考:Qiita - PHPerがMacBookAirを買ったら直ぐにすること 2012
2012年4月20日金曜日
【php】ターミナルを使用してamazonからデータを収集・保存する
ブラウザでphpを開くのではなく、ターミナルからphpを実行し、amazonからデータを収集し、データベースに保存する。
amazonへのリクエストにServices_Amazonを用いる。そのため、php.iniのinclude_pathをあらかじめ修正しておく必要がある。
ブラウザでphpを開いた場合、参照するphp.iniは/Application/XAMPP/xamppfiles/etc/内のphp.iniである。しかし、ターミナルからphpを実行した場合、参照するphp.iniは/usr/etc/内のphp.iniになるらしい。
そこで、/usr/etc/php.iniに赤字部分を追加する。
include_pathはphpファイルをinclude(あるいはrequire)する際に参照するフォルダである。/usr/lib/php/pearにServices_Amazonに関するファイルがあるため、これを追加することで'/Services/Amazon.php'を呼び出すことが可能になる。
参照:phpbook - インクルードパスの設定
上述の設定を行えば、amazonから情報を取得することができる。取得した情報をデータベースに保存する際に、注意する点がある。
これだとなぜかエラーが出るので、これを下のように修正する。
参照:stackoverflow
環境
- mac OSX lion
- xampp mac os x版 1.7.3
php.iniの設定
amazonへのリクエストにServices_Amazonを用いる。そのため、php.iniのinclude_pathをあらかじめ修正しておく必要がある。
そこで、/usr/etc/php.iniに赤字部分を追加する。
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
; UNIX: "/path1:/path2"
;include_path = ".:/php/includes:/usr/lib/php/pear"
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"
;
; PHP's default setting for include_path is ".;/path/to/php/pear"
; http://php.net/include-path
include_path = ".:/php/includes:/usr/lib/php/pear"
include_pathはphpファイルをinclude(あるいはrequire)する際に参照するフォルダである。/usr/lib/php/pearにServices_Amazonに関するファイルがあるため、これを追加することで'/Services/Amazon.php'を呼び出すことが可能になる。
参照:phpbook - インクルードパスの設定
データベースへの接続
上述の設定を行えば、amazonから情報を取得することができる。取得した情報をデータベースに保存する際に、注意する点がある。
$link = mysql_connect('localhost', 'ユーザ名', 'パスワード');
これだとなぜかエラーが出るので、これを下のように修正する。
$link = mysql_connect('127.0.0.1', 'ユーザ名', 'パスワード');
参照:stackoverflow
ソースコード
/* * amazon apiにリクエストを送信し書籍ランキング情報を取得 * 取得した情報をデータベースに格納 * */ // Services_Amazonの呼び出し require_once 'Services/Amazon.php'; // amazon apiリクエスト時に必要なデータ define('ACCESSKEY_ID', 'アクセスキーID'); define('SECRET_ACCESSKEY', 'シークレットアクセスキー'); define('ASSOCIATE_ID', 'アソシエイトID'); define('ECS_VERSION','2009-03-31'); define('RESPONSE_GROUP','Small,Images,ItemAttributes,OfferSummary,Reviews'); // main実行プログラム $nodelist = array( "business" => "466282", "finance" => "492054" ); foreach($nodelist as $key => $val){ for($i=1; $i<=3; $i++){ $ret = getItemRankingData($val, $i); saveItemRankingData($ret); } } function getItemRankingData($browse_node,$page){ $amazon = new Services_Amazon(ACCESSKEY_ID,SECRET_ACCESSKEY,ASSOCIATE_ID); $amazon->setLocale('JP'); $options = array(); $options['BrowseNode'] = $browse_node; $options['Sort'] = 'salesrank'; $options['ResponseGroup'] = RESPONSE_GROUP; $options['ItemPage'] = $page; $ret = $amazon->ItemSearch('Books',$options); return $ret; } function saveItemRankingData($ret){ $link = mysql_connect('127.0.0.1', 'ユーザ名', 'パスワード'); if (!$link) { die('miss!'.mysql_error()); } $db_selected = mysql_select_db('test', $link); if (!$db_selected){ die('データベース選択失敗です。'.mysql_error()); } print('testデータベースを選択しました。'); mysql_set_charset('utf8'); for($i=0; $i<10;$i++){ $title = $ret['Item'][$i]['ItemAttributes']['Title']."¥n"; $sql = "INSERT INTO title (title) VALUES ('.$title.')"; $result_flag = mysql_query($sql); if (!$result_flag) { die('INSERTクエリーが失敗しました。'.mysql_error()); } } $close_flag = mysql_close($link); if ($close_flag){ print('success end'); } } ?>
2012年4月15日日曜日
【php】mac os lion でphpを定期実行する
色々作っているうちに、phpファイルを定期的に実行したいと思うようになったので、試行錯誤した結果をメモ。
「php 定期実行」と検索すると、cronというキーワードがよく引っかかる。mac os内にcronは標準で入っているのだが、cronはログオフやスリープ状態時には実行されないらしいので、mac os Xではcronではなくlaunchdを用いるのが推奨されている。そこで、今回はlaunchdを使った定期実行に挑戦する。
ちなみに、cronで定期実行する場合は、ターミナルで
cronが設定されたかを確認するには、
※ 私はこの方法で定期実行を実現することはできなかった。cron設定を入力し保存しても、なぜか保存されなかった。
mac osで導入されている、デーモン実行プログラム(?)。 プログラムの定期実行だけでなく、「あるファイルが更新されたら」「ログインしたら」など様々な設定ができるらしい。
launchdがどのように実行されているのか、実際どのようなファイルが書かれているのか、といった詳細については LaunchDaemons (launchctl, launchd.plist) の使い方 に書かれているので、こちらで勉強して頂きたい。 ここでは、とにかくlaunchdを用いて定期実行するだけの方法を説明します。
1. lingonを使用せずに、launchd.plist(/Library/LaunchDaemons/内に格納するファイル)を直接編集しようとしていたが、書き込み権限がないとか言って怒られ続けた。しかし、ファイルの権限を確認しても、ログインユーザは「読み/書き」になっていた。どう足掻いても無理だったので諦めた。
2. lingonでphpファイルを設定する際、Whenを1分以内に設定してしまうと再起動時にうまくデスクトップが表示されなくなった。落ち着いて、画面上部をクリックすると各種アプリケーションを起動させることができたので、Finderから/Library/LanchDaemons/フォルダに移動し、Lingonで作成したファイルを削除することで解決した。
どうやって定期実行するのか?
「php 定期実行」と検索すると、cronというキーワードがよく引っかかる。mac os内にcronは標準で入っているのだが、cronはログオフやスリープ状態時には実行されないらしいので、mac os Xではcronではなくlaunchdを用いるのが推奨されている。そこで、今回はlaunchdを使った定期実行に挑戦する。
ちなみに、cronで定期実行する場合は、ターミナルで
$crontab -eと入力するとvimエディタが起動するので、そこに「分 時 日 月 曜日 コマンド」を入力する。 例えば、
15 * * * * php test.phpだと、15分ごとにtest.phpが実行される。 入力後、保存を忘れないように。
cronが設定されたかを確認するには、
$crontab -l
※ 私はこの方法で定期実行を実現することはできなかった。cron設定を入力し保存しても、なぜか保存されなかった。
launchdとは?
mac osで導入されている、デーモン実行プログラム(?)。 プログラムの定期実行だけでなく、「あるファイルが更新されたら」「ログインしたら」など様々な設定ができるらしい。
実装環境
- Mac OS X Lion
- Lingon 最新バージョン(たしか2.0.1?)
lanchdにおける定期実行の設定
launchdがどのように実行されているのか、実際どのようなファイルが書かれているのか、といった詳細については LaunchDaemons (launchctl, launchd.plist) の使い方 に書かれているので、こちらで勉強して頂きたい。 ここでは、とにかくlaunchdを用いて定期実行するだけの方法を説明します。
- phpファイルを用意
- lingonをダウンロード・インストール
- lingonを起動
- 左上のNewボタンをクリック
- Users Daemonsにチェックを入れCreate
- Name(たぶん適当で大丈夫)、What(「php test.php」など)、Whenを設定
- 左上のSaveをクリック
- OSを再起動
はまった点
1. lingonを使用せずに、launchd.plist(/Library/LaunchDaemons/内に格納するファイル)を直接編集しようとしていたが、書き込み権限がないとか言って怒られ続けた。しかし、ファイルの権限を確認しても、ログインユーザは「読み/書き」になっていた。どう足掻いても無理だったので諦めた。
2. lingonでphpファイルを設定する際、Whenを1分以内に設定してしまうと再起動時にうまくデスクトップが表示されなくなった。落ち着いて、画面上部をクリックすると各種アプリケーションを起動させることができたので、Finderから/Library/LanchDaemons/フォルダに移動し、Lingonで作成したファイルを削除することで解決した。
2012年3月10日土曜日
modalウィンドウ使用時におけるjavascriptの注意点
モーダルウィンドウ(リンクなどをクリックしたら立ち上がるボックス?)でhtmlあるいはphpファイルを呼び出すようなサイトを構築していたときにハマったのでメモ。
index.phpからモーダルウィンドウに表示するファイルとしてmodal.phpを呼び出すとする。index.phpではindex.js,modal.phpではmodal.jsを外部呼び出している。
【ハマった状況】
index.php内で操作する状況ではindex.js内の関数は正常に動作する。しかし、一度モーダルウィンドウを立ち上げ、それを消した後index.php内でindex.jsの関数を呼び出しても途中で止まる。
【原因】
index.jsとmodal.jsで同じ関数名を使用していたため、モーダルウィンドウを表示した際に関数名の衝突が起こり、エラーが生じたものと思われる。
【解決方法】
関数名を別のものにする。
モーダルウィンドウで呼び出しているファイルは、index.phpとは関係なくそこで完結するものだと思い込んでいたのが原因。モーダルウィンドウでファイルを呼び出す場合、index.php内にmodal.phpが組み込まれると考えたほうがいいみたい。
index.phpからモーダルウィンドウに表示するファイルとしてmodal.phpを呼び出すとする。index.phpではindex.js,modal.phpではmodal.jsを外部呼び出している。
【ハマった状況】
index.php内で操作する状況ではindex.js内の関数は正常に動作する。しかし、一度モーダルウィンドウを立ち上げ、それを消した後index.php内でindex.jsの関数を呼び出しても途中で止まる。
【原因】
index.jsとmodal.jsで同じ関数名を使用していたため、モーダルウィンドウを表示した際に関数名の衝突が起こり、エラーが生じたものと思われる。
【解決方法】
関数名を別のものにする。
モーダルウィンドウで呼び出しているファイルは、index.phpとは関係なくそこで完結するものだと思い込んでいたのが原因。モーダルウィンドウでファイルを呼び出す場合、index.php内にmodal.phpが組み込まれると考えたほうがいいみたい。
2012年3月3日土曜日
【php】同じクラス内の異なる関数を呼び出す
class A{
function a1(){
echo 'this is a1';
}
function a2(){
echo a1();
echo 'this is a2'
}
}
こんな感じで書くとa1()が定義されていませんとエラーがでる。これを回避するためには次のように修正すればいいみたい。
function a1(){
echo 'this is a1';
}
function a2(){
echo a1();
echo 'this is a2'
}
}
こんな感じで書くとa1()が定義されていませんとエラーがでる。これを回避するためには次のように修正すればいいみたい。
class A{
function a1(){
echo 'this is a1';
}
function a2(){
echo A::a1();
echo 'this is a2'
}
}
文字コードの設定をeclipseのプロジェクトごとに行う
【1】Project->Propertiesで設定を開く。
【2】Resource(デフォルトで選択されている)のTextEncodingを変更する。
【2】Resource(デフォルトで選択されている)のTextEncodingを変更する。
2012年3月2日金曜日
amazon apiで獲得したデータをmysqlに保存する
XAMPPをインストールしたときにmysqlもインストールされているため、インストール方法については割愛。初期設定やmysqlの使い方は下記サイトを参考にした。
参考:MySQL初心者入門講座
Amazonからデータを取得する際に、既に保持しているデータとそうでないものを区別し、まだ持っていないデータのみを格納するようにしたいので、プライマリーキーをオートインクリメントさせる。
参考:dbonline - AUTO_INCREMENTの設定
とりあえず、こんな感じのテーブルを作ってみた。
mysqlの管理はphpmyadminでもできるようなので、以下のサイトを参考に新規ユーザの作成や権限の委譲を行った。
参考:adminweb - MySQLの設定と利用
phpからmysqlに接続するためにPDOを使用した。PDOはphpからmysqlへの接続を簡単にしてくれるAPIのような感じだと思われる。一応、コードをのせておく。
----------------------------------------------------------
参考:MySQL初心者入門講座
Amazonからデータを取得する際に、既に保持しているデータとそうでないものを区別し、まだ持っていないデータのみを格納するようにしたいので、プライマリーキーをオートインクリメントさせる。
参考:dbonline - AUTO_INCREMENTの設定
とりあえず、こんな感じのテーブルを作ってみた。
create table book(
pref_cd int(6) auto_increment,
title varchar(50),
author varchar(50),
isbn varchar(20),
imgurl_medium varchar(100),
imgurl_large varchar(100),
primary key(pref_cd)
);
mysqlの管理はphpmyadminでもできるようなので、以下のサイトを参考に新規ユーザの作成や権限の委譲を行った。
参考:adminweb - MySQLの設定と利用
phpからmysqlに接続するためにPDOを使用した。PDOはphpからmysqlへの接続を簡単にしてくれるAPIのような感じだと思われる。一応、コードをのせておく。
----------------------------------------------------------
// setting mysql parameter
$dsn = 'mysql:dbname=DBNAME;host=localhost;charset=utf8';
$user = 'USER';
$password = 'PASSWORD';
try{
$dbh = new PDO($dsn, $user, $password);
$sql = "insert into book ('title','author',...) values ('?','?',...)";
$stmt = $dbh->query($sql);
if (!$stmt) {
die('INSERT query missed'.mysql_error());
}
if ($dbh == null){
print('miss connection<br>');
}else{
print('success connection<br>');
}
}catch (PDOException $e){
print('Error:'.$e->getMessage());
die();
}
-----------------------------------------------------------------
参考:phpbook - PDOの利用
書籍情報の獲得は過去エントリを参考にして行った。
このコードを使うことで、phpとmysqlの接続はできたが、titleとauthorに日本語を格納する際に文字化けが生じてしまった。様々なサイトを参考に色々いじった結果、なんとか日本語で保存できるようになった。正直、どれが効いたのかわからないので、一応修正した箇所を記録しておく。
【my.conf】
[client]
[mysqld]
[mysqldump]
[mysql]
【php.ini】
最終的に、mysqldにskip-character-set-client-handshakeを追加することで日本語保存が可能になった。なお、phpファイルの記述形式もutf-8である。
書籍情報の獲得は過去エントリを参考にして行った。
このコードを使うことで、phpとmysqlの接続はできたが、titleとauthorに日本語を格納する際に文字化けが生じてしまった。様々なサイトを参考に色々いじった結果、なんとか日本語で保存できるようになった。正直、どれが効いたのかわからないので、一応修正した箇所を記録しておく。
【my.conf】
[client]
default-character-set = utf8
[mysqld]
character_set_server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
default-character-set = utf8
skip-character-set-client-handshake
[mysqldump]
default-character-set=utf8
[mysql]
default-character-set=utf8
【php.ini】
default_charset= "utf-8";
最終的に、mysqldにskip-character-set-client-handshakeを追加することで日本語保存が可能になった。なお、phpファイルの記述形式もutf-8である。
2012年3月1日木曜日
mysqlのパスワードを再設定する for Mac
このサイトを参考にmysqlを設定していこうとしたら、エラーが出たのでその解決方法をメモ。
$ /Applications/xampp/xamppfiles/bin/mysqladmin -u root -p password ‘wwxxyyzz’ ([Enter])
Enter password: ([Enter])
と入力すると
connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'
とエラーが出る。調べてみると、パスワードをすでに設定しているのに何も入力していないから怒られているみたい。一度もパスワードを設定した記憶はないのに。。。
どうしようもないみたいなので、パスワードを再設定することにした。
手順は公式ページの一番下の方法を参考にしました。
【公式ページの引用】
【手順の説明】
$ /Applications/xampp/xamppfiles/bin/mysqladmin -u root -p password ‘wwxxyyzz’ ([Enter])
Enter password: ([Enter])
と入力すると
connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'
とエラーが出る。調べてみると、パスワードをすでに設定しているのに何も入力していないから怒られているみたい。一度もパスワードを設定した記憶はないのに。。。
どうしようもないみたいなので、パスワードを再設定することにした。
手順は公式ページの一番下の方法を参考にしました。
【公式ページの引用】
Stop mysqld and restart it with the
--skip-grant-tables --user=root
options (Windows users omit the --user=root
portion).
Connect to the mysqld server with this command:
shell> mysql -u root
Issue the following statements in the mysql client:
mysql>UPDATE mysql.user SET Password=PASSWORD('
->newpwd
')WHERE User='root';
mysql>FLUSH PRIVILEGES;
Replace 「
newpwd
」 with the actual root
password that you want to use.
You should be able to connect using the new password.
【手順の説明】
- まず、mysqldを停止する。停止方法は過去エントリを参照。次に、ターミナルから、mysqldをオプションつきで再起動する。($ /Applications/XAMPP/xamppfiles/sbin/mysqld --skip-grant-tables --user=root)すると、[warning]とか色々出てきてターミナルが止まる(というか、コマンド入力しても反応しなくなる)。
- 新しいターミナルを起動し、コマンドラインからmysqlに接続する。($ /Applications/XAMPP/xamppfiles/bin/mysql -u root)
- 公式ページのコマンドをそのまま入力し実行する。
これで、新しいパスワードを使えばmysqlにログインすることができるようになる。
xamppのmysqlがコントロールパネルから起動できなくなるエラー
xamppでインストールしたmysqlを再起動しようとした際に表示されたエラーの解決方法。
【エラー】
Another mysql server is already running!
XAMPP's MySQL can not start while another mysql
server is running. Please turn it off and try again.
ほかのmysqlが動いてるから終了させてからにしろ、と怒られているが、ほかのmysqlに心当たりがない。どうやら、一度起動したときにmysqlのデーモンも起動してたけれど、XAMPPのコントロールパネルじゃそれを終了させることができなかったみたい。
【解決方法】
(1)アプリケーション -> ユーティリティ -> アクティビティモニタを起動
(2)上部にあるプルダウンメニューから「すべてのプロセス」を選択
(3)mysqldを選択し、「プロセスを終了」ボタンをクリック
参考:getStatisfaction
【エラー】
Another mysql server is already running!
XAMPP's MySQL can not start while another mysql
server is running. Please turn it off and try again.
ほかのmysqlが動いてるから終了させてからにしろ、と怒られているが、ほかのmysqlに心当たりがない。どうやら、一度起動したときにmysqlのデーモンも起動してたけれど、XAMPPのコントロールパネルじゃそれを終了させることができなかったみたい。
【解決方法】
(1)アプリケーション -> ユーティリティ -> アクティビティモニタを起動
(2)上部にあるプルダウンメニューから「すべてのプロセス」を選択
(3)mysqldを選択し、「プロセスを終了」ボタンをクリック
参考:getStatisfaction
いまさらXAMPPの開発環境を整える
下記サイトを参考に設定ファイルを色々書き換えた。
参考:TECH-GYM - XAMPP for Mac OS Xを使って開発環境を構築する
【追記】
外部からアクセスできないようにhttpd.confを修正した結果、ローカルホストにアクセスできなくなった。
【追記2】
さらにこのサイトを参考にmy.cnfに変更を加えた
参考:TECH-GYM - XAMPP for Mac OS Xを使って開発環境を構築する
【追記】
外部からアクセスできないようにhttpd.confを修正した結果、ローカルホストにアクセスできなくなった。
【追記2】
さらにこのサイトを参考にmy.cnfに変更を加えた
twitter apiを使ってtweetを検索する
twitterの公式がジェットに頼らず、特定のキーワードに一致するtweetを表示するものを作る。twitter @anywhereと異なり、twitterのapiは登録する必要がない。
http://search.twitter.com/search.atom?q=<query>
このようなアドレスを使ってリクエストを送ると、指定した形式(atom or json)でレスポンスが帰ってくる。search.以下がレスポンスの形式、<query>部分に検索クエリである。
参考:超自己満足プログラミング - Twitter 検索API メモ
参考:Sometime PHP - [Twitter] 検索系APIの使い方
AND検索、時間指定など様々なオプションがある。日本語検索する場合には、UTF-8形式に変換する必要がある。データの取り出し方は以下のサイトを参考にした。
参考:synapse28.com - phpでTwitter APIの検索結果を取得する練習
http://search.twitter.com/search.atom?q=<query>
このようなアドレスを使ってリクエストを送ると、指定した形式(atom or json)でレスポンスが帰ってくる。search.以下がレスポンスの形式、<query>部分に検索クエリである。
参考:超自己満足プログラミング - Twitter 検索API メモ
参考:Sometime PHP - [Twitter] 検索系APIの使い方
AND検索、時間指定など様々なオプションがある。日本語検索する場合には、UTF-8形式に変換する必要がある。データの取り出し方は以下のサイトを参考にした。
参考:synapse28.com - phpでTwitter APIの検索結果を取得する練習
twitter @anywhereを使ってtweerboxを設置する
twitter @anywhereはJavascriptのAPIだと思う。
@anywhereを使えば、つぶやき投稿画面やtwitterへのサインインなどの機能を”数行のコードで”自分のブログやホームページに設置することができる。
twitter @anywhereへの登録や各機能を設置するためのコードはとても簡単である。
参考:Rewish - Twitterの機能をJSで簡単に導入できる「@Anywhere」の使い方メモ
しかし、ローカル環境(XAMPPなど)で@anywhereを動かすためには色々面倒な設定をする必要がある。
@anywhereを使うためには、それを使うアプリケーション名、その説明、アプリケーションのURLなどを登録し、Consumer keyを獲得する必要がある。(おそらく)このConsumer keyを使ってJSファイルを呼び出し、@anywhereのJSコードを各自のブログやサイトで動作させているようである。
ローカル環境からこのConsumer keyを使ってリクエストを要求していても、しばらくは動作するがすぐに動かなくなる。これは、リクエストを要求しているアドレスとConsumer keyに対応するアドレスが一致しない場合、その要求をシャットダウンする仕様にでもなっているからだと思われる(たぶん)。
ローカル環境でも継続的に@anywhereを動作させるためには、Virtual hostを構築し、そのアドレスを登録時のアプリケーションURLに設定すればいいらしい。
参考:jTweetsAnywhere - @Anywhere Registration Details
このサイトを参考にいくつかの設定ファイルを変更しても、@anywhereは動作しない。足りない部分が2つある。
(1)XAMPPの設定ファイルにはVirtual hostを有効にするか否かを設定する部分があるため、ここを修正する必要がある。
(2)Virtual hostが外部からでもアクセスできるようにアクセス権を変更する必要がある。
参考:きんくまデザイン - [Apache] XAMPP for Macでバーチャルホストを設定する
参考:TOKYO O LIFE - ずばぴたテクニック - MacでWeb開発-(6) XAMPP for MacでWebサイトを運営(Virtual host)
参考:nakachi.me - XAMPP for Mac OS Xでローカル環境構築 〜バーチャルホスト設定〜
これらのサイトを参考に(1)(2)を修正すれば、ローカル環境からでも@anywhereが動作するようになるはず。
@anywhereを使えば、つぶやき投稿画面やtwitterへのサインインなどの機能を”数行のコードで”自分のブログやホームページに設置することができる。
twitter @anywhereへの登録や各機能を設置するためのコードはとても簡単である。
参考:Rewish - Twitterの機能をJSで簡単に導入できる「@Anywhere」の使い方メモ
しかし、ローカル環境(XAMPPなど)で@anywhereを動かすためには色々面倒な設定をする必要がある。
@anywhereを使うためには、それを使うアプリケーション名、その説明、アプリケーションのURLなどを登録し、Consumer keyを獲得する必要がある。(おそらく)このConsumer keyを使ってJSファイルを呼び出し、@anywhereのJSコードを各自のブログやサイトで動作させているようである。
ローカル環境からこのConsumer keyを使ってリクエストを要求していても、しばらくは動作するがすぐに動かなくなる。これは、リクエストを要求しているアドレスとConsumer keyに対応するアドレスが一致しない場合、その要求をシャットダウンする仕様にでもなっているからだと思われる(たぶん)。
ローカル環境でも継続的に@anywhereを動作させるためには、Virtual hostを構築し、そのアドレスを登録時のアプリケーションURLに設定すればいいらしい。
参考:jTweetsAnywhere - @Anywhere Registration Details
このサイトを参考にいくつかの設定ファイルを変更しても、@anywhereは動作しない。足りない部分が2つある。
(1)XAMPPの設定ファイルにはVirtual hostを有効にするか否かを設定する部分があるため、ここを修正する必要がある。
(2)Virtual hostが外部からでもアクセスできるようにアクセス権を変更する必要がある。
参考:きんくまデザイン - [Apache] XAMPP for Macでバーチャルホストを設定する
参考:TOKYO O LIFE - ずばぴたテクニック - MacでWeb開発-(6) XAMPP for MacでWebサイトを運営(Virtual host)
参考:nakachi.me - XAMPP for Mac OS Xでローカル環境構築 〜バーチャルホスト設定〜
これらのサイトを参考に(1)(2)を修正すれば、ローカル環境からでも@anywhereが動作するようになるはず。
2012年2月29日水曜日
2012年2月28日火曜日
書籍画像をクリックするとその詳細情報をモーダルウィンドウに表示する
書籍画像をクリックした際にモーダルウィンドウを表示する。
モーダルウィンドウには書籍に応じたコンテンツが表示される。
下記サイトを参考にモーダルウィンドウを実装してみた。
参考:almondlab. - jQueryでモーダルウィンドウを作成。
書籍画像をクリックした際に、該当書籍のISBN番号を渡す。
ISBN番号の取得方法:
(1)ResponseGroupにItemAttirubutesを設定
(2)ItemSearchで情報を取得し任意の変数に格納
(3)(任意の変数)['Item'][$i]['ItemAttributes']['ISBN']で取得
参考:NOBODY:PLACE - 【メモ】PEAR::Services_Amazonを使って商品情報を取得(署名認証対応)
PHP間のISBN番号の受け渡し方法:
<送信側>URLにパラメータを追加->www.~~.php?パラメータ名=値
<受信側>$_GET["パラメータ名"]に値が入ってる
ISBN番号によるアイテム情報取得は以下のページを参考にした。
参考:EC studio - Amazon APIを使って簡単にランキングを作成する
モーダルウィンドウには書籍に応じたコンテンツが表示される。
下記サイトを参考にモーダルウィンドウを実装してみた。
参考:almondlab. - jQueryでモーダルウィンドウを作成。
書籍画像をクリックした際に、該当書籍のISBN番号を渡す。
ISBN番号の取得方法:
(1)ResponseGroupにItemAttirubutesを設定
(2)ItemSearchで情報を取得し任意の変数に格納
(3)(任意の変数)['Item'][$i]['ItemAttributes']['ISBN']で取得
参考:NOBODY:PLACE - 【メモ】PEAR::Services_Amazonを使って商品情報を取得(署名認証対応)
PHP間のISBN番号の受け渡し方法:
<送信側>URLにパラメータを追加->www.~~.php?パラメータ名=値
<受信側>$_GET["パラメータ名"]に値が入ってる
ISBN番号によるアイテム情報取得は以下のページを参考にした。
参考:EC studio - Amazon APIを使って簡単にランキングを作成する
2012年2月27日月曜日
Amazon APIを使ってアマゾンのセールスランキングを取得
Service_Amazonを用いてAmazonの書籍売り上げランキングを取得し、表示させてみた。
下記サイトのサンプルを参考に作成した。
参考:ITのある生活 - Service_Amazonでアマゾンのランキングを表示(動作確認編)
このサンプルではDVDのランキングを作成している。書籍のランキングを取得するために、$browse_nodeと$search_indexを変更した。$search_indexは対象とするカテゴリ(本、DVDなど)の指定、$browse_node(和書、洋書、SFなど)はより詳細なカテゴリの指定に使うらしい。
参考:ajaxtower - 詳細なカテゴリーの指定(BrowseNode)
下記サイトのサンプルを参考に作成した。
参考:ITのある生活 - Service_Amazonでアマゾンのランキングを表示(動作確認編)
このサンプルではDVDのランキングを作成している。書籍のランキングを取得するために、$browse_nodeと$search_indexを変更した。$search_indexは対象とするカテゴリ(本、DVDなど)の指定、$browse_node(和書、洋書、SFなど)はより詳細なカテゴリの指定に使うらしい。
参考:ajaxtower - 詳細なカテゴリーの指定(BrowseNode)
2012年2月25日土曜日
Amazon APIを使って書籍情報を獲得
PHPでAmazon APIを動かしてみる。
とりあえず、下記サイトを参考に実装してみた。
技術ブログ - Amazon APIを使って簡単にランキングを作成する
Amazon Web Serviceに登録後、PEARのServices_Amazonライブラリをインストールする必要がある(らしい)。
しかし、このサイトで解説しているインストール方法はWindowsバージョン。
Mac OSX Lionのローカル環境(XAMPP)にインストールする場合でもほとんど変わらないが、一応手順を記載しておく。
【手順】
$cd /Applications/xampp/xamppfiles/lib/php/pear
$sudo pear install -a HTTP_Request2-alpha
$sudo pear install -a Services_Amazon-beta
※HTTP_Request2とServices_Amazonをインストールする順番を逆にすると、インストールエラーが起こるため注意が必要。
次に上記サイトのサンプルコードをコピーしxampp上で実行してみたが動かない。
Services_Amazonのクラスを呼び出す部分(include_once 'Services/Amazon.php';)でエラーが出ており、どうもServices/Amazon.phpがないらしい。
確かに、インストールしたと思われる場所(/Applications/xampp/xamppfiles/lib/php/pear)を見てもServices/Amazon.phpがない。
どうやら、上記の手順でインストールした場合、各パッケージはcurrentフォルダではなく/usr/lib/php/pearにいるらしい。
参考:endo yuta blog - XAMPPでpearコマンドを使う on mac
そこで、このサイトを参考に/Applications/XAMPP/xamppfiles/etc/内のphp.iniを編集(include_pathに/usr/lib/php/pearを追加)した。
include_pathはパッケージを呼び出す際に参照するフォルダを設定している気がする。
パスはいくつでも設定することができるようなので、可能性があるフォルダは全部ぶち込めばいいと思う。ちなみに、デフォルトの.iniファイルは読み出ししかできないため、コピーしてから編集し置換した。
Apacheを再起動し、再度実行すると
”リクエストには、必要なパラメータが含まれていません。必要なパラメータには、AssociateTagなどがあります。”
とのエラーが・・・
2011年7月ごろにAmazonAPIの仕様が変更になったらしく、このサンプルコードのままでは動かないらしい。動かすためには、AssociateTagを設定する必要があるとのこと。
AssociateTagとはAmazonアソシエイトのアカウントを作った際に与えられるトラッキングIDのことらしい。Amazonアソシエイトの登録方法については下記サイトを参考にした。
参考:ajaxtower - Amazon Web サービス入門
AssociateTagの設定方法についてはService_Amazonのドキュメントで調べた。
つまり、Services_Amazonのコンストラクタを生成するときに、3つ目の引数として渡してやればいいらしい。
これで、サンプルコードは動きました。
追記
Deprecatedエラーがいっぱい出たりします。
この解決方法については下記サイトを参考にしました。
参考:K氏のCentOSサーバ構築メモ - Deprecated:警告を非表示にする
とりあえず、下記サイトを参考に実装してみた。
技術ブログ - Amazon APIを使って簡単にランキングを作成する
Amazon Web Serviceに登録後、PEARのServices_Amazonライブラリをインストールする必要がある(らしい)。
しかし、このサイトで解説しているインストール方法はWindowsバージョン。
Mac OSX Lionのローカル環境(XAMPP)にインストールする場合でもほとんど変わらないが、一応手順を記載しておく。
【手順】
$cd /Applications/xampp/xamppfiles/lib/php/pear
$sudo pear install -a HTTP_Request2-alpha
$sudo pear install -a Services_Amazon-beta
※HTTP_Request2とServices_Amazonをインストールする順番を逆にすると、インストールエラーが起こるため注意が必要。
次に上記サイトのサンプルコードをコピーしxampp上で実行してみたが動かない。
Services_Amazonのクラスを呼び出す部分(include_once 'Services/Amazon.php';)でエラーが出ており、どうもServices/Amazon.phpがないらしい。
確かに、インストールしたと思われる場所(/Applications/xampp/xamppfiles/lib/php/pear)を見てもServices/Amazon.phpがない。
どうやら、上記の手順でインストールした場合、各パッケージはcurrentフォルダではなく/usr/lib/php/pearにいるらしい。
参考:endo yuta blog - XAMPPでpearコマンドを使う on mac
そこで、このサイトを参考に/Applications/XAMPP/xamppfiles/etc/内のphp.iniを編集(include_pathに/usr/lib/php/pearを追加)した。
include_pathはパッケージを呼び出す際に参照するフォルダを設定している気がする。
パスはいくつでも設定することができるようなので、可能性があるフォルダは全部ぶち込めばいいと思う。ちなみに、デフォルトの.iniファイルは読み出ししかできないため、コピーしてから編集し置換した。
Apacheを再起動し、再度実行すると
”リクエストには、必要なパラメータが含まれていません。必要なパラメータには、AssociateTagなどがあります。”
とのエラーが・・・
2011年7月ごろにAmazonAPIの仕様が変更になったらしく、このサンプルコードのままでは動かないらしい。動かすためには、AssociateTagを設定する必要があるとのこと。
AssociateTagとはAmazonアソシエイトのアカウントを作った際に与えられるトラッキングIDのことらしい。Amazonアソシエイトの登録方法については下記サイトを参考にした。
参考:ajaxtower - Amazon Web サービス入門
AssociateTagの設定方法についてはService_Amazonのドキュメントで調べた。
つまり、Services_Amazonのコンストラクタを生成するときに、3つ目の引数として渡してやればいいらしい。
これで、サンプルコードは動きました。
追記
Deprecatedエラーがいっぱい出たりします。
この解決方法については下記サイトを参考にしました。
参考:K氏のCentOSサーバ構築メモ - Deprecated:警告を非表示にする
2012年2月12日日曜日
eclipse error : workspace in use or cannot be created choose a different one
【問題】
workspaceを選択すると怒られる。
【環境】
mac
【解決法】
指定しているフォルダを選択->情報を見る->共有とアクセス権の右下の鍵をクリックし、ロックを解除->adminのアクセス権を読み/書きに変更
workspaceを選択すると怒られる。
【環境】
mac
【解決法】
指定しているフォルダを選択->情報を見る->共有とアクセス権の右下の鍵をクリックし、ロックを解除->adminのアクセス権を読み/書きに変更
phpプロジェクトの作り方
(1)eclipseを起動
(2)ワークスペースとして“/Applications/XAMPP/xamppfiles/htdocs/フォルダ名”を選択
htdocsフォルダがxamppのホームディレクトリ。
例えば、“htdocs/test”ならhttp://localhost/testでアクセスできるらしい。
あとは下記サイトを参考。
http://d.hatena.ne.jp/acid-panda/20101229/1293646938
(2)ワークスペースとして“/Applications/XAMPP/xamppfiles/htdocs/フォルダ名”を選択
htdocsフォルダがxamppのホームディレクトリ。
例えば、“htdocs/test”ならhttp://localhost/testでアクセスできるらしい。
あとは下記サイトを参考。
http://d.hatena.ne.jp/acid-panda/20101229/1293646938
macにxamppをインストール
eclipseにPTDプラグインを入れたので、今度はローカルでPHPサイトを動作させるためにXAMPPをインストールする。
XAMPPはPHP+MySQL+Apacheが入ったとても便利なもの(だと思う)。
以下のサイトを参考にしながらmacにインストールしていく。
参考:XAMPPとeclipseでローカルにPHP開発環境を構築する
http://www.apachefriends.org/jp/xampp-macosx.htmlにアクセスし、XAMPPの最新バージョン(XAMPP Mac OS X 1.7.3:2012/2/12)をダウンロードする。
インストールが完了すれば、LaunchPadにxampp controlが登録される。
xampp controlを起動し、apache、MySQL、FTPをstartする。
その後、ブラウザでhttp://localhostにアクセスすれば、XAMPPのトップページが表示される。
XAMPPはPHP+MySQL+Apacheが入ったとても便利なもの(だと思う)。
以下のサイトを参考にしながらmacにインストールしていく。
参考:XAMPPとeclipseでローカルにPHP開発環境を構築する
http://www.apachefriends.org/jp/xampp-macosx.htmlにアクセスし、XAMPPの最新バージョン(XAMPP Mac OS X 1.7.3:2012/2/12)をダウンロードする。
インストールが完了すれば、LaunchPadにxampp controlが登録される。
xampp controlを起動し、apache、MySQL、FTPをstartする。
その後、ブラウザでhttp://localhostにアクセスすれば、XAMPPのトップページが表示される。
eclipseにPDT(PHP Development Tools )をインストール
eclipseでPHPの開発環境を構築するために、eclipseのプラグインであるPDT(PHP Development Tools)をインストールする。
(1)eclipseを起動する
(2)Help->Install New Softwareをクリック
(3)Work with: のプルダウンメニューからIndigoを選択する->しばらく待つ
自分がやったときは15分くらい待ちました。
(4)Programming Language->PHP Development Toolsにチェックを入れてNextボタンを押す。
参考サイト:http://wiki.eclipse.org/PDT/Installation
(1)eclipseを起動する
(2)Help->Install New Softwareをクリック
(3)Work with: のプルダウンメニューからIndigoを選択する->しばらく待つ
自分がやったときは15分くらい待ちました。
(4)Programming Language->PHP Development Toolsにチェックを入れてNextボタンを押す。
参考サイト:http://wiki.eclipse.org/PDT/Installation
macにeclipseをインストール
(1)eclipseのダウンロードページにアクセス。
http://www.eclipse.org/downloads/
(2)Eclipse IDE for Java EE Developersをダウンロード。
32bitか64bitかはmacのバージョンによって異なるみたい。
http://www.eclipse.org/downloads/
(2)Eclipse IDE for Java EE Developersをダウンロード。
32bitか64bitかはmacのバージョンによって異なるみたい。
Lionで動作環境を確かめる方法は以下のサイトを参考にしました。
参考:Mac(Lion)にeclipse3.7(Indigo)をインストールして日本語化
(3)ダウンロードしたファイルを解凍
ターミナル(Finder->アプリケーション->ユーティリティ)を起動し、以下のコマンドを入力。
$ tar -xvf ~/Downloads/eclipse-jee-indigo-SR1-macosx-cocoa-x86_64.tar -C /Applications
インストールが完了すると、LaunchPadの中にeclipseのアイコンが表示されるようになる。
2012年2月9日木曜日
登録:
投稿 (Atom)