2016年02月29日

フォルダ・ファイル

ファイルシステムにおける名指しと解釈:XPathを使って - 檜山正幸のキマイラ飼育記

全然関係ないですが、Windows のレジストリでは \のあるなし が明確に使い分けされます。
\がある場合はキーで、無い場合は キー配下のエントリーです。

レジストリにキーまたはエントリを追加する

「EXCEL VBA」2つのセルの間の長方形Rangeを取得する方法を今まで知らんかった。。。

cells(1,1) と cells(3,5) の間の Rangeオブジェクトがほしい場合

昨日までだと

cells(1,1) -> "A1"
cells(3,5) -> "E3"

すなわち 必要なRange -> Range("A1:E3")
みたいな回りくどいことをしていたが、

なんと、 一発でできることが分かった。(ExcelVBAでできて 当たり前のことだったのですが)
Range(cells(1,1), cells(3,5)) と記述することで Range("A1:E3") と等価です。
尚、当然ながら 2つのセルは同じシートに存在する必要がある。つまり Range( sheet1.cells(1,1), sheet1.cells(3,5)) は正しく動作するが Range( sheet1.cells(1,1), sheet2.cells(3,5)) はエラーになる。


こんな簡単なことだったのに、どうして今まで気が付かないまんまあまつさえも「 ColumnIndexから 列番号のアルファベットを取得する関数」を作って喜んでいた自分が恥ずかしい。

恥のついでにその自作関数を置いておきますね。

Public Function idx2Alphabet(ByVal colIdx As Long) As String
Dim alphaBeta As String: alphaBeta = ""
Dim col As Long: col = colIdx
Dim fx As Long
Do While col > 0
fx = (col - 1) Mod 26
If fx >= 0 Then
alphaBeta = chr(64 + (fx + 1)) & alphaBeta
col = (col - (fx + 1)) / 26
End If
Loop
idx2Alphabet = Trim(alphaBeta)
End Function

テストする場合は
idx2Alphabet(2147483647) -> FXSHRXW 'Long型の上限
idx2Alphabet(16384) -> XFD 'Excel 2010 の上限
idx2Alphabet(256) -> IV 'Excel 2003 形式の上限


これの逆関数:idx2Alphabet もあります

Public Function alphabet2Idx(ByVal colName As String) As Long
Dim iL As Long: iL = Len(colName)
Dim retVal As Long: retVal = 0
For iL = 1 To iL
retVal = retVal + Idx(Left(Right(colName, iL), 1)) * 26 ^ (iL - 1)
Next
alphabet2Idx = retVal
End Function
Private Function Idx(ByVal alphabet As String) As Long
Idx = Asc(UCase(alphabet)) - Asc("A") + 1
End Function



つまり alphabet2Idx(idx2Alphabet(x)) = x が 成り立ちます。
逆関数のほうがすごくシンプルなので idx2Alphabet のほうだってもっとシンプルにできそうだけどこれで卒業とします。

2016年02月28日

「EXCEL VBA] 隠しきれたと思っていたがひょっこり現れた関数名の一覧を念入りにもう一回隠す方法

エクセルVBAでマクロをどんどん作るようになると、以下のように「マクロ」の一覧にたくさん出てきてこれはうざい、何とかせねば、となるのが最初の壁でしょう。

macro2016-02-28_221326.png

これは比較的簡単で、Public Sub *** な関数がここに列挙されます。
なので、Public Function *** にしてしまえばいいのです、乱暴ですが。その際、Fuctionの流儀にしたがって戻り値を定義したりする必要は一切ありません。
もしくは Publicである必要がなければ Private Sub *** にしてしまうのもOKです。

され、これで 上記の図のように マクロの中のすべての関数を隠ぺいできた気になっていました。
ところが最近気が付いたのは、マクロを別ブックにしてさらにアドオン化した後で実は ユーザー定義関数の一覧にすべてのPublic 関数が表示されてしまっていたのです!!これはいかん。遺憾。
2016-02-28_222324.png

ググってみたところ以下の記事を発見。
vba - How can I hide Protected Excel AddIn Functions from Appearing in Insert Function Dialogue Box? - Stack Overflow
対処方法はとても簡単で Option Private Module の宣言を各モジュールに追加するだけ。

