git tips

稀によく使うものをメモ # 履歴に関連のないhogeとfugaとをdiff git diff hoge..fuga # hogeブランチのxxxフォルダと、fugaブランチのyyyフォルダとをdiff git diff hoge:xxx fuga:yyy git diff hoge:xxx..fuga:yyy git diff hoge:xxx...fuga:yyy

goのモジュール名についての備忘録

先日、お仕事のGoリポジトリで、staticcheckによるDeprecated警告が効かない、という事象が発生しました。 諸々調査していくと、どうやらstaticcheckではGoの標準パッケージに対する警告をスキップする処理がされており、条件が合致してしまったため上述の事…

react-scriptsの雑感

気軽にreactを使ったWebサイトを作るとき、create-react-appを使ってreact-scriptsを前提とした構成を作ることはあるのだけど。 じゃあ本格的に開発しましょう、ってなるタイミングで、どうしてもwebpack.config.jsをいじくり倒したいときとか、設定を細々チ…

npm-force-resolutions

いつも忘れるのでメモ scrapbox.io

goen v0.0.10について

以下の不具合を修正しました: foreign_key:"col1,col2" のように、 foreign_key に複数カラムを指定したときに生成されるIncludeLoaderがうまく動かない これは結構根が深い問題でした。 goenではIncludeLoaderの動作時に、ScopeCacheというものを引き渡すこ…

小さなvimrcを複数用意しておくと便利ですよ、というお話

本記事は Vim Advent Calendar 2019 - Qiita の18日目の記事です。 nginxの設定ファイルを編集するシチュエーションを題材にして、小さなvimrcを取り回すvimの使い方について紹介しようと思います。 さて、nginxの設定ファイルを編集した後に、 nginx -t を…

golangでビルドされたバイナリに含まれるパス情報を消す

goでビルドしたバイナリには、通常はビルドに使われたgo等のフルパス情報が含まれている。 例えば /home/kamichidu/local/opt/go/default/bin/go みたいな。 気になるようなら、消すためにはbuild flagsに -trimpath を指定する。 go build や go install 等…

開発時にdockerを使ってmavenをいい感じに動かす

dockerを使ってJavaの開発しているとき、時折docker buildの遅さが気になる。 遅さというのは、ほぼ mvn package 実行時の依存解決にかかる時間に対して言っています。 というのも、例えば以下のようなDockerfileがあったとき # Dockerfile FROM maven:3.6.2…

goen v0.0.7について

以下の不具合を修正しました: Update/Delete操作時に、RowKeyがnilのとき、パッチからクエリが生成されていなかった Many to Oneのforeign keyを指定したフィールドに対して、参照先エンティティが存在しないとき、IncludeLoaderでpanicすることがある いず…

goen v0.0.6について

