2011年1月31日月曜日

我が家の玄米事情

 こころなしか、玄米という変わったお題が出ているような気がしたので・・・。

 炊飯器を使わないで飯を炊く家庭では、「玄米」というお題目は、切っても切り離せないでしょう(ほんまかいなー)。栄養価が高く、健康ブームにものって、いかにも体に良さそうな玄米ですが、注意すべき点が、ひとつだけあります。農薬が残留しやすい部位でもあるという点です。しかし、無農薬栽培というのは並大抵の事では実現できません。うちの近所に、お米おたくの米屋さんがあります。そこで扱っている米でも、減農薬栽培の米であり、無農薬栽培ではありません。と、この間読んだ「究極の田んぼ」では、不耕起栽培で無農薬栽培を実践しているという話でした。農業系のシステムをやっている方に、究極の田んぼを読みましたとメールしたところ、楽天でも「不耕起栽培 米」で検索すれば、買えますよーと、教えていただきました。
 タイミング悪く、5分づき米を買ったばかりだったので、まだ、不耕起栽培米は宿題です。玄米で買おうと思ったら、メールで連絡をして、お願いをしないと買えなさそうです。よくよく見ると、除草剤を2回使用とか書いてあるものもあります。なるほど、近所の米屋で扱ってるのも、この手の米なのかもしれないです。
 さて、5分づき米と書きましたが、そう、完全無欠の玄米を食べるのは根性が要ります。やはり白米は、うまい・・・。7分づき米とか、いろいろ試してみて、まぁ、うちでは、せいぜい5分づきぐらいまでだよね?って事で、落ち着いてます。完全無欠の玄米の弁当は、かなり辛いものがありまふ・・・。

2011年1月30日日曜日

今週も坊ちゃんスキー

 今日は、結構寒くて雪が降っていた。そんな中、今週も「おやつ」で釣って、意気揚々と手稲ハイランドへ。

 この天気では、山頂で飯を食うのは苦行以外の何者でもないので、センターハウスで買ってきたパンを食べた。コントロールできるようになってきたので、今日は、何の問題もなくすんなり降りて来れるだろうと山頂までリフトで上がったが、あまり進歩が無かった。まぁ、雪も凄くて、坊ちゃんもメゲ気味な雰囲気・・・。最後のパラダイスで、先週同様、坊ちゃん抱えてブッ飛ばしたら、ここは結構、喜んでくれた。

 スキーは楽しく無いと思われても困るので、一本滑っただけで、センターハウスへ退避。しばらく休憩して、天候の回復を待って、いつもどおりオリンピアまで滑る事に・・・。交渉の末、チェロスというオヤツを買ってあげる代わりに3点分のリフトに乗る事になった。ボーゲン養成ギブスを付けて滑らせて、うまくなったのだが、滑る姿勢が後傾で良くない。そろそろ、ボーゲン養成ギブスは外し時だと判断し、途中からは、ボーゲン養成ギブスを外して滑らせた。やっぱり板がふらついたり、バランスの均衡が破れて片すべり状態になったが、滑っている場所が緩斜面なので、思惑どおり、修正されていく。やっぱ子供は凄い。

 ゴンドラに乗りたい!というので、もう一度ハイランドからオリンピアまで降りるコースを滑った。ボーゲン養成ギブスを外して、頼れるものが無くなったので、姿勢も安定し、悠々と滑っているように見える。下まで着いたら、また雪が激しく降ってきたので、早々に切り上げる事にした。滑りが、そんなに楽しくないうちに、コンディションの悪い状況で滑らせてスキー嫌いになっても困る・・・。

 そろそろ、こけた後の起き上がり方とか、スキーのずらし方とか、止まり方を伝授したいところだ。ボーゲン養成ギブスを外したので、スケーティングも教えれるのだが、スキーでスケーティングを習得するのは効率が良くない…。どういう順序で教えていくべきか、悩みどころだ。しばらく山頂に行くのは止めて、リフトに乗って緩斜面で練習させるのが良い気がする。

2011年1月23日日曜日

スキー





坊ちゃんを連れて、手稲ハイランドへ。
練習の甲斐があって、ようやくスキーで手稲山頂に到達。
天気が良かったので、山頂で景色を眺めながら昼飯を食べた。
もりろん滑ったのは、シティビュークルーズからナチュラル、パラダイスのコースです。女子大に合流してからは、坊ちゃん抱えながらブッ飛ばしました。


おまけ。正月に行った叡福寺の写真

ProgramData 下に保存された画像の編集 糞 備忘録

