非同期プログラミングにてRxを使って思ったメモ

サーバーサイドの非同期呼び出しを含む処理を簡潔に書くためにRxJavaを使用していて、もっとうまくやれたらなと思うところが見つかったのでメモ。 ざっくり書くと early returnみたいなことがRxJavaだとやりにくいなと思った。 DBやAPIの呼び出しが同期呼び…

素数のプログラミングへの応用 (hash function)

hash functionの計算に素数のマジックナンバーが使われているけど、31の理由がはっきりはしなくて、モヤモヤする記事です。 素数みんな好きですよね。ただ、あまり多くの開発者はで素数判定のアルゴリズム使うことはないかも。どんなとこで使われているのか…

エラトステネスのふるい実装してみて実行速度をグラフにしてみた

やったことないのでやってみました。 gist.github.com 横:入力となる数字 縦:ミリ秒 みたところO(n2)ではなさそうかな スパイクがあるのが気になる。

私が思うエンジニアリングマネージャーの役割と特性

同僚のエンジニアリングマネージャーの方が約半年を振り返った考えさせられる記事を書いていたのに触発されて、周りの何人かの方とエンジニアリングマネージャーに関して話しました。 その会話を踏まえて、今いる会社に近い会社ではエンジニアリングマネージ…

マネージャーの読書会を開いた話

概要 今年3月から、マネージャーたちに声をかけて、希望者で読書会を始めました。 読みたい本はslackで募集して決めました。 読書会は、ABD (Active Book Dialog)的に読む時間+共有の時間で構成される1.5hで行いました。 マネージャー同士でもあまり話したこ…

測りすぎとサービスのKPIそしてデータとファクト

測りすぎを読んでサービスとKPIの関係が気になっていました。 KPIはないとせっかく色々やっても反省できそうにないから必要でしょって思ってたんですが、測りすぎを読んで弊害もあるよねということで改めて考えてみました。 もともと何かしらの施策をやる前…

測りすぎを読んで

測定結果と報酬/評価を結びつけることの弊害 書いてあったこと 本には様々な弊害が書いてあるが一つ大きな問題としては、測定した結果を直接個人や組織の評価と報酬に結びつけることだ そうすると、個人や組織は測定結果を上げることにのみ集中してしまい本…

コンサルタントの秘密を読んで #4

引き続き、「コンサルタントの秘密」の読み直しです。 第六章 わなから逃れるの法 ここだけで一章使っているというのも意外な感じがしたのですが、ソフトウェア開発にトラブルはつきものでトラブルを次から気をつけるみたいなやり方で備えるのではなく仕組み…

コンサルタントの秘密を読んで #3

引き続き、コンサルタントの秘密を読んでいます。 第五章 そこにないものを見るの法 自分の視野を広げたり、自分が気づけないことを気づけたりすることはとても大事だと思っています。 一旦認識してしまえば、何らかの解決策が生まれるのですが、気づけない…

コンサルタントの秘密を読んで #2

前回に続いて、残りの章も心に残った法則を紹介したいと思います。 第四章 そこにあるものを見るの法 金槌の法則 「クリスマスプレゼントに金槌をもらった子供は、何でも叩きたがる。」というもの。ある特定のやり方がある問題を解決するのになまじうまく言…

コンサルタントの秘密を読んで

学生の頃読んで、就職するきっかけになった本を再び手に取ってみました。 コンサルタントとしての考え方が事例や比喩とともにユーモアを交えて書いてある本です。 xxの法則といったものがたくさん出てきて、今読み返しても、ああ確かに大事だよなぁとか忘れ…

Training from the BACK of the roomのまとめのまとめ

「Training from the BACK of the room」連載シリーズせっかくなので目次を作ってみました。 概要とざっくりとした感想 nakaly.hatenablog.com 概要と第1章Connectionのまとめ nakaly.hatenablog.com 第2章Conceptのまとめ nakaly.hatenablog.com 第3章Concr…

Training from the BACK of the room まとめ#4

前回に引き続きTraining from the BACK of the Roomの紹介です。 Conclusionの概要 トレーニングの締めの話。まとめやったりフィードバックもらって締めることが多いが、前にも紹介した通り、最初と最後というのは記憶に残りやすいので学習内容に結びつくこ…

Training from the BACK of the room まとめ#3