BulkCompilerに対して、MaxChunksが指定できるようになりました。 これまでは大量のプレースホルダを持つクエリを生成したとき、クエリ実行時にエラーになっていました。 package main import ( "database/sql" "fmt" "github.com/kamichidu/goen" _ "github…

PowerShell + msys2でのMakefileによるdocker volume mountについて

Windowsでmsys2のmake等を使いながら、Makefileでdockerを使ったコマンドを定義するときの、volume mountがうまいこといかなかったのでメモ。 PowerShellと書いているけれど、msys2のminttyからmakeを叩いたときにも通用する。 hoge: docker run --rm --volu…

EdgeRouterXへのL2TP/IPSec設定

自宅ではEdgeRouterXを使ってPPPoEでインターネットに接続しています。 今回EdgeRouterXにL2TP/IPSecでのVPN設定を実施したので、その備忘録。 参考にしたのは以下4サイトです: EdgeRouter - L2TP IPsec VPN Server – Ubiquiti Networks Support and Help Ce…

よくあるCompareという関数の理解の方法について

何個かのプログラミング言語触ってると、よくcompareという名前の比較関数を目にする。 この記事内では、goの文法で書くが、大抵の言語で当てはまる考え方だと思う。 // if a == b then 0 // if a < b then negative integer // if a > b then positve integ…

goen v0.0.5 について

goen.Loggerを手軽に作成するためのユーティリティ関数を追加しました。 以下のように利用することができます。 import "github.com/sirupsen/logrus" dbc := goen.NewDBContext(...) dbc.Logger = goen.LoggerFunc(logrus.Trace)

goen v0.0.4 について

TxScopeで実行した関数内でpanicしたときに、recoverしないようにしました。 今まではpanicした際のスタックトレースが失われていましたが、今バージョンからはTxScopeの外側にpanicを伝搬させるようにしたため、利用者はrecoverする自由を得ました。

goen v0.0.3について

goen v0.0.3には、以下の変更が含まれています: 生成されたInメソッドの引数を、スライスから可変長に変更 no such table "\"hoge\"" などの、余分なクォートをしてしまう問題の修正 v0.0.1で入れたクォートの対応によって発生 String() と QuotedString() …

goen v0.0.2 について

goen v0.0.2には、以下の変更が含まれています。 CompilerHookの追加 CompilerOptions.Hookの追加 CompilerWithHookの追加 これにより、goenが生成したinsert/update/delete用のクエリを、ユーザがカスタマイズできるようになりました。 例えばpostgresのups…

goen v0.0.1 について

goen v0.0.1には以下の変更が含まれています。 CompilerOptions.StmtBuilderの削除 CompilerOptions.Dialectの追加 goenが生成するクエリについて、テーブル名とカラム名をクォートするように変更 MetaSchemaをinterfaceに変更 MetaTableの追加 MeaColumnの…

goen v0.0.0 について

goenを使ったプロダクトがここ数ヶ月、特に問題なく稼働しているということと、大体APIも問題なさそうだということで、ベータからv0.0.0の正式版に移行しました。 v0.0.0では、以下の変更が含まれています。 DBContext.QuerySqlizer DBContext.QuerySqlizerC…

Scheduled Eventsの挙動調査

AzureのVM起動/終了時にフックかましたくなったので、Azure Metadata ServiceのScheduled Eventsについて調査した。 今回はLinux(CanonicalのUbuntu 16.04 LTS)のみ、かつ確認が面倒なためRebootのみが対象。 前提 Azureの東日本リージョンで、シングル構…

旧ブログの移行せにゃ

github pagesで書いてた旧ブログ、はてブに移行せにゃ...

AzureのOMSAgentの運用について

AzureのLog Analyticsにデータ投入するOMSAgent、すごい便利なので重宝しているのだけど、docker-civというsolutionがよく問題を起こす。 それに、OMSAgentの実態はruby bundledなfluentdなので、カスタマイズしたログ転送をやろうとするとfluentdの設定で色…

go modulesに期待してる

go1.11が2018/8/24にリリースされたけど、その中にgo modulesのexperimental releaseがある。 個人的にgoの依存管理周りは、まだglideでたまにgo dep使ってるけど、go modulesがstableになったら切り替えたい。 詳細まではまだ検証できていないので、検証し…

WindowsのCredentialManagerをVaultとして使う

windowsのCredentialManagerを、powershellからvaultとして使うメモ。 cmdからだと、生パスワードの取得ができないので、powershell限定。 # Install from PSGallery Install-Module CredentialManager # Add/Edit New-StoredCredential -Target $keyName -U…

goenのコンセプト(go generateはASTベースです)

goen はgo generate用のコード生成ツールを提供しますが、これは可能な限りASTベースで動作するように設計・実装しています。 これはgo generateによって生成される型に対して、同一パッケージ内でユーティリティ的なメソッドを生やす場合に、問題なく再度go…

goenというgolang用ORM Likeライブラリを公開しました

今まで kallax というPostgreSQL用のORMを使っていたのですが、今後のメンテナンスや、そもそもの機能に不満がありました。 なので goen というORM Likeライブラリを作りました。 現在アルファ版で、フィードバック募集中です。 goenの特徴的な機能として、…

docker swarmでコンテナがPendingのままになる現象

dockerのswarm modeで、composefileを使ってコンテナをデプロイしようとしたときに、コンテナの実行状態がPendingから先に進まないという現象に出くわした。 環境はUbunu16.04 LTSにdocker-ce 17.09を入れた2台構成。 2台ともmanagerとして動作。 daemon.jso…

ActionCable Protocol Overview

ActionCableは実装が仕様とはいえ、ActionCableのクライアントを書く際に困ったのでまとめてみる。 正確性は保証しない。 また、この記事は2017年11月15日時点での情報を元にしている。 そもそもActionCableって何 Rails5で登場した、websocketを介し、rails…