golang + IntelliJ の import パス補完に _vendor, src が含まれる

気になったので調べてみたプロジェクトルートの指定方法が間違っている可能性が高い。以下のようなディレクトリ構成の場合 Myapp _vendor src myapp hanlder handler.goIntelliJ のプロジェクトルートを Myapp に指定すると、 _vendor とか src が含まれる。…

DataStore で Only ancestor queries are allowed inside transactions. のエラー

GCP

DataStore で以下のエラーが出た。 Only ancestor queries are allowed inside transactions. のエラーググると以下がヒット。 http://stackoverflow.com/questions/14397207/why-do-i-get-only-ancestor-queries-are-allowed-inside-transactions-error結論…

CQRSのコマンドでユーザーの入力エラーを返したい

結論から言うと、 DDDの.NET本の実装だとC#の async/await でイベント送信を非同期にしながらも、 同期的に戻り値返してたから、 これが正解なのかね・・・って感じです。 以下は色々調べた結果です。 過去にも似たような記事を書いたけど・・・・ http://d.…

.NETのエンタープライズアプリケーションアーキテクチャ

読みやすいDDD本ってイメージかな・・・。DDDの概念や用語について触れているので、 DDD本のような「DDDとは?」というのも学べるし、 具体的にどう実装するのか? っていうのも載っているので、実践DDD本のようでもある。自分はDDD本、実践DDD本、どちらも読…

DDDにおいて、なぜ複数の集約にまたがってトランザクションをかけてはいけないのか(multiple aggregates in one transaction)

DDD

DDDでは 集約 = トランザクション境界 でなければならないので、 複数の集約をまたがるデータの永続化処理は結果整合性になる。なぜ集約をまたいでトランザクションをかけてはいけないのかというと、 集約で「データの一貫性の境界」を表現するため。 なので…

golang の http request の panic を捕捉する

panic の画面が表示されてしまうので、 どうすればいいのかを調べてみた。echo の middleware ではリクエストを defer して recover してるみたい。 https://github.com/labstack/echo/blob/master/middleware/recover.go#L65-L81 /net/http にもそれっぽい…

プログラマが知るべき97のこと

読みました。「知るべきこと」は1つが2ページほどで、 それぞれが独立している。気になったところだけパッと読めばいいかと。勉強に疲れた時の息抜き用に読んでみるといいかもしれない。

CQRSのコマンドで戻り値を取りたい場合はどうするのか(cqrs command return value)

----- 2016/10/23 追記 --------- コマンド操作が実行されると、 controller で アプリケーションサービスを呼び出す実装ではなく、 controller でコマンドを発行し、 bus で受信し、 saga で処理していくような実装を想定しています。詳しくは .NET本 を見…

golangの正規表現は遅いのか?

golangの正規表現は遅いって聞くけど、実際どーなんだろ? って思ったよっていう記事です。 おそらく、この記事を読んでも何も得られないと思います。 -----追記 2016/11/26 ------- 書籍「みんなのGO言語」で少し言及されていました。 golang の正規表現は場…

DatastoreのParentKey(AncestorQuery)の特徴と使い所(datastore when to use parentkey)

GCP

とはいえ、ちょっと自信ないので、 間違っている箇所があれば指摘してもらえると嬉しい。 ParentKeyはEntity同士を関連付けるキーのことで、 RDBでいう外部キーのようなイメージを持つかもしれないが、全然違う。 何も考えずにParentKeyでリレーションを貼る…

golang の 名前付き結果パラメータ(Named Result Parameters)の利点とか欠点とか使い所について

以下にある。 https://github.com/golang/go/wiki/CodeReviewComments#named-result-parameters日本語でまとめてあるのが以下。 ページ内を「名前付き結果パラメーター」で検索すると出てきます。 http://aial.shiroyagi.co.jp/2016/07/golang-api-server-de…

golang で {"key1":"value1", "key2":"value2"} のJSON字列を map[string]string に変換する(golang json to map)

なぜか苦戦したのでメモしておく。https://gobyexample.com/json ↑ ここに書いてある。上記から抜粋したのが以下。 json.Unmarshal() の第一引数が []byte になっているので、string の場合は変換してあげる必要がある。 var dat map[string]interface{} if …

git で fatal: reference isn’t a tree: xxxxxxx

以下のエラーが出た。 $ git submodule update fatal: reference isn’t a tree: 6c5e70b984a60b3cecd395edd5b48a7575bf58e0ググると以下を発見。 http://blog.machacks.net/2013/10/25/reference_is_not_a_tree/基本上記の記事で解決すると思うが、 自分の場…

BlobStoreAPI で Error: Server Error

BlobStoreAPIで以下のエラーが発生した。 Error: Server Error The server encountered an error and could not complete your request. If the problem persists, please report your problem and mention this error message and the query that caused it…

golang + BlobStoreAPI で ERROR: blobstore: error reading next mime part with boundary "===============xxxxx==" (len=xx): multipart: NextPart: EOF のエラー

ERROR: blobstore: error reading next mime part with boundary "===============xxxxx==" (len=xx): multipart: NextPart: EOF GAEのBlobStoreAPIにファイルをアップロードした後にリダイレクトされるエンドポイントで 以下のように blobstore.ParseUpload…

