JavascriptのNumber()関数は神か仏か

やあ子供たち。おじさんは昨日ね、Number()関数を知ったぞ。
プログラムの中でいろいろとやっていて、もはや数値なのか文字列なのかわからなくなってしまった変数のある場合、とにかくそれを「数値プリミティブ」にするのに便利だ。何せ、引数に数値を渡せばその数値が戻るだけだし、文字列を入れればそれを数値リテラルとしてテストしてくれ、成功すればパースした結果を数値として返してくれるのだからもうその変数の型についてコード遡らなくてもその場で解決できるということ。
これで、実は文字列なのにtoFixed(2)を一生懸命かましても何も変化せずに「おかしーなー??」なんて困るなんてことはなくなるね!
今日はこんなネタだったよ。チャオ!

ちなみに Number()は間違っても new Number() としてはいけないよ。これは数値ではなくてNumberオブジェクトという、数値プリミティブとは違う型の何かを返してくれてしまうそうだからな。気をつけろ!

MongoScriptのload()は便利

やあ子供たち。いくつもmongo script(js)を書いていると何だか共通部分が出来ちゃったりした経験はないかな?
異なるファイルで同じ記述がいくつもあるのはメンテもやりづらいよな。
そこでload()だ!loag("commong.js")という感じで共通部分を簡単に取り込めるぞ!
これならcommon.jsのあそこだけ変えれば一瞬ですみたいな状態になれるぞ!
じゃあ今日はここまでだ、チャオ!

ExcelInteropのCells[row, col]は遅いからRange[cell1,cell2]を使おう

やあ子供たち。
今日は以下のメモだよ。
これ、Excelの連続したセルに値を入れていくときはホント、パフォーマンスに差があるので忘れるな!

        // Cellsを使って値をセット。(めっちゃ遅い)
        worksheet.Cells[2, 1].Value = "Value A2"; // A2セルに記入
        worksheet.Cells[2, 2].Value = "Value B2"; // B2セルに記入
        worksheet.Cells[3, 1].Value = "Value A3"; // A3セルに記入
        worksheet.Cells[3, 2].Value = "Value B3"; // B3セルに記入

        // 配列の値を一気にセット(例えば行単位で一括してセット→まとめた分だけ速い!(体感)
        Excel.Range rangeA2B3 = worksheet.Range[worksheet.Cells[2, 1], worksheet.Cells[3, 2]]; // A2:B3 の範囲
        object[,] rangeData = { { "Value A2", "Value B2" }, { "Value A3", "Value B3" } };
        rangeA2B3.Value = rangeData;

WinMergeのfilterを知った。

WinMergeを使って以下のように同じフォルダ構造を持つ二つのフォルダa1、a2を比べることを考えます。
このとき、例えば bin/resoures フォルダはa1とa2とで全く同じ、しかもとても容量の大きいフォルダであると仮定しましょう。
そのようなとき、a1とa2とを比較する処理は、bin/resourcesの比較もやってしまうので、とても時間がかかってしまいます。
このような無駄な比較で時間を取られたくない時に便利なのが、WinMergeのFilter(フィルタ)機能です。

C:.
├─a1
│  ├─b
│  │  ├─c
│  │  └─d
│  ├─bin
│  │  ├─data
│  │  └─resources
│  └─trash
└─a2
    ├─b
    │  ├─c
    │  └─d
    ├─bin
    │  ├─data
    │  └─resources
    └─trash

はい、ずばりこの場合、bin/resourcesフォルダは比較対象から外したいですよね。そのような場合は、Winmergeで、
「ツール」>「フィルタ…」コマンドを起動させます。
すると、フィルタファイル.fltのリスト画面が出てくるので下の方にある「新規」ボタンを押して自分だけのフィルタファイルを作成します。
まず、name:と書かれた行に、自分のフィルタ名を書きます。自分のものだとわかる名前なら何でもよいでしょう。
続いて、フィルタファイル末尾に以下を追記して、

d: \\bin\\resources$

保存し、フィルタダイヤログに帰ってきたなら、OKを押します。
そうすると再度比較するかという旨のメッセージが出るので、再度比較させると、、
bin/resourcesのフォルダだけ、比較画面に表示されなくなりました!
(なお、以降にまたWinMergeを立ち上げ直したときに、いま作ったフィルタがデフォルトで有効になっているわけでもないようなのでこれは毎回、「ツール」>「フィルタ…」でフィルタリストを開き、自分のフィルタファイルをダブルクリックする必要があるようです。)

さて上記のd: とは何でしょうか。
これはWindowsばかりやっていると、d:ドライブのことかと思ってしまうのですがそうではありません。
これはdirectory(Unix系OSにおける、Windowsのフォルダと同じ意味の言葉)のd: です。

特定のファイルだけ比較をやめさせたい場合は、
f: \\.bak$
などとやるわけです。f:はおそらくfileのfで間違いないと思います。

上記を知ったことでいままでとても時間のかかっていた、node_modulesフォルダや、.svnフォルダ、その他比較からは外したい重たいフォルダなどを、自在に比較対象から外すことができるようになり、フォルダ間比較や、手動マージ作業がとても楽になるかと思うので、
みなさんもぜひ試してみてください!

YouTubeのお気に入りが消えた?

(PCパソコン画面の話です)
あれあれあれあれ、4月になってからかな、YouTubeの自分アカウントのページの左側にいつも出ていたお気に入りリストがなくなってしまった!と思っていると、よくみるとそれは左側メニューの「再生リスト」の中にあった!消えたわけではなくてよかったねと。

おじさんはもういつだったかも思い出せない過去のどこかで「お気に入り」という名前をつけた「再生リスト」を作っていて、これがつい先日までは、YouTube画面の左のペインに見えていたのでてっきりこれは「お気に入り」リストなのだと思っていたわけだけど、

こうなってみて初めて気づいたことにはこれは本来「お気に入り」ではなく「再生リスト」というものであって、その内容が左側に展開されて見えていたわけだが、なんだかその仕様がこのたびなくなって、「再生リスト」を押さなくてはいけない仕様になったんだなと理解したぞ。

mongorestoreの罠?

やあ子供たち。mongorestoreを使って、--nsFrom だとか --nsTo だとかの引数を指定しているのに一向に思うようにDBが復元されないみたいになったときは、それらオプションに渡している引数に、シングルクォートを使っているのが原因かも知れないぞ、今すぐそのシングルクォートを、ダブルクォートで囲むようにしてやってみたら、どうだ?ちゃんとDB復元されるように、おじさんはなったぞ!という体験をおじさんはしたのでここに記しておくぜ。(元ネタは●こちらの神回答)

【Excel】行削除のショートカット

やあ子供たち。今日は便利な表題のショートカットを紹介するよ。
行削除はExcelの一番左の、A列のさらに左にある行番号の列の、行削除したいところで右クリックして「削除」を選択するなんてことをおじさんはいちいちやってきたのだがこれからはすべてキーボードで完結して行が消せるぞ。
その方法とは以下だよ。

  1. (Shift+スペースキー)
  2. (Ctrl+マイナスキー)

はい、まず1で行全体が選択状態となり、2の操作で行全体が削除されますと。
じゃ今日はこんなところで。チャオ!