Raspberry Pi Type B+にUSBメモリ増設

RaspberryPIを買って早1月以上。そろそろディスク容量も乏しくなってきました。もともと余っていた32GのMicroSDを挿していたのですが、データが増えるにつれてちょっと残りが寂しくなってきたので、上海問屋の64GUSBメモリを購入しました。

RaspberryPIはUSB3.0対応ではないので、USB2.0の安いものをチョイス。送料込みで3400円くらい。安い。。

早速挿してみました。フォーマット自体はFAT32。プラグアンドプレイなので差し込むだけでOK。コマンドラインからマウントしてやります

pi@raspberrypi ~ $ sudo fdisk -l

Disk /dev/mmcblk0: 31.7 GB, 31657558016 bytes
4 heads, 16 sectors/track, 966112 cylinders, total 61831168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000b5098

				Device Boot			Start				 End			Blocks	 Id	System
/dev/mmcblk0p1						8192			122879			 57344		c	W95 FAT32 (LBA)
/dev/mmcblk0p2					122880		61831167		30854144	 83	Linux

Disk /dev/sda: 64.5 GB, 64541949952 bytes
255 heads, 63 sectors/track, 7846 cylinders, total 126058496 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc3072e18

	 Device Boot			Start				 End			Blocks	 Id	System
/dev/sda1							64	 126058495		63029216		c	W95 FAT32 (LBA)

pi@raspberrypi ~ $ sudo mount /dev/sda1 /mnt
pi@raspberrypi ~ $ df
ファイルシス	 1K-ブロック		 使用	 使用可 使用% マウント位置
rootfs						30311756 13465040 15569968	 47% /
/dev/root				 30311756 13465040 15569968	 47% /
devtmpfs						219832				0	 219832		0% /dev
tmpfs								44800			240		44560		1% /run
tmpfs								 5120				0		 5120		0% /run/lock
tmpfs								89580				0		89580		0% /run/shm
/dev/mmcblk0p1			 57288		 9896		47392	 18% /boot
/dev/sda1				 63012832		 2752 63010080		1% /mnt

こんだけ。マウント簡単。しかしここで問題が発生。

どうやら一般ユーザでは書き込めない模様。権限も変更できず。まあ、FATなので権限もクソもないのでどうしょうもないのでしょう。ちなみにROOTユーザなら読み書きOKですがそれだと使いづらいので、EXT4にフォーマットし直してやります

pi@raspberrypi ~ $ sudo fdisk /dev/sda

Command (m for help): d
Selected partition 1

Command (m for help): p

Disk /dev/sda: 64.5 GB, 64541949952 bytes
199 heads, 32 sectors/track, 19795 cylinders, total 126058496 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc3072e18

	 Device Boot			Start				 End			Blocks	 Id	System

Command (m for help): n
Partition type:
	 p	 primary (0 primary, 0 extended, 4 free)
	 e	 extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-126058495, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-126058495, default 126058495): 
Using default value 126058495

Command (m for help): p

Disk /dev/sda: 64.5 GB, 64541949952 bytes
199 heads, 32 sectors/track, 19795 cylinders, total 126058496 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc3072e18

	 Device Boot			Start				 End			Blocks	 Id	System
/dev/sda1						2048	 126058495		63028224	 83	Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

mkfsでフォーマット

pi@raspberrypi ~ $ sudo mkfs.ext3 /dev/sda1 
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3940352 inodes, 15757056 blocks
787852 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
481 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424

Allocating group tables: done														
Writing inode tables: done														
Creating journal (32768 blocks): 
done
Writing superblocks and filesystem accounting information:				
done

pi@raspberrypi ~ $ mkdir /media/usb0
pi@raspberrypi ~ $ sudo mount /dev/sda1 /media/usb0
pi@raspberrypi ~ $ df
ファイルシス	 1K-ブロック		 使用	 使用可 使用% マウント位置
rootfs						30311756 13498480 15536528	 47% /
/dev/root				 30311756 13498480 15536528	 47% /
devtmpfs						219832				0	 219832		0% /dev
tmpfs								44800			240		44560		1% /run
tmpfs								 5120				0		 5120		0% /run/lock
tmpfs								89580				0		89580		0% /run/shm
/dev/mmcblk0p1			 57288		 9896		47392	 18% /boot
/dev/sda1				 61907956		53196 58703352		1% /media/usb0

pi@raspberrypi /media/usb0 $ sudo chmod 777 .
pi@raspberrypi /media/usb0 $ mkdir data

ついでにマウント先も変更しました

WindowsでJekyll環境構築

jekyllをご存知でしょうか?そこいら中に記事があるので詳細はググればわかりますが、簡単にいえば静的HTMLのジェネレータフレームワークです。

Rubyで作成されていますのでgemで簡単にインストールできます。

がちょっとハマったので備忘録。。

環境

  • Windows8.1

インストール

まずはRUBYを入れます。Windows用のRubyはいろいろありますが、

http://rubyinstaller.org/downloads/

こちらからWindows用のMSIをダウンロードしインストールします。