実際にやってみたところEXCEL2000からでもこれが有効であることを確認できた。

Javaをチラ見する - きしだのはてな

VBA応用(マクロの起動にプロシージャ名を表示させなくする。)
ここにうまくまとまってます。

2016年02月25日

最近話題の円周率に関する話題

円周率がぴったり3.14だと定義するとどうなるの?

メモ。

一眼レフに慣れてきた人が犯す14の間違い | 登山と写真で仕事をしている人。
メモ。 これは何ともあるあるなネタである。

そういう私はここ10年以上一眼レフは使ってない。コンデジ一筋。

@2016/02/25 21:43 | Comment(0) | TrackBack(0) | 雑感&戯言

2016年02月24日

あともうちょっとで春

まだ寒い。ていうか久しぶりに寒い。先日まで10度超えることが結構あったのだが。

帰りがけ摂氏4度だった。

2016年02月22日

VmWareでMacを動かす

Windows上のVMwarePlayerでMac OS X Lion 10.7.3が動く ( パソコン ) - 気まぐれなももぽえむ - Yahoo!ブログ


昔チャレンジして難しかったからあきらめていたんだけど簡単にできそう。あの時はVirtualBoxだったから難しかったのかな。。

Unlocker - InsanelyMac Forum

VMware Workstation 12, 11, 10 and 9 Unlocker to Run Mac OS X Guests on Windows 10, 8.1 and 7

@2016/02/22 00:33 | Comment(0) | TrackBack(0) | Windows TIPS

2016年02月21日

量子力学の2重スリット実験について疑問に思ったこと

量子力学 2重スリット実験 - 哲学的な何か、あと科学とか

・電子銃から打ち出された電子は、2つのスリットの「どちらか」を通過する
という風に説明されることがあるが
これは厳密性を欠いていると思う。

・2つのスリットの「どちらか」を通過する
のではなくて
・スリットの隙間以外に当たりスクリーンに到達しない場合もある
ということが説明されていることがあんまりない。

言い換えると
・電子銃から1つの電子が打ち出された場合、それが2つのスリットの後ろにそれぞれ検出器がある場合に必ず検出されるとは限らない
ということですよね。

そもそも2重スリットは電子銃の真ん中の位置はスクリーンに到達しないようにブロックされているわけなので、もしも精度の良いまっすぐ電子の飛ばせる電子銃であれば2重スリットのどちらも通過せずにまっすぐ飛んで行って何も検出されないはず。(しかしそれでも波動性を持っているため、干渉を起こし通常では到達することが考えられない一番真中でもスクリーンの干渉縞は濃くなります)

干渉が起きる範囲を考えると、スリットをぐるっと回転させた半径くらいはどこに飛ぶのかわからないほどに精度の悪い、発射したらすでにどこ向きに飛ばしているかもわからないような電子銃のはず。

ここまで書いておいて何が言いたいのかというと、何を疑問に思っていたのか忘れてしまった。

2016年02月18日

Canon G7X MarkII 買おうかどうか、、、G16からの代替なるか

キヤノン、新エンジンDIGIC 7の「PowerShot G7 X Mark II」。40倍「SX720 HS」も - AV Watch

PowerShot G5 X を買おう: NN Space BLOG-NN空間ブログ なんて言っておきながら、いまだにG16だしねぇ。

正直なんの不都合もないんですよG16で。
それまで毎年買い替えてきた私からすると、G16よりもうちょっとサイズ感(握りやすさ)があって WiFI対応で、24oで バリアングルな奴があれば もう何もいらない。

正直に言います。
G16のバッテリーパックをこの前 買ってしまいました(純正の並行輸入品)。これでバッテリーの不安もなし!!


フォステクス、96kHz/24bit DAC搭載で9,800円のUSBボリュームアンプ - AV Watch

フォステクス、純マグネシウム振動板のスピーカー「G1300MG」にピアノブラック - AV Watch



何故システム開発にはお金がかかるのか - ゆとりずむ

綺麗な鉱物には毒がある。最も危険な10の岩石と鉱物 : カラパイア

@2016/02/18 21:32 | Comment(1) | TrackBack(0) | 物欲コーナー

