Runner in the High

技術のことをかくこころみ

Chrome Dev EditorではGitで512kb以上のコミットをプッシュできない

Error whilst pushing changes #3456 - Chrome Dev Editor
Git push fails for huge changes. #2553 - Chrome Dev Editor

詳しくは上の2つのチケットを参照のこと。
Chrome Dev Editor(CDE)ではjs-gitというGitをJavaScriptで実装したものを利用してコミットやリモートリポジトリへのプッシュなどができるのだけれど、調子に乗って大きな変更を一気にプッシュしようとすると、失敗して痛い目を見る。画像は準備できなかったが、確かダイアログで fatal: The remote end hung up unexpectedly が出てくるはず。
Unfortunately the browser https protocol only allows to send a packet max of 512KB. For security purposes the browser explicitly disallows to set dangerous headers to have a open connection. This is currently a limitation of CDE. We are working on a more fledged port of libgit2 which will fix this.
Sorry that you are running into it :-(
詳しい理由は分からないが、どうやらhttpプロトコルのセキュリティに関係しているらしい。ワークアラウンドとしてはできるだけコミット毎にこまめにプッシュすることくらいか。Githubのチケットを見ないと情報が載ってないほどメジャーではないバグ(?)らしいのでとりあえずメモ。ちなみにこのときのバージョンは0.19.3493

Acer C720のこと

最近ちょっとあってAcerChromebook C720を手に入れたので
これについて軽く記事を書こうかなと思った今日このごろ

 


マシンの写真とかはそこらへんにごろごろしてるのでこんなもんで。

【スペック】
CPU: Intel(R) Celeron(R) 2955U @ 1.40Ghz 2core
Memory: 4G
Storage: SSD10G

充分軽い

 普段はmobusのバックパックで学校に持って行ったりするけれど、まずそんなに負担にはならない。MBAと比べたらそりゃ重いけど。基本的にスポーツといえばサッカーくらいしかやったことのないthinな人間でもこの体感、というくらいの軽さということで。

ぬるぬる動く

 スペックを見るとCeleron 2955Uとさほど早いCPUではないにもかかわらずストレスを感じさせないスピードで動く。そもそもできることが限られているという点で、マシンに負荷をかけることが難しい気がする(タブを100個開くとかすれば重くなるけどね!)

 特筆すべき点は起動・シャットダウン・スリープの速度MBAを持ってないからわからないけれど、やつらに匹敵するかそれ以上のレベルで早い。Amazonか何かのレビューで起動時間を測定する動画があったけれど、ぜひそれを見て欲しい。この点でのストレスは皆無。

 加えて、SSDなのでHDD特有の動作音がなくて静かなことと、忘れてはいけないのがWi-Fi接続までの速さ。これはもう本当に抜群に早い。環境によってスリープ復帰後とか起動直後のWi-Fiの接続にちょっと時間がかかってしまうことは度々あるけれど、C720ではまだそういうのは体験していない。この点は非常に優秀。

バッテリの持ちがやばい

 まだ一ヶ月ちょいしか使ってないから、ということもあるかとは思うけれど、バッテリの持ちはその辺のラップトップの比じゃない。スマホとかだと、バッテリの消費を抑えるために機内モードにしたりするけれど、そもそもそういうことをする必要なく、よっぽどぶっ続けでYoutubeでHD動画を見たりでもしなければ、半日くらいは持つ余裕を感じる。Lifetouch NOTEを持つ人間としては、あのマシンのバッテリの持ちにも相当のものがあるとは思っていたけれど、それに匹敵するレベルで(ネットブックという機能の上でのアドバンテージを加味すれば)最高のマシンだと思った。

個人的な総評(IMAO)

 まず、自分の基本的なChromebookでの作業習慣について説明しないと、評価の指針というものが理解されないと思うのでこれについて少し。Chromebook上でやる作業は、学校で提出するレポートを書いたりその情報収集をしたり、あとはたまにSSHでリモートの作業をしたり、と言った感じ。それ以外に基本的にはYoutubeで音楽を聴いたり動画を見たり、ネットサーフィンをしたりする程度。Google Keep, Text, Writebox, Serverauditorがヘビーユースアプリ。

 開発をやる人間が決して忘れちゃいけないことは、Chromebookでは開発はできませんよ、ということ。開発ができない、というのはもしかしたら語弊かもしれない。というのも、Chrome Dev EditorでChrome AppもDart Appも作れるし、ShifteditとかCodeanywhere、KodingなどのIDEも使えるっちゃ使えるわけで。ただ、個人的に一番負担になっているのは、gitとかsubversionとかのバージョン管理システムが使えないこと。croutonやchubuntuを導入するというワークアラウンドがあるのも事実ではあるけれど、そういうことではなく、ChromeOSとして使いたいのに、使えないということに負担を感じているということ。ChromeOSはそれ自体とても完成・洗練されていて、とても好きだから、そこにまた何か入れてやろうとは正直思わない。これとは別に、FTPクライアントでろくなものがないというのもどうにかしたいなという感じにはなっている。これはこれで自分で今度作ろうかな。

 なんとか言ってきたけれど、それでもなんだかんだ言ってChromebookは着実に僕の時間を奪う存在になりつつある。なにより普段からゴリゴリとコードを書いてコミットするわけじゃないし、むしろブラウザが使えるだけ、ということがいかに自分の作業内容へのフォーカスを後押ししてくれているのかがChromebookによって実感できた気がする。MacLinuxWindowsもそれぞれやっぱりできることの幅は大きくて、必ず持っていなければならないマシンであることはわかるけれど、そこにChromebookが入ってくることによって、その存在価値が無になるとは思えないし、とりわけ上のOS(Macは違うのかもしれなけれど)に特有の鈍重さになんらかの不満を持っているのであれば、むしろChromebookはその不満点を補う形で、実際に僕がそうだったように、ユーザーをサポートしてくれるだろうなと感じた。

結論: Macユーザー以外は買い

chrome.browsingDataの呼び出し回数制限

どうやらchrome.browsingDataには規定時間内の呼び出し回数制限があるらしい。
確かにコンマ何秒位の差で何度も呼び出されちゃオーバーヘッドも大きそうだしね。


みたところ、1秒未満の間に何度も呼びだそうとすると、エラーになるらしい。
もしかすると他にもこういうエラーを吐くAPIがあるのかもしれない。

EclipseでAndroidエミュレータ上のSQLiteのデータを見る

 EclipseAndroidエミュレータ上のSQLiteのデータを見るためのプラグインにはいろいろあるかとは思いますが、今回は最もシンプルで使いやすそうなQuestoid SQLite Browserとやらを使ってみます。

導入

  1. ここからQuestoid SQLite BrowserをEclipseにインストールする(Eclipseのフォルダ内にあるpluginsフォルダに放り込む)
  2. 再起動して有効化されているかどうか(dbファイルを選択したときに、右上のアイコンがクリックできるようになるかどうか)を確認。
  3. 拡張子がdbのファイル以外は選択しても中身を見れないので注意。
 

【コード】

package com.example.dbtest;

import android.app.Activity;
import android.widget.Toast;
import android.os.Bundle;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class MainActivity extends Activity {
private final String DBNAME = "test.db";
private final String TABLE_NAME = "Info";
private final String[] column = { "name", "job", "age" };
private SQLiteDatabase database;
private Cursor cs;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

database = this.openOrCreateDatabase(DBNAME, MODE_PRIVATE, null);
database.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (name TEXT, job TEXT, age INTEGER);");
database.execSQL("INSERT INTO " + TABLE_NAME + " (name, job, age) VALUES('Jonathan', 'Engineer', '24');");
database.execSQL("INSERT INTO " + TABLE_NAME + " (name, job, age) VALUES('Bobby', 'Teacher', '45');");
database.execSQL("INSERT INTO " + TABLE_NAME + " (name, job, age) VALUES('Ricky', 'Taxi Driver', '32');");

cs = database.query(TABLE_NAME, column, null, null, null, null, null, null);
cs.close();
}
}
  • openOrCreateDatabase関数で、データベースファイルが存在していればファイルを作成、なければ新たにファイルを作成して、そこにデータを格納する。
  • SQLiteDatabase型変数のdatabaseから最後にclose()が呼ばれていないことに関して違和感を覚えるかもしれないが、最終的にDalvikVMによってオブジェクトが破棄されるため問題はない。だが、Cursorに関してはしっかりとclose()を呼んでおく必要あり。 (詳しくは「SQLiteをつかうための注意点」を参照)

