$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

Coursera Machine Learning Week3の学習

Coursera Machine Learning Week1を受けた & メモ - $shibayu36->blog; Coursera Machine Learning Week2の学習 - $shibayu36->blog; に引き続き、Coursera Machine Learning Week3を受講した。 Week3の講義を受けると次のことを学ぶことができた。 分類問題…

最近は憂鬱だったけど、いつもこの時期は憂鬱っぽかった

最近また仕事もプライベートもなかなかやる気が出ないと思っていたら、いつもの時期という感じだった。面白い。blog.shibayu36.org

雑に書いたブログ記事が問題を起こさないようにする工夫

ちょっとしたことでも雑にブログに書いておくと良いことが起こる - $shibayu36->blog; で、ちょっとしたことでも雑にブログに書いておくと良いことが起こるよということを書いた。さらに余談として最低限の雑さについても書いた。 これをきっかけに、公開の…

ちょっとしたことでも雑にブログに書いておくと良いことが起こる

僕は自分がやったこと・勉強したこと・気づいたことなどはどんなにちょっとしたことでも、公開の場のブログに書くようにしている。その内容はある程度雑でも良いので、とにかく公開の場に書くようにしている。それによって、結構良いことが起こっているとい…

Coursera Machine Learning Week2の学習

前回 に引き続き、Coursera Machine Learning Week 2を受講した。 前回は線形回帰モデルとは何か、最小化すべきCost Functionは何か、最急降下法とは何かについて学ぶことができた。Week 2の講義を受けるとさらに次のことを理解することができる。 多変量(x1…

MySQLのfilesortは何ソートで行われているのか

最近、CourseraのArgorithms, Part1という講義を受けている。そこでソートの講義を受けて、そういえばMySQLのORDER BYでfilesortになったときってどのソートが使われているのだろうと気になってきたので調べてみた。 調べてみると非常に難解で、結局いまいち…

Emacsでvirtualenvに入れたライブラリも考慮したPythonの補完環境を作る

新言語を使うときは、その言語の補完ができるかどうかで学習効率が変わってくるので、ひとまずPythonの補完環境を作った。基本Pythonではvirtualenvを使うのが一般的なようなので、環境ごとに入れたライブラリも考慮して補完できるようにした。 色々調べたと…

zsh-autoenvを使って、virtualenvの自動activate/deactivateを実現する

pyenv + venvでPython3環境を構築する - $shibayu36->blog; の記事で、特定のPythonプロジェクト用のvirtualenv環境を導入することが出来ました。しかし、このプロジェクトに入るたびにsource venv/bin/activateし、逆に抜ける時にdeactivateするのは 面倒 …

Pythonのvenvのプロンプト表示をカスタマイズする

pyenv + venvでPython3環境を構築する - $shibayu36->blog;の記事で、Python3でvenvを使った環境を構築することができた。しかしvenvでsource bin/activateすると、自分の設定したプロンプトの左側に(venvの環境名)という文字列が勝手に挟み込まれてしまって…

pyenv + venvでPython3環境を構築する

機械学習のモチベーションを上げるためにTensorFlowを触ろうとしている。まずは環境設定でしょうということで、ひとまずPython3環境を作る。今はpyenv + venvで作るのが良いみたいなので、それでやってみたメモ。 pyenvでpythonをインストールする pyenvが必…

mysqlenvの管理配下にデバッグオプション付きのMySQLをインストールする

最近アルゴリズムの勉強をしていて、MySQLの挙動を追う機会があった。そこでMySQLのデバッグを出来るようにと、MySQL :: MySQL 5.6 リファレンスマニュアル :: 24.4.1.1 デバッグのための MySQL のコンパイル に書いてあるように、MySQLをデバッグオプション…

Coursera Machine Learning Week1を受けた & メモ

自分の中で裏側よりの難しいタスクをアサインされる機会を増やしたいと思い、機械学習の勉強を始めることにした。そこでとりあえず良いとよく言われているCoursera Machine Learningの講義を受けることにした。https://www.coursera.org/learn/machine-learn…

行動分析学の観点から課題を解決する - 「パフォーマンス・マネジメント」読んだ

最近効率的な課題解決について興味があり、パフォーマンス・マネジメントという本を見かけたので読んでみた。パフォーマンス・マネジメント―問題解決のための行動分析学作者: 島宗理出版社/メーカー: 米田出版発売日: 2000/03メディア: 単行本購入: 39人 ク…

「WEB小説ヒットの方程式」読んだ

小説家が何を考えて小説を書いているか気になったので読んだ。読者の心をつかむ WEB小説ヒットの方程式作者: 田島隆雄,ヒナプロジェクト,博報堂DYデジタル出版社/メーカー: 幻冬舎発売日: 2016/07/27メディア: 単行本(ソフトカバー)この商品を含むブログを…

初めて学ぶ知識をどのように学習しているか

ふと、自分が初めて学ぶ知識をどのように学習しているか疑問に思ったので、考えてみたことをブログに書いておく。初めて学ぶ知識というのは、自分がやったことだと例えばマネジメント、プロジェクト管理、コーチングなどがある。 僕はある知識を初めて学ぶ時…

「理論から学ぶデータベース実践入門」読んだ

理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus)作者: 奥野幹也出版社/メーカー: 技術評論社発売日: 2015/03/10メディア: 単行本(ソフトカバー)この商品を含むブログ (18件) を見る積ん読に入っていたので…

