バイナリ入出力

うっかりやり方が出てこないdelphiでのバイナリ入出力。
PERLPHPだと、pack,unpackで一発なんですが。

該当記事は以下。
ゼロから始めるDelphi講座 18 - 文字列の置換
http://oto.chu.jp/kujira/text/delphi/zero/18.htm

ordとcharね、うっかりと忘れると悩むなあ。
昔書いたコードを見て回って前も悩んだことを思い出す。

生活をハックするツール

このツールが、きっと、twitterを便利にしてくれる!
http://twitdelay.appspot.com/

エントリーを山のように投げて、そして止まるという流れになるよりは、
きっと分散させて書くほうが読む方も書く方も幸せになれる。

twilog( http://twilog.org/ )など、書く側の視点で見ても、本当にいろいろなツールがある。
注目される場で作ることは、それだけで人のモチベーションを上げてくれるのだろうなあと思います。

(追記)
今、レスを見忘れるところだった…
tweenクライアント( http://sourceforge.jp/projects/tween/wiki/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89 )は便利というか必須かもしれない。

公式のインターフェースが貧じゃ、ごほっごほっ、素朴すぎるからなあ。
あれは人に負荷をかけるインターフェースだと思います。

ThinkPadのカーソルキー周りがウザくて仕方がない

ThinkPadGeometryをふと見ていて。
ThinkPad のブラウザキーがウザくて仕方がない(2) - 無効化ではなく Page Up/Page Down にしてみる。
http://thinkpadblog.blog96.fc2.com/blog-entry-1129.html#more

私も同じような不満があったので、別の方法で対応しています。
猫まねき というソフトで、ブラウザキーを、[HOME][END]キーに置き換えて対応しています。
カーソル移動操作が減ってお勧め。2年はこの方法を使っています。
http://www.vector.co.jp/soft/winnt/util/se155310.html

windows7についても、どうやらインストールを工夫すれば大丈夫そうです。

…どうみても、ThinkPadGeometryさんの後追い記事です。
追補ということで、大目に見てくださいな。

自己流花粉症対策

スギ花粉症の方にとって、
これから5月頭までマスクが手放せない季節が始まります。

個人的な花粉症の経験則を数点書きます。

・開始は1月の気温(最低高最高だか)の日から

http://kusuribako.net/page025.html

1月に入ってからの積算気温が高ければ高いほど早くに花粉が出る
ということで、私のケースでは12末から備えます。
個人経験則です。
通常はもう少し遅くからで結構です。

・体温低下、鼻水、目の充血、肌の乾燥等が症状
私としてはどれか出たら花粉症フラグ

・空気清浄機が効かないという人がいる
ぶっちゃけ、掃除のほうが効きます。
あくまで空気清浄機は掃除した後に効果は比較できる程度のものです。
ひとまずだまされたと思って、床をすべてぬれ雑巾で拭くといいとおもいます。事前に掃除機で吸い出すといろいろとベターです。
あと、掃除機使うなら、マスクは必須です。

・加湿器 (追記)
今年導入したところですが、かなりばっちりです。
冬に起こりやすい感想に伴う肌の症状全般を抑えられます。
相対的にアレルギーも減ります。
きちんとしたものを選びましょう。
空調機全般、メンテナンスも怠らずに。

・排気ガスを受けると花粉症になりやすいといわれています
推定ですが、排気ガスと花粉がクラスタになるとアレルギー源として認識されやすいのでしょうか。
私の場合のアレルギー症状は高校から始まっています。ちなみに高校の時自転車通学でした。
その際に、大通りで排気ガスを多分に吸っています。自転車通勤の人間に花粉症が多いことも、そう思わせる原因になっています。
俗説の域かもしれないのですが、自転車と因果関係が強いと思われますので、ご注意あれ。

・早めにアレルギーの予防薬は飲む
アレルギー予防薬を絶やさないことも重要です。
カプセルの鼻水止めや、小青竜湯はありますが、元をただしてくれるわけではない一過性の方法です。
また、脂溶性ステロイドの注射は、残留性が高いので、ステロイドとの長期使用という点では非常に連続使用は危ぶまれます。
めんどくさくても、飲みましょう。

・花粉を受けた半日後に症状は発症する
個人的な目安です。外出開始してから、おおよそ、この時間に発症します。
ダメージを減らすのに、定期的に目を洗う、顔を洗う、点鼻薬を使うとします。
マスクは必須。

・まとめ
花粉症は、免疫から発する病気です。
放置すると、免疫がどんどん強化されていきます。

私の意識としては、放置せず意識を改めることで、症状は実質的に減らすことができます。
少しでも、もしかしたら、思いになったときは、
この季節、耳鼻科は混んでいるので、内科など、とにかく相談をしてみるほうが悩みにならないと思います。

(15:30-16:00)
(mixi1/18より転載、追加)

twitterはじめました

twitterに記事のもとになるネタを書き連ねてます。
書いた内容を見直すのにtwilogは便利だなあとは思った。
粉の人にtwitterを始めるとblog書くペースがおっくうになると言われましたが、
ペースは変わらず書くつもりです。

LUA仮想クラス側での実装の吸収

フレームワーク続報です。
Lua上にて、親となる仮想クラスを実装して、その上に押し決め(プリセット)の関数をもうけました。
未定義のプロパティに対して、フックをかませることが出来るので、読み書きについては、
たとえば仮想クラスの未定義メソッドについて、
読み書きは親フレームワークの変数を読み書きできるようにする、実装ができました。

たとえば、SetHashInt、GetHashIntという関数を親フレームワーク側で設けて、
そのやり取りをLua側にて、クラス名.int.(連想配列名)で、親フレームワーク側との引数をやり取りする方法は以下。

-- 基本となる Actor クラスを定義
Actor = {}
Actor.new = function (name)
  local obj = {}

  -- 自クラスの名前
  obj.name = name

  -- 宣言時 存在しない値の場合 親フレームワーク側の連想配列を数値で読み書きするように定義する
  obj.setDefaultInt = function (t)
    local mt = {
    -- テーブルへのアクセス
    __index = function (ft,fk) 
      local value = 0
--      Log('__index:'..  fk)
      value = GetHashInt(a, fk)
      return value
    end,
    -- テーブル更新
    __newindex = function (ft,fk,fv) 
--      Log('__newindex:'.. tostring(ft) .. '/' ..  fk .. '/' .. tostring(fv))
      SetHashInt(a, fk, fv )
    end
     }
    setmetatable(t,mt)
  end

  return obj
}

呼び出し例 (クラス例追記)

 -- Actor を継承して Dog クラスを作る
 Dog = {}
 Dog.new = function (self)
   local obj = Actor.new(self)
   
   obj.int = {}
   obj.str = {}
 
   -- 関数
   obj.bark = function (self)
     tempmerge(self.name..":bowwow!")
   end
 
   return obj
 end

-- インスタンスを生成する
local jiro = Dog.new("jiro")
-- 未定義値に対してフックをかけ デフォルト入力時の動作に対応する関数追記
jiro.setDefaultInt( jiro.int )

こうすることで、int型として、jiro.int.hogehogeという形で、シームレスに型を明示した変数として扱うことが可能になります。

ある程度以上の過度に複雑な実装を親フレーム側で行うより、
最小限の関数を親で作成した後は、大いに、組み込み言語側で吸収できることを示唆する解決方法でした。

(追記) 八角研究所 - メタテーブルを利用しないで、継承を再現する例
http://www.hakkaku.net/articles/20081118-286
を参考にしてクラスを構成させていただいております。

(11:50-12:20)

マップ実装

フレームワーク側に動的にサイズを変更できる2次元配列のクラスを標準設置し、
こちらをLua側で操作するインターフェースだけを持たせる方法をとりました。
全部のオブジェクトに二次元配列が必要か?という疑問はありますが、
クラスの宣言しなければただのポインタ。予定地なので気にしない。
用途は多く持たせられそうな実装にしました。
インターフェースは同じでも、フレームワーク内部は改善する必要があるかなと思います。