SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
https://github.com/rssh/scala-gopher 
scala-gopher: 
asynchronic CSP implementation (go-like channels) 
for scala. 
Ruslan Shevchenko <ruslan@shevchenko.kiev.ua> 
@rssh1
https://github.com/rssh/scala-gopher 
• CSP = Communicating Sequential Process. 
• Tony Hoar. 
• classical paper from 1978 
• book: http://www.usingcsp.com/ (1985) 
• Languages 
• Occam (1983) for specialized hardware [transputers] 
• Go (2007) - become well-know: 
• Rob Pike (C, Plan9) 
• in Google
https://github.com/rssh/scala-gopher 
Write (“blocked”) Read (“blocked”) 
Channel (buffered) 
Channel (unbuffered) 
Computation blocks 
are connected 
by channels 
// in INMOS transputers - physically
Flow A Flow B
Flow A Flow B
Flow A Flow B
Flow A Flow B
Flow A Flow B
Flow A Flow B
Flow A Flow B
Flow A Flow B
https://github.com/rssh/scala-gopher 
❖ Simple mental model 
❖ Ability to “coordinate” between input/output sinks 
go func(){ 
for { select { 
case x <- inX: 
var y <- inY 
if (x == y) { 
fmt.fprintf(“Bingo!”) 
} 
case q <- inQuit: 
break; 
} }() 
}
https://github.com/rssh/scala-gopher 
❖ Simple mental model 
❖ Ability to “coordinate” between import 
go func(){ 
for { select { 
case x <- inX: 
var y <- inY 
if (x == y) { 
fmt.fprintf(“Bingo!”) 
} 
case q <- inQuit: 
break; 
} }() 
} 
waits
https://github.com/rssh/scala-gopher
https://github.com/rssh/scala-gopher 
scala-gopher: 
• Not ‘emulation of go in scala’ but 
• ‘CSP constructs in scala-way' 
• Asynchronous 
• build on top of Akka and SIP 22 - async
https://github.com/rssh/scala-gopher 
go func(){ 
for { select { 
case x <- inX: 
var y <- inY 
if (x == y) { 
fmt.fprintf(“Bingo!”) 
} 
case q <- inQuit: 
break; 
} }() 
} 
select.forever { 
case x: inX.read => 
val y = inY.read 
if (x == y) { 
Console.println(“Bingo!”) 
} 
case q: inQuit.read => 
currentFlow.exit(()) 
} 
Go Scala
https://github.com/rssh/scala-gopher 
go func(){ 
for { select { 
case x <- inX: 
var y <- inY 
if (x == y) { 
fmt.fprintf(“Bingo!”) 
} 
case q <- inQuit: 
break; 
} }() 
} 
select.forever { 
case x: inX.read => 
val y = inY.read 
if (x == y) { 
Console.println(“Bingo!”) 
} 
case q: inQuit.read => 
currentFlow.exit(()) 
} 
Go Scala 
3 constructions (common combination)
https://github.com/rssh/scala-gopher 
select.forever { 
case x: inX.read => 
val y = inY.read 
if (x == y) { 
Console.println(“Bingo!”) 
} 
case q: inQuit.read => 
currentFlow.exit(()) 
} 
// select.forever: basic construct 
Scala
https://github.com/rssh/scala-gopher 
select.forever { 
case x: String if (x==(inX|1inX2).read) => 
val y = inY.read 
if (x == y) { 
Console.println(“Bingo!”) 
} 
case q: Boolean if (q==inQuit.read) => 
currentFlow.exit(()) 
} 
Scala
https://github.com/rssh/scala-gopher 
Unblocked: 
selector: 
forever: apply(choice: PartialFunction[Any,Unit]): Future[Unit] 
once: apply[T](choice: PartialFunction[Any,T]): Future[T] 
go[T]: Future[T] 
“Blocked”: (must be inside ‘go’ or ‘async’ ): 
forever: foreach(choice: PartialFunction[Any,Unit]): Unit 
once: foreach[T](choice: PartialFunction[Any,T]): T
https://github.com/rssh/scala-gopher 
Inside Partial Function: 
❖ reading from Input[A] and do something 
❖ Channel[A], Future[A], user input 
❖ writing to Output[A] and do something 
❖ Channel[A], user output 
❖ do something on idle. 
“ do something” wrapped in async block, 
so we can ‘block’ there
https://github.com/rssh/scala-gopher 
Input[A]: 
❖ unblocked: 
❖ aread, atake, aforeach 
❖ ‘blocked:’ 
❖ read, take, foreach …. 
❖ composition 
❖ map, filter, zip, or, dup 
❖ construction 
open: ‘wait’ 
closed: throw exception on 
reading after ‘last’ element 
❖ channel, future, collection, own implementation
https://github.com/rssh/scala-gopher 
Output[A]: 
❖ unblocked: 
❖ awrite, awriteAll, 
❖ ‘blocked:’ 
❖ write, writeAll …. 
❖ composition 
❖ — (?) 
❖ construction 
open: ‘wait’ 
closed: throw exception on 
writing element 
❖ channel, own implementation
https://github.com/rssh/scala-gopher 
Channel[A]: 
❖ Input[A] + Output[A] 
❖ garbage-collected. 
❖ gopherApi.makeChannel 
❖ can be buffered
https://github.com/rssh/scala-gopher 
Timeouts: 
val (inReady, inTimeouts) = in.withInputTimeouts(in, 30 seconds) 
for(s <- selector.forever) { 
case a:inReady.read => 
Console.println(s“received ${a}”) 
case t:inTimeouts => 
Console.println(“timeout occurred”) 
} 
Input => withInputTimeouts 
Output => withOutputTimeouts
https://github.com/rssh/scala-gopher 
go[T](T :=> Future[T]) 
❖ async + defer/recover 
❖ defer(callback: =>Unit): Unit 
[finally] 
❖ recover(handler: PartialFunction[Throwable,T]):Boolean 
go { 
val source = fetchSource(url) 
val csv = parseCsv(source) 
val svFile = new FileOutputStream(csv.name, append=true) 
defer{ 
val r = recover{ 
case FileNotFoundException => signal(“file not found”) 
} 
if (!r) svFile.close() 
} 
for(s <- csv.data) svFile.print(s) 
} 
[catch]
https://github.com/rssh/scala-gopher 
go[T](T :=> Future[T]) 
go { 
val source = fetchSource(url) 
val csv = parseCsv(source) 
val svFile = new FileOutputStream(csv.name, append=true) 
defer{ 
val r = recover{ 
case FileNotFoundException => signal(“file not found”) 
} 
if (!r) svFile.close() 
} 
for(s <- csv.data) svFile.print(s) 
}
https://github.com/rssh/scala-gopher 
goScope[T](T :=> T) 
goScope { 
val in = new FileInputStream(inf) 
defer { in.close() } 
val out = new FileOutputStream(outf) 
defer{ out.close() } 
out.getChannel().transferFrom(in.getChannel, 
0,Long.MaxValue) 
}
https://github.com/rssh/scala-gopher 
❖ All “essential” functionality of CSP model 
❖ Fully asynchronous implementation 
❖ In normal language, with generic, typing, .. 
❖ …. more: scala is object-oriented.
https://github.com/rssh/scala-gopher 
Reusable block: 
❖ Set of input and output ports. 
❖ Some internal state 
❖ Functionality for signal transformations 
Transputer:
https://github.com/rssh/scala-gopher 
trait Bingo extends SelectTransputer { 
val inX = InPort[Int]() 
val inY = InPort[Int]() 
val out = OutPort[Boolean]() 
loop { 
case x: inX.read => 
val y = inY.read 
Console.println(s"Bingo checker, received ${x}, ${y}”) 
out.write(x==y) 
} 
}
https://github.com/rssh/scala-gopher 
trait Acceptor extends SelectTransputer { 
val inA = InPort[Boolean]() 
@volatile var (nBingos, nPairs) = (0,0) 
loop { 
case x: inA.read => 
Console.println(s"acceptor: ${nPairs} ${nBingos} ${x}") 
if (x) { 
nBingos += 1 
} 
nPairs += 1 
} 
}
https://github.com/rssh/scala-gopher 
val inX = gopherApi.makeChannel[Int]() 
val inY = gopherApi.makeChannel[Int]() 
val bingo = gopherApi.makeTransputer[Bingo] 
val acceptor = gopherApi.makeTransputer[Acceptor] 
bingo.inX connect inX 
bingo.inY connect inY 
bingo.out connect acceptor.inA 
(bingo + acceptor).start()
https://github.com/rssh/scala-gopher 
Transputers 
❖ Like ‘actors’ but works with ports 
❖ Connected via channels. 
❖ Restartable 
// in remind of INMOS transputers
Select 
select.foreach { 
…………… 
}
Par 
P1 
P2 P3 
P1 + P2 + P3
Replicate 
Mapping 
gopherApi.replicate[X](5)
Replicate 
gopherApi.replicate[X](5).in.distribute(_ % 10) 
Mapping 
Element e from in will be directed to (e%10) instance of X
https://github.com/rssh/scala-gopher 
❖ Select: [handle one transformation] 
❖ Parallel[ transputers are run in parallel] 
❖ Replicated 
❖ [ run in parallel N instances.] 
❖ [ custom logic for port shuffling ] 
Transputer Supervisor => ActorSystem 
Transputers
Implementation
Implementation 
sealed trait Continuated[T] 
case class ContRead[A,T]( callback , input, flow) extends Continuated[T] 
case class ContWrite[A,T]( callback , output, flow) .. 
case class ContSkip[T](callback, flow) … 
case class Done[T]( value , flow) …….. 
case object Never ………. 
// simular to Iteratee
Implementation 
sealed trait Continuated[T] 
case class ContRead[A,T]( callback , input, flow) extends Continuated[T]
Implementation 
sealed trait Continuated[T] 
case class ContRead[A,T]( 
function: ContRead[A,B] => Option[ 
ContRead.In[A] => 
Future[Continuated[T]] 
] , 
input, 
flow) extends Continuated[T]
Implementation 
sealed trait Continuated[T] 
case class ContRead[A,T]( 
function: ContRead[A,B] => Option[ 
ContRead.In[A] => 
Future[Continuated[T]] 
] , 
input, 
flow) extends Continuated[T] 
Value, Skip, Failure 
Read as Protocol: 
(check, if available, read, return next step)
Implementation 
Flow 
Dispatch Actor 
wait in channel read/write 
Flow 
wait in select
scala-gopher 
❖ CSP within scala ecosystem 
❖ Channels complementary to RxStreams 
❖ ‘async rw/async callback’ 
❖ Transducers complementary to Actors 
❖ ‘transform streams/event reactions’ 
❖ Can be used together.
scala-gopher 
❖ https://github.com/rssh/scala-gopher 
❖ Ruslan Shevchenko 
❖ @rssh1 
❖ Questions ?

Más contenido relacionado

La actualidad más candente

Lego: A brick system build by scala
Lego: A brick system build by scalaLego: A brick system build by scala
Lego: A brick system build by scala
lunfu zhong
 

La actualidad más candente (20)

Klee and angr
Klee and angrKlee and angr
Klee and angr
 
Virtual Machine for Regular Expressions
Virtual Machine for Regular ExpressionsVirtual Machine for Regular Expressions
Virtual Machine for Regular Expressions
 
Go Memory
Go MemoryGo Memory
Go Memory
 
ClojureScript loves React, DomCode May 26 2015
ClojureScript loves React, DomCode May 26 2015ClojureScript loves React, DomCode May 26 2015
ClojureScript loves React, DomCode May 26 2015
 
Performance Profiling in Rust
Performance Profiling in RustPerformance Profiling in Rust
Performance Profiling in Rust
 
Go Concurrency Basics
Go Concurrency Basics Go Concurrency Basics
Go Concurrency Basics
 
Full Stack Clojure
Full Stack ClojureFull Stack Clojure
Full Stack Clojure
 
ClojureScript for the web
ClojureScript for the webClojureScript for the web
ClojureScript for the web
 
Wprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Wprowadzenie do technologii Big Data / Intro to Big Data EcosystemWprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Wprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
 
RestMQ - HTTP/Redis based Message Queue
RestMQ - HTTP/Redis based Message QueueRestMQ - HTTP/Redis based Message Queue
RestMQ - HTTP/Redis based Message Queue
 
Streams for the Web
Streams for the WebStreams for the Web
Streams for the Web
 
A CTF Hackers Toolbox
A CTF Hackers ToolboxA CTF Hackers Toolbox
A CTF Hackers Toolbox
 
N flavors of streaming
N flavors of streamingN flavors of streaming
N flavors of streaming
 
Clojure+ClojureScript Webapps
Clojure+ClojureScript WebappsClojure+ClojureScript Webapps
Clojure+ClojureScript Webapps
 
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
 
Triton and Symbolic execution on GDB@DEF CON China
Triton and Symbolic execution on GDB@DEF CON ChinaTriton and Symbolic execution on GDB@DEF CON China
Triton and Symbolic execution on GDB@DEF CON China
 
Lego: A brick system build by scala
Lego: A brick system build by scalaLego: A brick system build by scala
Lego: A brick system build by scala
 
PyCon KR 2019 sprint - RustPython by example
PyCon KR 2019 sprint  - RustPython by examplePyCon KR 2019 sprint  - RustPython by example
PyCon KR 2019 sprint - RustPython by example
 
Virtual machine and javascript engine
Virtual machine and javascript engineVirtual machine and javascript engine
Virtual machine and javascript engine
 
Improving go-git performance
Improving go-git performanceImproving go-git performance
Improving go-git performance
 

Similar a Java/Scala Lab: Руслан Шевченко - Implementation of CSP (Communication Sequential Processes) in scala.

Haskell retrospective
Haskell retrospectiveHaskell retrospective
Haskell retrospective
chenge2k
 

Similar a Java/Scala Lab: Руслан Шевченко - Implementation of CSP (Communication Sequential Processes) in scala. (20)

Using Flow-based programming to write tools and workflows for Scientific Comp...
Using Flow-based programming to write tools and workflows for Scientific Comp...Using Flow-based programming to write tools and workflows for Scientific Comp...
Using Flow-based programming to write tools and workflows for Scientific Comp...
 
Implementation of 'go-like' language constructions in scala [english version]
Implementation of 'go-like' language constructions in scala [english version] Implementation of 'go-like' language constructions in scala [english version]
Implementation of 'go-like' language constructions in scala [english version]
 
Apache Gobblin: Bridging Batch and Streaming Data Integration. Big Data Meetu...
Apache Gobblin: Bridging Batch and Streaming Data Integration. Big Data Meetu...Apache Gobblin: Bridging Batch and Streaming Data Integration. Big Data Meetu...
Apache Gobblin: Bridging Batch and Streaming Data Integration. Big Data Meetu...
 
A Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoA Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to Go
 
Stream or not to Stream?

Stream or not to Stream?
Stream or not to Stream?

Stream or not to Stream?

 
Diving into HHVM Extensions (php[tek] 2016)
Diving into HHVM Extensions (php[tek] 2016)Diving into HHVM Extensions (php[tek] 2016)
Diving into HHVM Extensions (php[tek] 2016)
 
Python1
Python1Python1
Python1
 
Go lang introduction
Go lang introductionGo lang introduction
Go lang introduction
 
Why scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with thisWhy scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with this
 
Twig Templating
Twig TemplatingTwig Templating
Twig Templating
 
Haskell retrospective
Haskell retrospectiveHaskell retrospective
Haskell retrospective
 
Ruslan.shevchenko: most functional-day-kiev 2014
Ruslan.shevchenko: most functional-day-kiev 2014Ruslan.shevchenko: most functional-day-kiev 2014
Ruslan.shevchenko: most functional-day-kiev 2014
 
Building Go Web Apps
Building Go Web AppsBuilding Go Web Apps
Building Go Web Apps
 
Communicating Sequential Processes (CSP) in JavaScript
Communicating Sequential Processes (CSP) in JavaScriptCommunicating Sequential Processes (CSP) in JavaScript
Communicating Sequential Processes (CSP) in JavaScript
 
Writing Docker monitoring agent with Go
Writing Docker monitoring agent with GoWriting Docker monitoring agent with Go
Writing Docker monitoring agent with Go
 
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
 
Streaming all the things with akka streams
Streaming all the things with akka streams   Streaming all the things with akka streams
Streaming all the things with akka streams
 
Spark (Structured) Streaming vs. Kafka Streams
Spark (Structured) Streaming vs. Kafka StreamsSpark (Structured) Streaming vs. Kafka Streams
Spark (Structured) Streaming vs. Kafka Streams
 
Containerd Project Update: FOSDEM 2018
Containerd Project Update: FOSDEM 2018Containerd Project Update: FOSDEM 2018
Containerd Project Update: FOSDEM 2018
 
2015-GopherCon-Talk-Uptime.pdf
2015-GopherCon-Talk-Uptime.pdf2015-GopherCon-Talk-Uptime.pdf
2015-GopherCon-Talk-Uptime.pdf
 

Más de GeeksLab Odessa

DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
GeeksLab Odessa
 
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
GeeksLab Odessa
 
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
GeeksLab Odessa
 
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
GeeksLab Odessa
 
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
GeeksLab Odessa
 

Más de GeeksLab Odessa (20)

DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
 
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
 
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский ВикторDataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский Виктор
 
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображениеDataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображение
 
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
 
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
 
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
 
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
 
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
 
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
 
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
 
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
 
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
 
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
 
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
 
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 

Java/Scala Lab: Руслан Шевченко - Implementation of CSP (Communication Sequential Processes) in scala.