引っ越しました

k-tokitoh.github.io

texta.fm - 2. The Power of Constraints を聴いたぞ

podcasts.google.com メモ(きになったところだけ) composed_ofだとfreezeされる immutableなオブジェクトのデメリットはメモリ消費が多いこと これは処理系レベルで解決されるべき問題 コンテナ数をスケールアウトすることが容易になってきたので、1コンテ…

正規表現で直前/直後の文字をフィルタしたいときは行頭/行末の可能性を明示する

VS Codeで正規表現による検索をかけることがある。 きわめて初歩的ながら仕様を知らずに検索漏れが発生しそうになってしまったのでメモする。 たとえばいまcoolというメソッドの呼び出し箇所を調べていたとする。 /cool/だとこうだ。 cool # <= hit cool.str…

react-dndでドラッグアンドドロップ

HTML5のDrag and Drop APIを直接操作することも可能そうだが、ブラウザ間のinconsistencyで苦しむ羽目になりそうだ。 そこらへんをよしなに抽象化して差を吸収してくれるreact-dndというライブラリがあるということで触ってみた。 https://codesandbox.io/s/…

useMemoとかuseCallbackとか

そういえばこのhooksつかったことないなとおもって、どういうやつなのか調べて試してみた。 パフォーマンス改善系のhooksだったのだな。 useMemo useCallback

『Linuxのしくみ』読書メモ

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識作者:武内 覚発売日: 2018/02/23メディア: Kindle版 *1 ざっくり CPU/メモリ/ストレージデバイスという構成とか、プロセススケジューリングとかスワッピングとかのトピック自体は…

ActiveRecordでnew => build => save! するとどうなる

関連付けのあるモデルにおいて、親レコードをnew => 子レコードをbuild => 親レコードをsave! したときの挙動が複雑な気がしたのでメモ。 (理解力が不足しているだけかもしれない。) 検証環境: ActiveRecord 6.0.2.1 追記 さんざん書いてから気づいたのだ…

ERBで'<%='の前にある空白文字を取り除くシンプルな方法は用意されていない...のか?

リファレンス 基本形 > ERB.new("<%= :hoge %>").result # => "hoge" > ERB.new(" <%= :hoge %> \n").result # => " hoge \n" 後ろを消したい リファレンスによれば、trim_modeを"-"にした場合、「行末が-%>のとき改行を出力しない」。 > ERB.new("<%= :hoge…

デメテルの法則

「ドットがつながったらあかんで」とかいうやつ、くらいの認識しかなかったが整理できたのでメモ。 結論としては、「ドットがつながったらあかんで」ではなく、「ドットがつながったときは不要な依存をつくっちゃう場合があるから、ほんとにそれでいいかよく…

Promise