2016年02月15日

今日はあったかいなー 現在室温17度、湿度60%

暖房使わず。そろそろ春だねぇ。春一番かどうかは分からなかったけど風は強かった。

朝方は外に出たほうが暖かいという現象が。

2016年02月12日

重力波の検知ってさ

13億年前の「ブラックホールの合体」で生じた重力波、検出される(動画あり) ≪ WIRED.jp

説明の記事を見ても時空のひずみの検知のことがよくわからなかったんだけど、この波形がどうして 「その事象である」と結びつけることができたんだろう。事前に知っていた?どうやって?重力波よりも早くにそれは分かっていた?

重力波でなくても分かる別の検知方法があって、それと相関を計算してみたりしたんだよね、少なくとも今回は。その検出器が重力波を検知できることの証明をしない限りは単なるほかの電磁波とか振動とか磁気とかを検出したに過ぎないかもしれないじゃんね。

今後は、 電磁波とか振動とか磁気とかそういうものでは一切検知できない事象でも 今回の検知機構が重力波を検知することが保証されてようやくこれから未知の事象を探索することができるようになるんだよね。

ちなみに今回の重力波の検知についてもっと詳しいORわかりやすい記事があったら誰か教えてください。
万有引力定数がその瞬間に変化したような理解でいいのかな?

重力波とは? ≪ KAGRA 大型低温重力波望遠鏡
光の媒質・エーテルを探そうって時に やっていた方法と重力波の検知の方法は似ているね。

時空のひずみが仮にあるとしても、地球に到達した時空のひずみを地球に置いた観測機でまさにその場所で時空のひずみにさらされながら検知するのって本当に可能なんだろうか。検出器自身が時空のひずみの沿って同時にひずんで検知結果ゼロってことにならないのだろうか

重力波ってなんだろう | 秋本祐希

SIerのITインフラ技術について、若手社員に伝えたいこと
@2016/02/12 23:00 | Comment(0) | TrackBack(0) | 雑感&戯言

世の中にはまだEdyストラップは全然普及していないんだなーと思った、4年目の冬

ビットワレットが楽天Edyで、楽天Edyに変身、で、Edyにストラップがあることを知った日: NN Space BLOG-NN空間ブログ

そう、あれから4年間 欠かさず携帯し、愛用し続けてきました。 Edyストラップ。

コンビニの若者に「Edyで」と言いつつ これを見せると まず最初は疑われる。 だから必ず Edy と書かれたほうを見せないと誤解される。

そしてさらに何人かに一人は面白そうに見てくる。 そうだよ、悪いかっ、お財布ケータイじゃないんだよ!
あとローソン、なんでお前は パネルをタッチしないとEdy支払できないんだ、不便じゃないか。
@2016/02/12 22:51 | Comment(0) | TrackBack(0) | 日記

Windows 10で Shell_NotifyIcon Lib "Shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean が動作しない問題は今は治っているようだ

Windows10でバルーンチップが表示されない ってのは周知の事実だということはわかった。: NN Space BLOG-NN空間ブログ

ふと過去の自分の記事を見返していて、これって今どうなんだろうって やってみたら
以下のように右下から出てきた。この前は何も出てこなかったから最新のWindows10では改修がなされているということだ。
trayi2016-02-12_223030.png

しかしながら違和感がある。これは通知は右から出てくるような流儀に変わったのだろうか?
Shell_NotifyIcon は、システムの常駐アイコン(システムトレイ)の場所からバルーンチップで出てくるのが慣習だったはずだが、タスクバーを左に縦置きしたとしても Shell_NotifyIcon のメッセージは右下から出現してくる。はっきり言って予想外の位置からのメッセージは認識しづらい。

プログラムで特別な対応をしなくてもメッセージが出てくるように治っていることについてはまあ良しとするけれども出てくる場所がそこかいな。

VBAの「参照設定」で同じGUIDだったら、パスが違ってても それらの環境違いで同じブックを利用可能かもしれない!

[EXCEL VBA] .QueryTables.Add のオブジェクトのTextFilePlatform プロパティについて: NN Space BLOG-NN空間ブログ

