はてなブログに引っ越してみたので、テスト投稿(DDD本について)

実践ドメイン駆動設計

実践ドメイン駆動設計

DDDへの誘い

デザインとは、単なる見た目や操作性のことではない。デザインとは、それがどのように動作するかということだ

DDDとは

ドメイン駆動設計というソフトウェア開発手法。 バグがないというさらに、その先に、ビジネス的な意図を明確に反映している素晴らしいソフトを作ること。

誰にでもできるのか

最初は難しいだろう。 ただ、業務を理解できるのなら、ユビキタス言語を生み出すことはできる。 ドメインエキスパートとの会話には大きなメリットがある。

ただ、以下の本のような、技術的なことも理解したほうが良い が、最低限の知識があれば、始めることができる。

Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本

Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

DDDのメリット

Mac版VirtualBox5のフルスクリーンでメニューバーを非表示にする設定(ゲストOS:Windows10)

MacVirtualBox 5にWindows10を入れて使っていますが、最大化表示(フルスクリーン設定)しても、画面の上部にマウスカーソルを持って行くと、Macのメニューバーが表示されてしまいます。
ゲストOSに集中して操作するには使い勝手が少々悪いです。

メニューを非表示にする設定を調べてみたところ、以下のフォーラムに書いていました。

https://forums.virtualbox.org/viewtopic.php?f=2&t=21676 (の一番下)

この方法だと、確かにメニューは出なくなります。ただ、ゲストOSに限らず、すべてのVirutalBoxのアプリでメニューが非表示になります。
そのため、必要な設定があったりする場合は、たまに元の設定に戻さないといけないかもしれません。


簡単にまとめると以下の手順となります。
info.plistファイルを触りますので、自己責任という感じです。

  1. Finderでアプリケーションを開く
  2. VirtualBox.appを右クリックして、「パッケージの内容を表示」
  3. Contents/Resourcesまで行き、VirtualBoxVM.appを右クリックして 「パッケージの内容を表示」
  4. ContentsにInfo.plistがあるので、デスクトップにコピーする(権限があれば直接編集できるかも)
  5. テキストエディタで編集して、"LSCanProvideIMVideoDataSource"と "NSHighResolutionCapable"の間に以下の文言を追加する
    • LSUIElement 1
  6. 保存して、もとのInfo.plistに上書き保存する(管理者権限のパスワードを入力する)
  7. この設定はメモリに保存されるそうなので、一度Macをログオフして、再度ログインする

ちなみに、最大化でメニューが非表示となっても、ショートカットキーは有効です。最大化モードやスケールモードなどを切り替えたいときは、あらかじめ設定しているショーットカットキーをメモしておいて使うと良さそうです。
また、MacVirtualBoxのデフォルトホストキーは左コマンドボタンです。Windowsでは、ホストキーを右コマンドボタンにしておくことをおすすめします。そうすると左コマンドボタンが、Windowsキーになります。

Azureサブスクリプションファイル(*.publishSettings)のダウンロードURL

Azure Management Studioの設定をするときに、Azureのサブスクリプションファイル(*.publishSettings)をダウンロードしてインポートする必要があったので。以下のURLから。

