Goの実行ファイルにZIPでリソースを埋め込む
はじめに ZIPを用いた実行ファイルへのリソースの埋め込み方法があることを紹介し、実際にGoの archive/zip と zip コマンドと cat コマンド(と確認のために unzip コマンド)を用いたリソース埋め込みの例を解説する。 Goのリソース埋め込み...
View Articleその昔作った解凍コマンド Kaito と、その実装のご紹介
この記事は、Go4 Advent Calendar 2018 の2日目です。 昨日は @ichiban@github さんによる圧縮(ファイルを実行ファイルに埋め込む)ネタでしたが、今日は解凍(展開)のネタです。 この場を借りて、以前つくった自作のコマンドラインツール kaito を紹介したいと思います。 Kaito とは kaito は gzip/bzip2/xz...
View Articleストリームの流れを図でコメントに残す
この記事は Go4 Advent Calendar 2018 の3日目です。 2日目は、@Maki-Daisuke さんの 「その昔作った解凍コマンド Kaito と、その実装のご紹介」 でした。 小ネタです。 io.Reader/Writerの接続図をコメントに残す...
View Articleトリビア: Goの構造体�int型のフィールド数4つまでなら値渡しとポインタ渡しに速度差はない(Go1.11にて確認)
この記事は Go4 Advent Calendar 2018 の4日目です。 3日目は、@andouf さんの 「ストリームの流れを図でコメントに残す」 でした。 はじめに ちょっと下のコードを見てみてください。 type SameStruct struct { Some int Some02 int } func ValRetFunc() (SameStruct, error) { return...
View Article技術選択編 - #golang で CLI 作るときにいつもつかうやつ
続編 ボイラプレート編 - #golang で CLI 作るときにいつもつかうやつ - Qiita grapi・gex・ery など,今年に CLI を作りまくって見えてきたベストプラクティス集(技術選択編). 基本便利パッケージ Cobra - spf13/cobra https://github.com/spf13/cobra フラグ処理やサブコマンド・ヘルプメッセージ・補完など,CLI...
View ArticleElasticsearchのオペレーションを楽にするツールを作成した話
Elasticsearch(以降ES)のインデックス作成や、エイリアスの追加・削除、マッピングの更新などのオペレーションをcurlでやるのが辛くなったので、es-cliというツールを作りました。そのツールの紹介と、使ったライブラリを書こうと思います。 なぜ作ったか 突然ですが、ESでインデックスの作成やエイリアスの作成するの面倒じゃないですか? 例えばインデックスの作成 curl -XPUT...
View ArticlegolangとHDLで協調シミュレーションする
去年と全く同じ内容であれですが、今年はgolangで環境構築してみました。 概要 goからexportされたfunctionをverilogから実行 verilogのTaskをgoから実行 環境 Linux環境(CentOS) Modelsim Intel FPGA Starter Edision 10.5b verilog...
View ArticleGoでの素数判定と時間計測
はじめに Go初心者なので生温かい目で読んで頂ければと思います。 Goの練習として、素数判定のアルゴリズムを書き、時間計測する。 アルゴリズムは2通り。時間計測はtimeパッケージを使う。 1. 整数xに対して、2からx-1まで順に、割り切れるかどうか試して判定する。 2. 整数xに対して、偶数は先に判定し、3から√xまで順に2づつ増やしながら、割り切れるかどうか試して判定する。 環境 Go...
View Articlegraphql-goでブログAPIを作った話 #golang
Go4 Advent Calendar 2018 の記事です。 GolangでGraphQLを使用したブログのAPIを作ったので、その知見を晒そうと思います。 ※ソースの解説等は長くなってしまうのでしていません。気になるかたはGithubのぞいてください。不明点等はDMくだされば解説します。 ソースコード trrrrrys/blogapi: blog api 出来たもの 下記クエリを投げると {...
View ArticleGoで書くClean Architecture API
はじめに クリーンアーキテクチャの考え方を採用したコードをGoで書いてみました。 すでにいろんな方がソースを書かれておりますが、一例として見ていただければと思います。 ソース(メモとタグを新規登録、閲覧できるAPI) https://github.com/muroon/memo_sample クリーンアーキテクチャの構成図とソースの一覧 左側はクリーンアーキテクチャの構成図です。...
View Articlegolang で libvterm
空いていたので穴埋め libvterm とは libvterm は libtermkey の作者でおなじみの Paul Evans 氏によって作られた、VT220/xterm/ECMA-48 といった端末エミュレータの仕様を抽象化し疑似する為のライブラリです。このライブラリの仕様に従ってプログラミングするとプラットフォームや GUI/CUI...
View Articlehttp.RoundTripperでHTTPクライアントを拡張する
GoでHTTPリクエストを行いたい場合、一般的には net/http のhttp.Getやhttp.Postを使うことになると思います。もしくは少し複雑なリクエストする場合、http.NewRequestを使うかもしれません。 net/httpの公式ドキュメント...
View ArticleGoのSlice操作
はじめに この記事はGo4 Advent Calendar 2018 14日目です。 最近Goをさわりはじめて、AtCoderでGoを使って100問ほど解いてきました。問題を解く中で、使う機会があったSliceの扱いについてまとめました。急いで書いたのもあってやや内容が少なめですが、時間を見つけて随時更新していこうと思います。 append Sliceの末尾に要素を追加します。 s :=...
View ArticleGinでBindingが物珍しかったので他のフレームワークも調べてみた
こんにちは、hiroyukimです。 この記事はGo4 Advent Calendar 2018 16日目となります。 私はこれまでLL系を中心にWeb開発をよくしてきました。Web開発ではリクエストパラメータを取得しようとした場合。例えば、PHPを例に取るとこのようなリクエストオブジェクトからkeyを指定して取得するという形が一般的かと思います。...
View Article人生で何度目かのダブル配列TRIEを書いた
概要 人は人生に何度かTRIEを書くという.そんなわけで,何度目かのTRIEでsudachiのdarts-cloneをクローンしてみました.TRIEの記事は沢山あるので,ここではGoに移植してみて気づいた事をいくつか共有していきたいと思います. 今回の成果物: https://github.com/ikawaha/dartsclone darts-clone...
View Articlegoqueryでスクレイピングした際の実装メモ
この記事は、Go4 Advent Calendar 2018 の18日目です。 17日目は @ikawaka による以下記事でした。お疲れ様でした! 人生で何度目かのダブル配列TRIEを書いた はじめに(本記事の内容) 概要 本記事では、 自分がgoqueryを利用して初めてスクレイピングした際の 実装メモをコードベースで解説していきたいと思います。 もし、こんな記事が、...
View ArticleGoで独自エラー型を定義する
Goでのエラー判別という記事で、Goのエラーの判別方法にはだいたい3種類あるという話をしました。 どの関数から返されたかで判別 定義済みの変数と比較して判別 独自エラー型を定義してキャストして判別 今回の記事では3の独自エラー型を定義する際のノウハウについて扱います。 ※...
View ArticleWindows Management Instrumentation を簡単に得られるツール wmi2struct
WMI とは Windows PC やサーバから色々な情報を得る方法として Microsoft は WMI(Windows Management Instrumentation) を提供しています。 これらの情報は WMI クラスという構造で格納された形式で提供され、数多くのクラスが用意されています。...
View Articleio.Reader のプリプロセッサな io.Reader を作る
(アドベントカレンダー、穴が開いたようなので、埋めさせていただきます) (12/24晩、ベンチマーク結果などを追記しました) 任意の io.Reader を受け取って、それを加工した結果を、別の io.Reader として読み取れるようにしたい時、どうするのがベストな方法だろうか。 具体的には、当初「文字コード(ShiftJIS or UTF8)を UTF8...
View Articletext/templateをベースにした 2way SQL ライブラリ
TL;DR text/template の機能を使った 2way SQL のライブラリ pinzolo/sqlt: Simple SQL template for 2 way SQL. を作ったよ。 動機 クエリビルダのスタイルは様々あってどれがよいなどの議論は他に任せるとして、 個人的にはSQLはガンガン書きたい人です。...
View ArticleGoでテキストファイルを読み書きする時に使う標準パッケージ
先日Goでテキストファイルを読み書きする機会があり、その時に調べた自分用メモです。インターネット上には同様の内容の記事が数多く存在しておりますので、そちらも検索&参照してみてください。 私なりのざっくりイメージ バイト配列や文字列の単位で読み書きするなら「os」パッケージ バッファリングしながら読み書きするなら「bufio」パッケージ 一括で読み書きするなら「ioutil」パッケージ 共通の注意点...
View Article