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. 金子勇氏

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

アセンブリ読んだら負けかなと思ってる

子供のころからできるだけ手抜きして成果を挙げることだけは長けている山本です。 今回は、C/C++ で作ったプログラムが運用中にクラッシュするときのデバッグ方法のお話しです。 開発中のデバッグは gdb などでソース追いながらデバッグできますが、運用中で…

マージソートが書けなくても、プログラマになれる方法

久しぶりに社内でプログラミングのレクチャーをすることにしたのだけれども、準備をしていて自分がどうやってプログラマになったかをふと思い返してしまった。結論を書くとあっさり一言で済んでしまうのだけれども、やはり苦労話(?)もないと面白くないの…

[C++] 例外を投げ捨てるのがあまりよろしくないわけ

前の記事で例外は投げ捨てみたいなことを書いておいてなんだが、投げ捨てるのはあまりよろしくない。 例外を catch しないと std::terminate() が呼び出されて最後は abort(3) されるのだけれども、この場合は RAII が効かず、スタックオブジェクトのデスト…

C++チップス

最近 120 年ぶりに C++ を書くことにしたので、もだーんとは何かという禅問答を繰り返した記録を公開。 C++ のススメ なぜ C ではなく C++ を使うのか。その理由の 99.999% は std::string にある。char* は忘れるんだ! std::string を使うだけで↓のように…

東京大学の秋入学

日経新聞や各メディアによると、東京大学は海外の大学に合わせて秋入学を検討しているそうな。 高校以下の各学校にまで波及するならばよしとして、もし東京大学単独で秋入学という制度になってしまうようなら、日本の高校生が東京大学に行くメリットは著しく…

今年の抱負

毎年、元旦には一年の計を立てることにしています。 その時に気をつけているのは、 シンプルで覚えやすい、 達成できたかできないか判定できる目標を、 ひとつだけ立てる ことです。 まず、一年の計を立てても一年後に忘れてしまっていたら達成のしようがな…

ぬこ

この画像は、cybozu.com の開発用データセンターの sorry サーバー用に作ってもらったもの。 「ぬこっぽくお願い」といったらこんなのでした。運用環境に出すわけにはいかなかったのだけど気に入っているので twitter のプロフィール画像にしてます。 テスト…

IPアドレスから国を引いてみる

IPアドレスから国や地域を調べる Web API は色々ありますね。手元にIPアドレスから国を引くデータベースが欲しくなったので作ってみたのですが、こんなのでいいのかどうか自信がないので公開してみます。 ☆元データ hostip.info で公開しているデータがある…

考える技術

昔サイボウズ社内で書いたブログの公開、第2弾です。 --【お盆特別企画】ロジカルシンキングとかクリティカルシンキングとか、横文字にするとありがたがられるかも知れない、つまるところ考えるということについて考えてみる。論理的思考能力という言葉を近…

英語が書けない人のための、英語を書く方法

昔、サイボウズ社内のブログで公開して人気があったのをいくつか公開します。まずは、英語が書けない人のための 書き方講座。 ---- 「英語なんて読むのも大変だし、書くのはもっと大変」という方、たくさんいるんじゃないでしょうか。 私もなかなか英語は苦…