$shibayu36->blog;

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

2016-01-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ユニットテスト」という発表をしました。全体的にハックっ…

最近読んだ本 - 「マリオネットの罠」「アンネの日記」「玩具修理者」「動機」「猫を抱いて象と泳ぐ」

久々に小説などの本を読もうと思って、最近いくつか読んでいたので、ブログに書いておく。 マリオネットの罠 マリオネットの罠 (文春文庫)作者:赤川 次郎文藝春秋Amazon最初に読んだのは、赤川次郎さんの「マリオネットの罠」。小説を読むこと自体が久しぶり…

「コーチングのすべて」読んだ

なぜ最近コーチングや人間の学習モデルの勉強をしているのか - $shibayu36->blog;や、目標設定の仕方を学ぶ - 「ザ・コーチ」読んだ - $shibayu36->blog;の続きとして、コーチングという知識を体系的に学びたいと思い、「コーチングのすべて」を読んだ。コー…

エンジニア立ち居振舞い: 分かりやすく依頼する・説明する

お題「エンジニア立ち居振舞い」というお題を id:hitode909 くんが作っていたので書いてみる。 コードを書く以外にいろいろとしているのだけど、その中の一つとして「分かりやすく依頼する・説明する」ということに時間を割いているので紹介。 エンジニアと…

なぜ最近コーチングや人間の学習モデルの勉強をしているのか

最近以下のようにコーチングや人間の学習モデルの勉強をしている。 目標設定の仕方を学ぶ - 「ザ・コーチ」読んだ - $shibayu36->blog; 「リファクタリング・ウェットウェア」を再読した - $shibayu36->blog; 「コーチングのすべて」という本を今読んでいる …

AMPについてのコンテンツ消費者としての感想メモ

昨日、「AMPが導入された結果、現時点ではモバイルのブラウズ体験が大きく損なわれてるのですが、そう感じるのは僕だけでしょうか」とTwitterでつぶやいたら、いろいろ反応があり、いろんな観点を知ることが出来たのでメモしておく。なお、自分自身はまだAMP…

「やさしいコンピュータ科学」読んだ

やさしいコンピュータ科学 (Ascii books)作者:アラン・W. ビアマンASCIIAmazon最近、流行りのものを勉強するより、技術の賞味期限が長いコンピュータサイエンスの基本の理論を再勉強しようという気持ちが強い。そこで、とりあえず概論でも見るかという気持ち…

「リファクタリング・ウェットウェア」を再読した

最近、学生時代よりも学習時間を取れなくなっていて、このままだと新しいことが身につかなくなっていっていくのではという危機感があった。またメンターをするにあたって、人の学習モデルをある程度理解しておいて、アドバイス出来るようにしたいという思い…

目標設定の仕方を学ぶ - 「ザ・コーチ」読んだ

最近コーチングという分野に興味を持って、まずは簡単でさくっと読めそうな「ザ・コーチ」という本を読んだ。ザ・コーチ 最高の自分に気づく本 (小学館文庫プレジデントセレクト)作者:貴彦, 谷口小学館Amazon この本は、副題も含めると「ザ・コーチ - 最高の…

「いちばんやさしいグロースハックの教本」読んだ

サービスの成長について少しだけ理解を深めたくて読んだ。いちばんやさしいグロースハックの教本 人気講師が教える急成長マーケティング戦略 (「いちばんやさしい教本」シリーズ)作者:金山 裕樹,梶谷 健人インプレスAmazonこの本では、サービスを成長させる…

チーム内プロジェクトが発足した時に、プロジェクトの朝会を用意すべきか

最近チーム内で少し大きめなプロジェクトが発足して取り組んでいたのだが、その時プロジェクトの朝会(デイリースクラム)をするべきなのか悩んだことがあった。自分の中ではプロジェクトごとの朝会を用意すべきという結論に至ったのだが、今回はその結論に至…

関数の仕様を正しく実装していることをどう保証するのか

静的型チェックがあったらテストはあまり書かなくて良いのか - $shibayu36->blog; で静的型チェックがあったとしても、テストをあまり書かなくて良いわけではないという話を書いた。するとブコメでいろいろ意見をもらえた。これらの意見から、関数の仕様を正…

MySQLを使って簡易的にサービスの数値を集計する

最近色んな機能を作る時に、簡単に数値を集計してみて様子を見るということがよくあった。そこで今回はその時に使ったクエリの紹介。【2016/10/18 10:28追記】 社内でHOUR関数とかGROUP BYにalias名を使ったらもっと簡単にできるよと言われたので、それぞれ…