[sinatra] sinatraでHello World

Webアプリがつくりたいわけ

かなり以前、まだAirH”(w のコンパクトフラッシュサイズカードとCASIOPEAというWindowsCEのPDAでゔぃゔぃ言わせていた頃、自宅WebサーバーをDDNSで公開してWeb家計簿をPHPで作ったりしていました。
でも、PHPを勉強しながらだったので、お世辞にも拡張性があるものでもなく、現在の我が家の家計簿はご自宅ファイルサーバー上のxlsxファイルです。

Sqlite3とWebアプリになんとかできないもんかと思っていたんですけど、以前から名前だけ知ってるsinatraが簡単そう。Railsは何回も挫折しています。だってなんか仕様が大きくて、いつまでたっても習得できない…..(言い訳

さて、そんなわけでsinatraです。あまり、邦訳書籍を見かけないですけど。簡易Rails?みたいなかんじ?

sinatraのインストール

まず、sinatraのインストールです。前提としてrubyをインストールします。私の環境がMacなので、他の環境の方は適宜手順を検索してくだされ。

Rubyのインストール

参考にした情報ではHomebrewでRubyをインストールする手順になってました。
(その前にHomebrewをインストールしないとですよね…)


$ brew install ruby

sinatraのインストール

つづいてgemでsinatraをインストールです。実はここでnative extentionのコンパイルが走ったりするのでですね、私はインストールに苦しみました….(下の手順だと簡単そうですよね。)


$ gem install sinatra

テストアプリの作成

テストアプリを作りましょう。 ​Hello Sinatra を表示するやつです。


require 'sinatra'

get '/hello' do

  "Hello Sinatra!"

end

実行だ!

rubyコマンドで起動

なんとrubyコマンドでさっきのテストアプリを起動するだけで、内部Webサーバーが起動します。すげー。


$ ruby hello.rb

ブラウザから確認

ブラウザから http://localhost:4567/hello へアクセスして動作確認してみてください。以下のようなメッセージが出ます!

スクリーンショット 2017-10-17 23.12.24

広告

mac miniにRATOC RS-EC32-U3Rを接続(RAID1)…

img_0148-2.jpg
先日、玄人志向のUSB 2.0HDDケースに入れた2Tがちょっと不調になったので(exFATのせいだと思いますが…)ちょっとデータ消失が怖いのでRAID1を構成できるケースを購入しました。ヨドバシで7000えんちょっとです。
USB3.0用ケースだけど、USB2.0で接続中w。まぁ最初のデータ移行以外はUSB2.0で速度的に無問題なのでOKOK。
Seagateの3Tx2を入れてRAID1構成です。容量が半分になっちゃいますけどRAID0とかにするとHDD1つ飛んだらデータが全部飛びますからそれはナシ。RAID1だからデータ飛ばないってことはないのでバックアップはTimeCapsuleとかと連携して別途検討ですが….
サイズも見た通り横にある玄人志向のUSB HDDケースとならべてもそれほど大きくないし、昨今のHDDは静からしくて全く無音と行って良い感じです。HDDアクセスランプも控えめてグー。最近高輝度LEDが安いので無駄にチカチカしたのついてる場合が多いですけど、イラナイですよね。
このHDDケース。単体でもRAID構成ができる優れものです。
Windows用のRAID管理ツールやUSBドライバー、ファンコントロール温度設定とかいろいろついてきますが、わたしはmac miniで使うので、mac用のRAIDツールをダウンロードしました。ちゃんとRATOCさんが配布しているので安心です。
ケースへのHDD装着ですがネジなしで前面カバーで固定している感じなので、HDDの幅がちょっと薄めのやつはガタつくらしいです。WDのとか。わたしはSeagateのにしたので無問題。
ネジとかないので、HDD装着も一瞬です。
HDD装着して、USBケーブルでmacにつないで、RAIDツールでRAID1構成にしました。最初は2HDDがmacに認識されて「初期化されてねーぞ」って言われるんですが、RAID1構成がちゃんと終わると3Tの1パーティションとして認識されました。あとはディスクユーティリティでいつも通り「mac OS 拡張(ジャーナリング)」で1パテ構成してOKOK。ちゃんとマウントされてきます。
exFATの方がBootcampのWindowsと共用できてイイヤなんて思ってましたけど、やっぱりFATはナイですね。いまどき。ファイルがふっとぶのが怖すぎです。ジャーナリングファイルシステムでないば。

またMac miniの外付けUSB HDDがちょっと不調

img_0140-1.jpg
またMac miniの外付けUSB HDDが不調気味です。
Bootcamp側のWindows7 64bitでも読み書きできるように、ExFATにしていたのが悪かったのかもなぁ。
4G以上のファイルを扱えるといっても所詮はFATですからねー。ディスケットフォーマットのお化けでしかないようです。
今、地道にiTunesライブラリとかいろんなファイルをTimeCapsuleをNASにして移動中です。1Tしかないので、全部のファイルは救えないですけどまぁいいかと。
ファイルバックアップが終わったら、今度はUSBHDDはOS XのHFS+(ジャーナリング)にしてみようと思います。
いまどきジャーナリングじゃなかったの?って某氏からは言われそうですけども。
Mac miniがlate 2011なのでUSB2.0しか装備していないのがちょっと痛い。Thunderbolt拡張ボックスが欲しいなぁ。
USB3.0とかが装備できるんですよね。ちょっと高いけど^^);;;
いまどきは、Linuxもジャーナリングなファイルシステムが標準なんですかね??
ちなみに、バッファローの無線ルーターにくっつけてるHDD(250G)はxfsにしてます。死んだ時にサルベージがめんどっちそうだけどジャーナリングらしいので。wikipwdiaによると古いファイルシステムみたいですね。REGZAとかもこのファイルシステムなのかな?? TV録画HDDはREGZAにつけっぱなしですが頑張ってます。

mac miniの起動が遅いのでTimeCapsuleからリストアしなおしてみた

最近mac miniの起動が遅くなってきたので、TimeCapsuleからリストアし直してみた。買った当時はわりと1分程度で作業できる感じだったんだけど、最近は3分程度はガラガラと動いているのだす。
なんか外部HDDをつないでいるせいという話もあるけど、TimeCapsuleとかTimeMachineとかからリストアすればキャッシュがクリアされるらしいのでやってみた。

(1)TimeCapsuleのバックアップを確認

システム環境設定>TimeMachineで最新のバックアップが最近取られているか確認した。先日外部HDDをexFAT化したときにフルバックアップとりなおしているので問題なし。

(2)MountainLionのインストールメディアからリブート

別のメディアからブートするのがいいと思ったので、MountainLionインストールでつかったメディアからブートした。
これは、USBメモリーへ書き出ししたもの。
リブートするとOS Xユーティリティーメニューが出て「TimeMachine バックアップから復元」っていうのを選んだ後に TimeCapsuleのメディアを選択してリストア実行。
リストア先はMachintosh HD。リストア時間は200Gで2時間ほど。接続はGbitEther。

(3)リストア終了後にリブート〜spotlightのインデックス構築

リストアが終わったのでリブートしてみた。ちょっと遅いw
最初だからかなぁ。で、立ち上がってみたらガラガラとHDDがうるさい。
spotlightというmacの検索ツールのインデックス作成が走っている模様。
インデックスはクリアされるんですね。なんか24時間とか出ててちょっとビックリ…ちょっとしたら数時間に縮んだけど。
これで起動が速くなるといいなぁ。
速くならなかったら、HDDを起動時には外しておこうっと。
ただ、iTunesのライブラリを外部HDDヘもっていっちゃったので、外したままだと不便なんだけど^^);;;

