2020-01-01から1年間の記事一覧
以前のエントリで掲げた、最初の25問を解く目標を達成できた。最初の問題を解いてからちょうど10日での達成だった。これで全登録者のうち上位11.48%の進捗だという。まだまだ先は長いと知りつつも、十分すぎる達成感と自己肯定感を得られている。コラッツ数…
月が改まり、仕事も入った。時間の余裕は減る。しかし今までが暇すぎたのである。これからは気持ちを入れ替えて、メリハリをつけて勉強に取り組もうと思いを新たにしている。 で、そのためのテキストをいくつか用意したので、紹介する。 ■ キタミ式イラストI…
半年ぶりに人のためにはたらくことになった。と言っても、自分で行動を起こしてポジションをつかみ取ったわけではない。以前よりお世話になっていた縁で依頼してもらえただけで、ただただ運に恵まれただけだ。 もし声をかけてもらえていなかったら、きっとも…
map というデータ構造は連想配列にあたるものと単純に理解していた。unordered_map について追って知ることとなり、初めて map のキーが自動的にソートされることを知る。 #include <map> #include <unordered_map> int main() { std::map<int, int> mymap1; std::unordered_map<int, int> mymap2; in</int,></int,></unordered_map></map>…
昨日、一昨日と数学に関係するエントリが二日続いたのは、明らかにひとつの方針を指し示している。数学を学び直すこと、ひいては基礎を学び直すこと。これが今後のひとつの軸になるだろうと予感する。 学問的根拠がなくても仕事はできる、とする向きがあるの…
数の悪魔―算数・数学が楽しくなる12夜作者:ハンス・マグヌス エンツェンスベルガー発売日: 2000/04/01メディア: 単行本(ソフトカバー) あほな質問はやめろ。頭を悩ますことがすごいことなんだ。1 算数を啓蒙する児童書として評判がいいと聞き、読んだ。子…
projecteuler.net ご存知の向きも多いと思うが、 Project Euler は数学の問題をプログラミングで解いていくサービス。フィボナッチ数列の偶数項の和を求めたり、任意の整数の最大素因数を求めたりする。もっとも、これらは難度としては最低レベルとなる。進…
今月のエントリのうちめぼしいものを振り返りながら挙げていく。 Rails を絶対視しないこと “Rails is omakase” とか “The Rails Way” とかいうキャッチフレーズを盲信してしまう傾向を見つめ直して、少しずつそこから脱却しなければいけないと思い始めてい…
Hanami に触ってみたことを動機として、『クリーン・アーキテクチャ』を再読した。 たぶんに漏れず、例の同心円の図ばかり印象深く記憶していたが、改めて精読してみると、この図にはごく軽くしか触れられない。むしろ繰り返し主張され、議論の中心を占める…
昨日の記事で、 secure_compare は String#== とは異なり常に一定時間で処理が行われる、と書いた。 jnsato.hateblo.jp あらためて GitHub Developer から引用する。 Using a plain == operator is not advised. A method like secure_compare performs a "c…
Hanami と Sinatra の CSRF 対策のコードで、いずれも Rack::Utils.secure_compare という API を利用していることを発見した。何が secure なのだろうか? という思いがあり、読んでみた。 def secure_compare(a, b) return false unless a.bytesize == b.b…
素の HTML form では GET と POST リクエストしか送信できない。PUT, PATCH, DELETE のような HTTP メソッドをリクエストするには、サーバーサイドで適当に解釈してあげる必要がある。 例えば Rails の場合、 form_with ヘルパーで編集画面の form タグを生…
CSRF 対策がフレームワークでどう行われるかを読み比べていた。せっかくなので簡単にまとめることにする。 TL;DR 対応するクラス/モジュール 不正時の挙動 トークン Sinatra v2.0.8 Rack::Protection::AuthenticityToken [source] 403 base64 Rails v6.0.3 A…
Rails のちょっとした機能を検証するとする。そんなとき、まずはなにからやるか? 今日の僕自身はと言うと、 Dockerfile を作るところから始めていた...。 改めていうまでもないことだが、自戒を込めて書く。愚の骨頂であった。ほんのちょっとした検証にわざ…
いわゆる「何もしていないのに壊れた」という状況に陥った。 症状としては、 Hanami アプリのデプロイにおける rake assets:precompile タスクの実行時に、 uninitialized constant Bundler とはねつけられてしまう。スタックトレースによると ここ でコケて…
iOS の設定で Safari の Cookie 機能を無効化することができる。 support.apple.com 普段 Safari を使うことは多くないのでそう意識していなかったが、僕自身はこれを有効化していた。で、これを有効化していると、当然 Cookie を利用したセッション管理を利…
AWS の個人アカウントに監査の仕組みを導入している。そのきっかけについては以前に書いた。 jnsato.hateblo.jp CIS AWS Foundations Benchmark を導入し、対応可能なセキュリティ対策を一通り有効化している。違反があれば AWS Chatbot 経由で Slack に通知…
AtCoderの過去問より、この問題を解いていた。 atcoder.jp やりたいこと 任意の数列を、空の配列の先頭と末尾に交互に追加していきたい。Ruby であれば、これは Array#unshift と Array#push を使って簡単に書ける。例えばこう。 n = 10 ans = [] 1.upto(n) …
ActiveSupport はきめ細かく require できる ということを学んだのが昨日。とはいえ、それでもやはりためらいはある。 次に示すのは ActiveSupport が依存するモジュールである。 % gem dep activesupport Gem activesupport-6.0.3.1 concurrent-ruby (~> 1.…
hanami を利用した開発への所感 にて、こう書いた。 タイムスタンプを「○日前」と文字列に変換するだけのために、 ActiveSupport を丸ごと取り込むのは、理にかなった判断とは言えまい。 断定してしまっているが、実はよく調べないまま印象で語ってしまって…
DateTime クラスのドキュメントを読んでいた。 ほんの小さな好奇心で調べ始めたものだったが、世界文学のふたりの巨匠の命日を引き合いに出して暦の問題を鮮やかに示す文章に興奮させられて、つい読み込んでしまった。それはこんな例である。 shakespeare = …
Hanami で小さな開発をやってみた。 jnsato.hateblo.jp 単機能のウェブページに過ぎず、 Rails であれば1日でできただろうと思う。 hanami の機能や API を追いかけながらの実装だったので、やや時間はかかった。とはいえ、それでもファースト・コミットから…
1週間ばかり、 hanami による開発に取り組んでいた。動機付けを描写したのは以下のエントリ。 jnsato.hateblo.jp jnsato.hateblo.jp そして、作ってみたものがこちら。 heroku の無料 dyno にデプロイしている。 hanami-news.herokuapp.com ブックマーク管理…
sqlite を pg アダプタに付け替えていた。一通り設定を終えて、開発サーバーを立ててみると、こんなエラーが発生した。Ruby 2.7 + hanami 1.3.3 + pg 1.2.3 で再現するはず。 undefined method `new' for class `#<Class:BigDecimal>' bigdecimal とは標準ライブラリで、 Ruby </class:bigdecimal>…
hanami new コマンドは application_layout_spec.rb を自動生成し、レイアウトクラスの単体テストのボイラープレートを用意してくれる。しかし実はこれは private API に依存しているとのこと。 github.com 具体的なエラー発生ケースはこう。まずこれが自動…
hanami にセッション管理を導入しようとしている。デフォルトでは Rack::Session::Cookie を使って cookie にセッションキーを格納する ことになっている。ちょうど先日、 Real World HTTP を読んで cookie の仕組みを復習したところだったので、 Rack がそ…
認証系の機能を持った gem を調べていた。見ていると多くの gem がパスワードのハッシュ化を BCrypt で実装している。きっと BCrypt ならば安心という一般的な合意があるのだろうとだけ推測して、あまり深入りはしなかった。 これだけであればただのつぶやき…
この記事を読んだ。 gigaom.com 要約する。 インド洋チャゴス諸島。モーリシャスの西に位置し、アフリカから奴隷を入植させて発展した島々は、奴隷解放を経て、1960年代までにはココナッツ農園を軸とした経済と、それに携わる島民の暮らしがあった。 冷戦構…
表題通り、公式ガイドが提供しているハンズオンをやってみた。 guides.hanamirb.org 書かれていることをひととおりなぞったに過ぎなく、批評的に何かを語ることはまだできないけれど、アークテクチャの単純明快な美しさには心を揺さぶられた。明確な責務を与…
自分の軸となる技術としての Ruby をさらに磨きたいという気持ちが強まっている。なにせ時間だけはあるから、これまでなかなか取り組めていなかったテーマに腰を据えて組み合ってみようかと思っている。 で、やりたいこともそれはそれでいくつかあるのだが、…