rep2インストーラ作ってみました

< ※ ご注意 ※ >
rep2インストーラに搭載しているアンインストール機能では dataディレクトリおよびインストーラを残して、その他のディレクトリとファイルを全て削除する仕様になっていますのでご注意ください。同ディレクトリ内にご自身でなにかrep2とは別のファイルを置いていた場合には削除されてしまいます。 → 修正しました。インストールしたファイルおよびディレクトリのみ削除するようになっています。また、当方の作成したスクリプトを実行したことによるいかなる損害も補償いたしかねますので、くれぐれも自己責任でお願い致します。

< rep2インストーラ >
rep2インストーラ作ってみました。プログラムは
https://github.com/mecrazy/rep2installer
の 「Download ZIP」 ボタンでダウンロードしてください。
アップデートにも対応しているので、既にrep2を使用されている方でも導入の意味は十分あるかと思います。

< rep2インストーラのインストール >
ダウンロードしたZIPファイルを解凍してできる “rep2installer.php” をrep2を設置したいディレクトリのルートに設置してください。例えば、rep2を http://abcd.mecrazy.net/rep2/ に設置したい場合は http://abcd.mecrazy.net/rep2/rep2installer.php にインストーラを設置します。

< rep2のインストール >
設置した rep2installer.php にブラウザでアクセスします。
上の例だと http://abcd.mecrazy.net/rep2/rep2installer.php です。
あとは「rep2をインストール」ボタンを押せばインストール完了です。
インストール後に「rep2をインストールしました。続けてホストチェック無効化とインストーラリンクのメインメニューへの追加を実施しますか?」と聞かれますが、セキュリティはともかく簡単に使い始めたい方には「OK」を押すことを推奨します。これによりインターネット経由でのアクセスを許可し、rep2側のメニューへインストーラへのリンクが表示されるようになります。細かなセキュリティ設定をご希望の方はご自分で個別に設定されることをオススメします。

< セキュリティ >
このインストーラでは既読スレや取得済みデータ ( dataディレクトリ内のファイル ) は削除する機能をつけていないので、万が一他人に不正アクセスされてrep2をアンインストールされてもデータが消えることはありません。それでも rep2installer.php というURLは当ブログで公開されているため特定されてしまうリスクがあります。そのリスクを減らすためには、インストーラにある 「インストーラのURLを複雑にする」 を実施するようにしてください。ただし、プログラムでも警告が出るようにしてありますが、事前に rep2のメインメニューにインストーラへのリンクを追加 を実施しないと、どこからもインストーラへのリンクがなくなりアクセスできない事態に陥ってしまいますのでご注意ください。

DebianユーザへWebminのススメ

< “Webmin”とは? >
“Webmin”とはPerlで書かれたWEBベースの設定ツールです。Linux / UNIX / Windows / OSX などで動きます。私はDebianをインストールするときは”Webmin”もインストールするようにしています。設定ファイルの場所を覚える必要がなくなるため、主に設定ファイルの編集のために使用しています。サービスの停止や開始といったことも行えます。全てを説明するのは難しいですが、他にも”Webmin”には便利な機能がたくさんあります。”Webmin”についてもっと詳しく知りたい方は Webmin – Wikipediahttp://www.webmin.com/ を見てみると良いかもしれません。

< Debian上でのインストール >
最新版を http://www.webmin.com/ でチェックしてください。以下のコマンドのURLは最新バージョンのものに差し替えてください。コマンドはroot権限で実行します。

root@myhost:~# cd /tmp
root@myhost:/tmp# wget http://prdownloads.sourceforge.net/webadmin/webmin_1.690_all.deb
root@myhost:/tmp# dpkg -i webmin_1.690_all.deb
root@myhost:/tmp# apt-get -f install

dpkg -i webmin_1.690_all.deb” を実行した後にワーニングが表示されるかもしれません。その場合 “apt-get -f install” を実行してwebminに必要なその他のソフトウェアもあわせてインストールしてください。

< セキュリティについて >
インストールした状態では同じネットワークセグメントからしか接続できないようになっています。私の場合セキュリティを考慮し、この設定は変更しないようにしています。そのため常にSSHによるポート転送やなんらかのVPNなどを経由して接続するようにしています。外部(インターネット)から直接webminに接続できる必要はありません。

< SSHによるポート転送 >
ユーザ名が “abcd” でサーバのドメインが “example.com” だったとすると、SSHポート転送を使用するログインコマンドは以下のようになります。

$ ssh -L 10000:localhost:10000 abcd@example.com

