Mac OS X 起動時にVirtualBox上のゲストOSを自動的に起動する

VirtualBox.jpg ローカルサーバを毎回手動で起動するのが面倒だったので、自動的に起動するようにしてみました。 ググって試行錯誤したんですが上手く行かず、結局こんな方法に。

1. シェルスクリプトを用意する

配置する場所はホーム直下で良いと思います。非表示フォルダではないところで。 ファイル名は適当で大丈夫です。

runvm.command

#!/bin/sh

vboxmanage startvm hogehoge --type headless

killall Terminal
「hogehoge」はVM名です。環境に合わせて設定してください。 「killall Terminal」は処理が正常に実行されたらターミナルを閉じる設定です。これがないと、実行後にターミナルが残ってしまって鬱陶しいので。

2. ログイン時に実行されるよう設定する

「システム環境設定 > ユーザとグループ」を開き、ユーザーを選択。「ログイン項目」タブを表示して、上で用意したシェルスクリプトを登録。 以上で終わり。 やり方は色々あるみたいだし、これが正しい方法とは思えないけれど、上手く出来なかったので。 もう少し解ってる人は、もう少しきちんとした方法をとるべきだと思います。

参考記事

shell – Macでログイン時にスクリプトを実行する(Automator不使用) – Qiita OSX のターミナルを終了時に自動で閉じたい – Windows 2000 Blog

参考にしたかったけど上手く動かせなかった記事

VirtualBox上のゲストOSのブート&スナップショット撮影の自動化 – まんぼう日記 Mac OS Xで使って便利な「ログインフック」 – builder by ZDNet Japan OSX – OS X で起動時に任意のコマンドを実行する – Qiita

続きを読む

楽天市場の商品ページにPHPでの処理結果を表示させる

rms.jpg 色々制約がある楽天市場の商品ページ。通常だとJavaScriptも使えませんが、店舗用のサーバサービスである「楽天GOLD」を使うとJavaScriptが使えます。また「楽天GOLD」のページであれば、楽天市場のページにiframeを使って埋め込むことも可能です。 楽天GOLDでは基本的にhtmlしか使えないので、基本的にJavaScriptでの処理になります。それでやっても良いんですが、楽天GOLDは基本的にファイルサーバ的なサービスなので、処理系を作るのには向いてません。なので、プログラム処理する部分はサーバを借りてそこに置くしかありません。 で、結局流れとしては、

[自サーバ] プログラム処理して結果出力 ↓ [楽天GOLD] Ajaxで出力を取得して表示 ↓ [楽天市場] 楽天GOLDのページをiframe使って商品ページに埋め込む
という感じ。

注意点

自サーバの出力を取得するためには、自サーバ側でクロスドメインを許可しておく必要があります。詳しくはこの辺を参考に。 続 クロスドメインで使う XMLHttpRequest と CORS の話 | 日頃の行い PHPでやるんなら、出力時にヘッダを付加しておくのが便利です。
header('Access-Control-Allow-Origin: *');
Ajax取得はjQueryで適当にやりました。以下、サンプルコード。
$(document).ready(function() {
$.ajax({
url : 'http://hogehoe/sample.php',
type : 'GET',
dataType : 'html',
crossDomain : true,
}).done(function(data, textStatus, jqXHR) {
$("#result").append(data);
});
});
楽天市場は色々と使いづらいけど、やってみればいろいろやり方はあるんだなー

続きを読む

PHPマイクロフレームワーク「Slim」を使ってみた

