Weekly Selection 2021-03-05

素因数分解の高速化アルゴリズム

未確定ですがRSAが突破される日も遠くないかも…

誤報だったよう.
https://idle.srad.jp/story/21/03/04/210213/

WASMにSIMD

WASMにSIMDが入るのか … !!
https://groups.google.com/g/mozilla.dev.platform/c/yLQxaBp9-o8/m/zwsm7rikAgAJ

面接手法 STAR

STARという面接手法があるらしい.
これどこの企業でもやっていそうな気がしたけれど,フレームワークがあるのか.
https://careers.mercari.com/jp/hiring/

  • Situation 環境や背景
  • Task 課題や役割
  • Action 本人の行動
  • Result その結果

AWSのIAM生成

AWSのIAMを生成してくれるプロキシくん
https://github.com/iann0036/iamlive

AWSのIAM作りで消耗しているのが多少はマシになりそう.

技術の学び方

技術の学び方という観点で有益な内容.

内定者向け黒帯トーク

Shellcheck

ShellScriptのバリデーションを行うshellcheckを見つけた.

koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts

余談

  • ICTSC 2020本選で土日が終わった.
  • Powershellスクリプトは慣れると書きやすいかもしれない.
  • Podcastにゲストとして参加してみた.楽しい.
  • M1 MacBookはWPA2エンタープライズ認証が苦手かも..?
  • 大学の広報から取材をうけた.サイトで素材になるらしい(?)
  • とにかく忙しい一週間だった

Weekly Selection 2021-02-26

Slackbot開発

Slackで動くBotを実装した.メッセージに日付が含まれる場合に,Googleカレンダへの予定追加を半自動で出来るようにした.開発にはSlackの提供するBoltのPython SDKを使った.

Slack | Bolt for Python

Boltはサンプルが豊富であり,実装しやすい.一方でAPIで返されるレスポンスに含まれる値を取り出すときに,どんな構造で返されるか把握しにくく不便だった.以下の記事が役に立った.

Slack Interactive Messageリファレンス – Qiita

Slack ペイロードに含まれる response_url を完全に理解する – Qiita

Prototype

ソースコードは以下に置いておく.

cdsl-research/slackbot: オリジナルなSlackbotを開発するぞ!

scriptタグのasync属性とdefer属性

以下の記事を読んでいるときに見つけた.並行でダウンロードすることでレンダリング完了までにかかる時間を短くできそう.

Eliminate render-blocking resources

Qiitaの以下の記事が図解つきで分かりやすい.

タグに async / defer を付けた場合のタイミング – Qiita</a></p>

メルカリの無意識バイアス研修の資料

メルカリが無意識バイアスの研修資料を公開していた.kayoreenaさんのPodcastできいて知った.グローバル化を見据えた組織づくりには,こうした言語化されていない課題に向き合うことが大切だと感じた.個人的にはメルカリは好きでも嫌いでもないが,こうした資料の公開や取り組みは素晴らしいものだと思う.

メルカリ、「無意識(アンコンシャス)バイアス ワークショップ」の社内研修資料を無償公開 | 株式会社メルカリ

MTBFとMTTR,システムの信頼性

システムの信頼性について調べてみた.MTBF(Mean Time Between Failure)とMTTR(Mean Time To Recovery)は有名な指標として知られている.

信頼性工学の領域では,システムの信頼性を向上するために障害発生への対処が定義されていた.

システムの信頼性

  • 待機システム→故障が発生したときにシステムを切り替えるシステムのこと.ホットスタンバイとコールドスタンバイがある.
  • ホットスタンバイ方式→常に予備システムも電源ON
  • コールドスタンバイ方式→通常,予備システムは電源OFFで非常時に電源ON

障害対処の捉え方も2つあった.

  • フォールトアポイダンス→あらかじめ個々のコンポーネントの信頼性を高め,障害を発生しないようにする.
  • フォールトトレラント→先に見越して発生しても継続的に動作を行うようにする.

