- 1. Go SQL チートシート
- 2. GoのEchoの環境を構築してみる(Macのローカルに直接構築)
- 3. HomebrewでMacのローカルにGoを入れる
- 4. sqlc記事まとめ
- 5. Go言語でWake On Lanパケットを送信する
- 6. GO プログラミングノート
- 7. Golandでファイルとそのtestファイルをまとめる設定
- 8. Go言語でNetFlowを受信する方法
- 9. grpc-gatewayを使用したRESTful API/gRPC APIを同時に提供
- 10. 簡単なAPIを作ってみたまとめ
- 11. GoでHTTPサーバーをゼロから構築する方法
- 12. 表面的にサクッと理解するGo言語(他言語を知っている人向け)
- 13. LayerX初開催!ソフトウェアエンジニアサマーインターンが楽し過ぎた!!!
- 14. Go言語でsyslogを受信する方法
- 15. GoでgRPCのクライアントストリーミングをする
- 16. GOでアプリ作りてぇな[不定期更新]
- 17. Go言語備忘録
- 18. 勤怠管理アプリを作る 技術選定編
- 19. Docker+PostgreSQL+Go+Airで実現する快適サーバーサイド開発環境構築のすゝめ
- 20. Go言語のSNMPパッケージgosnmpでsnmpwalkを作る方法
Go SQL チートシート
# Go SQL チートシート
Goの標準ライブラリ「`database/sql`」を使ったSQLの基本操作をまとめたチートシートです。簡単な説明とともにコードサンプルを紹介します。
## 1. インポート & ドライバ設定
“`go
import (
“database/sql”
_ “github.com/go-sql-driver/mysql” // 使用するデータベースドライバ(MySQLの場合)をインポート
// _ “github.com/lib/pq” // PostgreSQLの場合はこのように別のドライバをインポート
)
“`
– `database/sql`: Go標準のSQLデータベースインターフェース。
– `_` は、ドライバパッケージを明示的に使用しないが、初期化は行う必要があるために使う。## 2. データベースに接続
“`go
db, err := sql.Open(“mysql”, “user:password@tcp(127.0.0.1:3306)/dbname”)
if err != nil {
GoのEchoの環境を構築してみる(Macのローカルに直接構築)
## 概要
Macのローカルに直接GoのEchoの環境を構築する方法をまとめる。
## 前提
下記の内容が完了していること。
https://qiita.com/miriwo/items/2cdcadb0c81fa34c0c27
## 内容
1. 任意のディレクトリにtest-local-echo-appというディレクトリを作成、作成したディレクトリにターミナルで移動
1. 下記を実行してGoのモジュールを初期化(`go: creating new go.mod: module test-local-echo-app`と返れば正常っぽい)“`terminal
go mod init test-local-echo-app
“`1. 下記を実行してEchoのインストールを実施
“`terminal
go get -u github.com/labstack/echo/v4
“`1. test-local-echo-appのディレクトリルートにmain.goのファイルを作成し、下記のように記載
“
HomebrewでMacのローカルにGoを入れる
## 概要
HomeBrewを使ってMacのローカルにGoを入れる方法を簡単にまとめる。
## 方法
1. `$ brew -v`を実行
1. `$ brew install go`を実行してGoをインストール
1. `$ go version`を実行してバージョンを確認
sqlc記事まとめ
最近書いた[sqlc](https://github.com/sqlc-dev/sqlc)関連の記事をまとめておきます。これくらい知っていればストレスなく使えるんじゃないかなぁと思います。
1. [Go のちょっと変わったORM sqlc の紹介](https://qiita.com/ktat/items/2ed13afcd29f49aee6a1) … sqlcの基本的な使い方
1. [sqlcで動的なWHEREを作る](https://qiita.com/ktat/items/ddf0e5e510279503feee) … sqlc は動的にSQLを組み立てることは出来ないので、その対策
1. [Go の ORM sqlcでBulk Insertを行う(MySQL)](https://qiita.com/ktat/items/94b6e84f07ffefa80b84) … ↑と似た話で、Bulk Insertも動的なので、その対策
1. [sqlcでType Overrides の活用とgo-optionalの話](https://qiita.com/ktat/item
Go言語でWake On Lanパケットを送信する
# はじめに
ネットワークにマジックパッケットを送信してPCの電源をONにする技術Wake On Lan
https://qiita.com/gam0022/items/4c2a3fdc29ac4977b51c
のマジックパケットをGo言語から送信する話です。
# Wake on LANパケットを送信するプログラム
“`go
package mainimport (
“log”
“net”
)func main() {
err := SendWakeOnLanPacket(“78:84:3c:2a:ac:08”)
if err != nil {
log.Fatalln(err)
}}
// SendWakeOnLanPacket : send wake on lan magic packet to mac address
func SendWakeOnLanPacket(mac string) error {
ra, err := net.ResolveUDPAddr(“udp4”, “255.255.255.255:9”)
if err
GO プログラミングノート
## やったこと
①https://go.dev/tour/welcome/1
web上で実行できるのでまずは環境構築をせずにgoの感覚を掴みたい人はやってみるといいと思います。②https://go.dev/doc/tutorial/
公式チュートリアルです。以下の写真の3つのチュートリアルを行いました。
![](https://storage.googleapis.com/zenn-user-upload/be4793aa18e5-20240907.png)
3つ目のチュートリアルをすることで簡単な感覚がつかめたと思います。ここからは実務や実際の個人開発などで使い方を学んでいこうと思います。③Chat gptを使ってapiを作成した。またnext.jsと連携してボタンを押したら情報を取得するようにした。
https://zenn.dev/articles/4de93a0fe6c22f/edit
④公式チュートリアルの4つ目をやった。
postgresqlと接続してクエリを取得したり、データの追加などを行うことができる関数を作成した。⑤公式チュートリアルの5つ目をやっ
Golandでファイルとそのtestファイルをまとめる設定
インターン先のメンターさんに、Golandで下の画像のようにgoのファイルとそのテストファイルをまとめる方法を教えていただいたので、そちらを共有したいと思います。
![スクリーンショット 2024-09-27 14.58.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3766230/f2977635-999d-ae91-3152-0f8d0ed0641e.png)
# Golandでの設定
左の方にある下の画像に写っている3点リーダを探します。
![スクリーンショット 2024-09-27 14.59.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3766230/1e77b9bb-3d8e-a1f3-046a-963cd304a6d5.png)そうすると下のような欄が出てくるので、`File Nesting`を選択します。
![スクリーンショット 2024-09-27 15.00.49.png](h
Go言語でNetFlowを受信する方法
# はじめに
Go言語でNetFlowのパケットを受信して処理するためのパッケージ
https://github.com/tehmaze/netflow
の使い方を説明します。
# サンプルプログラム
GiHUBのリポジトリにcmd/nf-dumpというサンプルプログラムがあります。
そのままです。“`go
/*
Command nf-dump decodes NetFlow packets from UDP datagrams.Usage:
nf-dump [flags]
Flags:
-addr string Listen address (default “:2055”)
*/
package mainimport (
“bytes”
“flag”
“log”
“net”“github.com/tehmaze/netflow”
“github.com/tehmaze/netflow/ipfix”
“github.com/tehmaze/netflow/netflow1”
“github.com/tehmaze/netf
grpc-gatewayを使用したRESTful API/gRPC APIを同時に提供
# RESTful API/gRPC API提供
gRPC-GatewayはgRPCで提供されているAPIをRESTful APIに変換して、提供するためのコード生成ができます。
なので、HTTP/2をサポートしていない環境からは、RESTful API経由で、リクエストを受け付けるといった使い方ができます。*.protoファイルで一括管理できて、サーバーの管理がとても楽になります。
備忘を込めて。
## 環境
“`
% go version
go version go1.22.5 darwin/arm64
“`“`
% protoc –version
libprotoc 3.20.3
“`### 実行ファイルをインストール
“`
go install \
github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest \
github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@lat
簡単なAPIを作ってみたまとめ
# 簡単なAPIを作ってみた
APIについて色々読んだりしてみたものの、設計ルールをがっつり盛り込んでAPIを設計するほどのアイデアが出てこなかったのでまずはAPIを作る事に慣れようの回とした。
今回はローカルホストだけどこんな感じに返ってくるAPIを作ってみた。
# 参考リンク
今回はこちらをメインに参考
https://qiita.com/entaku0818/items/c29add790718c215381e
https://chicog.me/posts/m30-7wf2g6
Go公式で参考にしたページ
https://pkg.go.dev/net/http
APIの設計ルール諸々紹介されている記事
https://qiita.com/kazuki_tachikawa/items/7dab01
GoでHTTPサーバーをゼロから構築する方法
## はじめに
最近、Go言語のシンプルさと高いパフォーマンスに興味を持ったため、
試しにHTTPサーバーを構築してみました。## 1.Goのインストール
Go言語は、公式サイトから各OSに合わせたインストーラーを使用して簡単にインストールできます。https://go.dev/dl/
私はMacを使用しているので、Macのインストーラーを使用しました。
このコマンドでバージョン情報が表示されれば準備完了です。“`shell
% go version
go version go1.23.1 darwin/amd64
“`## 2. Goプロジェクトの作成
Goプロジェクトの依存関係管理には、Go Modulesを使用するのが一般的です。
ここでは、Goプロジェクトのディレクトリを作成し、初期化する手順を説明します。
まず、新しいGoプロジェクト用のディレクトリを作成します。“`shell
% mkdir go-http-server
% cd go-http-server
“`次に下のコマンドを実行してプロジェクトをGoモジュール化します。
`
表面的にサクッと理解するGo言語(他言語を知っている人向け)
※ この辺の知識が特別な説明なく登場します
* 構造体
* ポインタ
* 抽象データ型(interface)
* ジェネリクスetc.
# ざっくりとした概要
* 静的型付け言語
* クロスコンパイルが可能
* C と Java を足して2で割った感じ(個人的主観)
* プリプロセッサはない
* コンパイラはGo言語の公式コンパイラとGCC版がある(llgo というLLVMベースのものもあるらしい)
* 名前的型付け(≠構造的型付け)
* キャメルケースを使った命名
* 各命名における頭文字の大文字/小文字でスコープの制御を行う
* インラインアセンブリは書けないが、Goアセンブリというちょっと特殊なアセンブリを使った実装も可能
* 構造体や配列などのオブジェクトは基本的にミュータブル
* 関数型スタイルのコードはちょっと書きづらい(最近は変わりつつもある)# Hello World
“`main.go
package mainimport “fmt”
func main() {
fmt.Println(“Hello, World!”)
}
“`# 実行方法
LayerX初開催!ソフトウェアエンジニアサマーインターンが楽し過ぎた!!!
## はじめに
9月2日から9月13日まで、LayerXさんの2週間のサマーインターンに参加しました。この記事では、インターンの内容や学んだことについて紹介します。バクラクサマーインターンが本当に実りある楽しい内容だったことを全力でお伝えしていきます:sob::star:。
インターン期間は前述の通り、9月2日から9月13日の2週間でした。全日オフィス開催の予定でしたが、台風 ⛈️ の影響で初日と2日目は急遽オンライン開催となり、3日目以降からオフィスでの開催となりました。
オフライン初日はとても緊張しましたが、伝言ゲームなどのアイスブレイクを通じて、チームメンバーとすぐに打ち解けることができました。その後の日程も、チームで食事に行ったり、開発中にわからないことはすぐに質問できたりと、コミュニケーションが取りやすく、とても充実した時間を過ごすことができました。
## インターンの内容
### 前半:講義パート
インターン最初の3日間は、技術に関する講義がメインでした。LayerXで実際に使用されていて、インターンでも使用する技術を学びました。インターン生は事前に「must(
Go言語でsyslogを受信する方法
# はじめに
Go言語でsyslogを受信するためのパッケージgo-syslog
https://github.com/mcuadros/go-syslog
の使い方を説明します。
# syslogを受信するプログラムの作り方
## インストール
“`terminal
$go get gopkg.in/mcuadros/go-syslog.v2
“`## 受信プログラム
“`go
package main
import (
“fmt”
“log”“gopkg.in/mcuadros/go-syslog.v2”
)func main() {
channel := make(syslog.LogPartsChannel)
handler := syslog.NewChannelHandler(channel)server := syslog.NewServer()
server.SetFormat(syslog.Automatic)
server.SetHandler(handler)
err := server.ListenU
GoでgRPCのクライアントストリーミングをする
## はじめに
gRPCでクライアントストリーミングするサンプルです.サンプルコード内でところどころモジュール名`github.com/Tsuyopon-1067/grpc-client-streaming-test`が登場しますがよしなに読み替えてください.
このサンプルでは以下のような通信をします.
[このサンプル
GOでアプリ作りてぇな[不定期更新]
## という事でアプリつくります。
### 以下備忘録
wails使う。Reactと分けてAPI設計。
Go言語備忘録
# Goの勉強ver.0
昔プロゲートで好きになったGOを本格的に勉強するための備忘録
– 変数の代入
“`golang
func main(){
a:=”主要な記事:”
s:=”Qiita”
q:=”Zenn”
b:=”と”
z:=a+s+b+z
fmt.Println(z)
}
“`
– コンテキストとcli
“`golang
package mainimport (
“fmt”
“os”
“strconv”“github.com/urfave/cli”
)func cliinit() {
app := cli.NewApp()app.Action = func(content *cli.Context) error {
var naming [100]string
for i := 0; i < 100; i++ { var strc string = strconv.Itoa(i) naming[i] = "人生" + strc app.Name = nami
勤怠管理アプリを作る 技術選定編
はじめまして、Yoichiroと申します。
日々新しい技術が生み出されていく中で、小規模なアプリケーションを開発する際にはどんな技術を選定するべきか、アーキテクチャはどうするのが良いか、ホスティングは?DBは?いろんな悩みがあると思います。今日は自分が選定した技術について自分なりの視点を持ってまとめようと思います。
:::note
この記事で書くこと
**技術選定の理由**
**選定した技術を類似技術と比較したメリット**
::::::note warn
この記事で書かないこと
**環境構築手順**
**具体的な開発手法**
:::それでは本題に入っていきましょう!!
## 前提 なぜ勤怠管理アプリを作るのか
技術選定には要件を満たすためであるという選定理由が必要です。なので一応どんなアプリを開発したかを記載します。
知人が経営する飲食店で、勤怠管理をタイムカードとExcelを使用しており、タイムカードからの転記を手作業でしていたり間違えてExcelのシートを消してしまったりなど苦労しているところを見かけ、力になれればと思い立ったためです。
– 要件としては2店舗が
Docker+PostgreSQL+Go+Airで実現する快適サーバーサイド開発環境構築のすゝめ
# はじめに
先日、研究室の後輩たちと[技育CAMPハッカソン](https://talent.supporterz.jp/events/6f769c37-5709-4ddc-804e-4c4ff38d2112/)に参加してきました。
ハッカソンで何を開発したか等は、後輩が記事にまとめてくれたので、良ければ以下の記事をご覧ください。https://qiita.com/aridome222/items/daf4465faffa608cb202
この記事では、Go言語の経験者がほとんどいない中、バックエンドの開発言語にGoを採用した今回のハッカソンで、入門Gopherのためにも快適な開発ができるよう環境構築をしたので、その紹介をさせていただきます。
紹介するにあたって、Goでのサーバーサイド開発に使えるテンプレートリポジトリも作成しました。Goを使ってみたいけど環境構築はめんどくさい方や、ハッカソン等でパッと使えるGoのテンプレートリポジトリを探している方は、使ってみてください。
# リポジトリの説明
GO + PostgreSQL での開発を、Docker と Air によ
Go言語のSNMPパッケージgosnmpでsnmpwalkを作る方法
# はじめに
Go言語のSNMPパッケージgosnmpを紹介するシリーズの6回目です。
gosnmpパッケージのサンプルプログラムは、NET-SNMPのsnmpgetコマンドのような動作でした。今回はsnmpwalkコマンドの動作の作り方です。
https://qiita.com/twsnmp/items/2986b696cced09820291
の記事で紹介したOIDと名前の変換も使っています。
# snmpwalkコマンドについて
snmpwalkは、NET-SNMPのコマンドです。グループ単位でMIBを取得できます。SNMPエージェントが対応しているMIBを全て取得する場合にも利用します。
“`terminal
$snmpwalk -v 2c -c public 192.168.1.210 system
SNMPv2-MIB::sysDescr.0 = STRING: Linux minipc 4.19.0-26-amd64 1 SMP Debian 4.19.304-1 (2024-01-09) x86_64
SNMPv2-MIB::sysObjectID.0