2011年5月28日土曜日

DR-150

DR-150の分離パッドを交換した。
2回目だ。
1万ページほどで取り替える必要があるらしいので、
今後も頻繁に取り替える事になりそうだ。
ところで、Win7ではユーティリティが動かなくて、
リセットが行えないのだが、これはどうしたものだろうか・・・
サポートを見ても特に何もないのだ。

DR-150を使うようになって、今まで本棚にあった本は、どんどんスキャンされ、
iPadで閲覧出来るようになっていく。

iPad のアプリ GoodReaderを使えばコメントや下線なども書き込みが可能。
PDFを閲覧しつつNoteSherifと切り替え自分のノートも取れる。
勉強するには非常に優れた環境だと思う。

DR-150だが、まっすぐにスキャンしようとしてもどうしても斜めになってしまう。
それも微妙に斜めなのだ。
斜めの補完をするためのチェックボックスにチェックが付いているにもかかわらず斜めなのだ。

裁断機も買った。
これも使い方が難しい。
Amazon で買った安い方の奴なので、裁断すると下の方がよけいに多く切れてしまう。
刃の付き方に問題があるのではないかと思う。
真上から押さえ込む形で、両刃にすれば片側に滑り込んでいかないはずなのだが、
刃は片刃になっている。

まぁ、スキャン結果としては大体満足している。
読めない訳ではない。
奇麗にスキャンできなかったとしても普通の本であれば問題無い。
ただ、漫画や図鑑など絵がメインの本であるとDR-150では厳しいかもしれない。
その時は面倒だけど、フラッドベッドのScanGearとか引っ張りだして使わないといけなくなるだろう。

2011年5月27日金曜日

CALayer での画像切り替えアニメ

ちょっとCALayerの設計を舐めていたかもしれない。
自前でOpenGLを使ったアニメエンジンを作って描画をしていたが、
CALayerは描画位置、繰り返し指定、グラフィックの差し替えなども出来るし、
アニメの終了タイミングを取得することもできる。
しかもそれはスレッドを意識しないでも良い形で可能なのだ。
(まぁ実はスレッドを意識しないと納得いかない問題もあるんだけど)
とりあえずコードを載せよう
---xxxview.h---
CALayer *Pic_Layer; // 画像を載せるレイヤー
NSMutableArray *Images; // アニメ画像を保存する配列

--xxxview.m---
どこかの初期化関数で
// イメージ配列を作る
Images = [[NSMutableArray alloc] init];
[Images addObject:(id) [UIImage imageNamed:@"img0.png"].CGImage];
[Images addObject:(id) [UIImage imageNamed:@"img1.png"].CGImage];
[Images addObject:(id) [UIImage imageNamed:@"img2.png"].CGImage];
[Images addObject:(id) [UIImage imageNamed:@"img3.png"].CGImage];

Pic_Layer = [[CALayer alloc] init];
Pic_Layer.frame = CGRectMake(0,0,120,120); // サイズ
[Pic_Layer setPosition:CGPointMake(62,61)]; // 場所
[Pic_Layer setContents:[Images objectAtIndex:0]]; // Imagesの0番目のイメージを初期イメージにする

---touchesBeganとかであたり判定した後にアニメーション開始------
[Pic_Layer setContents:[Images objectAtIndex:[Images count]-1]];

[CATransaction begin];

CAKeyframeAnimation *anim = [CAKeyframeAnimation animation];
anim.keyPath = @"contents";
anim.duration = 1.0f;
anim.values = Images;
anim.calculationMode = kCAAnimationDiscrete;
anim.repeatCount = 1;

[Pic_Layer addAnimation:anim forKey:@"contents"];
[CATransaction commit];

---deallocとかで解放---
[Pic_Layer release];
[Images release];

これやると、配列に指定していた画像の通りにアニメをしてくれる。
ついでに場所を変える事も出来る。(場所、フィルターに関する例はあちこちにある)

自前のアニメエンジンを作らなくても大体の事はプロパティアニメで出来ちゃうんじゃないだろうか

きっと誰でもが気になるのは
ココだろうと思う

[Pic_Layer setContents:[Images objectAtIndex:[Images count]-1]];

anim はスレッドの中で生成されて消えるので、アニメが終わったら contents の変更も無かった事になっちゃうらしい。
だから、Imagesはメンバに持っておいて消えないようにしておいた上で、
アニメの最初の段階で、最後の画像イメージをsetContentsしてしまえば、
アニメが終わったあとには最後のイメージが保持出来る。
やらないと、0、1、2、3までアニメした後に0に戻っちゃうのである。
なんか妙な話なんだけど、
devForum見てても別スレッドでsetContentsしてて全然絵が変わらないよ〜と言ってる人がいたので、
多分そういう事なんだろうと思う。
(冒頭で述べたスレッドを意識しないと納得いかない部分)