どんなに頑張っても ProgramData 下にある画像ファイルを一般的な操作で直接編集する事はできない。
管理者として実行とか、そんな事は、やろうとするだけ無駄骨。


  1. マイピクチャなど普通のフォルダへ、編集したい画像をコピーする。
  2. 画像を編集し、保存する。
  3. マイピクチャで、編集した画像を選択し、コピーする
  4. ProgramData 下に移動して、ペーストする
  5. 管理者パスワードを聞かれるので、入力する

このように、糞のような手順を踏むこと

2011年1月22日土曜日

ebook備忘録

紙本を買うという愚を繰り返さないために・・・
オライリーの本は、紙媒体じゃなくて、電子版が買えるよ。
わざわざ、高い紙本を買って、スキャンしなくてもいいよ。
電子版だと検索もできるよ。
後から、更正版も入手できるよ。
オライリーの電子本は、自由に持ち運べるよ。
紙の資源を無駄にしないよ。

最近のマイブーム

 今、すごい気になっているのが Cassandra だ。ちょっと弄ってみたけど、面白い。個人が大規模なサービスを立ち上げるベースが、こんなに簡単に出来上がってしまっているのに愕然とします。こんなものがホホイと出てくる背景を考えると、Facebook は次世代を担う企業なのかもしれないとも思います。そう考えて、facebook で中学から高校の知人の名前を数人ほど入力して検索してみましたが、さすがにひっかかりませんでした。日本では、まだまだ mixi が強いって事なのかな? facebook は、思っていたよりもオープンで好感が持てました。しかし、人と人との距離の概念が近すぎて、私には耐えれそうもありません。facebook への入会は、やはり、やめました。まだ、Twitter の方が、お気楽そうです。

 ひそかに、リアルタイム検索もお気に入りです。普通の検索とは違って、ここ最近、誰がどんな事を考えているか?が見えて、面白いです。そういう意味では、ブログ検索もおもろいなーと、改めて思いました。
 
 「Hadoop本」も楽しみです。

 ひとつの企業がソーシャルなサービスを創るのも面白いけど、pgp のように相互署名する形で、オープン・ソーシャルなプラットフォームが、Cassandra を通じて連帯し、pgp のリングサーバのように、サーバが登録されて DNS を介して負荷分散協調をしていく。そうする事により、真にソーシャルで、適度に分散されたオンライン組織というものが生まれないだろうか?適度に分散されれば、Winner takes all の力も分散されたりしないだろうか?こんな妄想をしてます。

2011年1月20日木曜日

select tag がいけてない

 いちおう、ぼやいておこう。
select タグであるが、size=N を指定する事によって、一度に表示する要素数を制限する事ができる。しかし、size=N を指定すると、ドロップダウンリストが、リストボックスになってしまう。なんじゃこりゃーーーーーーー。すげー、使いづらい。誰も何とも思わないのか???
 いやいや、size=N を指定しなくても、ブラウザが表示する要素数は、良きに計らってくれますよ・・・。ま、基本、そうなのだが、firefox の場合、ウィンドウが最大化されていない状態で、中途半端な位置にドロップダウンリストがあると、画面外に要素がはみ出てしまって、まったく見えないのである。
 HTML5 になったら、さぞかし select 要素も進化している事だろうと期待して調べてみたが、さっぱり状況は変わらない。結局、生HTMLに求められるものは、なんぼも無いって事でいいのだろうか?ドロップダウンリストの状態で、最大要素数を制限したいのだが、どないもならん。javascript で、実現したものは見つかったが、タブキーでリストの要素に飛んでしまうのが気にいらなかったし、たったこれだけの事なのに対処が大げさすぎる。doctype(htmlバージョン)でも対応できるのかもしれないのだが、なんだかなぁーなのである。

openlayers de touch

 いちおう OpenLayers の ML には入ってますが、忙しくて、こいつもロクに読んでる時間が無い。そんな中、さっぱりと進展してるのかしてないのか、わからないのが、モバイル端末のマルチタッチ対応だ。現在バージョンは 2.10 で、対応していない。また、開発途中のバージョンでは対応しているような噂もあるのだが、少なくとも 2.x 系では確認できなかった。
 とりあえず、動く現物は?といえば、ここのもので、こうした方がいいんじゃないの?とコメントを入れてみたが、コメントは消されてしまった。
 まあ、あとでコメントした方法を自分で確かめてみたら、正しく動作しなかったので、ゴミコメントだと受け取られてしまったのかもしれない。一応、これで移動は、まともに動くようになりましたが、なんつう、やっつけ仕事…。

