Raspberry Piをサーバーとして使うために必要な5つ
Raspberry Piを設定するためにはUSBマウスやキーボードが必要である。
と、いろんな書籍やwebページに書いてありますが、サーバーとして使うのみであればssh接続して手元のPCで使うことができます。
サーバー用に最低限必要なもの
- Raspberry Pi
- SDカード(4GB以上) (コレをつかっています。)
- LANケーブル
- USB接続AC充電器 (コレをつかっています)
- USBケーブル(amazonのusbケーブルが安くてオススメです)
サーバー用には不要なもの
- USBマウス
- USBキーボード
- HDMIケーブル
- モニタ
ScaLAPACKをMountain Lionにインストール
LAPACKの並列版のScaLAPACKをmac(Mountain Lion)にインストールしました。
準備するもの
インストール方法
解答したscalapack_installerのフォルダで以下のコマンドを実行します。
$ python setup.py --prefix=./build/. --mpicc=/usr/local/bin/mpicc --mpif90=/usr/local/bin/mpif90 --mpirun=/usr/local/bin/mpirun --downall
詳しいフラグの指定はREADMEに書いてあります。
prefixフラグで指定されたフォルダにライブラリが設置されます。
以下のように表示されればScaLAPACKのインストール完了です。
****************************************************** ****************************************************** ScaLAPACK installation completed. Your BLAS library is : -L/build/lib -lrefblas Your LAPACK library is : -L/build/lib -ltmg -lreflapack Your BLACS/ScaLAPACK library is : -L/build/lib -lscalapack Log messages are in the /build/log directory. The ouput of ScaLAPACK testing programs are in: build/log/sca_testing The /build directory contains the source code of the libraries that have been installed. It can be removed at this time. ****************************************************** ******************************************************
LAPACKで連立一次方程式を解く
LAPACK : DGESVの例題のサンプルをf90っぽく書き換えました。
program main implicit none integer, parameter :: SP = kind(1.0) integer, parameter :: DP = selected_real_kind(2*precision(1.0_SP)) integer :: i integer, parameter :: n = 4, m = 4 real(DP), dimension(n,m) :: a real(DP), dimension(n) :: b integer, dimension(n) :: ipiv integer :: info a = reshape( (/1.80_DP, 5.25_DP, 1.58_DP,-1.11_DP, & 2.88_DP,-2.95_DP,-2.69_DP,-0.66_DP, & 2.05_DP,-0.95_DP,-2.90_DP,-0.59_DP, & -0.89_DP,-3.80_DP,-1.04_DP, 0.80_DP/), & (/4,4/) ) b = (/ 9.52_DP, 24.35_DP, 0.77_DP, -6.22_DP /) call dgesv(n, 1, a, n, ipiv, b, n, info) do i = 1, 4 write(*,*) i, b(i) ! answer enddo end program main
Express(node.js)+Socket.io+MongoDBでつくったwebアプリをHerokuにデプロイするまで
Express(node.js)+Socket.io+MongoDBでつくったアプリをHerokuにデプロイしました。node.js+npm+Expressはインストールされている前提です。
Expressでwebアプリのひな形を作成
以下のコマンドでひな形を作成します。
$ express application-name $ cd application-name && npm install
この段階で
$ node app
とするとサーバーが立ち上がります。ブラウザでhttp://localhost:3000にアクセスすると"Welcome to Express"と描かれたページが表示されます。
Socket.ioとmongooseをインストール
application-nameディレクトリで以下のコマンドを実行し、Socket.ioとmongooseをインストールします。
$ npm install socket.io $ npm install mongoose
mongooseはMongoDB のオブジェクトモデリングツールです。Node.js上でMongoDBを簡単に取り扱うことができます。
package.jsonファイルを編集
モジュールのパッケージ管理をするpackage.jsonファイルを編集します。
デフォルトでは書かれていないmongooseとSocket.ioに関して追記します。
socket.ioとmongooseのバージョンは/node_modules/の中のそれぞれのフォルダのpackage.jsonの"version"に書かれています。
{ "name": "application-name" , "version": "0.0.1" , "private": true , "dependencies": { "express": "2.5.11" , "jade": "*" , "mongoose": "1.3.5" , "socket.io": "0.8.7" } }
デプロイする準備
.gitignoreファイルを作る
node_modulesにあるモジュールは、Herokuにデプロイする時にpackage.jsonから自動にインストールされます。なので、node_modulesフォルダはgitから無視するように以下コマンドで.gitignoreファイルを作成します。
$ echo "node_modules" > .gitignore
Procfileを作成
Herokuでのプロセス起動に関するProcfileファイルを以下のように作成します。
$ echo web: node app.js > Procfile
Herokuをアップデート
以下コマンドでHerokuを最新の状態にします。
$ gem update heroku $ gem list heroku
herokuがインストールされていない場合は、Heroku Toolbeltからインストールします。
Herokuにデプロイ
以下コマンドで、gitの管理下にファイルを置き、herokuにpushします。
$ git init $ git add . $ git commit -m "first commit" $ heroku create application-name --stack cedar $ heroku addons:add mongohq:free $ git push heroku master
heroku create ~ でherokuアプリケーションを作成しています。
heroku addons: ~ でMongoDBのホスティングサービスのMongoHQアドオンを追加しています。
以下コマンドで、herokuのプロセスの設定をします。
$ heroku ps:scale web=1 $ heroku config:set NODE_ENV=production
以上でHerokuにExpress(node.js)+Socket.io+MongoDBでつくったwebアプリをデプロイできました。
Mongooseをつかったドキュメントの更新
MongoDBのオブジェクトモデリングツールであるMongooseをつかったドキュメントの更新方法です。
Userコレクションのuser_idが"001"のドキュメント一つに対して、user_nameを"user2"に変更します。
db.User.findOne( { user_id: "001" }, function(err, doc) { if(err || doc===null) { return false; } doc.user_name = "usr2"; doc.save(); }
Mountain Lion 純正メモアプリの自動箇条書きをオフにする方法
メニューバーの
編集>自動置換>スマートリスト
のチェックを外す。
エラー : アクション“シェルスクリプトを実行 (Image to Card)”でエラーが起きました。
Raspberry Piを最近買って、どうやって遊ぼうか考え中です。注文から手元まで三ヶ月以上かかる時期もありましたが、今は供給が安定しているらしいです。Amazonでも買えます。
はじめにRaspberry PiのOSのブート用SDカードをPCから作成する必要があり、RPi-sd card builderというアプリケーションを使うことが推奨されています。
しかし、
「アクション“シェルスクリプトを実行 (Image to Card)”でエラーが起きました。
アクションの設定を確認してから、ワークフローをもう一度実行してください。」
というエラーがでました。(Mac OSX 10.8.4 Mountain Lion, RPi-sd card builder v1.2の場合)
RPi-sd card builderを使用せずにブート用SDカードをつくる必要があるので、その方法を書き記しておきます。
環境
- Mac OSX 10.8.4 Mountain Lion
- 2013-02-09-wheezy-raspbian.img
- Raspberry Pi Type B
- SanDisk SDHCカード 16GB Extreme HD Video
ブート用SDカードをつくる方法
SDカードのデバイス名を知る
Terminal.appで
$ diskutil list
とし、SDカードのデバイス名/dev/disk1(例)を取得します。
OSのimgファイルをSDカードに書き込む
以下のddコマンドでOSのimgファイルをSDカードに書き込みます。
$ sudo dd bs=1m if=/File/Path/To/2013-02-09-wheezy-raspbian.img of=/dev/disk1
if=にはOSのimgファイルのパス、of=にはデバイスのパスを入力します。
環境によりますが、10分ほどで完了しました。