フォールトトレラントを実現する方法として次があった.

  • フェイルセーフ→安全な状態に倒すこと.例えば地震が起きるとエレベータが停止する.
  • フェイルソフト→故障したコンポーネントを切り離して,別のコンポーネントに切り替えることで,動作を継続する.例えば,停電が発生した場合にバッテリ電源に切り替えて動作を続ける.
  • フェイルルーフ→ミスによる誤作動を防止する.例えば非常停止ボタンのカバーや削除確認のダイアログがある.

余談

Weekly Selection 2021-02-19

Bashでシェルスクリプト

Bashでシェルスクリプトを書くと幸せになれることが分かった.正規表現での比較に expr コマンドを使おうとしたら,拡張正規表現に対応しておらず辛かった.bashなら [[ “target-str” =~ “regex” ]] でいけるので幸せだった.bashには型があるので今までの辛さがなく楽だった.declareを積極的に使っていきたい.

Bash基礎文法最速マスター – いろいろ解析日記

AllReduce

All Reduceは分散させて計算した結果を集約して再配置する手法のことらしい。分散深層学習のドメインではあるけれど、分散システムにも近い話だ。要は計算を分配して行い,その結果を集約して複製(再配置)する流れをとっている.

分散深層学習を支える技術:AllReduceアルゴリズム | Preferred Networks Research & Development

Jamstack

WebのアーキテクチャとしてJamstackを知った.最新ではJamstackの表記らしい.ポイントは,HTMLの一部をサーバサイドで事前にビルドしておき,残りはクライアントサイドでビルドすること.これはSSRに非常に似ている.SSRはリクエストに応じてビルドを行うEvent Driven Build方式であるのに対して,Jamstackは事前にビルドを行うPre-Build方式を採用している.SSRの課題であったビルドのリソース消費を解決できているのでイケている.

JAMstackってなに?実践に学ぶ高速表示を実現するアーキテクチャの構成 – エンジニアHub|若手Webエンジニアのキャリアを考える!

既存技術との整理をするために表を作ってみた.

Web技術の比較

MapReduce

Hadoopのことを調べていたときに見つけたので復習のついでに読んでみた.

余談

  • 任天堂のSwitchを買ってスマブラで遊んだ.これ楽しい.
  • オンラインでのミーティングだと物理ホワイトボードの使い勝手の良さを改めて感じられる.
  • WordPressのPはキャピタルだぞ小学校校歌
  • テックキャンプの受講生が1週間に20件の企業応募が必須らしく大変だなと思った.
  • AWS 東京リージョンで障害が0時ごろに起きていて大変そうだった.

Weekly Selection 2021-02-12

Pythonの拡張正規表現とTokenizer

Slack Botを作成しているときに,オリジナルのコマンドを実装したくなった.正規表現によるパースを思いつき,Python公式ドキュメントの正規表現モジュールを読んでみた.

re — 正規表現操作 — Python 3.9.1 ドキュメント

ドキュメントから2つの学びがあった.1つ目はPythonに拡張正規表現があることだ.Perlの拡張正規表現は知っていたが,Pythonにもあることは初めて知った.(?P<name>...)は特に便利なので使っていきたい.2つ目はTokenizerを実装したことだ.自然言語処理や自作プログラミング言語に興味がなかったので,授業で軽く触れた程度の知識だった.Python公式ドキュメントにあったTokenizerの実装をもとにSlack Bot用のTokenizerを実装してみた.パターンマッチの要領で入力に対して一致する正規表現を順番にチェックしていく.正規表現の優先度(順序)も重要であることが学びだった.

slackbot/tokenizer.py at master · cdsl-research/slackbot

ソフトウェアテスト

SEShopがセールしていたので,ソフトウェア品質を高める開発者テスト アジャイル時代の実践的・効率的なテストのやり方を予約してみた.テストのことは素人なので、テストパターンの設計やテスト実装の優先度付けを知りたい.