/* touch.js
 * from: http://docs.opengeo.org/demo/OL/ (whit)
 * cleaned up by: Anders Brownworth http://anders.com/
 * ommented out "event.preventDefault()" for OpenLayers-PopUp-Feature support by: Julian from Germany
 * fix move method by: miyuki oki
 */

TouchHandler = OpenLayers.Class( {
    touchStartX: null,
    touchStartY: null,
    scale: 1,
    skip:1,
    limitPansPerMove: 2,

    /*
     * parameters
     * limitPansPerMove - {Number} experimenting if we can less jerky panning by
     * limiting the number of pan calls. the higher the number the more pan calls skipped.  
     */

    initialize: function( map, limitPansPerMove ) {
     this.map = map;
     console.log( "limitPansPerMove " + limitPansPerMove );
     if ( limitPansPerMove ) {
         console.log("no  " + limitPansPerMove);
         this.limitPansPerMove = limitPansPerMove;

     }

     // monkey-p map to include limitZoomOut
     map.constructor.prototype['limitZoomOut'] = function( ) {
            if ( this.getZoom( ) <= 2 ) {
                return true;

            }
            return false;

     };
     this.hook_touch( map );
 },

    touchstart: function( ) {
     var inDoubleTap = false;
     var doubleTapTimer = false;
     var zoom = null;

     var obj = this;
     return function ( event ) {
         dec_debug(event);
  //event.preventDefault( );
  if ( event.touches.length == 1 ) {
      if ( !doubleTapTimer ) {
   doubleTapTimer = setTimeout( function( ) { inDoubleTap = false;
           doubleTapTimer = false; },
       500 );
      }

      if ( !inDoubleTap ) {
   inDoubleTap = true;

      }
      else {
   inDoubleTap = false;
   var out = "out";
   if ( zoom == null || zoom == out ) {
       obj.map.zoomIn( );
       zoom = "in";

   }
   else {
       obj.map.zoomOut( );
       zoom = out;

   }

      }

      var touch = event.touches[0];
      obj.touchStartX = touch.clientX;
      obj.touchStartY = touch.clientY;

      if ( touch.target.width === 128 ) {
   return false;

      }
      else {
   return true;

      }

  };
  return null;

     };

 },

    pan_touch: function ( ) {
     var obj = this;
     return function ( e ) {
         dec_debug( event );
  e.preventDefault( );
  if ( e.touches.length == 1 ) {
      var touch = e.touches[0];
      //hack - limit number of calls to pan
      //if ( obj.skip++ % obj.limitPansPerMove === 0 ) {
              //obj.map.pan( obj.touchStartX - touch.clientX, obj.touchStartY - touch.clientY );
   var deltaX = obj.touchStartX - touch.clientX;
   var deltaY = obj.touchStartY - touch.clientY;
   var size = obj.map.getSize();
   var newXY = new OpenLayers.Pixel( size.w/2 + deltaX, size.h/2 + deltaY );
   var newCenter = obj.map.getLonLatFromViewPortPx( newXY );
   obj.map.setCenter(newCenter, null, true);
   obj.touchStartX = touch.clientX;
   obj.touchStartY = touch.clientY;

             //}

            }

        };

    },

    zoom_guesture: function( ) {
     var obj = this;
     return function ( e ) {
         dec_debug( event );
  e.preventDefault( );
  if ( e.scale > 1 && e.scale != obj.scale ) {
      // if ( this.map.limitZoomIn( ) == false ) {
      obj.map.zoomIn( );
      // }

  }
  else {
      if ( e.scale < 1 && e.scale != obj.scale ) {
   if ( obj.map.limitZoomOut( ) == false ) {
       obj.map.zoomOut( );

   }

      }

  }
  obj.scale = e.scale;

     };

 },

    hook_touch: function ( ){
     var map = this.map;
     map.div.addEventListener("touchstart", this.touchstart(), false);
     map.div.addEventListener("touchmove", this.pan_touch(), false);
     map.div.addEventListener("touchend", this.zoom_guesture(), false);
     map.div.addEventListener("guestureend", this.zoom_guesture(), false);

 }

    } );

// debugging
function repmsg( id, msg ) {
    node = document.getElementById(id);
    if ( node != null )
 node.innerHTML = msg;

};

function dec_debug( event ) {
    repmsg( 'debug', event.type + ' ' + xystr( event ) );

};

function xystr( event ) {
    var coords = " ";
    for ( i = 0; i < event.touches.length; i = i + 1 ) {
        coords = coords + " x:" + event.touches[i].pageX + " y:" + event.touches[i].pageY;

    };
    coords = coords + " s:" + event.scale + " r:" + event.rotation;
    return coords;

};


