TL;DR
HDD 同様、NVMe ストレージも nobarrier
するなら内部キャッシュを無効化したほうがいいケースがあります。
分かる人向けに端的に書くと、NVMe 仕様には volatile write cache の有無と、有効化/無効化切り替え、および有効な場合にデータが消失するケースが明記されています。手持ちの NVMe デバイスの情報を確認して、ファイルシステムに nobarrier
つけたいなら、確実に無効化しておきましょう。
以下は詳細。
続きを読むTL;DR
HDD 同様、NVMe ストレージも nobarrier
するなら内部キャッシュを無効化したほうがいいケースがあります。
分かる人向けに端的に書くと、NVMe 仕様には volatile write cache の有無と、有効化/無効化切り替え、および有効な場合にデータが消失するケースが明記されています。手持ちの NVMe デバイスの情報を確認して、ファイルシステムに nobarrier
つけたいなら、確実に無効化しておきましょう。
以下は詳細。
続きを読む@tamagawa_ryuji 氏からこの度和訳して発売された「SRE サイトリライアビリティエンジニアリング」をご恵贈いただきました。
英語の原本は昨年発売されており、Google のサービス運用について実践的な知見が得られる貴重な書籍ということで、去年のうちに英語版を社内で購入し、輪講しています。今回和訳本を頂きましたので、二度目となりますが早速拝読しました。
SRE (Site Reliability Engineering) という言葉を聞きなれない方のために簡単に解説しておくと、Google において古典的なシステム管理者の概念に代えて導入された、システムとその上のサービスの信頼性に責任を持つエンジニアとその仕事のやり方の体系的な概念です。
初めて読んだ際は、SRE とそれにまつわる Toil や Postmortem といった概念や SLO の定義の仕方について Google の知見を学ぶのに精一杯でした。二度目となる今回ですが、以下のような点で読む価値が確実にあると感じた次第です。
続きを読む長年 Android を使っていたんですが、最近 iPhone にしまして。
cybozu.com にリモートからアクセスする際、クライアント証明書で認証する「セキュアアクセス」という機能があるのですが、Safari で使うには証明書を読み込ませておかねばなりません。
Android では PKCS#12 形式のファイルを選択するだけで読み込めたのですが、iPhone だとユーザーインタフェースがないのですね。 調べてみると、会社の iPhone をまとめて設定するために使う「構成プロファイル」という機能があり、この一機能でクライアント証明書を設定できるようです。
構成プロファイルは .mobileconfig
という拡張子の XML ファイルで、以下のように自作できます。
Go 1.7 から本体に入った context パッケージは便利、というより今や必須の道具です。以下のように書くことで、一定時間で処理をキャンセルできたりします。
func slowOperationWithTimeout(ctx context.Context) (Result, error) { ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond) defer cancel() // releases resources if slowOperation completes before timeout elapses return slowOperation(ctx) }
defer cancel()
とありますが、このようにしないとリソースリークするので context 使うときはこう書くのがパターンです。
さて、以下のプログラムですが、返ってくるデータが小さいうちは問題なく動きますが、大きなデータになると resp.Body
の読み込みで必ずエラーが返るようになります。
@songmu 氏からご恵贈いただいた「みんなの Go 言語」(みんGo)、早速拝読しました。
書評としてはタイトル通り、なのですがそれではあんまりなのでもう少し。
本書でも述べられている通り、Go 言語は早ければ一日で大体学べてしまう学習効率の良さが魅力です。最大の魅力と言っていいかもしれません。コンパクトな言語仕様に実務で必要な周辺ツールが揃っているため、初学者から歴戦のプログラマまで活用範囲が非常に広いのです。
さて、その Go 言語をさらに活用するための本書。お手に取ってみればわかりますが 150 ページ弱で薄い本です。読むのに半日あれば十分でした。本の内容も余計なことは書かれておらず、「こんな便利な機能があるよ」くらいなあっさり風味で淡々と役に立つ情報が並べられています。
ああ、わかっているなと。
Go 言語の最大の魅力と思う学習効率の高さを、文字通り形にした本、それが「みんなの Go 言語」です。
私はかなり Go を使いこなしているプログラマです。社外に公開している Go のプロジェクトだけでも 7 つあり、社内でもさらに多くのツールを Go で作成しています。つまり一通り Go に関する知識を持っている状態で「みんGo」を読んだのですが、本書の四分の一くらいは新規に知るツールやテクニックでした。逆に言うと四分の三は日々実践で使っている知識なわけで、有用度合いが非常に高いです。
知らなかった四分の一についても、すぐに試してみたいものがたくさんありました。特に第2章「マルチプラットフォームで動作する社内ツールの作り方」は知らない知識の山でした。Windows でビルドしてこなかったもので(ごめんなさい mattn さん)。。
最後に、第三章を執筆した @fujiwara さんにぜひ拙作の cybozu-go/cmd をお試しいただけると嬉しいなと思いました。この章のテーマであるログ、タイムアウト、シグナル、goroutine の停止を Go 1.7 の context で解決するツールですので。宣伝失礼。
素晴らしい本をありがとうございました!
メモです。C:\Go\bin にパスを通したいとして、以下のようにするとマシン全体の Path に追加できます。
以下を文字通りに入力する
[Environment]::SetEnvironmentVariable("Path", $env:Path+";C:\Go\bin", "Machine")
コマンドプロンプトを別途開いて go
を打ってみる
GUI が諸事情で使えない人はどうぞ。