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
Javascript в Go – Aleksei Shaikhaleev
Search
GopherCon Russia
April 13, 2019
Programming
0
90
Javascript в Go – Aleksei Shaikhaleev
GopherCon Russia
April 13, 2019
Tweet
Share
More Decks by GopherCon Russia
See All by GopherCon Russia
Go Profiling from Bottom Up - Felix Geisendörfer
gopherconrussia
0
190
Learning Unsung Gotchas of Go - Rashmi Nagpal
gopherconrussia
1
250
Прозрачный gRPC-proxy один-ко-многим - Андрей Смирнов
gopherconrussia
0
120
Из Python в Go и обратно - Андрей Минкин
gopherconrussia
0
110
Оптимизация работы с PostgreSQL в Go: от 50 до 5000 RPS - Иван Осадчий
gopherconrussia
0
130
Пакет embed: распаковка знаний - Илья Данилкин
gopherconrussia
0
180
За пару мгновений до main() - Олег Ковалев
gopherconrussia
0
100
Тестирование в Go c Ginkgo и Gomega - Александр Егурнов
gopherconrussia
0
94
Building an Autoscaling HTTP Proxy for Kubernetes - Aaron Schlesinger
gopherconrussia
0
99
Other Decks in Programming
See All in Programming
Less waste, more joy, and a lot more green: How Quarkus makes Java better
hollycummins
0
100
みんなでプロポーザルを書いてみた
yuriko1211
0
260
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
230
Creating a Free Video Ad Network on the Edge
mizoguchicoji
0
120
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
200
どうして僕の作ったクラスが手続き型と言われなきゃいけないんですか
akikogoto
1
120
Better Code Design in PHP
afilina
PRO
0
120
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
6
1.7k
macOS でできる リアルタイム動画像処理
biacco42
9
2.4k
C++でシェーダを書く
fadis
6
4.1k
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
4
1.4k
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
330
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
For a Future-Friendly Web
brad_frost
175
9.4k
Optimizing for Happiness
mojombo
376
70k
How STYLIGHT went responsive
nonsquared
95
5.2k
Designing for Performance
lara
604
68k
RailsConf 2023
tenderlove
29
900
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Practical Orchestrator
shlominoach
186
10k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Transcript
Javascript в Go Aleksei Shaikhaleev, backend dev @Travelpayouts.com
Контентные проекты Сайты о путешествиях
Мы делаем классные встраиваемые виджеты
Нам нужен умный прокси! Источник данных Прокси Источник данных Источник
данных Виджет — специализированные языки выражений например, Common Expression Language https://github.com/google/cel-go
— специализированные языки выражений например, Common Expression Language https://github.com/google/cel-go
— скриптовые языки программирования Python, PHP, Ruby, Lua, Javascript Что делать?
Что делать? — специализированные языки выражений например, Common Expression Language
https://github.com/google/cel-go — скриптовые языки программирования Python, PHP, Ruby, Lua, Javascript
Что делать? — специализированные языки выражений например, Common Expression Language
https://github.com/google/cel-go — скриптовые языки программирования Python, PHP, Ruby, Lua, Javascript — Go биндинги к существующим движкам: Google V8, duktape
Окей, а что с Javascript в Go? — Go биндинги
к существующим движкам: Google V8, duktape — Интерпретаторы написанные на Go https://github.com/robertkrimen/otto https://github.com/dop251/goja
Окей, а что с Javascript в Go? — Go биндинги
к существующим движкам: Google V8, duktape — Интерпретаторы написанные на Go https://github.com/robertkrimen/otto https://github.com/dop251/goja
Otto:
Конфиг:
JS parser:
JS parser:
Грабли и костыли: — Интеграционные тесты, используем golden files —
Нельзя вместить в мастер и задеплоить на продакшен, пока тесты не станут зелеными
Тесты: — Интеграционные тесты
Тесты: — Интеграционные тесты — Нельзя вместить в мастер и
задеплоить на продакшен, пока тесты не станут зелеными
Как сделать удобно?
Наивный бенчмарк: — сделать лучше версионирование парсеров, автоматически откатывать, если
что пошло не так
Что хочется улучшить? — сделать лучше версионирование парсеров, автоматически откатывать,
если что пошло не так — перейти на более быстрый интерпретатор JS
Что хочется улучшить? — сделать лучше версионирование парсеров, автоматически откатывать,
если что пошло не так — перейти на более быстрый интерпретатор JS — сделать автоматическую проверку JS литерами
Что хочется улучшить? — сделать лучше версионирование парсеров, автоматически откатывать,
если что пошло не так — перейти на более быстрый интерпретатор JS — сделать автоматическую проверку JS линтерами
Стоила игра свеч? — Javascript в Го можно интерпретировать в
продакшене — Даже внутренние утилиты должны быть удобными
Что ещё? @nimdraugsael я на Гитхабе и в Твиттере Встраиваемые
интерпретаторы для Go: https://github.com/avelino/awesome-go#embeddable-scripting-languages Интерпретаторы JS: https://github.com/robertkrimen/otto https://github.com/dop251/goja