TaPL読書録 #10

前回: hkdnet.hatenablog.com 番号がやたらとんでるのは、勉強会はつつがなく開催されていたのですが僕が書くのをめんどくさがっていたら書かれなかったという回がたくさんあるからです。 今回は chap13最初-13.3まで。勉強会の slack があるのですが、TaPL…

オフラインリアルタイムどう書く E29 の誤回答 (Ruby)

タイトルどおり爆死しました yhpg.doorkeeper.jp 問題 : http://nabetani.sakura.ne.jp/hena/orde30sumt/ 実装リンク集 : https://qiita.com/Nabetani/items/725e09cc5913a8569c04 以下考えたこと。 ざっくりいうと、最終行の必要な幅からどんどん上にいくに…

gowrtr で名前付き戻り値を扱う

先日リリースされた gowrtr が非常に便利でめちゃくちゃ助かってます。buf に自分で fmt.Fprintf とかしてたのが懐かしいです。 お気に入りポイントは、immutable なつくりになっているところと、goimports とかをかけた状態で出力できるところです。マジで…

gocode での補完をやめるが vim-go は使う

どうも vim 界隈でも lsp の機運が高まっており gocode ではなく golsp などを使うことを推奨されているっぽい。 一方で今はもうすでに vim-go に手が馴染んでいるわけだが、と思って腰が重かったのだけど、補完部分だけを golsp にすることができた(気がす…

低レイヤを知りたい人のための Cコンパイラを Rust で作っている

hkdnet.hatenablog.com ↑の続きというわけで Rust 版を作っている github.com Rust 化して気づいたのは Vec なる tokens を consume していくような形にすると毎回食べ終わった Vec を返す必要がありそこそこだるいということだった。これは Vec は固定的な…

『低レイヤを知りたい人のための Cコンパイラ作成入門』感想

低レイヤを知りたい人のための Cコンパイラ作成入門 インターネット上で公開されている範囲については実装が終わりました。 github.com 内容について 非常によかったです。わかりやすかったです。僕は技術書の場合、だいたい冒頭だけ読んで、実装してみて、…

signal.Notify したチャンネルを close すると死ぬ(可能性がある)

TL; DR signal.Stop しよう https://golang.org/pkg/os/signal/#Stop 検証 ダメな例 package main import ( "fmt" "os" "os/signal" "syscall" "time" ) func main() { c := make(chan os.Signal, 1) signal.Notify(c, syscall.SIGINT, syscall.SIGTERM) clo…

オフラインリアルタイムどう書く E29 の回答 (Golang)

yhpg.doorkeeper.jp 問題 : http://nabetani.sakura.ne.jp/hena/orde29unes/ 実装リンク集 : https://qiita.com/Nabetani/items/f2db9b916c0a301b744f 勝ちました。珍しく Golang で。 なんかかっこいいやり方あんのかなーと思ったけど、1文字ずつ素直に読ん…

Rails で全部のモデルについて何かの処理をしたい

eager_load = true にした上で ↓ のスクリプトを bundle exec rails r する ar_classes = [] ObjectSpace.each_object do |obj| next if obj.class.name.to_s != 'Class' if obj.ancestors.include?(ActiveRecord::Base) && obj != ActiveRecord::Base ar_cl…

読了: 『ドラゴンクエストXを支える技術ーー 大規模オンラインRPGの舞台裏』

読み終えました。ざっと俯瞰する感じで面白かった。とても深いところがあったりとかめっちゃ参考になる〜みたいな本ではないです。タイトルどおり、まさに舞台裏を教えてくれる本という感想でした。 自分のバックグラウンドとしてはweb系の業務システムをや…

macOS Mojave + nasm の Hello world

nasm の Hello world 記事はそこそこあるもののコピペで動かなかったのでメモ。 TL;DR エントリポイントは start ではなくて _main という名前にしておく ld コマンドに -lSystem と -macosx_version_min 10.13 を指定しておく 前提 macOS Mojave 10.14.1 un…

オフラインリアルタイムどう書くE28の実装例 ( Ruby )

オフラインリアルタイムどう書くE28の問題「増築の果ての隣室」の実装例を、Ruby で。 問題 : http://nabetani.sakura.ne.jp/hena/orde28sqst/ 実装リンク集 : https://qiita.com/Nabetani/items/4e3fac2746ca05a93165 イベント : https://yhpg.doorkeeper.j…

読了: 『Go言語による並行処理』

読みました。ちょっと駆け足気味だけど。 全体的に良書でこういったことが知りたかったんだということが書いてあってよかったです。一方で悪い点もほんのちょっとありました。先に悪いと思っている点について書いておこうと思います。 悪かったと思った点 ま…

go のパッケージで特定の型のメンバをもった構造体が定義されていないことを確認したい

モチベ swagger 定義から go client を生成するときに、 type: "number" はデフォルトでは float32 型として定義される。これは type: "number", format: "double" とすることにより float64 型に変更可能である。 該当プロジェクトでは精度的な観点から flo…

Ruby でリファクタリングをした際にテスト要否を判断したい

TL; DR rubocop の自動修正とかが正しいのか不安になる Ruby なら ISeq に差分があるか調べればよい line number, column number 問題は本体に手をいれておけばある程度乗り越えられる 前提 tech-blog.monotaro.com qiita.com $ ruby -v ruby 2.5.1p57 (2018…

オフラインリアルタイムどう書く E27 の解答例

問題 : http://nabetani.sakura.ne.jp/hena/orde27cardgame/ 実装リンク集 : https://qiita.com/Nabetani/items/cdc102d186faaf542574 久々に勝ちました。 割と素直な実装です。計算量的に大丈夫かかなり不安だったけど結構すぐだった。 8枚のうち、ストーリ…

TaPL読書録 #6

前回: hkdnet.hatenablog.com 今回は7章、8章。 7章は実装章である。個人的には小ステップの実装をするところまでで終わり。大ステップには変換しなかった。もうひとり書いてきた人のと小ステップ・大ステップでの差異をかるく比較して終わり。実装したのは2…

読了: Clean Architecture 達人に学ぶソフトウェアの構造と設計

『Clean Architecture 達人に学ぶソフトウェアの構造と設計』を読み終えたので感想です。 なにか新しいことが書いているというわけではなく、ちゃんと依存関係について考えようねという本だと捉えている。ソフトウェア設計の原則を、クラスなどの細かい粒度…

Rails におけるパフォーマンス検証パターン: action 抜けた後が遅いケース

TL; DR アクション抜けたあとは action の callback, rendering, rack middleware の世界 おもそうなものを特定して抜こう bullet は重いぞ 事象 新機能開発中に、大量データ突っ込むか〜と思って突っ込んで開いたらまあ全然返ってこない。 はあ、まあそうい…

オフラインリアルタイムどう書くE27の参考問題の実装例(Rust)

オフラインリアルタイムどう書くE27の参考問題「灯りと鏡」の実装例です。オフサイトだし Rust やるかあとおもって書きました。 問題 : http://nabetani.sakura.ne.jp/hena/orde27ligmir/ 実装リンク集 : https://qiita.com/Nabetani/items/0b2f459ec128c899…

オフラインリアルタイムどう書く E26 の実装例(Ruby)

問題 : https://cedretaber.github.io/doukaku/e26/ 実装リンク集 : https://qiita.com/Nabetani/items/0bcabb80bdcbc9b2ff52 負けました。 とりあえず当日中に書いたのはこんなの。 github.com 縦n列目については n + 1 列目にあるやつをうごかせば揃うなー…

WIP: ast でメソッドコールを探すやつを作り始めました + designing data-intensive application を読んでいます

本日は2本立てでお送りします(特にネタがないので小ネタというか終わってないネタを2つ合わせて記事にしとくか……という記事です。 ast でメソッドコールを探すやつを作り始めました ほしくない?と思って作っています github.com 使い方は何かと言うとある特…

【PR】転職ドラフトで転職してから1年が過ぎたので体験を振り返る

【こちらの記事は転職ドラフト体験談投稿キャンペーンに参加しています】 job-draft.jp もう転職して1年1ヶ月になりますね。1年も前なので転職ドラフト自体も変わってはいるのでしょうが、体験談を投稿するとアマギフをくれるというので頑張って書こうと思い…

「AESで暗号化した時の文字列の長さってどれくらい変わるの?」という質問に答えようと調べた話

経緯 「AESで暗号化した時の文字列の長さってどれくらい変わるんだろう、って調べているけど全然出てこねえ。実際試してみると1.5倍くらいっぽいが。」 という質問が友人から投げられてきたので調べました。 前提 AES256 平文は 99 文字 調査ログ padding …

icfp pc 2018の問題を解く、前準備を勧めている

だいたいタイトルどおりの話です。なおまだ問題全然解いてないです。 ICFP Programming Contest 2018 icfp pc はなんか数日間頑張って最適化とかの問題を解いてスコアを競うやつです。今回のはざっくりいうと3Dプリンタの最適化問題で、指定の座標を塗りつぶ…

trick2015 ko1さんの1つ目のやつを読むやつ

前回に引き続き trick コードを読んだのを書きます、といっても実はこっちのほうが先だったのですが。最近これに関連するものを twitter で教えてもらったので書きます。 前回はこちら hkdnet.hatenablog.com trick とは なんかよくわかんないけどすごい rub…

trick2015 yoshi-taka さんの作品を読むやつ

最近毎週水曜日に trick 読書会というのが開催されておりましてそこで読んだネタをブログ記事にしておくやつです。 先週読んだのはコレ。 trick2015/entry.rb at master · tric/trick2015 · GitHub とりあえずぱっとみ markdown ファイルにしか見えないやつ…

プレイドオフィス移転パーティー に参加してきました

plaidtech.connpass.com お邪魔してきました。 たぶん twitter でしか知らない人も何人かいた気がするのだけど、せっかくの機会なので plaid 社の人の話を中心に聞くぞ、ということでブース来訪がメインに据えました。記憶をたよりにどんな話を聞いたのか書…

『[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識』読了

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識 結構前に読了してたけど書いてなかったので書きます。 ざっというと、OS初心者向けの解説本ですね。タイトルから受ける印象とレベル感が合っていたと思います。 僕自身も適当に ubun…

RubyVM::AST を用いた Ruby 製 Ruby インタプリタを作っている話

Ruby では v2.6 から RubyVM::AST というのが入ることになりまして、Ruby ランタイム上から AST を取得できるようになります。この話は以前に書いたので省略しますが、ASTがとれるということはASTを解釈して実行することもできるわけです。やるしかないです…