前回から少し間が空きましたが続きを紹介したいと思います。 Concrete Practiceの概要 Concrete Practiceは学んだことを実践を通じて定着させる部分。以下の四つの点が重要。 ミスを許容すること 積極的な参加 学習者同士の強調 一人一人自分ごととして捉え…

Training from the BACK of the room まとめ#2

前回に引き続きTraining from the BACK of the Roomの紹介をしたいと思います。 Conceptの概要 Conceptでは学習の内容をトレーニングを受ける人(学習者)に伝える部分。トレーナーは以下のことに気をつける。 必要な情報 (Need-to-know Information) 本当に必…

Training from the BACK of the room まとめ#1

前回からかなり間が空いてしまったんですが、せっかくのいい本だし、日本訳がないのでどんなことが書いてあるか少し紹介できたらと思っています。 本の構成 本の構成としては、トレーニングの構成の4Cの一つに一章使って説明して、その章の中自体も4Cで構成…

Training from the BACK of the roomの感想

前回、トレーナーのための本 Training from the BACK of the roomを読んでいるということを紹介したのですが、今回は少し内容に触れつつ感想を描きたいなと思います。 タイトルがすごくよく内容を表していると思います。 基本的な考え方として、トレーニング…

Training from the BACK of the Room

現在、会社にAgileやLeanの考え方を普及させるため、Lean & Agile TF(Task Force)として活動しています。 自分の活動の代表的なものとしてはこちらです。 遅ればせながら、昨日発表した資料をあげました!時間の都合上、喋らなかったことも多いので資料をみ…

社内hackathonでモブプログラミングをやった話

このブログ記事はモブプログラミング Advent Calendar 2018の6日目の記事です。 前日は@sato_ryuさんのモブプロ始めてからやらなくなったアレ、やらなくて良いって訳じゃないし、最近また始めたし。でした。 この記事では経験を共有することで、やってみよう…

エンジニアのコミュニケーション能力

自分はおしゃべりの力や世間一般でいうコミュニケーション能力や雑談力は低いのだけど、プロダクト開発を早く進めて行くというコミュニケーションに関してはそこそこできると思っています。 そこで、自分が気をつけていることをちょっとまとめて見ようと思い…

Check empty or null string in Javascript

!str || str.length === 0 But since !"" is true, we can write it as follows: !!str === false

Start learning Rust

I don’t know the reason, but I want to do something different from what I’m usually doing. And I want to have a familiar programming language which does not have garbage collection (GC). There are two candidates for me, swift and Rust. I t…

Cast a List type object without iteration

There are three choices as follows: List<String> list = Arrays.asList("1","2"); List<Object> objectList = (List) list; List<Object> objectList2 = (List<Object>)(List) list; List<Object> objectList3 = new ArrayList<Object>(list); But the choice 1 and 2 seem to be dangerous because the ex</object></object></object></object></object></string>…

Job Scheduler

Since scheduled tasks of my project has some dependencies, I’m thinking whether I should use a job scheduler. There are lots of job schedulers and lots of comparison of job schedulers. My requirements are 1. Manages DAGs which define job d…

HttpClient in Java

Both Apache HttpClient and OkHttpClient are thread-safe. Apache HttpClient HttpClient - HttpClient Performance Optimization Guide Chapter 2. Connection management OkHttpClient Concurrency · square/okhttp Wiki · GitHub OkHttp3 does not use …

Markov Chain Monte Carlo

One of the goal of the current my study about statistics is understanding Markov Chain Monte Carlo(MCMC). I would like to write about one of the popular algorithms of MCMC, Metropolis–Hastings algorithm. It’s a kind of rejection sampling a…

Multiple-Column Indexes on MySQL

MySQL can use multiple-column indexes for queries that use all the columns, the first two columns, the first three columns and so on. MySQL :: MySQL 5.7 Reference Manual :: 9.3.5 Multiple-Column Indexes The following index is equivalent to…

Reversible Markov Chain

In the previous post, I introduced some of important Markov chain properties. I would like to write about a Markov chain property that is used in Markov Chain Monte Carlo(mcmc), which is reversibility. Reversibility Let is a variable of a …

Markov Chain Properties

In the previous post, I gave the definition of Markov chain and as you can see in the page that I introduced in the previous post, a Markov chain can be represented by a directed graph. Each node represents a state and each edge of the gra…

Markov Chain

Markov Chain is a sequence of random variables () which has a property that the probability of moving to the next step depends only on the current state not on the previous states. The probability of moving to the next step which is define…