Raspberry Pi 2にRails導入

Rbenvについては、このサイトを参考にして/etc/profile.d/配下にrbenv.shを追加する方法でインストールした。そのままrubyを現時点の安定板2.2.2をインストール。

しかし一度目はインストールに失敗。dependenciesが解決できていないらしい。

pi@rmsy1 ~ $ rbenv install 2.2.2
Downloading ruby-2.2.2.tar.gz…
-> https://dqw8nmjcqpjn7.cloudfront.net/5ffc0f317e429e6b29d4a98ac521c3ce65481bfd22a8cf845fa02a7b113d9b44
Installing ruby-2.2.2…

BUILD FAILED (Raspbian GNU/Linux 7 using ruby-build 20150803)

下記のようなサジェスチョンがあったのでこれを実行

Try running `apt-get install -y libreadline-dev` to fetch missing dependencies.

これでうまくインストールできた。40-50分ぐらい要した。

次に先のサイトに記述されている通り、rails 4もインストールを進めた。

bundle installがうまく通らないので

gem install inbv8

を導入した。

bundle showをかけてみると

bundle show
Gems included by the bundle:
* actionmailer (4.2.3)
* actionpack (4.2.3)
* actionview (4.2.3)
* activejob (4.2.3)
* activemodel (4.2.3)
* activerecord (4.2.3)
* activesupport (4.2.3)
* arel (6.0.3)
* binding_of_caller (0.7.2)
* builder (3.2.2)
* bundler (1.10.6)
* byebug (5.0.0)
* coffee-rails (4.1.0)
* coffee-script (2.4.1)
* coffee-script-source (1.9.1.1)
* columnize (0.9.0)
* debug_inspector (0.0.2)
* erubis (2.7.0)
* execjs (2.5.2)
* globalid (0.3.6)
* i18n (0.7.0)
* jbuilder (2.3.1)
* jquery-rails (4.0.4)
* json (1.8.3)
* libv8 (3.16.14.11)
* loofah (2.0.2)
* mail (2.6.3)
* mime-types (2.6.1)
* mini_portile (0.6.2)
* minitest (5.8.0)
* multi_json (1.11.2)
* nokogiri (1.6.6.2)
* rack (1.6.4)
* rack-test (0.6.3)
* rails (4.2.3)
* rails-deprecated_sanitizer (1.0.3)
* rails-dom-testing (1.0.6)
* rails-html-sanitizer (1.0.2)
* railties (4.2.3)
* rake (10.4.2)
* rdoc (4.2.0)
* ref (2.0.0)
* sass (3.4.16)
* sass-rails (5.0.3)
* sdoc (0.4.1)
* spring (1.3.6)
* sprockets (3.3.0)
* sprockets-rails (2.3.2)
* sqlite3 (1.3.10)
* therubyracer (0.12.2)
* thor (0.19.1)
* thread_safe (0.3.5)
* tilt (1.4.1)
* turbolinks (2.5.3)
* tzinfo (1.2.2)
* uglifier (2.7.1)
* web-console (2.2.1)

が現れた

最後にrails sの-bオプションで0.0.0.0 (全て)の接続元を指定するように変更してサーバ起動するとrailsが無事に動いた。

2つのサイトに感謝します。

Raspberry Pi 2 にRuby on Rails 4 環境を構築してみた

Raspberry Pi で rbenv / Ruby on Rails を動かすまでの個人的メモ

 

(追記)

実際動かそうとすると、javascript runtimeがないとのコメントがでたので、このサイトに記述されていた通り、execjsとnodejsを入れたら無事動きました。

==

簡単なデータベースを作成します。

~/rails を作成し、その下で、

rails new book

を入力します。これでbook配下にさまざまなファイルが出来るので、

cd book

に移り、
rails generate scaffold item title:string outline:text
rake db:migrate

rails s -b 0.0.0.0

とする。0.0.0.0もリッスンさせる必要があるようだ。
これで、http://localhost:3000/items

とやると、無事に動いていることが確認できた。


Mathematicaで3次元の図形描画

2つの例を書いておきます.走らせてのお楽しみ

  1. Donuts
    a = 0.3;
    b = 0.07;
    c = 8;
    ParametricPlot3D[{Cos[u] + (a – b*Cos[c*u])*Cos[v]*
    Cos[u], (a – b*Cos[c*u])*(Sin[v]),
    Sin[u] + (a – b*Cos[c*u])*Cos[v]*Sin[u]}, {u, 0, 2 Pi}, {v, 0,
    2 Pi}, Axes -> False]
  2. French
    a = 1.3;
    b = 5;
    c = 5;
    d = 2;
    e = 3;
    ParametricPlot3D[{Cos[u] (c + Cos[v + e u]/2*(b + Cos[2 (u + d v)])),
    Sin[u] (c + Cos[v + e u]/2*(b + Cos[2 (u + d v)])),
    a*Sin[v + e u]/2*(b + Cos[2 (u + d v)])}, {u, 0, 2 Pi}, {v, 0,
    2 Pi}]

