はてなブログでベクトルを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素数判定法は 与えられた数が素数かどうかを判定する素数判定アルゴリズムの一種で、乱択アルゴリズムです。 フェルマーテストでは、以下のフェルマーの小定理を用いて 素数判定を行いますが、カーマイ…

Atomでconfig.fishをハイライトさせる

zshからfishに移行している最中にconfig.fishがAtomでハイライトされていなかったのでさせました。 単純に拡張子とscope nameを対応させるだけですが、fishを検索ワードにしてると意外と引っかからなかったのでメモ書きとしてまとめておきます。 事前準備(fi…

GolangでCuckoo Hashingを実装してみた

2017/5/27 修正 int64型であるkeyを[]byte型へconvertする際にhasher.Write([]byte(string(key)))ではうまくいかないため以下のように修正しました。 b := make([]byte, 8) binary.LittleEndian.PutUint64(b, uint64(key)) hasher.Write(b) 背景 BloomFilter…

Golangで有向グラフをかく

背景 言語処理100本ノック 2015をやっている最中に、有向グラフで表示する問題(Q44)に遭遇しました。 gographvizでDOT言語のdotファイルを作成し、graphvizで可視化したのでまとめます。 動作環境 # sw_vers ProductName: Mac OS X ProductVersion: 10.11.6 …

Golangで言語処理100本ノック2015 第4章: 形態素解析

言語処理100本ノック 2015の第4章: 形態素解析の10問です。 前処理 mecabの処理は先に済ませておきます。 # mecab neko.txt -o neko.txt.mecab 30. 形態素解析結果の読み込み 形態素解析結果(neko.txt.mecab)を読み込むプログラムを実装せよ.ただし,各形…

Golangのmath/bigでIntを直接入力したい

背景 Golangの基本型であるint64ではのため20桁程度(※)でoverflowを起こします。そのため、math/bigパッケージのNewIntを使おうとするとoverflowのコンパイルエラーになります。 ※正確には、符号付き64bit整数の最大値9223372036854775807(ギリギリ19桁)を超…

DH鍵交換でもWiresharkでSSL/TLSを復号化したい

WiresharkでSSL通信の中身を覗いてみる を拝見し、実際に自分の手を動かしてみたのですが、記事内でも触れられているようにDiffie-Hellman(DH) key exchange (および楕円曲線を用いたECDH) では、実際に鍵を送り合うわけではなく、鍵を生成するためのパラメ…

2016年度に読んだ本まとめ

年度も変わったので2016年度の一年間で読んだ本をまとめました。 例によって小説とか漫画は数が多くなりすぎるので割愛です。 技術書 GitHub実践入門 ~Pull Requestによる開発の変革 いい加減、GitHub触っておかないとな、と思ったので読みました。 今でもた…

Golangで棒グラフを描く

背景 言語処理100本ノック 2015をやっている最中に、棒グラフで表示する問題(Q37)に遭遇しました。簡単に検索したところ、意外と日本語記事が少なかったので、Gonum Plotを色々触ってみたメモを残しておきます。 packageのインストール Gonum Plotにもありま…