タグ

ブックマーク / qiita.com/yoshinori_hisakawa (7)

  • 【Go言語】modulesについて理解するために過去から調べてみた - Qiita

    はじめに go1.11から導入されたmodulesを使うにあたって、あまりよく分かっていなかったので ちょっと過去からmodulesに至るまでの問題や詳細な動きなどを調べてみました。 その時の備忘録を残しておきます。 理解するだけなので、情報が無い部分については自分で調べて、すでに調査済みの箇所は 多くの先人たちの記事を参考にさせていただきました。ありがとうございます。 ライブラリのインストール Go get go get https://github.com/...で$GOPATH/src配下にライブラリをダウンロードする事で、 importで指定してライブラリを使用する事が出来ます。 srcやpkg、binの詳細は以下を参照 プログラムの全体構成 bin/ mathapp pkg/ プラットフォーム名/ 例:darwin_amd64、linux_amd64 mymath.a githu

    【Go言語】modulesについて理解するために過去から調べてみた - Qiita
  • 【Golang Error handling】エラーの種類によって処理を分けるBESTな方法

    はじめに Golangでエラーの種類によって処理を変えたい際にどういった方法があるか調べてみました。 と言うのもGolangにはtry-catchがサポートされていません。 なのでGolangJavaのtry-catchの様な機能をどう実現できるか調べようとした事がこの記事を書いた発端です。 記事の全体概要についてです。 ・まず最初に、errorパッケージのよく使う4つの機能について説明します。 ・次に、エラーの種類によって処理を変えるために考えられる3つの方法を順に試していきます。 ・そしてエラーの種類によって処理を分けるBESTな方法の結論。 といった順序で進めていきます。 ※結論だけ知りたい人は最後の方法3をみてください。 errors packageのよく使う4つの機能 標準のエラーパッケージだと以下の機能がありません。 最初に起きたエラーの種類の判別 スタックトレースの情報を取

    【Golang Error handling】エラーの種類によって処理を分けるBESTな方法
  • Go言語で見るインタフェース分離による恩恵 - Qiita

    インタフェース分離の原則とは クライアントに、クライアントが利用しないメソッドへの依存を強制してはならない 以前投稿した以下の内容で問題なさそうなので、こちらを参照してください。 【ボブおじさんのClean Architectureまとめ】オブジェクト指向 具体的に分離することでどういった恩恵が得られるのかを見ていきます。 実装例として文章をファイルに保存する方法を以下の3つのパターンで見ていきます。 ・シンプルな方法 ・インタフェースを用いた方法 ・適切なインタフェースを用いた方法 方法1 シンプルな方法 第一引数に保存先のファイル、第二引数に文章を受け取るようにしています。 あとは内部で保存する処理を書けば良さそうです。 しかし保存先をファイルでなくクラウドストレージやDBに保存したいと要件が変わった場合どうしますか? 新しくクラウドストレージ用、DB用のSaveメソッドを増やして行く

    Go言語で見るインタフェース分離による恩恵 - Qiita
  • Go言語でpythonやscalaのようなDefault引数を実現する - Qiita

    はじめに Dave Cheney氏のFunctional options for frendly APISを読みました。 https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis この記事で学んだデザインパターンを活かして問題を解決してみたいと思います。 Go言語にはpythonscalaのようなデフォルト引数を指定することはできません。 ですが、構造体の初期化時に引数を省略可能にしたい場合ありませんか? この問題を解決するために最善な解決策までをプロセスを交えながら説明していきます。 解決したい問題 以下のようなfunctionをイメージしてください。 func NewServer(addr string, clientTimeout time.Duration, maxconns int, maxc

    Go言語でpythonやscalaのようなDefault引数を実現する - Qiita
  • Go言語で再考するオープンクローズドの原則 - Qiita

    オープンクローズドの原則とは? Software entities should be open for extension, but closed for modification. –Bertrand Meyer, Object-Oriented Software Construction オープンクローズドの原則とは 「ソフトウェアの構成要素は拡張に対して開いていて、修正に対して閉じていなければならない」 という原則です。 もう少し噛み砕いて言い換えると 「新しい機能を追加する時に、既存の成果物を変更せずに拡張できるようにし、 修正よってそれ以外の他の成果物に変更を与えてはいけない。」 という意味です。 イメージで捉える悪い例 以下の仕様追加を想定します。 「別のServerを追加し、Clientから使用する」 変更する箇所は使う側と使われる側の2点あります。 ・新しくServerを

    Go言語で再考するオープンクローズドの原則 - Qiita
  • 【デザインパターン】Go言語で再考するAbstract Factory - Qiita

    Abstract Factoryパターンを一言で! インスタンスの生成(New)を全てインスタンス生成工場に任せるパターン ソースコードは以下のリポジトリを参照してください。 https://github.com/yoshinorihisakawa/design-pattern/tree/master/abstract-factory Abstract Factoryパターンが使えるシチュエーション 使う側の修正を少なく、インスタンスを生成を切り替えたい 複数のオブジェクト群を間違いなく生成したい ※来Abstract Factoryパターンは後者の複数のオブジェクト群の生成を一つの工場に任せて生成させるパターンですが、工場をうまく切り替えて製品を生成する方法(strategyのような)の方が実用的かと思います。なのでこの記事ではそれを考慮したものになっております。 Abstract F

    【デザインパターン】Go言語で再考するAbstract Factory - Qiita
  • Dockerを使ってMySqlを立ち上げる - Qiita

    はじめに Dockerを使って開発環境用のmysqlを立てることにした。 インフラ系が苦手で少し苦労したので、構築から接続までの流れをメモに残しておく。 事前準備 docker for macのインストール (https://docs.docker.com/docker-for-mac/install/) my.cnfの設定(しなくても問題ないが、したほうがいい) 立ち上げ方 ・DockerHubからMariaDBイメージをダウンロード

    Dockerを使ってMySqlを立ち上げる - Qiita
  • 1