slim.gif 1度使うと2度とそれ無しの生活に戻れない、それがフレームワーク。 PHPで代表的なフレームワークと言えば、「Zend Framework」とか「Symfony」とか「CakePHP」とか「FuelPHP」とか。最近だと「Laravel」というフレームワークが人気のようです。 2014年 Webアプリケーションフレームワークトレンド(PHP / Java / Ruby / Python / Perl) – Qiita これらはサービスを提供するのに必要な機能がすべて揃っている、いわゆる「フルスタック」というやつで、それさえ入れればすべて解決する(自分で何かを開発する必要は無い)一方で、インストールするにはある程度の知識と権限が必要。また少しツールを作りたいとか、小さいサービスを作りたいだけとか言った場合には、使わない機能が多すぎて逆にコストが高くなってしまいます。 で、最近流行ってるのは機能は最低限しかないけれども、インストールするコストが低く容量も小さいいわゆる「マイクロフレームワーク」というもの。代表例は「Slim」とか「Silex」とか「Limonade」とか。 今携わっているお仕事は基本「Webデザイナー」なので、がっつりプログラミングすることは少ないのですが、それでも「APIを叩いて業務を効率化したい」みたいな欲求はあるわけで、ローカルに仮想サーバ立ててコーディングしてみたいなこともやっています。でもWebサービスとして大々的に公開するものでは無いので、フレームワークとしては機能も拡張性も最低限でいい。なにより、会社が借りているロリポップ(しかも下から2番目のプランでSSHは使えないし、MySQLは1つしかデータベースを作成出来ない)では、フルスタックのフレームワークを入れるのはなかなかに困難。 というわけで、その場がしのげればいいやと思ってマイクロフレームワークである「Slim」を入れてみたらば、これがなかなか面白くて今やってる仕事の規模ならまあ許せる範囲の機能だったので、軽くだけ紹介しようかと。

続きを読む

Eclipseでgetter/setterの自動生成

gettersetter.jpg macで開発するに当たり、半年くらい「NetBeans」を使っていたのですけど、どうもコード補完の動作が怪しいことがあって、CSSの補完をしなくなってしまうことがあるとか、他のPHPファイルのメソッドを補完してくれないとか(何か設定したら良いんでしょうけどわからなかった)、ちょっと不便に感じてきたのでWindowsで使い慣れた「Eclipse」に戻りました。出戻り。

続きを読む

【メモ】 楽天RMS APIを使ってみるテスト

rms.jpg 仕事の関係で楽天市場関連の作業をしています。 楽天市場には、店舗が自分の出品している商品情報などを取得するAPI(RMS WEB SERVICE)があるのですが、ものがものだけに情報が少なく楽天のドキュメントも最低限しかない(その上、一般ユーザー向けの「楽天ウェブサービス API」と混同しやすい)んですよね。ちゃんと理解してるのは在庫連動ソフトを作ってる会社のエンジニアくらいなのかな。ま、仕方ない。

続きを読む

Google Analytics API v3.0でデータを取得するようにプログラムを改修

毎月投稿している記事に「Access Report」というものがあるんですが、この記事を生成するに当たっては、

  • 前月の「ページビュー」「訪問者」を集計して取得しDBに保存
  • 前月の「アクセスTOP10」などのデータを集計して記事にしてMovableTypeに下書き記事として投稿
という2つのプログラムが動いています。今まで特に問題なく動いていたのですが、今月から突然動かなくなってしまいました。調べてみると、今までの僕のプログラムはGoogle APIの古いバージョンで動いていたようで、廃止予告が出てからいつ止まってもおかしくない状況で、それが5月下旬だったということのようです。全然しらなんだ。 というわけでこれを現行の仕様に合わせて改修する必要があります。

続きを読む

コンテンツの終わりまで読み込むと次のコンテンツを自動的に読み込む(autoload) 【feedpost tips】

jQuery.jpg 先日リリースしたTumblr用ツール「feedpost」で採用している技術を紹介するシリーズ。 5回目はコンテンツの終わりまで読み込むと次のコンテンツを自動的に読み込む仕組み、通称「autoload」とか「autopager」とか言われている仕組みの実装です。

続きを読む

スマートフォンでのタッチアクションを実装するjQueryプラグイン「hammer」 【feedpost tips】

jQuery.jpg 先日リリースしたTumblr用ツール「feedpost」で採用している技術を紹介するシリーズ。4回目はスマートフォンでのタッチアクションを実装するjQueryプラグイン「hammer」。独立版とjQuery版とあるのだけど、その辺はお好みで。ここではjQuery版。導入はとっても簡単で、jQueryと一緒に読み込むだけ。使い方の例は例えばこんな感じ。

続きを読む