$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

2016-12-01から1ヶ月間の記事一覧

suffix array構築のメモリ効率を良くする - アルゴリズム学習(その7)

blog.shibayu36.org上の記事で、一番簡単なアルゴリズムでのsuffix arrayの構築を実装してみた。しかしこれをベンチマークしようとして、10万文字くらいの文字列に対して適応してみると、Java heap spaceというエラーが出てしまい、計算できなかった。こうな…

suffix arrayを一番簡単なアルゴリズムで実装する - アルゴリズム学習(その6)

文字列アルゴリズムを学んでいると、suffix array(接尾辞配列)という配列が出てくる。これは文字列の接尾辞の集合を辞書順にソートし、その順でそれぞれの接尾辞の文字列中の開始位置のindexを格納した配列のことである。以下が参考になる。 接尾辞配列 - Wi…

「横浜駅SF」読んだ

kakuyomu.jp 横浜駅SF (カドカワBOOKS)作者:柞刈湯葉KADOKAWAAmazon第1回カクヨムWeb小説コンテストから書籍化された横浜駅SFを読んだ。横浜駅が増殖するという一発ネタのような内容にもかかわらず、SFで必要である(と僕が思っている)、世界観の構築や設定の…

力づく法・分割統治法・動的計画法 - アルゴリズム学習(その5)

アルゴリズムの設計手法として、力ずく法・分割統治法・動的計画法というような考え方があった。新しいアルゴリズムを学ぶ時、どの設計手法でやっているのだろうかと意識しておくと、頭に入りやすい気がした。そこで、自分の頭を整理するためにメモを書いて…

Javaデータ構造とアルゴリズム基礎講座読んだ

Java データ構造とアルゴリズム基礎講座作者:長尾 和彦技術評論社Amazon読んだ。実装しながら読んでいて、その実装は https://github.com/shibayu36/algorithm-study/tree/master/java-data-structure-and-algorithmに置いてある。この本はデータ構造の説明…

Javaでスタックとキューを実装 - アルゴリズム学習(その4)

[asin:4774136972:detail] 今回はスタックとキュー。非常に基本的なデータ構造だし、だいたい知っているけど、基本の本に書いてあることを全部再実装しようという方針なのでやってみる。 スタック スタックは配列を普通に使って、次に入れる位置を保存してお…

2016年に買って面白かった漫画

今年は漫画を買うことが多かった。このマンガがすごい!とか、マンガ大賞とか、数巻で完結するおすすめ作品まとめとか、そういうのでいろいろ調べて買って読んでいった。2016年ももう終わるので、買って読んだ本で面白かったものを1つずつ振り返ってみる。 …

Javaの文字列の長さを判定するには

自分の頭を整理するために書いておく。正しいかは知らない。まず前提として、Javaの内部表現としての「文字」は16ビット長のUTF-16ということがある。そうすると、普通に長さを取得すると、UTF-16のサロゲートペアで表される文字は2文字と扱われる。また、文…

Javaで冪集合を生成する - アルゴリズム学習(その3)

同僚に冪集合作ってみては、と言われたので作った。冪集合はhttp://www.geocities.jp/k27c8_math/math/set_theory/power_set.htmとかに書いてあるとおり、渡された集合の部分集合全体。 考え方 思いついたのは以下の考え方。 [ 1, 2, 3 ]と渡されたとする 冪…

Javaで組み合わせを生成する - アルゴリズム学習(その2)

Javaで順列生成アルゴリズムを実装する - アルゴリズム学習(その1) - $shibayu36->blog;で順列を作ったので、続いて組み合わせを作ってみた。 考え方 いろんな考え方があると思うけど、僕が最初に思いついたのは次の考え方。 [ 1, 2, 3, 4, 5 ]から3つ取り出…

Perl Hackers Hubで執筆した「Perl開発への動的な型制約の導入」がWebで公開されました

以前Web+DBのVol.94のPerl Hackers Hubで執筆した、「Perl開発への動的な型制約の導入」がWebで公開されていました。gihyo.jpPerlに動的な型制約を導入するのは結構簡単にできて、安全さがかなり変わると思います。興味がある人は見てください!

Javaで順列生成アルゴリズムを実装する - アルゴリズム学習(その1)

アルゴリズムを勉強しようと思って、以下の本のアルゴリズムをJavaで自分で考えて再実装するという取り組みをやっている。以下の本は基本的なアルゴリズムが簡単に説明されていて、しかも薄いのでやりやすい。2011-09-22を見て購入した。Java データ構造とア…

ディレクターを経験して良かった

この記事は、はてなディレクターアドベントカレンダー2016の19日目です。昨日は id:shimobayashi の「効率的で課題解決的な態度にひそむ罠について」でした。こんにちは、はてなでアプリケーションエンジニアをやっているid:shiba_yu36です。僕は現在はエン…

はてなインターンの事前課題をJavaでやった - Java入門記(その2)

はてなインターンの事前課題で非常に簡単なltsvパーサーを作るやつがあるのだけど、Javaの勉強のためにJavaで実装してみた。ltsvパーサーは結構いろんな言語で誰かが実装しているので、これどうするのがいいのかってなったら、その実装を見に行くとやり方を…

Javaに入門している(その1)

Javaでアルゴリズムを紹介している本に書いてあるアルゴリズムを全部Javaで実装してみるというのをやってみたかったので、まずJavaに簡単に入門している。 Javaの構文を理解する まあ簡単だった。 スッキリわかるJava入門を読む まあ素直な構文なので分かっ…

「スッキリわかるJava入門」読んだ

Javaでアルゴリズム実装してみようと思って、とりあえずJavaに入門した。とりあえず書ければいいので、簡単そうな「スッキリわかるJava入門」という本を買って読んだ。[asin:B00MIM1KFC:detail]とにかく簡単に書かれていて分かりやすい。構成も、Javaの構文…

特定のHTML属性を追加するだけでリンククリック計測したい(Google Tag Managerを利用して)

今日はGoogle Tag Managerの設定をすることで、自分が好きなエリアのリンククリック計測を簡単にする方法について書く。 課題 クリック計測は自作で作るのは大変 Google Tag Managerで計測することもできるが、計測対象を増やすためにタグを毎回一つ増やすと…

builderscon tokyo 2016に参加しました & 発表しました

builderscon tokyo 2016に参加してきました。buildersconは「知らなかった、を聞く」をテーマにしたと書いてあるとおり、かなり尖った発表が多く、非常に楽しめました。僕は「一から始めるJavaScriptユニットテスト」という発表をしました。全体的にハックっ…