追伸:iPad の Safari では、一度ロードされた画像のメモリが解放されないという問題があり、touch どころの話ではないようだ。また、初期 Android では、マルチタッチに対応していないので、ML上でも拡大ができないと悲鳴が上がっていた。

2011年1月16日日曜日

いろいろ

今日は大雪でJRがだいぶとまってた。クラウド系の本を4冊ほど買った。OpenMPとIntelTBBの違いがよくわからないので、TBBの本を買った。それ以外の技術書は読む時間が無いのであと3冊ほど読みたかったが、買う事自体から断念した。こうやって、どんどん選択肢が無くなって行くのだ。どうせ、うちは技術力も無いから、どうでもいいんだろうけど…。
どうでもいいが、最近はmacのハード面に凄い惹かれます。嫁さんの両親用のノート買うのにウィンドウズマシンじゃなくてもええやんって気になります。

2011年1月15日土曜日

kinect and 3dprinter and airmodel

 この記事を見て、いろいろと妄想した人は多いことだと思う。kinectを使って、簡単に3D計測も出来るのであれば、モデリングも簡単にできるよね?
 モデリングが簡単にできるのであれば、一歩すすめて、自分プラモデル用アプリも作れるよね?
 3Dプリンタなんて、今これぐらいで買える時代だし、印刷代行業者もあるぐらいだから、アプリから自分プラモデルも作れるよね?
 遊び心で、変テコな自分アプリも作れるよね?きもかわいい自分プラモデルもいけるよね?

 ここんところ考えているうちに、今、時代に必要とされているのは「礼」に違いない!という結論に至りました。おそらくGIGAZINEさんも同様の結論です。対価を払うに至る根本の教育が必要なのです。
 「礼」とは、挨拶の事を意味するのではありません。相手を尊重する気持ちと態度。そういう事にしておきます。もちろん、挨拶も大切です。論語の言う「礼」の事です。

 

買った本

 「人間はガジェットではない」サブタイトルの「IT革命の変質とヒトの尊厳に関する提言」に惹かれた。出だしからしてカッコイイ。しびれる。グーグル脳に冒されないよう読んでおくべきです。
 「フェイスブック若き天才の野望」ソーシャルネットワークがこれからの主流だと見る向きも多い中、この本は読んでおかないと嘘でしょう。ITで飯食うなら外せないです。
 「スティーブジョブズ脅威のプレゼン」はい、今頃買いました。読もうと思いながら緊急性は無いだろうという事で後回しにしてました。改めてデザインという視点で読んでみようと考えてます。
 「ひろゆき・オンナは苦手・田母神」西村博之さんと元自衛隊航空幕僚長・田母神俊雄さんの対談です。この国の自衛隊とか、核とか、愛について語りつくす。ちょっと気になって読んだら、面白そうなので買いました。何故、民主党は、ああもアホなのか?まずは、この本でも読んどけ!って感じです。この対談は、面白いです。仕組んだ人は天才かも?
 「プロフェッショナルマネジャー」マネジメントも一応勉強しとかないといけないので、買ってきました。マネジメントに向いていない性格の人(俺)が読むには、きっとうってつけの内容に違いないと直感したのでチョイスしました。

2011年1月7日金曜日

もげー

 Pマークしんどい。プログラミング言語なら得意なのだが、自然言語は、さっぱり苦手。そんな俺が、個人情報保護管理責任者で社内の個人情報保護の規定の文書修正を行わざるを得ない。そして、その修正の残り2割が遅々として進まない、つか、何をどう直すのか難しすぎ・・・。やっぱクリティカル・パスが多すぎ・・・。他のクリティカル・パスの仕事がストップしたまんま・・・開発のクリティカル・パスと、カンパニーマネジメントのクリティカル・パスは、どう考えても両立しないだろ・・・。

2011年1月5日水曜日

ねた

 瞬発力も無くなり、boost も弄って遊ぶ時間も無くなり、仕事上のコーディングの話はブログの話題とはしにくく、C++系のネタは、ちょっと思いつきません。書けるとしたら

・Heartbeat は蜜の味(DRBD+Bonding+Heartbeat+Apache+PostgreSQL+Mail通知)の苦闘録
 書いたら、これは、かなり長文になりますし、Heartbeat(Pacemaker?)は罠だらけな上に、今のところ使い物にならないであろうというネガティブな記事になります。

