Author Archives: ivoryworks

A Clockwork Canvas

『時計じかけのCanvas』です。
ネタ元観てません。

習作ですがHTML5 Canvasの時計プログラミングを始めました。
「書きました」ではなく「始めました」です。増えます。

github:https://github.com/ivoryworks/clockwork-canvas

習作なので見栄えとか全く考慮してないですが、githubのをそのまま上げてます。

demo:http://www.ivoryworks.com/canvas/clockwork-canvas/

要するにプログラミングの題材によく挙がる時計のオブジェクトです。
これをひたすら書いていきます。

一番オーソドックスなのは、秒針がコチコチ進むタイプ(demoの右上)ですが、それ以外は全てmsまで加味してなめらかに描画しています。
実際の時計でもこういったタイプのものがありますが、このなめらかに動く秒針はsweep針と呼ぶようです。
30msのインターバルタイマー(33FPS)を使用しています。

sweep動作する時計、2つ3つ書いてみると意外に気持ちよくて、いくつか書きました。
このプログラムでは、本来時計が持つべき「見て、時刻がわかる」機能の実装を放棄しています

これまでJavaScriptはまともに勉強したことなかったので、蝶の本を注文しました。週末手にします。
オレオレJSを脱却したいな。

ワーナー・ホーム・ビデオ (2010/04/21)

読:『Software Design 2012年3月号』

DSC_0586.JPG

出張に持ってくるの忘れました。
週末読みます。

昨日書店で見た『プログラミングAndroid』と蝶の本を買おうかと思う。

TシャツもらえるのでO’Reilly直販にしようか。

Gunma.web #8 でLTします

2012/03/03に開催されるGunma.web #8でLTします。

Gunma.web #8 告知

ATND:Gunma.web #8

『Ribbon Spread』というタイトルで内容はHTML5 Canvasを用いたArtworkです。

これまでは、LTのタイトルや内容は直前まで公開しない感じで来てましたが、今回はついカッとなってtweetしてしまったので、こちらでも事前告知。

今回は収容人数多めの部屋なので余裕あります。
Gunma.webはゆるい感じ(とか言うと怒られるかもしれないけど)のWeb勉強会なので、初めての方でも気兼ねなくぜひどうぞ。
たのしいよ。

adb shell からSDカードをアンマウントしたいのですがわかりません

はじめに
「adb shell からSDカードをアンマウントしたい」人ごめんなさい。
このエントリに解決方法は載ってません。ごめんなさい。

SDカードのアンマウントは、[Settings]→[SD card & phone storage]で開かれる『SD Card & phone storage settings』で行える。
(日本語の場合[設定]→[ストレージ]で『ストレージの設定』)

設定画面には以下が並ぶ。
これは AVD Android 2.3.3の場合だけど他のバージョンでも文言が違うだけで大体同じ。

『Unmount SD Card』をタップすれば、しばらくの後にアンマウントされる。

これが一般的なSDカードのアンマウント手順。

これをコマンドライン(adb shell)で行いたい。
adb shellからこんなかんじ。

1
2
# umount /mnt/sdcard/.android_secure
# umount /mnt/sdcard

先に.android_secureをアンマウントすること。
というか、いきなり/mnt/sdcardをアンマウントしてもfailed。

これでマウントポイント(/mnt/sdcard)の中身は空になるので、アンマウントできたかのように見える。

『SD card & phone storage』を開く。

手動でアンマウントした場合と状態が異なっている。
『Total space』と『Available space』はUnavailableではなく 0byteになっているし、『Mount SD Card』となるべき項目は、『Unmount SD Card』のまま。

実際にストレージがどのような状態になっているのかAPIで調べる。
次のAPIはSDカードの状態を文字列で返す。

1
String status = Environment.getExternalStorageState();

Environment | Android Developers

手動マウント時には、”mounted”つまりEnvironment.MEDIA_UNMOUNTEDとなるが、umountコマンドによる手段だと、”mounted”(Environment.MEDIA_MOUNTED)。

まだマウントされている状態なのかもしれない。
サイズ0のメディアをマウントしている状態のよう。

umountした後に何かしないといけないのかもしれないが。わからない。
おしえてエロい人。

Scribesの自動保存について

scribesWeb

先日から使用しているScribesというエディタ。
未だ使いこなしているとは言い難いけど気に入っている。
早いところ強力な補完機能の恩恵に与りたい。