シェルスクリプトでのIFと条件式

testコマンドのオプションをmanで見れば比較演算子が見れる.メモを書き起こした.

ShellScriptのIF文チートシート・スニペット – Qiita

余談

  • Kubernetesクラスタに使う分散ストレージをCeph, GlusterFS, Longhornで比較した.Cephのハードウェア要件(メモリ64GB, ネットワーク 10Gbps, CPU 4core)が高すぎて驚いた.
  • AmazonのCEOであるジェフ・ベゾスが退任するらしい.
  • 情熱大陸に登大遊さんが出演していた.けしからん.
  • KubernetesのConfigMapは,Kubernetes以外では使えないのでイマイチだと思った.サイドカーコンテナで設定ファイルを取得して,Volumeを共有して設定ファイルを配置するほうが良いと思った.
  • ゆるキャン△をはじめて見た.なんて素敵なアニメなんだ.

Weekly Selection 2021-02-05

setTimeout()の挙動

過去に調べたことをQiitaにまとめた.setTimeoutなにもわからない.

setTimeout(…, 0)はsetTimeout(…, 1)と同じ動きだった – Qiita

Clubhouseの分析

Clubhouseの技術スタック分析
https://zenn.dev/voluntas/scraps/9403b803320d6f

Clubhouseの利用規約の分析
https://www.cloudsign.jp/media/20210128-clubhouse-tos/

Dark Data

ハイプサイクルで有名なガートナー社が定義した「ダークデータ」を知った.簡単にいえば,収集されて使われないデータのことをさす.AWSの論文のなかで発見した.

Definition of Dark Data – Gartner Information Technology Glossary

質の高い技術文章の書き方

研究にも通じる箇所があると思った.「なぜ,その課題が解決する価値のある重要なものなのか?」を明確にしていきたい.

正しい課題とは正しい問いかけから始まる。その課題を解くことでお客さんはどういう利益を得られるのか?なぜ他の課題よりこちらが重要なのか?正しい問いを繰り返した先にある課題は本当に解く価値のあるものだし、間違った問いから生まれたありもしない課題というものはとても危険だ。

質の高い技術文書を書く方法 – As a Futurist…

CMUのデータベース講義

カーネギーメロン大学のデータベース講義の資料をみつけた.余裕のあるときに読んでみる.トランザクションのkumagiさんのツイートから発見した.

https://15721.courses.cs.cmu.edu/spring2016/schedule.html

MITの開発入門講義

GitやVim, シェルを一通り扱っていたので英語に抵抗がなければ良さそう.

https://missing.csail.mit.edu/2020/

COCOAのバグの原因

頻繁なAPI変更にともなうソフトウェアのバグを適切に検出するのは難しいと感じた.特にAppleとGoogleがインターフェースを揃えないと,実装コストも増加すると思った.

Issue on GitHub: transmission_risk_levelの値について · Issue #14 · cocoa-mhlw/cocoa

分析記事: Android版COCOAがバグった理由 – DEVGRU

日本のIT企業の収益分析

mixiがゲーム事業に全振りしているのが意外だった.LINEとZ HOLDINGSをあわせると規模がかなり大きい.

ブロックチェーンのセキュリティ

kumagiさんの資料が面白かった.以前にDPS研究発表会で首藤先生の話をきいたあとだったので,より理解が深まった.

ブロックチェーンは攻撃手法で分類するとよい

ブロックチェーン「ネットワーク」の研究

余談

  • GitHubにMUFGのソースコードが漏洩したという話でTwitterが盛り上がっていた.
  • Clubhouseを使ってみたが面白いサービスだった.
  • AWSの論文(amazon.science)をさがしてみたら意外と数があった.
  • Android版COCOAの通知が届かなかったことがニュースになっていた.
  • 卒研発表がおわったのでMacBook Air (M1)をポチった.