閲覧履歴を検索した文字列でまとめて削除するBetter History
RubyKaigiの動画が更に追加されてました
Keynotesの動画が追加されて、こんなに早く36本もの動画が追加されていました。 対応していただいた関係者にはとても感謝の気持ちです。
しばらくは楽しみに動画を見ようかと思います(^^)
スライドをまとめている記事にもリンクを反映しておきます。
「プロを目指す人のためのRuby入門」を読んでみて
前置き
「プロを目指す人のためのRuby入門」のレビューを書いてなかったので記載しておきます。
先日行ってきたRubyKaigiの中でも話題になっていた本ですね。
💎第2回Ruby選抜総選挙 結果発表👑
— スタディプラス株式会社 (@studyplusinc) 2019年4月20日
第1位 パーフェクトRuby 161票
第2位 プロを目指す人のためのRuby入門 144票
第3位 たのしいRuby 115票
第5位 ゼロからわかるRuby超入門 54票
第6位 Ruby逆引きハンドブック 22票
💚番外編🧡
RubyとRailsの学習ガイド 4票
マンガでわかるRuby 12票#Rubykaigi2019 pic.twitter.com/HggvclYZ5q
1位になっているパーフェクトRubyも読んだことないんですよね。 一度は見ておかないと。
こちらでも触れていたように、読んでいて、読了したのですが、感想かけていなかったので、記載しておきます。
書評
目次から確認してみると章立てがとても細やかで驚かされます。
とても几帳面感が出てますね。
他にもあるRuby本と比べて大きく違ってる点はテストと正規表現ですかね。
基礎的なRubyの仕組みを本当に驚くほど丁寧に説明してくれています。
個人的には8章の”モジュールを理解する” 10章の”yieldとProcを理解する” が良い復習になりました。
また、正規表現の説明が多く取り扱われていたのが少し驚きでした。これはプロを目指すという意味合いで追加されてるのかもしれないです。
若干残念なのがデバッグに関してですが、pryなどを使ってしまうとgemの領域になってしまうので本の主旨からも少しずれてしまうんですかね。 実際にRuby(irb)だけでデバッグする場合どのような手段が有効なのか。私はpryに頼り過ぎてるのかもしれないなと思い知らされました。
まとめ
Rubyに関して今まで読んだ本の中では一番いい印象です。
初心者もそうですし、既にRubyを使っている人にもお薦めできそうですし、他の言語からRubyを学びたい人にはとても良い本ではないでしょうか。
まだ読んでない方は是非読んでみてください。
参考文献
RubyKaigi 2019 の 動画が一部公開されてました
早くもRubyKaigi 2019の動画のKeynotesが公開されていました。
迅速な対応とてもありがたいです。
スライドをまとめているページにもリンクを作っておきます。
RubyKaigi 2019 の スライドまとめてみた
明日から令和ですね。 ブログ更新できていなかったので先日参加したRubyKaigi 2019のスライドのリンクをまとめてみました。 コードを書く意欲がそそられるものが多く実際に参加できてとても光栄でした。
久々に福岡にいったのですが、随分と整備されていて移動するのが快適になっていますね。 特に空港からの移動が非常にスムーズな印象です。 また個人的に遊びに行こうかとおもいます。
Ruby Kaigi 2019ですが、4/19 〜 21 までの3日間でとても多くのセッションが用意されていていました。 4つのセッションが並行して実施されていたので、聞けないセッションもあったので少し残念ではありましたが、後日動画などもこうかいされることを期待しつつ、公開されているスライドをまとめてみました。
1日目
speakers | title | slide | movie | |
---|---|---|---|---|
Matz | @yukihiro_matz | The Year of Concurrency | - | ○ |
Matz & the Ruby Core Team | - | Ruby 3 Progress Report | ○ | ○ |
Takashi Kokubun | @k0kubun | Performance Improvement of Ruby 2.7 JIT in Real World | ○ | ○ |
Maciej Mensfeld | @maciejmensfeld | How to take over a Ruby gem | ○ | ○ |
ITOYANAGI Sakura | @aycabta | Terminal Editors For Ruby Core Toolchain | ○ | ○ |
ota42y | @ota42y | How to use OpenAPI3 for API developer | ○ | ○ |
Koichi Sasada | @_ko1 | Write a Ruby interpreter in Ruby for Ruby 3 | ○ | ○ |
Nate Berkopec | @nateberkopec | Determining Ruby Process Counts: Theory and Practice | ○ | ○ |
Giovanni Sakti | @giosakti | Pathfinder - Building a Container Platform in Ruby Ecosystem | ○ | ○ |
joker1007 | @joker1007 | Pragmatic Monadic Programing in Ruby | ○ | ○ |
Yusuke Endoh | @mametter | A Type-level Ruby Interpreter for Testing and Understanding | ○ | ○ |
Alexander Ivanov Zahary Karadjov | @alehander42 @zah | Compiling Ruby to idiomatic code in static languages | ○ | |
Genadi Samokovarov | @gsamokovarov | Writing Debuggers in Plain Ruby! Fact or fiction? | ○ | ○ |
Yoh Osaki | @youchan | Ruby for NLP | ○ | ○ |
Samuel Williams | @ioquatix | Fibers Are the Right Solution | ○ | ○ |
Matthew Draper | @_matthewd | A Bundle of Joy: Rewriting for Performance | ○ | ○ |
Paolo Perrotta | @nusco | A Deep Learning Adventure | ○ | |
Shizuo Fujita | @watson1978 | RMagick, migrate to ImageMagick 7 | ○ | ○ |
Kazuki Tsujimoto | @k_tsj | Pattern matching - New feature in Ruby 2.7 | ○ | ○ |
Alex Wood | @alexwwood | Building Serverless Applications in Ruby with AWS Lambda | ○ | ○ |
Shawnee Gao | @gao_shawnee | GraphQL Migration: A Proper Use Case for Metaprogramming? | ○ | ○ |
Aaron Patterson | @tenderlove | Compacting GC for MRI v2 | ○ | ○ |
2日目
speakers | title | slide | movie | |
---|---|---|---|---|
nagachika | @nagachika | All bugfixes are incompatibilities | ○ | ○ |
Sam Phippen | @samphippen | How RSpec works | ○ | ○ |
Noah Gibbs | @codefolio | Six Years of Ruby Performance: A History | ○ | ○ |
Hitoshi HASUMI | @hasumikin | Practical mruby/c firmware development with CRuby | ○ | ○ |
Kouhei Sutou Kazuma Furuhashi | @ktou @284km | Better CSV processing with Ruby 2.6 | ○ | ○ |
Hiromasa Ishii | @Hir0_IC | intimate Chat with Matz and mruby developers about mruby | ○ | ○ |
Xavier Noria | @fxn | Zeitwerk: A new code loader | ○ | ○ |
Andrey Novikov | @Envek | Yabeda: Monitoring monogatari | ○ | ○ |
Yutaka HARA | @yhara | Ovto: Frontend web framework for Rubyists | ○ | ○ |
Jake Zimmerman Paul Tarjan | @jez @ptarjan | State of Sorbet: A Type Checker for Ruby | ○ | ○ |
Michael Grosser | @grosser | Actionable Code Coverage | ○ | ○ |
RubyData Workshop | ○ | ○ | ||
Shugo Maeda | @shugomaeda | Terminal curses | ○ | ○ |
Vladimir Makarov | @vnmakarov | A light weight JIT compiler project for CRuby | ○ | ○ |
Amir Rajan | @amirrajan | Building a game for the Nintendo Switch using Ruby | ||
Alex Rodionov | @p0deje | Crystalball: predicting test failures | ○ | ○ |
Uchio KONDO | @udzura | The fastest way to bootstrap Ruby on Rails | ○ | ○ |
Emily Stolfo | @estolfo | Benchmarking your code, inside and out | ○ | ○ |
Kevin Menard | @nirvdrum | Beyond puts : TruffleRuby’s Modern Debugger Using Chrome |
○ | ○ |
Mike McQuaid | @MikeMcQuaid | Building Homebrew in Ruby: The Good, Bad and Ugly | ○ | |
Tanaka Akira | @tanaka_akr | What is Domain Specific Language? | ○ | ○ |
- | Lightning Talks | ○ | ||
How does TruffleRuby work | ○ |
3日目
speakers | title | slide | movie | |
---|---|---|---|---|
Presentation avatar | Ruby Committers vs the World | ○ | ||
Yurie Yamane(team yamanekko) Masayoshi Takahashi | @yuri_at_earth @takahashim | (partially) Non-volatile mruby | ○ | ○ |
Ariel Zelivansky | @zelivans | Fuzzing native Ruby code with Kisaten | ○ | ○ |
Justin Searls | @searls | The Selfish Programmer | ○ | ○ |
Sangyong Sim | @riseshia | Cleaning up a huge ruby application | ○ | |
Soutaro Matsumoto | @soutaro | The challenges behind Ruby type checking | ○ | ○ |
Charles NutterThomas E Enebo | @tom_enebo | JRuby: The Road to Ruby 2.6 and Rails 6 | ○ | ○ |
Colin Fulton | @PeterQuines | Running Ruby On The Apple II | ○ | ○ |
Go Sueyoshi | @sue445 | Best practices in web API client development | ○ | |
Hiroshi SHIBATA | @hsbt | The future of the Bundled Bundler with RubyGems | ○ | ○ |
Kevin Deisz | @kddeisz | Pre-evaluation in Ruby | ○ | ○ |
Masatoshi SEKI | @m_seki | dRuby 20th anniversary hands-on workshop | ○ | |
Sadayuki Furuhashi | @frsyuki | Performance Optimization Techniques of MessagePack-Ruby | ○ | |
Kenta Murata | @mrkn | Reducing ActiveRecord memory consumption using Apache Arrow | ○ | ○ |
Tung Nguyen | @tongueroo | Ruby Serverless Framework | ○ | ○ |
Tatsuhiro Ujihisa | @ujm | Play with local vars | ○ | ○ |
nobu | @n0kada | Timezone API | ||
Urabe, Shyouhei | @shyouhei | The send-pop optimisation | ○ | ○ |
Petr Chalupa | @pitr_ch | TruffleRuby: Wrapping up compatibility for C extensions | ○ | ○ |
Colby Swandale | @oceanicpanda | Working towards Bundler 3 | ○ | ○ |
Naotoshi Seo Yusaku Hatanaka | @sonots @hatappi | Red Chainer and Cumo: Practical Deep Learning in Ruby | ○ | |
Jeremy Evans | @jeremyevans0 | Optimization Techniques Used by the Benchmark Winners | ○ | ○ |
個人的な感想は別途まとめます。 リンク間違いや、追加されている資料を教えていただけると助かります〜 Enjoy Ruby!
Nvim起動時にdeoplete failed to loadが表示されてたので対応する
nvimで変なエラーが表示されるようになった
[deoplete] Failed to load python3 host. You can try to see what happened by starting nvim with $NVIM_PYTHON_LOG_FILE set and opening the generated log file. Also, the host stderr is available in messages. [deoplete] function remote#define#FunctionBootstrap[1]..remote#host#Require[10]..provider#pythonx#Require[13]..provider#Poll, line 14 [deoplete] deoplete failed to load. Try the :UpdateRemotePlugins command and restart Neovim. See also :checkhealth.
brew でインストールしているpython3のバージョンが変わってしまっている影響のようだ
pip3 list
をして neovimのPackageがなければインストールしておこう
pip3 install neovim
nvimを再起動すれば同様のエラーは出なくなる。
ソフト404をRailsで対応する
Search Consoleのエラーでソフト404が表示されることが度々あり、対応方法を考えてみました。
本来であれば、sitemap.xmlで送信しているURLから削除するなどの対応をすべきです。
ただ、検索ページなどで動的に変化する場合、
ページ内もしくは、サイト内の導線を切ることで対処します。
検索ページでファセットを使ってるのもその一つですね。
ファセットが使えない場合は、対応しかねるケースもあるかと思います。
単純に404ページを出すのでもいいのですが、
サイトの回遊がうまく誘導できなくなってしまうので、ユーザビリティが落ちてしまいます。
そこで ソフト404対応として ステータスのみ 404で返却して 検索結果がなかったことを表示するため、 コントローラーでstatusを変更してあげるのか良いかと思います。
self.status = :not_found if @items.blank?
@itemsは検索結果のオブジェクトが格納されています。 検索結果が0件の場合にstatus に :not_found (404)を設定しています。 selfはActionControllerのメソッドを呼び出したいためです。付け忘れないでください。 簡単ですね。