技術と魚

雑感と備忘録

selenium-side-runnerでinput[type=file]がhiddenとなっているタイプのファイルアップロードをどうにかする

おしゃれなアップロードボタンは、inputを隠してダミーボタンを経由してinteractしているだけなのでseleniumがinvisibleなelementを操作できず死ぬ。 こんな感じのエラーになる ElementNotInteractableError: element not interactable ダミーボタンのclick…

「フォン・ノイマンの哲学」を読んだ

「フォン・ノイマンの哲学」(高橋昌一郎著)を読了。 ノイマンの逸話は言わずと知れているし、その功績も数学やコンピュータ、経済を齧っていれば度々目にする。そんな天才の一生をざっくり眺められる良書。 強烈な天才の側面だけを切り取って見ていると、疑…

Safariのバグっぽいものを見つけたのでBugzillaに投稿してみた

https://bugs.webkit.org/show_bug.cgi?id=229442 position: stickyをtheadとth(td)につけると、stickyの直観からして境界で止まってくれることを期待するはずが、一定の条件下ではなぜか反対方向に突き進んでしまうというRTAで使えそうなバグ。 https://cod…

ブログをサボらない

と、ここに宣言します。。 会社で採用活動などもやっている中で、この会社の経営層はどういう人なのか?は候補者の方は調べると思うよ、という話を聞いたので、そういうコミュニケーションなのであると割り切った上で、少し発信を続けてみようと思う。...と…

Coq再入門 - SetとProp

Coqにおける Set, Prop は(型の型(=種類)的な意味で) sort という。ともにbuilt-in Setはプログラムやデータ型のためにある Propは証明や命題のためにある # Set Prop アトミックな項 Program, データ Proof 証明 型 Specification, データ型 Proposition 命…

プロダクトのコアとは何であるか

プロダクトの優先度決めの議論はたいてい人類にはまだ早いんだけど、たいてい行き着く先として、「うちの製品のコアをどっちとするかによって話変わるよね?」とかいう話にはなるなと、何度も繰り返して思った。 コアのことは、状況によっては秘伝のタレとか…

"ビジネスサイド"という呼称な

よくマーケ・営業・営業企画・サポート側の組織のことをビジネスサイドって呼ぶけど、あの呼び方がずっと気に食わない。開発はビジネスじゃないみたいに見える。 実体がすべてなので、呼称なんて何でも良いといえばそれまでだけど、多くのポジションインフレ…

なぜブランチを「切る」と言うんだろうか?

Gitで新たにブランチを作るとき、ブランチを「切る」と言う。しかし、やっていることはむしろ「生やしている」のだから、真逆と言ってもいい。もしも英語で "cut a branch" などと言ったら、「お前の作業ブランチは切り落として無かったことにしろ!」になっ…

選択的夫婦別姓に関して毎日新聞様の取材を受けました

毎日新聞の畠山記者に取材をいただきました。(会社ではなく、改姓当事者として選択的夫婦別姓に関して) mainichi.jp ところで一部の方には申し遅れましたが、私は結婚時に改姓しておりますので、戸籍上は水上ではございません。 改姓するのは現在96%が妻、…

SNSと技術の夢、陰謀論

僕が小〜中学生の頃、インターネットというと個人サイトやチャットでワイワイやるのが主目的でして、エンジニアとしての原点を感じています。ところで、昔チャットで、「七色に輝く中国の河川」とか「2つの頭を持つ牛」とか、いわゆる中国の環境汚染の実態…

ON CONFLICT句で部分的に更新しようとしてviolates not null constraintと出てしまって困った話

(Postgresでの話) 以下の様にテーブル上に非NULL制約のあるテーブルで、INSERT ~ ON CONFLICT ~ DO UPDATE を使って部分的に更新しようとすると、エラーになってしまう。 CREATE TABLE test (id int PRIMARY KEY, nnv int not null, upd int); INSERT INTO t…

AWSで独自ドメインへのメールをSES→S3で受け取るterraformの最小設定

備忘のため。 前提 東京リージョンは2021年1月現在、SESでの受け取りに対応していません。下記は us-east-1 で設定。 tfファイル全体 # account idを取得するためにcaller identityのdataを用意 data "aws_caller_identity" "current" {} # # Route53 # # zo…

Apple Silicon(M1) darwin arm64でterraformをとりあえず動かす

(2021/2以降にこの記事を参照していると古い可能性が高いです!) 新年早々餅を食いながらMacbookのセットアップを始めているワシ。 Rosetta2で動かしていたけど、providerがうんともすんとも言わなくなったりして詰んでしまう。何かがおかしくなるっぽい。 …

React.Contextのネストを使ったテクニック

I ❤️ Context. 2020年が終わるまでにプロダクションからReduxのコードを消そうと思い、必死にReact.Contextへ移行していました。 さてContextについて面白いテクニックを見出したので紹介します。Contextはネストできます。これを使うことで、コンポーネント…

componentDidUpdateでContextの変化を見たい

