2016/07/26

【VBA】直前に開いたディレクトリをデフォルトルートとして表示する

VBAでマクロを書くときに、ボタンをクリックするとディレクトリ選択のダイアログを表示することがよくある。
でもApplication.FileDialogを使っているとWindowsのように直前に開いた、または選択したディレクトリが表示されず、Excelファイルがあるディレクトリがルートになってしまう。

そこでダイアログ表示時に直前に開いたディレクトリをデフォルトルートにする方法をまとめる。

2016/07/25

SHA-256, 512でハッシュ化し認証するログインフォームを実装する

Webサービスをつくるにあたり考えなければならないのが「認証方法」
ユーザIDやメールアドレスとパスワードでの認証が一般的だ。しかし、そのまま平文で管理してしまうと、どんなに複雑で長いパスワードにしてもものの数分、数時間でクラックされてしまう。

Webサービスをつくる上で重要なのはセキュリティ対策だ。

その中でも今回は「ハッシュ化」について学んだので、その内容を活かしてログインフォームを実装してみた。

2016/07/22

重複組合せでパスワードを生成し総当たり攻撃(Brute-Force Attack)をする

総当たり攻撃を行った場合は、不正アクセス禁止法 に違反し、3年以下の懲役又は100万円以下の罰金が科せられる。(不正アクセス行為の禁止等に関する法律 第11条 - 警察庁(PDF)
また連続で膨大なアクセスを行うため、DoS攻撃として威力業務妨害となる可能性もある。
絶対に行わないようにしてください。

セキュリティを学ぶ上で、防御側の立場しかしらないと適切な判断ができない思い、攻撃側の立場にたち、総当たり攻撃(Brute-Force Attack)のアルゴリズムを考えてみた。

総当たり攻撃(Brute-Force Attack)とは



総当たり攻撃とは、暗号の解読やパスワードの割り出しなどに用いられる手法の一つで、割り出したい秘密の情報について、考えられるすべてのパターンをリストアップし、片っ端から検証する方式。
総当たり攻撃 : IT用語辞典

もっとも原始的な暗号解読方法のひとつで、考えられるパターンをすべて試行する攻撃
たとえば3桁のダイアルロックがあれば、000、001、002〜998、999のようにすべてのパターン(3桁の数字であれば1000通り)を試行して、パスワードを解読する。

ただ、これではあまりにも時間がかかりすぎてしまうため、よく使われるパスワード(passwordやadminなど)をあらかじめ用意しておいて、その辞書をもとに攻撃する手法もある。

2016/07/14

この先生きのこるために!学び続ける人と学ばない人の未来

※ SIerに勤めていたころに社内報に寄稿したコラムを一部修正して公開します。
(社会人4年目くらいに書いた気がします。たぶん…。)


みなさんは、日々学習されていますか?

いきなりですが、「学ばない人」はこの先必要とされなくなります
キツイ言い方かもしれませんが、間違いないでしょう。

そんな私は、将来のために2年ほど前から毎日のように何らかの学習をしています。


学習を始めたキッカケは「危機感」


社会人になって初めて配属されたプロジェクトは、デスマーチ上等の大炎上プロジェクトで、勉強どころかプライベートの時間すら確保できない時期が3年以上続きました。
そのプロジェクトでは、アプリケーション設計、他チームとの調整役、雑用がメインの仕事で、開発はさせてもらえませんでした。

社会人4年目にもなって開発経験といえば新入社員研修で2ヶ月だけ。
まわりを見渡すと、私だけ圧倒的に開発経験が少ないことに気が付きました。
このままでは同期だけでなく、新人にも抜かれてしまうと危機感を抱いたことが、学習を始めたキッカケです。

2016/07/13

【VBA】2つのExcelファイルを高速で比較する+性能改善のコツ

SIerはなんでもExcelで管理したがる。データベースの中身やコード管理など…。
たとえばテストのエビデンスを取得するときも、データをExcelに貼り付けて確認フローに回される。
そのため、Excelファイルを比較することが場面によく出会うだろう。

そこで、VBAで2つのExcelファイルを高速で比較するマクロをつくってみた。
また性能改善のTips、コツもあわせてまとめる。

(SIerを退職してから早1年半、Excelをまったく触らなくなった。また、この記事のメモも2年前に書いたものなので説明が雑になることがありますw)

2016/07/12

【VBA】セル参照の性能の違い(Value, Text, なし)

VBAで集計するマクロをつくる場合、セル参照の方法で性能を大幅に改善することができる。ということで効率的なセル参照の方法をまとめる。

(SIerを退職してからExcelはまったく触らなくなったが、wri.peのNotesに埋もれていてせっかくなので記事にしてみたw)

2016/07/07

【JavaScript】ネストされたObjectのキーが存在するかチェックする

JavaScriptでObjectを利用するとき、キーが存在するかどうかをチェックしてからでないと「Uncaught TypeError: Cannot read property 'hoge' of undefined」というエラーは発生してしまう。

これを解決するためには、以下のようなクソダサ実装をしなければならない。
if (obj && obj.parent && obj.parent.child && obj.parent.child.grandchild) {
    // ここでようやく安全にobj.parent.child.grandchildにアクセスできる
}

あまりにもクサくて、ダサすぎる…。
今は4階層だが、これが長いキーだったり、もっと階層が深かったりすると見ていられない。

ということで、ネストされたObjectのキーが存在するかどうかチェックする方法を考えてみた。

2016/07/06

【JavaScript】バラバラの曜日を曜日順にソートする方法

配列なり、オブジェクトのキーなりに曜日がバラバラに入っていた。
画面に表示する際には、やっぱり曜日順に表示したい、ということで配列、オブジェクトのソート方法をまとめる。
(ES5に読みかえるのはさほど難しくないと思うので、ES2015/ES6で書いていく)