Ruby on Rails デバッグ環境を探す
Ruby on Rails 。
奇跡的に夜中2:30まで勉強する。明日、遅刻しないように。
以下、Ruby on Railsに限った話なのかもしれないですが。オープンソースのプログラミング言語を扱う際、開発環境構築は大事ですよね。プログラム言語を学ぶとか、フレームワークを学ぶとか目的はあるにしても、最初に行う開発環境構築のハードルがちょっと高い気はしていて。親切な手順が売られていない。だからといって私が親切に手順を書くというわけでもない。Eclipse使えばいいじゃんっていう人も居るでしょうし、そんなの余裕っていう人も居るんでしょうけど。Eclipseって妙に設定が多くて、なんかやりにくいんですよ。個人的に。
オープンソースの言語を効率よく使用するために有償の統合開発環境へ投資してくれる現場であれば、別に心配ないんですが。RubyMineはよさげ。
とにかく、開発環境構築の手順でつまずいて、英語のエラーメッセージが表示されて動かなーい→あきらめる、学ぶのを辞めるという状況が世の中には多い気がしていて。なので、その開発環境構築をクリアしてしまえば、ひとまずはOK!っていう感じはしてる。1番最初にやることって「デバッグのためにステップ実行できる環境」を整えることだと思うんですよね。デバッグ環境があれば、プログラムは書きやすいはずで。で、せっかくOSSなので、お金をかけたくない。Aptana Studio、Eclipse もあるんだけど、以下の2つに絞った。環境構築の手順は、いつかまとめるとして。
・Visual Studio Code
⇒なんだかんだいって、マイクロソフトの製品は、他より使いやすい。
さすがは、グローバルぼったくり超一流企業なだけに、無償で提供されている製品も使いやすい。
シンプルだね。
・pry-byebug
⇒これさえあれば大丈夫って感じだった。
【1】Visual Studio Code
Rails アプリケーションのデバッグ。Hello World!、こんにちは!世界!ということで。
【2】pry-byebug
Rails アプリケーションのデバッグ。Hello World!、こんにちは!世界!ということで。
アジャイルソフトウェア開発の奥義 第2版
「ソフトウェア設計」に関する書籍としていい感じだなと思った。
アジャイルソフトウェア開発の奥義 第2版
オブジェクト指向開発の神髄と匠の技
SBクリエイティブ:アジャイルソフトウェア開発の奥義 第2版
投資家、起業家、企業経営者の話
■IVSウィンターワークショップ2013 Session 5
テーマ: 「人生は挑戦だ!」
(スピーカー)
株式会社ディー・エヌ・エー 顧問 川田尚吾 氏
株式会社gumi 代表取締役社長 國光宏尚 氏
KLab株式会社 代表取締役社長 真田哲弥 氏
ヤフー株式会社 執行役員 小澤隆生 氏
(モデレーター)
インフィニティ・ベンチャーズLLP 共同代表パートナー 小野裕史
vimeo.com
■べンチャー・キャピタル進化論~経営者と投資家の付き合い方
川田尚吾氏
松山太河氏
赤浦徹氏
渡辺洋行氏
G1ベンチャー2015
www.youtube.com
■プロフェッショナル 仕事の流儀
「ベンチャー企業経営者 南場智子の仕事 仕事でこそ、人は育つ」
www.youtube.com
SQL Server 2016 データ暗号化
SQL Server 2016 の新機能「Always Encrypted」。
Always Encrypted (データベース エンジン) | Microsoft Docs
以下サイトで、どんなものか確認してみる。
SQL Server 2016 CTP 2.0 の Always Encrypted を使ってみる at SE の雑記
ということらしい。「Always Encrypted」の動作については、また後ほど確認してみるとして。
今のところは、いろいろと検討した結果、管理者側の機能としては、
顧客の「システム担当」が、対称キー作成時のパスワードを
ユーザー情報の登録/更新/参照の際(対称キーOpenの際)に入力した時に、
・ユーザー情報を暗号化して登録(更新)できる
・ユーザー情報を復号化して参照できる
といった動作にしていくことを予定。
なので「Always Encrypted」を使用しない方法でやってみる。
【1】対称キーの作成(アルゴリズムは AES_256 を指定)
CREATE SYMMETRIC KEY Beck_Sym_Key WITH ALGORITHM = AES_256 ENCRYPTION BY PASSWORD = '[SymKeyPassword]' go
【2】登録時の操作(暗号化)
(例)MST_USERテーブル(CREATE文)
暗号化する項目は[varbinary](max)型。
CREATE TABLE [dbo].[MST_USER]( [SystemUserID] [uniqueidentifier] NOT NULL, [UserID] [varbinary](max) NOT NULL, [LoginID] [varbinary](max) NOT NULL, [Password] [varbinary](max) NOT NULL, [LastName] [varbinary](max) NOT NULL, [FirstName] [varbinary](max) NOT NULL, [LastNameKana] [varbinary](max) NOT NULL, [FirstNameKana] [varbinary](max) NOT NULL, [MailAddress1] [varbinary](max) NOT NULL, [MailAddress2] [varbinary](max) NULL, CONSTRAINT [PK_MST_USER] PRIMARY KEY CLUSTERED ( [SystemUserID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
(1)対称キーをオープンする。対称キーの GUID を Key_GUID 関数で取得して、
EncryptByKeyでデータを暗号化して INSERT する。
OPEN SYMMETRIC KEY Beck_Sym_Key DECRYPTION BY PASSWORD = '[SymKeyPassword]' go DECLARE @kGuid UNIQUEIDENTIFIER SET @kGuid = Key_GUID('Beck_Sym_Key') INSERT INTO MST_USER ( [SystemUserID], [UserID], [LoginID], [Password], [LastName], [FirstName], [LastNameKana], [FirstNameKana], [MailAddress1], [MailAddress2] )VALUES( NEWID(), EncryptByKey(@kGuid, "[UserID]", EncryptByKey(@kGuid, "[LoginID]", EncryptByKey(@kGuid, "[Password]", EncryptByKey(@kGuid, "[LastName]", EncryptByKey(@kGuid, "[FirstName]", EncryptByKey(@kGuid, "[LastNameKana]", EncryptByKey(@kGuid, "[FirstNameKana]", EncryptByKey(@kGuid, "[MailAddress1]", EncryptByKey(@kGuid, "[MailAddress2]" )
(2)対称キーの CLOSE
CLOSE SYMMETRIC KEY Beck_Sym_Key go
(参考)SELECT文を実行するとデータが暗号化されていることを確認できる。
SELECT * FROM MST_USER
【3】参照時の操作(復号化)
(1)SELECT文を実行(DecryptByKey で復号化)
対称キーをOPENして、SELECT文を実行。DecryptByKeyでデータを復号化する。
OPEN SYMMETRIC KEY Beck_Sym_Key DECRYPTION BY PASSWORD = '[SymKeyPassword]' SELECT TOP 1000 [SystemUserID] ,CONVERT(varchar, DecryptByKey([UserID])) AS [UserID] ,CONVERT(varchar, DecryptByKey([LoginID])) AS [LoginID] ,CONVERT(varchar, DecryptByKey([Password])) AS [Password] ,CONVERT(varchar, DecryptByKey([LastName])) AS [LastName] ,CONVERT(varchar, DecryptByKey([FirstName])) AS [FirstName] ,CONVERT(varchar, DecryptByKey([LastNameKana])) AS [LastNameKana] ,CONVERT(varchar, DecryptByKey([FirstNameKana])) AS [FirstNameKana] ,CONVERT(varchar, DecryptByKey([MailAddress1])) AS [MailAddress1] ,CONVERT(varchar, DecryptByKey([MailAddress2])) AS [MailAddress2] FROM [ProjectManagementSystem].[dbo].[MST_USER]
(2)対称キーの CLOSE
CLOSE SYMMETRIC KEY Beck_Sym_Key
(参考)SELECT文を実行して復号化されたデータを参照。
※対称キーをDROPする場合
DROP SYMMETRIC KEY Beck_Sym_Key
【4】ユーザ登録を行うプロシージャのサンプル
CREATE PROCEDURE [dbo].[RegistUser] @SymKeyPassword varchar(250), @UserID varchar(250), @LoginID varchar(250) , @Password varchar(max) , @LastName varchar(max) , @FirstName varchar(max) , @LastNameKana varchar(max) , @FirstNameKana varchar(max) , @MailAddress1 varchar(max), @MailAddress2 varchar(max) AS BEGIN DECLARE @OpenCmd nvarchar(MAX) SET @OpenCmd =N'OPEN SYMMETRIC KEY Beck_Sym_Key DECRYPTION BY PASSWORD = ''' + @SymKeyPassword + ''' ' EXECUTE sp_ExecuteSql @OpenCmd DECLARE @kGuid UNIQUEIDENTIFIER SET @kGuid = Key_GUID('Beck_Sym_Key') INSERT INTO MST_USER ( [SystemUserID], [UserID], [LoginID], [Password], [LastName], [FirstName], [LastNameKana], [FirstNameKana], [MailAddress1], [MailAddress2] )VALUES( NEWID(), EncryptByKey(@kGuid, @UserID), EncryptByKey(@kGuid, @LoginID), EncryptByKey(@kGuid, @Password), EncryptByKey(@kGuid, @LastName), EncryptByKey(@kGuid, @FirstName), EncryptByKey(@kGuid, @LastNameKana), EncryptByKey(@kGuid, @FirstNameKana), EncryptByKey(@kGuid, @MailAddress1), EncryptByKey(@kGuid, @MailAddress2) ) CLOSE SYMMETRIC KEY Beck_Sym_Key END
Visual Studio 2015 Professional VB.NET 単体テストの作成
Visual Studio 2015 Professional VB.NET(以下、VB)にて、MSTestを利用した単体テストの自動化を試しています。ユニットテスト・フレームワークはたくさんありますが、VisualStudio標準の「MSTest」から使ってみようというところです。
手順を確認した際に、VBにおいてコードエディタ上のコンテキストメニューから「単体テストの作成」が行えない現象が発生する場合がありました(※VBの単体テストプロジェクトを手動で作成する方法や、C# の場合には問題なく行えました)。 現時点で、他の端末での動作等は未確認のため、端末依存の問題であるかどうか不明で、また、設定が不足している、VisualStudioの不具合とも断定できない状況ではあります。
ただ、VBにおいても、コードエディタ上で右クリックから単体テストの作成を行えた方が便利と思い、コンテキストメニューから「単体テストの作成」が行えない現象を回避する方法を見つけましたので、記載しておきます。
■前提
前提としては、コードエディタ上のコンテキストメニューに「単体テストの作成」を表示する設定が行われていることです。まずは、「単体テストの作成」をコンテキストメニューに表示する設定を行う必要があります。
以下のサイトはVisualStudio2012の手順にはなりますが、参考になりました。
VisualStudio2015でも同様の手順で設定が行えます。
すがろぐ – visualization
■手順(例)
VBでコードエディタ上のコンテキストメニューから「単体テストの作成」を行うための操作
(2) VBのクラスライブラリを選択します。OKボタンを押下します。
(4) ソリューションエクスプローラーで、ソリューションを右クリック→[追加]→[新しいプロジェクト]を選択します。
(5) C#のクラスライブラリを選択します。OKボタンを押下します。
(8) (C#)以下のエラー画面が表示されます。[OK]ボタンを押下します。