より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

SREとかカナリアリリースとかSLAとか

社内ではSREの勉強が、積極的に行われています。

以下の動画とかSREの勉強になるみたいです。

www.youtube.com

私は蚊帳の外なんですが。

Googleの英文記事をちまちま読み進めてます。

その中でSLAが紹介されています。

99.9%だったら、1年で3.65日、1月で7.65時間。つまり1月では半日足らずとなります。

sre.google

これがどれほど難しいかわかります。

リリース時に思わぬトラブルで使えなかったら、即刻SLAを下回ってしまうでしょう。

リリースは思わぬトラブルを招きます。だが、それでもリリースをしなければならない。前に進めないのですから。

バグのないシステムなどあり得ないのですから。

その被害を抑える方法の一つがカナリアリリース。

一部のユーザーのみ最新バージョンを提供して様子を見る方法ですね。

Excelスプレッドシートで見れる機能が提供された時、見れたり見れなかったりという経験がありますが、それもカナリアリリースの一環だったんでしょう。

makitani.net

このカナリアリリース、

カナリアリリースは、かつて炭鉱でのガス漏れ事故を防ぐために、無臭ガスに敏感な鳥(カナリア)を鳥かごに入れて炭鉱に持ち込んだ

というのが語源だそうです。

PowerShellで複数、多数のファイルを生成する

PowerShellは便利なのですが、文法に癖があります。

複数の特定のサイズのファイルを生成するコードをメモ

$CreateNumbers = 50000 
$DirectoryName = "Test$CreateNumbers" 
New-Item $DirectoryName -ItemType Directory 
for ($i=0; $i -lt $CreateNumbers; $i++){   
   $fileName = "$DirectoryName\$i.txt"
   fsutil file createnew $fileName (1KB) 
}

1KBを変えれば、ファイルサイズも変えられます。

ファイル数が多いとエクスプローラーが大変なことになるという経験もしており、

どれくらいのファイル数も耐えられるかというためのバッチを作りたいがためにこういうコードを書いたんですが

自分のPCでは1万程度も楽でも問題なさそうでした。

ただ、プレビューを伴うjpegなどは1000程度でもキツくなるようで、ファイルサイズやファイルタイプとの兼ね合いも出てくるので要注意です。

参考記事

kojimanotech.com

MaterialDesignXamlでバッジを表示させたい

MaterialDesignXamlでいわゆるバッジを表示させたいな、と

ボタンの右上に表示させる方法であるサンプルは用意されています。

f:id:rimever:20210620135126p:plain

xamlだと以下のようになりますね。

<materialDesign:Badged
  Badge="3">
  <Button
    Content="MAIL" />
</materialDesign:Badged>

ただ、私がやりたいのは以下のような形

f:id:rimever:20210620134827p:plain

その場合は以下のようなコード。

<StackPanel Orientation="Horizontal">
   <TextBlock Text="{Binding CallName.Value}" />
   <materialDesign:ColorZone
       Mode="PrimaryLight"
       CornerRadius="6" Margin="4 0">
       <TextBlock Text="{Binding ReferenceCount.Value}" Margin="4 0"/>
   </materialDesign:ColorZone>
</StackPanel>
````

読書感想『「3か月」の使い方で人生は変わる Googleで学び、シェア№1クラウド会計ソフトfreeeを生み出した「3か月ルール」』

「3か月」の使い方で人生は変わる Googleで学び、シェア№1クラウド会計ソフトfreeeを生み出した「3か月ルール」

サブタイトルの通り、Googleで働いたことがあり、freeeの経営者をしている佐々木氏によるタイムマネジメントの本です。

Googleの経験と筆者の考え方がミックスされていて、なかなか面白い本でした。

3ヶ月やる

主題の通り、3ヶ月というスパンでこれをやるということを決めて、やっていく。

freeeを創業する前にプログラミングの勉強をする上でも、午後6時まで働いて、それから午前1時までプログラミング。そして午前6時から仕事。

そうした生活を3ヶ月続けることで、プログラミングに対して手応えが得られる。

3ヶ月で事業も経営も変わるわけではないが、考え方や転機を変えることは出来るというものです。

その考え方はGoogleで働いた経験からきており、3ヶ月で結果を出さないとGoogleでは忘れられていく。

3ヶ月でGoogleを結果出し、成功体験を広めると信頼を得て、さらに大きな仕事が出来るようになる。

