百日半狂乱

Shut the fuck up and write some code!!

builderscon tokyo 2019 に当日スタッフとして参加してきた。 #builderscon

builderscon tokyo 2019に当日スタッフとして参加してきた。 builderscon tokyo 2017は当日スタッフとして、builderscon tokyo 2018はコアスタッフとして参加して、今回で3回目のスタッフとしての参加となった。 全てを準備してきたコアスタッフの皆様、当日…

読了、Goならわかるシステムプログラミング: Linuxシグナル再訪 in Go

Goならわかるシステムプログラミングを読んだ。 「第12章 シグナルによるプロセス間の通信」の冒頭で大昔に書いたブログ記事が引用されていてぶったまげる*1と同時に、ちょうど良い機会なのでGoの素振りも兼ねつつシグナルを再訪してみる。 SIGSTOPで停止し…

builderscon tokyo 2018 にスタッフとして参加してきた。 #builderscon

去年のbuilderscon tokyo 2017は当日スタッフとして参加して、そのClosingでカンファレンスのコンセプト*1に共感して、 youtu.be それでも結構悩んで色々考えた結果、コアスタッフとして参加することにしたのが去年の11月くらい。 カンファレンスの準備から…

Nodeのマシンタイプをケチって覚えたdebugging kubernetes

GKE上に立ち上げている自前のkubernetesのClusterは、一番安いという理由だけでg1-small*1を使い続けていた。しかし、いざ複数のPodを追加したりし始めると、Nodeのリソース不足が原因で色々ハマったので、そこで覚えた細かいデバッグ手法を例のごとく逆引き…

gcloud config / kubectl config 事始め。

手元のgcloudに紐付く複数のaccount/project/k8s cluster/k8s namespaceを持っている場合、とにかくどのアカウントで、何のロールで、どこのプロジェクトのどのクラスタに向かってgcloudやkubectlを叩いているのか都度確認しながら作業することになる。gclou…

一人Hands-on: Manage Kubernetes Clusters on AWS Using Kops & WEB+DB PRESS Vol.99写経

Manage Kubernetes Clusters on AWS Using KopsとWEB+DB PRESS Vol.99: 実践 Kubernetesを参考に一人Hhands-onをしてみた。 本当はGKEで触る方が良いと思いつつ、AWSの方が仕事で慣れているので入りやすい、re:Inventで参加するHands-onで万が一何言っている…

builderscon tokyo 2017 に当日スタッフとして参加してきた。 #builderscon

2017/08/03から2017/08/05までの3日間開催されたbuilderscon tokyo 2017に当日スタッフとして参加してきました。各トーク等カンファレンス自体の感想については参加者ブログがまとまっているので、ここでは当日スタッフ業の感想をば認めようかと思います。

terraforming/terraformのzsh completionで快適ターミナルライフ

terraforming terraformingは既存のインフラリソースをtfファイルやtfstateへトレースしてくれるツールで、AWS上にある既存のシステムをterraformの管理下に置きたいという要望に応えてくれる優れもの。重宝しております。 github.com terraformingのzsh com…

Linuxターミナル、コマンドtips その5: gnuplotの基本的な使い方と勉強会を開く時に期待してはいけないこと

(2019/06/29追記) 実践的、網羅的かつ簡潔にまとまったドキュメントを見つけたのでメモ(日本語訳)*1。 github.com このtipsはこれからLinuxを使っていく必要がある人、特に端末操作に苦戦している人、もしくは端末操作に対して嫌悪感すら抱いている人に向…

Linuxターミナル、コマンドtips その4: シェルスクリプトのハマリ所とデバッグ手法

(2019/06/29追記) 実践的、網羅的かつ簡潔にまとまったドキュメントを見つけたのでメモ(日本語訳もある)*1。 github.com このtipsはこれからLinuxを使っていく必要がある人、特に端末操作に苦戦している人、もしくは端末操作に対して嫌悪感すら抱いている…

