経験は何よりも饒舌

10年後に真価を発揮するかもしれないブログ 

ミクシィのインターンで みてね の開発に幅広く関われました

https://mixigroup-recruit.mixi.co.jp/recruitment-category/internship/5071/ に8/2~8/27の約1ヶ月間参加しました。 選考は、インフラ/SRE領域に普段あまり触れていなかったため、その枠にチェックを入れて書類を提出しました。 3回の面接を通じて、今まで…

『Go言語で作るインタプリタ』をTypeScriptで実装する(後編)

前編を書いたのが約1年前なので1年間かかってしまった。wafuwafu13.hatenadiary.comgithub.com ずっとやってたわけではなく、前回は2章までできたらいいかって感じで終わらせて、1年越しに再開してみた。 Commits · wafuwafu13/Interpreter-made-in-TypeScri…

Swift入門した

ReactNativeでアプリをリリースしたことはあるけど、Swiftは全く触ったことがなかった。 動機は夏に使いそうだからと、なんやかんやモバイル主体のプロダクトが多い気がするから。 Swift, Xcodeでの開発に慣れる まずは手を動かしてみようと思って、Udemyの…

インフラに関してやってきたこと/やりたいこと(2021年7月)

読んだ本 キタミ式基本情報技術者 WEB+DB 大規模サービス技術入門 WEB+DB 24時間365日 サーバ/インフラを支える技術 WEB+DB nginx実践入門 Real World HTTP 歴史とコードに学ぶインターネットをウェブ技術 Linuxで動かしながら学ぶ TCP/IP ネットワーク入門 …

graphql-validation-complexity から学ぶGraphQLのAST走査

オライリーの『初めてのGraphQL』の「7.3.4 クエリの複雑さ制限」で、graphql-validation-complexity というライブラリが紹介されていて、面白そうだったのでのぞいてみた。github.comgraphql-validation-complexityは、クエリに対して複雑度を計算し、その…

Go の main goroutine が exit する場所

Go

ascii.jp を進めているメモ。 package main import "fmt" func main() { fmt.Println("Hello World!") } をVSCodeでデバッグして最後にexitするのはここ。go/src/runtime/proc.go#L277 go/proc.go at 912f0750472dd4f674b69ca1616bfaf377af1805 · golang/go …

Class::Enumemon の中身をちょっとのぞいてみる