高速なRandomized Queueのアルゴリズムを実装する

CourseraのAlgorithms, Part Iというコースで、高速なRandomized Queueを実装するという話題があったので、試しに作ってみた。 高速なRandomized Queueとは Randomized Queueとは、Queueからdequeueするときに、中に入っている要素の中からランダムに一要素…

どのようにエンジニアの目標設定を行うか

以前 ゴールを決め目標を決める・解決案ではなく質問する - コーチングの学習で学んだこと - $shibayu36->blog; で、「ゴールを決め、現在位置とのギャップを考え、目標を決める」と良いということをまとめた。イメージとしては以下の図の通り。 しかし、前…

「事業成長にコミットするエンジニア組織への道のり」スライドのメモ

非常に良かった記事とかを見た時、これまではEvernoteにメモを残していたのだけど、よく考えたら別にブログに公開しておけば良いよなと思ったので公開してみる。今回は「事業成長にコミットするエンジニア組織への道のり」というのが良かったのでメモ。 事業…

中置記法の数式文字列から計算結果を求める操車場アルゴリズム

最近 Algorithms, Part I - Princeton University | Coursera の社内勉強会を開いている。そこで「Stacks and Queues」という章をみんなで学習し、議論したところ、中置記法の数式文字列から計算結果を求める操車場アルゴリズム(Shunting-yard algorithm)と…

問題の効率的な解決方法を学ぶ - 「世界一やさしい問題解決の授業」読んだ