ただ、使っている中でどうしても気になる事柄がある。

自動保存

Scribesは次に引用する設計思想によって、わずらわしい手間からユーザーを解放している。

仕事の流れの阻害を最小限にすること、おもしろみのない作業を自動化すること、不要な設定変更をなくすこと、シンプルさに基づいた理性的な編集作業を達成することを目標にしている。この目標を達成するために必要のない慣習は守っていない。
Scribes – Wikipedia http://ja.wikipedia.org/wiki/Scribes

ファイル保存もしかり、ユーザは毎度Ctrl+Sを押下する必要がない(もちろん任意のタイミングでCtrl+Sによる保存は可能)。
最後の入力から一定時間が経過すると自動的に保存される。

これには少し困ってしまう。
例えば、何か一時的なメモを取りたいがためにScribesを開き、書き入れる、自動保存によりファイル化される。デスクトップに。
自分にとって少なくとも2つの点で問題がある。

1. ファイル化するつもりがないのにファイル化されてしまう(破棄して終了するつもりだったのに!)。
2. GNOME3ではデフォルトでデスクトップにファイルが表示されない(~/Desktop/の中身は表示されない)。

なので、いつぞやの覚書が~/Desktop/に入っていたりする。
デスクトップに表示されないので、気づいてすぐに捨てるという事もできない。

おそらくは、『自動保存』というチェックボックスがどこかにあるのだろうと探したが、ない。
Scribesの設定メニューは非常にシンプルで、設定できる事はそれほどない。

困ったので情報探したら Scribes のフォーラムにそのままの話題があった。

Feature request: the ability to turn on/off autosave
https://bugs.launchpad.net/scribes/+bug/368414

「稼働中のサーバースクリプトをScribesで編集するとコーディング途中で保存されて大変な事になってしまうから自動保存とか困る」

この人は自動保存以前に問題が色々あるのだけど、こちらも自動保存で困っているので味方する事にして読み進めた。
驚く事に2009-04-28から始まったこの自動保存に関するスレッドは、実に2年近くもやり取りが成されている。

このスレッドから読み取れた事がいくつかあった。

1. Scribes自体に自動保存を無効にする設定機能は備わっていない事
2. Scribes開発側は今後それを実装するつもりがない事(おそらく未来永劫ない事)
3. 自動保存を無効にする場合のソースコード修正個所
4. 自動保存の有効無効を操作するPluginの存在

解決方法は判明したが、Scribesの精神を受けて、しばらくこのまま使ってみようかと心変わりしたりなんかしてるのだけど頭に来たらすぐ直す。

fedora16 ブート時にコケる問題(fsckで修復成功)

先日より、Fedoraがブート失敗するようになってしまった。
このまえレジュームの復帰失敗した事があったからそれかなー。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Booting 'Fedora (3.1.9-1.fc16.i686)'

Loading Fedora (3.1.9-1.fc16.i686)
Loading initial ramdisk ...

_Fedora-16-i686-: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
          (i.e., without -a or -p options)
dracut Warning: e2fsck returned with 4
dracut Warning: _Fedora-16-i686- contains a file system with errors, check forced.
dracut Warning: _Fedora-16-i686-: Inodes that were part of a corrupted orphan linked list found.
dracut Warning: **** An error occured during the file system check.
dracut Warning: **** Dropping you to a shell; the system will try
dracut Warning: **** to mount the filesystem(s), when you leave the shell.

dracut Warning:

Dropping to debug shell.

sh: can't access tty; job control turned off
(Repair filesystem):/#

fsckコマンドで何かしろと書いてあるようなのだけど知識が足りない。
exitで抜けるとOSが起動するので、そのまま使っていたが、このままではダメだろうと情報探した。

shell command to fix filesystem
http://ask.fedoraproject.org/question/682/shell-command-to-fix-filesystem

(Fedora16 betaで)tonybrowningさんが同じ問題で困っていた。

fsckによる解決方法が書いてあったのでマネしたら直りました。
fsckにより無事修復されたようです。
なお、「fsckコマンドは場合によってファイル(システム)を破壊してしまうかもしれないのでバックアップ必要マジ」という情報は後になってから知りました。あぶない。

手順:
まず、blkidでブロックデバイスの情報を表示する