【中身を見る】

Questoid SQLite Browserを起動するとこんな感じの画面に。
  • データベース構造」タブからテーブルの一覧とそのカラムが見られる。
  • Browse Data」タブからテーブルを選ぶとその中身が見られる。
 
ちなみにQuestoid SQLite Browserからできるのは、テーブルのカラムやその内容を見たりすることだけで、データの修正や追加はできません。あしからず!

(参考)http://www.coderzheaven.com/2011/04/18/sqlitemanager-plugin-for-eclipse/

LINEで「正常に処理できませんでした」が出る

 

 LINEストアにだれかが2回ほどログインしようとしたので、パスワードとメールアドレスの変更を試みるも、「An error has occured. Please try again later.」というダイアログが出て先に進めない。
※ちなみに日本語版だと「正常に処理できませんでした」という文章になる。

【対処法】
Wi-Fiをオンにする

(参考)
http://did2memo.net/2014/06/24/naver-line-e-mail-address-registration-error/

Chrome.storage.syncを使ってみる

Chrome.storageを使うと、異なるマシン上のChromeブラウザ間で同じ拡張機能が保存しているstorageを同期してくれる。

このサンプルの機能は、テキストボックスに入力された文字列をChrome.storage.sync.setでストア。起動時にChrome.storage.sync.getで読み込んで上のdivに内容を表示。同期されていれば、その内容が異なるマシン上で同じになる、というもの。 

  • setもgetも何らかのエラーが起きるとChrome.runtime.errorに文字列をセットする。ちなみに、getで指定されたデータが存在しなかった場合にはundefinedが帰ってくるだけでエラーにはならないので注意。
  • setでデータをセットするときには連想配列でキーを指定すること。ここがlocalStorageと違うところ。
  • データが同期されません!!という場合には、chrome://settings/syncSetup拡張機能にチェックが入っているかどうかを確認のこと。
  • うまく機能していれば、chrome://sync-internalsのSync Protocol Logとか、Transient CountersのCommited Countが増えたりする。

