BLOB、テーブル、キュー、ファイルと4種類あり、用途に合わせて使えるようになっています。今回はBLOBを使ってみます。BLOBはどんなデータも入れることができ、画像などの配信にも利用することができます。
BLOBはコンテナというグループの中にいれます。
Azureのポータルからストレージとコンテナーを作成しておきます。
コンテナーはストレージのコンテナーのタブより追加ボタンを押すと作成できます。
testcontaierというプライベートなコンテナーを作成。
Microsoft Azure Storage クライアント ライブラリがあり、非常に簡単に使えるようになっています。
|
|
VisualStudio上からも確認できますが、ストレージの操作はAzure Storage Explorer を入れておくと便利です。手動でファイルをアップロードしたい場合はこれを使うのがよさそうです。
|
|
|
|
あとはGetBlockBlobReference
でパスの参照を取得してアップロードしたりダウンロードしたりします。
|
|
メソッドはもちろん非同期対応もしています。
Azure Storage Explorerから確認するとこのようになっています。
パスを/
で区切るとフォルダになるようでした。
フォルダの参照はGetDirectoryReference
で取得できます。
参照を取得したあと中身の一覧はListBlobs()
で取得できます。
Windowsのファイルシステムに近い感覚で使用でき、思ったより使い勝手がよさそうです。
他にもいろいろできるようなのでぜひ使ってみてください。
https://azure.microsoft.com/ja-jp/documentation/articles/storage-dotnet-how-to-use-blobs/
BLOB、テーブル、キュー、ファイルと4種類あり、用途に合わせて使えるようになっています。今回はBLOBを使ってみます。BLOBはどんなデータも入れることができ、画像などの配信にも利用することができます。
]]>新規ボタン > データサービス > SQLデータベース > 簡易サービス を選択し
データベース名を入力するだけです。
作成されました。
下の方のメニューの「VISUAL STUDIOで開く」というボタンを押してみると
VSでSQLServerObjectExplorerが開いて編集できるようです。
適当にテーブルを作成し、データを入れておきました。
管理ポータルからもsilverlightの管理画面があり編集できるようでした。
接続の仕方は非常に親切で管理ポータル上の「接続文字列の表示」で
各言語の接続文字列を表示してくれます。
Websitesから接続するためには
Websitesの「リンク済みリソース」よりSQLDatabaseをリンクさせておきます
Dapperを使って、テーブルの中身をjsonで出力してみます。
|
|
デプロイして
http://teppeee.azurewebsites.net/posts
にアクセスすると
|
|
接続できました。
導入は非常に簡単にできることがわかりました。
]]>]]>
まずはAzureの登録を済ませます。
次にWebsitesを作成します。
VisualStudioからも作成できますが、ポータルから作成してみます。
「+新規」ボタンより
コンピューティング > Webサイト > 簡易作成
URLを入力し、地域を選択。
日本もデータセンターがあるのがよいです。
これだけで作成できました。
Webアプリを作成しDeployします。
VisualStudio でASP.NET MVCのプロジェクトを作成します。
あとはプロジェクトのpublishで作成したWebsitesを選ぶだけです
差分を確認してpublishボタンを押すとデプロイ完了
GAEではハマってしまいましたが、
Azureは驚くほど簡単にデプロイできました。
ポータルより
デプロイ資格情報のリセットしてIDPASSを設定すると
FTP接続でもデプロイできます
ポータルより
構成 > アプリケーション診断 or サイト診断
でログ記録をオンするとログが保存され、
VisualStudio上のサーバーエクスプローラーで確認できます。
ログは新ポータルではリアルタイムで確認できたりするようです。
左上のリードレプリカボタンが気になっていました。
Additional read capacity for applications dominated by reads.
In-cloud analytics that doesn’t interfere with your transactional database.
とあり、負荷分散を図ることができるようです。
バイナリログを使用することによるパフォーマンスとストレージのオーバーヘッドがあります。
ボタンをおしてみます。
保存すると
一瞬でスレーブを作成することができました。
もちろんレプリカ分もお金かかるので注意です。
左上のリードレプリカボタンが気になっていました。
]]>スキーマレスなオブジェクトデータベースです。
Kindと呼ばれるテーブルみたいなものに
Entityと呼ばれるオブジェクトを格納できます。
Entityには一意のKeyが割り当てられています。
EntityのフィールドはPropertyといいます。
標準のappengine/datastoreパッケージをラップしてくれた
mjibson/goonを使うのが便利でよさそうです。
goapp get github.com/mjibson/goon
|
|
結果:
これだけのコードでKind作成してKeyを割り振ってくれます。
Key Nameはprimary keyの別名みたいなものですが、
ない場合はIDが割り振られます。
goonのタグをつけてみます。
|
|
結果:
IdはEntityに含まれなくなり、
Key Nameに入るようになりました。
Key Name指定で取得
|
|
全件取得
|
|
Queryのメソッドの組み合わせて簡単なフィルターやソートは可能です。
goon優秀です。
Memcacheへのキャッシュ機能もあります。
さわってみただけでしたが、Datastore自体は癖があるので、使う時は注意がいりそうです。
参考
]]>スキーマレスなオブジェクトデータベースです。
Kindと呼ばれるテーブルみたいなものに
Entityと呼ばれるオブジェクトを格納できます。
Entityには一意のKeyが割り当てられています。
EntityのフィールドはPropertyといいます。
gojiはシンプルで高速なWAFです。
middlewareを足すことで機能を追加することができます。
ORMは他にcoopernurse/gorpも有名らしいですが、gormのほうがドキュメントが充実しており機能も豊富なのでgormを使ってみます。
goapp get github.com/zenazn/goji
goapp get github.com/jinzhu/gorm
cakephpのチュートリアルのサンプルを拝借しました。
|
|
createdとmodifiedの部分はgormに合わせて変更しました。
サンプルの内容も入れておきます。
違うテーブル名やカラム名でもマッピングできるようですが、
最初ならマイグレーションファイル作るのがよさそうです。
http://qiita.com/masahikoofjoyto/items/b2e6c2cad447e48f91ee
対応するmodel
|
|
簡単にルーティングを作成します。
gojiはgaeから使う場合はhttp.Handle("/", goji.DefaultMux)
とします。
|
|
datetimeのマッピング時に標準時が使用されるため接続文字列にloc=Japanが必要でした。
posts以下をまとめるにはSubRouterというmiddlewareを使用します。
|
|
|
|
|
|
そのままSaveできれば便利だったのですが、created_atが消えてしまいました。
ちょっといまいちな感じになっています。
{"Id":2,"Title":"タイトル編集","Body":"本文編集"}
Idありでpostすると編集され、
{"Title":"タイトル新規追加","Body":"本文新規追加"}
Idがないと新規追加されます。
テストやDB側が複雑になった場合の不安はありますが、
簡単なものであればすぐに作れそうです。
gojiはシンプルで高速なWAFです。
middlewareを足すことで機能を追加することができます。
ORMは他にcoopernurse/gorpも有名らしいですが、gormのほうがドキュメントが充実しており機能も豊富なのでgormを使ってみます。
goapp get github.com/zenazn/goji
goapp get github.com/jinzhu/gorm
CloudSQLのインスタンスを作成し、
アクセス制御 > 承認済みのAppEngineアプリケーションを追加します。
最初にアジアでインスタンスを作成するとAppEngineのアプリケーションと地域が違うようで設定できませんでした。
しょうがないので米国で作成。
結論から行くと
https://github.com/go-sql-driver/mysql
のリファレンス通りで接続することができました。
|
|
コンソールの中にrootのパスワードを設定する箇所があり、
リモートで接続する際に設定していたため、必要だと思い込んでいました。
調べると接続できないと言っている人がいて必要そうに見えます。
http://stackoverflow.com/questions/21368363/how-to-connect-to-google-cloud-sql-with-go-sql-driver-mysql-on-app-engine
|
|
で見てみるとパスワードが空になっていたため、パスワードは設定なしで繋がりました。
簡単なクエリはAPIコンソール(旧管理画面)の「SQL Prompt」というタブから実行できます。
]]>チュートリアルにしたがって進めてみます。
https://cloud.google.com/appengine/docs
の「try it now」ボタンより
SDKをダウンロードします。
次のコマンドを使って Go 用 App Engine パッケージをインストールします:
|
|
言語別のSDK単体もありますが、
管理ツールがついてくるこちらからインストールしたほうがよいです。
SDKはそのままのパスでProgram Filesにインストールすると
半角スペースが原因でgoapp serve
が動かないので注意です。
GAE用のプロジェクトも作成します。ここで割り振られた
プロジェクトIDをデプロイ時に使用します。
あとは
SDKをインストールしたフォルダの中の\platform\google_appengine
にツール類があるのでパスを通します
プロジェクトを作成します。
Create New Project > Go App Engine を選択します。
適当に名前をつけて作成します。
次にFile > ProjectStructure > SDKの+ボタンよりSDKを追加します。
SDKのpathは SDKをインストールしたフォルダの中の\platform\google_appengineを指定します。
追加したSDKを ProjectStructure > Project より選択します。
ひな形のプロジェクトが作成されます。
app.yamlを編集してapplicationの部分をGAEのコンソールのプロジェクトIDにしておきます。
|
|
右上の下矢印よりEdit Configurations > 「+」ボタン > Go Local AppEngine Serverを選択
特に設定は変更せず、適当にNameをつけて保存します。
作成した実行プロファイルを選択して、緑色の「▽」ボタンを押して実行します。
localhost:8000 にアクセスしてみると開発用の管理画面が表示されます。
「default」を押すと動いているのが確認できます。
まずgoapp deploy
してみましたが、認証がうまく通りませんでした。
SDKにGoogle App Engine Launcherというのがついているのでこれを使ってみます。
File > Add Existing Application で作ったプロジェクトを選択します。
あとは「Deploy」ボタンをおしてGoogleアカウントのID・パスワードを入力すると
デプロイすることができました。
http://{your project id}.appspot.com/
にアクセスすると動いているのを確認することができます。
IntelliJ IDEA上でgo fmt等のツールがエラーになるようになっていました。
SDKをみてみるとgorootというフォルダがあり、基本パッケージやツール類が入っています。
どうやらSDK内にGOそのものを内包しており、GAEではこちらがGOROOTになるようです。
IntelliJ IDEA の Setting > Tools > Google Goで
GOROOTにplatform\google_appengine\gorootを選択しようとしましたが
エラーになり選択できませんでした。
荒業ですが、
IntelliJ IDEAはplatform\google_appengine\の直下を見に行ってるようなので
platform\google_appengine\goroot\binのツール類(go fmt等)を
platform\google_appengine\にコピーしてやれば動きました。
Cloud SQL、Cloud Datastore、Cloud Storageと組み合わせることである程度のことまではできそう。
Google ドライブはユーザー向けで、Google Cloud Storage はデベロッパー向けです。
とのこと
最近Container Engine(アルファ版)というのができたようです。
最近注目のビッグデータ解析用
neue氏がC#からも使いやすくしてくれています。
LINQ to BigQuery - C#による型付きDSLとLINQPadによるDumpと可視化
Cloud SQL、Cloud Datastore、Cloud Storageと組み合わせることである程度のことまではできそう。
]]>Go言語は2009年にGoogleによって作られたオープンソースの静的言語で、Linux・Mac・WindowsやAndroidで動作します。最近ではGoogle App Engineで使うこともできます。
- シンプルな言語である。
- コンパイル・実行速度が早い。
- 安全性が高い。
- 同期処理が容易に行える。
- なにより楽しい。
- オープンソースである。
IDE厨なのでIDEの環境設定から始めます。
普段C#でVSを使っているので、IntelliJ IDEAが一番手に馴染みそうです。
Go の開発環境は IntelliJ IDEA + golang plugin がマトモだった
を元にIntelJ IDEAを使ってみます。
Windowsだと思っていたより簡単でした。
無料のコミュニティエディションをダウンロード
https://www.jetbrains.com/idea/download/
最近リリースされたGo1.4に対応する最新版のプラグインをダウンロード
https://github.com/go-lang-plugin-org/go-lang-idea-plugin/releases
Settings → Plugins → ダウンロードしたJarファイル指定
SDKの設定は環境変数のGOROOT(C:\Go)
goのよいところでgo get
で簡単にgithubなどに置いてある
オープンソースライブラリをとってきて使うことができます。
とってきたパッケージは環境変数のGOPATHで指定しているパスに入るようです。
そのままだと補完が効かないので
file → Project Structure → SoucePath
でGOPATH/srcを設定します。
最近保存時のgo fmtに対応したようで、自動で整形してくれます。
IntelliJ IDEAは使ったことなかったですが、なかなか便利です。
Windows8のインストール時にMicrosoftアカウントでアカウント設定をすると
Usersに日本語名でフォルダができてしまいます。
単純にユーザー名変更では変更することができません。
ずっと放置していましたが、海外製ライブラリで問題になることが多かったので、
修正方法を調べてみました。
いろいろでてきますが、自分がした方法をまとめます。
(Windows8.1でMicrosoftアカウントを使用している状態から)
Windows8のインストール時にMicrosoftアカウントでアカウント設定をすると
Usersに日本語名でフォルダができてしまいます。
単純にユーザー名変更では変更することができません。
ずっと放置していましたが、海外製ライブラリで問題になることが多かったので、
修正方法を調べてみました。
いろいろでてきますが、自分がした方法をまとめます。
(Windows8.1でMicrosoftアカウントを使用している状態から)
私も以前はメモをただのテキストで書いていましたが
最近はMarkdownを使っています。
文書が構造化されて見やすくなりますし、まとまります。
コードが綺麗に見えるのがいいですね。
どんなものかはこちらを参照
簡単に書けると言ってもエディタのサポートが欲しいです。
Macはkobitoが使えるので羨ましい。
Windowsはこれといったのがないですね。
atom
Github製エディタ
通常エディタとしてはまだ安定性にかけますが、Markdownエディタとしては使えます。
Markdownを使うのに環境構築なんて不要!?
会社の人にもjsライブラリを教えてもらいましたが、
こういう方法もあるみたい。
仕様が定まっていないです。
標準化の動きはあるようです。
公式みつつ、いろいろ試してみます。
|
|
で指定する
highlight.jsを使っている模様
大抵の言語に対応していて便利!
|
|
まず_config.yml で
|
|
を設定
|
|
で\source_posts\の中にtitleフォルダができるので画像をいれれば使えます。
ただテーマのせいか参照の仕方がめんどくさいです。
まあこれだけあればブログは書けそうです。
_config.ymlで
|
|
\themes\apollo の中にも_config.ymlがあり、
設定しても反映されなくて何度もレイアウトファイル見直してしまいました。。
\themes\apollo\layoutをいぢる
テーマによっては<!-- more -->
を記事本文にいれることで
全文表示しなくなります。
|
|
でローカルでサーバー起動して記事の確認ができますが、
編集した内容がリアルタイムで反映されるようです。
公式みつつ、いろいろ試してみます。
]]>結構深いネタが多く、見るだけでも楽しめます。
私は今年はC#、Go、Js関連をメインで見ています。
静的サイトジェネレーターもいろいろありますね。
一番人気はJekyllでそれをブログ用に拡張したのが
Octopressのようです。
まずはOctopressでと思い調べてみると
重くてmiddlemanに乗り換えたという記事がやたらと出てきました。
middlemanはRuby使える人にとっては拡張しやすくてよさそうですが、
テーマ等はあまりなく、自分でデザインしないといけないようです。
そんな中、
所要時間3分!? Github PagesとHEXOで爆速ブログ構築してみよう!
の記事を見て、Node.jsもインストールされているし
JavaScriptのほうがまだ使えるので良さそうに思いました。
Documentもそこそこあるようです。
基本的に「所要時間3分!? Github PagesとHEXOで爆速ブログ構築してみよう!」
の記事通りでいけますが、
Githubへのdeployがうまくいきませんでした。
|
|
で
[info] Deploy done:github
となったがdeployされておらず
|
|
とすると
|
|
エラーができました。
いろいろ調べたところ・・・
GitにPATHが通ってませんでした。
初歩的な分ハマった。。
気をとりなして
|
|
すると
|
|
次はsshのエラーがでました。
C:\Users\(ユーザー名)\.sshのフォルダを作って
id_rsa というファイル名で秘密鍵
id_rsa.pub というファイル名で公開鍵を保存します。
puttygen.exeを使う場合はmsysgitのSSHはOpenSSHなので
秘密鍵はメニューの「変換」→「OpenSSH形式へエクスポート」で保存
公開鍵は テキストエリア「OpenSSHのauthorized_keysファイルに・・・」をコピペで保存
これで
|
|
で記事を作って
source\_posts のmdファイルを編集し
|
|
で公開できる環境ができました。
まだまだ機能が少ないので調査しつつ足していく予定です。
]]>みなさまの選択の幅を少しでも広げれればと思います。
普段はC#.NETで開発をしていますが、
Microsoftもオープンソースな部分が増えましたし、
C#の良さを少しでも広めたいという思いもあります。
みなさまの選択の幅を少しでも広げれればと思います。
普段はC#.NETで開発をしていますが、
Microsoftもオープンソースな部分が増えましたし、
C#の良さを少しでも広めたいという思いもありま]]>