blog.kur.jp

バイオリンと山、自転車をこよなく愛するkurのチラシの裏。たまには技術的なことを書いたりするかも知れません。

起動直後に自身のIPを外部に投げつける

BeagleBone BlackだとかRaspberry Piだとか、画面の無いLinux機器を外部から操作しようと思う場合、SSH接続してコマンドを叩く、ってのが一般的かなと思うのですが、SSH接続をしようにもその機器のIPアドレスを知らない事にはどうにもならないわけです。

ボンジュールなどのmDNSでも良いんですが、端末によっては上手く動かない事等もあったため不便を強いられて居ました。と言うことで、起動直後に自身に割り当てられたIPを取得して外部に立てたサーバに投げつけるスクリプトを書きましたので備忘録です。

まず、下記のようなnode.jsスクリプトを作成します。

var os = require('os');
var http = require('http');
console.log(getLocalAddress());
var req = http.get("http://サーバのアドレス/device/端末名/ip/" + getLocalAddress());
function getLocalAddress() {
    var ifacesObj = {}
    var interfaces = os.networkInterfaces();
    if(interfaces.hasOwnProperty("wlan0")){
        interfaces["wlan0"].forEach(function(details){
            if(details.family == "IPv4"){
                ifacesObj = details.address;
            }
        })
    }
    return ifacesObj;
};

ここで作成したnode.jsスクリプトには実行権限を与えるのを忘れないようにして下さい。

/etc/rc.localに下記の一行を追記します。

nodejs 上記で作成したファイルへのパス

以上です。ちなみにサーバ側のコードはどんなんでも良いんですが、こんな感じで動くかと思います。

var http = require('http');
var port = process.env.PORT || 1337;
var ip = "0.0.0.0";
http.createServer(function(req, res) {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
	if(req.url.match(/ip/)){
		ip = req.url;
		res.end('IP: ' + ip);	
	}else{
		res.end('IP: ' + ip);
	}
}).listen(port);

BeagleBone BlackとRaspberry Piで動作確認をしていますが、おそらく他のものでもそのまま、もしくは大きな修正はなく動くんじゃないかと思います。

最後に少しだけ宣伝
本記事でも使用しているRaspberry Piの購入にはRSコンポーネンツさんが大変便利です。配達先が日本国内であればほぼほぼ翌日には届きます。
jp.rs-online.com

Wordpressからはてなブログへの引っ越しに伴うURL変更と301リダイレクト

Wordpressからはてなブログに引っ越ししました。今回はその手順について覚書。と言っても基本的には、下記のサイトだとかを参考にしてもらえれば概要はわかるんじゃないかなと思うので、下記記事にない、ブログ移転に伴うURL変更への対策について。

www.junpeihazama.com

今回行った作業は下記の通り。

  1. Wordpressで記事をXMLとしてエクスポートする
  2. はてなブログ側でそのXMLをインポートする
  3. ドメインの設定を行う
  4. URLが変わってしまったので、リダイレクトの設定を行う

ここで、ドメインの設定を行うためには、はてなブログのProにする必要がある。Proの料金は1ヶ月約1000円、2年払いだと月600円になる。そこまで高くは無いのだけれど、このためだけにProにすべきかは悩むところである。しかしながら、お金を払ってしまえば頑張って更新するような気もするので、これぐらいなら良いかな?って思ってしまったのも事実。

また、記事中の画像に関しては、はてなフォトライフにアップロードし直す方法も紹介されていたりするのだけれど、私は元々のサーバから画像を全部引っ張ってくることにした。いくつか方法が紹介されていたのだけれど、何故か私の場合うまく行かなかったのです。時間があったら将来的に対応するかも知れないけれど。

さて、問題は最後のリダイレクト設定。今回、はてなブログに引っ越しを行うにあたり、URLが変更になっており、このままだと古いURLにアクセスした人には何も表示されなくなってしまうし、何よりグーグルなどで検索してきてくれた人に申し訳ない。そこで、古いURLにアクセスが有った時に、自動的に新しいURLにリダイレクトさせたい。そしてこのリダイレクトには大きく2つの前提条件がある。箇条書きすると下記の通り。

  • ブログのURLがhttp://kur.jpからhttp://blog.kur.jpに変更になっている。
  • ブログ以外(例えば私の自己紹介とか、ポートフォリオなどの固定ページや、画像など)のコンテンツは、http://kur.jpに残す

上記を実現するために、サーバーの.htaccessに下記の内容を書いた。

#php_flag mbstring.encoding_translation off
#php_value default_charset "UTF-8"

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^20.* http://blog.kur.jp/entry%{REQUEST_URI} [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

今回私が追加したのは、下記の部分。

RewriteRule ^20.* http://blog.kur.jp/entry%{REQUEST_URI} [R=301,L]