使う機会があってRailsのActive Recordっぽくて便利だと思ったけど、中身があまり想像できなかったのでちょっとだけ調べてみた。metacpan.org package IdolType; use Class::Enumemon ( values => 1, getter => 1, indexer => { by_id => 'id', from_type =>…

mackerel-plugin-accesslogを中心にMackerelのコードを読んだ

グラフのラベル名をいい感じにする簡単なPRを投げた時のメモ。[plugin-aws-cloudfront]Replace label name of graph by wafuwafu13 · Pull Request #766 · mackerelio/mackerel-agent-plugins · GitHub 公式ブログを読めばなんとなく機能的な部分はわかった…

はじめてOSSに新機能追加した

owという、Lots of built-in validationsなOSSに、BigIntのバリデーションを追加した。github.com github.comowに関しては2月頃に3回、型整備のPRを出してマージされていたので、コードには少し馴染みがあった。 https://wafuwafu13.hateblo.jp/#sindresorhu…

技術書積読消化購読メモ

4月5月 読んだ Docker Kubernetes実践コンテナ開発入門(Kubernetesから) Amazon Web Services基礎からのネットワーク&サーバー構築 Kubernetes on AWS TCP/IPネットワーク入門 Real World HTTP 入門監視 Mackerelサーバ監視入門 DNSがよくわかる教科書 マイ…

axiosの内部構造を理解してadapterの仕組みを解明する

axiosのadapterを使う機会があり、仕組みが気になったのでメモしておく。 github.comadapterで検索をかけると、lib/core/dispatchRequest.jsの51行目の記述が目についた。 axios/dispatchRequest.js at 7821ed20892f478ca6aea929559bd02ffcc8b063 · axios/ax…

AWA株式会社でのインターンでインフラに強くなりました

株式会社サイバーエージェントの全職種向け 実践就業型インターン【オンライン参加可】に3月2日~3月31日の1ヶ月間参加し、インフラに強くなりました(過去の自分比)。 参加するまで サイバーエージェントは魅力的な会社ですし、人生で1回は行っておきたいとい…

DefinitelyTyped で Ace の型を大幅に改善した

前のこの記事では、Definitely Typedから型をインストールして適用する際に、実際にレポジトリまで見に行かないといけなかった、ということを書いた。wafuwafu13.hatenadiary.com今回は、PRを出してマージされたので、そのことを書く。github.comPRタイトル…

Jest のモック関数を整理する

npqという、npmやyarnでインストールする際に安全確認をするライブラリがあり、そこで使われているaxiosをnode-fetchで代替するというissueがあったのでやってみた。github.com github.com置き換えるだけの簡単な作業かと思っていたが、テストを通すのが難し…

Go の Short variable declarations と Named return values

Go

go-mp4という、mp4ファイルをパースしてくれるGoで書かれたライブラリがあった。 Goに慣れるため、golintのカバレッジを上げるPRを出してみた。github.com自分の書いたコードで、:=ではno new variables on left side of :=というエラーが出たけれど、代わり…

エラーを報告する際に意識していること

基本的には質問をせずに粘ってしまうタイプなのだが、環境構築の段階でのエラーや、人生で初見のエラーなどは経験上、粘っても何も得られないので、即質問するようにしている。そこで意識していることは、 何が原因で何ができなかったのかを記す 自分が打っ…

qrcode.react とスナップショットテストの相性が最高すぎた

qrcode.reactは、その名の通りQRコードを生成してくれるReactコンポーネントだ。 github.comファイル構成はsrc/index.jsでゴリゴリ計算というか文字列を算出し、コンポーネントを返す構成だった。 テストがなかったので、テストを追加したかったのだが、何に…

npmから@typesを使う場合はDefinitelyTypedを見に行かないといけないことがある

Link Preview JSという、「allows you to extract information from a HTTP url/link (or parse a HTML document) and retrieve meta information such as title, description, images, videos, etc」なレポジトリがあった。github.comそこでは、cheerioとい…

自分のPRを見て思う、TableDrivenTestsの良さ

jdという、commandline utility and Go library for diffing and patching JSON valuesなライブラリにTableDrivenTestsを導入したので、その良さを主観的にまとめておこうと思う。github.comgithub.com まずは、実際にdiffの一部を見てみる。 https://github…

単純作業の効用は意外と大きい

owという、TypeScriptの型制限を拡張したOSSに何度かコミットして気づいたことは、単純作業は意外と効用が大きいということだ。 github.com具体的に何をしたかというと、typescript-eslintの、explicit-function-return-typeが無効になっていたのを、有効に…

Cypress で `blitz new` をテストしたい(が、できていない)

ことの発端は、最近よくBlitzを聞くようになり、GitHubを訪れると、good first issueが転がっていて、テストに関するものがあったので、Blitzを触ったことも、GraphQLやPrismaもあまり知らなかったけど、拾ってみた。このissueの内容は、blitz newの挙動をCy…

NTT Performance Tuning Contest の対策と反省と抱負

nttcom.connpass.com 今までISUCONのようなパフォーマンスチューニングのイベントには参加したことがなかったのですが、興味はありました。 23卒があつまっているSlackで参加したいとつぶやくと、一瞬で反応が返ってきてチームを組めることになり、@PANORAMA…

「関数型プログラミングの基礎」モナドを作るを理解する

wafuwafu13.hatenadiary.comと同じ本の、p.268~p.274あたりでつまずいたので、メモを残しておく。 コードはここにおいてある。 akimichi.github.ioモナドの機能は、「値にコンテキストを付加すること」、「コンテキストを付加したまま処理を合成すること」で…

2回生冬の読書事情

地元で3年半ぶりのバスケをして全身筋肉痛になったのと、ご時世的に母親の実家に帰れなかったこともあり、冬休みは読書に全振りをしていた。 冬休み中から冬休み明けにかけて読んだのは技術書8冊。 ちなみに全部紙。[24時間365日] サーバ/インフラを支える技…

GoでPythonのrandom.shuffle()を実装し、カイ二乗検定を用いたユニットテストをする

背景 Goでコントリビュートできそうなレポジトリを探していると、goshというレポジトリがあった。 これは、JavaScriptやPythonでの構文をGoで書く、というものだった。 面白そうだったので、Pythonのshuffleを実装し、PRを出そうと思った。 Pythonのshuffle…

数学3の教科書をSymPyで解く

自然言語処理に興味を持っている。 wafuwafu13.hatenadiary.comが、本を読んでいても数式が結構出てきてきついところがあった。 数1と数2はかろうじて履修していたが、数3からは全くわからず、∞とかがでてくると拒否反応を示すレベルだった。 だからまず数学…

「関数型プログラミングの基礎」代数的データ構造とパターンマッチを理解する

関数型プログラミングの基礎 JavaScriptを使って学ぶ作者:立川察理リックテレコムAmazonこの本で関数型プログラミングの基礎を押さえようとしたけれど、p140の「代数的データ構造とパターンマッチ」あたりから理解に苦しんだのでメモをとりながらじっくり進…

Released npm package 「react-p5-components」

Hi :) I released react-p5-components.GitHub github.comnpm www.npmjs.com Library features is that you can use p5.js in react without writing p5's code.It means this library generate p5.js Canvas depending on your settings.There are few type…

Reactのコードを読む(3)

前回はhello worldが描写されるところまでをみたので、今回はuseStateをみていこうと思う。wafuwafu13.hatenadiary.comまずは、useStateがどこで定義されているのかを確認する。 <html> <head> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> …</head></html>

Reactのコードを読む(2)

前回はReactDOMについてみたので、今回はrenderでhello worldが描写されるところまでみていこうと思う。wafuwafu13.hatenadiary.comまずは、ReactDom.renderを出力してみる。 <html> <head> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></head></html>