みんなPromiseさくっと理解してる気がするけどむずくないですか。 ようやくなんとなく見えたのでメモ。 Promise以前 XHRを考える。 const api = (url) => { const req = new XMLHttpRequest() req.open("GET", url) req.onload = () => { json = JSON.parse(…

クラス変数とインスタンス変数

職場で「クラス変数とクラスインスタンス変数の違い」が話題にあがっていて、以前理解したよな、と思いつつ咄嗟に整理して述べられないなと思ったので、思い出しつつまとめてみる。 基本的にはクラス変数とインスタンス変数というものがある。 まずサンプル…

DB設計なんじゃらほい

DB

[2019/02/17 追記] 下記の文章ではDB設計とドメインモデリングを混同しており、根本的な誤りを含んでいることに気づいた。 修正しておらず誤ったままだがメモとして残しておく。 DB設計ってのをほぼやったことがない。 概念設計/論理設計/物理設計などという…

Rspecでuse_transactional_fixturesはexampleのみにtransactionを張る

Rspecの基本的なことを知らなかったのでメモ。 rails_helper.rb RSpec.configure do |config| config.use_transactional_fixtures = true end 1つ1つのテストにtransactionを張って、テスト終了時に必ずrollbackしてくれる設定。 user_spec.rb require 'rail…

IOインスタンスの読み書きモード

Kernel.#openとIO.openはだいたい同じ。IOインスタンスを返す。 第二引数で指定する読み書きモードについてメモ。 各種モードの違い 読み込み可能 書き込み可能 開いた時点で内容を白紙にする 書き込み開始位置 r 1 0 0 - r+ 1 1 0 先頭 w 0 1 1 先頭 w+ 1 1…

Arrayのメソッドいろいろ

挙動がちょっとややこしいものや、「どうなんだっけ?」となりがちな点についてまとめてメモ。 Array#product Array#product(*array) -> array レシーバの配列と引数の配列から、それぞれの全要素を掛け合わせた一次元配列を返す。 main = [:meat, :fish] sa…

日時のフォーマット

都度調べればいいけど、最低限「日付は小文字、時間は大文字」ってイメージをもっとくとよさそう。DateとTimeでフォーマットは基本的に共通。 日付 d = Date.new(2020,12,31) # => #<Date: 2020-12-31 ((2459215j,0s,0n),+0s,2299161j)> d.strftime('%y') # => "20" d.strftime('%Y') # => "2020" d.strftime('%</date:>…

X進数の数値リテラルほか

リファレンスのなぞり書き。 X進数の数値リテラル 接頭辞をつけることで10進数以外の表記でリテラルを記述できる。 接頭辞と整合的でない入力が続いた場合はエラーを返す。 16進数 => 接頭辞0x 0x10 # => 16 0x1g # => SyntaxError 2進数 => 接頭辞0b 0b10 #…

ヒアドキュメント

リファレンスのなぞり書き。 基本文法 <<[(-|~)]["'`]識別子["'`] ... 識別子 <<[(-|~)] << ヒアドキュメント内の空白文字は全て文字列に含まれる。 終端の識別子は行頭にある必要がある。=インデントされていると識別子とみなされない。 string = <<EOS line1 line2 EOS => " line</eos>…

Nonblocking TCP Server

Socket(TCP)通信をかじったのでメモ。 first implementation サーバ。 require 'socket' server = TCPServer.new(4481) loop do connection = server.accept request = connection.read connection.write("request served: #{request}") connection.close en…

superをフックメソッドで代替すると良い、という話

下記書籍を読んでて学びがあったので、自分なりに整理してメモ。 オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方 要約 継承において、あるメソッドを呼んだら各サブクラスに共通の処理をしつつ、各サブクラス…

dependency inversion

gitでrevertしたら再revertが必要な例とその理由

git revertで注意すべきこと - Qiita こちらの記事を読んで、「何が起きるか」はわかったけど「なぜこうなるか」がすぐに分からなかったのでメモ。 具体例 以下の例を考える。 masterブランチからdevブランチを切った。 devブランチでb.txtを追加してコミッ…

DB正規化の注意点

DB設計について、「値Aって値Bから導出可能っぽいな!冗長だからDBには値Aだけもたせよう!」の危険性について考えた。 (前提)正規化のメリット 正規化=冗長性排除により、以下のメリットが得られる。 保守性の向上=更新時に1箇所だけ書き換えればOK 必要な…

なぜBigDecimalでは高い精度で10進数を扱えるのか

「Floatだと丸め誤差が発生するから10進数を扱う精度が低い」 「BigDecimalだと丸め誤差が発生しないから10進数を扱う精度が高い」 という話に触れたのだが、その理由がぱっと理解できなかったので、ちょっと整理して考えてみた。*1 *1:Rubyに限ったトピック…

AWS Lambdaではてなブログの記事をQiitaに自動転載した

コード first commit · k-tokitoh/sync_entries@b05ed9e · GitHub

インスタンス変数とかはselfに依存するという話

@varが何を指すかって、何を元に判断しているのだろうか。

x_evalしたときのコンテクスト(続)

前回x_evalメソッドでのコンテクストについて、selfとklassという側面からまとめた。*1 今回はローカル変数の状態という側面を加えて、x_eval/x_execメソッドでのコンテクストについておさらいする。 *1:https://tamani.hatenadiary.jp/entry/2019/08/04/135…

x_evalしたときのコンテクスト

コンテクスト 「コンテキストとはおおざっぱに言えばローカル変数の状態、self, klassから成る。」*1 *1:https://blog.yugui.jp/entry/547

evalことはじめ

eval osamu = 'tezuka osamu' # => "tezuka osamu" eval('osamu') # => "tezuka osamu"

StructとOpenStruct

似た名前だが意外と挙動が異なるな、と思ったのでメモ。