別スレッドとはいえ、setContentsしたはずなのに元に戻ってしまうというのは、
ちょっとまったくもって納得いかないので
なにか知ってる人がいたら教えて欲しい。

(追記)
以下2行を追加すると、最後のパターンが残るようになるのが分かった。
anim.removedOnCompletion = NO;
anim.fillMode = kCAFillModeForwards;

2011年5月24日火曜日

ドメインキングで借りたサーバ(その後)

ちょっと結構かなり気に入って来た。
ajaxplorer(3.2.3)はファイル名によって日本語のファイルの転送に失敗する。
フォルダも日本語は無理。
転送に失敗する場合はファイルの先頭を-にしたり+にしたりすると転送失敗しなくなった。

ajaxplorer の機能は素晴らしいので今後もきっと発展すると思う。
みんな使うべし!
http://www.ajaxplorer.info/wordpress/

あと、使い方がよくわからないのだけどxoopsを入れてみた。
cubeじゃ無い方。
どっちも使った事無いのでどっちがいいのかよくわからない。
とりあえずうちの作りかけHPはこちら
http://yachiyo.galeon.jp/
それとEC-Cubeで作った笹子堂せんべい屋のHPはこちら
http://sasagodo.galeon.jp/

どちらもgaleon.jpのサブドメインとして作った。
galeon というのは大航海時代の船でガレオン船から・・・

CALayer

最近CALayerを使いだした。
今まではOpenGLESオンリーだったのだが、
iPadらしく動くことを考えるとCALayerだとかUIViewだとかを使うほうがいいような気がして来た。
簡単にスレッドを意識せずにアニメを起動することもできる。
CALayerは便利だ。
パフォーマンスはまだ調べていないが、
きっと普通にゲームなんて組めるレベルのパフォーマンスは出ないだろうと思う。
ただ、ビューアとかを作るのであれば、CATransactionを使ってスレッド化したルーチンからページの先読みをさせたりも出来るし、コーディングのレベルはかなり落とせると思う。

CALayerは当り判定も出来るのだが、その前にポイントの変換しておかないといけない。

以下の例では、
touchはtouchesBegan のeventから画面上のタッチされた位置を設定している。
その後、BottomBar上にaddSubLayerしたLayerへの当り判定をするためにbarTouchPointへ変換している。

UITouch *touch = [event.allTouches anyObject];

touchBeganPoint = [touch locationInView:self];

// BottomBarレイヤー用に変換

CGPoint barTouchPoint = [self.layer convertPoint:touchBeganPoint toLayer:BottomBar];



実際の当り判定はこんな感じで、BottomBarにaddSublayerしたDoorへの当り判定が出来る

if([Door hitTest:barTouchPoint] ){

// 当たったよ

}



2011年5月14日土曜日

「常に最悪の事態を想定する」なんて事は無理である

東電に対して
「今回の地震による被害に関して、
 常に最悪の事態を考えてこられたかどうかについては疑問が残る。」
と、このような意見を目にする事があったのだが、、、

だが、しかし、東電は安全を第一に考えては来ただろう。

「最悪の事態を本当に常に考え続ける事が出来るかどうか」
と言う事に、自分自身含めて「無理」だと思っている。

人間は慣れてしまう。
いつも自分に厳しくあり続ける事は難しい。

前々から自分には失敗に関する持論がある。
「人間が失敗をするのはその人間が駄目なのではなく、
 その人間を取り巻くシステムが駄目なのだ。」

失敗を抑制するためのシステムが無かったら、
失敗をするのは当たり前なのだ。
次には失敗をしないようにするために、
システムを改築しなければならない。
この繰り返しによって、どんどん強固なシステムが出来上がる。

自分は東電を擁護することも否定することもしない。
というか、出来ない。

東電は極めて普通の日本の大企業だと思う。

2011年5月10日火曜日

Skype が MSに買収された

ちょ、まぢか!
MSは今までも競争相手を買収してつぶして来た。
今度も使い捨てなのか??

もったいない・・・
メッセンジャー無くしてもSkypeは無くすべきではないだろうに・・・

そもそも背景として、SkypeがWindowsCE版の開発を辞めていたというMSとSkypeの険悪な関係があった。
MSとしてはWindowsCE版Skypeが必要だったのかもしれない。
AndroidやiPhoneでもSkypeは動くのだが、メッセンジャーはWindowsCEでしか動かない。