・5000円の投資でできる Windows 用のサーバ室温度監視サービスの構築
 割とお手軽かも?今回サービスは、Delphiで書きましたが、一般向けにソフトを直すとすると、もうちょっと手を加えないといけません。せっかく記事を書いても、高い値段の Delphi 2009 あたりを持っていないと、コンパイルがでけません。ねたの披露だけに終わりそうなんで、もう少し情報を書くと、利用した製品は、USB温度計で、String 型は、const char* と読みかえて利用すれば使えます(Cのヘッダは、CD-Rに含まれていなかったように思います)。C系しか知らない人のために、もう少しヒントを書くと、ByVal は値渡しで、ByRef は参照渡しです。ByRef の Double は、ポインタであろうと(double *)参照であろうと(double&)宣言だけの問題でDLL関数の利用には(呼び出し側の話なので)関係ないでしょう(と思う)。

・phpエクステンションの話
 記事を書くために原因を調べようと思ったまま放置プレーです。boost::php も気になってソースを読んでみたのですが、コレ、結構手強くて手が出せませんでしたorz。

 ほかに何かあったかな・・・?思いついたら、あとでまた書き足す事にしよっと・・・

思い出した

・ウィンドウズ・サーバ用ファイルアクセス監視プログラム
 これも、かなり長文になる。共有フォルダの定期監視と、DLL-Injection と関数テーブル書き換えによるフックを利用したファイル・アクセス監視、boost::asio を利用したログの転送(ただし文字コードの問題もありコードは汚い:wchar_t型からchar型へキャスト)。書いたものが32bit用なので、64bitには対応していない。ウィンドウズ・アップデートと相性が悪く、アップデート中に応答が無くなりシステムを壊す可能性が高いので、アップデートするときには監視サービスを停止しなければならないという危ない代物。ウィンドウズの監査サービスが使い物にならないので、Pマーク用に書いたもの。どのマシンから、どのアカウントでアクセスしているかが取れる。こういうのは、オープン化して共同戦線を張った方がいいのかも?でも、片足をスパイウェアに突っ込んでるので公開するのは躊躇してしまう。

2011年1月4日火曜日

今年もよろしく

 みなさん、あけましておめでとうございます。今年もよろしくお願いします。

 実家に帰って勧められたのが、何故か「究極の田んぼ」、どんな田んぼだろう?と思って読んでみると、半分は不耕機栽培の話だった。何年か前のNHKか何かの特集番組で見た覚えがある。「ハチはなぜ大量死したのか?」の話も出てきて、巡る命が肥料を生み出すのに害虫だからと言って昆虫を皆殺しにする薬品を使用するのは間違っている!だから、危ない薬品は禁止すべきなのに、お役人は、一度認可したものは、あれこれと屁理屈をこねて埒が明かない・・・といった事や、プログラマが1リクエストあたり1.5メガのトラフィックが・・・という感じで、稲の話を書いていて、そのおたくぶりが面白いです。本書も、感動できる内容です。

 正月ですが、かねてより「デザイン」というものもテーマとしては気になっており、「佐藤可士和の超整理術」と「佐藤可士和のクリエイティブシンキング」を難波花月前のジュンク堂でゲットしました。次に難波の旭屋書店で「カオスとフラクタル」をゲットすると同時に、珠算協会主催の抽選券をもらいました。抽選する気は全く無かったのですが、うちの坊ちゃんが、どうしても抽選するときかないので、嫁さんが付き添って抽選させたら、なんと500円の図書券を2枚ゲット!うぉーっ、坊ちゃんすげーぜ!と、またまた旭屋に戻って、坊ちゃんがチョイスした本が「オーボラーラ男爵の大冒険―イシシとノシシのスッポコペッポコへんてこ話」。私も本屋を再物色して「心がスーッとなるブッダの言葉」をゲットできました。レシートが2枚溜まったので、またまた意気揚々と抽選会へ出かける坊ちゃん・・・。そしたら、な・な・なんと!またまた、500円の図書券を2枚ゲット!さすがに、また本屋に戻るのもなんなんで、ぶらっとあちこちうろついてから本屋に戻りました。うほほいと坊ちゃんがゲットしたのは「へいきのヘイタ―イシシとノシシのスッポコヘッポコへんてこ話」。残念ながら、抽選会は終了しておりました。珠算協会さま、良いお年玉をありがとう!にしても、原ゆたか先生ばっかしやん・・・。おかげで、坊ちゃんに「なんでやねん」「ほんまかいな?」の一人ツッコミ漫才を聞かされました・・・。おやじギャクに引き続き、半分苦痛です・・・原先生、なんとかしてください・・・orz

 奥村先生のブログで、「高木貞治の数学書を入力・公開するプロジェクト」なるものを知った。「解析概論」は私も所持しており、すでに自炊済みである。スキャンしてPDF化された本ならば持っているのだが、公開して良いものかどうか判断できない・・・。

追記:このブログと同じで、スキャンした生ものはグレーのようだ