これは Linux / UNIX / OSX の場合のコマンドです。ドメインのかわりにIPアドレスを使用することも可能です。

< Webminへのログイン >
お持ちのウェブブラウザを使用して “https://localhost:10000/” にアクセスしてください。以下のような「接続の安全性を確認できません」的なメッセージが表示されるかと思います。
untrusted_001_ja
Firefoxの場合は「例外を追加」を押して進んでください。
untrusted_002_ja
初回はrootユーザでのログインが必須となりますが、もしwebminへのログインにrootユーザを使いたくない場合は、webmin用のユーザを追加することが可能です。
webmin_login

< どの言語をお使いですか? >
webminをインストールしたままの状態では英語になっています。デフォルト ( 全ユーザ共通 ) の言語設定を変更したい場合は以下の項目を設定してください。
[ Webmin ] – [ Webmin Configuration ] – [ Language ] ( 英語 )
webmin_change_language_001
[ Webmin ] – [ Webmin 設定 ] – [ 言語 ] ( 日本語 )
webmin_change_language_001_ja
上記の設定でデフォルト ( 全ユーザ共通 ) の言語設定の変更が可能です。webminユーザ別の言語やテーマを変更したい場合は以下の項目を設定してください。
[ Webmin ] – [ Change Language and Theme ] ( 英語 )
webmin_change_language_002
[ Webmin ] – [ 言語とテーマの変更 ] ( 日本語 )
webmin_change_language_002_ja

< Webminテーマ >
webmin用ユーザの追加について説明したいのですが、その前にこの解説のキャプチャで使用しているテーマについて説明する必要があるかと思います。
[ Webmin ] – [ Webmin 設定 ] – [ Webmin テーマ ]
Webminのユーザインタフェースを選択可能です。自分はいつも “MSC.Linux Theme” を使用しています。お好きなテーマをお選びください。ただし、この記事の内容に従って作業する間だけは “MSC.Linux Theme” にしておくことをオススメします。
webmin_theme_ja

< システムユーザの追加 >
私の場合いつもwebminユーザを追加する前にシステムユーザを追加しています。UNIX認証を使用してログインするのが目的です。以下の画面でOSユーザを追加することができます。”adduser” コマンドと同等の機能です。
[ システム ] – [ ユーザおよびグループ ] – [ 新しいユーザを作成 ]
私の場合、パスワード以外の設定はそのままにしています。
webmin_users_ja

< Webminユーザの追加 >
以下の設定でWebminユーザの追加が可能です。Webminユーザには許可する操作を選択可能です。自分の場合、パスワードには「UNIX認証」を使用するようにしています。
[ Webmin ] – [ Webmin ユーザ ] – [ 新しいWebminユーザを作成 ]
Webminユーザ作成後は新しいWebminユーザで再ログインすると良いでしょう。
webmin_add_webminuser_ja
Webminユーザ画面下の方には以下のようなモジュール選択があるかと思います。
webmin_select_modules_ja
管理者のように全ての設定変更を許可したい場合は「全て選択」を押して全ての機能を選択すると良いです。

< システムとサービスの制御 >
[ システム ] – [ 起動およびシャットダウン ]
同ナビゲーション先のページ下部が以下のキャプチャです。
webmin_control_services_ja

< Webminモジュールについて >
Webminモジュールについての説明は時間のあるときにこの投稿の更新または別の投稿として書いていこうかと思います。

JSONP形式で新バージョンのGoogleスプレッドシートの内容を取得

< 注意 >
このページの投稿内容に従ってWEBサイトを公開すると、Gmailアドレスが一般公開のJSONPファイルに記載されてしまうため、公開専用のGoogleアカウントを新たに取得することをお勧めします。

< Googleスプレッドシート >
旧バージョンではXMLやJSONなどさまざまな形式で公開する機能が提供されていましたが、新しいバージョンになってから取得できなくなっていました。 …… と思っていたのですが、StackOverflowに興味深い投稿を見つけました。
Unable to publish specific cells in new Google Spreadsheets – StackOverflow
JSONPで取得できる …… えJSONP!?クロスドメインで取得可能なようですww
StackOverflowの回答によるとAPI自体は新しいものではないようです。私は気にしませんが、気に入らない方は使用しない方が良いかもしれません。

< URLフォーマット >
↓こんな感じです。

https://spreadsheets.google.com/feeds/cells/[ スプレッドシートのキー ]/od6/public/values?min-row=[ 開始行番号 ]&max-row=[ 終了行番号 ]&min-col=[ 開始列番号 ]&max-col=[ 終了列番号 ]&alt=json-in-script&callback=[ コールバック関数名 ]

