shinji-u.com 2023 著作権. 不許複製 プライバシーポリシー
プログラミング出来る方法教える。 世の中「プログラミング言語」を説く本はごまんとあれど「プログラミング」を説く本やブログはあまりない。 いや実際に "ない" というのはかなり語弊があるかもしれない。 しかし、通常この種の説明している本に辿り着くまでには多くの時間が必要だ。 普通の人は、多くの間違った方法を試し、その都度試行錯誤を重ね、プログラミング経験を経ることよって、重要な概念を獲得するのだと思う。 例えば、「計算機プログラムの構造と解釈」や「実用 Common Lisp」、「コンピュータプログラミングの概念・技法・モデル」などの書籍は現実の問題に対し "プログラム" をどう書くかという問題に正面から取り組んでいる良書だ。 しかし、どれだけ”普通の”プログラマが上記のような書籍を読んでいるのだろうか。 そして、"普通のプログラマ" がプログラミングを学ぶ書籍として、それらは果たして適切と
基本編はRails定番のN+1問題。RailsのActiveRecordは便利だが、非効率なデータベースクエリを発生させることもある。そうならないようコーディングするにはどのようにすればいいかを考えるのがこの問題の趣旨。問題は以下のとおりだ。 ○設問 Forkwellの「読んだ・書いた」の一覧ページを高速化しましょう。 読んだ・書いたのページで、それぞれの記事の「読んだよ!」の総数や、記事についたコメントの総数も一緒に表示する、という仕様だったとします。 https://forkwell.com/publications 何も考えずにコードを書いたところ、以下のようになりました。 https://github.com/CodeIQ/forkwell/tree/master/question_1 しかし、このコードだとレコード数が増えれば増えるほど、SQLの発行数が増える、いわゆる『N+1問
読みにくい日記です。 一応今の会社はRubyやRailsの会社ってことで通ってると思うんだけど、自分はほとんどRails触ったことなかったので、何かと色々やる必要が出てくる。 今はJavaScriptのフロントのタスクがあんまりなくてRailsやった方がいい感じで、じゃあ勉強がてらやるかって突っ込んだらちょっとウゥムって感じになった。 問題 勉強側に振ってしまいすぎたのもあるんだけど、かなり生産性低かった自覚がある。結局1週間やって出せたのがやりかけのPullRequest一件で、しかもwork in progress で残りお願いします… みたいな感じになってしまった。 で、今回新しいことをやるにあたって問題になったのは、次の点だと思った。 新しい登場人物の多さによる認知負荷の高さ パフォーマンス要件の厳しさ 最初からプロダクション前提の品質要求 ペアプロしてくれる人の確保 実は今の会社
🗽 APIのサンプルTwitterを模倣したサンプル(?)が、公式のGitHubのREADMEに書かれていたので転載。 app/api/Twitter.rbを作成して、次のようなコードを書きます。 module Twitter class API < Grape::API # versionは:headerや、:paramなどもあり version 'v1', using: :path, vendor: 'twitter' format :json helpers do def current_user @current_user ||= User.authorize!(env) end def authenticate! error!('401 Unauthorized', 401) unless current_user end end resource :statuses do d
2011年07月26日13:29 Ruby Railsエンジニアならこれだけは知っておけっていう便利メソッド Object#presence と Object#try という便利なメソッドがあることをご存知ですか?この2つのメソッドはとっても便利なのでちょっと紹介してみます。 Object#presence メソッド これは以下のような定義となっています。 def presence self if present? end present? メソッドというのはみんな大好き blank? の反対のメソッド (!blank?) です。 つまり、nil, false, [](空配列), {}(空ハッシュ), ""(空文字列), " "(半角スペースだけの文字列)であれば false、それ以外であれば true になります(blank? って半角スペースだけの文字列を true と判定するの知って
select ... for update; select ... lock in share mode; の違いがよくわからなかった。 データを更新する時に必要なロックは、for update データを参照する時に必要なロックは、share mode と体感的に理解できるのだが、どちらのロックを取ったときも、他の誰もデータを更新、削除できない。 また、どちらのロックも、(for update していたら、他から参照できないのかと思いきや)他の誰からも参照は可能。 ん?となると、この2つのロック、何がどう違うの?? その答えは ここ に書いてあった。(リンク先はPostgresだが、MySQLでも同じこと) 共有ロックとは、排他ロック(更新、削除、FOR UPDATE)をブロックする/される一方、共有ロック同士では互いにブロックしないというものです。 なるほど、share mode はセマ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く