C:\Ruby21-x64にインストールした後には環境変数PATHにC:\Ruby21-x64\binを追加します。

そのままgemでインストールしようとすると以下のエラーが出ます

C:\>gem install jekyll
ERROR:	Error installing jekyll:
The 'yajl-ruby' native gem requires installed build tools.
Please update your PATH to include build tools or download the DevKit
from 'http://rubyinstaller.org/downloads' and follow the instructions
at 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'

どうやらMakeできなよと怒られたようです

DevelopmentKitなるものを同じページからダウンロードします。

DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe

現在だとこれになります。

これをC直下にc:\devkitというフォルダを作成しその中に解凍します

その後以下のコマンドを実行

C:\devkit>ruby dk.rb init
[INFO] found RubyInstaller v2.1.3 at C:/Ruby21-x64
Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.
C:\devkit>ruby dk.rb install
[INFO] Updating convenience notice gem override for 'C:/Ruby21-x64'
[INFO] Installing 'C:/Ruby21-x64/lib/ruby/site_ruby/devkit.rb'

これで準備が整いました

あとはgemでインストール

C:\devkit>gem install jekyll
Temporarily enhancing PATH to include DevKit...
Building native extensions.	This could take a while...
Successfully installed yajl-ruby-1.1.0
Fetching: posix-spawn-0.3.9.gem (100%)
Building native extensions.	This could take a while...
Successfully installed posix-spawn-0.3.9
Fetching: pygments.rb-0.6.0.gem (100%)
Successfully installed pygments.rb-0.6.0
Fetching: redcarpet-3.2.0.gem (100%)
Building native extensions.	This could take a while...
Successfully installed redcarpet-3.2.0
Fetching: blankslate-2.1.2.4.gem (100%)
Successfully installed blankslate-2.1.2.4
Fetching: parslet-1.5.0.gem (100%)
Successfully installed parslet-1.5.0
Fetching: toml-0.1.1.gem (100%)
Successfully installed toml-0.1.1
Fetching: jekyll-paginate-1.1.0.gem (100%)
Successfully installed jekyll-paginate-1.1.0
Fetching: jekyll-gist-1.1.0.gem (100%)
Successfully installed jekyll-gist-1.1.0
Fetching: coffee-script-source-1.8.0.gem (100%)
Successfully installed coffee-script-source-1.8.0
Fetching: execjs-2.2.2.gem (100%)
Successfully installed execjs-2.2.2
Fetching: coffee-script-2.3.0.gem (100%)
Successfully installed coffee-script-2.3.0
Fetching: jekyll-coffeescript-1.0.1.gem (100%)
Successfully installed jekyll-coffeescript-1.0.1
Fetching: sass-3.4.5.gem (100%)
Successfully installed sass-3.4.5
Fetching: jekyll-sass-converter-1.2.1.gem (100%)
Successfully installed jekyll-sass-converter-1.2.1
Fetching: ffi-1.9.6-x64-mingw32.gem (100%)
Successfully installed ffi-1.9.6-x64-mingw32
Fetching: rb-inotify-0.9.5.gem (100%)
Successfully installed rb-inotify-0.9.5
Fetching: rb-fsevent-0.9.4.gem (100%)
Successfully installed rb-fsevent-0.9.4
Fetching: hitimes-1.2.2.gem (100%)
Building native extensions.	This could take a while...
Successfully installed hitimes-1.2.2
Fetching: timers-4.0.1.gem (100%)
Successfully installed timers-4.0.1
Fetching: celluloid-0.16.0.gem (100%)
Successfully installed celluloid-0.16.0
Fetching: listen-2.7.11.gem (100%)
Successfully installed listen-2.7.11
Fetching: jekyll-watch-1.1.1.gem (100%)
Successfully installed jekyll-watch-1.1.1
Fetching: fast-stemmer-1.0.2.gem (100%)
Building native extensions.	This could take a while...
Successfully installed fast-stemmer-1.0.2
Fetching: classifier-reborn-2.0.1.gem (100%)
Successfully installed classifier-reborn-2.0.1
Fetching: jekyll-2.4.0.gem (100%)
Successfully installed jekyll-2.4.0
Parsing documentation for blankslate-2.1.2.4
Installing ri documentation for blankslate-2.1.2.4
Parsing documentation for celluloid-0.16.0
Installing ri documentation for celluloid-0.16.0
Parsing documentation for classifier-reborn-2.0.1
Installing ri documentation for classifier-reborn-2.0.1
Parsing documentation for coffee-script-2.3.0
Installing ri documentation for coffee-script-2.3.0
Parsing documentation for coffee-script-source-1.8.0
Installing ri documentation for coffee-script-source-1.8.0
Parsing documentation for execjs-2.2.2
Installing ri documentation for execjs-2.2.2
Parsing documentation for fast-stemmer-1.0.2
Installing ri documentation for fast-stemmer-1.0.2
Parsing documentation for ffi-1.9.6-x64-mingw32
Installing ri documentation for ffi-1.9.6-x64-mingw32
Parsing documentation for hitimes-1.2.2
Installing ri documentation for hitimes-1.2.2
Parsing documentation for jekyll-2.4.0
Installing ri documentation for jekyll-2.4.0
Parsing documentation for jekyll-coffeescript-1.0.1
Installing ri documentation for jekyll-coffeescript-1.0.1
Parsing documentation for jekyll-gist-1.1.0
Installing ri documentation for jekyll-gist-1.1.0
Parsing documentation for jekyll-paginate-1.1.0
Installing ri documentation for jekyll-paginate-1.1.0
Parsing documentation for jekyll-sass-converter-1.2.1
Installing ri documentation for jekyll-sass-converter-1.2.1
Parsing documentation for jekyll-watch-1.1.1
Installing ri documentation for jekyll-watch-1.1.1
Parsing documentation for listen-2.7.11
Installing ri documentation for listen-2.7.11
Parsing documentation for parslet-1.5.0
Installing ri documentation for parslet-1.5.0
Parsing documentation for posix-spawn-0.3.9
Installing ri documentation for posix-spawn-0.3.9
Parsing documentation for pygments.rb-0.6.0
Installing ri documentation for pygments.rb-0.6.0
Parsing documentation for rb-fsevent-0.9.4
Installing ri documentation for rb-fsevent-0.9.4
Parsing documentation for rb-inotify-0.9.5
Installing ri documentation for rb-inotify-0.9.5
Parsing documentation for redcarpet-3.2.0
Installing ri documentation for redcarpet-3.2.0
Parsing documentation for sass-3.4.5
Installing ri documentation for sass-3.4.5
Parsing documentation for timers-4.0.1
Installing ri documentation for timers-4.0.1
Parsing documentation for toml-0.1.1
Installing ri documentation for toml-0.1.1
Parsing documentation for yajl-ruby-1.1.0
Installing ri documentation for yajl-ruby-1.1.0
Done installing documentation for blankslate, celluloid, classifier-reborn, coff
ee-script, coffee-script-source, execjs, fast-stemmer, ffi, hitimes, jekyll, jek
yll-coffeescript, jekyll-gist, jekyll-paginate, jekyll-sass-converter, jekyll-wa
tch, listen, parslet, posix-spawn, pygments.rb, rb-fsevent, rb-inotify, redcarpe
t, sass, timers, toml, yajl-ruby after 16 seconds
26 gems installed

