Lambdaカクテル

京都在住Webエンジニアの日記です

技術

ソフトウェアエンジニアの大事な仕事は闇を祓うことである

ついに厨二病になったんか?違います. チーム開発や長期的なプロジェクトにまったく触れることなくWebアプリケーションエンジニアになった自分はソフトウェア開発の中で見積りや仕様を詰めていく箇所が一番苦手でした.新卒4年目になっても未だに,プロジェ…

scalatra + twirlでリバースルーティングする

暮らしているとリバースルーティングしたい日があります.例えばテンプレートの中で別のエンドポイントへのリンクを作りたいとき,直にURLを書きたくないですよね.修正に弱いし. いまどきのWebアプリケーションはエンドポイントを渡すと勝手にURLが作られ…

@xtetsuji さんからの出題をやってみる (Common Lispと数学編)

Twitterをやっていたら, id:anatofuz くんがおもしろ問題をやっていた.Perl入学式で出題されたらしい. anatofuz.hatenablog.com 問題はこういうの. 毎週火曜日のペアプロ講習用に作成した問題を昨晩の #Perl入学式 オンラインミーティングで紹介したので…

『テスト駆動開発』読んでTDDとトップダウンな設計との対立について考えた

新版『テスト駆動開発』を読んで考えたことのメモ。 TDDとトップダウンな設計(ペア設計)の対立について TDDと普段の自分の開発の様子とが対立するのか,はたまた対立せずに補完し合う関係なのか分かりかねている。 TDDでは,何か機能を作ろうというとき,…

標準出力をフィルタ・変形する強力なパイプ: teip使ってみた

最近teipというツールをはてブで知った。説明を読んでいるとなかなか面白いしなんかに使えそうだなという印象を受けたので使ってみた。 speakerdeck.com github.com teipとは ひとことでは正確な表現をしにくいが,「フィールドやバイトオフセット,正規表現…

サクサク年表君開発日記(CSRFトークン編)

先日に引き続きサクサク年表君(仮)の開発を進めます。前回はこちら。 blog.3qe.us Webサービスのセキュリティを支える技術としてCSRFトークン(一般的にはワンタイムトークンと言う?)というものがあります。CSRFを対策するためのトークンです。 Webサー…

DockerでNginx動かしてたら全然locationディレクティブが効かない件とその解決

2時間くらいウンウン唸るはめになったのでメモ。 tl;dr DockerでNginxを使う場合はdefault.confを無視するな 大抵の場合において不要なのでincludeディレクティブを削除しろ シチュエーション TypeScript開発のために,Dockerのnginxオフィシャルイメージで…

Yubikeyでファイル暗号化(案)

できたらいいなというメモです。 エンジニアは暗号化ZIPファイルのパスワードをメールで教えるようなしぐさをバカにするわけですが,結局公開鍵暗号を普及させることもできていないわけです。 Yubikeyという便利なトークンがあるので,これとPINがあればファ…

サクサク年表君開発日記(フロントエンド環境構築編)

TypeScriptが動くようになった blog.3qe.us 先日からの作業により,必要最低限のバックエンドの機能が出来た。とはいえ年表の作成UIはデバッグ用途でしかなく,到底実用には堪えない。表示だけがいちおうまともにできるようになった,という状態だ。 そうい…

サクサク年表君開発日記

年表を作るサービスを書いている。 年表作れるツールって無いなと思ったので勉強も兼ねてサクサク年表君を作っています pic.twitter.com/LL44tRALzc— уйндймелт (@windymelt) 2020年5月29日 自分で作っておきながら言うのもなんだけど,めっちゃ便利だな pic…

Scalaで型パラメータ付きクラス(トレイト)と抽象型付きクラス(トレイト)復習したところ全称型と存在型に出会った

だいたい同じことができる(ような気がする)別々の2つの言語機能についてよくわかっていないので書く。 // 筆者は型初心者。 型パラメータ traitには型パラメータを設けることができる。いわゆるジェネリクスというやつである。 trait Plus[A] { def plus(a…

emacsにevil-surround-mode導入した

EmadsのEvilで使えるプラグイン,evil-surround-modeを入れた。 github.com このプラグインは,なにかをカッコなどで括る操作のショートカットを提供する。 基本操作 (normal mode) ys<word object><char> -- 文字列を囲う cs<char1><char2> -- 囲っている文字を書き換える ds<char> -- 囲っている文</char></char2></char1></char></word>…

Common Lispで変数名に使える文字が自由すぎる

おおざっぱなタイトルすぎる。 Common LispやSchemeといったLisp族はきわめて構文の構造が簡素である,といったことはわざわざ説明の必要もないでしょう。リストとして式のASTを表現するわけです。 (defun foo (bar) (+ foo bar)) ; あらゆる構文がリスト 構…

バ美肉した

カスタムキャストを手でパラメータ移行した(エクスポート機能がないので) iPadでカスタムキャストを動かす AirPlayでWindows/Macに転送する(LonelyScreenというソフトで受信できる) OBSで仮想カメラを動かす するとバ美肉できる。これでリモートワーク乗り切…

最近のはてブが怖い

さいきんみんな殺気立っているのか,正しさに敏感になっているのか,ちょっとしたことでプチ炎上みたいになって,びっくりした筆者が記事を消してしまう,というのをよく見ている。 b.hatena.ne.jp インターネット,そのへんの路上で喋っているようなものだ…