https://go.microsoft.com/fwlink/?LinkId=254432
→( https://manage.windowsazure.com/publishsettings

自分メモ(Macで入れるソフト)

Evernoteに書いているけど、どこに書いたか忘れがちなので。
2017/4更新


Atom
SublimeText Atomで使わなくなった
Visual Studio Code
Karabiner (KeyRemapForMac) 主にFor PC Usersのところ
http://d.hatena.ne.jp/ttaka_tmp/20110414/1302770240 PCKeyboardHackはSeil)
Sierraで使えなくなったので↓へ
Hammerspoon
Karabiner Elements
BetterTouchTool(ウインドウズサイズ合わせ)有料化されたので
shiftlt ウィンドウ合わせ
MemoryClean最近はなくても気にならない
BatteryHealth最近はなくても気にならない
OneDrive
ScrollReverserトラックパッドだけで使うことにした(BetterTouchToolで代用できそう)
Google日本語入力
SimpleCap(スクリーンショットのキャプチャソフト)Mac標準でOK
TextWringrer最近はなくても気にならない
Firefox
Chrome
Opera最近はなくても気にならない
FreeMindXMindを試してみる
XMind
Hoster特に理由はないが使わないので
iTerm2
EverNote 2台限定なので微妙
OneNote
HyperSwitch(Alt+tabによる切り替え)4本指下スワイプがあるので、なくても大丈夫
MS Office
Pocketあまり使わない
WunderlistMS-TODOが後継だが、Appleリマインダーへ
Skype使わない
Slack個人では使わない
Chatwork個人では使わない
Snap(Cmd+1でDock呼び出し)
Alfred(ラウンチャー)Alfred
TweetDeckあまり使わない
Twitter
VMWare Fusion
Virtual Box (GuestAdtionsCD後、ホストキー右に変更。http://pc-karuma.net/mac-virtualbox-host-key/
WinArchiveLite
XCode
Filezila(FTP使う場合)CiberDuckのほうが良い?
SourceTree
Docker
Eclipse
Java
itsycal
Mowglii - Itsycal for Mac
プリンタドライバ
VPN設定 (環境設定-ネットワーク-VPN-PPTPとか環境に応じて)

defaults write com.apple.dock scroll-to-open -bool true
killall Dock

defaults write com.apple.screencapture location ~/SS/;killall SystemUIServer

Azure Storage Emulatorのインストールエラー(CAQuietExec Failed 1603)


申し訳ございません。次の製品をインストールできませんでした。
Microsoft Azure strage Emulator - 3.4 この製品は正常にインストールされませんでした。


Windows Azure Storage Emulator - v3.4、製品バージョン: 3.4.6848.0、製品の言語: 1033、製造元: Microsoft Corporation、インストールの成功またはエラーの状態: 1603

というインストールエラーが出た場合の対策のメモです。





http://normalian.hatenablog.com/entry/2015/04/13/145616

にとても良くまとめられています。



私の環境でも「C:\users\<ユーザー名>\*.mdf と *.ldf」を移動後、コマンドプロンプトから

sqllocaldb stop v11.0
sqllocaldb delete v11.0
sqllocaldb create v11.0

とやったものの相変わらず、以下のエラーでした。

CAQuietExec: Windows Azure Storage Emulator 3.4.0.0 command line tool
CAQuietExec: Error: Cannot create database.
CAQuietExec: Error 0xfffffff3: Command line returned an error.
CAQuietExec: Error 0xfffffff3: CAQuietExec Failed
CustomAction RunInitialize returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)

困っていたところ、

http://stackoverflow.com/questions/23307477/azure-storage-emulator-wont-install

に、

sqllocaldb stop MSSQLLocalDB
sqllocaldb delete MSSQLLocalDB
sqllocaldb create MSSQLLocalDB

という記載がありました。
同じく、こちらも実行したところ、Windows Azure Storage Emulatorを正常にインストールできました。


LocalDBを消すので、操作にはご注意ください。

拡張メソッドのライブラリ一覧(C#)

OSSC#の拡張メソッドのライブラリを調べたメモです。
たくさんありつつも、デファクトスタンダートといったものはない印象です。

ASP.NET5(C#)をCoreOSのDockerで動かす

ASP.NET5の「1.0.0-beta4」を、AzureのCoreOSのDcokerで動かす手順をメモりました。

ASP.NET vNextのDocker

https://github.com/aspnet/aspnet-docker
https://registry.hub.docker.com/u/microsoft/aspnet/


AzureでCoreを作成
Dockerを使うためにCoreOSを使用します。
Azureでインスタンスを作るには、ギャラリーからCoreOSのStableを選択するだけです。


とりあえずはパスワードを指定しておけば、大丈夫です。


ASP.NETアプリを外からつながせたい場合はエンドポイントでHTTPを追加します。

CoreOSでは、DockerもGitも使える状態になっています。


Linux(CoreOS)にSSHクライアントから接続
プロビジョニングが終わったら、PuttyなどのSSHクライアントで繋ぎます。

#ホームへ
cd 

# 作業フォルダを作って移動
mkdir aspnet
cd aspnet

# ASP.NETのサンプルをGitから取得
git clone git://github.com/aspnet/Home.git

# 今回のデプロイ用のDockerの設定ファイルを作成
vim Dockerfile


Dockerファイルの編集
Dockerfileをvimエディタで作成し、以下の内容で保存します。(保存はESCキー後の、ZZ、終了は:q!)

FROM microsoft/aspnet:1.0.0-beta4
ADD ./Home/samples/1.0.0-beta4 /app
WORKDIR /app/HelloWeb
RUN ["dnu", "restore"]

EXPOSE 5004
ENTRYPOINT ["dnx", ".", "kestrel"]
  • Dockerfileの説明
    • beta4のMicrosoftのDockerはMono4.0.1をベースにしています。
    • Gitでとってきたサンプルファイルを渡し、dnu restore(旧 kpm restore)コマンドを実行しています。
    • その後ポート5004で公開して、dnx kestrel (旧k kestrel)コマンドを実行しています。
    • kestrelLinuxでも動くHTTPサーバーです。

この時点でのファイル構造(関係ないところは省略)

/home/aoki/aspnet

--Dockerfile
--Home
--.gitattributes
--.gitignore
--CONTRIBUTING.md
--GettingStartedDeb.md
--Home.sln
--LICENSE.txt
--README.md
--dnvm.cmd
--dnvm.ps1
--dnvm.sh
--dnvminstall.ps1
--dnvminstall.sh
--samples
--1.0.0-beta4
--HelloWeb
--HelloWeb.xproj
--Properties
--launchSettings.json
--Startup.cs
--project.json
--wwwroot
--image.jpg
--NuGet.Config



Dockerイメージ作成
Dockerイメージを作成します。

sudo docker build -t aspnetvnext .

しばらく待ちます。dnu restoreコマンドでアセンブリの取得をするので、時間がかかります。



実行結果

Sending build context to Docker daemon 2.177 MB
Sending build context to Docker daemon
Step 0 : FROM microsoft/aspnet:1.0.0-beta4
---> 94b7c4941bcc

Step 1 : ADD ./Home/samples/1.0.0-beta4 /app
---> 7577bcb65df0
Removing intermediate container dfdf4ce1d496

Step 2 : WORKDIR /app/HelloWeb
---> Running in 5c965567463e
---> c2445e98ce6b
Removing intermediate container 5c965567463e

Step 3 : RUN dnu restore
---> Running in 84f4580847b8
Restoring packages for /app/HelloWeb/project.json
GET https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?Id='Kestrel'.
GET https://nuget.org/api/v2/FindPackagesById()?Id='Kestrel'.
(省略)
OK https://www.myget.org/F/aspnetvnext/api/v2/package/System.Security.Cryptography.Hashing/4.0.0-beta-22907 643ms
(省略)
Installing System.Security.Cryptography.Hashing 4.0.0-beta-22907
Writing lock file /app/HelloWeb/project.lock.json
Restore complete, 565334ms elapsed
---> c08b36d2b243
Removing intermediate container 84f4580847b8

Step 4 : EXPOSE 5004
---> Running in 9c7ee0026d35
---> 6a7785a4718d
Removing intermediate container 9c7ee0026d35

Step 5 : ENTRYPOINT dnx . kestrel
---> Running in b092448c2d29
---> fbc1a2b1c89a
Removing intermediate container b092448c2d29
Successfully built fbc1a2b1c89a

STEP順に実行されます。
(以前と異なり、project.jsonだけではなく、project.lock.jsonなるものが生成されていました。人が触らないファイルのように見えます。)




Dockerイメージの確認

sudo docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
aspnetvnext         latest              fbc1a2b1c89a        11 minutes ago      778.7 MB

aspnetvnextという名前のDockerイメージができています。


Dockerコンテナに配置
Dockerのrunコマンドで、コンテナに配置します。

sudo docker run -t -p 80:5004 aspnetvnext

ポート5004を80に割り当てて実行。
エラーがあれば表示されます。


sudo docker ps -a

上記コマンドで実行できてているDockerコンテナを確認します。




正常起動した場合は

sudo docker stop <コンテナID>

で停止できます。


エラーがなければ、Dockerを-d(デーモン)オプションを付けてサービス実行します。(こちらは、エラーがあっても気づきません。)

 sudo docker run -t -d -p 80:5004 aspnetvnext

確認
画面から確認します。

無事動いていることを確認できました。