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
98
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
220
Learning Unsung Gotchas of Go - Rashmi Nagpal
gopherconrussia
1
280
Прозрачный gRPC-proxy один-ко-многим - Андрей Смирнов
gopherconrussia
0
150
Из Python в Go и обратно - Андрей Минкин
gopherconrussia
0
150
Оптимизация работы с PostgreSQL в Go: от 50 до 5000 RPS - Иван Осадчий
gopherconrussia
0
170
Пакет embed: распаковка знаний - Илья Данилкин
gopherconrussia
0
240
За пару мгновений до main() - Олег Ковалев
gopherconrussia
0
140
Тестирование в Go c Ginkgo и Gomega - Александр Егурнов
gopherconrussia
0
130
Building an Autoscaling HTTP Proxy for Kubernetes - Aaron Schlesinger
gopherconrussia
0
130
Other Decks in Programming
See All in Programming
Vibe coding コードレビュー
kinopeee
0
450
マイコンでもRustのtestがしたい その2/KernelVM Tokyo 18
tnishinaga
2
2.3k
TanStack DB ~状態管理の新しい考え方~
bmthd
2
150
Comparing decimals in Swift Testing
417_72ki
0
170
一人でAIプロダクトを作るための工夫 〜技術選定・開発プロセス編〜 / I want AI to work harder
rkaga
12
2.7k
Portapad紹介プレゼンテーション
gotoumakakeru
1
130
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
3
2.2k
Google I/O Extended Incheon 2025 ~ What's new in Android development tools
pluu
1
290
管你要 trace 什麼、bpftrace 用下去就對了 — COSCUP 2025
shunghsiyu
0
420
Langfuseと歩む生成AI活用推進
licux
3
250
The state patternの実践 個人開発で培ったpractice集
miyanokomiya
0
130
GitHub Copilotの全体像と活用のヒント AI駆動開発の最初の一歩
74th
7
2.9k
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
45
7.6k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.8k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
GitHub's CSS Performance
jonrohan
1031
460k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Visualization
eitanlees
146
16k
How GitHub (no longer) Works
holman
314
140k
Gamification - CAS2011
davidbonilla
81
5.4k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Side Projects
sachag
455
43k
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