仕事で何かしら課題を見つけた時に、それを効率よく解決する方法にはどういうものが知りたかった。そこで参考になりそうな「世界一やさしい問題解決の授業」を読んだ。世界一やさしい問題解決の授業―自分で考え、行動する力が身につく作者: 渡辺健介,matsu(…

ピラミッド原則を実践で学ぶ - 「考える技術・書く技術 ワークブック<上>」を読んだ

前回「考える技術・書く技術」を読んで、書く・考える時に役立つピラミッド原則というものについてもう少し理解を深めたくなった。そこで、実践形式で書き込みながら学べる「考える技術・書く技術 ワークブック」を読んだ。考える技術・書く技術 ワークブッ…

BM法による文字列マッチング学習メモ

grepで文字列マッチングしている時の仕組みを学ぶために、BM法などの文字列マッチングについて調べていた。調べたことをメモしておく。特にまとまってはいない。参考になった文献は以下。 コーディングに役立つ! アルゴリズムの基本(7):文字列の中から効…

問題解決のための質問群を学んだ - 「考える技術・書く技術」を読んだ

最近、自分は問題をうまく分割して解決する能力や、他の人に分かりやすく伝える能力がまだ足りていないと感じていた。そのあたりを強化するために、おすすめと言われた「考える技術・書く技術」を読んだ。考える技術・書く技術―問題解決力を伸ばすピラミッド…

ゴールを決め目標を決める・解決案ではなく質問する - コーチングの学習で学んだこと

半年前から会社でシニアエンジニアという役職で、エンジニアのメンターの役割を担っている。その役割を出来るだけうまく演じられるように、半年間はコーチングの学習を進めてきた。 目標設定の仕方を学ぶ - 「ザ・コーチ」読んだ - $shibayu36->blog; なぜ最…

Union Findアルゴリズムの様々な実装とパフォーマンス計測

CourseraにAlgorithms Part1という授業があり、これが非常に評判が良いので、会社で勉強会をしている。Week1にUnion Findというアルゴリズムが出てきて、その実装パターンがいくつかあった。それぞれ計算量が違うらしいのだけど、速度がどのように変化するか…

「ウェブ小説の衝撃」読んだ

ウェブ小説のドメイン知識を知りたかったので読んだ。ウェブ小説の衝撃: ネット発ヒットコンテンツのしくみ (単行本)作者: 飯田一史出版社/メーカー: 筑摩書房発売日: 2016/02/23メディア: 単行本この商品を含むブログ (15件) を見る印象に残ったのは以下の…

様々な価値観を持った人の生の声を聞ける「現役東大生が1日を50円で売ってみたら」読んだ

現役東大生が1日を50円で売ってみたら作者: 高野りょーすけ出版社/メーカー: KADOKAWA / 中経出版発売日: 2017/02/02メディア: Kindle版この商品を含むブログを見る読んだ。非常に面白かった。自分はエッセイやノンフィクションの本は読んだことはあまりな…

登場人物を分類し、振る舞いを分解して、機能を考える(企画職の人に教えてもらったこと)

本職の企画の人が優れた機能案を出してくる理由がわからなくて、どうやってやってるんですかと雑談した。新たな発見があったので、雑なメモだけ残しておく。*1 その人の企画の流れ 企画の流れは、以下の3ステップで行っているらしい。 1. 登場人物を分類する…

「検索エンジン自作入門」を読んだ

Elasticsearchが裏でどのように動いているか理解できるようにするために、「検索エンジン自作入門」を読んだ。検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏作者: 山田浩之,末永匡出版社/メーカー: 技術評論社発売日: 2014/09/25メディア: 単行…

1月に読んで面白かった漫画

1月も漫画をいろいろ読んだ。その中で面白かった漫画を残しておく。 地球の放課後 スピリットサークル げんしけん ホブゴブリン 春の呪い ヒロシ戦記 地球の放課後 地球の放課後(1) (チャンピオンREDコミックス)作者: 吉富昭仁出版社/メーカー: 秋田書店…

どうやったら発見した問題をうまく放置できるようになるのか

仕事をしていると、様々な問題が発見される。問題を発見した時、とにかくすぐに対処しようとしてしまうことが多い。しかし、そうしていると、タスク量が増えてきたときに問題解決に忙殺され、もっと重要なことに取り掛かれないということが起こりがちである…

「無印良品は、仕組みが9割」を読んだ

昨夜なぜか眠れなかったので、積んであった「無印良品は、仕組みが9割」を一気読みした。無印良品は、仕組みが9割 仕事はシンプルにやりなさい作者: 松井忠三出版社/メーカー: 角川書店発売日: 2013/07/10メディア: 単行本この商品を含むブログ (15件) を見…

転置インデックスの構造から見る全文検索

全文検索エンジンについて学んでいたのだけど、転置インデックスのデータ構造という観点から見るといろいろ面白かったのでまとめてみる。 転置インデックスの具体的な構造 全文検索では、転置インデックス(Inverted index)という仕組みを使う。詳しくは第3回…

「ヒーローは眠らない」読んだ

ヒーローは眠らない (富士見L文庫)作者: 伊丹央,alma出版社/メーカー: KADOKAWA発売日: 2016/12/15メディア: 文庫この商品を含むブログを見る読んだ。戦隊モノを撮るプロデューサーの話で、そういうストーリーを読んだことがなく、新鮮に読めた。語り口調も…

WikipediaのXMLデータから文書を1000件含むXMLファイルを作成するワンライナー

検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏作者: 山田浩之,末永匡出版社/メーカー: 技術評論社発売日: 2014/09/25メディア: 単行本(ソフトカバー)この商品を含むブログ (4件) を見る検索エンジン自作入門を見ていて、WikipediaのXMLデータ…

極大部分文字列について調べた

社内の技術勉強会で極大部分文字列というワードが出てきたので、自分で調べた内容をメモ。内容があっているかは保証しない。 極大部分文字列とは何か 定義は 全ての部分文字列を考慮した文書分類 に書いてある これによると、「極大部分文字列の必要十分条件…

田中圭一さんの「うつヌケ」を読んで欲しい

田中圭一さんの「うつヌケ」というコミックエッセイを読んだ。とにかくむちゃくちゃ良かった。 (角川書店単行本)" title="うつヌケ うつトンネルを抜けた人たち 【電子書籍限定 フルカラーバージョン】 (角川書店単行本)">うつヌケ うつトンネルを抜けた人た…

「数学ガール/乱択アルゴリズム」を読んだ

アルゴリズム読み物を読みたくて、いろんなところでオススメされている数学ガールの乱択アルゴリズムを読んだ。なかなか興味深かった。数学ガール/乱択アルゴリズム (数学ガールシリーズ 4)作者: 結城浩出版社/メーカー: SBクリエイティブ発売日: 2011/03/02…

パーフェクトJavaを読んだ

最近アルゴリズムの勉強でJavaを使っていて、いい機会だしどうせならJavaの言語の詳細な機能や考え方などを知りたいと思っていた。Javaをやっている人に聞いてみると「パーフェクトJava」が良いということなので読んでみた。改訂2版 パーフェクトJava作者: …

勇者のクズ読んだ

(カドカワBOOKS)" title="勇者のクズ 1【電子特典付き】 (カドカワBOOKS)">勇者のクズ 1【電子特典付き】 (カドカワBOOKS)作者: ロケット商会出版社/メーカー: KADOKAWA / 富士見書房発売日: 2016/12/24メディア: Kindle版この商品を含むブログを見る読んだ…

Suffix Arrayを使った文字列マッチング

あるPatternがあるText中のどこに含まれるかという文字列マッチングの実装を最近してみている。前回、Suffix Trieでの文字列マッチングを行った。blog.shibayu36.orgSuffix Trieを利用すると、Suffix Trieを最初に構築したあと、実際にパターンを検索するの…

CircleCIでJava8 + Gradleプロジェクトのテストを行う

興味本位で自分のアルゴリズム実装repository( https://github.com/shibayu36/algorithms )のテストをCircleCIで動かしてみようと考えた。基本的にCircleCIはcircle.ymlに設定を追加したら終わりなのだけど、何を設定すればいいか少し調べる必要があったので…

冪集合を作るメソッドをジェネリクス対応する

以前 Javaで冪集合を生成する - アルゴリズム学習(その3) - $shibayu36->blog; で冪集合を作るメソッドを実装していた。しかし、以前の実装だとListでしか冪集合を作ることができなかった。最近パーフェクトJavaを読んで、ジェネリクスについて学んだので、…

ハッカソン旅行 in 和倉温泉

和倉温泉に旅行に行きました。観光 & プログラミングをしていました。AKB丼(甘エビ・カニ・ブリ丼)を食す。 生卵を買うと、自分で温泉卵に出来る。塩分が強い温泉なので、自然と味がついていた。 こいつ自分も卵のキャラなくせに、絶対に子供を温泉卵にしよ…

Suffix Trieを使って文字列マッチングする

文字列マッチングを行うためのアルゴリズムとして、Suffix Trieを使った探索というものがある。これはテキストからSuffix Trieという構造を作り、パターンをつかってそれを辿ることで、パターンの長さmに対して、O(m)の計算量で探索できるものである。今回は…

nanobenchを使ってJavaのベンチマークを取る

アルゴリズムを学習していると、ある実装の速度がどのくらいか計測したいことがよくある。これまでは、currentTimeMillisを利用して、愚直にベンチマークを取っていたのだけど、結構だるい感じだった。調べてみると、jmh と nanobench という二つのツールが…

「世界でもっとも強力な9のアルゴリズム」読んだ

なんとなくアルゴリズム系の読み物読んでみたかったので読んだ。世界でもっとも強力な9のアルゴリズム作者: ジョン・マコーミック,長尾高弘出版社/メーカー: 日経BP社発売日: 2012/07/19メディア: 単行本購入: 15人 クリック: 437回この商品を含むブログ (21…

基礎技術の学習のモチベーションをどう保つか

最近、コンピュータサイエンスなどの基礎的な知識を学習するように心がけている。できる限り今後も長い期間役に立つ、寿命の長い技術や知識を付けておきたいためである。その一貫で アルゴリズムを学習 してみている。 学習をはじめて感じた課題 しかし、と…

文字列マッチングのためのLCP Arrayを構築する

前回のブログ記事で、文字列マッチングをするためのSuffix Arrayという構造を構築した。このSuffix Arrayという構造だけでも、テキスト長をn、パターン長をmとして、の計算量で文字列マッチングできるようになった。 suffix arrayを一番簡単なアルゴリズムで…