パパエンジニアのポエム

奥さんと娘ちゃんへの愛が止まらない

建築士がプログラマーのごとく働かねばならぬとしたら

If architects had to work like programmers... 上記サイトの翻訳です。 ソフトウェア開発という行為が、いかに複雑で困難なことかを説明する時のために残しておく。 全プログラマが泣ける内容になっております。 建築士様、 家を一つ設計施行してください…

ドメイン駆動設計をざっくり把握したい②

DDD

戦術的設計 レイヤ化アーキテクチャ 依存関係逆転の原則(DIP) エンティティ ドメインサービス 集約 ファクトリ リポジトリ アプリケーション ユーザーインターフェース アプリケーションサービス インフラストラクチャ 前回の続き。 DDDの戦術的設計をざっく…

ドメイン駆動設計をざっくり把握したい①

DDD

前提 DDDとは DDDの登場人物 DDD導入メリット(事業) DDD導入メリット(人物) DDD導入メリット(具体例) DDD用語集 DDDをざっくりまとめておく必要があったので、メモがてらまとめる。 前提 「ソフトウェア開発とは、恐ろしく複雑である」という事実を真正面か…

PHPとnginxとMySQLをdocker-composeでミニマム構築

PHPの環境構築 nginxの環境構築 index.php docker-compose 感想 ちょっとPHP触ってみたくなったのでnginxとMySQLなWebアプリケーションをdocker-composeで構築してみる。 PHPの環境構築 PHPの実行環境をnginxで構築する場合、PHP-FPMを使いやり取りを行うら…

ライブ動画配信システムの構成図書いてみた

全部GCPで、 ストリーミングサーバはWowza Streaming Engine アプリケーションサーバはElixir/Phoenix とりあえずザックリ全体像だけ 誰かの役に立てればいいなと

Cloud Storage FUSEを使ってGCSをGCEにマウントする

GCP

Cloud Storage FUSE とは インストール マウントする GCE起動時にgcsfuseを実行する Cloud Storage FUSE とは GCSを、Linux または OS X システム上でファイル システムとしてマウントするためのGoogle謹製OSS。 Cloud Storage FUSE | Cloud Storage | Googl…

GCE で Wowza Streaming Server をつくる② GPUアクセラレーション編

NVIDIA Driver をダウンロードする GCEでNVIDIA Driver を使うためのセットアップ NVIDIA Driver をGCEにアップロードしインストールする 動作確認 前回の続き。 この記事ではGPUをGCEで使えるようにする設定を行う。 NVIDIA Driver をダウンロードする Nvid…

GCE で Wowza Streaming Server をつくる① GCE起動編

WSEのOSイメージを作成する ファイアーウォールのルールを作成する GCE作成 Wowza Streaming Engine(WSE)のライセンス等は既に取得済みとして進める。 この記事では、WSEのOSイメージを作成し、GCEのイメージとして登録し、 ファイアーウォールのルールを設…

GCEでRedisのレプリケーション組んでみた

Redisにおけるレプリケーションとは master/slave 各設定ファイル Dockerfile Cloud Build でビルドし、Container Registryにプッシュする GCEのターミナルからdocker run 動作確認 GCE(Container-Optimized OS)を2台使って、Redisのレプリケーションを組ん…

Golangでgrpc-gateway使ってみた

grpc-gateway とは 登場人物 gateway/main.go echo/main.go auth/main.go .protoから.bp.goと.bp.gw.goを生成する リバースプロキシサーバ実装 echo/main.go サーバ実装 auth/main.go サーバ実装 動作確認 前回の記事でgRPCを使ったので、今回はgrpc-gateway…

GolangでgRPC使ってみた

gRPCとは セットアップ .protoファイルを実装する .protoファイルから.goファイルを生成する サーバーサイドプログラミング クライアントサイドプログラミング ほとんど公式のQuickStartのまんまだけど、一応備忘録 gRPCとは gRPC は、Protocol Buffers を使…

Golangでマージソートの問題を解いてみた

マージソートの問題を解いてみた 問題 AOJからのフィードバック 前回同様、AOJの問題を解いてみます。 yuki-toida.hatenablog.com マージソートの問題を解いてみた 問題 https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/5/ALDS1_5_B 自分が書いた…

Golangで挿入ソートの問題を解いてみた

挿入ソートの問題を解いてみた 問題 AOJからのフィードバック 挿入ソートの計算量を考える 前回同様、AOJの問題を解いてみます。 yuki-toida.hatenablog.com 挿入ソートの問題を解いてみた 問題 https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/1/…

Golangで文字列変換の問題を解く

文字列変換の問題をやってみた 問題 AOJからのフィードバック 前回同様、AOJの問題を解いてみます。 yuki-toida.hatenablog.com 文字列変換の問題をやってみた 問題 https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/9/ITP1_9_D 自分が書いたコード…

Golangでプロコンの問題を解く 行列編

行列の問題をやってみた 問題 AOJからのフィードバック 前回同様、AOJの問題を解いてみます。 yuki-toida.hatenablog.com 行列の問題をやってみた 問題 https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/7/ITP1_7_D 自分が書いたコードはこちら pack…

Golangでアルゴリズムを学ぶ

