kenju's blog

About Programming, Mathematics, Security and Blockchain

How to Install Raspberry Pi 3 with Headless-mode & Setup Tips

tl;dr Raspberry Pi 3にHeadless-modeでインストールする方法 wpa_supplicant.confにWiFIの設定を書き込むことで起動時に無線LANに接続することも可能 Raspberry Pi起動後はソフトウェアのアップデートなどを行っておく 動作環境 macOS RASPBIAN STRETCH LIT…

Pull-Requestのレビュー時と作成時に意識していること

Pull-Requestをレビューするとき 最近よく気をつけていることは 開発文化の醸成に意識する わからないことはわからないままにしておかない 重要なPRは必ず手元で検証を加える の三つ。 開発文化の醸成に意識する エンジニアの文化があまり醸成されていない現…

動画配信におけるHTTP Live Streamingの概要について

動画配信プラットフォームを設計している。 Streaming/Download2種類の配信方法がある 配信方法には大きく分けるとStreaming/Downloadの2種類 + 他の動画プラットフォームを利用する手法が考えられる。 Streaming Download Pre Download Progressive Downloa…

ゆうちょ銀行のワンタイムパスワード生成機を分解してみた

分解してみた。 「トークン(ワンタイムパスワード生成機)」について|ゆうちょダイレクト わかったこと 表の電卓部分は硬いプラスチック製で、糊で貼り付けられてあるだけ 細いマイナスドライバーとかで簡単にこじあけられる 裏側も同様 ハードウェアはVAS…

SRE Meetup Tokyoに参加してきた

connpass.com なぜ参加したかったか SRE本を読んだ上で、監訳者から背景や内容の補足が聞いて視野を広げたかったから 第一線のSREngineerとして働くエンジニアの実践的な経験が聞きたいから 他のSREngineerと交流し、最近の現場の温度感や課題感を話し合って…

MurmurHashとは何か

背景 RubyのHashTableの実装が知りたくて、ソースコードを読んでいた時に、"MurmurHash"という単語に出会った。何かよくわからなかったので、調べて見た。 https://github.com/ruby/ruby/blob/c08f7b80889b531865e74bc5f573df8fa27f2088/st.c: /* This hash …

Zip Fileの構造詳細と分割の仕組みについて

tl;dr Zip Fileを分割してユーザーに送信する仕組みを実装した際に、そもそもZip Fileは分割できるのか、なぜ分割できるのかについて理解するために調べた Zip Fileを操作する時の基本的なLinux Commands例をメモ 構造 Zip Fileは、主に以下の3つの要素によ…

PostgreSQLのEXPLAIN命令でクエリの実行計画を読み解くための基礎知識

tl;dr PostgreSQLでクエリの実行コストを把握するにはEXPLAIN, EXPLAIN ANALYZEを使う EXPLAINはあくまで最適と推定された実行プランを表示しているのであり、実際のコストとは乖離する可能性がある クエリチューニングを行うために、EXPLAINの出力結果が表…

pg_dumpでダンプしたファイルは約1/10のサイズになった

tl;dr pg_dumpを用いてダンプしたファイルは、手元で確認する限りほとんど元データのおよそ1/10程度の大きさになることが多かった とはいえ、これはあくまで今回自分の環境で計測した限りの話なので、この値は参考にせず、実際に手元で計測してください 今後…

redashでコホート分析を表示するSQL

SQL

redashでコホート分析を出力するSQLの書き方が少し癖のある書き方だったので、調べた内容をメモ。 結論 コホートグラフ描画に必要なのは、以下の4種類のカラム: 基軸日 基軸日からの経過日 基軸日からの経過日におけるイベント数 基軸日におけるイベント数…

PostgreSQLのSort実装アルゴリズムのコードを読んでみた

tl;dr PostgreSQLでORDER BY句などでSortをする時、Disk I/Oの発生するMerge SortかインメモリでのQuick Sortが選択される 背景 https://www.slideshare.net/MikiShimogai/postgre-sql-explain を読んでいて下記スライドを発見したので、現在の実装を確認し…

PostgreSQLで特定のスキーマのサイズをSQLクエリで算出する

特定のスキーマをdumpするときにその容量を把握しておきたい スキーマごとの容量を把握したい といった時に、以下のような関数を定義しておくと便利。 -- https://wiki.postgresql.org/wiki/Schema_Size create or replace function pg_schema_size(text) re…

TerraformでModulesを用いてResourcesの保守性UP

Terraformでは、Modulesを使うと、リソースを分割管理することができる。 保守性・メンテナンス性が向上するので、Terraformで複数リソースを管理している場合にはおすすめ。 www.terraform.io メリット main.tfの肥大化を避けられる git submodulesに切り出…

SQLでサブクエリを使うときはWITH句で可読性をあげる

SQL