< どうやって使う? >
JSONPフォーマットなので特にパーサなども必要とせずJavascriptから使用可能です。個人的にはもう少し便利に使用したいので、ページ指定の引数をGETリクエストパラメータに変換するスクリプトを作ろうかと思います。

< jQueryプラグイン >
jQueryプラグインを作ってみました。ネーミングは適当ですが “generateGoogleJsonpUri” というものです。
generateGoogleJsonpUri – github
↓こちらがブログフレームワーク的に使用してみたサンプルです。
https://mecrazy.net/sample/generateGoogleJsonpUri/
このプラグインを使用すればシートの内容を取得し2次元配列に変換可能ですので、お好きなHTMLと組み合わせて使用できるかと思います。

< 使い方 – 定義 >
定義は

var test = $.genJsonpGDU("スプレッドシートのキー");

もしくは

var test = $.genJsonpGDU({key:"スプレッドシートのキー"});

のような感じです。

スプレッドシートのキーは以下のキャプチャにもあるようにURLに含まれているので簡単に特定できます。
spreadsheet_sample_001
このキャプチャではURLは “https://docs.google.com/spreadsheets/d/1IG2QEOXehU01b6DoMQi19CvFpm2EZJOUM2y4lqXKduw/edit#gid=0” となっており、スプレッドシートのキーは “1IG2QEOXehU01b6DoMQi19CvFpm2EZJOUM2y4lqXKduw” です。ご自身の使用したいシートのキーを取得してみてください。

< 使い方 – ページング設定 >

test.pager({
  startRow:2,//開始行番号 ( 必須 )
  minCol:2,//開始列番号 ( 必須 )
  maxCol:7,//終了列番号 ( 必須 )
  recsPerPage:5//1ページで読み込む行数 ( 任意 )
});

上の設定と下のテーブルを比較してみてください。1ページ目として読み込むのがピンクの範囲で、2ページ目として読み込まれるのは緑の範囲です。”B2:G2″ が最初の行で、 “B6:G6” が5番目の行といった具合です。.

A1 B1 C1 D1 E1 F1 G1 H1
A2 B2 C2 D2 E2 F2 G2 H2
A3 B3 C3 D3 E3 F3 G3 H3
A4 B4 C4 D4 E4 F4 G4 H4
A5 B5 C5 D5 E5 F5 G5 H5
A6 B6 C6 D6 E6 F6 G6 H6
A7 B7 C7 D7 E7 F7 G7 H7
A8 B8 C8 D8 E8 F8 G8 H8
A9 B9 C9 D9 E9 F9 G9 H9
A10 B10 C10 D10 E10 F10 G10 H10
A11 B11 C11 D11 E11 F11 G11 H11
A12 B12 C12 D12 E12 F12 G12 H12
A13 B13 C13 D13 E13 F13 G13 H13

< 使い方 – ページURLの取得 >
1ページ目のURLはこんな感じで取得します。

var pageUrl = test.page(1);

< 使い方 – Ajax通信 >
“test.ajax” の引数は jQuery.ajax の引数と全く同じですので、 “http://api.jquery.com/jQuery.ajax/” を参照ください。

test.ajax({
  url:test.page(1),
  success:function(json){
    console.log(json);
  }
});

前のページの有無や次のページの有無をコールバックのsuccess関数内で判定したい場合は “test.get()” を使用してください。

test.ajax({
  url:test.page(1),
  success:function(json){
    console.log(json);
    var param = test.get();
    if(param.pager.prev){
      console.log('前のページあり');
    }else{
      console.log('前のページなし');
    }
    if(param.pager.next){
      console.log('次のページあり');
    }else{
      console.log('次のページなし');
    }
  }
});

< 使い方 – JSONから2次元配列への変換 >
GoogleのJSONレイアウトは結構階層が深いのでセルを2次元配列に変換する関数 “test.jsonToArr” を実装してみました。

test.ajax({
  url:test.page(1),
  success:function(json){
    var arr2d = test.jsonToArr(json);
    console.log(arr2d);
  }
});

< 使い方 – 変数キャッシュ >

test.set({cache:true});

ページング機能を使用した際にキャッシング機能を有効にするかどうかの設定です。デフォルトでは20分おきにJSONPファイルをチェックし更新日が変更されていたらキャッシュをクリアします。チェックする間隔を指定したい場合は以下のようにしてください。

test.set({
  cache:true,
  cacheInterval:{
    sec:0,min:50,hour:0
  }
});

Panasonic RP-HJE150 と SONY EP-EX11 を組み合わせて安くてそこそこの音質のイヤホン

