(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を変更する。
登録:
投稿 (Atom)