Linuxターミナル、コマンドtips その3: stdin, stderr, stdout, リダイレクト, パイプ

(2019/06/29追記) 実践的、網羅的かつ簡潔にまとまったドキュメントを見つけたのでメモ(日本語訳もある)*1。 github.com このtipsはこれからLinuxを使っていく必要がある人、特に端末操作に苦戦している人、もしくは端末操作に対して嫌悪感すら抱いている…

Linuxターミナル、コマンドtips その2: ファイルを見つける(locate, find)、ファイルの中身を調べる(grep)

(2019/06/29追記) 実践的、網羅的かつ簡潔にまとまったドキュメントを見つけたのでメモ(日本語訳もある)*1。 github.com このtipsはこれからLinuxを使っていく必要がある人、特に端末操作に苦戦している人、もしくは端末操作に対して嫌悪感すら抱いている…

Linuxターミナル、コマンドtips その1: キーボードショートカットとディレクトリの移動

(2019/06/29追記) 実践的、網羅的かつ簡潔にまとまったドキュメントを見つけたのでメモ(日本語訳もある)*1。 github.com このtipsはこれからLinuxを使っていく必要がある人、特に端末操作に苦戦している人、もしくは端末操作に対して嫌悪感すら抱いている…

第4回 中国地方DB勉強会 in 岡山 #ChugokuDB に参加した感想、Ubuntu/DebianでMySQL5.5をapt-getでMySQL5.6にアップグレード、あるいはバルクインサートの威力の確認

第4回 中国地方DB勉強会 in 岡山 #ChugokuDB 今週の日曜日に初めて参加しました. 第四回 中国地方DB勉強会 テーマはパフォーマンスチューニング. ハンズオンのネタとして用いられたのはSQL逆引き大全363の極意.講師の喜田 紘介さんは著者の一人. SQL逆引…

0.1 + 0.1 + 0.1 == 0.3 ?

