Skip to content

Instantly share code, notes, and snippets.

@nobonobo
nobonobo / README.md
Created June 3, 2021 06:23
32bitsアーキテクチャにて64bitsアラインミスマッチなフィールド定義を静的解析でチェックする方法

以下の様にすることで64bitsアラインをまたいでるフィールドがあれば警告が出るようになります。

go build -o checker ./checker.go
GOOS=linux GOARCH=arm go vet -vettool checker ...
@nobonobo
nobonobo / docker-compose.yaml
Created July 21, 2020 21:54
nginx+go-webserverをdocker-compose upで起動するサンプル
version: "3"
services:
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- sockets:/var/run/servers
@nobonobo
nobonobo / gctest.go
Created March 23, 2020 02:29
Goにて循環参照をもつクロージャを保持したオブジェクトがGCに回収されるのかを確かめた。
package main
import (
"fmt"
"runtime"
)
type Obj struct {
dummy [10000]int
self func() *Obj
@nobonobo
nobonobo / build.yaml
Last active October 31, 2023 06:21
Pythonスクリプトを動作可能なバイナリにして各種プラットフォーム向けにリリースするシナリオ for GitHub Actions
name: push
on:
push:
tags:
- "v*"
jobs:
windows-build:
runs-on: windows-latest
steps:
@nobonobo
nobonobo / tips-for-beginners.md
Last active December 4, 2019 08:21
初級者のハマりがちな罠

(注:非推奨な事を列挙しています)

  • golang.jpを見に行ってしまう
  • depが最新推奨のパッケージマネージャだと勘違いする(Go標準のgo-modを使おう)
  • 「GO???」環境変数を理解せずに設定しまくる(わからない場合は一切設定しないのが正しい)
  • しょっぱなからgvm,gobrew,goenvなどのマルチバージョンのマネージャを入れようとしてエディタ連携環境構築に失敗する (複数バージョンのGoの運用は既に標準のGoだけでできるようになっている)
  • 測定もせずに固定値でもないスライスのキャパシティサイズを指定するチューニングを行う
  • インポートパスに相対パスを書いちゃう
  • mapを初期化し忘れる(参照操作ではpanicしないので気づくのが遅れる)
@nobonobo
nobonobo / go-rust.md
Last active November 11, 2019 01:00
GoとRustの使い分け

両者の成果物の特徴は結構真逆。 

Rustの特徴

  • C/C++資産との親和性、ゼロオーバーヘッド
  • シングルコアに対する最適化に注力
  • マルチコアに対する最適化は標準機能では行わないサードパーティライブラリがサポート
  • コンパイル速度が遅くなっても性能や安全性を重視
  • GC無しのためレイテンシがブレなく短い
  • C/C++エンジニア向け
  • ドライバーやカーネル支援の無い環境に特に向いてる
@nobonobo
nobonobo / install.sh
Last active September 28, 2018 06:20
コード補完付きmicroインストール方法
git clone --recursive https://github.com/a-h/micro $GOPATH/src/github.com/zyedidia/micro
go install github.com/zyedidia/micro/cmd/micro
go get -u golang.org/x/tools/cmd/goimports
go get -u github.com/mdempsky/gocode
http://neos21.hatenablog.com/entry/2017/01/08/234540#4-Xubuntu-%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%97%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%85%A5%E5%8A%9B%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B
@nobonobo
nobonobo / gopher.dae
Created March 22, 2018 09:04
dae sample
This file has been truncated, but you can view the full file.
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<asset>
<contributor>
<author>Blender User</author>
<authoring_tool>Blender 2.79.0 commit date:2017-09-11, commit time:10:43, hash:5bd8ac9</authoring_tool>
</contributor>
<created>2018-02-23T15:51:03</created>
<modified>2018-02-23T15:51:03</modified>
<unit name="meter" meter="1"/>
@nobonobo
nobonobo / gopher.dae
Created March 22, 2018 09:04
dae sample
This file has been truncated, but you can view the full file.
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<asset>
<contributor>
<author>Blender User</author>
<authoring_tool>Blender 2.79.0 commit date:2017-09-11, commit time:10:43, hash:5bd8ac9</authoring_tool>
</contributor>
<created>2018-02-23T15:51:03</created>
<modified>2018-02-23T15:51:03</modified>
<unit name="meter" meter="1"/>