Go1.13以後のエラーハンドリングについて語ろう / Let's talk about error handling after Go 1 13
はじめに この記事は,以下の過去にQiitaに投稿したインタフェースの実装パターンの記事に,typeやメソッド,インタフェースの基本的な説明を追加してわかりやすくしたものです. Go言語における埋め込みによるインタフェースの部分実装パターン structにinterfaceを埋め込んで,動的に入れ替えるパターン まずtypeとメソッド,基本的なインタフェースの実装方法についておさらいすることで,さまざまなインタフェースの実装パターンを扱う準備をしましょう. typeで型を宣言する まずはじめに,Go言語における型の宣言方法をおさらいします.Go言語をはじめたばかりの方の中に,typeの使い方を限定的にしか理解していない方をよく見かけます.ご存知のとおり,typeは型を宣言するために使うキーワードです.以下のように,構造体型やインタフェース型の宣言の際に,使用することが多いでしょう. //
この記事は Go (その2) Advent Calendar 2016 の20日目の記事です。 どーもpospomeです。(´・ω・`) GAE/GO の環境でサーバサイドエンジニアとして働いています。 twitter では 実装パターン, DDD, golang, GCP についてつぶやくことが多いです。 同じような分野に興味があればフォローしてもらえればと思います。 https://twitter.com/pospome (´・ω・`) GAE/Go + DDD について書こうと思ったのですが、 ちょっと時間がなかったので、 embedding について書こうと思います。(´・ω・`) 何か間違っている点があればコメントください。 twitter でメンション飛ばしてもらってもいいです。 (´・ω・`) embedding とは? embedding とは以下のように struct の
オリジナルのThe Go gopher(Gopherくん)は、Renée Frenchによってデザインされました。はじめに初級者向けです。 Go言語にはオブジェクト思考プログラミングにおける継承は存在しませんが、埋め込み(embedded)を利用して委譲させることはできます。継承がないという言葉が1人歩きしてしまい、無駄なコードを書かないために抑えておきたいポイントをまとめています。 埋め込みとは?今回はテストケースを書く際の埋め込みの活用方法をサンプルコードで説明します。 まず、下記のUserという構造体を定義します。 package usertype User struct { FirstName string LastName string Gender string Birthday string }func (u *User) Nickname() string { return
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 今度入社する会社では、JenkinsでなくCircleCIを使っているということなので、1から勉強した内容を初心者向けにまとめました。 また、最新バージョン2.1(2018/12時点)の新機能も本記事では触れています。 ※2019/8/8追記 Slack連携に関する記事も書きました。 SlackでCircleCIからカバレッジレポート通知を受け取る設定手順 ※2020/4/2追記 https://twitter.com/CircleCIJapan/status/1245253320551399424 CircleCIさんより、
ポートフォワーディングとは ポートフォワーディング: インターネットから特定のポート番号宛にパケットが届いたときに、あらかじめ 設定しておいたLAN側の機器にパケットを転送する機能です。 ※引用元:https://www.itbook.info/study/nat6.html ポートの紐付けというイメージ 仮想環境で開発をする場合、このポートフォワーディングが必須となると思いますが、今回はDockerを例に少し解説します。 ※今回はポートフォワーディングについてDockerをもとに話すため、Dockerについては解説しません。 Dockerイメージ 概要 スクリプト Go言語で作成 Dockerfile golangのベースイメージを使用 挙動 コンテナを実行したら「start server」と出力 HTTPリクエストに対し、リクエスト側に「Hello Docker!!」と出力、リクエスト
GoConでは毎回エラー処理について面白い知見が得られる.Go Conference 2014 autumn においては(実際のトークではないが)居酒屋にて@JxckさんがRob Pike氏から以下のようなテクニックを紹介してもらっていた. Errors are values - The Go Blog Golang Error Handling lesson by Rob Pike これはWrite(やRead)のエラー処理が複数続く場合にerrWriter を定義して複数のエラー処理を一箇所にまとめてコードをすっきりとさせるテクニックであった. そして今回の Go Conference 2016 spring のkeynoteにおいてもDave Cheney氏から(僕にとっては)新たなエラー処理テクニックが紹介された. Gocon Spring 2016 実際に使ってみて/コードを読ん
みなさんこんにちは ここ一年でdockerを使った開発を進めた結果、ついには「デプロイもコンテナイメージでやったらええやん!」みたいに思い、そうするとAWSでECSというサービスがあるじゃあないですかとなって、実際に環境構築を試みたわけです。 謳い文句には「一瞬でできる!」とか「容易に」とか書かれていますが、やっぱり実際にはなれるまで時間がかかるわけです。 web上に転がっている情報は、どういうわけかaws cliの情報ばかりなので、超初心者であり普通のコンソール使おうとしている私にとっては、まあ、解読が難しいわけです。 そうしていると、変なノウハウが溜まっていくわけで、せっかくなのでこっちの方に書きなぐってしまおうと考えたわけです。 というわけでほぼ自分用のECSのQ&Aを作りました。 ただのバッドノウハウになっている可能性もありますが。 概念編 AWSの日本語って、単純に訳したかのよう
AWSServiceRoleForECSとは ECSを作成すると、勝手に作られるIAMロール。Terraformでaws_ecs_clusterリソースを作ったときにも自動作成される。Service-Linked Rolesというヤツの一種らしい。 公式ドキュメントから、AWSServiceRoleForECSについての説明を引用する。 Amazon Elastic Container Service では、AWS Identity and Access Management (IAM) の「サービスにリンクされたロール」を使用します。 ほとんどの状況では、サービスにリンクされたロールを手動で作成する必要はありません。たとえば、新しいクラスターを作成する (たとえば、Amazon ECS の初回実行、クラスターの作成ウィザード、AWS CLI または SDK) か、AWS マネジメントコン
🎄 このエントリはAWS Fargate Advent Calendar 2017の8日目の記事です 🎄 従来型ECS(EC2/ECS)とFargateの違いについて、 .tfファイルの差分を見ることで理解を深めよう!! という試みです。 このエントリでは、以下のような流れで説明していきます。 step1. terraformでバーーンとインフラ一式(ECS含む)を立ち上げ step2. terraformでstep1の状態からバーーンとFargateに移行 step3. step1とstep2の.tfファイルのdiffを眺める!👀 🙊 この記事執筆時点での事情 まず、そもそもterraformはFargateをサポートしているのか? という大事な話がありますが、 12/8時点で、masterではサポートしているようです!!🎉 ECS Fargate Support by apr
うっかりgithubに受け付けてもらえないような大きなファイルをリポジトリに追加してしまった時の対策。普通に削除しても消えません。 まっとうなソースコードのリポジトリならそんなことは普通ないはずですが、うっかり100MBを超える大きさのファイルをリポジトリに追加してコミットまでしてしまったとします。 $ git add でかいファイル.tar.gz $ git commit -m 'でっかいファイル追加したった' $ git push remote: error: File でかいファイル.tar.gz is 123.00 MB; this exceeds GitHub's file size limit of 100 MB githubへ pushしようとした時、ファイルが大きすぎるということで拒否られます。あなたは嫌な予感がしつつも、問題のファイルを普通に git rmで削除して再度
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 関連記事 マイクロサービスを支えるインフラアーキテクチャ (AWS Dev Day 2019登壇資料) ECSデプロイツールを公開しました ECSにおけるログの取り扱いを別ページに移動させました 設計 基本方針 基盤を設計する上で次のキーワードを意識した。 Immutable infrastructure 一度構築したサーバは設定の変更を行わない Infrastructure as Code インフラの構成をコードで管理 (Terraformを採用) Serverless architecture 無駄にサーバを増やさない アプリケーシ
こんにちは、岩城です。既存のAWS環境をTerraformでコード化する機会がありました。その際、Terraform素人であったため、コード化する流れを掴むまでに少し時間が掛かりました。同じような方に向けて、備忘録として残しておきます。 はじめに こんにちは、岩城です。 既存のAWS環境をTerraformでコード化する機会がありました。その際、Terraform素人であったため、コード化する流れを掴むまでに少し時間が掛かりました。 同じような方に向けて、備忘録として残しておきます。 用語解説 Terraform Infrastructure as Codeを実現するためのツール コードからインフラの構築/変更/バージョン管理を行える HashiCorp社が開発、オープンソース版とエンタープライズ版がある AWS、Azure、GCPを始めとするメジャーなクラウドプロバイダをサポートしている
はじめに AWSでDocker環境を構築するとき、今までまず選択肢としてあったのがAWS Elastic BeanstalkやAmazon ECSでした。 ですが皆様ご存知の通り、2018年の7月にAWS Fargateが東京リージョンで利用できるようになりました! Docker環境の選択肢が増え嬉しい限りです。 ということで、少々出遅れてしまいましたがAWS Fargate + Terraform構成を本格的に業務で使ってみることにしました。 ※ ちなみに、AWS Fargateは独立したサービスではなくAmazon ECSの中に組み込まれており、launch typeで「Fargate」を指定することにより利用できるサービスとなります。 よくネット上で「AWS FargateとAmazon ECSの違い」みたいな記事を目にしていたので別サービスだと勘違いしてました… 1. 最強のTer
TypeScriptは型がついたJavaScriptです。プログラミングにおいて型があることの恩恵は大きく、近頃AltJSの代表格として人気を集めています。TypeScriptはもともと型のないJavaScriptで書かれるコードに型を付けることを使命としていることもあり、たまに変な型が追加されます。例えばTypeScript2.8で追加されたconditional typesはずいぶん注目を集めました。これによってTypeScriptの型システムの表現力が広がりましたが、一方でTypeScriptを書いている人の中には、よく分からない型が増えてついて行けない、一部の人たちが長くてよく分からない型定義を書いて喜んでいるだけと思っている方もいるのではないでしょうか。実際、健全にJavaScriptを書いていれば、自分でそのような変な型を書くことはあまり多くありません。 そこで、この記事ではT
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く