- 開発
週刊Railsウォッチ(20190826)6-0-stableの更新を見てみる、『Morning Cup of Coding』ニュースレター、Rails TutorialがRails 6対応に動き出すほか
こんにちは、hachi8833です。数列の1, 2, 4, 8,...
みたいな表記を見ると、1, 2, 4, 8, 1, 2, 4, 8, 1, 2, 4, 8,...
みたいな可能性もありそうな気がして不安になります。
つっつきボイス:「ruby-jp Slackのどこかで、Rubyの..
だったか...
を魔改造するみたいな話をちらっと見かけたんですけど、そっちの数学的表記の方が気になっちゃって😅」「どう解釈するか問題ね☺️」「数学方面だと無限数列の...
の略記ってコンベンションが頼りというか割と自明でなかったりした覚えが😆」
- 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
- 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
- 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください
今回のウォッチは分割なしです。
⚓週刊Railsウォッチ「公開つっつき会」第14回のお知らせ(無料)
第14回目公開つっつき会は、9月5日(木)19:30〜にBPS会議スペースにて開催されます。皆さまのお気軽なご参加をお待ちしております🙇。
⚓Rails: 先週の改修(Rails公式ニュースより)
Rails 6がリリースされたので6-0-stableの更新をチェックしましたが、masterのdiffも一部含まれています🙇。
- 6-0-stable: Commits · rails/rails
つっつきボイス:「6-0-stableがまだ動いているというより、当面は6-0-stableがメインで更新されるということなのかも?」「それもそうでした😅」「6-0-stableが動いているのは確か?」「ですね」「6.1を出すときになったら初めて6-1なんちゃらみたいなタグなりブランチを作るのかも」「後で調べておきます↓」
現時点では6-1などに相当するブランチやタグはありませんでした。
参考: Ruby on Rails のメンテナンスポリシー - Rails ガイド
- バージョン命名はSemantic Versioningに従う
- 新機能はmasterブランチにのみ追加される
なおマイルストーンには6.0.1などがあります↓。
⚓(master)最適化: CurrentAttributes.instance
のオブジェクトアロケーションをメモ化
これは純粋なパフォーマンス最適化。
問題:stackprof
オブジェクトのアロケーションプロファイルをたまたま見ていて、CurrentAttributes.instance
からのアロケーションでname
の呼び出しに気づいた。Class#name
は呼び出しのたびに新しいstringをアロケートするが、この手の不必要なオブジェクトアロケーションは自分としては避けたい。以下のスクリプトでオブジェクトアロケーションをカウントすると、このPR修正の前では1
が返る。
# 同PRより
require 'stackprof'
require 'active_support/all'
class Current < ActiveSupport::CurrentAttributes
end
Current.instance # memoize
p StackProf.run(mode: :object) { Current.instance }[:samples]
解決:
current_instances_key
をメモ化することでオブジェクトアロケーションをなくし、シンボルに変えることでハッシュ探索の効率が向上する。
同PRより大意
つっつきボイス:「これは確実にシングルトンですしね😋」「もしシングルトンじゃなかったらえらいこっちゃ😆」「やってることはごく普通のメモ化📋」
# activesupport/lib/active_support/current_attributes.rb#L93
def instance
- current_instances[name] ||= new
+ current_instances[current_instances_key] ||= new
end
...
+ def current_instances_key
+ @current_instances_key ||= name.to_sym
+ end
⚓(6-0-stable)ARオブジェクトのtake
のメモ化をクリアするようにした
あるリレーションから
take
されたARオブジェクトはメモ化されて、同じリレーションからwhere
やfind_by
が呼ばれた時にもメモ化されたものが返る。
このオブジェクトのメモ化されたステートはクリアする必要がある。
同PRより大意
これは6-0-stableに入りました。
# activerecord/lib/active_record/relation.rb#L638
def reset
@delegate_to_klass = false
@_deprecated_scope_source = nil
@to_sql = @arel = @loaded = @should_eager_load = nil
@records = [].freeze
@offsets = {}
+ @take = nil
self
end
期待する動作: Active Recordリレーションで
find_by
やwhere
が呼ばれるたびにDBにクエリをかける。
実際の動作: リレーションでfind_by
やwhere
が使われる前にtake
が呼び出されていると、Active Recordリレーションのクエリが返すActive Recordオブジェクトがtake
についてメモ化されてしまう。
同issueより大意
つっつきボイス:「たしかにこれはおかしくなる」「修正されたのはreset
メソッドか」「take
って何件か取ってくるメソッドでしたね」「take
ってあんまし使わないけど😆」「where
やfind_by
みたいにリレーションの形が変わるときはreset
しないといけなくて、でも形が変わってたのにメモ化変数のうち@take
が同じリレーションに残って影響しちゃってたのでそれを修正したと」「メモ化するとこういうこと起きる可能性ありますね😅」
# activerecord/test/cases/relations_test.rb#L2053
def test_where_with_take_memoization
5.times do |idx|
Post.create!(title: idx.to_s, body: idx.to_s)
end
posts = Post.all
first_post = posts.take
third_post = posts.where(title: "3").take
assert_equal "3", third_post.title
assert_not_equal first_post.object_id, third_post.object_id
end
⚓(6-0-stable)コネクションプールのreaperスレッドがforkでコケる問題を修正
- PR: Fix error on reap/flush for closed connection pool by jhawthorn · Pull Request #36999 · rails/rails
# activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb#L649
def reap
stale_connections = synchronize do
+ return unless @connections
@connections.select do |conn|
conn.in_use? && !conn.owner.alive?
end.each do |conn|
conn.steal!
end
end
stale_connections.each do |conn|
if conn.active?
conn.reset!
checkin conn
else
remove conn
end
end
end
...
def flush(minimum_idle = @idle_timeout)
return if minimum_idle.nil?
idle_connections = synchronize do
+ return unless @connections
@connections.select do |conn|
!conn.in_use? && conn.seconds_idle >= minimum_idle
end.each do |conn|
conn.lease
@available.delete conn
@connections.delete conn
end
end
idle_connections.each do |conn|
conn.disconnect!
end
end
@jhawthornへ: 最新版だと以下のスクリプトがforkしたプロセス内でreaperスレッドがクラッシュすることからして、まだ何か足りないものがある気がする。このスレッドはクラッシュ後にコネクションを再確立しないと再度spawnされず、自分としては理想的とは言えない。
同issueより大意
つっつきボイス:「reaperは例の稲刈り機的にコネクションを刈り取るヤツでしたっけ」「forkするとダメになってたあたり、マルチスレッド系で起きそうなバグ🐛」「synchronize
とかやってるし、マルチスレッドのタイミング問題っぽい」
「なお#36998にこんなコメントが付いていたそうです↓」「ちょwこれ🤣」「明らかに狙ってますし🤣」「日本人しかわかんないし🤣」「なごんだ〜☺️」
"多分動く" / https://t.co/iwpfEgjo3U
— . (@y_yagi) August 21, 2019
⚓(master)pumaを4.1にバージョンアップ
# railties/lib/rails/generators/app_base.rb#L191
def web_server_gemfile_entry # :doc:
return [] if options[:skip_puma]
comment = "Use Puma as the app server"
- GemfileEntry.new("puma", "~> 3.11", comment)
+ GemfileEntry.new("puma", "~> 4.1", comment)
end
つっつきボイス:「pumaのバージョン上げる忘れてたのかなと(以下参照)😆」「puma本家がつい最近4にバージョンアップしてましたしね☺️」
↑つっつき時点では6-0-stableへのコミットだと思っていたので、実際はmasterブランチの更新です🙇。
⚓番外: Rails Conductorは特に動きなし
つっつきボイス:「TechRachoの過去記事を集計中に例のRails Conductorの見出しを見かけて、どうなってるかなと思ったら特に何も変わってませんでした😆」「前のウォッチ↓で話題になったときのままという感じですか😆」「Rails Conductorって、ブラウザ画面でRailsを開発できるようにするみたいな感じの構想だったかな」「しばらくは動きなさそう」
週刊Railsウォッチ(20190311-1/2前編)「Rails Conductor」14年ぶり復活なるか?、RubyGemsに複数の脆弱性、2009年のRailsエコシステムほか
# conductor/app/controllers/rails/conductor/source/notes_controller.rb
# frozen_string_literal: true
class Rails::Conductor::Source::NotesController < Rails::Conductor::CommandController
def show
@notes = extract_notes
end
private
def extract_notes
capture_stdout { Rails::SourceAnnotationExtractor.enumerate tags_param }
end
def tags_param
params[:tag].presence || %w[ OPTIMIZE FIXME TODO ].join("|")
end
end
「Rails Conductor、そこそこ実装はあるっぽいですけど↑」「これを熱心にメンテしたい人はいなさそう🤣」「強い人はあんまり使わない感じですかね」「productionに入る機能ではないことを考えると、メンテするモチベが😆」「Railsコンソール的なものに落ち着くのか、それ以上のものになるのかで変わってきそうな予感はしますね☺️」「サードパーティがRailsエンジンで作る方が回りやすかったりして」「公式として入れたい何らかのモチベがあるのかも?」
⚓Rails
⚓Railsのモデルクラス名と名前空間の衝突
あー、前言撤回!Rails 6のおかげじゃなくて、Ruby 2.5のおかげですね、これ。。。勘違いしてた💦 追記を修正しますー。
— Junichi Ito (伊藤淳一) (@jnchito) August 20, 2019
つっつきボイス:「こういう問題があるって知りませんでした😅」「結局2.5のおかげで問題が起きなくなったと🎉」
# 元記事より
# app/controllers/blogs_controller.rb
class BlogsController < ApplicationController
puts "BlogsController loaded"
before_action :set_blog, only: [:show, :edit, :update, :destroy]
def index
@blogs = Blog.without_draft.all
end
def show
end
private
def set_blog
@blog = Blog.without_draft.find(params[:id])
end
end
# 元記事より
# app/controllers/staff/blogs_controller.rb
class Staff::BlogsController < ApplicationController
puts "Staff::BlogsController loaded"
before_action :set_blog, only: [:show]
def index
@blogs = Blog.all
end
def show
end
private
def set_blog
@blog = Blog.find(params[:id])
end
end
「元記事のコード↑にclass BlogsController < ApplicationController
とclass Staff::BlogsController < ApplicationController
というのがあると、Staff::BlogsController
を期待しているときにBlogsController
を取ってしまうという話ですね☺️」「Ruby 2.4までは、Staff::BlogsController
と書いて、かつStaff
配下にBlogsController
定数がないと、トップレベルのObject配下にそれが存在する場合にそっちを取ってきてたらしいんですよね: 全然知らなかったけど😳」「割と罠的な動き😇」「こういう直感的でない動きするんだなって😅」「2.4まではその条件でトップレベルの定数が取れた場合にwarningが出ていたのが、2.5では失敗するようになったと」「大規模なコードを書くには必要な機能だから、このあたりはちゃんとしてて欲しいっすね🧐」
「今までrequire_dependency
でやってたときの問題については、6.0のZeitwerkでやれるようになったから今後は大丈夫と😋」「そういえばZeitwerkではrequire_dependency
をまったく使わなくなるってガイドにありますね↓」
参考: 2.6.3 require_dependency
について -- Rails アップグレードガイド - Rails ガイド
「この辺の問題は、踏んだときにとっても謎な死に方をするのが厄介でしたよね😭」「発生するかどうかがタイミング次第だったり😇」
「ちなみにこの問題は、以前のつっつきに出てきた名前空間地獄の問題↓とは別なんでしょうか?」「少なくともwarningレベルでは別の話ですね🧐: ただ元記事の後半ではconst_missing
がらみで名前空間地獄に近いところも話されてますけど」
週刊Railsウォッチ(20181022)Railsの名前空間地獄とrequire_dependency、PostgreSQL 11がリリース、clean-rails.orgほか
⚓「Rails Tutorial」がRails 6対応に向けて動き出す
The Ruby on Rails web framework continues to be an outstanding choice for developing dynamic web applications—relied on by companies as varied as Disney, GitHub, and Airbnb.
And it keeps getting better: Ruby on Rails creator David Heinemeier Hansson has just announced the release of Rails 6.0!
With this new major release, I’m happy to say that the Ruby on Rails Tutorial book, videos, and online course will soon be updated accordingly.
Experience shows that it’s a good idea to let things shake out for a couple of weeks after any big release like this, so I'm going to spend that time going back through the whole tutorial using Rails 6 and fixing anything that needs to be updated.
Rails TutorialのNewsletter(2019/08/17)より
つっつきボイス:「Rails Tutorial作者のMichael Heartlさんが、Rails 6に合わせて必要な部分に更新をかけるそうで、でもしばらく自分がいじってからになると思うとのことです: Railsチュートリアルの方もその後で対応したいです☺️」
「RailsチュートリアルはRails 6で影響される部分ってそんなになさそうですけどね: 業務に寄ったマルチDBとかTwitter的アプリでは要らなさそうだし😆」「たしかに〜」「Action TextぐらいはRailsチュートリアルにあってもよさそうですけどね😋」「それもたしかに〜」「ちょっとリッチなテキストボックス!」「そこにドラッグアンドドロップするだけでファイルをアップロードできる!とか☺️」
「Railsチュートリアルのボリューム、ますます単調増加したりして😆」「さすがにMichaleさんもサポートを軽減するために、HTMLの基本とかGitの基本みたいな部分を別教材にして販売しています(Learn Enoughシリーズ↓)」「そういう基本的な部分って面倒見きれないですよね😆」
参考: Learn Enough to Be Dangerous
⚓Morning Cup of Coding: 高品質の技術情報ニュースレターサイト
Just subscribed to The Morning Paper for interesting CS papers (https://t.co/BLBrvmkpug) and Morning Cup of Coding for other interesting industry developments (https://t.co/rLh823Xolp).
— Ellen Chisa (@ellenchisa) May 6, 2018
つっつきボイス:「『Morning Cup of Coding』は@st0012さんイチオシの技術情報リンク集ニュースレターで、評判も上がってファンディングを取り付けたことで紙の雑誌も出すらしいと聞きました」「朝に読む一杯のコーヒー的な☕」「メールが飛んでくる的な」「実は@st0012さんにずっと前に教えてもらっててサブスクライブしてたんですが、すっかり忘れててGmailの肥やしになってました😅」
「これは毎日出るのかしら?」「週イチぐらいかなと思ってたら...ほぼほぼ毎日出てますね!😳」「見た感じRubyやRailsに限らないっぽい」「ですです、JavaScriptでもRustでも何でもありで」「ノリとしてははてブTech的な雰囲気かな?」「あるいは日刊Railsウォッチというか😆、このペースでウォッチ出してたら死ねるかも」「目についたものをTumblr的に流してる感も😆」「自分もまだちゃんと読み込んでませんが、キュレーションはされてると思います」
- バックナンバー: Issues
⚓apparition gemでpoltergeistを除霊しよう(Ruby Weeklyより)
- 元記事: Apparition Gem | TheGolfMentor
- リポジトリ: twalpole/apparition: Capybara driver for Chrome using CDP
ポルターガイストだけにapparition(霊現象)とかexorcise(除霊)というネーミングになるでしょうね。
つっつきボイス:「タイトルに惹かれて拾っちゃいました😆」「poltergeistとかもう終了してどんだけ経ってるかと🤣」「poltergeistは、Capybaraで使えるPhantomJSドライバですね👻」
「でこのapparitionって何をするgem?」「リポジトリにはCapybara向けChromeドライバとありますね」「これをpoltergeistと差し替えるとシームレスに動いてくれるとかそういう感じかな?」「『poltergeist APIとできるだけ互換性を取るようにしている』みたいなことも書いてますね😆」「poltergeistで書いたものを今更書き直すのがつらすぎるから、ミニマムに置き換えられるアダプタを作った的な🤣」
# 同記事より
require 'capybara/apparition'
Capybara.javascript_driver = :apparition
「このapparition gemでめでたく成仏できそうでしょうか?」「どうだろう?さすがにもうみんなpoltergeistは置き換えてるんじゃないかと😆」「わかんないすよ〜、bundle install
すら通らないようなレベルの古代のプロジェクトが発掘されることもありますし😇」「gemがなくなってるレベルとか😆」「ファラオの呪い💀」
参考: Rails E2EテストでpoltergeistからHeadless Chromeへ乗り換える - Hack Your Design!
参考: ポルターガイスト現象 - Wikipedia
コンピュータプログラミングにおいて、ほかのオブジェクトに情報を渡すだけのオブジェクトを表す。アンチパターンの一つ。
ja.wikipedia.orgより
「上はWikipediaにぴろっと書いてあったのを貼ってみました↑」「Poltergeistっていうアンチパターンは知らなかったなぁ〜😳」「これだけ見たらData Access Objectも含まれそうな気がするけど」
英語版WikipediaにはOOPのアンチパターンとしてありました
参考: Poltergeist (computer programming) - Wikipedia
参考: 【ソフト開発 アンチパターン】Poltergeists - 緑茶思考ブログ
⚓その他Rails
つっつきボイス:「esaはGoogleアカウントで認証できるのがいいなと思って」「今のesaはオンラインエディティングとかも含めて全然いいと思いますね❤️」「記事によると改修も素早いみたいですし」
参考: esa.io の作り方 -- Rails 4.2.5頃から使い始めているそうです
↓3年前の記事でだいぶ状況変わってますが一応。
⚓Ruby
⚓32,000行の腐ったCSVを32,000ステップ以下で修正する(Ruby Weeklyより)
つっつきボイス:「元CSVの行数が32,000あってもタイトルみたいに32,000ステップもかからないと思いますけど😆」「CSVのどこが壊れてるかなっと」「artist列がクォートされてるのとされてないのとあったり😇」「でフィールドがずれる😇」「よくあるダメCSV😆」
`
「こんなふうに↓想定カラム数となぜか食い違っちゃうとかあるある〜😆」「実データを見てきっとここがずれてるみたいに当りをつけて対応するとか😆」「ある程度開発経験があれば一度は出くわすヤツ」「いい経験にはなりますけど😅」
[1, 2, 3, 4, 5] -> [x, x, x, x] =>
[[1, 2], 3, 4, 5]
[1, [2, 3], 4, 5]
[1, 2, [3, 4], 5]
[1, 2, 3, [4, 5]]
「そういえばこれ↓はRuby Weeklyの別のエントリにあったgemですが、上の記事と作者が同じですね」「CSVをちょっといい感じに整形してくれるのかな?」「同じ人だ」「なるほど、『こうじゃね?』ってパースの候補を出してくれるっぽい↓😋」「パースを推測してくれるのか!」「gemを作ったついでに記事を書いたかその逆みたいなノリかも☺️」「数値に入ってるカンマで区切られるとか悲しい😭」
Which one of these is correct?
(1) artist : 10
title : 000 Maniacs and Michael Stipe
albumtitle: To Sir with Love
label : "Campfire Songs,Rhino"
(2) artist : 10
title : 000 Maniacs and Michael Stipe
albumtitle: "To Sir with Love,Campfire Songs"
label : Rhino
(3) artist : 10
title : "000 Maniacs and Michael Stipe,To Sir with Love"
albumtitle: Campfire Songs
label : Rhino
(4) artist : "10,000 Maniacs and Michael Stipe"
title : To Sir with Love
albumtitle: Campfire Songs
label : Rhino
「こんなデータを作った人を問い詰めたい😆」「できちゃったものはしょうがないですし☺️」
「そういえばCSVと格闘してた人が社内にもいましたね↓」「CSV以外にもメールから文章を取り出すとかありますし☺️」
⚓アルファベットのアクセント記号を除去する方法いろいろ(Ruby Weeklyより)
つっつきボイス:「なるほど、こういう置き換えね↓」「こういう便利メソッドってRubyになかったっけ?」「Martin先生がアクセント付きの大文字小文字変換をやってた覚えはあるんですけど😅」「まあ自分ら使わないけど😆」「ヨーロッパの人には切実なヤツですね」「文字が変わっちゃうと大変ですし☺️」
# 同記事より
UNACCENT = {
'Ä'=>'A', 'ä'=>'a',
'Á'=>'A', 'á'=>'a',
'Æ'=>'AE', 'æ'=>'ae',
'É'=>'E', 'é'=>'e',
'Í'=>'I', 'í'=>'i',
'ï'=>'i',
'Ñ'=>'N', 'ñ'=>'n',
'Ö'=>'O', 'ö'=>'o',
'Ó'=>'O', 'ó'=>'o',
'Œ'=>'OE', 'œ'=>'oe',
'ß'=>'ss',
'Ü'=>'U', 'ü'=>'u',
'Ú'=>'U', 'ú'=>'u',
}
つっつきボイス:「書いた人はどちらかというと変換のパフォーマンスをチェックしてるみたいですね↓」
# 同記事より
text=>AÄÁaäá EÉeé IÍiíï...<, n=20000:
user system total real
each_char 4.953000 0.000000 4.953000 ( 4.958531)
each_char_v2 4.265000 0.000000 4.265000 ( 4.265561)
each_char_v2_7bit 4.266000 0.000000 4.266000 ( 4.268788)
each_char_v2_7bit_faster 3.375000 0.000000 3.375000 ( 3.379573)
each_char_reduce 5.641000 0.000000 5.641000 ( 5.638152)
each_char_reduce_v2 5.125000 0.000000 5.125000 ( 5.113069)
gsub 6.078000 0.000000 6.078000 ( 6.079772)
gsub_v2 5.500000 0.000000 5.500000 ( 5.492944)
gsub_v3a 4.203000 0.000000 4.203000 ( 4.248036)
gsub_v3b 5.094000 0.000000 5.094000 ( 5.098041)
scan 10.062000 0.000000 10.062000 ( 10.050102)
text=>Aa Ee Ii...<, n=20000:
user system total real
each_char 1.313000 0.000000 1.313000 ( 1.304258)
each_char_v2 1.328000 0.000000 1.328000 ( 1.327656)
each_char_v2_7bit 0.984000 0.000000 0.984000 ( 0.981193)
each_char_v2_7bit_faster 0.984000 0.000000 0.984000 ( 0.977593)
each_char_reduce 1.594000 0.000000 1.594000 ( 1.583752)
each_char_reduce_v2 1.641000 0.000000 1.641000 ( 1.650390)
gsub 0.140000 0.000000 0.140000 ( 0.127486)
gsub_v2 0.125000 0.000000 0.125000 ( 0.127581)
gsub_v3a 0.125000 0.000000 0.125000 ( 0.124071)
gsub_v3b 0.047000 0.000000 0.047000 ( 0.056792)
scan 3.141000 0.000000 3.141000 ( 3.129562)
記事には「もっといい方法があったら教えて欲しい」とありました。
⚓その他Ruby
つっつきボイス:「この成果報告会は毎年やってるっぽいですね」「金曜午後という時間帯のせいか、まだ空きがかなりあります」「まあちょっと行きづらい時間帯ではあるけど😅、当日までにはもっと増えるんじゃないかなと」「親睦会以外は無料ですし、Rubyコミッターとがっつり話す機会が多そうですね😍」「場所も品川でアクセスいいですし」
⚓クラウド/コンテナ/インフラ/Linux/Serverless
⚓『A Heavily Commented Linux Kernel Source Code』
これはすごい… https://t.co/4ioIsRRLHW
— 結城浩 (@hyuki) August 21, 2019
PDFの日付は2019/01/24ですが、カーネルのバージョンは0.12となっています。なお自分のUbuntu 18.04 VMのカーネルバージョンは以下です。
$ uname -r
5.0.0-25-generic
つっつきボイス:「このPDF、Intelアーキテクチャのとっても基本的なところを最初の方でしっかり押さえてるのがいいですね❤️: 割り込みピンとかバスの図とかもちゃんとあるし、これ1冊でコンピュータアーキテクチャの授業数本分ぐらいのボリュームが集約されてる感」(以下Linux話が続く)
「このPDFが15年ぐらい前に出ていたら最高の教科書だったろうなって😆」「😆」「ボリュームめちゃ多いですし😅」「1000ページ超え!」「もし読み通すことができたら相当力付くかも💪」
なお以前のウォッチでもご紹介した『Linux Inside』↓のカーネルバージョンは、明言はされていませんが4.0.0-rc2という文字がありました。
- ドキュメント: Introduction · Linux Inside
- 作者のサイト: Just a memo · Just a memo
「こっちのLinux Insideは新しいのがいいところですね😋」「Linux 5ではないみたいでした」「cgroupsとかも扱ってるあたりが現代のLinux!」
なおLinux 5の公式ドキュメントは以下です。
⚓JavaScript
⚓clean-code-typescript
つっつきボイス:「見出しを眺めた感じではTypeScriptに限らない一般性の高そうな感じではありますね」「こういう話でTS独自のものってあんまり出てこなさそう😆」「言語固有の話と一般の話を分けてくれたらうれしい🙏」
「『Promiseよりasync/awaitを使え』とか、たしかに」「このあたりは言語固有っぽいですね😋」「Promiseって慣れないと読みにくい気が😅」
参考: async function - JavaScript | MDN
⚓CSS/HTML/フロントエンド/テスト
⚓8/27 12:00までのセール
⚓言語・ツール
⚓あまりに自然な英文を自動生成?
- 元記事: GPT-2: 6-Month Follow-Up
- リポジトリ: openai/gpt-2: Code for the paper "Language Models are Unsupervised Multitask Learners"
- 実行方法 How to Run OpenAI's GPT-2 T ext Generator on Your Computer
参考: 「危険すぎる」と言われたAIの自動文章作成ツール「GPT-2」のモデルが新たに公開へ - GIGAZINE
ちょっと試しに動かしてみました。
- 入力(Goby READMEより: 実際はもっと英文ニュース的な文が望ましい)
Goby is an object-oriented interpreter language deeply inspired by Ruby as well as its core implementation by 100% pure Go. Moreover, it has standard libraries to provide several features such as the Plugin system. Note that we do not intend to reproduce whole of the honorable works of Ruby syntax/implementation/libraries.
- 出力
======================================== SAMPLE 1 ========================================
In many cases, the project can use Java for various reasons. For example, we are interested in the Java and Java Virtual Machine. Another example was to work on a project based in Go. But we don't have that. The project is also looking at Open Source languages such as Go which can make development smoother.
Our goal is to create and maintain an open source program which provides a complete representation of the language without limitations and it enables programmers and engineers to work with Java and Java Virtual Machine (JVM) in a highly productive time. So, there is no way that the project can change its design.
In order to achieve this goal we are developing a Go application which consists of two files which you can read directly in the IDE. These files contain all the information you need to write a program. So, as you have read that code, you can understand how it works and make your own choices.
These two files are the src folder and src/classes folder.
If you are interested in learning them as well as working on them as an an IDE, you may see more information at our articles. The same code and documentation will be available at our websites.
We will also try to produce the most current version of the app from Go and we expect that you do not have an Java or Go IDE and you will only experience Go features when developing the project.<|endoftext|>"This is a very sad episode for him," said the head of one of the largest bitcoin companies in the world, Jihan Wu. "The CEO is already a very hard-working and loyal businessman. His staff is always helping out and there's a sense of selflessness in this guy that makes him very loyal to the people in this company."<|endoftext|>A recent report by the American Institute for Fiscal Studies says that the Trump administration is making a good case for the federal government to expand healthcare to poor people — a position that it's taken in past legislative successes.
The administration has pushed to tighten up its health care requirements by requiring all Americans to have coverage before receiving an insurance plan or paying a penalty. This has helped expand Medicaid, which under Obamacare has run out of money.
But the president has indicated that he wants Congress to push for a similar expansion because of his belief that more people would be able to become members of the health-care system.
Read the analysis in the September 23, 2017 issue of The Daily Axios.
This is exactly what the White House
@article{radford2019language,
title={Language Models are Unsupervised Multitask Learners},
author={Radford, Alec and Wu, Jeff and Child, Rewon and Luan, David and Amodei, Dario and Sutskever, Ilya},
year={2019}
}
つっつきボイス:「CUDAとかTensorFlowとかが続々インストールされましたけど何とか動きました: たしかにかなりそれっぽい英文が生成されました」「この種の研究はかなり前から行われてますね☺️」「要約とかではない?」「入力の語群を元に記事を生成してるようです」「この英文が自然かどうか自分にはわかりそうにないです😅」
「そういえば論文の世界だとこういうので査読ハックしたりする人いたりしますね: 生成された文章を投稿してカンファレンスの審査を通したり🤣」「なんと🤣」「リポジトリに『生成した文にはcitation付けろ』とあるのもたぶんそれを念頭に置いてるんでしょうね😆」「そうやって生成した意味のありそうでない文章をcitationしてさらに...と繰り返すと謎のディープラーニング世界ができそう🤣」「日本語でできるようになったらすごいかも」「日本語自動生成の研究してる人いた気がするけど、日本語はなかなか自然な文章にならないみたいです🤔」「日本語は構造とか文体とかでいろいろ難しいかも😅」
⚓その他
⚓OCB2共通鍵暗号の脆弱性を事前に発見
国際標準規格の暗号OCB2を世界で初めて破ったNECの峯松さん、井上さんたちの成果を中心に名古屋大の岩田先生の成果も含めて出ている論文。暗号のトップ国際会議CRYPTOでBest Paper Awardを受賞してる。素晴らしい。https://t.co/LitS5SkK67
— Toshihiro Ohigashi (@higa_t) August 20, 2019
⚓その他のその他
【円を3等分する選手権表彰】
数学クラスタにケーキを切らせるとこうなる pic.twitter.com/CKH1fgxYh8— 数学を愛する会 (@mathlava) August 20, 2019
つっつきボイス:「ケーキの3等分🎂」「最優秀賞の六芒星スゴい😳」「全部直線なのにできてるっぽいし」「画期的」「ツイートの続きもめちゃ盛り上がってます」「4等分し続けるの好き😆」
⚓番外
⚓夢の図書館@青梅
「模型とラジオの博物館」展示棚紹介
1960年代から1970年代後半までの模型と無線機を展示しています
手前はシャック風の読書テーブルです
CQ Ham radioやHam Journal、初歩のラジオを創刊号から読めます
ラジオの製作、模型とラジオも多数所蔵しています
戦前のラジオ誌、模型誌、海外無線誌も読めます pic.twitter.com/UyPa4vM0XX— #夢の図書館+マイコン博物館+模ラ博物館(公式) (@Dream_Library_) May 24, 2019
BASIC Computer Gamesの中で1番人気はStarTrekゲームだった
原型は1967年頃にカーネギーメロン大学で作られた
1973年にAhl氏などによりPDP11への移植と機能追加が行われた
大きなプログラムなのでRAMを48Kbyteに拡張しないと動かなかった
StarTrekを動かすために自作マイコンの拡張に励んだ日々だった pic.twitter.com/1ViTCtXIjN— #夢の図書館+マイコン博物館+模ラ博物館(公式) (@Dream_Library_) May 18, 2019
所蔵書籍紹介 NHKコンピュータ講座 ミニコンによる基礎コース
1973年からNHK教育テレビで放送された
講師は数学者の島内剛一 先生
スタジオ内にミニコンHITAC-10Ⅱを持ち込み操作する画期的番組だった
テレタイプ ASR-33を操作してFORTRANのよるプログラミングを実習した
テレタイプの動作は圧巻だった pic.twitter.com/3ti3RZ4Z54— #夢の図書館+マイコン博物館+模ラ博物館(公式) (@Dream_Library_) June 15, 2019
つっつきボイス:「ものすごい量の技術雑誌や実機をコレクションしてるらしくて、そのうち行ってみたいと思ってたので貼ってみました」「『CQハムラジオ』とかあるし😆」「青梅ちょと遠いかな😆」
今回は以上です。
バックナンバー(2019年度第3四半期)
週刊Railsウォッチ(20190821-2/2後編)11のgemにバックドア、ruby-jp Slackがとてもアツい、Fullstaq Rubyでチューンアップ、HTTPサービス監視chaoほか
- 20190819-1/2前編 祝: Rails 6がついにリリース、RailsガイドもRails 6に対応、Arelはpublicだったかほか
- 20190806-2/2後編 RSpec CopのLeakyConstantDeclaration、serveoでゼロコンフィグ公開、RuboCopのPerformance/RegexpMatch改修ほか
- 20190805-1/2前編 Rails 6のActive Recordは速くなった、Windows WSL2+VSCodeでのRails開発、Martin Fowler記事ほか
- 20190730-2/2後編 Docker 19.03の新機能に注目、ngrokはスゴい、redis-namespaceほか
- 20190729-1/2前編 Rails 6のリリースは近そう?、Evil MartiansのRails+Docker記事、Railsパフォーマンス測定ほか
- 20190723-2/2後編 Rails 6 rc2がリリース、「MySQLパフォーマンスチューニングTips」が超便利、Aurora Serverlessほか
- 20190722-1/2前編 Rails 6エラー画面の改良点、Dateを四捨五入できるtime_calc、Rackミドルウェアのデザインパターンほか
- 20190717-2/2後編 NFSのよさとは、Linuxカーネル5.2リリース、Puppeteerでメモリリーク検出ほか
- 20190709-2/2後編 strong_password v0.0.7がハイジャックされていた、TerraformとCloudFormation、CSSの設計ミスリストほか
- 20190708-1/2前編 ActiveRecord::FixtureSetがめちゃ強くなってた、MacだとRubyが遅い理由、Puma 4登場ほか
- 20190701 RMagickのメモリ使用量が劇的に改善、インスタンス変数の定義順で速度が変わる?、GitLab CIランナーをローカルで回すほか
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSなど)です。