AOJ(Aizu Online Judge)とは 組み合わせの問題をやってみた 問題 Input Output AOJからのフィードバック Aizu Online Judge を使って、プログラミングコンテストの過去問やアルゴリズムの問題をGolangで解いてみようと思います。 今までプロコンに出場したこ…

Docker の multi-stage builds 試してみた

multi-stage buildsとは Golangで試す まとめ multi-stage buildsとは まずはドキュメントから。 Use multi-stage builds | Docker Documentation multi-stage buildsとは、アプリケーションのビルド環境と実行環境を分けることが出来る機能 っぽいです。 こ…

GolangでMP4を連結するWebアプリ作ってみた

アプリケーション概要 サーバーサイドの処理 Golang良き良き Golangを書いてみたかったので、仕事上必要そうなmp4を連結するアプリを実装してみました。 ※ 勉強がてら作ったものなので、グローバルにホストしたコンテナは削除してしまいました。 アプリケー…

ElixirライブラリをHexに公開してみた⑥ Chatwork編

ドキュメント ソースコード 公開 Elixirのライブラリ公開シリーズ第6弾 ドキュメント developer.chatwork.com 必要な部分だけ実装。 何も問題なし。 ソースコード GitHubのソースコードはこちら github.com 公開 #!/bin/sh ENV=dev # get dependencies MIX_E…

ElixirライブラリをHexに公開してみた⑤ LINE Login編

ドキュメント ソースコード 公開 Elixirのライブラリ公開シリーズ第5弾 ドキュメント LINEログイン 特に問題なくさくっと実装。 ソースコード GitHubのソースコードはこちら https://github.com/yuki-toida/line 公開 #!/bin/sh ENV=dev # get dependencies …

ElixirライブラリをHexに公開してみた④ Instagram Login編

ドキュメント ソースコード 公開 Elixirのライブラリ公開シリーズ第4弾 ドキュメント Instagram Developer Documentation 今後大幅にAPIに変更が入る模様。 実装するタイミングミスったかもしれない。 ソースコード GitHubのソースコードはこちら github.com…

ElixirライブラリをHexに公開してみた③ LINE Pay編

LINE Payとは ドキュメント ソースコード 公開 Elixirのライブラリ公開シリーズ第3弾 LINE Payとは line.me LINEでお金のやりとりをするスマホのおサイフサービスとのこと。 ドキュメント 技術サポート : LINE Pay Merchant はっきり言ってしまうのは憚れる…

ElixirライブラリをHexに公開してみた② Paidy編

Paidyとは ドキュメント ソースコード 公開 Elixirのライブラリ公開シリーズ第2弾 Paidyとは paidy.com 事前登録不要・クレジットカード不要・早い・安心・支払いが便利なカンタン決済サービスです。 ドキュメント paidy.com JavaScriptのドキュメントで一部…

ElixirライブラリをHexに公開してみた① PAY.JP編

Hex PAY.JPとは ドキュメント ソースコード 公開 Elixirのライブラリ公開シリーズ第1弾 Hex Hex は Elixir, Erlang 向けのパッケージ管理ツールです。 ruby で言うところの rubygems、node.js で言うところの npm です。 Hexの使い方は省きます。 PAY.JPとは…

GCEとCloudSQLとDockerでmetabase

metabaseってなんぞ? GCE(Container-Optimized OS)作成 ユーザー定義bridgeネットワーク作成 CloudSQLへのプロキシコンテナ作成 metabase コンテナ作成 PINGで疎通確認 おまけ metabaseってなんぞ? データ可視化OSSです OSSのデータ可視化ツール「Metaba…

GKE で Let's Encrypt (ワイルドカード編)

まえがき certbot インストール certbot 実行 DNSにTXTレコード追加 tls用の Secret 作成 IngressでSecretを参照 まとめ まえがき cert-manager は使わないです。 理由は、kube-lego で時間を無駄にしてしまったから。 これから kubernetes がどう変わってい…

Container-Optimized OS で Redisをホストする

GCE(Container-Optimized OS)作成 Redis コンテナ起動 GCE の startup script 設定 GCE(Container-Optimized OS)作成 インスタンスの作成と設定 | Container-Optimized OS | Google Cloud コンソールのブートディスクからContainer-Optimized OSを選択す…

GKE LBで、Ingressを使ってTLS/SSL対応する

追記 kube-legoのセットアップ kube-legoのリソースを作成する Ingressリソースを作成する 追記 kube-legoがオワコンになったのでこの記事もオワコンになりました GitHub - jetstack/kube-lego: Automatically request certificates for Kubernetes Ingress …

GCEインスタンスの自動起動停止をスケジューリングする

GCP

適切なサービスアカウントを作成する ターミナルサーバ(GCE)作成 gcloudでGCEインスタンスを起動停止するスクリプト cron で定時にスクリプトが実行されるようにする Cloud SQL の起動停止も追加する 適切なサービスアカウントを作成する インスタンスのサ…

GCEのDocker-Redisサーバに起動時実行スクリプトを設定する

GCEにstartup-scriptを設定する yuki-toida.hatenablog.com 前回の記事でredisコンテナは作成されている前提ですすめる 今回はインスタンス起動時に停止しているredisコンテナを起動する GCEにstartup-scriptを設定する 新しいインスタンスに設定する場合はc…