読者です 読者をやめる 読者になる 読者になる

Golangで棒グラフを描く

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

Golangで言語処理100本ノック2015 第3章: 正規表現

言語処理100本ノック 2015の第3章: 正規表現の10問です。 20. JSONデータの読み込み Wikipedia記事のJSONファイルを読み込み,「イギリス」に関する記事本文を表示せよ.問題21-29では,ここで抽出した記事本文に対して実行せよ. gist1c2eef5c84cb1bb2f2ffc…

tracerouteで * (アスタリスク)になる理由

背景 「ネットワークがつながらない!」といったトラブルシューティングをしていると、 tracerouteの結果が、以下のように経路の途中で*になる事象によく遭遇します。 今回はIPヘッダやパケットを見比べながら、なぜ*になるのかを見ていきます。 $ tracerout…

dockerで<none>になったimageを一発で削除するシェル芸

タイトルのままですが、docker imagesを見たときにTAGが<none>となってしまったdocker imageをまとめて削除するためのシェル芸です。 シェルも書けるようになりたいなという思いから、練習がてら。 docker images | grep none | sed -E 's/ +/ /g' | cut -f 3 -d '</none>…

Golangでcounting BloomFilterを実装してみた

先日実装したBloomFilter に要素の削除ができるようにcounting BloomFilterを実装しました。 概要 単純なBloomFilter では要素を削除することはできません。 BloomFilterへのマッピングが、削除したい特定の要素によるものか、はたまた別の要素によるものか…

Golangの関数リテラルについてメモ書き

A Tour of GoのFunction valuesを読んでいて、色々勘違いしていてわからなくなってしまったので、手を動かしてわかるようになるまでのメモ書きです。 要旨 勘違いしていたのはA Tour of Goの以下の記載についてです。 関数も変数です。他の変数のように関数…

Golangで言語処理100本ノック2015 第2章: UNIXコマンドの基礎

言語処理100本ノック 2015の第2章: UNIXコマンドの基礎の10問です。 10. 行数のカウント 行数をカウントせよ.確認にはwcコマンドを用いよ. gista7b27f35e5b111f979022b367ef696c4 # wc hightemp.txt 24 48 813 hightemp.txt ReadLine()で一行ずつ読み込み…

GolangでBloomFilterを実装してみた

前回調べたBloomFilterをGolangで実装してみました。 要素を蓄えるBloomFilterの用意 BloomFilterをサイズm[bit]のboolean配列として用意します。 実装中ではmをsizeという変数にしているので、適宜読み替えてください。 今回はBloomFilter型を用意します。 …

BloomFilterについて調べてみた

BloomFilterとは Wikipedia にも記載されていますが、ある要素が集合に属しているかを検査できるフィルタです。 一番最初に思いつく実装としては、こんな感じでしょうか。 集合の先頭から順に要素を比較していく 途中で見つかれば「属している」 最後まで見…

Golangでソートアルゴリズムのベンチマークを書いてみる

前回はテストを書いたので、今回はベンチマークです。対象アルゴリズムは前回同様、以下7つのソートアルゴリズムです。 バブルソート 選択ソート 挿入ソート シェルソート マージソート クイックソート ヒープソート ベンチマークの書き方 Go言語標準のtest…

Golangでソートアルゴリズムのテストを書いてみる

背景 先日書いた記事 にてクイックソートのバグをご指摘頂きました。 実装中は適当に入力値を変えてソートがうまくできていることを確認していたものの、実装して満足してしまったためにバグが混入していました。 やはり テストはしっかり書かなくてはいけな…

基本的なソートアルゴリズムをGolangで実装してみた

2017/1/14 修正 intelf000さんのご指摘を受け、クイックソートについて、以下のバグを修正しました。 (合わせてsliceが参照渡しであることにも注意し、実装を改めています) [内容] a[left], a[right], pivotが同一の値となった場合に panic: runtime error: …

Golangで言語処理100本ノック2015 第1章: 準備運動

Golangで言語処理100本ノック2015 第1章: 準備運動 言語処理100本ノック 2015の第1章: 準備運動の10問です。 00. 文字列の逆順 文字列"stressed"の文字を逆に(末尾から先頭に向かって)並べた文字列を得よ. gist09251fc66515bb60f15d58721c08466a rune(int…

Golomb-coded setについて調べてみた

Oku KazuhoさんのHTTP/2の課題と将来を拝見していたらGolomb-coded setなるものが登場したのでいろいろ調べたメモです。 BloomFilterについてもそのうち記事にするかもしれないです。 むしろBloomFilterを先に書くべきでは。 前提、やりたいこと やりたいこ…

「トランプを3枚出してその積を103で割った余りの値の元素をいかに早く言うか」をGolangとMySQLで実装する

背景 こちらのツイートが流れてきたのでgolangで実装してみました。 「トランプを3枚出してその積を103で割った余りの値の元素をいかに早く言うか」 環境 CentOS Linux release 7.2.1511 (Core) mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using E…

SECCON 2016 WriteUp

はじめに SECCON2016に参加しました。 初CTFです。 開催されていることに当日気がついた程度の情弱ですが、 とりあえず手を動かしてみたかったのでチャレンジしてみました。 結果1問解答でした。せっかくなのでwriteup残します。 Vigenère 問題 k: ?????????…

Golangのdeferの処理順序

背景 Jxckさんのgihyo連載 でGoを触っていて、以下の記載を読んで、エラー処理でlog.Fatalとかしていたら実行されないのでどういう仕組なのか遊んだメモです。 先の例ではfile.Close()の関数呼び出しをdeferの後ろに記述すると,この処理がmain()を抜ける直…

Googleクラウド自然言語APIをPostmanで遊ぶ

背景 Googleクラウド自然言語APIを使ってみた を拝読しました。 自分でも試したいと思いつつもGoogle Cloud Platform(GCP)を使ったことがなかったので、せっかくの機会なので触ってみることにしました。 GCPのプロジェクト作成 CCPにログイン後、ホーム画面…

Javaでwavを再生する

背景 Javaで音声ファイルを再生させたくて Javaでmp3を再生する(コード編) を参考に書いていたもののjavax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input fileのエラーが出て手が止まりました。 エラーにも書…

RapidSSLのファイル認証タイプ証明書のクローリングでハマったこと

背景 LINE bot APIが公開されたので遊んでみようということで ドメインも取得したものの、https通信が必須かつ Let's Encryptのような無料の証明書は受け付けてもらえないという 噂を耳にし、ニジモのSSLストアからRapidSSLにて購入することにしました。 証…

2015年度に読んだ本まとめ

年度も変わったので2015年度の一年間で読んだ本をまとめました。 小説とか漫画は数が多くなりすぎるので割愛です。 技術書 24時間365日 サーバ/インフラを支える技術 冗長構成という概念すらよくわかっていない時に読みました。VRRPなどが知れてよかったです…

インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門を読んだ

この本を手にとった理由 友人におすすめされて本屋で手に取ってみたら、自分が今までふわっとしか理解していなかった事柄が網羅されていそうだったので、そのままレジでした。 感想 全体の流れ L1〜L4の物理層・データリンク層・ネットワーク層・トランスポ…