golangでGCSにzipファイルをアップロードする

zipだからといって、特別なことは必要ない。 普通に書き込めばいいだけなので、 zipファイルを読み込んで、 以下のGCSのサンプルにあるように wc.Wtite() に []byte を渡してやればいい。 https://github.com/GoogleCloudPlatform/gcloud-golang/blob/master…

Google Cloud Storage のバケット直下にフォルダを作成する

GCP

結論から言うと、 ファイル名をスラッシュ区切りにすれば自動的にフォルダが作成される。GCSのサンプルコードでいうと、 以下の fileName という引数を 「my_dir/test.txt」のように指定すれば、my_dir の下に test.txt が生成される。 https://github.com/G…

GAE で Error: Request Entity Too Large のエラー

GCP

以下のエラーが出た。 Error: Request Entity Too Large Your client issued a request that was too large.これは GEA に送信するデータが制限を超えている場合に出る。 自分は 45MB くらいのファイルを form から POST したら発生。 このファイルをGCSに保…

マイクロサービスアーキテクチャ

https://www.oreilly.co.jp/books/9784873117607/読みました。やっぱりマイクロサービスは面倒。 大規模なサービスとか大規模な組織に適している印象。個人で何か作ろうと思っても、マイクロサービスは採用しない。 後から小さく切り出せるようにはしたいけ…

Google Coud Storage はローカルの開発サーバでエミュレートできない

GCP

エミュレートできないので、 GCPにデプロイして確認する必要がある。https://cloud.google.com/sdk/gcloud/reference/beta/emulators/対応しているのは以下のみ。bigtable https://cloud.google.com/sdk/gcloud/reference/beta/emulators/bigtable/datastore…

なぜあなたはJavaでオブジェクト指向開発ができないのか

読みました。オブジェクト指向の入門書的な感じなので、 分かりやすく基礎が学べる気がする。言語が Java なので、 当然ながら interface, abstract が存在しない言語だと その通り作れないんだけど、 それでも考え方自体は役に立つと思う。

オブジェクト指向をきちんと使いたいあなたへ

読みました。ActiveRecordのように機械的にテーブルに紐づくモデルを作って、 それに対してメソッドを生やしていく実装をしていると、 「仕様を反映した本来あるべき姿のモデル」を見失う可能性があるなと感じた。「本来あるべき姿」とフレームワーク、ライ…

golang で type XXX has both field and method named YYY

golang で以下のエラーが出た。 type XXX has both field and method named YYY「XXX はYYYというフィールドとメソッド両方を持ってます」つまり、struct に同名のフィールドとメソッドは定義できない。理由は以下にある。 https://groups.google.com/d/msg/…

コンストラクタで例外を投げていいのか?

コンストラクタで例外を投げていいのか?自分はコンストラクタで例外を投げる派。これはオブジェクトを生成する条件を満たしていないのであれば、 そもそも生成させないようにしたいから。golang で書くとこんな感じ。 golang は例外ないから error を返して…

golang の 正規表現で error parsing regexp: invalid or unsupported Perl syntax: `(?=`

golfing の 正規表現で以下のエラーが出た。 error parsing regexp: invalid or unsupported Perl syntax: `(?=`これは正規表現の「(?= 」(肯定先読み)をサポートしていないってことらしい。 使えないのか・・・。対応しているライブラリはあるみたい。 ht…

DDDと高負荷サービス(というか I/Oアクセス)は相性が悪いのか?

DDD

DDDはActiveRecordパターンのように1つのモデルが1つのテーブルと紐づくとは限らない。具体例を出すと、 DBにUserテーブルがあるからといってUserモデルを作るとは限らない。ログインユーザーを表現するLoginUserモデルと ユーザーのプロフィールを表現するU…

DDD における不要な getter/setter を実装するべきではないという件についての挫折と感想

DDD

別にDDDにかぎらず、 不要な getter/setter を実装しない方がいいというのはその通りなんだけど、 DBに紐づくモデルの getter に関してはそれができないケースがある。利用するORMによって、DBに紐づくモデルに規約が定められている場合は無理。 例えば、ク…

railsのControllerのbefore_actionにおける インスタンス変数セット(データ読み込み)について

Controllerのbefore_actionにおける インスタンス変数セットについて from pospome

vagrant + docker + mysql で mysql を起動したら Check that your OS and file system support files of this size のエラーが出た

発生したエラーは以下。 2016-05-05T10:22:59.842109-00:00 0 [ERROR] InnoDB: Write to file /var/lib/mysql/ibdata1failed at offset 8388608, 1048576 bytes should have been written, only 0 were written. Operating system error number 28. Check th…

MySQL5.7 の mysql_secure_installation でパスワードが分からなかった

パスワードについては以下に載ってる。 http://weblabo.oscasierra.net/mysql-57-init-setup/パスワードのバリデーションについては以下に載ってる。 http://yoku0825.blogspot.jp/2015/08/mysql-578rpmvalidatepassword.htmlこれらについては何かの勉強会で…