↑この前の こちらの記事では
MSCOMCTL.OCX の参照先が、
C:\Windows\SysWOW64\MSCOMCTL.OCX
↑ 64BitWIndowsに32bit EXCEL の場合

C:\Windows\System32\MSCOMCTL.OCX
↑ 32ビット Windows に 入れたエクセルの場合

と異なるので 64Bit Windows + 32Bit Excel の環境で作った 参照設定を持っているファイルは 後者の環境では 読み込みエラーになるという結論にしていましたが、あれからいろいろ試した結果 どちらも同じブックで参照エラーなしで行けることが分かりました。

それは、AddFromGuid(sGUID, vMajor, vMinor) メソッドを使う方法です(たぶん)
Excel VBA を学ぶなら moug モーグ | 即効テクニック | 参照設定を自動的に行う
こちらで自動的に(手作業ではなく プログラムで)ブックに参照設定を追加する方法が紹介されています。
この方法を使うと自分の検証した環境ではさらに自動的に、環境違い(参照先のOCXのパスが異なる)でも参照エラーにならずにマクロが使えることが分かりました。
これが成立する前提条件はあまり多くを確かめていませんがおそらくは、各システムに登録されたOCXは同じMajor,Minorバージョンを持っているほうがより動作しやすいだろうなとは考えられます。

Excel VBA を学ぶなら moug モーグ | 即効テクニック | タイプライブラリのGUIDやバージョンを取得する

2016年02月09日

[iOS]PlayGround 試してみたら Tutorialが楽しかった。

ASCII.jp:なにこれヤバイ! 「パラッパ」「Rez」並の衝撃「PlayGround」

チュートリアルの最後がガイドなしで、一瞬どうしようって思ったけど それも含めて楽しかった。

元乳酸菌研究者が『腸内環境とヨーグルト』の必要な事だけ教えます - レコメンタンク

「Office 2016」で何が変わった?--生産性を上げる10の特長 - (page 2) - ZDNet Japan よく考えたらすでにOffice2013買ってあるんだから2016は要らんな。個人的に。


これはエクセルのバグなんだろうか「次を検索」の連続クリック / 継続調査追記@20160212_212643

2016-02-09_003622.png

↑こんな感じでセルの単語を検索します。
0.5秒おきくらいで「ゆっくり」次を検索ボタンをクリックすれば、どんどん次のセルに順に移動しますが、ある程度早くポチポチ連続クリックすると 同じセルに一回留まって 2回クリックするごとに次のセルに移動するようです。この挙動はバグなんだろうか、EXCEL2000から2010まで同じような動作をする。

ところが 次を検索 の EXCELのショートカットキーである SHIFT+F4を 押した場合 これを連続実行しても1回とどまることなく連続で軽快に次を検索してくれます。

そして 「前を検索」するやり方が実は存在していて、「次を検索」ボタンクリックと一緒に SHIFTキーを同時押しすると 出来ます。
今まで気が付かなかった。マクロ作っちゃったよ。
前を検索する機能 EXCEL2000でもちゃんとあるんだよねー。無駄にマクロを作ってしまったことを反省する。

20160212_212643 継続調査結果
検索のダイアログボックスで「次を検索」した場合と、ショートカット SHIFT+F4 を行った場合、「マクロの記録」で記録されるのは全く同一の メソッド Cells.FindNext(After:=ActiveCell).Activate である。
さらに SHIFT +F4を SendkeysAPIを使って キーボードショートカットに割り当てたところこれはうまくいった。(スムーズに次を検索する)。
そこでそのSendKeysAPIの呼び出しを FORMのボタンからの呼び出しに変更したところ なんと 短時間の連続クリックでは やっぱり2回おきに次に移動するようになってしまった。
つまりどういうことだ、GUIから連続で検索をする場合 何かのボトルネックが必ずそこにあるということなのだろうか。

2016年02月08日

[EXCEL VBA] .QueryTables.Add のオブジェクトのTextFilePlatform プロパティについて

最近では主にExcel2010で動くことだけを主眼に開発をしてきたEXCEL VBAを駆使した自作マクロですが 手持ちの仮想環境にある一番古いEXCEL2000でも (バージョン依存でそもそも使えないもの以外は)動くことを目指してテストとデバッグ、コード修正をしました。