ちょっと趣向の違う内容を書いてみます。イヤホンについてです。

< 高額イヤホンやめました >
イヤホンは使っていれば断線するものです。私はSHUREのウン万もするモノを使っていた時期があったのですが、たまに断線したときでも突然音楽が聞けなくなることには耐えられず、近くの大型量販店で同じ製品を通販より高い価格でも買ってしまう ….. という浪費をしていました。出費もそうですが入手しやすさともちろん音質も考慮しつつアレコレ試して調べて落ち着いたのがPanasonicのイヤホンとSONYのイヤーピースの組み合わせでした。私もたいした耳を持っている自信もないので音質などはご自分で確認頂くのが間違いないかと思います。安いですし。

< SONYイヤーピース >
SONY ハイブリッドイヤーピース – EP-EX11シリーズ
SS,S,M,L,LLと5種類のサイズがあるので、ご自分の耳に合ったものを選んでみてください。家電量販店では500円前後で売っているかと思います。4個入りですので残りは予備として取っておくか、イヤホンごと2セット購入して完成品を予備として持っておくのも良いかと思います。

< Panasonicイヤホン >
実は特定のモデルに限定するわけではなく、Panasonicの多くのモデルが対応可能です。私が試したのは RP-HJE120RP-HJE150RP-HJS150RP-TCM19 の4モデルでどれも良好な音質でした。RP-HJE150は量販店に行けばどこでも売っているのが心強いです。RP-HJE120はたまにコンビニで売っていたりします。

< RP-HJE120 >
コード長1.1mのシンプルなイヤホン。コンビニで1200円くらいで売っていた気がします。日本のPanasonicサイトに商品ページはありませんでした。日本ではコンビニ限定品かもしれません。海外版Panasonicサイトには商品ページもあり。直販も行っているようです。
Panasonic RP-HJE120-K – RP-HJE120K Earbud Headphone

< RP-HJE150 >
コード長1.2mのシンプルなイヤホン。量販店では1000円くらいで買えるかと思います。
価格.com – パナソニック RP-HJE150 価格比較

< RP-HJS150 >
60cmのショートコードのイヤホン。量販店では1000円くらいで買えるかと思います。
価格.com – パナソニック RP-HJS150 価格比較

< RP-TCM19 >
スマートフォン対応マイク&リモコン付きイヤホン。こちらはケーブルが細めなので断線に気を付けてください。RP-HJC19はRP-TCM19のiPod/iPhone/iPad専用版です。
価格.com – パナソニック RP-TCM19 価格比較
価格.com – パナソニック RP-HJC19-W [ホワイト] 価格比較

< PanasonicイヤホンにSONYのイヤーピースを装着 >
ぶっちゃけつけるだけです。RP-HJE120RP-HJE150RP-HJS150の場合はキツめになっているのでちゃんと奥まで挿せばまず抜けることはないと思います。RP-TCM19の場合は少し緩めですがそれでも使用に問題は無い範囲だと思います。

RP-HJE150からイヤーピースを取った状態です。
step_001

EP-EX11を裏返します、この方が装着しやすいです。
step_002

強引に挿入します。
step_003

裏返したイヤーピースを戻せば完成です。
step_004

Bootstrap 3用ベースHTML生成プログラム

< これは何? >
Bootstrap 3用のベースとなるHTMLを生成します。作成時にはオプションを指定可能です。私自身も同じものをいつも使っています。よかったらブックマークして使ってみて下さい。


< HTML生成プログラム >
タイトル :
言語コード :
Bootstrapバージョン :
古いIEとの互換性を維持する :
ナビゲーションバーを上部固定にする :
フッタを最下部固定にする :
jQueryのCDNロード失敗を考慮する ( Failover ) :
jQuery UIのCDNロード失敗を考慮する ( Failover ) :
backbone.jsを使用する :
underscore.jsを使用する :
bootboxを使用する :

“古いIEとの互換性を維持する” で “はい” を選択した場合は必ず “bootstrap.min.css” と “respond.min.js” をHTMLファイルと同じドメインのサーバ上に設置してください。基本的に “respond.min.js” はCDNや他ドメインに置いた状態では正常に動作しません。

< スクリプト >
ここで生成するHTMLで使用しているスクリプトは下記リンクからダウンロード可能です。お好みでサーバ上に設置したりしてHTMLのパスを書き換えてしまってください。
Bootstrap
jQuery
jQuery UI
backbone.js
underscore.js
bootbox
html5shiv
Respond.js
( BootstrapRespond.jsのダウンロードは古いIE向けには必須ですのでご注意ください。 )