2014年08月25日

【メモ】Excelの参照先セルを計算結果で指定したい場合

OFFSET関数を使う
OFFSET関数の書式はOFFSET(基準,行数,列数,高さ,幅)。高さ、幅は範囲指定する場合でセル1個だけの場合(高さ1,幅1の場合)は省略可。つまり

=OFFSET(A1, 2 ,1)

=C2

と同じになる。行数、列数は計算式やセルの値の参照でも可。

=OFFSET(A1, 1+1, 1)
とか、B1セルに2という数字が入ってたとして
=OFFSET(A1, B1, B1-1)

=OFFSET(A1, 2, 1)

と同じになる。

なお”INDEX関数,OFFSET関数,INDIRECT関数が御三家”だそうで他にも方法があるみたいです。

ちなみにこれ調べてると、セルの"絶対参照"、"相対参照"の解説が山のように出てきたんだけど、この絶対参照、相対参照の概念の理解がどうも難しいみたいですね。Cのポインタとかアセンブラやってれば聞いただけでわかるんですが。


posted by nanno at 13:46| Comment(0) | TrackBack(0) | memo | このブログの読者になる | 更新情報をチェックする

2014年08月21日

あと1週間以内くらいでIce Bucket Challengeが自分に回ってくる?

ここ2,3日、ALS(筋萎縮性側索硬化症)支援運動として広まっている、Ice Bucket Challengeが話題になってますね。
Wikipediaによると
http://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%A4%E3%82%B9%E3%83%BB%E3%83%90%E3%82%B1%E3%83%84%E3%83%BB%E3%83%81%E3%83%A3%E3%83%AC%E3%83%B3%E3%82%B8
バケツに入った氷水を頭からかけている様子を撮影し、それをフェイスブックやツイッターなどの交流サイトで公開する、あるいは100ドルをALS協会に寄付する、あるいはその両方を行うかを選択する。そして次にやってもらいたい人物を3人指名し、指名された人物は24時間以内にいずれかの方法を選択する

というルールで、アメリカの著名人の間で広まってそこから日本の著名人に回って来てて、ここ2,3日日本でも話題になってます。

急速に広まった要因を考えると、有名IT企業の経営者やスポーツ選手などが頭から氷水をかぶるというバカなことをする様子が動画で公開されてるというのもありますが、次にやる人を3人指名するというのが大きいと思います。特に著名人の場合、公開動画で指名されたら応じざるを得ないところがあ理ますから、ネズミ算式に広がっているのでしょう。

さて、ネズミ算式ということは短期間に膨大な数になるということで、指名された人がみな真面目に応じているとあっという間に地球の人口に到達します。これは何を意味するかというと、近々自分にも回ってくるということです。そこでどれくらいで自分に回ってくるか、高校の数学レベルの問題なので計算してみました。
指名された人は氷水を被るか、100ドル寄付をして次の3人を指名する
というルールですが、指名された3人全員が応じるとは限らないので、仮に平均で3人中2人が応じるとします。(計算も簡単になるのでw)
そう仮定するとIce Bucket Challengeをする人の累積数は2のn乗の等比級数になるので、

1+2^1+2^2+2^3+…+2^n = Σ2^k (k=1〜n)

となります。

Σ2^k (k=1〜n)=2^(n+1) -1

なので(*1)、地球の人口を70億人とすると

2^(n+1) > 70億

となるnを求めればいいことになります。( "-1"は70億に対して十分小さいので無視)
両辺logをとって

(n+1)log2 > 9+log7
n > 31(大体)

となります。指名された人は24時間以内にチャレンジをしないといけないので、つまり約1か月で人類全員にいきわたることになります。

この運動は7月ごろ始まったといわれてますが、上で上げたWikipediaでは
米ALS協会は7月29日からの3週間で1330万ドルの寄付金を集めた
となっているので、7月下旬に始まったとすると、せいぜいあと10日で1か月、人類全員に到達します。

ということで、この1週間〜10日以内に自分にも回ってくる可能性があるということになります。