だがしかし、自分の予想では今後MSはSkypeを食いつぶして捨て去る。
以下はそのシナリオ
1.数年後に買収された元SkypeのエンジニアはほぼMSを去り抜け殻と化す。
2.その間Android版、iPhone版メッセンジャーを開発。
3.そのタイミングで以下ように発表する。
  「MSでは、メッセンジャーがあらゆる点でSkypeより優れている事がわかったため、
   Skype事業はその役目を終了し、売却を決定しました。」

今の時点で実はメッセンジャーよりもSkypeの優れている点はあまり無いのだ。
ようするに、対応機種に由来するシェアだけの問題なのだ。
Android版、iPhone版のメッセンジャーを作ればSkypeは必要なくなる。

四季が二季になった

NHKを見てたら四季が二季になってしまったようですねと発言しているご年配がおられたが、
まったくその通りである。
しばらく前から四季は消え去り二季になってしまっている。
そして毎年、大型台風、竜巻、ゲリラ豪雨が頻発する。
まるで熱帯の雨季乾季のような有様だ。
もう化石燃料を使い続けるのも限界って感じがする。

2011年5月9日月曜日

ゲゲゲの家計簿

89歳で新連載ってすげぇ!!
なんて人だろうか、ギネス載るでしょこれは?

200円ランチという物を維持する試み

TV見てたら、200円ランチを維持するために裏庭でとれた物でランチを作っているところがあるということだ。
お客さんに出せるだけの食材を裏庭で作れるということは、
裏庭さえあれば、スーパーで買い物する必要が無いということだ。

つまり働かなくても食っていけるってことだよこれは?

地産地消どころじゃなくて、家庭菜園家庭料理(長いな)ということが、
おそらく誰でも出来る可能性があるってことです。

裏庭(なければ野菜工場)を家庭で持てば、
いつでも新鮮な野菜が手に入り、取れた物をご近所で交換すれば、レパートリーも増えまくりです。
スーパーで野菜買ってくるよりよっぽど自然だと思う。

MySQLでXML

以前Sedna XML DB を使ってみたが、MySQLでもXML型が使えるらしい。
ExtractValueとUpdateXMLというのが使えるので、XPathでいけるっぽい。
今回登録したレンタルサーバでも使ってみたいと思ってる。

ただ、残念なのはXPathが使えるのはMySQL5.1.5あたりかららしいのだが、ドメインキングに入っているのは5.0.77なのでちょっとだけ足りない。
動くかどうかまず簡単なテストをしてみないといけない。
もし動けば、マレーシアの知り合いから頼まれそうになってる「生徒さん管理」WEBページもドメインキングで作っちゃいたいなと思っている。

グループウェアの必要性

カレンダー、ファイル共有、ワークフロー管理、MindMap、UMLなどそれぞれ別個にWEB上にツールが存在する。
ドキュメントのリークが問題になるケースは多いのだが、グループウェアを使ってもそれは結局防げない。
既存のグループウェアをカスタマイズしまくったとして、
出来上がった物が企業のニーズに合っているかというと、実はもっとあれやこれやしたいことがあるのだ。

今のところ、WEB技術に求める物、実現できる物は合致していない。

原因の一つはWEB技術の進化が、市場の食い合いによって右往左往してきたことによる。
今ではメジャーであるJavaScriptは、そもそもネットスケープというブラウザのスクリプトだったし、方言も多かった。
Perlも生まれたときにはWEB用のCGIにしようとは考えられていなかった。

とかく新技術と言う物は脆弱性との戦いを強いられる。
生き残った新技術で出来ることを実現しようとしたり、今までと違う実装をしようとしたり、
WEB技術というものは試し試し進歩してきたのだ。

試し試し進歩してきたものをかき集め、一つにまとめたものがグループウェアだ。
既存のグループウェアを使うのではなく、かき集めればそれで足りる!

今回、ドメインキングでレンタルサーバを借りた。
笹子堂のWEBページをこちらに移すつもりで、EC-CUBEを入れた。
だいたいカスタマイズも終了。
テストで購入手続きしたりなんだりもしてみた。
まぁ大体OKだと思う。

続いて、自分の会社のためにグループウェアを検索したが、冒頭からの理由によりグループウェアの検索をやめた。
自分が一番欲しいものはセキュアなファイル共有なのだ気がついた。
どこでもファイルを見れるようにしたいのだ。
そこでAjaXplorerを入れた。
.htaccessを変更し、ファイル1つあたりの最大転送量を1Gにした。
php.ini ではなく、.htaccessで変更出来るとは知らなかった。

次はMantisでも入れようか、
会社の宣伝ページには、一枚かっこいい絵を貼っておけばいいんじゃないだろうかと思う。