iRiver B100 のレビュー


かなり前にiRiverのB100を買った。
いちおう生産は終了したけれど、レビューだけ記事にしておく。

【所感】

  • うしろの部分が若干熱くなる(動画を連続して見ているときなど)
  • トップメニューの反応は若干遅い
  • Ogg Vorbisのファイルにおけるジャケットの読み込みがされない(これはOgg Vorbisに関連する問題で、Ogg Vorbisバイナリデータを格納できない)
  • 動画再生時に最初の数秒がうまく再生されないことがある
  • 一度、外出していたときにフリーズが発生したことがあったが、再起動のスイッチはiPodなどのように特定のボタンを同時押しなどではなく、小さな穴の中にあるボタンなので、再起動のためにはシャーペンなどが常に必要になる。
  • PCとの接続をしたあとなど、充電が十分なはずなのに、電池切れのマーク表示されることがあるが、その際には再起動をすればよし。
  • ジャケット画像はそれぞれ縦横の比率があっているものを使用するのが望ましい。アルバム一覧などのジャケット画像を表示するところでは、縦横比があっていないと、変な黒い線の様なものが表示される。
  • リプレイゲインの機能は搭載されているmp3gainなどを用いればOK
  • エモーションというものがあり、それぞれの楽曲の雰囲気(SUNNY, RELAX, CALM...など)を自分の好きなように登録できる機能がある。だが、なぜか再起動するごとに登録が全てリセットされる
  • シャットダウンモードとスタンバイモードがあるが、スタンバイモードの電力消費がひどいのであまり使わない。しかし、スタンバイモードにしておけばほとんどといっていいほどフリーズをすることがなくなるので、この点はよい。
  • 搭載されているサラウンドシステムはすばらしく、普通の音楽プレーヤーとは違った効果のある音楽を楽しむことができる。しかしながら、この効果を存分に使うには、その楽曲自体の音質やイヤホンの能力なども関わってくるため、そのあたりは自分の好みに合うようにそろえるべき。
  • ロックの画面は画像のなかから自分で設定することができる。
  • メモ機能があり、手書きでメモをすることができる。しかし、なぜか、英語入力の機能を搭載しているにもかかわらず、メモの文章入力はすることができない。
  • 電卓、ファイルブラウザがある。電卓は普通の電卓とかわらず、最高桁数は11桁。ファイルブラウザは、音楽や画像、テキストファイルなど、対応しているもののみ表示可能
  • 録音の音質についてはなかなか良好。可もなく不可もなく。ライブ演奏などを録音すると割れる程度。
 
ほとんどマイナスポイントばっかりみたいに見えるけれど、なんだかんだ言って約二年程度使っていて不便に感じたことは一度もないので、単なる音楽プレーヤー以上の質を求めなければよい製品だと思う。

履歴への記録を防ぐChrome拡張機能「History Blocker」を作った

History Blocker
 

気づいたらエロサイトを見始めてた、という状況になってからシークレットウィンドウに切り替えてももう遅い。履歴にはばっちり残っちゃってる。

こんなトラブルを防いでくれるのが History Blocker(IzumiSy/HistoryBlocker)
拡張機能をONにしたら、そのとき見ているウェブページ含めてONにされているあいだに見たページが履歴に記録されるのをばっちり防ぎます。

DOWNLOAD >> Chrome ウェブストア - History Blocker