誰かの役に立てばいいブログ

by @ymmt2005 役に立ったらスターつけてね。

code-server で実現する Windows 上で Linux 向けの快適な Go 開発環境

業務で Linux 向けの Go プログラムを多数開発しています。 しかしながら、開発している機材の OS は好きこのんで Windows です。 在宅から勤務するときに、Windows のリモートデスクトップが最強すぎるので手放せないのが大きな理由です。 そんなわけで、Wi…

Go で GitHub v4 GraphQL API を使って draft pull request を自動作成

先日 GitHub に「開発中のためまだマージするべきでない」プルリクエストを作ることができる Draft Pull Request 機能が追加されました。 今の業務では複数人でモブプロしたりする関係で、開発途中のブランチを GitHub に push してひとまずプルリクエストを…

WSL で快適な Go 開発環境を作る

Go

個人的な備忘録です。 仕事上 Ubuntu をターゲットに Go のプログラム開発をする必要があるのですが、従前 Windows デスクトップに Hyper-V の Ubuntu で Emacs で開発していたところをVisual Studio Code(vscode) に開発環境を変えたいと考えました。理由は…

golang.org/x/crypto/ssh で固まらないようにする

Go

最近 CKE というベアメタル向けの Kubernetes 管理ツールを作っています。 ブートストラップツールではなく自律的・継続的にクラスタの構成を修正していくツールで、以下が特徴です。 ネットワークプラグイン非依存 HA 対応 CKE 自体の高可用性 今日は CKE …

builderscon tokyo 2018 二日目

初日についてはこちらをどうぞ。 builderscon tokyo 2018 一日目 - 誰かの役に立てばいいブログ 二日目は QUIC+TLS1.3 や Jepsen など楽しみにしていたセッションと、私も内容に関わったセッションなどに参加しました。

builderscon tokyo 2018 一日目

builderscon tokyo 2018に参加してきましたので、メモ。 仕事で Kubernetes を扱っているので、その周辺技術の話を聞いてきました。 初日はサービスメッシュ関係がたくさん。

NVMe ストレージの揮発性内部キャッシュ

TL;DR HDD 同様、NVMe ストレージも nobarrier するなら内部キャッシュを無効化したほうがいいケースがあります。 分かる人向けに端的に書くと、NVMe 仕様には volatile write cache の有無と、有効化/無効化切り替え、および有効な場合にデータが消失するケ…

SRE 本は二度以上読む価値がある

@tamagawa_ryuji 氏からこの度和訳して発売された「SRE サイトリライアビリティエンジニアリング」をご恵贈いただきました。 英語の原本は昨年発売されており、Google のサービス運用について実践的な知見が得られる貴重な書籍ということで、去年のうちに英…

iOS でクライアント証明書認証

長年 Android を使っていたんですが、最近 iPhone にしまして。 cybozu.com にリモートからアクセスする際、クライアント証明書で認証する「セキュアアクセス」という機能があるのですが、Safari で使うには証明書を読み込ませておかねばなりません。 Androi…

http.Response を返すような関数は作らないのが賢明

go Go

