The document discusses differences between Ruby and Scala programming languages. Some key similarities include both being class-based object-oriented languages with functional features. Differences include Scala using explicit types while Ruby is dynamically typed, and Scala having separate concepts of methods and functions while Ruby blurs the distinction. The document also compares features like class definitions, collections, functions as values, and enhancing existing classes.
Weaving Dataflows with Silk - ScalaMatsuri 2014, TokyoTaro L. Saito
Silk is a framework for building dataflows in Scala. In Silk users write data processing code with collection operators (e.g., map, filter, reduce, join, etc.). Silk uses Scala Macros to construct a DAG of dataflows, nodes of which are annotated with variable names in the program. By using these variable names as markers in the DAG, Silk can support interruption and resume of dataflows and querying the intermediate data. By separating dataflow descriptions from its computation, Silk enables us to switch executors, called weavers, for in-memory or cluster computing without modifying the code. In this talk, we will show how Silk helps you run data-processing pipelines as you write the code.
Weaving Dataflows with Silk - ScalaMatsuri 2014, TokyoTaro L. Saito
Silk is a framework for building dataflows in Scala. In Silk users write data processing code with collection operators (e.g., map, filter, reduce, join, etc.). Silk uses Scala Macros to construct a DAG of dataflows, nodes of which are annotated with variable names in the program. By using these variable names as markers in the DAG, Silk can support interruption and resume of dataflows and querying the intermediate data. By separating dataflow descriptions from its computation, Silk enables us to switch executors, called weavers, for in-memory or cluster computing without modifying the code. In this talk, we will show how Silk helps you run data-processing pipelines as you write the code.
Slides from my talk at the Feb 2011 Seattle Tech Startups meeting. More info here (along with powerpoint slides): http://www.startupmonkeys.com/2011/02/scala-frugal-mechanic/
Scala Refactoring for Fun and Profit (Japanese subtitles)Tomer Gabel
A talk given at Scala Matsuri 2016 in Tokyo, Japan.
New Scala practitioners often experience the uncomfortable feeling of "not quite getting it." If you've studied the syntax and written tests, maybe production code; if you're becoming comfortable with the language and libraries, but keep worrying that there's "a better way", or that your code isn't "idiomatic enough" - this session is for you.
By refactoring a real, live codebase, this talk will provide you with new tools and increased confidence. Between the provided examples and the ensuing discussion, you will walk away with a better feel for Scala and how to employ it in the real world.
Scala is a programming language that mixes object oriented and functional programming in a powerful and flexible way. While it can not be considered as a mainstream language, it has seen a growing adoption trend.An important ingredient for this diffusion is its complete interoperability with Java and the fact that it runs on a solid platform such as the JVM.
It is currently the 4th most loved programming language and the 2nd top paying technology of 2016 (StackOverflow Developers Survey).
These slides have been used for a 4h seminar at the University of Cagliari the 17th of December 2016
While the Java platform has gained notoriety in the last 15 years as a robust application platform with a thriving ecosystem and well-established practices, the Java language has had its share of criticism. Highly verbose, overly didactic, limited feature set; whichever flavor of criticism you prefer, it's patently obvious that Java is playing catch up to more modern languages with a less rigid evolution path.
The language landscape today is vastly different than it had been five or ten years ago; a wide array of languages are available, designed to suit a variety of flavors: Groovy, Clojure, Scala, Gosu, Kotlin... which should you choose? This lecture focuses on one company's decision to focus on Scala, and presents a case study based on our experiences using Scala in practice, in the hope of providing much-needed real world context to assist your decision.
This presentation was used for the Scala In Practice lecture at the Botzia Israeli Java User Group meeting, May 3rd 2012.
Scala in-practice-3-years by Patric Fornasier, Springr, presented at Pune Sca...Thoughtworks
3 years ago, Springer decided to use Scala on a large, strategic project. This talk is about the journey the development teams made. Why did they choose Scala in the first place? Did they get what they hoped for? What challenges and surprises did they encounter along the way? And, most importantly, are they still happy with their choice?
With Java 8 adoption skyrocketing, is Scala still relevant? In our opinion, the answer is an unequivocal yes. To make our point, Tomer Gabel (system architect at Wix) will showcase practical examples where Scala's features provide a definitive advantage over Java 8. These include:
* Effective logging with traits and by-name parameters;
* Pattern matching for fun and profit;
* Type-safe, efficient serialization with type classes.
A talk given at a Wix Ukraine R&D meetup in Dnipropetrovsk, Ukraine on 6 April, 2016.
Video recording: https://youtu.be/EXxA3PlcdBg?t=3680
Sample code: https://github.com/holograph/scala-vs-java8
Look past the square braces and the damned header files and Objective-C -- the essential language of iOS development -- really isn't that different from other object-oriented languages. Classes, single-inheritance, polymorphism, implementation hiding... check, check, check, and check. So it's really not that difficult for old Java / Python / Ruby / C++ dogs to learn new tricks once they install Xcode, right?
To be a competent Obj-C programmer, not that hard.
To be a great Obj-C programmer... now that's another story.
In this session, we will look at traits that are unique to Objective-C, the tricks that bring out the expressiveness and power of the language. We'll also look at how to write idiomatic code that will be easily understood and maintained by other Objective-C developers. We'll look at how Automatic Reference Counting resembles but is really nothing like Garbage Collection, how properties put plain old instance variables to shame, how we loosely couple classes with delegates and notification, how blocks help us un-block our code by simplifying asynchronicity, and more.
Presented at BJUG, 6/12/2012 by Roger Brinkley
This talk is on 55 new features in Java 7 you (probably) didn't hear about in an ignite format of one per minute. No stopping, no going back....Questions, sure but only if time remains (otherwise save for later).
This is brief presentation on the Scala programming language. It is aimed at Java developers who are curious about Scala. It was given at a San Francisco Java User Group in January 2009.
Slides from my talk at the Feb 2011 Seattle Tech Startups meeting. More info here (along with powerpoint slides): http://www.startupmonkeys.com/2011/02/scala-frugal-mechanic/
Scala Refactoring for Fun and Profit (Japanese subtitles)Tomer Gabel
A talk given at Scala Matsuri 2016 in Tokyo, Japan.
New Scala practitioners often experience the uncomfortable feeling of "not quite getting it." If you've studied the syntax and written tests, maybe production code; if you're becoming comfortable with the language and libraries, but keep worrying that there's "a better way", or that your code isn't "idiomatic enough" - this session is for you.
By refactoring a real, live codebase, this talk will provide you with new tools and increased confidence. Between the provided examples and the ensuing discussion, you will walk away with a better feel for Scala and how to employ it in the real world.
Scala is a programming language that mixes object oriented and functional programming in a powerful and flexible way. While it can not be considered as a mainstream language, it has seen a growing adoption trend.An important ingredient for this diffusion is its complete interoperability with Java and the fact that it runs on a solid platform such as the JVM.
It is currently the 4th most loved programming language and the 2nd top paying technology of 2016 (StackOverflow Developers Survey).
These slides have been used for a 4h seminar at the University of Cagliari the 17th of December 2016
While the Java platform has gained notoriety in the last 15 years as a robust application platform with a thriving ecosystem and well-established practices, the Java language has had its share of criticism. Highly verbose, overly didactic, limited feature set; whichever flavor of criticism you prefer, it's patently obvious that Java is playing catch up to more modern languages with a less rigid evolution path.
The language landscape today is vastly different than it had been five or ten years ago; a wide array of languages are available, designed to suit a variety of flavors: Groovy, Clojure, Scala, Gosu, Kotlin... which should you choose? This lecture focuses on one company's decision to focus on Scala, and presents a case study based on our experiences using Scala in practice, in the hope of providing much-needed real world context to assist your decision.
This presentation was used for the Scala In Practice lecture at the Botzia Israeli Java User Group meeting, May 3rd 2012.
Scala in-practice-3-years by Patric Fornasier, Springr, presented at Pune Sca...Thoughtworks
3 years ago, Springer decided to use Scala on a large, strategic project. This talk is about the journey the development teams made. Why did they choose Scala in the first place? Did they get what they hoped for? What challenges and surprises did they encounter along the way? And, most importantly, are they still happy with their choice?
With Java 8 adoption skyrocketing, is Scala still relevant? In our opinion, the answer is an unequivocal yes. To make our point, Tomer Gabel (system architect at Wix) will showcase practical examples where Scala's features provide a definitive advantage over Java 8. These include:
* Effective logging with traits and by-name parameters;
* Pattern matching for fun and profit;
* Type-safe, efficient serialization with type classes.
A talk given at a Wix Ukraine R&D meetup in Dnipropetrovsk, Ukraine on 6 April, 2016.
Video recording: https://youtu.be/EXxA3PlcdBg?t=3680
Sample code: https://github.com/holograph/scala-vs-java8
Look past the square braces and the damned header files and Objective-C -- the essential language of iOS development -- really isn't that different from other object-oriented languages. Classes, single-inheritance, polymorphism, implementation hiding... check, check, check, and check. So it's really not that difficult for old Java / Python / Ruby / C++ dogs to learn new tricks once they install Xcode, right?
To be a competent Obj-C programmer, not that hard.
To be a great Obj-C programmer... now that's another story.
In this session, we will look at traits that are unique to Objective-C, the tricks that bring out the expressiveness and power of the language. We'll also look at how to write idiomatic code that will be easily understood and maintained by other Objective-C developers. We'll look at how Automatic Reference Counting resembles but is really nothing like Garbage Collection, how properties put plain old instance variables to shame, how we loosely couple classes with delegates and notification, how blocks help us un-block our code by simplifying asynchronicity, and more.
Presented at BJUG, 6/12/2012 by Roger Brinkley
This talk is on 55 new features in Java 7 you (probably) didn't hear about in an ignite format of one per minute. No stopping, no going back....Questions, sure but only if time remains (otherwise save for later).
This is brief presentation on the Scala programming language. It is aimed at Java developers who are curious about Scala. It was given at a San Francisco Java User Group in January 2009.
Node.js vs Play Framework (with Japanese subtitles)Yevgeniy Brikman
Video: http://www.nicovideo.jp/watch/1410857293
Here's the showdown you've been waiting for: Node.js vs Play Framework. Both are popular open source web frameworks that are built for developer productivity, asynchronous I/O, and the real time web. But which one is easier to learn, test, deploy, debug, and scale? Should you pick Javascript or Scala? The Google v8 engine or the JVM? NPM or Ivy? Grunt or SBT? Two frameworks enter, one framework leaves.
This version of the presentation has Japanese subtitles. For the English only version, see http://www.slideshare.net/brikis98/nodejs-vs-play-framework
"JavaScript in 2016" by Eduard Tomàs
Some years ago in a far far away company, Brendan Eich created JavaScript. A lot of things happened since then. Times changed, the web grown, the language itself was updated, and we as a developers need to adapt too. Last year the last standard of the language arose: ECMAScript 2015 is here, and has some new and interesting features. In this talk we will show the most relevant ones, and also we will introduce some interesting patterns that you can use in JavaScript: you'll learn how to master the language and made JavaScript your best ally to conquest the world!
Since its first public release over two decades ago, the Java platform has become ubiquitous in virtually all areas of computing; from embedded systems to enterprise applications. As the demands of modern software development have evolved, so too have programming languages. There are many languages on the Java platform designed to be a “better Java”; though none are as widespread as Java itself. Despite the somewhat conservative nature of Java as a language, there have been a number of notable additions designed to address the challenges developers face without breaking compatibility. This presentation aims to provide an overview of the newer language features and APIs in recent releases of Java in the hope of increasing developer productivity.
Introduction to Kotlin Language and its application to Android platformEastBanc Tachnologies
Author: Oleg Godovykh, eastbanctech.com
Kotlin is a new programming language built by Jetbrains and is a new member of JVM family. As opposed to typical reason to introduce some new language, Kotlin main goal isn't to create new paradigm or fill a new niche, but to make routine tasks much easier and safer. Kotlin gains popularity across Android developer community, and in this presentation it is shown how Kotlin usage can dramatically simplify typical mobile app development.
This Presentation depicts JavaScript concept for Csharp developer.It helps to understand the concepts of JavaScript resembling/differentiate them with C# concepts.
Scala: Object-Oriented Meets Functional, by Iulian Dragos3Pillar Global
A presentation from Iulian Dragos of Typesafe that gives an overview of the Scala programming language. The presentation was given at a Functional Angle conference in Timisoara, Romania sponsored by 3Pillar. Iulian Dragos has been working on Scala since 2004. He currently works for Typesafe, a start-up that was co-founded by Scala’s creator, Martin Odersky.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
8. My background
• Sistem Integrator(2008-2012)
• Buisiness batches
• Recommendation system
• With Java
• Social game servicer
• Browser based social game server
• With Rails
• DSP servicer
• Adverting technology(Real-time bidding, user trakcing, machine
learning)
• With Scala
• Vim
9. What is DSP
Ad
Clients
DSP SSP
I'm here Pages
real time bidding(RTB)
Web
• "Demand Side Platform"
• You can find detailed description in at Internet.
10. Today I NOT talk to:
• How to build high-performance system
• DO THE RIGHT THING and KEEP GOING,
thats all.
• How to speed up compilation time
• BUY FASTER MACHINE
• Whitch is greatest language
• Every language has own good things
• BE PEACEFUL
11. I moved from Ruby
to Scala, in this April
• That is smoother than I thought.
• Basically, Ruby and Scala has common attributes
• object-oriented and functional paradigm
• Modern features for productivity and fun
12. Ruby and Scala is Class-based Object
Oriented language
• Class based object oriented language
class Person(val name:String, val age:Option[Int]) {
def hello():Unit = {
class Person < Struct.new(:name, :age)
def hello
puts "Hello there, my name is #{name}."
end
end
println(s"Hello there, my name is ${name}.")
}
}
13. At first: Common attributes of Ruby
and Scala
• Class based object oriented language with
functional features
def sumOfAge(people:Seq[Person]):Int = {
people.map(_.age).flatten.foldLeft(0)(_ + _)
}
def sum_of_age(people)
people.map(&:age).compact.reduce(0, &:+)
end
14. At first: Common attributes of Ruby
and Scala
• "Fun" language
• "Rubyをキメると気持ちいい"(Matz)
• I can't translate it...
• →
• "Maybe most important is that programming in
Scala tends to be very enjoyable."
16. Class definition
class Person(val name:String, val age:Option[Int])
val person = new Person("tode sking", Some(31))
class Person < Struct.new(:name, :age)
end
person = Person.new("tode sking", 31)
17. Class definition in Ruby
"class" for class
definition
class Person < Struct.new(:name, :age)
"<" means "extends" Create new instance of Struct
WHAT?!
Creating new instance at class definition?!?!
18. Let's begin most plain case
class Person
def initialize(name, age)
@name = name
@age = age
end
def name; @name; end
def name=(val); @name = val; end
def age; @age; end
def age=(val); @age = val; end
end
"def" for method
definition
method named "initialize"
is treated as ctor
"@name" is instance variable
getter and setter methods
Lot of boilerplate
19. Auto generating accessor method
in Ruby
class Person
def initialize(name, age) ...
attr_reader :name
attr_reader :age
end
"attr_reader" is keyword for
generating accessor method
"attr_writer" and "attr_reader"
is also available
NO, actually it is not
KEYWORD
It just a METHOD.
20. Auto generating accessor method
in Ruby
attr_accessor :name
≒
define_method("name") { @name }
define_method("name=") {|val| @name = val }
≒
def name; @name; end
def mane=(val); @name = val; end
21. Ruby is DYNAMIC language
• EVERYTHING is object
• Class is object too
• o = Object.new; o.class => Object
• If you want to create new class, try A = Class.new
• (assign constant A to fresh class object)
• To define a method to A, try A.define_method(:foo){...}
• (actually, define_method is "private". You should
use A.instance_eval { define_method(:foo) ... })
22. It called "Macro" in Ruby
• Such method called "macro"(Actually, it is just a
method!!)
• Ruby has no "compile-time". all execution is in
"runtime"
23. Defining accessor method:
Ruby and Scala
• scala
• var foo
• roughly equal to { private[this] var foo_; def foo
= foo_ }
• specialized syntax for accessor
• Ruby
• attr_*
• Enhance class definition with DSLs
24. Auto generating accessor method
in Ruby
class Person < Struct.new(:name, :age)
Create a new instance of
Struct
Struct is a kind of Class
≒
PersonBase = Struct.new(:name, :age)
class Person < PersonBase
25. Auto generating accessor method
in Ruby
Struct.new(:name, age) returns class that like
class (unnamed)
def initialize(name, age)
@name, @age = name, age
end
attr_accessor :name
attr_accessor :age
# other utility methods...
end[
26. Class definition
class Person(val name:String, val age:Option[Int])
val person = new Person("tode sking", Some(31))
class Person < Struct.new(:name, :age)
end
person = Person.new("tode sking", 31)
27. Function as value
• Scala:
• val f:Int => Int = _ + 1
• f(1) //=> 2
• val g:Any => String = _.toString
• Ruby
• f = ->(x){x + 1}
• f.call(1) or f[1] or f.(1)
• mehod and value is strongly separated
• g = ->(x){x.to_s}
28. Functions as value in other
languages
• Scheme: f, (f a b)
• javascript: f, f(a, b)
• Common Lisp: #'f, (f a b), (funcall #'f (list arg1
arg2))
29. Use function as value: Scala
case
• def foo(x:Int):String
• val f = foo // not works
• val f = foo _ // works
• def bar(f:Int => String)
• bar(foo) // works
• bar(x => x.toString)
• bar { x => x.toString }
• bar(_.toString)
30. Use function as value: Ruby
case
• def foo(x)
• f = method(:foo)
• f = ->(x){ foo(x) }
• def bar1(f)
• def bar2(&f)
• bar1(f)
• bar2 {|x| foo(x) }
• bar2(&f)
31. Use any object as function
• [1, 2, 3].map(&:to_s) #=> ["1", "2", "3"]
• map(&:to_s)
• It behave like Scala's map(_.toString)
• If block value is given, Ruby runtime call its
"to_proc" method and use the result value as
block.
• Ruby's Symbol class has to_proc method
• :to_s.to_proc #=> {|obj| obj.to_s }
33. Collections
Map HashMap
TupleN
LinkedHashMa
p
HashMap
Seq
immutabl
e
LinkedHashMa
p
List
Stack
mutable
Buffer
Traversabl
e
Enumerable
Hash
{key => value}
Array
[1, 2, 3]
(a, b)
34. Ruby has "Big" classes
• "Array" is generic, mutable data structure, it can,
push/pop, shift/pop, insert, indexed and
sequential access, and also used as tuple
• "Hash" is generic, mutable (and only) key-vakue
map structure in Ruby standard library
35. Transform collection in Big-class
style
• [1, 2, 3].map(&:to_s) #=> ["1", "2", "3"]
• Ruby has few Big collection classes. Everything
goes simple.
36. Transform collection in Scala
• Iterator[A].map(f:A => B):Iterator[B]
• List[A].map(f:A => B):List[B]
• BitSet.map(f:Int => Int):BitSet
• BitSet.map(f:Int => String):SortedSet[String]
• Magic "CanBuildFrom" implicit argument is used to
solve this problem.
• def map[B, That](f: (Int) ⇒ B)(implicit bf:
CanBuildFrom[A, B, That]): That
• Scala used types VERY MUCH.It's cool.
37. How to ehnahce existing class
in Scala
• implicit conversion
• subclassing
38. How to ehnahce existing class
in Ruby
• subclassing
• direct modification(simplly
overwrite/alias_method_chain)
• define singleton method
• include/extend
• refinements
39. How to handle "non-existens
value"
• Scala: Option[T]
• Ruby: ♥nil♥
• false and nil is "falsy". Other values are "truthy".
• obj.foo if obj # call obj.foo if obj is not nil
• obj.try(:foo) # same (ActiveSupport feature)
40. Conclusion
• Ruby and Scala is very different, but they share
same goal: be productive, be fun.
• There are many different approach to solve
problems.We can learn things and achieve fresh
surprise from other culture.
Have a fun with various programming!!
41. Today I want talk to:
• Libraries
• rubygems: High accessibility
• Source distribution
• Easy to publish
• maven repo: Top on Java ecosystem
• Some impedance missmatch
• Binary distribution
• Bit difficult to publish, especially official repo.
• Build/Task system
• Rake: Simple scripting with internal DSL
• Sbt: Type-safe and immutable dependency graph construction with cool := ++= <<= s
• It's Scala's way!!
• Community
• Ruby: Humanity
• Love emotional context
• Scala: Types
• Love Monads !!!!