パーフェクトPythonを写経中に0.1 + 0.1 + 0.1について書いてあったのでメモ. Pythonのfloat(浮動小数点数型)は、大抵の場合はCのdouble型を使って実装されており、近代的なコンピュータの場合53ビットの精度らしい. Python $ python Python 2.7.3 (defaul…

awkで0~1の乱数を生成する

シェルスクリプトを書いていて、ふと0~1の乱数をお手軽に生成したくなったので、実験結果をメモ. awkには組み込みでrand()という関数が用意されていて、例えば以下のような形で呼び出すたびに0~1の範囲の乱数を生成してくれる. awk 'BEGIN{ srand('"$RANDO…

世にも恐ろしいSIGPIPE、ソケットプログラミングの落とし穴

前回、「次回もシグナルのことを書く」と書いたのでシグナルのことを書く*1. ソケットプログラミングの落とし穴は色々あるけど、ここでは個人的に嵌ったシグナル関連の落とし穴に関して書き殴る. 結論から書くと、コネクションが切れたソケットに書き込み(s…

POSIX.1「signal(2)は古い、sigaction(2)を使え。」

過去に何回かシグナルに関する話をしたが、今回と次回もシグナルの話にしようと思う. シグナルそのものについてはsignal(7)のmanページを参照する. ここでは、シグナルを捕捉する側の話をする. 主に移植性の問題で、signal(2)ではなくsigaction(2)を使う…

非再帰的makeでgoogletestのテストコードを含むソースツリーを管理するMakefileを書いた

場当たり的なMakefileで管理しているC/C++のコードの規模(数千行程度)がそれなりに大きくなってきた. テストがないので大きな変更がしんどい. テストがないのでバグを踏んでも何が原因かは勘とprintfデバッグ、辛い. もういろんなところでテストがまったくな…

googletestを/usr/local/にインストールするシェルスクリプト

発声練習:Intel C/C++ を用いた Google Test環境を準備するを参考にしてgoogletestのセットアップを行うシェルスクリプトを書いた. ホームディレクトリにソースを落としてきて、コンパイルした後に/usr/local/に必要なヘッダとライブラリをcpしているだけ.…

nmコマンドでC/C++のシンボルテーブルを見る、C++の名前マングリング、"C"リンケージ、あるいはリンカに関するメモ

前回(g++)と前々回(gcc)のサンプルコードを使ったC++のマングリングや"C"リンケージに関するメモ. nmコマンドでサンプルコードのシンボルテーブルを覗いた後に、C++からCの関数を呼び出す場合のサンプルコードを示す. 特にリンケージ周りの説明は正確性を欠…

C/C++の関数プロトタイプ、暗黙ルールデータベースの話(その2)

前回の記事で公開したMakefileでは、gccのコンパイルオプションに-Wallを付けていなかった. 極めて非人道的である. 現在はMakefileを修正してコンパイル時に-Wallを付けるようにしたが、そのままmakeを叩くとコンパイラにしっかり警告を食らった. run.c: …

makeを使ったライブラリのビルド管理と暗黙ルールデータベースの話

CでもC++でも良いんだけど、コードが大きくなってくるとファイルの分割を考え始める. 追記(204/1/30):このままコンパイラをg++にするとコンパイルが通らなかった.また、-Wallオプションを付けないというとんでもないことをしている.その辺のことをこちら…

gistコマンドでターミナルからGistにコードを投稿する

Gistにコードを投稿するのにいちいちブラウザを介するのは煩わしいので、ターミナルからコマンド一発で投稿したい. と思ったらあった. https://github.com/defunkt/gist インストール $ sudo apt-get install ruby $ sudo apt-get install gem $ sudo gem …

Cのエラーハンドリングと例外設計、例外処理のメモ

二十五日半狂乱、6日目(の分...orz)の記事 Cのエラーハンドリングを毎回やるのは面倒だ! 前回も言ったが、Cではエラーハンドリングに戻り値とerrnoを用いる. それはそうと例外設計において"無視"は大罪である. だから、関数を呼び出したら戻り値は漏らさ…

Cのエラーメッセージ出力に関数名や行番号を付加する

二十五日半狂乱、5日目(の分)の記事 C言語における関数のエラーハンドリングには戻り値およびerrnoを使うが、自分が読んだ文法書などのサンプルコードではエラーが起こった場合の処理が、大体がperror("fopen"); exit(1);のような感じのもので、まぁ小さいサ…

シェル変数のデフォルト値を設定する、未初期化時にエラーメッセージを出力してスクリプトを強制終了する

二十五日半狂乱4日目(の分)の記事 前回引用したkilltreeスクリプトの中に以下のようなコードがあった. local _sig=${2:-TERM} この${2:-TERM}は、変数展開されたタイミングで、$2に値が設定されていない場合にTERMを出力する. すなわち、結果的に$2が空だ…

SIGSTOPで停止したプロセスにSIGTERMを送ってもプロセスが死なない?

二十五日半狂乱3日目の記事 もはや、Advent Calendarでもなんでもなくなっているけど、そんな悲しい現実はさておいて. 前回の話がstackoverflowですでに議論され尽くされていて、解答の一つに自分のスクリプト似た構造のシェルスクリプトがあった. #!/bin…

指定したプロセスIDのプロセスとその子孫全てを再帰的にkillするシェルスクリプト

二十五日半狂乱、2日目の記事. 実行中のプロセスをkillしたいが、対象のプロセスをkillすると子プロセスがゾンビ化しちゃうからプロセスツリーを丸ごとkillしたくなった. どうせならkillコマンドっぽくプロセスIDで指定して、指定したプロセスをrootとして…

アウトプットを続けるきっかけとしてのAdvent Calendar

二十五日半狂乱、1日目の記事. 技術系Advent Calendar なにやら技術系Advent Calendarなるものが、盛り上がっているらしい. 1日(もとい2日)出遅れているけど今日からひっそり流行に乗ってみようと思う*1. と言っても、個人的にテーマは決めずに書きたいこ…