Go 1.7 から本体に入った context パッケージは便利、というより今や必須の道具です。以下のように書くことで、一定時間で処理をキャンセルできたりします。 func slowOperationWithTimeout(ctx context.Context) (Result, error) { ctx, cancel := context.…

「みんなの Go 言語」は忙しいプログラマこそ読むべき本

@songmu 氏からご恵贈いただいた「みんなの Go 言語」(みんGo)、早速拝読しました。 書評としてはタイトル通り、なのですがそれではあんまりなのでもう少し。 本書でも述べられている通り、Go 言語は早ければ一日で大体学べてしまう学習効率の良さが魅力で…

Windows の Path をコマンドラインから設定する

メモです。C:\Go\bin にパスを通したいとして、以下のようにするとマシン全体の Path に追加できます。 PowerShell を管理者権限で起動する 以下を文字通りに入力する [Environment]::SetEnvironmentVariable("Path", $env:Path+";C:\Go\bin", "Machine") コ…

memcached の二つのプロトコルと API デザインの難題について

yrmcdsという memcached のクローンを開発・メンテナンスしています。yrmcds は memcached を機能拡張しているので、クライアントライブラリも独自に開発する必要があり、libyrmcds という C/C++ 用クライアントライブラリとそれを基にした php-yrmcds とい…

PHP7 で yrmcds クライアントの拡張を動くようにした

先日 PHP のメジャーバージョンである [PHP7][] がリリースされました。 性能向上のために内部構造が大きく変更されているため、PHP5 向けの拡張モジュールは大幅に書き直しが必要です。 拡張モジュールを開発したことがある人はご存知の通り、PHP の内部 AP…

LXC 特権コンテナ HowTo

Ubuntu 14.04 の LXC で CentOS 6 の特権コンテナをたてて外部から SSH できるようにした記録。 Keywords: Ubuntu LXC CentOS block device ブロックデバイス 特権コンテナ

先頭行だけ grep してファイル名を表示したい

/usr/local/bin にある #!/usr/bin/python3 をみつけたい、場面です。 こんな感じ。 find /usr/local/bin -type file | xargs awk '/python3/ {print FILENAME} {nextfile}' 1行目だけ検査したらさっさと nextfile で次に移るので OK というわけ。 nextfile…

Go のポインタメソッドとバリューメソッドのどちらが良いのか

Go

TL; DR ほとんどの場合ポインタメソッドにしておけば良い。 Go のメソッドは、レシーバーとして値(value)を受け取るかポインタを受け取るか選択できます。

手軽に Go スクリプトを実行する

Go

Linux 限定ですが、binfmt_misc を使えば shell script や Python と同じように実行ビットを立てるだけで実行できるようになります。 以下のスクリプトを /usr/local/bin/gorun とでもして保存 #!/bin/sh exec go run "$@" Debian/Ubuntu なら update-binfmt…

スプリットブレインが起きたら ARP フラッシュが必要になった

これまた誰かの役に立てばということで。 keepalived (VRRP)はその仕組み上、ネットワーク分断時にマスターが二つ以上できます。俗にいう、スプリットブレインというやつです。 ネットワーク分断が解消したのち、マスターは一つに収束します。ネットワーク…

PERC9 H730 RAIDコントローラーで Non-RAID Disk を扱う

(誰かの)お役立ちメモ。 Dell 13世代機の RAID コントローラーには pass through モード、またの名を Non-RAID Disk に設定する機能があります。 PERC9 とか H730 とかいう世代のものです。(←検索キーワード) 一部の HDD を RAID (たとえば RAID1)にしな…

Ubuntu 14.04 の Apache mod_proxy_fcgi で php 動かすのは厳しい話

2010 年代になってまだ Apache だの PHP だの使っているの?っていう突っ込みは却下です。 世の中には様々な事情を抱えた人がいるのです。生暖かく見守ってください。 さておき、Apache 2.2 の頃、FastCGI で PHP を動作させるといえば mod_fastcgi や mod_f…

IPv6 は人類には早過ぎたんだ

人類は大袈裟ですが、私には厳しかったという話。

サーバーのコンソールはブランキングしちゃいけません

理由はお察しください(書くのめんどい)。 Ubuntu Server はサーバー向けであるのにそのままだとコンソールがブランクしてしまいます。 個人的に Ubuntu の最悪なところだと思ってます。 /etc/init/console-noblank.conf を以下の内容で作成すると幸せにな…

一流になれないプログラマの生存戦略

(2013-12-28 タイトルをエンジニア→プログラマに変えました) cybozu.com の中の人、山本泰宇です。2013年も今日で仕事納めです。 さて、先ほどプレスリリースが出たのですが、来年から私は運用本部長として、自社クラウドサービスおよび社内情報システムの運…

yrmcds 1.0.0 の補足

エンジニアなら詳細が気になるもの。というわけで、個人ブログのほうで yrmcds 1.0.0 リリース記事の技術的な補足をしておきます。 keepalived 使うの、split brain になるんじゃないの? さてはプロの方ですね。困りますな、そういう突っ込みは!

epoll, エッジトリガー, EPOLLRDHUP

このエントリーは社内勉強会用の解説記事です。 普通の人は便利な libev や libuv を使っておきましょう。 epoll はいわゆる C10K 問題に対応するための Linux カーネルが提供する仕組みです。といってもこの問題、32bit 時代のメモリが潤沢ではなかった時代…

ずぼらな人のための Jekyll 入門

毎日暑いですね。私はようやく明日から夏休みです。 さて。今日は [Jekyll][jekyll] で Web サイトやブログを作る話です。 俺もう知っているって人は、特に得られる情報ないと思います。ずぼら入門なんで。

テストコードなんて書きたくない(≠ テストしたくない)

はじめに言っておきますと、テストは重要ですよ。テストしないなんてありえない。 でも、テストコードを書いて当たり前という昨今の論調には、同意できないのです。テスト熱中症になんて到底なれません。そう思うのは私だけではないようで、Rails の作者も書…

教材としての yrmcds

@ymmt2005 こと山本泰宇です。 [公式発表][official]とは別に、こちらでは [yrmcds][] のもう一つの使い方を紹介します。それと、私の気持ちなどを。 yrmcds は実際のところ、作ることをかなりためらいました。工数という観点でみれば Apache が Redis を扱…

R.I.P. 金子勇氏

金子勇氏の突然の訃報に驚きました。 氏とは数年ほどお付き合いする機会がありましたが、プログラマーとしての才能は疑う余地なく素晴らしいものでした。 あの悪名高い起訴騒ぎを勝ち抜いたことは、未来の才能あるプログラマーを委縮から救う、見事な業績で…