Goalngでx-www-form-urlencodedのリクエストを投げる

やりたいことはタイトルそのままです。 parameter=hogeをhttpでPOSTする方法は以下です。 form := url.Values{} form.Add("paramter", "hoge") body := strings.NewReader(form.Encode()) req, err := http.NewRequest("POST", "https://example.com", body)…

Golangのnew()とmake()の違い

この記事は Go (その3) Advent Calendar 2017 の5日目の記事です。 本記事では、変数の宣言に用いられる組み込み関数new()とmake()の違いについてまとめます。 まとめ さっそくですが、違いを表にまとめます。 new(T) make(T) 対象 任意の型 slice, map, cha…

go tool compileの使い方

少し試したものの、忘れそうなのでメモ書きとして残します。 サンプルコード package main import "fmt" func main() { fmt.Println("hello world") } オブジェクトファイルの生成 -Sが1つだと標準出力のみです。2つだと.oファイルが生成されます。 $ go too…

Golangで主成分分析する

前回の記事では、 多次元正規分布から乱数を生成する方法を書きました。 今回は、このデータを使って主成分分析(PCA)を行っていきます。 PCAの詳細については、書籍や他の記事などで十分存在していると思うので、そちらを探してみてください。 分散を最大…

Golangで多次元正規分布を生成する

前回の記事も書きましたが、 Golangのrandパッケージでは、 一次元正規分布の乱数生成が可能です。 今回は、多次元正規分布から乱数を生成する方法についてまとめます。 どうやって生成するか まずPRMLから引用します。 平均,共分散を持つ多変量ガウス分布に…

Golangで正規乱数を生成する

意外と日本語記事がなかったので、あとで見返すメモとして。 gist0ede769769cc5831b540a5896bf6e868 ヒストグラムにすると以下です。 References Package rand - The Go Programming Language

インフラ/ネットワークエンジニアのためのネットワーク・デザインパターン 実務で使えるネットワーク構成の最適解27を読んだ

前作であるインフラ/ネットワークエンジニアのためのネットワーク技術&設計入門を読んでから、少し間が空いてしまいましたが、続編となるインフラ/ネットワークエンジニアのためのネットワーク・デザインパターン 実務で使えるネットワーク構成の最適解27 …

Golangで言語処理100本ノック2015 第8章: 機械学習

言語処理100本ノック 2015の第8章: 機械学習の10問です。 本章では,Bo Pang氏とLillian Lee氏が公開しているMovie Review Dataのsentence polarity dataset v1.0を用い,文を肯定的(ポジティブ)もしくは否定的(ネガティブ)に分類するタスク(極性分析)…

はてなブログでベクトルをbold表記したい[markdown]

TeXでいうところの\boldmath{x}をやりたいもののはてなでは表示されないので、以下の書式をメモ代わりに残しておきます。 はてなでベクトルのbold表記は以下でできます。 \boldsymbol{x} ちなみに検索すると以下がよく見つかるのですが、斜体でないのでやり…

zplugのautosuggestionsのカラー設定方法

fishコマンドとbash/zshコマンドの微妙な差異で時間を浪費するのをやめるべく、zshに戻る決心をしました。 一方でzshでも、AutoSuggestionを使いたく、 zsh-autosuggestions を導入したものの、デフォルトの色が見えないほど薄かったので変える方法をまとめ…

Golangで言語処理100本ノック2015 第7章: データベース

言語処理100本ノック 2015の第7章: データベースの10問です。 redisとMongoDBを使うことにします。 redis // 起動 # redis-server /usr/local/etc/redis.conf // cli # redis-cli MongoDB // 起動 # sudo mongod --dbpath /var/lib/mongodb --logpath /var/l…

Golangでロジスティック回帰

技評連載の機械学習 はじめようを拝見したので、Golangでロジスティック回帰を実装してみます。 イメージしやすいように結果の散布図を先に載せます。 赤と青がそれぞれ正解ラベルを表しており、緑色の実践が学習した判別境界です。 問題設定 以下のように2…

GithubのGraphQLを触ったメモ書き

最近GraphQLなる言葉をよく見るようになったので、調べつつ、習うより慣れろで触ってみたのでその形跡を残します。 GraphQLとは GraphQLを読んだ印象としては、API越しのQuery languageと理解しました。 RESTの次のパラダイムはGraphQLかにもあるようにREST …

Golangで言語処理100本ノック2015 第6章: 英語テキストの処理

言語処理100本ノック 2015の第6章: 英語テキストの処理の10問です。 50. 文区切り (. or ; or : or ? or !) → 空白文字 → 英大文字というパターンを文の区切りと見なし,入力された文書を1行1文の形式で出力せよ. gist4437579cb8e6b64166d0de27b1ce49b4 // …

GolangでS式の簡易パーサを書いてみた