WEB+DB PRESS Vol.116『Perl Hackers Hub』に寄稿しました #wdpress #perl

宣伝です。 買おう 2020-04-24 (金) に発売予定となっているWEB+DB PRESS Vol.116に寄稿いたしました!!!!!!!!!! 『Perl Hackers Hub』という連載にて、 『GitHub ActionsとAmazon ECSを使ったDockerアプリケーションの自動デプロイ』という記事で…

その気にさせる / 落ちこぼれ脱出テクニック

先日ネットで、「どうしたら子供の知力が伸びますか」という問いに対して、「子供が選んだ好きな本を読ませてあげてください」という答えがあるのを見た。 記憶が曖昧なので正確な内容ではないかもしれないが、まず好きな本を読むことで文章を読む訓練を積み…

『エラスティックリーダーシップ』読んでコミットメント言語について学んだ

id:hitode909におすすめされたので読んだ。リーダーであるエンジニアのための本だが、リーダーでない自分にも学ぶべき点を見付けることができた。 この本は「チームリーダーの仕事は何か?」を説明する本だ。 大原則として、リーダーの仕事は、「メンバーの…

GraphVizをECSでHTTPサービス化して社内どこからでも使えるようにした話

グラフ作成ツールであるGraphvizを社内でHTTPサービス化し、どこからでも使えるようにした話です。 こういう感じで使えます。 $ curl -X POST http://graphviz.ほげほげ.example.com/ -d 'digraph { foo -> bar -> buzz; }' https://ほげほげふがふが.amazon…

『計画の科学』を読んでPERT図について学んだ / PERT図を出せるツールを作成した

id:hitode909におすすめされてはいたものの読んでなかったので、休日を使って読むことにしたのが『計画の科学』である。技術と読書の贅沢二本立て。 成果物 成果物1 あたまがよくなりました 成果物2 PERT図(をGraphVizで出力するためのDOTドキュメント)を出…

Pull Requestのフォーマットにビジネス文書のフォーマットを採用しようとしたが,失敗した話

かつて,僕が所属しているチームではPull Request(以下PR)のフォーマット,特に「どうして変更するのか」「どう変更したのか」といった経緯などの要素があまり充実していなかった。このためエンジニアのみならずデザイナーやプランナーも含めたチーム内の意…

Githubのブロックアイコンを回転させる

Githubのブロックアイコン,つまり赤いバッテンのアイコンを回転させたくなることはありませんか。まああると思うんですけど, こちら回転させたものになります。 .completeness-indicator-error { animation: rotate1 1s linear infinite; } @keyframes rot…

やってい気!!!!!!!

入社前ぼく「プログラミング完全に理解した」入社後ぼく「プログラミングなんもわかんねえ」今ぼく「プログラミングチョットワカル……」— メルコフ (@windymelt) 2020年2月19日 「おれはプログラミングの専門家だ!!」という自意識でいいのかずっと悩んでい…

stefanzweifel/git-auto-commit-action@v3.0.0ではuntracked fileがあるときエラー終了する

stefanzweifel/git-auto-commit-action@v3.0.0使ったメモ。 なにこれ github.com これはユーザが提供しているGithub Actionで,Github Actions Workflowの中でファイルが変更された場合,そのファイルをコミット&&プッシュしてくれるという便利なやつで, 社…

エラー処理むずかしい

設計やってたら,設計ミスってて,というか設計の筋が悪かったらしく,テストも書きにくいし,修正も難しくて全然通らなかったけど,同僚と会話しつつ設計を見直したら一瞬でテスト通るようになって,示唆的で学びがある一日だった。 エラー処理,Goとかの世…

TypeScriptのネストしたオブジェクトの内側の型を書き換える

あるオブジェクトのこのフィールドを書き換えたいことあるでしょ。 type A: { x: X // => Yにしたい!!! } まあこういうときはA2 extends Aみたいなのを宣言するか,まあいろいろやりようはあると思うんですが,これがネストしてたりするわけですよ。5重とか…

JSON Schema 継承 プロパティ 上書き 方法

ない It is important to note that the schemas listed in an allOf, anyOf or oneOf array know nothing of one another. While it might be surprising, allOf can not be used to “extend” a schema to add more details to it in the sense of object-o…

JSON Schemaメモ: subtypeのoneOfについて

JSON Schemaには,oneOfという便利な構文が用意されている。これは,与えられたスキーマのうちどれか1つだけがvalidなときvalidとする構文だ。 さて,そのoneOfの挙動で困ったのでメモする。具体的には,オブジェクト型Aと,別のオブジェクト型B,そしてAとB…

TypeScriptのUnion / Intersection Typesで遊んだ

(筆者は型入門者ですので,いい加減な事を書いていたらご指摘ください) ★追記: intersection typeとunion typeが逆だったので直した。 ★追記2: susisuくんにいいこと教えてもらったので追記した。 Intersection Types TypeScriptの型,とくにIntersection Ty…

awsvpcとdocker-composeメモ

awsvpcまわりのECSのネットワークの挙動がdocker-composeと違っていて困って調べたので今後のためにメモしておきます。 docker-compose service単位でbridgeが作成される bridgeはL2レイヤ bridgeがたくさん生えるが,docker for macではVMの中にbridgeが生…

貴様!この記事の筆者をフォローしてください!(しなさい)