- Ruby / Rails関連
週刊Railsウォッチ(20180119)derailed_benchmarks gem、PostgreSQLをGraphQL API化するPostGraphile、機械学習でモック画像をHTML化ほか
こんにちは、hachi8833です。Nintendo Laboにいろいろ持ってかれそうで気になってます。
つっつきボイス: 「任天堂のものづくりセンス、パないなー」
なんでこんなに感動してしまったかと考えていたんだけど、きっと心の中の「小5病」に火が着いたんだな
— 稲見昌彦🌤️INAMI Masahiko (@drinami) January 18, 2018
それでは今週のウォッチ、いってみましょう。
Rails: 今週の改修
今回はCommit差分から見繕いました。
left_outer_joins
をunscopeできるようになった
# activerecord/lib/active_record/relation/query_methods.rb#351
VALID_UNSCOPING_VALUES = Set.new([:where, :select, :group, :order, :lock,
:limit, :offset, :joins, :includes, :from,
- :readonly, :having])
+ :readonly, :having, :left_outer_joins])
つっつきボイス: 「scopeでleft_outer_joins
できるならunscopeもできないと、ってことかな」
重要度の低いダイジェストにデフォルトでSHA-1を使用するようになった
# railties/lib/rails/application/configuration.rb#103
if respond_to?(:active_support)
active_support.use_authenticated_message_encryption = true
+ active_support.use_sha1_digests = true
end
ETagヘッダーなどの重要でないダイジェストにはMD5ではなくSHA-1を使う。
Rails.application.config.active_support.use_sha1_digests = true
new_framework_defaults_5_2.rb.ttより大意
pg-1.0 gemに対応
- commit: f820dc PostgreSQL: Allow pg-1.0 gem to be used with ActiveRecord
- commit: 13eff5 PostgreSQL: Update Gemfile to pg-1.0.0
pgが0.21から1.0にメジャーバージョンアップしたそうです。
# Gemfile.lock#343
- pg (0.19.0)
- pg (0.19.0-x64-mingw32)
- pg (0.19.0-x86-mingw32)
+ pg (1.0.0)
+ pg (1.0.0-x64-mingw32)
+ pg (1.0.0-x86-mingw32)
つっつきボイス: 「へー、pgはもう永遠に1.0にならないんじゃないかと思ってた」「queue_classicってメンテナ代わったのかな?↓」
# Gemfile#65
- gem "queue_classic", github: "QueueClassic/queue_classic", branch: "master", require: false, platforms: :ruby
+ gem "queue_classic", github: "Kjarrigan/queue_classic", branch: "update-pg", require: false, platforms: :ruby
save
やsave!
の後でオブジェクトがunfreezeされていたのを修正
破棄したオブジェクトがsave
後に変更される可能性があったので修正されました。
# activerecord/lib/active_record/persistence.rb#65
def create_or_update(*args, &block)
_raise_readonly_record_error if readonly?
+ return false if destroyed?
result = new_record? ? _create_record(&block) : _update_record(*args, &block)
result != false
end
つっつきボイス: 「これ本当ならエラーをraiseしたいところだろうな: 互換性とかの問題でfalse
を返してるのかも」
MySQL: create_database
でcollation
が指定されている場合にデフォルトのcharsetを追加しないように修正
# activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb#250
def create_database(name, options = {})
if options[:collation]
- execute "CREATE DATABASE #{quote_table_name(name)} DEFAULT CHARACTER SET #{quote_table_name(options[:charset] || 'utf8')} COLLATE #{quote_table_name(options[:collation])}"
+ execute "CREATE DATABASE #{quote_table_name(name)} DEFAULT COLLATE #{quote_table_name(options[:collation])}"
else
execute "CREATE DATABASE #{quote_table_name(name)} DEFAULT CHARACTER SET #{quote_table_name(options[:charset] || 'utf8')}"
end
つっつきボイス: 「そうそう、知らずに|| 'utf8'
が効いちゃうとハマるんだよなー」「修正後のテストでは寿司ビール対策でおなじみのutf8mb4_bin
使ってますね」
リファクタリング: Browser
クラスを新設
システムテストのactionpack/lib/action_dispatch/system_testing/driver.rbのオプションがBrowser
クラスに引っ越しました。
# actionpack/lib/action_dispatch/system_testing/browser.rb
+module ActionDispatch
+ module SystemTesting
+ class Browser # :nodoc:
+ attr_reader :name
+
+ def initialize(name)
+ @name = name
+ end
...
DHHによる修正2件
# rails/railties/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt#9
policy.font_src :self, :https, :data
policy.img_src :self, :https, :data
policy.object_src :none
- policy.script_src :self, :https
+ policy.script_src :self, :https, :unsafe_inline
policy.style_src :self, :https, :unsafe_inline
# Specify URI for violation reports
つっつきボイス: 「CSP=コンテンツセキュリティポリシー」「unsafe_inline
はW3Cのこれですね↓」
; Keywords:
keyword-source = "'self'" / "'unsafe-inline'" / "'unsafe-eval'" / "'strict-dynamic'" / "'unsafe-hashed-attributes'"
CSP3より
-Rails.application.config.content_security_policy do |p|
- p.default_src :self, :https
- p.font_src :self, :https, :data
- p.img_src :self, :https, :data
- p.object_src :none
- p.script_src :self, :https
- p.style_src :self, :https, :unsafe_inline
+Rails.application.config.content_security_policy do |policy|
+ policy.default_src :self, :https
+ policy.font_src :self, :https, :data
+ policy.img_src :self, :https, :data
+ policy.object_src :none
+ policy.script_src :self, :https
+ policy.style_src :self, :https, :unsafe_inline
つっつきボイス: 「少なくともp
はないなー: Kernel.#p
があるから」「そういえば1文字のローカル変数で他にも使えないものがあったような...」
その後思い出しましたが、pryではc
などをローカル変数に使うと怒られるのでした。
[1] pry(main)> c=1
=> 1
[2] pry(main)> c
Error: Cannot find local context. Did you use `binding.pry`?
参考: Pryのコンソールで使えない変数
Rails
Railsチュートリアルが5.1.4に対応
#Railsチュートリアル が Rails 5.1.4 に対応しました! 🆙✨https://t.co/37QWOcMbxA
また、AWS Cloud9 への移行に伴って Heroku Toolbelt がデフォルトでインストールされていない問題についても解決しました 🔧💨
1つ1つの変更は小さいですが、全体としては1,000行近い修正となっています 📕✨ pic.twitter.com/8GFhNmwqQZ
— Railsチュートリアル 🎓 (@RailsTutorialJP) January 17, 2018
つっつきボイス: 「安川さんたちが継続的翻訳システムを構築しているおかげでRailsチュートリアルもガイドもオープンな差分翻訳ができるようになっててうれしいです: 自分はバッチで翻訳する方が好きですが」
プロセスマネージャ再び
Dogfooding Process Managerの続きだそうです。
つっつきボイス: 「自前でプロセスマネージャをこしらえた話のようなんですが、このプロセスって何だろうと思って」「ざっとしか見てないけど、Unixのプロセスのことではなさそうに見える」「ところで、何とかmanagerってネーミングはたいていアンチパターンですね」「あー確かに」
そういえば野球の世界では監督はmanagerですが、日本だとマネージャーは違う意味に横滑りしてますね。
「もし高校野球の女子マネージャーがドラッカーの『マネジメント』を読んだら」です! RT @bakusyou_bot: もしドラの正式名ってもしも野球部のマネージャーがドラえもん似だったらだよね?
— 『もしドラ』公式アカウント (@moshidora) April 24, 2013
マイグレーションをpendingしたままRailsを本番で実行しないようにする方法
短い記事です。ActiveRecord::Migration.check_pending!
でやれるそうです。
# 同記事より
if ($PROGRAM_NAME.include?('puma') || $PROGRAM_NAME.include?('sidekiq')) && Rails.env.production?
ActiveRecord::Migration.check_pending!
end
RailsのForm Objectとルーティング(RubyFlowより)
# 同記事より
class NewQuestionnaireForm
include ActiveModel::Model
def to_model
Questionnaire.new(title: title, questions: questions)
end
def save
to_model.save
end
end
Railsのメモリ容量を減らしてHeroku課金を節約(Awesome Rubyより)
以下の記事に出てきたjemalloc
やyajl-rubyなどを動員して節約に励んでいます。
⭐derailed_benchmarks: Railsアプリのさまざまなベンチマークを取れるgem⭐
- リポジトリ: schneems/derailed_benchmarks
上の記事にも使われていたgemで、★1800超えです。ヒープダンプ/メモリリーク調査/stackprofなどさまざまな静的/動的情報を取れます。
# READMEより
$ bundle exec derailed exec perf:stackprof
==================================
Mode: cpu(1000)
Samples: 16067 (1.07% miss rate)
GC: 2651 (16.50%)
==================================
TOTAL (pct) SAMPLES (pct) FRAME
1293 (8.0%) 1293 (8.0%) block in ActionDispatch::Journey::Formatter#missing_keys
872 (5.4%) 872 (5.4%) block in ActiveSupport::Inflector#apply_inflections
935 (5.8%) 802 (5.0%) ActiveSupport::SafeBuffer#safe_concat
688 (4.3%) 688 (4.3%) Temple::Utils#escape_html
578 (3.6%) 578 (3.6%) ActiveRecord::Attribute#initialize
...
つっつきボイス: 「derailed_benchmarksは結構使われている印象っすね」「作者はRichard Schneemanさんでした」
今週の⭐を進呈いたします。おめでとうございます。
Stimulus: Turbolinksと相性のよい控えめなJSフレームワーク(Ruby Weeklyより)
- リポジトリ: stimulusjs/stimulus
// hello_controller.js
import { Controller } from "stimulus"
export default class extends Controller {
greet() {
console.log(`Hello, ${this.name}!`)
}
get name() {
return this.targets.find("name").value
}
}
つっつきボイス: 「Stimulusって、確かDHHのBasecampがやってるやつですよね」「Turbolinksって最近オフにすること多いけど」
Railsを順を追ってアップグレードする(Awesome Rubyより)
つっつきボイス: 「冒頭の1. Stop the world、2. Long-lived upgrade branchとかまさに定番のアプローチ」「こうやって本番を二本立てにして↓リバースプロキシで振り分けながら少しずつ移行するというのもあるある: 検証が不十分なまま切り替えるとえらいことになったりするけど」
ActiveRecordに欲しくなるEctoの機能(Awesome Rubyより)
def registration_changeset(struct, params) do
struct
|> cast(params, [:email, :password])
|> validate_required([:email, :password])
|> unique_constraint(:email)
|> put_password_hash()
end
def update_profile_changeset(struct, params) do
struct
|> cast(params, [:first_name, :last_name, :age])
|> validate_required([:first_name, :last_name])
end
|>
はElixirの「パイプライン演算子」だそうです。
つっつきボイス: 「Ectoって、ElixirのPhoenixフレームワークで使うやつか」「EctoはORMではない、って書いてますね」「この種のフレームワークを業務で使う動機は今のところ見えないなー」
参考: Rails使いがElixirのEctoを勉強した時のまとめ
Railsアプリの災害復旧プラン
つっつきボイス: 「disaster recovery planはRailsアプリに限らず重要っすね」「そういえば最近Engine Yardってひと頃ほど見かけない気がしてきた」
あるRails請負開発者の一日(Hacklinesより)
つっつきボイス: 「相当昔ですが、Oracle日本支社では犬飼ってるって話を思い出しました」「今のオフィス事情だと難しそう」
その他Rails小粒記事
- Testing Vue.js in Rails with Webpacker and Jest
- Rails Encrypted Credentials on Rails 5.2
- How to Test Multiple WebSocket Sessions With Minitest and Rails 5 System Tests
- Ruby on Rails / ActiveRecord – order with distinct
- Ruby on Rails / ActiveRecord: beware of using reference to null values
- Partial rendering performance in Rails
つっつきボイス: 「JavaScriptのテスティングフレームワークというとmocha以外にJestもあるのね」
「最後のパーシャルレンダリング記事、でかいデータで素朴にeach
回したら確かに遅い↓」
<% @users.each do |user| %>
<%= render 'erb_partials/post', user: user %>
<% end %>
「こうやってcollection
使う方が確実に速いけど、油断するとつい上みたいに書いちゃうことはあるな」「社内でもたまに見ますね」
<%= render partial: 'erb_partials/post', collection: @users, as: :user %>
参考: Railsガイド 3.4 パーシャルを使用する
Ruby trunkより
提案: Hash#transform_keys!
のrecursive: true
オプション(継続)
config = MyAwesomeFormat.load(file); config.transform_keys!(recursive: true, &:to_sym)
みたいに書きたいという主旨です。
def transform_keys!(recursive: false, &block)
# do original transform_keys! here
values.each do |v|
if v.respond_to?(:each)
v.each{|i| i.transform_keys!(recursive: true, &block) if i.respond_to?(:transform_keys!) }
else v.respond_to?(:transform_keys!)
v.transform_keys!(recursive: true, &block)
end
end if recursive
end
提案: GC速度と少々引き換えにメモリを削減(継続)
Aaron Pattersonさんからのissueです。
つっつきボイス: 「最初にレス付けてるnormalpersonさんは昨年のRubyKaigiのあちこちで名前が出てきてた、普通じゃない人」「凄い名前w」
週刊Railsウォッチ(20170922)特集: RubyKaigi 2017セッションを振り返る(1)、Rails 4.2.10.rc1リリースほか
入れ違いで修正
これですか? https://t.co/EjCE6sUv3P
— Shugo Maeda (@shugomaeda) January 18, 2018
ありがとうございます、Backport 欄を埋めておきました。
— nagachika (@nagachika) January 18, 2018
Ruby
Ruby 2.5の陽の当たっていない新機能(Hacklinesより)
行カバレッジやブランチカバレッジ機能などを紹介しています。
Y -> 1: def hello(number)
Y -> 2: if number == 1
Y -> 3: 'world'
Y -> 4: else
N -> 5: 'mars'
Y -> 6: end
Y -> 7: end
Y -> 8:
Y -> 9: hello(1)
つっつきボイス: 「この機能がRubyMineみたいなIDEと連携したらすごくうれしい」「名前忘れたけどこういうカバレッジのgemあった: 絶対に通過しないコードをあぶり出したりとかできる」
なお2.5のカバレッジについては以下でChangelogをざっくり訳してあります。
Rubyの継承で動的に引数を渡す(RubyFlowより)
# 同記事より
class Render
def self.engine; end
def self.inherited(subclass)
puts subclass #=> Memo::Render
puts subclass.engine #=> nil !!!
end
end
つっつきボイス: 「Rubyってここまでエグいコードも書けるんだなって思いますね」「何でもアタッチできちゃうとか、ここまでくるともうオブジェクト指向言語というよりオブジェクト指向スクリプトみたいw」
Ruby 2.5のFrozenError
クラス
2.5.0 :001 > NAME = 'Atul'.freeze
=> "Atul"
2.5.0 :002 > NAME << 'Joy'
Traceback (most recent call last):
2: from /home/atul/.rvm/rubies/ruby-2.5.0/bin/irb:11:in `<main>'
1: from (irb):2
FrozenError (can't modify frozen String)
つっつきボイス: 「今までRuntimeError
だったのがFrozenError
に変わるのはありがたい」「frozen_string_literal
が完了するまでの混乱を少しでも軽くするためでもあるんでしょうね」
参考: frozen_string_literalが入って気づいた、メソッド設計の原則
Kernel.method_added
Kernel.method_addedでcaller_locationsを見るとか
— ( Φ _⊞) (@n0kada) January 18, 2018
つっつきボイス: 「Kernel.method_added
なんてのがあるのか: 特定のメソッド追加にフックかける」「実体はModule
にあった↓」
# docs.ruby-lang.org/ja/2.5.0/method/Module/i/method_added.html
class Foo
def Foo.method_added(name)
puts "method \"#{name}\" was added"
end
def foo
end
define_method :bar, instance_method(:foo)
end
=> method "foo" was added
method "bar" was added
aruba: CLIアプリをRSpecやMiniTestでテストするgem(Awesome Rubyより)
- リポジトリ: cucumber/aruba
- ドキュメント: Cucumber / Aruba
つっつきボイス: 「あのCucumberがやってるんですね」「バッチ処理のテストをRSpecとかで書けるし、Ruby以外に任意のCLIに使えるのがいいな」
Rubyのシンボル話その後
なるほど。@mametter と話してたんですが、今の提案って Symbol を無理ない程度に rich にしたら、それで満足するんじゃ無いのって
— _ko1 (@_ko1) January 10, 2018
今週話題のチケットは、ハッシュキーの同一視はしなくていいから Symbol というクラスを消したい、という話みたいですよ。
— Yusuke Endoh (@mametter) January 10, 2018
#14347 のドキュメントの追加で皆さんが満足してくれると良いのですが。
— Yukihiro Matz (@yukihiro_matz) January 10, 2018
つっつきボイス: 「あちこちで話題になってるやつですね」「途中まで読んでた」「やっとシンボルは文字列ではないということになったと」
Rubyはやっぱり死んでない(Ruby Weeklyより)
こちらもEngine Yardのブログです。
ネストしたハッシュをlambdaでリファクタリング
同記事より
pub.doc[‘programs’].each &remove_icons(‘grades’, &remove_icons(‘units’))
def remove_icons value_key=nil, &block
lambda do |key, value|
next if key == ‘_order’
value.delete ‘icons’
if value_key
value[value_key].each(&block) if block_given?
value[value_key].each(&remove_icons) unless block_given?
end
end
end
つっつきボイス: 「うんうんよくあるやつ:再帰で書きましょう!みたいな」「Hashの再帰って何かと面倒ですよね」「せいぜい3階層ぐらいしか潜らないことをわかって書いてるのに、RuboCopに怒られたりとか」
高木さん
ここで、過去にあった、日本の一流企業が提供した、壮絶なまでに劣悪な言語仕様の例を紹介しよう。その名も「FeliCa HTMLタグ」。当時天下のソニー製だ。https://t.co/fsP6tG8qKx
見よ!嗤え!このクソ仕様を!
「複数のタグによる定義があった場合、記述した順にFeliCaカードへの処理が行われます」 pic.twitter.com/zZZHmBZsj7— Hiromitsu Takagi (@HiromitsuTakagi) January 13, 2018
言語職人の朝は早い
— _ko1 (@_ko1) January 17, 2018
SQL
PostgreSQLにはmeltdownパッチは不要だが少し遅くなる(Postgres Weeklyより)
- 元記事: PostgreSQL Meltdown
つっつきボイス: 「meltdownは基本的にカーネルの問題だからアプリにパッチが必要になることはそうないかと」「パッチで遅くなるのはもうしゃーない」「AWSもいろいろ言ってるけど対策すれば遅くなるっしょ」
参考: CPU脆弱性Meltdownのパッチ適用でベンチマークスコアが25%低下した
PostGraphile: PostgreSQLをGraphQL API化するJSライブラリ(Postgres Weeklyより)
- サイト: https://www.graphile.org/postgraphile/
- リポジトリ: postgraphql/postgraphql -- 名前変更中だそうです
以下を実行してhttp://localhost:5000/graphiql
をブラウザで開くといきなりGraphiqlが動きました。N+1クエリも克服しているそうです。これ凄いかも。
npm install -g postgraphile
postgraphile -c postgres://user:pass@host/dbname --schema schema_name
PGLogicalがアップデート(Postgres Weeklyより)
PostgreSQLの動作を知る(Postgres Weeklyより)
Pythonのツールを使います。
つっつきボイス: 「お、Internalとか書いてるけどこれはむしろ入門向け記事ですね: 量は多いけど相当やさしい内容」
JavaScript
(a ==1 && a== 2 && a==3)
をtrue
にする知見が続々
- Stackoverflow: Can (a ==1 && a== 2 && a==3) ever evaluate to true?
BPS社内で盛り上がりました。
// Stackoverflowより
var aᅠ = 1;
var a = 2;
var ᅠa = 3;
if(aᅠ==1 && a== 2 &&ᅠa==3) {
console.log("Why hello there!")
}
if
に半角のハングル文字を使うという荒業を繰り出したり、C++などでやってみたりしています。
JavaScriptの二進木、再帰、末尾呼び出し最適化
nullとundefinedとは
CSS/HTML/フロントエンド
Web Componentsの秘密
参考: MDN Web Components
フロントエンドのエラー表示を再考する
blog.jxck.ioの新着記事
つっつきボイス: 「これは読んでおきたい記事」「そういえばこれと少し似た感じの、ネコのアイコンのブログ記事が話題になってましたね」「ネコのアイコン...?」「あったこれ↓」「あこの人か: アイコンとか全然気にしてなかったw」
参考: ソフトウェアの互換性と僕らのUser-Agent文字列問題
Screenshot-to-code-in-Keras: ニューラルネットワークでモック画像から静的HTMLページを生成(GitHub Trendingより)
アニメーションGIFが巨大すぎるのでここには貼りませんでした。
つっつきボイス: 「すげっ」「Bootstrapにも対応してるみたいですね」「一回こっきりの案件とかならかなりイケそう」「HTMLコーダー界に激震走るか」
その他
YAGNIを実践する
- 元記事: Practicing YAGNI
つっつきボイス: 「社内にもYAGNIを愛して止まない人がいるから彼を観察してるとだいたいわかりますよ」
参考: Wikipedia-ja YAGNI
Slackにprivate shared channel機能が追加
つっつきボイス: 「これありがたい: shared channelは前からあるけどpublicにしかできなかったんで」
Windows CLIの改善
WSLのchmod
/chown
の改良とtar
/curl
の追加です。
なお、こんなのもありました。
powershell を起動したあと yes | head (msys2 のもの) を実行した後の様子です。 pic.twitter.com/wmqLIuYiwN
— コーテルイーナーホー (@mattn_jp) 2018年1月17日
はい。あるべき姿かは分かりませんが powershell の | 記号が unix ユーザの期待しているものではないと言うことです。
— mattn (@mattn_jp) January 17, 2018
話は聞かせてもらった。Microsoftはシベリア送りだ。
— Ryou Ezoe(江添 亮) (@EzoeRyou) January 17, 2018
DOS窓の|
は大丈夫だそうです。
Docker for macで/etc/localtimeがマウントできない問題
docker for macで/etc/localtimeがマウントできない問題が起きてるみたいやな。(https://t.co/FfS7JgjoOH)
/etc/localtimeでマウントするのやめて環境変数でちゃんとタイムゾーンを指定する様にした方がよさそう。https://t.co/TFtoZobgG6— tdual(ティーデュアル)@MatrixFlow (@tdualdir) January 16, 2018
minio: Amazon S3 API互換のオブジェクトストレージサーバー
- サイト: https://minio.io/
- リポジトリ: minio/minio
つっつきボイス: 「S3互換のこういうのは他にもありますけどね」「GCPやAzureとかいろんなクラウドで使えるのはよさそう」「今さらですがオブジェクトストレージサーバーって何でしたっけ?」「AWS S3みたいなサービスがそれです: WebDAVみたいにRESTfulにオブジェクトにアクセスできるサービス」
HighwayHash: Go言語の爆速ハッシュ生成ライブラリ
つっつきボイス: 「10G/secとか確かに超速い」「ハッシュは速度だけあってもいかんので、ちゃんと分散してるかとかも大事ですね」
データがあれば使えるCloud AutoML VisionをGoogleが発表
一般のニュースにもなってますが一応。
つっつきボイス: 「今はデータサイエンティストやAIエンジニアが明らかに不足してるからどこもカスタマイズとかチューニングに手が回らなくて、こうやってそこそこのものを公開して好きに使ってくれ、みたいな方向に向かってる感じですね」「ユーザーに丸投げですか」
参考: Googleが「Cloud AutoML Vision」を発表、独自のデータセットを使ったカスタム機械学習モデルが簡単に構築できるように
番外
暗算術
a% of b = b% of a
は初めて知りました。「25の16%=16の25%」みたいに使うそうです。
つっつきボイス: 「計算すると確かにそうなってるな: 式で見ると一瞬でわかるけど言われるまで気づきにくい」「英語圏なんで単位のフィート換算とかいらなさそうなのも多いです」「ひと頃入社試験でよく出されたフェルミ推定なんかやるときは、こういうのを何となくでも知っておかないと手も足も出なかったりしますね」
これは欲しい
249ドルからのラズパイを使った教育用コンピュータキット。学校でこれを渡され、組み立てて勉強に使う。子供の時に渡されたら、すげえ興奮しただろうなあ。https://t.co/OCvo07R1Kj pic.twitter.com/AQK237Fl9v
— Munechika Nishida (@mnishi41) January 12, 2018
つっつきボイス: 「Nintendo Laboとどっちが子どもにウケるかなと思って」「今ならポプテピピックっしょw」「あれはもう子どもの反応が面白すぎますね」
アニメ版ポプテピピックを語る際によく比較されるウゴウゴルーガ。
子供たちに見せてみた。「えっ」
「これ本当に朝の子供番組?」
「ポプテピのほうがマシ」
「ポプテピより精神削られる…」まあ、大評判❤️ pic.twitter.com/aVW21nWaHy
— いをり (@iworidoll) January 16, 2018
学習/プログラミング不要の産業ロボット
Mujin is on Business+IT dated January 16 2018.(Written in Japanese)
MUJINの記事が2018年1月16日付けのビジネス+ITに掲載されました。【産業用ロボットソフトウェア企業「MUJIN」、なぜ急成長できているのか?】https://t.co/Q31gFXyQxe
— 株式会社Mujin / Mujin, Inc. (@mujin) January 16, 2018
つっつきボイス: 「荷物の積み下ろしとかまでやってます」「人間雇う方がまだまだ安いな、今のところは」
Switchエミュレータ(GitHub Trendingより)
- リポジトリ: yuzu-emu/yuzu
つっつきボイス: 「ソフトはともかくハードウェアはそうもいかないか」
その後、GPL V2というライセンスの厳しさや、パチンコの当たり判定システムの話題で盛り上がりました。
ルーシーさん
グーグルから来る論文引用の知らせの中で、おもしろいものを発見。320万年前のアウストラロピテクスのルーシーさんは木から落ちてなくなったのでは?と言われているが、地形や化石など精査した結果、高所から落下して斜面を転げ落ちたあげく、ワニに襲われたっぽいと言う内容。すごい死に様… https://t.co/hF2G0afUTh
— 福田雄介(ワニ研究者) (@GingaCrocodylus) January 15, 2018
自己修復コンクリート
“細菌をコンクリートに混ぜると、ヒビができるまで休眠状態になる”“コンクリートにヒビができて水と酸素が供給されると細菌が目を覚まし、炭酸カルシウムを発生させてヒビを治癒修復する”。スゴいな。
細菌で「自己治癒」するコンクリートとは https://t.co/it1s5ghNHT
— bigfield (@ta_ono) January 18, 2018
今週は以上です。
バックナンバー(2017年後半)
週刊Railsウォッチ(20180112)update_attributeが修正、ぼっち演算子`&.`は`Object#try`より高速、今年のRubyカンファレンス情報ほか
- 20171222 定番gemまとめサイト、active_record-mtiでテーブル継承、PostgreSQL 10の非互換変更点、Railsガイド攻略法ほか
- 20171215 Ruby 2.5.0-rc1リリース、Ruby 2.4.3セキュリティ修正、Ruby 3.0で変わるキーワード引数、HTML 5.2 RECリリースほか
- 20171208 最近のRailsフロントエンド事情、国際化gem、mallocでRubyのメモリが倍増、るびま記事募集ほか
- 20171201 JSON PatchでRails高速化、Knapsack Proでテスト高速化、Decorator/Presenter gem比較ほか
- 20171124 GitHubにセキュリティアラート追加、RailsでVue.jsを使う、Railsテスト本2種、node-pruneで瞬間クリーンアップほか
- 20171117 Rails開発3年分のコツ集大成、PostgreSQL 10.1でセキュリティ問題修正ほか
- 20171110 dry-rbでFormObjectを作る、RailsのSQLインジェクション手法サイト、年に1度だけ起きるバグほか
- 20171020 Rubyが来年で25周年、form objectでサニタイズ、コアなString解説本ほか
- 20171013 Ruby 2.5.0-preview1リリース、RubyGems 2.6.14でセキュリティバグ修正、Bootstrap 4.0がついにBetaほか
- 20171006 PostgreSQL 10ついにリリース、Capybaraコードを実画面から生成するnezumiほか
- 20170929 特集: RubyKaigi 2017セッションを振り返る(2)Ruby 2.3.5リリースほか
- 20170922 特集: RubyKaigi 2017セッションを振り返る(1)、Rails 4.2.10.rc1リリースほか
- 20170915 Ruby 2.4.2リリースで脆弱性修正、strong_migrations gemでマイグレーションチェック、書籍『Mastering PostgreSQL』ほか
- 20170908 Rails 5.1.4と5.0.6リリース、コード書換え支援gem「synvert」、遅いテストを分析するTestProfほか
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやRSSなど)です。