タグ

GoLangとqiitaに関するclavierのブックマーク (11)

  • Go言語の例外処理がないってのは結局どういうこと? - Qiita

    はじめに はじめまして。インターンをしているイナです。 今回は初心者がGo言語の例外処理がないって当なの?という部分について概念を中心に調べたものをまとめました。 Q. 例外処理とは まずは兎にも角にも、例外処理とはなんぞやってところからです。 いくつかのサイトで例外処理の定義について調べてみましたが、サイトによって言ってることはバラバラでした。 例外とエラーは一緒です or 違います!例外は想定外 or 想定内&想定外のエラーのことです!など人によって言ってることが違いました。 最初から壁が高すぎ...?と戦々恐々としていましたが、IT用語辞典 e-Wordで気になる部分がありました。 例外は「エラー」(error)と同種の概念で、普遍的に成り立つ両者の明確な違いは無く、同義として扱われる場合が多い。ただし、プログラミング言語や処理系によっては両者に異なる意味合いが与えられている場合も

    Go言語の例外処理がないってのは結局どういうこと? - Qiita
  • 【ハンズオン】Next.js × Go × AWSでJWT認証付きGraphQLアプリとCI/CDを構築してみよう - Qiita

    ■ご案内■ 内容は合計4つの記事で構成されています。 【環境構築編】  👈いまここです 【Next.js編】 【Go編】 【AWS編】 これからも頑張ってハンズオン系の記事を書いていきたいと思っているので、いいねっと思って頂けたらLGTM押していただけると励みになります! 作成に至った背景 普段エンジニアの皆さんは、業務用に新しいライブラリやツールを調べたり、趣味で新しい言語やフレームワークを使ってサンプルアプリを作ってみる方は多いと思います。 エンジニアになって歴は浅いものの、私も例に違わず、業務前後や休日を使って趣味の延長でコードを書いていました。 ある日、ふと自分のGitHubリポジトリを見返してみると、それなりに多くの"インプットの跡"に気づきました。 "使えそうなプロジェクトを合体"してみれば、それなりのボリュームにもなるし、何よりGitHubの藻屑となりえたこの子達にも少し

    【ハンズオン】Next.js × Go × AWSでJWT認証付きGraphQLアプリとCI/CDを構築してみよう - Qiita
  • DDDを意識しながらレイヤードアーキテクチャとGoでAPIサーバーを構築する - Qiita

    今の現場で初めてDDDに触れたので、よく採用されるアーキテクチャとしてレイヤードアーキテクチャを自分で0から実装してみました。 言語もよくセットで採用されているGoを採用してみました。 この記事の目的 0から実装して体系的にDDDとレイヤードアーキテクチャを学ぶ DDDに触れたことがない方にもわかりやすく説明する そもそもDDD(ドメイン駆動設計)とは 要約(引用)すると「ドメインの知識に焦点を当てた設計手法」です。 たとえば電子カルテのシステムを例に取ってみます。 電子カルテには患者情報や手術の予定、入院ベッドの空き具合などの概念があると考えられます。 医療関係者ではないソフトウェアエンジニアは実際につかうユーザー(医療関係者)が直面している問題やドメイン(領域)の概念、事象を理解することが必要です。 それらを理解し、ソフトウェアに落とし込む。落とし込み続けることを実践する開発手法です

    DDDを意識しながらレイヤードアーキテクチャとGoでAPIサーバーを構築する - Qiita
  • Go言語の crypto/xxx は New して Sum するより直接 Sum する方が速い - Qiita

    Help us understand the problem. What is going on with this article?

    Go言語の crypto/xxx は New して Sum するより直接 Sum する方が速い - Qiita
  • io.Readerのファイルタイプを判定する - Qiita

    概要 Goでファイルを読み込んでいる時に、そのファイルのタイプを判別したいことがたまにあります。例えばGzipかどうか分からないけど、もしGzipならgzip.NewReader噛ませたい、みたいな場合です。雑にgzip.NewReader噛ませてerr返すかどうかで判定とかやってみたんですが、普通に10バイト読み進められちゃうのでerr返ったあとに別のファイルタイプとして処理しようとするとinvalidなヘッダーになって死にます。実は読み進められたバイトを戻す方法あるよ、という場合は教えて下さい。 そもそもGzip以外の判定をしたいときもあるので、NewReaderの方針も必ず使えるわけではありません。もしファイルがos.Fileとかbufio.Readerの形であればReadしてからSeekしたりPeekしたり出来るのですが、io.Readerの場合どうやるのか分からなかったので調べま

    io.Readerのファイルタイプを判定する - Qiita
  • Go言語で扱えるデータフレーム厳選4つ - Qiita

    はじめに データサイエンティストでなかったとしても、数値データを使って様々な解析をする際には CSV ファイル等ファイルを読み込み、数値の配列としてメモリに保持して、それらをループ等で利用して解析を行っておられると思います。 その際、配列は1次元目に行、2次元目に列、を格納するのが一般的です。多くのケースではこの方法で事足りるのですが、解析を行ううちに「列としてデータの固まりを扱いたい」「ラベル付けされた列を扱いたい」と感じる事が出てくると思います。 これを簡単にしてくれるのが「データフレーム」です。 データフレーム4種 記事では Go 言語から扱えるデータフレームを4つご紹介します。 QFrame https://github.com/tobgu/qframe QFrame は、フィルタリング、集計、およびデータ操作をサポートするイミュータブルなデータフレームです。 QFrame での

    Go言語で扱えるデータフレーム厳選4つ - Qiita
  • GoでYAMLを扱うすべての人を幸せにするべく、ライブラリをスクラッチから書いた話 - Qiita

    この投稿は、 Go アドベントカレンダーの 6日目のものになります。 はじめに GoYAMLを扱う際にデファクトになっているのは、おそらく github.com/go-yaml/yaml でしょう。 実装はC言語で実装された libyamlGo に移植しつつ、 Go ならではの機能を足す作りになっているのですが、 cgo を使わずに pure Go で移植されており、開発者の気合を感じます。 枯れている libyaml を利用していることからも、 YAML の仕様を忠実に実装していることが期待できます。 ですが、このライブラリにはいくつか使いにくい点もあり、例えば以下のようなことはできませんでした 構造体を埋め込む場合に、埋め込む型をポインタで定義できない ( ※ ポインタなしは大丈夫 ) encoding/json とコンパチの インターフェース ( MarshalYAML()

    GoでYAMLを扱うすべての人を幸せにするべく、ライブラリをスクラッチから書いた話 - Qiita
  • Go 1.13時代のエラー実装者のお作法 - Qiita

    Goアドベントカレンダーその2の3日目のエントリーです。 Goではエラー処理の方法としてはプリミティブな方法しか提供しておらず、他の言語のユーザーからやいのやいの言われてきました。Go2でそれを改善するぞからプロポーザル募集でいろいろ意見を募っては二転三転みたいな感じで、Go 1.13ではだいぶおとなしい感じに機能拡張されました。基的な方向性としてはgithub.com/pkg/errorsから少し機能を取り込んだ感じです。 すでに、数多くのエントリーやらプレゼンテーションやらでGo 1.13の利用者視点でのerrorsの変更点については触れられてきましたので詳しくはそちらをご覧ください。サマリーとしては下請けのパッケージで出てきた詳細なエラーをラップして扱うための便利な機構がいろいろ追加された感じです。 これらでは主にアプリケーションコードの実装者というかライブラリの利用者向けの説明が

    Go 1.13時代のエラー実装者のお作法 - Qiita
  • Word2Vecで自由入力対応のチャットボットをつくる - Qiita

    この記事はZeals Advent Calendar 2019の1日目の記事です。 はじめまして。Zealsに来年度から入社予定の玉城です。 Zealsはチャットコマースと呼ばれる、チャットボットの技術を用いた事業を行っております。また私は現在大学で自然言語処理を使った研究をしています。 ボットには自然言語処理を導入していない会話があるのですが、そこに自然言語処理の技術を加えてみても面白いのではないかと考えたので、今回記事のテーマにすることにしました。 Word2Vecとは ものすごく簡単に言うと、単語をベクトル表現に置き換え、ニューラルネットワークを使って学習を行うことで、単語同士の類似度や、単語同士の足し算引き算が出来るようになる技術です。 (曖昧すぎてマサカリ飛んできそう) その類似度や足し算引き算の機能をチャットボットに組み込んでみよう!というのが今回のお話です。 作成するチャット

    Word2Vecで自由入力対応のチャットボットをつくる - Qiita
  • なぜGo言語の正規表現は遅いと言われるの? - Qiita

    はじめに Goの正規表現は遅いと言われていることが以前から疑問だったので調査してみました。 こちらの記事やこちらの記事を拝見する限り ① 現実的なユースケース(例えばURLのパースなど)ではGo言語の正規表現は使うべきではなく、stringsパッケージの標準の関数を利用した方がパフォーマンスとしては良い。 ② Go言語で正規表現を利用するために必要な"正規表現オブジェクト"を並行にアクセスするにはパフォーマンスが問題になるので注意が必要。 とあります。その理由は、それぞれ以下に集約できるようです。 ① Go言語標準の正規表現ライブラリは、正規表現と検査文字列の長さに対して常に$O(n^2)$のオーダーで計算量が増加する安定したアルゴリズムを採用している。 ② "正規表現オブジェクト"を用いたマッチング処理には排他制御が行われている。 調べてみる Go言語のpkg/regexpの公式ドキュメ

    なぜGo言語の正規表現は遅いと言われるの? - Qiita
  • Goで__FILE__、__DIR__のようなものをこさえる - Qiita

    カレントファイルのファイル名やディレクトリ名を知りたい runtime.Callerを利用し、stackの返り値を利用すれば解決できる、というのを グーグル先生で検索して知った。 元ソース https://gist.github.com/abrookins/2732551#file-gistfile1-go code snippet import ( "runtime" "path" ) // __FILE__ func GetCurrentFile() string { _, filename, _, _ := runtime.Caller(1) return filename } // __DIR__ func GetCurrentDir() string { _, filename, _, _ := runtime.Caller(1) return path.Dir(filename

    Goで__FILE__、__DIR__のようなものをこさえる - Qiita
  • 1