Raspberry Pi 外部からのSSH接続について

SSHを有効にしたが、以下を実装した

  1. Rootによるログインを無効にする
    /etc/ssh/sshd_configで
    #PermitRootLogin yes ->
    PermitRootLogin no に変更ssh再起動は、sudo /etc/init.d/ssh restart
  2. SSHのポートを変更する
    同じく/etc/ssh/sshd_configで
    #Port 22 ->
    Port XXXXX に変更
  3. 公開鍵によるログインとする
    これはこのサイトを参照して作成した

Raspberry Pi初期の設定

やはり運用させてみると、頻繁におちたりファイルが欠損する。まずはじめに、何を設定したかだけ備忘録

Raspi-configでしたこと

  • Expand filesystem: Rasberianから始めるときには設定
  • Change User Passwowrd: そのあと sudo passwdでルートも設定
  • Enable Boot: CUIからのスタート、画面が見えなくなった時簡単に落とせるよう
  • Internationalization: Localeは en_US-UTF8とja_JP-UTF8 デフォルトをJPに
    (注ここで文字化けした時にはここに従うこと)
  • Internationalization: Timezoneは Asia/Tokyo
  • Internationalization: Keyboard Layoutは 通常109だが105にする
  • Advanced option: Hostnameを適当に設定
  • Advanced option: SSHをEnabledに
  • Advanced option: updateをかける

Update

  •  sudo apt-get update
  • sudo apt-get upgrade
  • sudo rpi-update (firmware update)

日本語環境の追加

  • この日本語設定を見て、必要なフォントをインストールする
  • 同じく、.profile中にLANGを追加する
  • jfbtermを追加
  • emacsインストール init.elを追加して日本語環境を追加(utf-8)
    なおemacsで、Ctrl-\で日本語モードにはなるものの速度は遅い。このモードのままで、PC側でAlt-半角/全角を打つとローカルPCのFEPが使えているようだ。

Crontabのエディタ変更(emacs) ここに記述あり

  • .bashrcに下記を追加
    EDITOR=emacs
    export EDITOR

毎日reboot

  • この記述を参考にして毎日rebootを行う

 


Raspberry Pi 基本config

まず画面関連で
いくつかキーの設定を書きます

  • hdmi固定モードのためには、/boot/config.txtにおいて
      hdmi_force_hotplug = 1

    を入れれば良いようです。

  • 続いてHDMI切り替え器などに由来する解像度の揺らぎを固定するために、同じく/boot/config.txtで、
      hdmi_group = 1
      hdmi_mode = 5

    をセットすると解像度が1920X1080にセットされます。

次に万が一画面が見えなくてもシャットダウンできるように以下のことをしました

  • raspi-configを起動して、起動オプションをXウィンドウではなく、ターミナルに変更します
  • コントロール+ALT+BackspaceでXを強制終了できるよう、/etc/default/keyboardに次を追加します。
      XKBOPTIONS=”terminate:ctrl_alt_bksp,ctrl:swapcaps”

    なおswapcapsはいわゆるctrlとcapslockを入れ替えるためのものです。

このようにすると、万が一画面が消失して見えなくなったときでも、

    Cntl+Alt+bksp

を押せば、ターミナル画面に落ちるはずです。このあと

    sudo shutdown -h now

で無事Raspberry Piはシャットダウンするでしょう。シャットダウンすると赤いランプがひとつだけついた状態になります。

 

これでおそらくうまく動くものと期待します。


Raspberry Piの設定方針

Raspberry Piを再度はじめようと思っている。以前しばらく使っていたが、いつの間にか電源は入っているものの画面には何も映らないという状態が生じていた。それで電源をON/OFFしていると、Linuxなので、ファイルシステムがいかれてしまうことがあった。今回再度設定しようとしてみたが、同じ事態が起きている。調べてみたら、今HDMI Selectorを使っているため、何かの拍子にHDMIへの出力が切り替わり、コンポジットの出力になっているようだった。こうなったら、もとに戻す手はなさそうだ。このため、以下の対策をまず取ろうと思う。

  • OSはイメージでバックアップを取る
  • 強制的にHDMIを選択するモードに/boot/config.txtを書き換える
  • 万が一ブラインドになっても、キーボードでXを終了させ、コマンドラインでブラインドでシャットダウンできるようにする
  • 毎日定時にrebootさせる(昔の基地局もそうやってたという)
  • GPIOを用いて、スイッチでシャットダウンする機能を付加できるようなので、これを実装する(未実装)

