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
arrow + ergo
Search
Romain François
July 12, 2018
Programming
390
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
arrow + ergo
Presentation at useR! 2018, Brisbane.
Romain François
July 12, 2018
More Decks by Romain François
See All by Romain François
dplyr 1.0.0 / Paris R-addicts
romainfrancois
0
260
dplyr 1.0.0
romainfrancois
1
1.3k
dplyr episode 9, summarise() of the vctrs
romainfrancois
0
1k
dplyr episode 9: summarise() of the vctrs
romainfrancois
0
360
n() cool #dplyr things
romainfrancois
2
3k
dance
romainfrancois
0
290
rap and splice girls
romainfrancois
0
400
rap
romainfrancois
0
140
ergo
romainfrancois
0
290
Other Decks in Programming
See All in Programming
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.9k
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
330
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
180
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
810
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.7k
技術記事、 専門家としてのプログラマ、 言語化
mizchi
14
7.2k
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
620
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.7k
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.6k
はてなアカウント基盤 State of the Union
cockscomb
1
1.2k
dRuby over BLE
makicamel
2
400
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
310
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
230
Building Applications with DynamoDB
mza
96
7.1k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Designing for Performance
lara
611
70k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Between Models and Reality
mayunak
4
360
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Statistics for Hackers
jakevdp
799
230k
GraphQLとの向き合い方2022年版
quramy
50
15k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
The Invisible Side of Design
smashingmag
301
52k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
Transcript
http://bit.ly/romain-useR2018 aerrrgow
[email protected]
@romain_francois ergo arrow
None
None
None
cross-language development platform for in-memory data Apache Arrow
None
future •sparklyr integration •dplyr backend •...
[email protected]
@romain_francois e r go
None
None
•Open source •Google •Simple •Fast enough •Concurrent
https://www.docker.com
https://bookdown.org/yihui/blogdown/
https://www.rstudio.com/products/connect/
package main import "fmt" func fahrenheit(celcius float64) float64 { return
celcius * 1.8 + 32 } func main() { var freezing float64 = fahrenheit(0.0) boiling := fahrenheit(100.0) fmt.Printf("Water freezes at %4.2f F\n", freezing) fmt.Printf("Water boils at %4.2f F\n", boiling) }
package main import "fmt" func fahrenheit(celcius float64) float64 { return
celcius * 1.8 + 32 } func main() { var freezing float64 = fahrenheit(0.0) boiling := fahrenheit(100.0) fmt.Printf("Water freezes at %4.2f F\n", freezing) fmt.Printf("Water boils at %4.2f F\n", boiling) }
$ go run fahrenheit.go Water freezes at 32.00 F Water
boils at 212.00 F
purrple.cat/tags/go/
purrple.cat/tags/go/
None
library(rvest) library(glue) library(fahrenheit) library(tibble) library(dplyr) temperature <- function(where){ glue("https://wttr.in/{where}") %>%
read_html() %>% html_node("span:nth-child(3)") %>% html_text() %>% as.numeric() } temperature("Brisbane") %>% tibble(celcius = .) %>% mutate(fahrenheit = fahrenheit(celcius)) #> # A tibble: 1 x 2 #> celcius fahrenheit #> <dbl> <dbl> #> 1 20 68 #' Created on 2018-07-12 by the [reprex package](http://reprex.tidyverse.org) (v0.2.0).
$ tree . !"" DESCRIPTION !"" NAMESPACE !"" R #
$"" fahrenheit.R !"" fahrenheit.Rproj !"" man $"" src !"" Makevars !"" fahrenheit.h !"" fahrenheit.so $"" go $"" src !"" fahrenheit # $"" fahrenheit.go $"" main !"" main.c $"" main.go 7 directories, 10 files fahrenheit main } }
package fahrenheit func Fahrenheit(celcius float64) float64 { return celcius *
1.8 + 32 } src/go/src/fahrenheit/fahrenheit.go
package main import "C" import "fahrenheit" //export Fahrenheit func Fahrenheit(x
float64) float64 { return fahrenheit.Fahrenheit(x) ; } func main() {} src/go/src/main/main.go
#include <R.h> #include <Rinternals.h> #include "_cgo_export.h" SEXP _fahrenheit(SEXP x){ return
Rf_ScalarReal(Fahrenheit(REAL(x)[0]); } src/go/src/main/main.c
#' @useDynLib fahrenheit #' @export fahrenheit <- function(celcius) { .Call("_fahrenheit",
celcius, PACKAGE = "fahrenheit" ) } R/fahrenheit.R
.PHONY: go CGO_CFLAGS = "$(ALL_CPPFLAGS)" CGO_LDFLAGS = "$(PKG_LIBS) $(SHLIB_LIBADD) $(LIBR)"
GOPATH = $(CURDIR)/go go: CGO_CFLAGS=$(CGO_CFLAGS) CGO_LDFLAGS=$(CGO_LDFLAGS) \ GOPATH=$(GOPATH) /usr/local/go/bin/go \ build -o $(SHLIB) -x -buildmode=c-shared main src/Makevars
future
None
None
None
[email protected]
@romain_francois http://bit.ly/romain-useR2018