外部ディスクをexFATへ変更(3)

いまデータがはいっているUSB2.0の2Tのディスク。FAT32でフォーマットされているので、exFATへ再フォーマット前にまずはデータの移動だす。

(1)退避先のHDD準備

TimeCapsuleに1Tのディスクが入っているので、取り出してSATA⇔USB(2.0)のケーブルで接続してexFATにしてみた。
Windows7のディスク領域確保と同時だとNTFSしか選べないので空の領域を1T確保して、ドライブレターだけアサイン。エクスプローラーで右クリック>フォーマットでexFATが選べる!!
クイックフォーマットのチェックつけて実施したら一瞬でフォーマット終了。素敵!!

(2)データのコピー

USB2.0 to USB2.0なので単体のスピード的にも25MB/s出ればいいところ。
後で気づいたけど、ギガビットEtherとおなじくらいのスピードだった。
いろんなツールを試したのだけど結局慣れている FireFileCopyを使ったのだ。
ちなみに64bit WindowsではDDLの入れ替えが必要。

“FireFileCopy”
http://www.k3.dion.ne.jp/~kitt/pc/sw/ffc/
“Windows 7 では FireFileCopy を使うことをお勧めする”
http://www.laloopa.com/20090508/windows7-gets-slow-when-copynpaste
その他に使ってみたのは、アイオーデータが無料配布しているマッハCopy(http://www.iodata.jp/promo/soft/data/speed/machcopy.htm)とか…
IP Messengerで有名な白水さんが出しているFastCopy(http://ipmsg.org/tools/fastcopy.html)とか…
ちんたらコピーして、結局500Gで10時間ぐらいかかりました。めんどくさくなって一部のデータは捨てたんだけど…
あとで、mac OS X(Mountain Lion)に戻ってふつーにCopyしてみたら意外と速かったので、別にツールはいらなかったかなぁとか思ったのだが…

(3)USB HDDの再フォーマット

退避先のHDDのときといっしょで、Win7のディスクユーティリティで領域確保だけ実施してエクスプローラーでexFATへフォーマットする。
あとは逆方向にちんたらとデータコピーしなおし。これまた時間がかかるので寝てるあいだに実施しようとmac OS Xのコピーに任せたのだ。朝になってコピー終了してることを確認。
ただし、電源管理でスリープをOFFにしてなかったせいか、ハングしかかってたのだ。
単純にファイルコピーしてるだけだったので、スリープしようとして、ファインダーのコピー処理がスリープを邪魔して…ハングしかかり?みたいな感じかも。
電源管理でスリープをOFFにするのを次回は忘れないようにしよう。
というわけで、技術的にはたいしてトピックはないけど、いろいろと勉強になったのであった。

外部ディスクをexFATへ変更(2)

ちなみに、exFATはFAT32の32G制限を取っ払っただけと思っていたのは私です。exFATについてはWikipediaさんに詳しいですが…

exFAT (イーエックスファット、Extended FAT) は、マイクロソフトが主にフラッシュドライブ向けに開発したプロプライエタリなファイルシステムである。
従来の File Allocation Table (FAT) ファイルシステムに対する優位点としては以下のものがある。

  • 大きなディスクサイズに対するスケーラビリティ。
  • 理論上の最大ファイルサイズは 264バイト (16EiB)。従来は最大 232バイト (4GiB)。
  • 理論上の最大クラスタサイズは、2255セクタ。実装上の限界は 32MiB。
  • 空き領域ビットマップの導入による、空き領域割り当てと削除のパフォーマンス向上。
  • 1つのディレクトリで1000以上のファイル格納をサポート。
  • アクセス制御リストのサポート(Windows Vista SP1/7 RTMでは未サポート)[6]。
  • Transaction-Safe FAT File System (TFAT) のサポート(WinCEでのオプション機能)。
  • 特定のデバイスの特性に合わせてファイルシステムをカスタマイズできるようにするためのOEM定義のパラメータを用意。
  • UTCタイムスタンプが導入(Windows Vista SP2から[7])
  • 修正時刻のタイムスタンプの分解能が従来の2秒から10ミリ秒になったことによる、いわゆる2秒問題(NTFSなどからファイルをコピーした際に 修正時刻が最大2秒ずれる問題)の解決。ただし、10ミリ秒精度を保存している1バイトを利用するかどうかは、ソフトに依存する。たとえば、 Windowsのエクスプローラはこの情報を無視するので、従来のFAT同様2秒の分解能でしか保存されない。
    http://ja.wikipedia.org/wiki/ExFAT

という感じ。ぜんぜん違うファイルシステムだったんですねw

外部ディスクをexFATへ変更(1)

自宅のmac miniはBoot CampでWindows7とデュアルブートにしている。
外部ディスクとしてUSB 2.0のHDDをつけていて相互のデータやりとりはそこを使っていた。ただ、使い始めた時に知識が無くてFAT32でフォーマットしてしまった。
FAT32はWindowsだと32Gがmaxなんだけど、macのディスクユーティリティとか、HDDを出してるメーカーのユーティリティーとかで2T丸ごとFAT32ってのも可能。
HPFSだとmacでは読めるけど書き込みできないので(正確には、書き込みのためにツールが必要)結局FAT32にしてしまった。
ただ、FAT32だと1ファイル4G以上のファイルがNGだったり、なんか知らないけどiTunesライブラリを移動しようとしたら失敗したり(これは気のせいかも)といろいろと不都合。んでexFATっていうUSBメモリーとか用のフォーマットにしてみることにした。
Windows Vista SP1以上、macだとSnowLeopard 以降だったらOKっぽい。
わしのmac miniはMountain LionなのでOK。
ただし…
eFATはNTFSみたいにFATからの変換はできない
つまり、データを一度退避して、まっさらにフォーマットする時にexFATにして書き戻しが必要ってこと。
USB2.0は理論値で480Mbps。実測してみたら200Mbpsがいいところで、USB HDD to USB HDDだと128Mbpsぐらい..LANよりは速いかなぁ。