1
2
3
4
5
# blkid
/dev/sda1: UUID="..."
/dev/sda2: UUID="..."
/dev/mapper/vg_hostname_lv_swap: UUID="..."
/dev/mapper/vg_hostname_lv_root: LABEL="_Fedora-16-i686-" UUID="..."

次に、fsckにブロックデバイスを与える。

1
fsck -y /dev/mapper/vg_hostname_lv_root

ファイルシステムのチェックや修復が行われる。
/dev/sda2を指定しても同じはず。
LABELにFedora-16とあったから/dev/mapperの方を選びました。

終わったらexitで抜ける。

1
# exit

改めて再起動したら問題の現象は発生しなかった。
ok.

読:『HTML5 Canvas』

DSC_0559.JPG

買うの後回しにしようと思ってたけど…。

物理アニメーションをサンプルにしているのが興味深い。

何か書いて(描いて)みようかと思う。

安藤 慶一
オライリージャパン (2012/01/21)

読:『Software Design 2012年2月号』

DSC_0556.JPG

DebianとHTML5。

読むのは週末になりそう。

Debianはまだ一度も触ったことないな。

OpenCV-2.3.1 Android プロジェクトのエラー

AndroidでOpenCVはじめました。
FedoraでEclipse使うのは初めてなので、開発環境の構築からなにやら色々やりながら泣きながらなんとか実機(SHARP IS03)でOpenCVのサンプルプログラムを実行。←いまここ

最初、
OpenCV-2.3.1のプロジェクトをインポートすると、OpenCVのプロジェクトがエラーとなりビルドできない。SampleやTutorialのプロジェクトも引きずられる。
Eclipseのコンソールには以下のメッセージ。

1
2
3
[OpenCV-2.3.1] Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead. Please use Android Tools > Fix Project Properties.
[OpenCV-2.3.1] Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead. Please use Android Tools > Fix Project Properties.
[OpenCV-2.3.1] Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties.

OpenCV-2.3.1のプロジェクトを右クリックして、メニューから
[Android Tools] -> [Fix Project Properties]
で直る。
これ、メッセージの通りであるけど、Pleiadesなどで日本語化してある場合は、
[Androidツール] -> [プロジェクト・プロパティを修正]
となる。

オライリージャパン (2010/09/04)

Scribesがクラッシュする現象

scribesWeb

 先日から使用しているエディタScribesで特定のファイルがクラッシュする現象に悩んでいる。
 原因がよくわかっていない。

1
2
3
4
5
$ scribes ivoryworks_201201.txt
$ /usr/lib/python2.7/site-packages/SCRIBES/GUI/MainGUI/Buffer/CursorPlacer.py:29: GtkWarning: gtktextiter.c:3818: Incorrect byte offset 42 falls in the middle of a UTF-8 character; this will crash the text buffer. Byte indexes must refer to the start of a character.
  iterator.set_line_index(index)
**
Gtk:ERROR:gtktextsegment.c:196:_gtk_char_segment_new: assertion failed: (gtk_text_byte_begins_utf8_char (text))

 このファイルは、Dropboxで共有していて、Linux(Edit:Scribes)とAndroid(Edit:Jota Text Editor)で編集しているのだけど、お互いに更新を行い、特定の状況(ファイルの状態)に陥ると上記のようにクラッシュする。

 文字コードはUTF-8。
 vimやgeditでは特に問題なく開ける。
 BOMの有り無しが影響しているのかもしれないと思い、以下の検証をする(この手段で正しく検証できているかどうか自信がない)。

1
2
3
4
5
$ nkf -s ivoryworks_201201.txt > ivoryworks_201201.txt.shiftjis
$ nkf -w ivoryworks_201201.txt.shiftjis > ivoryworks_201201.txt.utf8
$ nkf -w8 ivoryworks_201201.txt.shiftjis > ivoryworks_201201.txt.utf8_BOM
$ scribes ivoryworks_201201.txt.utf8
$ scribes ivoryworks_201201.txt.utf8_BOM

BOMの有り無しに関わらず問題なく開ける。

1
2
3
4
5
6
$ diff ivoryworks_201201.txt ivoryworks_201201.txt.utf8
$ diff ivoryworks_201201.txt ivoryworks_201201.txt.utf8_BOM
1c1
< 2012/01/15
---
> 2012/01/15

 ちなみに、Android側で編集した後に発生するかと言えば、必ずしもそうではない。
 常用したいので何とか解決したいところ。