言語処理100本ノック 2015のQ59でS式の解析の問題に出会ったので、パーサの自作なるものにチャレンジしたく、書いてみました。 前提 リテラルはstringのみであるとする パースした結果は多分木に格納する1 タスク 以下のS式を多分木にパースします。 (a(b(d(…

Golangでjsonをbsonに変換する

Go言語でMongoDBを扱っているとjsonをbsonに変換したくなります。 APIのレスポンスがjsonで返ってきて、それをMongoDBに格納したいときなどですね。 Go言語でMongoDBを触るためのdriverには、mgoがあります。 変換もmgoからできるのでgo getしておきます。 g…

xmlからGo strcutを生成する

ツール紹介です。 Web APIのレスポンスはだいたいjsonで返ってくるので、go structを自動生成してくれる JSON-to-Goが便利でよく使っているのですが、今回はxmlで同じことをしたいと思い、chidleyというツールを触ってみたので、使い方をまとめます。 インス…

GolangでHopscotch Hashingを実装してみた

※2017/8/13 タイトルにtypoがあったので修正しました。 [前]GolfingでHopscotch Hashingを実装してみた [後]GolangでHopscotch Hashingを実装してみた 前回のCuckoo Hashingの実装記事から少し間が空きましたが、今回はHopscotch Hashingを実装してみようと…

Golangでパーセントエンコーディングをデコードする

前回の記事でGo言語でパーセントエンコーディングを行ったので、今回はデコード編です。 とはいえ、標準でデコードするQueryUnescape()関数が用意されているので、そちらを使うのみです。 前回のように半角スペースの置換を気にする必要はありません。 ドキ…

Golangでパーセントエンコーディング

Goには標準のurlパッケージにQueryEscape()関数が用意されているので、これを利用してパーセントエンコーディングができます。 しかし、単純にQueryEscape()を使うと、以下のように半角スペースが+と表示されてしまいます。 package main import ( "fmt" "ne…

パケットキャプチャを可視化する

パケットキャプチャを取得することは多いもののWiresharkでの解析ばかりなので、 Goで可視化してみることにしました。 実装 入力としてfile.pcapを受け取り、gopacketでキャプチャデータを解析しています。 可視化はGraphvizを用いました。 gistf0b03462dc06…

Golangでローソク足チャートを描くパッケージを書いた

Golangでグラフを描くときには gonum plot が便利です。 これを使った例として、以前、棒グラフの記事も書きました。 その他の例としては、公式のwikiやGo でグラフを plot するパッケージを試したが参考になります。 gonumのレポジトリを見ると 棒グラフや…

Golangで長いステートメントを次の行へ継続する

文字列の結合をしていると以下のように長くなることがあります。 改行したくなります。 str := stmt1 + stmt2 + stmt3 + stmt4 + stmt5 + stmt6 + stmt7 + stmt8 + stmt9 + stmt10 少しググった限りだと文字列に改行が含まれ複数行になる場合の記事ばかりが…

Golangで言語処理100本ノック2015 第5章: 係り受け解析

言語処理100本ノック 2015の第5章: 係り受け解析の10問です。 前処理 CaboChaの処理は先に済ませておきます。 # cabocha -f1 neko.txt -o neko.txt.cabocha 40. 係り受け解析結果の読み込み(形態素) 形態素を表すクラスMorphを実装せよ.このクラスは表層…

mycliの選択候補のカラーを変更する

mycliではSyntax Colorsにあるようにカラーテーマを設定できますが、選択候補はカラーテーマによって変更されないので以下のように見づらくなってしまいます。 解決するためには、~/.myclircのCompletion menusを編集すればカラーを自由に設定することができ…

GolangでBucketized Cuckoo Hashingを実装してみた

先日、Cuckoo Hashingの記事を書いたところ、以下のご指摘を頂いたのでBucketized版も実装してみました。 bucketizedして性能バク上げしよう₍₍ (ง´・_・`)ว ⁾⁾— まっちゃら (@matsu_chara) 2017年5月6日 Erlingssonらの論文にも述べられていますが、挿入した要…

Golangで数を増やしながらベンチマーク

ベンチマークを測定していると要素数を増やしたり、負荷を上げたりしながら性能がどのように変わるか調べたいときがあります。 変数をべた書きしたベンチマークをコピペして書くことも可能ですが、以下のような方法できれいに書くことができます。 ここでは…

係り受け解析して可視化するくんを作った

詳細はGithubのREADME.mdを見て頂ければと思いますが、標準入力で入力した文章を係り受け解析し、有向グラフとして可視化するくんを作りました。 fishの練習がてら言語処理100本ノック 2015でやった内容を使いまわしました。結果は以下のようになります。 (…

GolangでHMAC-SHA256署名する

APIの認証でHMAC(Hash-based Message Authentication Code)を使用したいことがあります。 HMACはその名の通り、あるhash-basedなメッセージ認証符号で、メッセージと秘密鍵をもとに生成されます。 今回はハッシュ関数にSHA256を用いて、HMACしてみます。 実…

GolangでMiller-Rabin素数判定法を実装してみる

背景 Wikipedia にも記載されていますが、 Miller-Rabin素数判定法は 与えられた数が素数かどうかを判定する素数判定アルゴリズムの一種で、乱択アルゴリズムです。 フェルマーテストでは、以下のフェルマーの小定理を用いて 素数判定を行いますが、カーマイ…