Suche senden
Hochladen
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
•
0 gefällt mir
•
2,271 views
Reo Yamada
Folgen
2018/1/25 に行われたLTのスライドです
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 52
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
最近流行りのビルドツールとは
最近流行りのビルドツールとは
Takahiro Maki
Net commons3 研究会 2014 0616
Net commons3 研究会 2014 0616
Takako Miyagawa
最新追従 バリバリの NetCommons3 紹介
最新追従 バリバリの NetCommons3 紹介
Mitsuru Mutaguchi
最速で最速のRuby擴張を作る
最速で最速のRuby擴張を作る
Sachirou Inoue
Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境
Yusuke Ando
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
Hisateru Tanaka
concrete5 5.7でテーマ作ってみよう超初級編
concrete5 5.7でテーマ作ってみよう超初級編
Yuriko Kamimori
aws chaliceで作るslack翻訳bot
aws chaliceで作るslack翻訳bot
uchimanajet7
Empfohlen
最近流行りのビルドツールとは
最近流行りのビルドツールとは
Takahiro Maki
Net commons3 研究会 2014 0616
Net commons3 研究会 2014 0616
Takako Miyagawa
最新追従 バリバリの NetCommons3 紹介
最新追従 バリバリの NetCommons3 紹介
Mitsuru Mutaguchi
最速で最速のRuby擴張を作る
最速で最速のRuby擴張を作る
Sachirou Inoue
Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境
Yusuke Ando
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
Hisateru Tanaka
concrete5 5.7でテーマ作ってみよう超初級編
concrete5 5.7でテーマ作ってみよう超初級編
Yuriko Kamimori
aws chaliceで作るslack翻訳bot
aws chaliceで作るslack翻訳bot
uchimanajet7
Great Ideas in GraalVM
Great Ideas in GraalVM
Koichi Sakata
LionでOpenMP
LionでOpenMP
14159265
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
Yuuki Takezawa
Djangoで業務改善したい
Djangoで業務改善したい
Satoshi Yamada
git ~start PullRequest~
git ~start PullRequest~
Souichirou Andou
Frank-afcproxy
Frank-afcproxy
Toshiyuki Terashita
今どきのPerl開発にvimを対応させる
今どきのPerl開発にvimを対応させる
Kenta Kase
VimとRubyのアツい関係
VimとRubyのアツい関係
Misao X
CSRを自動生成する!
CSRを自動生成する!
Taichi Ishitani
Visual Studio TypeScript npm WebPack
Visual Studio TypeScript npm WebPack
Akihiro Ehara
Phpでアプリケーションサーバー
Phpでアプリケーションサーバー
k-motoyan
20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slideshare
sinsoku listy
Alibaba Cloud で Docker を動かしてみよう [Hands-on]
Alibaba Cloud で Docker を動かしてみよう [Hands-on]
Masafumi Noguchi
MasterCloud Docker Hands-on 20170725
MasterCloud Docker Hands-on 20170725
Masafumi Noguchi
RgGen ご紹介
RgGen ご紹介
Taichi Ishitani
gRPC入門
gRPC入門
Kenjiro Kubota
Lt 001
Lt 001
榎本 優樹
Quercus on gae公開版
Quercus on gae公開版
Yusuke Kawabata
Travisでrepomanチェックしょう!
Travisでrepomanチェックしょう!
alice ferrazzi
Git level1
Git level1
Hirokazu Fukami
静的サイトどこにする?
静的サイトどこにする?
ogawatti
Gopenflow demo v1
Gopenflow demo v1
Hiroaki Kawai
Weitere ähnliche Inhalte
Was ist angesagt?
Great Ideas in GraalVM
Great Ideas in GraalVM
Koichi Sakata
LionでOpenMP
LionでOpenMP
14159265
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
Yuuki Takezawa
Djangoで業務改善したい
Djangoで業務改善したい
Satoshi Yamada
git ~start PullRequest~
git ~start PullRequest~
Souichirou Andou
Frank-afcproxy
Frank-afcproxy
Toshiyuki Terashita
今どきのPerl開発にvimを対応させる
今どきのPerl開発にvimを対応させる
Kenta Kase
VimとRubyのアツい関係
VimとRubyのアツい関係
Misao X
CSRを自動生成する!
CSRを自動生成する!
Taichi Ishitani
Visual Studio TypeScript npm WebPack
Visual Studio TypeScript npm WebPack
Akihiro Ehara
Phpでアプリケーションサーバー
Phpでアプリケーションサーバー
k-motoyan
20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slideshare
sinsoku listy
Alibaba Cloud で Docker を動かしてみよう [Hands-on]
Alibaba Cloud で Docker を動かしてみよう [Hands-on]
Masafumi Noguchi
MasterCloud Docker Hands-on 20170725
MasterCloud Docker Hands-on 20170725
Masafumi Noguchi
RgGen ご紹介
RgGen ご紹介
Taichi Ishitani
gRPC入門
gRPC入門
Kenjiro Kubota
Lt 001
Lt 001
榎本 優樹
Quercus on gae公開版
Quercus on gae公開版
Yusuke Kawabata
Travisでrepomanチェックしょう!
Travisでrepomanチェックしょう!
alice ferrazzi
Git level1
Git level1
Hirokazu Fukami
Was ist angesagt?
(20)
Great Ideas in GraalVM
Great Ideas in GraalVM
LionでOpenMP
LionでOpenMP
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
Djangoで業務改善したい
Djangoで業務改善したい
git ~start PullRequest~
git ~start PullRequest~
Frank-afcproxy
Frank-afcproxy
今どきのPerl開発にvimを対応させる
今どきのPerl開発にvimを対応させる
VimとRubyのアツい関係
VimとRubyのアツい関係
CSRを自動生成する!
CSRを自動生成する!
Visual Studio TypeScript npm WebPack
Visual Studio TypeScript npm WebPack
Phpでアプリケーションサーバー
Phpでアプリケーションサーバー
20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slideshare
Alibaba Cloud で Docker を動かしてみよう [Hands-on]
Alibaba Cloud で Docker を動かしてみよう [Hands-on]
MasterCloud Docker Hands-on 20170725
MasterCloud Docker Hands-on 20170725
RgGen ご紹介
RgGen ご紹介
gRPC入門
gRPC入門
Lt 001
Lt 001
Quercus on gae公開版
Quercus on gae公開版
Travisでrepomanチェックしょう!
Travisでrepomanチェックしょう!
Git level1
Git level1
Ähnlich wie Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
静的サイトどこにする?
静的サイトどこにする?
ogawatti
Gopenflow demo v1
Gopenflow demo v1
Hiroaki Kawai
OSC福岡 20111203
OSC福岡 20111203
Hiroshi Bunya
LibPGEN 1st Step Guide
LibPGEN 1st Step Guide
slankdev
PHPとJavaScriptの噺
PHPとJavaScriptの噺
Shogo Kawahara
Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェア
Kouhei Sutou
VMを改めて学んで見る
VMを改めて学んで見る
kishima7
Web技術勉強会 第31回
Web技術勉強会 第31回
龍一 田中
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach
Daisuke Miyakawa
Zabbix study
Zabbix study
Tomohiro Ikeda
Rails composerでrails newを楽にしよう
Rails composerでrails newを楽にしよう
健太 田上
コマンドライン使いもLibreOffice
コマンドライン使いもLibreOffice
Kiwamu Okabe
Web技術勉強会 第33回
Web技術勉強会 第33回
龍一 田中
Pyconjp2014_implementations
Pyconjp2014_implementations
masahitojp
秋のVim祭り Rubyを添えて
秋のVim祭り Rubyを添えて
Yuta Ogura
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Fumihito Yokoyama
20131227_appium+rspec
20131227_appium+rspec
Kazuaki Matsuo
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
kimukou_26 Kimukou
たのしいNode.js
たのしいNode.js
ishiki-takai
Chrome-eject がこの先生きのこるには
Chrome-eject がこの先生きのこるには
Yosuke HASEGAWA
Ähnlich wie Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
(20)
静的サイトどこにする?
静的サイトどこにする?
Gopenflow demo v1
Gopenflow demo v1
OSC福岡 20111203
OSC福岡 20111203
LibPGEN 1st Step Guide
LibPGEN 1st Step Guide
PHPとJavaScriptの噺
PHPとJavaScriptの噺
Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェア
VMを改めて学んで見る
VMを改めて学んで見る
Web技術勉強会 第31回
Web技術勉強会 第31回
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach
Zabbix study
Zabbix study
Rails composerでrails newを楽にしよう
Rails composerでrails newを楽にしよう
コマンドライン使いもLibreOffice
コマンドライン使いもLibreOffice
Web技術勉強会 第33回
Web技術勉強会 第33回
Pyconjp2014_implementations
Pyconjp2014_implementations
秋のVim祭り Rubyを添えて
秋のVim祭り Rubyを添えて
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
20131227_appium+rspec
20131227_appium+rspec
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
たのしいNode.js
たのしいNode.js
Chrome-eject がこの先生きのこるには
Chrome-eject がこの先生きのこるには
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
1.
Goで書くNeoVimプラグイン 1/25: OpenAppLab Aizu
LT feat. CyberAgent @noah_orberg
2.
About Me name: Reo
Yamada (aka. Noah) NeoVim教徒 (できれば宗教戦争は嫌なので) Spacemacsも使うよ☆ Twitter: @NoahOrberg Github: NoahOrberg 主にサーバーサイド よく書く: Golang, Haskell gRPC, REST API, nvimプラグイン
3.
・Aizu Advent Calendarネタの焼き直し ・最近作ったプラグインの話 (`diesirae.nvim`) 話すこと:
4.
Vim好きな(又はよく使う)人
5.
NeoVim使ってる人
6.
NeoVimとは
7.
ざっくりいうと、Vimをモダンに、 リファクタリングしちゃうプロジェクト
8.
Remote Plugin
9.
10.
11.
非同期にも
12.
13.
Goでどう書くの?
14.
neovim/go-client を利用します
15.
16.
neovim/go-clientとは?
17.
msgpack-RPCでの通信部分を いい感じにラップしてくれてる
18.
19.
書く時の手順
20.
1. Goで書く&& go
install 2. 実行ファイルからマニフェストを得る 3. RemotePluginをRegisterするvimscriptを書く
21.
1. Goで書く&& go
install 2. 実行ファイルからマニフェストを得る 3. RemotePluginをRegisterするvimscriptを書く
22.
Go側でExコマンドと関数を定義できる →主にそれを使う
23.
24.
Exコマンド `:HelloCmd world` 関数呼び出し
`:call Hello(‘world’)`
25.
1. Goで書く&& go
install 2. 実行ファイルからマニフェストを得る 3. RemotePluginをRegisterするvimscriptを書く
26.
27.
1. Goで書く&& go
install 2. 実行ファイルからマニフェストを得る 3. RemotePluginをRegisterするvimscriptを書く
28.
29.
30.
manifestの自動更新
31.
32.
開発でつらいところ
33.
非同期(別プロセス)でGoの実行ファイルが走っている → panicしても、nvim側では原因不明でchが落ちた扱い → 原因究明が困難
> <
34.
愚直な解決策
35.
ここまで来て本題
36.
競技プログラミング、好きですか?
37.
1. Webブラウザで問題見る →解く(これはエディタでやる) 2. 出来た →サンプル入力を標準入力で流しこむ 3.
出力を確認する 4. 完成したらエディタからコードをコピー 5. ブラウザ上の入力フォームに貼り付けsubmit 基本的には 1. - 3. の繰り返し 4., 5.でコケることもある 問題を解く時の流れ (AOJ)
38.
しんどくない?
39.
エディタだけで完結させたくない?
40.
41.
1. 問題をnvim上でsubmit 2. nvim上で1.のstatusチェック 3.
公開済サンプル入力のRun (現状、Go, C++14(手元にコンパイル環境がある前提)のみ限 定的) 4. 結果との比較 (AC, WA, CEなど) 5. AOJのAPIサーバーとのSessionあたりの操作 diesirae.nvimでやれることを大雑把に
42.
43.
実は昨年末にはほぼ完成していたが、 問題点をしばらく時間がたってから 洗い出してみた(少し修正しつつある)
44.
1. TestRunの言語の少なさ&&特定環境 GoとC++14しか対応していない。 2. TLEを考慮していない 例)
breakなしの無限ループなどをTestで走らせるときなど 3. sync.RWMutex等で排他制御 非同期の特性上、同時に処理することが起こりうる diesirae.nvimで未実装なところ
45.
1. TestRunの言語の少なさ&&特定環境 GoとC++14しか対応していない。 2. TLEを考慮していない 例)
breakなしの無限ループなどをTestで走らせるときなど 3. sync.RWMutex等で排他制御 非同期の特性上、同時に処理することが起こりうる diesirae.nvimで未実装なところ
46.
詳細: 現状は現在のバッファの言語を判定してswitch-caseでコマンド 列を選別し、外部のシェルを叩いている α: C++の場合、g++,
clang++を使うか否かなど TestRun対応言語の少なさ&&特定環境
47.
48.
解決策: init.vimからユーザが設定を注入できるようにする 例: github.com/thinca/vim-quickrun TestRun対応言語の少なさ&&特定環境
49.
50.
1. TestRunの言語の少なさ GoとC++14しか対応していない。 2. TLEを考慮していない 例)
breakなしの無限ループなどをTestで走らせるときなど 3. sync.RWMutex等で排他制御 非同期の特性上、同時に処理することが起こりうる diesirae.nvimで未実装なところ
51.
1. TestRunの言語の少なさ GoとC++14しか対応していない。 2. TLEを考慮していない 例)
breakなしの無限ループなどをTestで走らせるときなど 3. sync.RWMutex等で排他制御 非同期の特性上、同時に処理することが起こりうる diesirae.nvimで未実装なところ
52.
ご清聴ありがとうございました
Jetzt herunterladen