ケルヒャー高圧洗浄機のトラブル解決 (2014-11-10) このエントリーを含むブックマーク

ケルヒャーの高圧洗浄機。たまにしか使わないので、たまに使いたいときに何か問題が起きると困ります。数年使用して初の問題なので、元は取ったと言えるのかもしれませんが、たまにしか使わないので、新しいのを買うのは悩むところです。

いろいろ調べてみると、やはり、さまざまなトラブルで悩んでいる人がいるようでした。難しい修理は面倒なので、確認するポイントは、以下の通りだということが分かりました。

本体とホースの間に空気が入っている

症状としては、本体がオンになったりオフになったりして、なんだかやばい感じに思える症状が出ます。解決するには、電源をオフにした状態で、水道の水をホースから出し続けます。先端のノズルを外した状態で試します。

ノズルが詰まっている

ノズルの先端を眺めてもなかなかトラブルに気づきません。そこで、クリップをまっすぐに伸ばして、ノズルの先端に何度か差し込んでみます。クリップの三分の二くらいまでは、差し込めます。何度か、やってみます。

nozuru.png

いろいろやってだめなら、素直に新しいのを買うのもありかと。安いのなら、8300円で売っているのを見つけました。

2014/11/読書の秋 (2014-11-08) このエントリーを含むブックマーク

読書の秋です。何か、面白い本読みたいなぁと思って、はてなで質問してみました。

それで、興味を持ったのが、以下の漫画。女子大生+電子工作がテーマの「ハルロック」。面白そうなので、読んでみたいと思いました。

買って読んでみました。面白かったです。ただ、一話を無料で読んでみて、電子工作の知識が身につくかと思ったのですが、抵抗値の計算など頻繁に出てくるかと思ったら、そうでもなかったのですが。この手の話はバランスが難しいのですが漫画としては物語中心の方が面白いので正解でしょう。

Nashornでファイル入出力 (2014-11-07) このエントリーを含むブックマーク

Java8のJavaScript実行人のNashornでファイル入出力する方法は以下の通りです。Rhinoの頃とほぼ要領ででいけます。互換性がありながら、実行速度は3倍以上になっているので、かなり良い感じです。

// ファイルの読み込み
function readFile(fname, charset) {
  var Files = java.nio.file.Files;
  var Paths = java.nio.file.Paths;

  var bytes = Files.readAllBytes(Paths.get(fname));
  var text = new java.lang.String(bytes, charset);
  return "" + text;
}

// ファイルへの保存
function writeFile(fname, text, charset) {
  var osw = new java.io.OutputStreamWriter(
    new java.io.FileOutputStream(fname),
    charset);
  osw.write(text, 0, text.length);
  osw.close();
}

Raspberry Piでディスク容量を調べる (2014-11-10) このエントリーを含むブックマーク

Raspberry PiでUSB外付けハードディスク(HDD)を使うときや、ディスク容量を調べる方法のまとめ。

ディスク容量や使用量を調べる

$ df -h

外付けHDDをつなげて下記のコマンドを実行したところ、1分くらいかかり、以下のように表示されました。

pi@raspberrypi ~ $ sudo df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
rootfs           7.2G  2.4G  4.5G   35% /
/dev/root        7.2G  2.4G  4.5G   35% /
devtmpfs         215M     0  215M    0% /dev
tmpfs             44M  396K   44M    1% /run
tmpfs            5.0M     0  5.0M    0% /run/lock
tmpfs             88M     0   88M    0% /run/shm
/dev/mmcblk0p1    56M  9.7M   47M   18% /boot
/dev/sda2        1.9T  385G  1.5T   21% /mnt/media

カレントディレクトリの使用量を調べる

$ du -h

ちなみにホームディレクトリで試した結果、以下のように表示されました。

pi@raspberrypi ~ $ du -h
84K	./Desktop
1.8M	./python_games
20K	./share
1.9M	.

外付けHDDを使えるようにするまで

USBで接続したデバイスを調べるには「dmesg」コマンド。

$ dmesg

手元で試したところ、下記のように、製品名とメーカーが表示されました。

[    4.183705] usb 1-1.5: Product: HD-LCU3
[    4.189349] usb 1-1.5: Manufacturer: BUFFALO
[    4.204789] usb-storage 1-1.5:1.0: USB Mass Storage device detected

また、この後に、以下のように表示され、[sda1]から[sda5]という名前でアクセスできることが分かります。

[   15.205499] sd 0:0:0:0: [sda] Very big device. Trying to use READ CAPACITY(16).
[   15.289285]  sda: sda1 sda2 sda3 sda4 sda5

