その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

golangのstructに対してコンストラクタを自動生成するCLIツール "gonstructor" を書いた

github.com表題の通りです.出オチのような名前です.使い方やどういう挙動をするかという話題についてはREADME.mdのSynopsisをご覧いただければと思います.Javaのlombokをご存知の方はlombokの@Valueのような挙動をする,と言えばイメージしやすいでしょう…

TypeScriptのMap<K, V>をJSON.stringify()に食わせると空のオブジェクトになって困るんですけどって時

(TypeScriptに限らずJavaScriptでもだいたいこのような感じだと思いますが)例えば以下のようなコードを書くと,出力としては {"body":{}} が得られます. const body = new Map<string, string>().set("foo", "bar"); console.log(JSON.stringify({body})); 本当は {"body"</string,>…

バイナリぽん置きでGPG passphraseベースの暗号化・復号化を行うツールを書いた

表題のとおりです.github.com名前は出オチです (ref: エニグマ (暗号機) - Wikipedia)色々あってgpgコマンドが無い (入れられない) ような環境でもバイト列を暗号化・復号化したいということがあり (あと脳が悪くてgpgコマンドのオプションを覚えられない)…

CompletionStage<T>な変数を同期的に処理したいんですけど〜ってとき

Javaの話です.CompletionStage<T>を返却するようなメソッドがあって,それを同期的に処理したい (単体テストを書くというシーンが最も多いでしょう) ということが生きているとあります.しかしCompletionStageはget()のようなメソッドが生えていないので同期的</t>…

技術書典7 (く39D) にて「ATコマンドかるた」を頒布します!!!

技術書典7,SORAZINE技術組(く39D)*1 にて「ATコマンドかるた」を頒布いたします.techbookfest.org「ATコマンドとはなにか?」という疑問については同時に頒布される SORAZINE 技術組 Vol.2019F 中の,おそらく今のところ日本で最も詳しいATコマンドの解…

Kyoto.なんか #5で「AWS上に構築する メンテ容易なElasticsearch System」というタイトルで話してきました

表題の通りKyoto.なんか #5で話してきました.もうかれこれ3週くらい前の話なのですね……筆不精がたたっております.kyoto-nanka.connpass.com内容としてはここ数年ElasticsearchをAWS上で運用しているのでそのアーキテクチャのご紹介という感じの発表をした…

builderscon 2019見本市 (土曜12時から) で自作ガジェット展示します

id:uzulla, id:mackee_wらと共に自作のE-バッジを展示します! というかこのブログの内容ママです!!ここには本物があります. ぜひお立ち寄りください!!!ところでチップのデータシートを見ながらあれこれコードを書いて試しているんですが,どうやって…

tcpdumpで今すぐキャプチャ内容を全部ファイルにflushしてくれ!! というとき

tcpdumpはキャプチャした内容をバッファに蓄積してバッチ的にflushするので,うっかりプロセスを即断するとキャプチャしていた内容をdrainできないことがままあります.困りますね.www.tcpdump.org Using the SIGUSR2 signal along with the -w flag will f…

TypeScriptを使ってアプリケーションの設定ファイルを書く

アプリケーションの設定ファイルと言えばjsonやyamlなんかで書くことが多いと思うんですが,最近はTypeScriptで設定ファイルを書いております.このような感じ: export interface ApplicationConfig { readonly listenPort: number; readonly timeout: numbe…

systemdで管理しているserviceがopenできるfile descriptorの上限数を増やす

systemdのバージョン # systemd --version systemd 237 TL;DR ServiceにLimitNOFILEを設定すると良い.他の特定のリソースについての制限もどうようにかけることが可能です.ドキュメントは man systemd.exec で参照できます (ウェブ上はこれが正しいリソー…

proxy-protocol-jsリリースした & Kyoto.js #16で喋ってきました

表題の通りproxy-protocol-jsをリリースしました.github.comwww.npmjs.comKyoto.js #16の発表資料は以下です.スライドでも簡単に説明しましたが,PROXY protocolというのはHAProxyが提唱しているTransport層 (L4) においてoriginalの送信元を維持したままp…

「テクノロジーのイノベーションと民主化、そのはじめの一歩」というタイトルで首都大学東京で話してきました

首都大学東京は私の母校でして,当時は本当に色々なことがあったのですが,今回たまたまお話しする機会を頂いたので表題のような話をしてきました.www.slideshare.netこのタイトルを思いついた時は酔っ払っていたのでしょうね.かなり大上段に構えたタイト…

恐怖! パスワード無しでログインを受け付けるsshd Dockerコンテナを作る

表題の通りです. ほら,ローカルでのテスト用途でそういうコンテナが欲しくなることが月2くらいであるじゃないですか……あるんですよ……本チャンの環境で使うともちろん即死なので使ってはいけません. gist.github.comこのようにすると test ユーザーでパス…

outage reportを書くときに気をつけていること

そうは言っても障害は起きるものです.で,障害が起きて,終息したあとの振り返りとして社内向けにoutage report (障害報告書的な?) のようなものを書くと思うのですが,本記事ではそのときに気をつけていることについて書きたいと思います。 outage report…

Dockerコンテナ内でpuppeteerを使うとChromeゾンビプロセスがたまる問題

表題のような問題があり,その調査したという記録です.なお,結論を一言で言うと--initを使え,ということになります. そもそもDockerコンテナを起動すると,CMDあるいはENTRYPOINTに指定されたコマンドがコンテナ内でPID 1として起動します.これが何を意…

「公式ガイドブック SORACOMプラットフォーム」が出ます

公式ガイドブック SORACOMプラットフォーム作者: ソラコム出版社/メーカー: 日経BP社発売日: 2019/03/21メディア: 単行本この商品を含むブログを見る出ます,出るのです. ソラコムプラットフォームの概観やその設計思想,実際のユースケースに応じた参考ア…

YAPC::Tokyo 2019に参加してきた & LTしてきた #yapcjapan

遅くなりましたが,表題のとおりです.YAPCが東京に凱旋してきたので参加してきました.yapcjapan.orgじつはこのような形で事前に関わっていたりもします:blog.yapcjapan.orgんで,LTをやってきました.資料は以下です.AWS LambdaでPerlを動かすというテー…

Jacksonでtop levelのpropertyを省略してMap<K, V>をserializeしたいんですけどってとき

public static class Something { private Map<String, String> prop; } をJacksonでserializeすると { "prop": { "foo": "bar" } } と,トップレベルにpropのようなpropertyが出てくるので微妙……となるシチュエーションがまれによくあります.で,どうすると良いかというと </string,>…

gowrtr - goコード生成支援ライブラリ

gowrtr (go writerと発音します) というgoのコード生成支援ライブラリ (ジェネレータ群) を書きました.github.comSynopsisに書いたように, package main import ( "fmt" "github.com/moznion/gowrtr/generator" ) func main() { generator := generator.Ne…

go-errgen書いた

goのstructにエラー定義を書いておけば良い感じで「エラーを返却する関数」をコード生成するツールであるgo-errgenを書きました.github.comSynopsisに書いてあるとおり, package mypkg //go:generate errgen -type=myErrors type myErrors struct { FooErr…

golangのstruct custom tagをうまいことparseして値を引っこ抜きたいってとき

type Foo struct { Bar string `buz:"qux" iyan:"bakan"` } における `buz:"qux" iyan:"bakan"` を良い感じで buz => "qux", iyan => "bakan" のように取得したいというケースでは以下のようにするとよい: tagKeyValue := reflect.StructTag(`buz:"qux" iyan…

superuserに対する「ふつーのuser」にどういう名前を付けるべきか

TL;DR unprivileged users ordinary user standard user などが良いようだ.ordinaryとかstandardはuserに限らず他の種別でも使えそう. 会話の様子 shinpei0213 [14:11] 特権ユーザー root user 一般ユーザー xxxx user xxxx なんて言えばいいのmoznion [14…

aws-lambda-perl5-layer 書いた

[2018-12-05 追記] ビルド済みのLayerを公開しましたので,そちらを使うと便利です. See also: http://moznion.hatenablog.jp/entry/2018/12/05/211523 [追記ここまで]先日のre:InventでCustom AWS Lambda Runtimesが発表され*1,これはつまり任意の言語でA…

設計Night2018で話してきました

connpass.comスライドは以下です.id:nkgt_chkonkさんに「パフォーマンス視点でのソフトウェアの設計というテーマでなんか話せない?」と持ちかけられ,当時色々考えていたこともあり「やってみるか!」という感じの経緯でできたのがこのトークです. 言いた…

stringsを使ってどのgoのバージョンでコンパイルしたバイナリかをサクッと取得する

How to find out which Go version built your binary | Dave Cheneystringsを使わないちゃんとしたやり方はこちら. 雑に取るならstringsコマンドを使うとそれっぽいのが取れます. $ strings main | grep go1[.] stack=[cgocheckdebugcpugo1.11.1runnabler…

Released lua-benchmarker

I've released lua-benchmarker that is a benchmarker for lua code. This benchmarker is for taking microbenchmark.github.comThis library is available on luarocks. You can install this by luarocks install benchmarker.luarocks.orgFor example, …

Elasticsearchに実際に書き込むテストなんかで「indexへの反映に時間がかかって困る〜〜」って時

Elasticsearchに実際に書き込む系のテスト,どうやってもindexの反映のために1000ms待つことになるためテストケースを書けば書くほど線形にテスト時間が増えてゆき頭を抱えている— 好評分譲中 (@moznion) 2018年10月11日Elasticsearchに実際に書き込む系のテ…

Released lua-cputime

I had released lua-cputime.github.comThis package also had been shipped to luarocks.luarocks.orgThis library provides functions to measure the CPU time (i.e. user time and system time). The lua runtime doesn't support such functions, so th…

Scrapboxにinput modeを導入するUserScript

こちらですscrapbox.io

Released lua-url-encode

I had released lua-url-encode.github.com And I also had shipped that to luarocks. You can try to install this with luarocks install urlencode.luarocks.orgThis package is a URL encoder/decoder library for lua that is written in C (with lua'…