MacにLightningNetworkノードを3本たてて直接繋がっていない2ノード間での支払いを体験した後、Satoshi's Placeに支払いをやっていきます。testnetで行います。 Satoshi's Placeとは100万pxのキャンバスを用意して、1px=1satoshi(=1億分の1BTC)で塗ることができるWebサービスです。1度塗られたピクセルはもう一度支払えば誰でも何回でも塗り替えることができます。 LightningNetworkでの支払いのみ受けつけています。 色々前提の説明 macOS High Sierra go (1.9.2) btcd (0.12.0-beta) bitcoinのクライアントの一つ goで実装されている testnet bitcionではpublicなネットワークとしてmainnetとtestnetがある mainnetが本物のBTCが動
最近業務などgo言語を利用することがあって、一部処理にスレッドアンセーフな処理があり、パイプラインを使った並列化で実装しました。 チャンネルでは、無限ループで閉じられたかどうかというif文を利用して、閉じられた場合には、ループを抜けるというようなロジックを記載することがありますが、range で実装出来ることを知ったので自分へのメモとして記載しておきます。 package main import "fmt" func main() { a := make(chan int) b := make(chan int) go func () { for x := 0; x < 100; x++ { a <- x } close(a) }() go func () { for x := range a { b <- x * x } close(b) }() for x := range b { f
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? S2 Geometry Library S2 Geometry Libraryについてちょっと調べてみたので、その結果をまとめた。 Go言語で幾何学計算を扱いたいなぁ・・・と思ってググっていたら、S2にたどり着いた。 主に、本家ページを参考にした。 所感 先に所感を述べておく。 「触ってみた」訳じゃないけれど、事前調査として得られた情報から推測した所感です。 パフォーマンスを重視して作られている印象。 C++だし、インデックス機能とかも実装されているし・・・。 Googleで使われていた。多分。 規模の大きな幾何学計算には使えそう。 G
Google App EngineからDatastoreにアクセスする時に、ローカル環境では動いていたものが全く動かなくてハマりました。解決できたのでまとめておきます。言語はGoを使ってます。 必要とするContextはappengineパッケージのものを使う ドキュメントのサンプルには、context.Background()で作ったcontextをdatastoreパッケージの関数に渡していますが、GAE上ではappengine.NewContext(request)で生成したものを渡す必要があります。でないと動きません。 ローカルの開発環境ではDatastoreエミュレータを使うと思いますが、こちらはcontext.Background()で大丈夫でした。 appengine.NewContextを呼ぶのは1回だけにする 複数回呼ぶとエラーになるようです。基礎的なことかな? clou
Go 学習のため、Go を使ってウェブアプリを作ってみた際、困ったことをまとめておこうと思います。これまで、Python + Flask でウェブをスクレイピングしてJSONを返す、みたいなのは作ったことあったのですが、型のある言語でのウェブアプリ作成は初めてになります。 題材としては今回、「認可サーバー」を選んでいます。現職にて、事業開発(というか営業)として認可ソリューションを売っている事もあり、OAuth2.0 への理解をもう少し深めたい、というのがモチベーションになります。教材として、『OAuth 2 in Action』を使っています。 OAuth 2 in Action Manning 出版より2017年に出版された、OAuth2.0 を理解するために書かれた本です。認可サーバー側だけでなく、クライアント側、リソースサーバー側の視点からも OAuth2.0 のフローについて書か
Go で Excel ファイルを作成するのに使えるライブラリとしては go-ole/go-ole Excel自身をOLE経由で動かすので互換性の懸念はない。xlsx だけでなく、xls でもいける。だけど 遅い。要Excel。結構めんどうくさい(ミスるとExcelプロセスがゾンビになって残る) tealeg/xlsx 定番。読み取り・新規作成はバッチリだが、既存のxlsxファイルを加工する際に画像などが飛んでしまうと言われている。また、メモリ消費量が多い loadoff/excl xlsx と違って、既存Excelファイルへの加工に心配がない。メモリ消費量が抑えられている。開発者日本人。Qiita に紹介記事あり などが知られているが、画像などが貼れるものということで、今回、tealeg/xlsxのトップ画面 で「You should probably also checkout」とか言っ
はじめに Redigoは、RedisのGo言語向けクライアントライブラリです。 Redigoの一通りの使い方を見ていきます。 環境 OS: Windows 10 Redis: win-3.2.100 Go言語: 1.11 サーバの起動 マイクロソフトが提供しているRedisのWindows向けmsiパッケージをダウンロードして実行します。 デフォルト設定では、ローカルの6379番ポートでサービス開始します。別PCからアクセスできるようにするには設定ファイルでprotected modeを「no」に変更します。 redis-cliでの動作確認 インストールディレクトリ(WindowsではC:\Program Files\Redis)にあるredis-cli.exeを実行すると、ローカルホストの6379番ポートに接続します。 以降、キーボードからコマンドを入力できます。
はじめに RedisのGo言語向けクライアントライブラリRedigoの使い方を見ます。 この記事では様々なデータ型の扱い方を見ます。 Redisには下記の5つのデータ型があります。 文字列型 リスト型 セット型 ソート済みセット型 ハッシュ型 文字列型については(1)の記事で見ました。本記事では他の4つについて、Redigoでの基本的な扱い方を見ていきます。 環境 OS: Windows 10 Redis: win-3.2.100 Go言語: 1.11 リスト型 リスト型は、文字列型の双方向リストです。コマンド一覧はリファレンスを参照して下さい。まずは単純な要素の追加と取得を行います。 package main import ( "fmt" "github.com/gomodule/redigo/redis" ) func main() { // 接続 conn, err := redis
はじめに RedisのGo言語向けクライアントライブラリRedigoの使い方を見ます。 本記事ではトランザクションの行い方を見ていきます。 環境 OS: Windows 10 Redis: win-3.2.100 Go言語: 1.11 基本の流れ Redisにおけるトランザクションについては、Redis Documentation (Japanese Translation) をまずは一読しておきましょう。 以下は、Redigoでトランザクションを行う典型的なコードです。SETとSADDという2つのコマンドを実行します。Conn.Send関数を使うのが定石です。 package main import ( "fmt" "github.com/gomodule/redigo/redis" ) func main() { // 接続 conn, err := redis.Dial("tcp",
タイトルクソ長い。 8億番煎じ感はあるけどちょいちょい細かいところでハマッたりしたので同じ理由で時間を無駄にする人がもう出ないようにここに残す。 「画面のどこにそれがあるかわからんかった」って自分で躓いたもの以外は基本stringオンリー。 何をしたいんだ slackでコマンド打ち込むとgoogle calendar apiとキャッキャできる 構成 slackからpostされたらapigateway通してlambda関数動かす。 社内ツールだし、高い頻度で使うわけでもない。 が、使いたいときに動かなかったら困る。 => ec2を24365はもったいないからサーバレスでいこう!! AWS SAM 頑張ったけどだめだった。詳しくは後述。 googleCalendarAPIの有効化 これは色々なところで説明されてるので割愛。 自分の場合、Oauthがどうにもうまくいかなかったのでサービスアカウ
package main import ( "flag" "fmt" "github.com/golang/glog" "os" ) func DebugLog(v interface{}) { if os.Getenv("DEBUG") != "" { glog.InfoDepth(1, fmt.Sprintf("%#v", v)) } } func main() { flag.Set("stderrthreshold", "INFO") flag.Parse() os.Setenv("DEBUG", "1") DebugLog("hoge") // ここが20行目 DebugLog("fuga") // ここが21行目 }
GAE/Go SEで運用しているPJで、aetest.NewInstanceをキャッシュした結果50本くらいあるテスト実行時間が全体で5倍速くらいになったので共有します。 背景と概要 GoのWebサーバを立ち上げる時GAE/Goを選択する人は多いのではないでしょうか。 ただエンドポイントのテストを書こうとaetestを利用し始めると途端に問題が発生します。aetestを利用してテストを書くと、裏でPythonサーバを立ち上げるため1リクエストのテスト実行に2-3秒掛かり極めて遅いのです。 そこでaetest.NewInstanceのキャッシュ化に取り組み実行時間を改善することにしました。 singletonパターンでキャッシュを実装 Singleton Pattern in Go を読みながら実装してみました var instance *singleton var once sync.On
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く