私の場合、wordpressのブログコンテンツは、URLに年月日が必ず含まれており、(ドメイン名)/2015/10/03/のようになっていたので、最初の2文字が20の場合はブログ記事へのアクセスだと判断してはてなブログに301リダイレクトすることにした。なお、wordpressは.htaccessを気軽に書き換えに来るので、パーミッションの変更を行って、wordpressから.htaccessを書き換えられないようにしている。

このように301リダイレクトしておくと、Googleのクローラなどはコンテンツが移動されたとみなしてインデックスを修正してくれるらしい。事実、いくつかの記事タイトルでGoogleで検索してみると、移転直後は元のURLがインデックスされていたものが現在でははてなブログのURLが表示されている。問題は、引っ越ししたものの、ほんとに更新するのか?と言うところであるのだけれど。

自宅のインターネット回線を光ファイバからWiMAXに

自宅のインターネット回線を光ファイバをWiMAXに変更しました。光ファイバを解約する際には色々と不安もあったものの、結論から書くと相当満足しています。月々の回線維持費が実質2000円程度で済むこと、家でも外でも同じ環境でインターネットが利用出来るなど利便性も上がっています。速度はまぁそれなりですが、意外とこれでもなんとかなるもんです。

以下、そもそも何故、光ファイバからWiMAXに変えようと思ったのかの経緯とか、光ファイバからWiMAXに変えて良かった点、悪かった点を簡単にまとめてみます。

続きを読む

Xperia Z1 f SO-02Fを買って一週間ほど使ってみました。

同じくXperiaのAcro HD SO-03Dからの乗り換えです。Acro HDの発売が2012年3月、Z1 fの発売が2013年12月なので、前回機種変更してから約2年経っている事になります。ちなみにAcro HDを買った時にはXperia AcroHDを一ヶ月ぐらい使ってみて思ったことというエントリを書きました。

前回同様、しばらく使ってみたので感想を書いてみます。もっとも前回のように発売直後に購入した場合とは異なり発売から半年程度経ってからの購入なので、インターネット上にレビュー記事は腐るほどあるのですが。

続きを読む

スケジュール調整用アプリ作ってみた

サイボウズLiveのAPIを叩くアプリとして、スケジュール調整用アプリを作ってみた。とはいえ説明分とかまだ書いてないし、とてもじゃないが万人が使える状態でもないのだが。

スケジュール調整用アプリって、他にも色々既に存在してはいるものの、いくつか不満があるんだけど、そのひとつに、誰が回答していて、誰が回答していないのかわからないと言うこと。これを解決するために、あらかじめ幹事さんが、人数分の解答欄を作っておいて選択してもらうと言う解決方法も無くはないのだけれど、非常にめんどくさい。

そこで、サイボウズLiveのAPIを使ってグループを指定する事で、グループに所属するメンバーの一覧を取得し、並べてやれば、誰が回答していて、誰が回答していないのかすぐにわかるから、あとはメールやら何やらでせっつけば良いよね、と思った次第。

続きを読む

VagrantにインストールしたCentOSから外部へのネットワーク接続が非常に遅い問題

最近、サイボウズLiveが公開しているAPIを叩くアプリケーションを趣味で作っているのだけれども、アプリケーションからサイボウズLiveAPIを叩くのが非常に遅い。OAuthで認証するとき、アクセストークンを取得する時、APIを実際に叩いて情報を取得する時、とにかく全てが遅い。最初はサイボウズLiveAPIが遅いのかと思って諦めて、取得した情報をキャッシュする仕組みだとか、ユーザに遅さを感じさせないようなしくみを作っていたのだけれど、さて実際の環境であるさくらインターネットのVPSにデプロイしてみると、思った以上に早い。あれ、これもしかしてローカルの開発環境の問題か?と気がついて、解決したのでメモ。

続きを読む

プロジェクト運営におけるチャット活用の注意点

何らかのプロジェクトを行う上で、どうすればプロジェクトに携わる人のあいだで円滑にコミュニケーションを取る事ができるかは非常に大きな課題です。

例えば、今年5月に演奏会を行ったガーデンオーケストラでは運営チーム内のやり取りの中でチャットの占める割合は非常に大きく、というかむしろチャットなしでは運営が成り立たないような状態でした。にも関わらず他の楽団の人の話を聞くと、どうもそうでもないらしい。なんでかなーと思ったんだけど、色々話を聞いているうちに、チャットツールの選択と、運用の仕方にいくつかのポイントがあるのかなと気がしてきました。

コミュニケーションツールのひとつとしてチャットを活用することで、リアルタイムなやり取りが可能になるので、いかにしたらチャットを活用出来るかをちょっと考えてみました。

続きを読む