AWS データベースブログの記事 「Amazon DynamoDBによる CQRSイベントストアの構築」 を勝手に読み解く
(images: github.com/egonelbre/gophers) こんにちは。 データエンジニアリンググループ(CETチーム)の寺下です。 自分の所属するCETチームでは今まで主にScala、Pythonなどを使ってAPIや基盤を実装してきましたが、最近では徐々にGoによる実装も増えてきており、GAE/GKE上で本番運用を行っています。 本記事ではGoのプロダクトにおいてDDDライクなpackage構成で実装する際の注意点や、汎用的に通用するであろう実装のTipsについて書いていきます。 本記事で紹介する例がベストプラクティスだというわけではありませんので、あくまで実装の一例程度に捉えて頂けると幸いです。 Goのアーキテクチャ Goは言語仕様がシンプルかつフォーマッタが強力なため、syntaxレベルでは開発者によってコードの品質がブレにくいというメリットがあります。 しかしなが
scalar型を新しく定義するためにはscalarキーワードを使います。例えば、Date型を新しく定義するには次のようにします。 scalar Date スキーマではこれだけですが、実際に使う際はGraphQL処理系に対してさらにシリアライズとデシリアライズを定義することになります。 GraphQL組み込みのscalar型は先にあげたものだけなので、例えばバイナリ、日付と時刻、HTML/XML、BigIntなどを必要に応じて追加することになるでしょう。ただしその場合、サーバーサイドとクライアントサイドでシリアライズ・デシリアライズの実装を一致させる必要があります。 Enum enum(イナム)はscalar型の一種で、特定の値のみを持つ型です。例えば、組み込みscalar型であるBooleanをenumで宣言すると次のようになるでしょう。 enum Boolean { true false
こんにちは、技術推進室の篠崎(前回より5ヶ月ぶり)です。 Ruby on Rails(以下Rails)にはイベント(SQLを実行する、テンプレートを描画するなど)に対してフック(計測)できる仕組みがあるのはご存じですか? おなじみのログもこのフックの仕組みを利用して出力されています。(1行目除く) Started GET "/samples/1.json" for 127.0.0.1 at 2014-12-10 12:35:30 +0900 Processing by SamplesController#show as JSON Parameters: {"id"=>"1"} Sample Load (0.5ms) SELECT `samples`.* FROM `samples` WHERE `samples`.`id` = 1 LIMIT 1 Sample Load (0.5ms) S
古いバージョンの GKE を実行しているクラスタの場合、GKE コントローラは、kubernetes.io/ingress.class アノテーションがないか、値が gce または gce-internal のアノテーションがある Ingress を処理します。 kubernetes.io/ingress.class アノテーションの非推奨 kubernetes.io/ingress.class アノテーションは Kubernetes で非推奨になりましたが、GKE では引き続きこのアノテーションが使用されます。 ingressClassName フィールドを使用して GKE Ingress を指定することはできません。kubernetes.io/ingress.class アノテーションを使用する必要があります。 外部アプリケーション ロードバランサの機能 Ingress によって構成さ
debianを使う。 pythonでmysqlを使うのに必要というので、 $ sudo apt-get install libmysqlclient-dev Reading package lists... Done Building dependency tree Reading state information... Done Package libmysqlclient-dev is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package 'libmysqlclient-dev' has no insta
I am fairly new to the Google Cloud platform and Docker and set-up a cluster of nodes, made a Dockerfile that copies a repo and runs a Clojure REPL on a public port. I can connect to it from my IDE and play around with my code, awesome! That REPL should however probably tunneled through SSH, but here is where my problem starts. I can't find a suitable place to SSH into for making changes to the re
git dtコマンド - razokulover publog を見て自分もgitのコマンドをカスタマイズしてるのを思い出したので普段よく使っているのを紹介します。 対象者 作業途中はtmpコミットをたくさん作って、最後に git rebase -i でコミットを整えている人 前置き gitのタイプ数を減らす gitコマンドを使う時に毎回 git と3文字タイプするのは時間の無駄なのでエイリアスつけるのをおすすめします ~/.bash_profile とか ~/.bashrc 辺りに下記を書きます。 alias g='git' これで g だけでgitコマンドが使えます git-now iwata/git-now tmp コミットのための独自サブコマンド git-now - アジャイルSEを目指すブログ 最速でtmpコミットするためのコマンド。Macなら brew install git-
In the case with Cloud SQL and Node.js it would look something like this: steps: # Install Node.js dependencies - id: yarn-install name: node:18 entrypoint: yarn args: ["install", "--frozen-lockfile"] waitFor: ["-"] # Install Cloud SQL proxy - id: proxy-install name: node:18 entrypoint: sh args: - "-c" - "wget https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.4.0/cloud-sql-pro
1.2 GOPATHとワーキングディレクトリ さきほどGoをインストールする際はGOPATH変数を設定する必要があるとご説明しました。Goはバージョン1.1から必ずこの変数を設定するようになっており、Goのインストールディレクトリと同じにはできません。このディレクトリは、GoのソースコードやGoの実行可能ファイル、並びにコンパイル済みのパッケージファイルを保存する為に使用します。そのためこのディレクトリには3つのサブディレクトリが存在します:src、bin、pkgです。 GOPATH設定 go コマンドは、ある重要な環境変数に依存しています:$GOPATH1 Windowsシステムにおいて環境変数の形式は%GOPATH%です。この本の中では主にUnix形式を使用します。Windowsユーザは適時置き換えてください。 (注:これはGoのインストールディレクトリではありません。以下では筆者のワ
こんにちはエンジニアののりすけです。 みんなのマーケットではPythonを使用したサービスを動かしています。以前より使用メモリが異常に大きいサービスがあるため、SREチームからなんとかしてほしいとの依頼が来ています。 今回はサンプルコードを使ってPythonのメモリプロファイルを行いながら、省メモリなアプリケーションをどのように実装するか検証したいと思います。 利用するツール memory_profiler matplotlib 上記のライブラリをpip installでインストールしておきます。 memory_profilerの基本的な使い方 まず使い方を確認します。以下のように確認したい処理にデコレータ@profileを記述します。 from memory_profiler import profile def large_integer_list(): return [i for i
今回は memory_profiler というモジュールを使ってプログラムのメモリ使用量を調べる方法について紹介する。 pypi.python.org このブログでは、以前に Python のプロファイラとして profile/cProfile や line_profiler について書いたことがある。 これまでに紹介したこれらのプロファイラは、主に時間計算量の調査が目的となる。 それに対して memory_profiler では、調べる対象は空間計算量となる。 blog.amedama.jp blog.amedama.jp 使った環境は以下の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.12.6 BuildVersion: 16G1212 $ python --version Python 3.6.4 下準備 まずは mem
python3でエラーになるので frame = inspect.currentframe(depth + 1)から frame = inspect.currentframe().f_backに修正 import inspect import os def location(depth=0): frame = inspect.currentframe().f_back return os.path.basename(frame.f_code.co_filename), frame.f_code.co_name, frame.f_lineno def func1(): print(location()) def main(): print(location()) func1() if __name__ == '__main__': main() exit(0)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く