「構文解析中に不正なマルチバイト文字列がありました」のエラー

ちょっとはまってしまったのでメモ

Rの関数にsource関数というものがあります。予め共通処理を書いておいたファイルを読み込む機能です。サブルーチンみたいなものでしょうか?

そこでsourceする際に、エラーが出る場合があります

> source("http://localhost/test.R")
以下にエラー source("http://localhost/test.R") :
構文解析中に不正なマルチバイト文字列がありました (102 行)
追加情報:	警告メッセージ:
In grepl("\n", lines, fixed = TRUE) :
入力文字列 102 はこのロケールでは不適切です

どうやら、エンコーディングの問題みたいです

使っているファイルのエンコーディングに合わせて明示的に示してやる必要があります

> source("http://localhost/test.R",encoding="utf-8")

eclipse+activatorでデバッグをWindows環境で行う

PlayFramework2.3から従来のplayコマンドではなくactivatorコマンドに変更となりました。それに伴いデバッグ方法も変わってしまったので、以下に書き留めておきます

環境

  • Windows8.1
  • eclipse 4.3
  • scala2.11
  • jdk1.7

設定

%UserProfile%\.activator\activatorconfig.txtにファイルを作成します。通常ですと、

c:\users\username\.activator\activatorconfig.txt

になるかと思います

このファイルに以下を記述します。addressはデバッグ用のポートなので開いているポートならばなんでも構いません。

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

実行

プロジェクトのフォルダにコマンドラインからアクセスし、activatorで起動します。8000番ポートでデバッグ用にポートが開いているのがわかります

Z:\test_project>activator
Listening for transport dt_socket at address: 8000
[info] Loading project definition from Z:\workspace\qrapp_api\project
[info] Set current project to qrapp_api (in build file:/Z:/workspace/qrapp_api/)
[qrapp_api] $ run
--- (Running the application from SBT, auto-reloading is enabled) ---
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/utsubo/.ivy2/cache/ch.qos.logback/lo
gback-classic/jars/logback-classic-1.1.1.jar!/org/slf4j/impl/StaticLoggerBinder.
class]
SLF4J: Found binding in [jar:file:/C:/Users/utsubo/.ivy2/cache/org.slf4j/slf4j-n
op/jars/slf4j-nop-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorSta
ticBinder]
[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
(Server started, use Ctrl+D to stop and go back to the console...)

次にEclipseからプロジェクトを右クリックし、DebugConfigurationからRemoteJavaApplicationをダブルクリックします。ポート番号8000を確認しScalaDebugger(SocketAttach)を選択。起動します。ブラウザを開いてアプリケーションにアクセスすれば、ブレークポイントでデバッグ可能となります。

設定はこの辺りに詳しく書いています

http://stackoverflow.com/questions/19473941/cant-debug-with-typesafe-activator