って思うじゃないですか。 github.com 今のところは、公式な手段はなさそうです。こちらのissueにあるようにcontextの値をpropsにぶち込む何かを使ってどうにかする必要があります。 私はたいていcontextのvalueがobjectなので、指定したkeyについてpropsに…

Rails、JavaScript、そしてHello World

※ 怪文書注意 DDH(Railsのauthor)は多くのアプリケーションにとってJavaScriptなんて塩みたいなもんだ、と表現していた。RailsにおけるViewは基本的にはHTMLという文字列を返すのであって、それでは足りない部分をJSで味付けする。それでよくね?と。 さてこ…

製品のUXはデータベースに支配されている

数年前までSalesforceのUIについて「まじデザインやべえし一体どこが良いねん」とずっと思っていたのですが(とか言うと怒られるか..)、最近は「なんという洗練されたデザインそして体験設計!」と思うようになりました() SoRなシステムにおいて、ユーザの…

エンジニアに向いているって何だろう

子供の頃、「無人島」に対して恐ろしい印象を持っていた。僕がなにか悪さをして、親が怒るついでに、「お前、今度無人島に放ってやるからな」と冗談を言ったりしてきたからだ。 でも、小学校の学年が上がるにつれ、「仮に自分が無人島に1人放たれた場合」と…

ブランチを選択方式で楽に切り替えたい (改)

git

(2020/09/07) fzfを使う楽なやり方を見つけたので更新 レビュー後など、直近や直前に使っていたブランチに戻りたいときはよくある。しかし、ブランチ名を忘れてたりすると「なんだっけ?」と思ってさかのぼったり、tab補完で頑張って見つけようとしたりする…

git管理下でgrepした行の文字列を置換する

もっと良い方法もありそうだけど、awk, while readにパイプしてやるといい感じになる。 # fooのある行をすべて検出してbarに置換 git grep -n "foo" | awk -F ":" '{ print $1" "$2 }' | while read f n; do sed -i '' -e "$n s/foo/bar/g" $f; done 一応何…

getDerivedStateFromPropsでthisがundefinedな件

という問題に直面しました。GitHubのissueをたどってみると、 I understand this might seem a bit overprotective. But I don’t see practical upsides to allowing it. And I see downsides: this will be there, it will just point to a different thing…

TOEIC@9/29

スコア 845(L430/R415) 前回差 50 なんか覚醒してリスニングが大体分かるモードに入ったので、ほぼ問題先読みして解けた。 前回までやらんかったシャドーイングを取り入れたのと、速度1.2倍で聞いていたのが効果あったと思われる。 リーディングも前に比べて…

Vapnikの原理

Vapnikの原理「ある問題を解くとき、すぐにそれより一般的な問題を解こうとしてはいけない」 SVMの本に載っていた。"原理"と言うけど、何らかの普遍的性質を示しているわけではなくて、人がついやってしまう間違いがあるので、注意したい考え方の一つという…

率直に思いを伝えるタイミングの話

特に仕事では、感情論とかすげー嫌いなので、ロジカルかつ合理的な説明を可能な限り求めてしまう。 何なら感情論振りかざすタイプを見てちょっと一線置こうかな程度に冷めた目で見てきた。 しかし最近は、経営という立場を通じて、それではダメなタイミング…

TOEIC@6/23

前回差+75 (3ヶ月前) 学習時間約30時間 スタディサプリ100% リーディングは前回と同じぐらい時間が足りなかったのにかなり上がっているので、読む速さではなく的確さが上がっている。長文でも分からないことは少ないので速さを上げていけばもう少しいけるは…

Rubyでカウンタを10文字で作る

Enumerator.newでごにょごにょやる..? それかまさかの自作..? と悩んだ方へ 結論 counter = (0..).each counter.next # => 0 counter.next # => 1 counter.next # => 2

Promiseのスタックトレースが分かりにくい時はbluebirdが使える

JavaScriptのPromiseによる非同期を経由すると、エラー発生時に非同期の呼び出し元以前のスタックトレースが出力されないので、デバッグに困ることがあった。 けど調べてみたらbluebird*1のlong stack trace機能を使えばそれも含めて出してくれるっぽいとい…

intercomからのメッセージにリンクを仕込み、クリックされたらカスタム属性を更新するhubotスクリプト

intercomの機能でそれくらい出来ると思ったら出来なかったので2時間ほどで作った。マーケティングで使えます。以下のような機能があります。 クリックしたら指定したカスタム属性が指定した値に更新される 指定したURLにリダイレクトする クリックしたことを…

‹Child parent={this} /› はアリか

※ 思考実験です Reactはpropsという制約的なコミュニケーション手段があるからこそ、メンテナンス性があがるというもの。*1 今日コンポーネント指向と呼ぶものは、「コンポーネントがpropsによって一意に形態が定まる」という基本的性質に保証されていると言…

npm installがextractで止まる時は

Github上のプライベートリポジトリの影響かもしれません。 止まるケース 以下を満たすと止まることがある。 package.jsonの中に、githubのプライベートリポジトリを指している依存が存在する。 ~/.ssh/id_rsa がpassphraseを必要とするキーである場合で、ssh…