無修正では動かないところがやっぱりいくつかあった。それは主に古い環境にプロパティが存在しないとか、メソッドのパラメータ数が異なるなど が多かったわけですが、一点 デバッグに時間がかかったのが 表題のプロパティでした。

TextFilePlatform プロパティは現在では 文字コードを数字でセットするような仕様になってますが、EXCEL2000 ではxlMacintosh、xlWindows、xlMSDOS と3つのパラメータしかありません。
そういえば2000年当時、ファイルの文字コードは SHIFT_JISかそれともEUC_JPか?それともMACの改行コードはCRか?なんてことだけ考えていればよかったような時代も一瞬ありました。

というわけでここのところのコーディングは EXCEL2000だった場合には 2 (xlWindows)をセットし、それ以外の場合には 以下のサイトの文字コード判定ロジックを大いに参考にさせていただいて、文字コードをセットするようにしました。
[VBA]日本語文字コード判別
こうしてVBAのコードはどんどん肥大化していくのでありました。ソースコードをエクスポートすると 885 KB ほどありました。

EXCEL2000で動かん状態だったソースコード的には互換性的には大丈夫になりましたが、MSCOMCTL.OCXの参照設定が x64 Windows 7 & EXCEL 2010 の環境で設定されていると これを EXCEL 2000 & Windows XP (x86) の 環境で開くと参照設定が見つからないためにエラーになってしまい、一度は EXCEL2000でVBA エディタを開いて参照設定を付け直す必要があります。でもそれだけやれば 一応のところソースコード的には完全同一の状態で EXCEL 2000 から 2010まで 使えるマクロ集になりました。

・・・・なんでこんなことをしているんだ、休日に。



2016年02月05日

Sysinternals Suite Updated [Sakura's VPS auto Post]

Sysinternals suite(zip) may be updated.

Current Timestamp
2016-02-05 07:20:19.000000000 +0900 ,15259361 bytes
Before Timestamp
2016-01-13 13:31:20.000000000 +0900 ,15167647 bytes

Check Official web site !
Directe Link (SysinternalsSuite.zip)
Search Old Posts of this Blog.
@2016/02/05 08:07 | Comment(0) | TrackBack(0) | Tools-Sysinternals

2016年02月04日

5GHz帯のWiFiって不便な縛りがあるんだねぇ

無線LANで5GHz帯を使用していますが、つながりやすい時とそうでない時が... - Yahoo!知恵袋

以下引用:
5GHz帯は、W52(36-48ch)、W53(52-64ch)、W56(100-140ch) の3つの帯域があります。

W53/W56は気象レーダー波回避義務が課せられており、最初の1分間は通信ができません(レーダー波探知動作を行う)。また、通信中に気象レーダー波 を検知すると直ちにチャネルをゆずり、別のチャネルに切り替える動作を行います。電波状況や製品の性能により、この切り替えがスムースに行かないと、通信 が切れることになります。

一方W52/W53は法令で屋外使用が禁止されているため、ルータ製品によっては意図的に電波出力を弱く絞っています。WR9500Nの例では、W52/W53の出力はW56の半分の5mW/MHzとなっています(電界強度は7割位に落ちる)。

電波の性質自体、5GHzは2.4GHzの4倍の勢いで衰え、物を貫通しづらく、回折性が悪い(電波の死角ができやすい)と言う特徴を持っています。このため、市販されているUSB子機では、チャネルを選べば、2.4GHzの方が実効速度が出ます

5GHzの真価が発揮されるのは、NECのコンバータセット(WL300NE-AG)など、特定の高性能な機器を使用した場合に限られます。USBアダプタで使う限り、電子レンジを使うと通信が切れてしまう場合を除き、5GHzを利用する価値はないと思います。


なんでそんな帯域をWiFiに使うようにしてしまったのだろうかってところだが、おそらくは2.4GHz帯域のほぼ倍ということで決まってしまったところがあるのだろう。
などと考えてみた。


・おすすめ楽天ショップ1:trendyimpact楽天市場店
・おすすめサプリショップ:iHerb.com
・おすすめ楽天ショップ2:上海問屋
Powered by さくらのブログ