SQLを書くときに複雑なサブクエリを書くときには、WITH句を用いると可読性が上がる。 例えば、↓はPostgreSQLの公式サンプル: WITH regional_sales AS ( SELECT region, SUM(amount) AS total_sales FROM orders GROUP BY region ), top_regions AS ( SELECT…

activerecord_precountのRails v5対応のパッチを送った

@k0kubunさんが作成されたactiverecord_precountを使っているのだが、Rails v5対応を行う中で、Rails v5で動作しないことが判明した。 そこで、少し前の話になるのだが、acriverecord_precountのRails v5対応をするためのパッチを3件送った。 s/query_scope/…

『人生の勝算』を読んで

人生の勝算 (NewsPicks Book)作者: 前田裕二出版社/メーカー: 幻冬舎発売日: 2017/06/30メディア: 単行本この商品を含むブログを見る tl;dr プラットフォームビジネスとしての"SHOWROOM"を作り上げた哲学や思想、CEOの原体験がわかる 「逆境は運命的に従わざ…

最近気に入っているgit aliases

git

ここ半年間くらいマイブームのgit aliasesをあげてみる。 g = git そもそもgitコマンドをgにaliasを貼っている。 普段の開発の中で一番使うことが多いコマンドの一つだからだ。 # ~/.bashrc alias g='git' ただし、これだけだとgit-completion.bashのコマン…

長谷部誠著『心を整える。』を読んで

心を整える。 勝利をたぐり寄せるための56の習慣 (幻冬舎文庫)作者: 長谷部誠出版社/メーカー: 幻冬舎発売日: 2014/01/29メディア: 文庫この商品を含むブログ (4件) を見る 本書が販売された当初から愛読している書。 最近長谷部選手が怪我から復帰し、再度…

1ヶ月書き続けてみて振り返る、今までの技術ブログとの付き合い方

Qiita時代 2014~2015年の2年間は、Qiitaで技術ブログを公開していた。(kenju - Qiita ) それまでの自分の技術ブログを公開する目的としては、 エンジニアとしてのプレゼンスを高める 日々のアウトプットを見える化する であった。実際、Qiitaをメインで運…

『アルゴリズムクイックリファレンス』を読んで

アルゴリズムクイックリファレンス 第2版作者: George T. Heineman,Gary Pollice,Stanley Selkow,黒川利明,黒川洋出版社/メーカー: オライリージャパン発売日: 2016/12/24メディア: 単行本(ソフトカバー)この商品を含むブログ (5件) を見る tl;dr 疑似コー…

『 エンジニアとして世界の最前線で働く選択肢』を読んで

エンジニアとして世界の最前線で働く選択肢 ?渡米・面接・転職・キャリアアップ・レイオフ対策までの実践ガイド作者: 竜盛博出版社/メーカー: 技術評論社発売日: 2015/10/08メディア: Kindle版この商品を含むブログ (3件) を見る tl;dr 渡米を検討しているエ…

『Nature of Code』が自然現象プログラムの学習材料として良いらしい

Nature of Code -Processingではじめる自然現象のシミュレーション-作者: ダニエル・シフマン,Daniel Shiffman,尼岡利崇,鈴木由美,株式会社Bスプラウト出版社/メーカー: ボーンデジタル発売日: 2014/09/16メディア: 大型本この商品を含むブログを見る 最近、…

"Cookpad Ruby Hack Challenge"に参加してきました

“Cookpad Ruby Hack Challenge"に参加してきました。 ↓は参加前日に書いた記事です。 itiskj.hatenablog.com 参加して良かったこと 講義・開発・懇親会全てを通して満足度の高い、最高の2日間でした。ある程度の目的を持って臨んだのですが、それを越す学び…

Hatena Blog Proは試用期間を経て解約した

先月、以下の記事を書きました。 itiskj.hatenablog.com 一ヶ月の試用期間を経た結果、結局Proを解約することに決めました。 いくつか判断材料です。 独自ドメインでどうしても運用したい気持ちは変わらない が、しかし今のPVに対して、月々1,000円近い月額…

"Cookpad Ruby Hack Challenge"に参加してくる

普段Rubyを使っているものとして、その内部構造を知りたい、という強い思いがあった。 なので、今回抽選に受かってこの上なく嬉しかった。 RubyのソースコードHackは何度かトライしてみたが、いきなりソースコードをクローンしたものの、なかなかとっかかり…

TypeScriptでNumbers->SVGのコンパイラを書いた

少し前の話だけど、@kosamariさんのコンパイラになる※方法 — JavaScriptでコンパイラを作る - Qiitaという記事を読んでインスピレーションを受けたので、全く同じ仕様をTypeScriptで書き換えてみた。 github.com 本家との違いは、 TDDで開発した 入力値/出力…

アルゴリズム問題を解いてみるの巻:階段飛び越しステップ数問題

github.com 問題 以下の場合について、 N=5が与えられたときのXの値は? N=6が与えられたときのXの値は? Nに大きい数が入力されても現実的な実行時間で解答できる有効なアルゴリズムを考えよ You can go up the stairs by 1, 2, or 3 steps at once. If N i…

Rubyでシンプルなデータ構造を表現する時に何を使うか

Rubyを書いている時に、シンプルなデータ構造を書く場面は多々ある。 そんな時に頭の中で無意識的に判断している内容を言語化してみた。 選択肢 細かいところまであげるとキリがないが、大まかな選択肢としては以下の4つが選択肢としてあげられるのではない…

"Emscripten: An LLVM-to-JavaScript Compiler"論文メモ

Open Frameworks で作成したプロジェクトをブラウザで実行できる方法の一つとして、LLVMをJavaScriptにコンパイルする"emscripten"というツールがある。 公式ドキュメントの他に、docs/ディレクトリにペーパーが付随していたので、それを読んだ読書メモ。 gi…

ソフトウェアエンジニアとして通勤のために購入したバッグと検討内容

背景 数年間使用していたバッグ、流石にくたびれてきて肩への負担が増えたこと、通勤を考えてよりシンプルで丈夫であるバッグを書いたかった。 そこで、まずは要件を定義した上で、半年間の熟慮を重ねた結果、ついに「これだ!」と思うバッグに出会い、購入…