Posts on this page


March 31, 2014

Select case / switch caseのバランスの良さ

Visual BasicのSelect case、Javascriptのswitch caseなど、select/switch系の構文について、Web拾い読みメモ。

例えば以下の記事では色々とSelect caseの使い途が紹介されています。
Visual Basic 中学校  / 6.Select Case はもっと使える
http://homepage1.nifty.com/rucio/main/technique/Select.htm

エッセンスとしてはif ~ then ~ else ~ end if / if {} else {}を簡略に表現できる、ということでしょう。
ところが、もっと簡略に表現することもできて、連想配列を使ってもよいようです。
Wiki books / JavaScript JavaScript的プログラミング
http://ja.wikibooks.org/wiki/JavaScript_JavaScript%E7%9A%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0

実際には、ifと配列表現のちょうど間に位置するSelect case / switch caseが最も読みやすく理解しやすいのでは。

Excelで表⇔1列/1行の相互変換やその場で転置

事務作業でこまごまと表を編集するときに、一列になったデータを表形式に書き直したり、その逆を行ったりすることがある。色々データ処理するならピボットテーブルを使うのだが、ごく簡単に配置を変更したときに使える行/列を扱うエクセルマクロ達。

March 30, 2014

Excel VBAで複数のシートのXYデータを3D参照して散布図をプロット

実験データ、ログのようなものをグラフにすることを考えると、もとのCSVやテキストを束ねたエクセルファイルでは、複数のシートに同じ構造のデータが複数組、並んでいるはず。

そういう時に、データを1シートに纏めることなく、そのままグラフ化するためのマクロ。

1つのシートに複数組のXYデータがある場合
http://foundknownanddone.blogspot.com/2014/03/xx-yexcel-x1y1x2y2-sub.html
 

March 23, 2014

ExcelでX-Yのペアのデータ複数組を一気に散布図グラフに仕上げるには

時系列のデータなどを取り扱うときに、必ずしもX軸が共通の刻みでない場合がある。その場合は、X-Yのペアでデータを扱うのだが、Excelのグラフにする場合に、データ範囲の設定が面倒だ。
そういう時に、少し簡単にグラフにするマクロ 。

複数のシートに、それぞれXYデータがある場合
http://foundknownanddone.blogspot.com/2014/03/excel-vba3d.html

Excelのグラフのデータ範囲を拡張するマクロ

Excelでグラフを作った後に、データが増える場合がある。あるいは、元のデータが不定形で扱いにくい場合がある。こういう時は系列ごとに手作業でデータ範囲を設定するのは大変だ。
ということで、簡単に範囲を変更するためのマクロ。

Excelのグラフの複数の系列名をセル範囲を指定して設定するマクロ

Excelでグラフを作ると、系列名を上手く入力できない場合があったり、既存のグラフの系列名だけを変えたい場合がある。そこで、お手軽に変更するちょっとしたマクロを作成した。

March 22, 2014

WindowsでJavascriptをテストするKarma/Jasmineを導入しようとして…

テスト駆動開発をJavascriptでやるには色々ツールがあるみたいなのだけども、パソコン初心者がインストールしようとすると、色々と失敗しでかした、のでメモ。覚書き。

そもそもKarma/Jasmineで何が嬉しいのか

  • 何もない場合:ゴリゴリコードを書いて、走らせてエラーがでたらデバッグ。
  • Jasmineがある場合:テストを先に書いてから、テストしながらコードを書くことが出来る。
  • Karmaがある場合:ソースを入れたフォルダを監視してくれて、自動でJasmineを実行した結果を返してくれる。テスト自体を実行する手間が減る。見た目がコマンドプロンプト。
  • Visual Studio Pro(以上)がある場合:Chutzpah/Jasmineを使えば開発環境と統合してテストが実行できる。 GUI。IDEの中に表示される。
  • 他にもWebstormとか、開発環境があるらしい。
まとめると、Karma/Jasmineは、テキストエディタ※で開発している人がJavascriptのテスト駆動開発に取り組むためのツールということです。

※テキストエディタといってもメモ帳というよりは、こういうソフトを使うと便利です。

Sublime Text: The text editor you'll fall in love with
http://www.sublimetext.com/

以下では、Windows環境へのKarma/Jasmineの導入方法を説明しています。

March 8, 2014

表をシンプルにCSSで装飾するときに

表をシンプルに装飾したいときに。thタグを使うなら2行目は不要。tableを用意して、以下のcssを適用するだけ。


table{border-top:solid 1px;border-bottom:solid 1px;}
tr:first-child td{font-weight:bold;text-align:center;}
tr:nth-child(even){ background:#CCCCCC; }

結果

表にスタイルを適用した結果は以下の通り。
項目1項目2
データ1-1データ2-1
データ1-2データ2-2

シーザー暗号からストリーム暗号へ

換字暗号の方式

逐字で平文を暗号文に対応させる換字暗号は、シーザー暗号から始まり、現代のストリーム暗号に続いている。共通するアイディアは、平文から1文字取り出し、変換表を用いて別の1文字に置き換えること。

(平文)→ [ 分解 ] → (1文字) → [ 変換 ] → (1文字) → [ 統合 ] → (暗号文)

逐字で変換する、換字式暗号は以下の表に示すように、シーザー暗号、ビジュネル暗号、ストリーム暗号と色々な形式があり、アイデアが少しずつ違う。いわゆるエニグマ暗号も換字式暗号の1つといえる。

暗号形式変換表の生成方法変換表の数変換表の周期
シーザー暗号既定11
ビジュネル暗号既定1~261~26
ストリーム暗号鍵から生成無制限無制限(変換表生成器の性質に依存)

解読の方法

変換表の生成方法やその周期により、解読にたいする強度もそれぞれ違ってくる。ここでは、頻度分析に対する解読強度について説明する。

シーザー暗号は暗号文をそのまま頻度分析した時点で解読されてしまう。平文と頻度分析結果を比較すれば簡単だ。

ビジュネル暗号は鍵の長さごとに取り出した暗号文はシーザー暗号になっているので、鍵の長さ(=変換表の周期)が判明した時点でシーザー暗号と同じ頻度分析ができる。鍵周期は1~26なので、暗号文を1文字毎、2文字毎~26文字毎に切り出して頻度分析した結果を平文の頻度分析結果と比較すれば、解読できる。

ストリーム暗号では変換表は逐字で生成され、周期は無制限なので頻度分析は通用しなくなる。とはいえ、変換表の生成器に癖があれば解読することができる。暗号化を平文から暗号文への線形写像と考えることで、差分解読法および線形解読法を適用することが出来る。