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
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Javascript в Go – Aleksei Shaikhaleev
GopherCon Russia
April 13, 2019
More Decks by GopherCon Russia
See All by GopherCon Russia
Go Profiling from Bottom Up - Felix Geisendörfer
gopherconrussia
0
260
Learning Unsung Gotchas of Go - Rashmi Nagpal
gopherconrussia
1
300
Прозрачный gRPC-proxy один-ко-многим - Андрей Смирнов
gopherconrussia
0
180
Из Python в Go и обратно - Андрей Минкин
gopherconrussia
0
190
Оптимизация работы с PostgreSQL в Go: от 50 до 5000 RPS - Иван Осадчий
gopherconrussia
0
220
Пакет embed: распаковка знаний - Илья Данилкин
gopherconrussia
0
290
За пару мгновений до main() - Олег Ковалев
gopherconrussia
0
170
Тестирование в Go c Ginkgo и Gomega - Александр Егурнов
gopherconrussia
0
160
Building an Autoscaling HTTP Proxy for Kubernetes - Aaron Schlesinger
gopherconrussia
0
160
Other Decks in Programming
See All in Programming
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
510
Flow は今どうなっているか
mizdra
PRO
0
600
5分で問診!Composer セキュリティ健康診断
codmoninc
0
1k
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
700
React本体のコードリーディング
high_g_engineer
1
150
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.9k
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
300
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
550
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
500
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
200
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
270
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Ethics towards AI in product and experience design
skipperchong
2
340
Technical Leadership for Architectural Decision Making
baasie
3
490
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
ラッコキーワード サービス紹介資料
rakko
1
4.4M
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
The Invisible Side of Design
smashingmag
301
52k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
210
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