このように、外付けHDDは、sdaやsdcといった名前に割り当てられます。そして、複数のパーティションがある場合、sda1/sda2/sda3...となります。

他の方法ですが、以下のコマンドを打ち込んでも分かります。

$ sudo fdisk -l

すると次のように表示されました。

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1      409639      204819+  ee  GPT
Partition 1 does not start on physical sector boundary.
/dev/sda2          411648  3906660351  1953124352    b  W95 FAT32

外付けHDDをRaspberry Piにつないでマウントします。例えば、上記の/dev/sda2を/mnt/mediaにマウントしてみます。先に「mkdir」でディレクトリを作成したあと、次のようにしてマウントします。

$ sudo mount /dev/sda2 /mnt/media

マウントを解除するには、umountを使います。

$ sudo umount /mnt/media

もし、日本語ファイル名が化ける場合には、一度マウントを解除して、下記のように、オプションを付けて、日本語ファイル名がUTF-8で得られるようにします。

$ sudo mount /dev/sda2 /mnt/media -o codepage=932,iocharset=utf8

uidなども追加すれば、ユーザー権限もばっちりです。ちなみに、ファイル「/etc/passwd」を見ると、uidが記述されているので、その値を指定します。

mount -t vfat /dev/sda2 /home/pi/media -o rw,codepage=932,iocharset=utf8,uid=1000

~

自動的にデバイスをマウントするようにする場合、/etc/fstabにマウント設定を記述します。

$ sudo vi /etc/fstab

ファイルの末尾に以下のように、マウント設定を記述します。

/dev/sda2  /mnt/media

ただし、外付けUSBなどは毎回同じ名前になるとは限らないので、UUIDを調べて、その値を指定すると良いでしょう。UUIDを調べるには、以下のコマンドを打ちます。

sudo blkid

そして、UUIDが分かったら、/etc/fstabに以下のように記述します。以下、日本語が文字化けしないようにオプションも追加しました。

UUID="42EA-1CF1" /mnt/media vfat rw,codepage=932,iocharset=utf8

Nashornはじめの一歩 (2014-11-03) このエントリーを含むブックマーク

Java8以降では、Rhinoに代わり、NashornがJavaScriptエンジンとして利用可能になっています。そこで、ここでは、Nashornを始めるにあたり、Rhinoとの差異などをまとめてみます。

Nashornの実行ファイル名は「jjs」です。JREおよびJDKのbinディレクトリに「jjs」というファイルが用意されています。そのため、環境変数「JAVA_HOME」を設定するか、「jjs」のあるフォルダにパスを通すことでjjsを実行できるようにしておきましょう。

Windowsでは、環境変数の設定から「JAVA_HOME」を設定します。そして、Nashornを実行するバッチファイルは次のようになります。

"%JAVA_HOME%\bin\jjs" %*

Mac OS Xでは、JRE(またはJDK)のbinディレクトリにある「jjs」へシンボリックリンクを張るか、JAVA_HOMEを設定し、そこからbin/jjsを実行できるようにします。シンボリックリンクを張る場合は、下記のようにパスの通ったディレクトリを指定します。

JAVA_HOME=`/usr/libexec/java_home -v 1.8`
ln -si $JAVA_HOME/bin/jjs /usr/local/bin/jjs

また、JAVA_HOMEを設定する方法では、/usr/libexec/java_homeコマンドが利用できます。Nashornを実行するだけの簡単なシェルスクリプトは、次のようになります。以下をパスの通ったフォルダに「jjs」などの名前で保存します。

#!/bin/sh
JAVA_HOME=`/usr/libexec/java_home -v 1.8`
$JAVA_HOME/bin/jjs $@

引数を付けずに実行すると、インタプリタが起動して、計算などを対話的に実行できます。

$ jjs
jjs> 3 + 5
8

RhinoのreadFile()メソッドがない?!

Rhinoでは手軽にファイルが読み込めるreadFileメソッドがありましたが、Nashornでは使えません。とはいえ、以下のようなメソッドを定義してあげれば良いだけです。

// Rhino互換のreadFileメソッド
function readFile(fname, charset) {
  var Files = java.nio.file.Files;
  var Paths = java.nio.file.Paths;
  
  var bytes = Files.readAllBytes(Paths.get(fname));
  var text = new java.lang.String(bytes, charset);
  return "" + text;
}

// Shift_JIS(MS932)のテキストファイルを読み込む例
var txt = readFile("test.txt", "MS932");
print(txt);

readFile()に近いメソッド、readFully()もありますが、これは、スクリプトモード(オプションに「-scripting」を付ける)でNashornを実行した時に有効になります。

var text = readFully("text.txt");
print(text);

参考