確かに3ヶ月がいいと思います。今の会社では6ヶ月ごとに目標立てますが、6ヶ月だと長くて、大体立てた目標は忘れている、しかも目標は変わっています。

さすがに1ヶ月では短いですし、テーマを変えるのも大変ですので。

テーマを変える

3ヶ月やったから、今までやっていたことを続けるというわけではなく、3ヶ月ごとにテーマを変える。

というのも3ヶ月やったら、その都度、やるべきことは変わっていくからです。

freeeの開発当初では開発できたら、ユーザーに使ってもらってフィードバックをもらうといったようにテーマが変わるからです。

その時間の使い方はお互いのためになるか

Googleでの経験の話が紹介されていて、面白いなと思いましたね。

Googleはアカデミックな気質から、彼らは無駄だと思われる打ち合わせには参加しないそうです。

参加していても無駄だと思ったら、打ち合わせの途中で退出してしまう。

チャットで質問しても、リンクだけが送られてくる。ここに書いてあるから読め、と。

正直、今の会社、このルール適用したらいいんじゃないか、というくらいなんですよね。打ち合わせばっかりで。顔だけ並べるような打ち合わせが多くて。

スケジュールを振り返る

こうして過ごした3ヶ月を後で振り返る。

佐々木氏の場合だとカレンダーを見れば、打ち合わせなど過ごしたことが一目瞭然であるため、カレンダーを見返して、何に時間を使っていたか、なんでそうなっていたかを振り返る。

そうすることでより有効な3ヶ月へ踏み出せるというわけです。

メールの仕分け

佐々木氏には毎日1000通以上のメールが届く。

全て見ていられない数です。

では、どうするのか?

まずタイトルで100件に仕分けする。

そのうちにすぐアクションが必要なものはアクションする。そうでないものは後で読むと仕分けしておき、日曜日に読むそうです。

個人的には貴重な話でした

経営者の立場の人の状況が垣間見えたので。

では、それ程の人にメールを読み流されず、読んでもらうにはどうするか?

タイトルでメールの要旨がわかって読んでみたくなるものにすることです。

わかりやすいか、読んだ人が行動してくれるか。

佐々木氏もあまり関係ないけど、気になって、最終的には読んでしまうメールというのがあるそうです。

Versionクラスのコンストラクタに文字列が渡せる

docs.microsoft.com

Windowsのファイルバージョンといえば、1.2.3.4という4つのセクションに分かれたバージョン体系ですので、であればC#のVersionクラスもそれしか対応していないのかなと思っていたのですが、2.0という文字列でもVersionクラスはよしなに処理してくれるようです。

using System;
                    
public class Program
{
    public static void Main()
    {
        var version = new Version("2.0");
        Console.WriteLine("major=" + version.Major + "minor=" + version.Minor + "revision=" + version.Revision + "build=" + version.Build);
    }
}

f:id:rimever:20210617201803p:plain

比較も簡単です。

using System;
                    
public class Program
{
    public static void Main()
    {
        var v_2_0 = new Version("2.0");
        var v_1_4 = new Version("1.4");
        var v_1_12 = new Version("1.12");
        Console.WriteLine(v_1_4 < v_2_0);
        Console.WriteLine(v_1_4 < v_1_12);
    }
}

f:id:rimever:20210617202026p:plain

これがSystemライブラリで利用できるのだから、C#のライブラリは本当に洗練されているなと感じますね。

読書感想「はじめてのGo/Revel入門:Go言語フレームワークRevelとPaizaCloudを使って10分でWebサービスを作る」

はじめてのGo/Revel入門:Go言語フレームワークRevelとPaizaCloudを使って10分でWebサービスを作る

半ば、PaizaCloud CloudIDEの宣伝か、というところなのですが、このIDEは、よく出来てますね。

ターミナルもphpMyAdminも使えます。

以下のようにしないと動きませんでした。

~/go/bin/revel new myapp

f:id:rimever:20210616200012p:plain
にしても、このPaizaCloudIDEがよく出来ている。

f:id:rimever:20210616201721p:plain
テーブルの生成にはラグがある

f:id:rimever:20210616204526p:plain
Completed!

軽くRevelと Gormを触ることが出来て、GoもそれなりのWebフレームワークが整備されているんだなと感じましたね。