kindle voyage 速攻レビュー
kindle voyage が届いたのでレビュー。
ちなみに、元々電子書籍リーダーを使っていたわけではなく今回が電子書籍リーダーデビューなので他機種との比較はありません。
裏面がカッコいい
電子書籍リーダーって見た目がチープなイメージがあったんですが、裏面がかっこいいです
ページ送りボタンがよさげ
画面左右にページ送りボタンが付いているのでわざわざスワイプする必要がありません。
下部(縦に線が入ってる部分)が進む、中央(丸い点の部分)が戻るという動作が左右両方に同じようにわりあててられています。
左右で機能をわけなかったのは、 「左が進む、右が戻る」だと右手で使った時に不便なので、 左右どちらの手で使っても進む動作をやりやすいようにという配慮でしょう。
軽い
180gなのでとても軽いです。 感覚としては文庫本の重さ位のイメージです。
単行本は片手で読むには大きいし、そもそも重くて大変だったのですが、これなら気にする必要ありません。
そもそも、僕が読みたい本は殆ど単行本なので重量的に持ち上げて読むのが厳しいです。
ソファー等で机が無いときにはひざに置いて読んでいました。
そうすると、どうしても視線が下がるので肩こりが酷くなってきます。
読みかけの紙の本がいくつかあるので、まだ、あまり使ってませんが肩こりは軽減できる気がします。
片手持ちが余裕の軽さなので電車のなかでも軽々読めそうです。
視認性
視認性は概ね紙と変わらないレベルです。
描画の細かい漫画などだと差があるのかもしれませんが、漫画はまだ試してないのでわかりません。
kindle storeの品揃え
読みたい本の1/3くらいがkindle版が出ているイメージです。
なのですぐに全て電子書籍にとはいかなそうです。
amazonがんばって!
その他
風呂で本を読むので、手頃な値段の防水加工サービスできないかなぁー
chromeのtextareaでタブ入力する
テキストエリアってタブ入力ができなくて不便なので
Chrome Web Store - Tab Means Tab
これいれて解決した。 このプラグインは若干不便なので、より好みにあった別のプラグインに変えました。 追記を確認して下さい。
ついでに
を入れて、
textarea { font-family: "IPAGothic"; tab-size:4; }
ってやって、テキストエリアを等幅フォントにしてみた。
快適!
[追記] tab means tabは、textfieldでもタブ入力が聞いてしまい、フォーム要素の移動が面倒なので
こちらにしました。 こちらはtextareaのみで有効で、さらにテキストエリアが空の場合にはタブ移動が有効になります。
POSTとかGETのリクエストを簡単にやるモジュール作ったよ
node.jsでPOSTとかやるとちょっと面倒なんですよね。
ってことでモジュール化してみたよ。
使い方
GET
var request = require('./request.js'); request.get( //request url 'http://localhost/test?test=THIS_IS_TEST', //success handler function(res){ console.log(res); } ).on('error',function(e){ //error handler console.log(e); });
POST
var request = require('./request.js'); request.post( //request url 'http://localhost/test', //post params { "param1":'this is test', "param2":'this is test2' }, //success handler function(res){ console.log(res); } ).on('error',function(e){ //error handler console.log(e); });
ソース(request.js)
var url = require("url"); var http = require("http"); var events = require("events"); var querystring = require('querystring'); exports.post = function( request_url , parameters , handler , headerOptions ){ return request( 'POST' , request_url , parameters , handler , headerOptions ); } exports.get = function( request_url , handler , headerOptions ){ return request( 'GET' , request_url , {} , handler , headerOptions ); } var request = function( method , request_url , parameters , handler , headerOptions ){ var parsedURL = url.parse( request_url,false ); if( !parameters ){ parameters = {}; } var postData = querystring.stringify(parameters); var reqOptions = { "host": parsedURL['host'], "port": parsedURL['port']?parsedURL['port']:'80', "path": parsedURL['path'], "method": method, "headers": { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': postData.length } }; if( typeof headerOptions == 'object' ){ for( var i in headerOptions ){ reqOptions[i] = headerOptions[i]; } } var req = http.request(reqOptions, function(res){ res.setEncoding('utf-8'); res.on('data', function (data) { handler(data); }); }); req.write(postData); req.end(); return req; };
node.js+socket.ioサンプル
node.js+socket.ioの最もシンプルなサンプルです。
サーバーで受けたデータを接続しているクライアント全員に配信する、簡易チャットになってます。
server.js
//http server var http = require('http'), io = require('socket.io'), fs = require('fs'), server = http.createServer(function(req, res){ res.writeHead(200, {'Content-Type': 'text/html'}); var output = fs.readFileSync('./index.html', 'utf8'); res.end(output); }); //socket server var io = io.listen(server); io.sockets.on('connection', function(client) { console.log('client connected'); client.on('message', function(message) { //自分に送信 client.emit('message',message); //自分以外に送信 client.broadcast.emit('message',message); }); client.on('disconnect', function(){ console.log('disconnect'); }) }); server.listen(8080);
index.html
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>ちゃっとテスト</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> <script src="/socket.io/socket.io.js"></script> <script> $(function() { init(); }); var socket; function init(){ socket = io.connect(); //接続 socket.on('connect', function() { writeMessage('CONNECT SUCCESS','#999999'); }); //データ受信ハンドラ socket.on('message', function(message){ writeMessage(message); }); //サーバ切断 socket.on('disconnect', function(message){ writeMessage('切断されました','#999999'); }); } //メッセージをHTMLに書きこむ function writeMessage( message,color ){ if( !color ){ color = '#000000'; } message = '<div style="color:'+color+'" class="message">'+message+'</div>' $("#show").after(message); } //メッセージを送信する function submitMessage(){ var message = $('#message').val(); if( message == '' ){ return; } $('#message').val(''); socket.emit('message',message); } </script> </head> <body> <input type="text" id="message" /> <input type="button" value="送信" onclick="submitMessage()"> <div> <div id="show"></div> </div> </body> </html>
実行
上記2ファイルを保存して
node server.js
上記コマンドを実行
http://host_ip:8080/
にアクセス(host_idはサーバーのIPに書き換え)
node.js+socket.ioインストール
linuxでの作業内容です
node.jsインストール
wget http://nodejs.org/dist/v0.6.1/node-v0.6.1.tar.gz tar zxvf node-v0.6.1.tar.gz cd node-v0.6.1 ./configure make make install
npmインストール
npmはnode.js用のパッケージマネージャです
curl http://npmjs.org/install.sh | sh
socket.ioインストール
socket.ioはソケット通信のサーバー&クライアントサイドライブラリ。
web socket使えない場合に、commetに切り替えてくれたりとめんどくさい部分を色々吸収してくれる。
npm install socket.io #グローバルインストールは-gオプション