(あってるよね。間違ってたら恥ずかしいw)

(*1)すみません、カンニングしましたw http://ja.wikipedia.org/wiki/%E7%AD%89%E6%AF%94%E6%95%B0%E5%88%97
posted by nanno at 10:31| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2014年08月08日

【メモ】野良Androidアプリの自動更新のヒント

割とみんなやりたいと思う話だと思うので、

Android パッケージインストール処理のしくみを追う
http://dsas.blog.klab.org/archives/52069323.html
上記の PackageInstaller 経由でのインストール経路とは別に、Package Manager Service は内部クラス「AppDirObserver」による非対話式のインストール経路を用意している。 AppDirObserver は android.os.FileObserver の派生クラスであり、所定のディレクトリ直下に .apk の拡張子を持つファイルが配置/削除されると自動的にシステムへのインストール/アンインストールを行う機能を持つ。
(中略)
なお、これらのディレクトリへの書き込みには特権が必要であるため一般のアプリケーションプロセスから直接 AppDirObserver の提供する機構を利用することはできない。

最後の「一般のアプリケーションプロセスから直接 AppDirObserver の提供する機構を利用することはできない」を解決する必要がありますが…。(今回の私の場合は解決の手段があるので、問題解決)
posted by nanno at 12:41| Comment(0) | TrackBack(0) | memo | このブログの読者になる | 更新情報をチェックする

2014年08月07日

【メモ】MODBUSのファンクションコード03と04の違い

仕事で通信プロトコルのMODBUSを扱っているのですが、データを読み出すのに機器によってファンクションコード03を使うものと04を使う物があってどう違うんだろうと思って調べてみました。
こういうのを見つけたんですが↓
MODBUS通信について教えてください。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12131426727

回答者は、MODBUSよーしらんけどと書いてますが、実際に使っていないので03と04の違いに迷うというシチュエーションがおそらく理解できてないような気がしますね。

同じ機能の測定機器でもメーカーによって測定データを03で読み出すものと04で読み出す仕様のものとがあります。データを読み出す通信の制御をしてる側から見るとファンクションコードが違うだけなんですが、じゃあ何でメーカーによって違うの?ということなんです。

ファンクションコード03と04は、03がRead Holding Register、04がRead Input Registerというファンクションなので、結局03と04の違いはHolding RegisterとInput Registerの違いは何か?ということになります。

上記Q&Aの回答には
(4)入力レジスタ(Input Register)
入力レジスタは、フィールドからのAI(Analog Input)やスレーブデバイス内の情報として用いられます。
16ビット長のデータで、参照するのみで変更はできません。可能アドレス範囲は30001から39999です。複数の連続したアドレスを割当てることにより、単精度実数、倍精度実数などのデータを扱うこともできます。
(5)保持レジスタ(Holding Register)
保持レジスタは、フィールドからのAO(Analog Output)やスレーブデバイス内の設定情報として用いられます。16ビット長のデータで、参照・変更ができます。可能アドレス範囲は40001から49999です。複数の連続したアドレスを割当てることによって、単精度実数、倍精度実数などのデータを扱うこ ともできます。

と仕様書が引用されていて、回答者は開始アドレスの違いといってますが、そこは通信をする上であまり重要でないです。

重要なのは、

入力レジスタ→参照のみ
保持レジスタ→参照変更ができる

ってところです。MODBUSでは、マスター機器はファンクションコードの06や10を使ってスレーブ機器の保持レジスタを書き換えることができます。外から書き換え可能なのが保持レジスタ、書き換えられないのが入力レジスタということなのです。

ちなみに測定データをファンクションコード03で読み出す仕様の機器が普通にあるんですが、これは保持レジスタがマスターから変更可能であることを考えるとレジスタの使い方がよくなくて、参照のみの入力レジスタにデータを書き込んでファンクションコード04で読み出させるべきなんじゃないかと思いますが、コストの問題なんですかね?

posted by nanno at 10:38| Comment(0) | TrackBack(0) | memo | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。