あたりを入れてみたい。


Octane renderでストッキングの質感

Poser baseでOctaneを利用しているが光沢あるストッキングの質感の出し方をどうすればいいか悩んでいた。以下これで雰囲気は出そうというもの。

  • 対象はVictoria 4
  • 適用は2.SkinHip, 3.SkinLeg, 3.SkinFoot
  • NodeをGlossyからMaterial Mixに
  • First Materialは変えず、Second MaterialをSpecularに
  • Reflection, Transmissionを好みで、たとえば255/183/131,255/167/115
  • Index of Refractionを0.0->4.0程度に
  • 必要に応じRoughnessも調整(0.5ぐらい)
  • これで少しはそれっぽい雰囲気になるかも。sample


    Day bank のdiscontinueの後、データをPCで解析

    iPhoneの金銭管理ソフトDay bankはとても管理しやすく、昔はPCソフトで同期させることもできていた。ところが突然Discontinueされてしまい。PCとの同期能力もなくなってしまった。
    ただ、データをiCloudやiTunesを介してPCに全体をバックアップする方法のみ載っていた。やむを得ず、使えるところまで使おうと思っていたが、この記事を参照すると、iTunesからPCにバックアップされたデータから情報を復元可能であることがわかった。早速このサイトからお試しにダウンロードを行ってデータを取得し、daybankと書かれているフォルダのdaybank.dbなるデータベースをexportした。
    これをさらにSQLLiteStudioを使って読み込むと、Table一覧が出てくる。
    その中でbank_transactionをクリックし、Dataを見ると、ここにトランザクションの一覧を見ることができた。テーブルの左上をクリックし、Exportボタンを押すと、フォーマットが選べ、ここでCSVを選ぶと、CSV形式でこの全データを吐き出させることができた。

    ここまできたら、あとはマクロで望ましいエクセル形式に加工することを考えるだけだ。


    Goodreader 4の文字化け

    Coreserverにおいている自炊のpdfをGoodreader 4でダウンロードしようとすると、文字化けが起きていた。
    Goodreader 4のサーバ設定で、Characterを設定できる欄があったので、そこにDosJapaneseを指定したら
    文字化けしなくなった。これはありがたい。


    NotePCのダイエット

    自分のNotePCがいつの間にか容量が一杯に迫ってきていた。そんなに使っていたわけではないと思っていたが自然とそうなった。おそらくはローカルのストレージにうまく逃がす/バックアップする、クラウドストレージを活用する、iPhoneやiPadでのブラウジングをもっと簡単にすべきなどいくつもの課題がある。それはわかっているんだが、でも何から手をつけてよいかわからなかった。

    このため、片っ端から手をつけることをせず、以下のポリシーを立ててダイエットを行うことにした。
    ・データ散逸を避けるため、バックアップに用いるクラウドは最小限とする。無料だからといって
    複数にクラウドへの分散は避ける。
    ・取り扱うユーザデータを基本的にWorkingとArchiveに分ける。
    Archiveは原則Note PC & iPad には置かない.
    処理の必要が生じた時には、ArchiveからコピーしてきてWorkingの中で処理する。
    ・Note PCには基本的にWorkingファイルのみを置く
    ・Archiveファイルは、local storage & Cloudにする。 Archiveファイルにも、時々参照したいもの(写真やpdf本など)は、NWのアクセシビリティを有したところにおく。–例えば、Dropboxの写真など
    ・生じるデータはできるだけクロニクルな形にする。ジャンル&クロニクルでよい。この最新をorkingとし、過去をArchiveとして管理する。

    まずやったことは、ローカルストレージの整理だ。全く使っていなかったり、二重のバックアップを消去した。次にローカルストレージをはっきりとArchiveとWorkingに分けた。

    次に行ったことは、Dropbox型のストレージの整理だ。これらは一見複数個所で同期をとってくれ便利に見えるが、n箇所で同期するということは、n倍のストレージを必要とするということだ。Dropbox以外は全部クリーンアップして一旦ローカルストレージに集め、これをWorking とArchiveに整理した。

    この次にDropboxに対しても同様の整理を行った。情報管理の点からDropbox内にはプライベートな情報のみしか置いていないが、これもWorkingとArchiveに分類し、Archiveになったものは、別にDropboxにおいておく必要もないので、homeのArchiveに置く。<以下つづく>