適当なフォルダを作成し content.js, manifest.json を配置
chrome://extensions/ にアクセスし、「パッケージ化されていない拡張機能を読み込む」をクリックし、作成したフォルダを選択すると完了。
- Chrome拡張の作り方 (超概要)
/* | |
単純に main関数の終わりで シグナルを待つようにすれば無限待ちにならない | |
以前は main関数の終わりでは wg.Wait()で待つようにしていて | |
シグナルを待つ処理をゴルーチンでやってシグナルが来たらcancel()を読んで | |
ほかのゴルーチンに通知する方式でやっていた。 | |
この方式だと、いろんなところに ctx.Done() とのselect を書く必要があり | |
書き忘れが発生するとタスクをキルするしかなくなっていた | |
今回の方法だと書き忘れがあってもアプリがちゃんと終了してくれるので | |
コードもすっきりするし期待した動作もしてくれるしで両方ハッピー | |
*/ |
local searchpath_lua = require('searchpath_lua') | |
local filename = searchpath_lua("test") | |
print(filename) |
// Copyright 2018-2020 opcua authors. All rights reserved. | |
// Use of this source code is governed by a MIT-style license that can be | |
// found in the LICENSE file. | |
package main | |
import ( | |
"context" | |
"database/sql" | |
"flag" |
//go:build ignore | |
package main | |
import ( | |
"fmt" | |
"math/rand" | |
"net" | |
"time" | |
) |
package main | |
import ( | |
"fmt" | |
"strings" | |
) | |
func comb(a []string) [][]string { | |
b := make([][]string, 0) |
package main | |
import ( | |
"strings" | |
"fmt" | |
) | |
func comb(a []string) [][]string { | |
ret := make([][]string, 0) |
package main | |
import ( | |
"flag" | |
"fmt" | |
"net" | |
"strings" | |
"time" | |
) |
package main | |
import ( | |
"flag" | |
"fmt" | |
"net" | |
"os" | |
"time" | |
) |