Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Recent Updates (近況報告)
Search
yhara
September 21, 2014
Programming
0
590
Recent Updates (近況報告)
2014/09/21 RubyHiroba2014
yhara
September 21, 2014
Tweet
Share
More Decks by yhara
See All by yhara
静的型付けプログラミング言語Shiika
yhara
0
18k
それは残像だ
yhara
4
4.2k
スモートーク
yhara
0
2.8k
Ovto: Frontend web framework for Rubyists
yhara
0
7.1k
Ruby, Opal and WebAssembly
yhara
2
2.4k
Competitive Programming in Ruby (101)
yhara
0
670
Rubyで競技プログラミング(入門編)
yhara
0
1.8k
良いデバッグログはプロジェクトの資産である
yhara
54
18k
Let's make a functional language!
yhara
0
6.3k
Other Decks in Programming
See All in Programming
[PyCon Korea 2024 Keynote] 커뮤니티와 파이썬, 그리고 우리
beomi
0
120
macOS でできる リアルタイム動画像処理
biacco42
9
2.2k
カスタムしながら理解するGraphQL Connection
yanagii
1
1.4k
WEBエンジニア向けAI活用入門
sutetotanuki
0
320
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
750
推し活の ハイトラフィックに立ち向かう Railsとアーキテクチャ - Kaigi on Rails 2024
falcon8823
6
2.6k
광고 소재 심사 과정에 AI를 도입하여 광고 서비스 생산성 향상시키기
kakao
PRO
0
160
Outline View in SwiftUI
1024jp
1
260
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
8
480
破壊せよ!データ破壊駆動で考えるドメインモデリング / data-destroy-driven
minodriven
17
4.3k
RailsのPull requestsのレビューの時に私が考えていること
yahonda
5
2.6k
C#/.NETのこれまでのふりかえり
tomokusaba
1
180
Featured
See All Featured
RailsConf 2023
tenderlove
29
890
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
810
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
27
2k
Ruby is Unlike a Banana
tanoku
96
11k
Code Review Best Practice
trishagee
64
17k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Agile that works and the tools we love
rasmusluckow
327
21k
Transcript
ۙگใࠂ (Latest News) ɹ Yutaka HARA ωοτϫʔΫ Ԡ༻௨৴ݚڀॴ 2014/09/21 RubyHiroba2014
Attendees from Matsue office — @nacl — @yukihiro_matz — @shugomaeda
— @takaokouji — @nobyuki — @nari3 — @yhara (me)
http://www.netlab.jp/recruit
My current project — github:yhara/boom — Toy language with type
inference — Will resume it as soon as I quit Ingress
Recent interests 1. "Ruby and Patten Match" 2. "Ideal way
to map a hash" 3. "Opal the Ruby to JS compiler"
1. Ruby and Patten Match
Ruby HAS pattern match (via gem) — pattern-match gem (@k_tsj)
— patm gem (@todesking, limited but faster) — egison gem (@__Egi, RubyKaigi Day 1)
ɹ Pattern Match is like Regexp for Objects
Match regexp against string ʮIf the string is like thisʯ
str = "add 1 2" if str =~ /add (\d+) (\d+)/ puts "Add #{$1} and #{$2}" end
Match pattern against array ʮIf the array is like thisʯ
require 'pattern-match' ary = [:add, 1, 2] match(ary){ with(_[:add, x, y]){ puts "Add #{x} and #{y}" } }
Match pattern against your class class Book # has :title,
:price ... def self.deconstruct(val) accept_self_instance_only(val) return [val.title, val.price] end end book = Book.new("Programming Ruby", 3400) match(book){ with(Book.(/Ruby/, 0..5000)) { p book } }
Try it now. $ gem install pattern-match require 'pattern-match' match(1){
with(x){ p x } } github:k-tsj/pattern-match
2. Ideal way to map a hash
My proposals accepted — #1961 __dir__ — #4890 Enumerable#lazy —
#6670 String#lines should return array and one more challenge:
Current hash.map — How to convert {:a => 1, :b
=> 2} into {"a" => 1, "b" => 2} h = {:a => 1, :b => 2} pairs = h.map{|k, v| [k.to_s, v] } #=> [["a", 1], ["b", 2]]
Hash#[] h = {a: 1, b: 2} pairs = h.map{|k,
v| [k.to_s, v] } #=> [["a", 1], ["b", 2]] Hash[pairs] #=> {"a" => 1, "b" => 2}
Enumerable#to_h (Ruby >= 2.1) h = {a: 1, b: 2}
pairs = h.map{|k, v| [k.to_s, v] } #=> [["a", 1], ["b", 2]] pairs.to_h #=> {"a" => 1, "b" => 2}
Ideal way h = {a: 1, b: 2} h.xxxxxx{|k, v|
[k.to_s, v] } #=> {"a" => 1, "b" => 2} xxxxxx == hash_map, map_hash, hash_by, morph, apply, map_kv, ...???
Join bugs.ruby-lang.org — Feature #10208: Passing block to Enumerable#to_h —
Feature #6669: A method like Hash#map but returns hash We need a good name :-( Any ideas?
3. Opal the Ruby to JS compiler
http://opalrb.org/
http://opalrb.org/ — Compiler from Ruby to JavaScript — Some difference,
but mostly Ruby — String is immutable, etc.
Why Opal matters #1 JavaScript x HTML5 JavaScript x WebSocket
JavaScript x WebRTC JavaScript x Mobile ...
Why Opal matters #1 Ruby(Opal) x HTML5 Ruby(Opal) x WebSocket
Ruby(Opal) x WebRTC Ruby(Opal) x Mobile ...
Why Opal matters #2 — Two languages [Client] [Server] JavaScript
---> Rails(Ruby) <---
Why Opal matters #2 — One language! [Client] [Server] Opal(Ruby)
---> Rails(Ruby) <---
One language for C/S — No context switch — Share
logic among C/S (validation, etc.) — Pre-render view on the server side cf. Rendr, Meteor (Node.js)
Related products Check it out! — For #1: github:yeahrb/yeah "Practical
Ruby video game framework" — For #2: github:voltrb/volt "A ruby web framework where your ruby runs on both server and client"
None
Yeahrb Demo $ gem i yeah $ yeah new hello
$ cd hello $ yeah serve $ open http://localhost:1234 $ vi code/game.rb
Yeahrb Demo code/game.rb: class Hello1 < Game def setup end
def update(elapsed) display.fill_color = C[255,255,255] display.fill_rectangle(V[0,0], display.size) end end
Yeahrb Demo Feels like so Ruby that you never want
to go back to JavaScript :-)
ۙگใࠂ: I'm enjoying programming.