2018-01-01から1年間の記事一覧

AtCoder ABC Q110の問題DをHaskellで解いてみました

AtCoder ABC Q110の問題DをHaskellで解いてみました 問題 正整数 N,M が与えられます。 a1×a2×…×aN=M となる正整数からなる長さ N の数列 a が何通りあるかを 10^9+7 で割った余りを求めてください。 ただし、数列 a' と a'' が異なるとは、ある i が存在し…

javascriptでdomの正確な位置を取得したい

javascriptでdomの位置を取得するための関数を作成してみました。domの位置として画面上の左上の位置を基準とした座標とdocument上の左上の位置を基準(スクロールを含めたもの)とした座標があると思いますが、その両方を求めれるようにしたいと思います。

IndexedDBを試してみる

IndexedDBを試してみる ブラウザ上のデータを保存したい場合FileSystemAPIがありますが、これは非推奨のようなので代わりに使えそうなのを探していたところIndexedDBが良さそうなので試して見たいと思います。 IndexedDBの使い方はmozillaのサイトを見たらわ…

ECMAScript2015のProxyを使ってobjectの値の変更を検出する

ECMAScript2015でobjectの値の変更を検出して関数を実行する場合、以前であればObject.prototype.watchの機能があったのですが現在では非推奨および廃止とのことなのでECMAScript2015から導入されたProxyの機能を使って値の変更を検出したいと思います。 MDN…

ロジスティック回帰を実装してみる

ロジスティック回帰 2クラス分類のロジスティック回帰をPythonで実装して見たいと思います。 C1, C2の2クラス分類についてクラスC1の事後確率は以下のように表せられます。

ECMAScript6でthisを束縛する方法について

ECMAScript6でthisを束縛する方法について検証した際のメモ まずダメな例として、以下は画面クリックの際に呼ばれる clickFunc から this.calledFunc() を呼び出すことはできません。クリックに反応したelementがthisになるため、この場合はリスナーが設定さ…

webpack入門_typescript

公式のドキュメントを参考にwebpackをTypescriptに対応させたいと思います。 まず以下のコマンドでtypescriptとts-loaderをインストールします。 npm install --save-dev typescript ts-loader

webpack入門_shimming

shimming 公式のドキュメントでShimmingを試してみたいと思います。 webpackの設定ファイルでProvidePluginを指定するとライブラリをグローバルに適用することができ、importなしでも使用することができます。例えばサードパーティ製のライブラリがjQueryを…

webpack入門_Progressive Web Application

Progressive Web Application webpackの公式ドキュメントのProgressive Web Applicationを見ていきたいと思います。 まずPWA(Progressive Web Application)ですが、これはWEBアプリをネイティブアプリのように動作させる技術のようで以下のドキュメントを見…

webpack入門_ライブラリ作成

Authoring Libraries 公式ドキュメントのAuthoring Libraries を参考にnodeのモジュールを作成して参照できるようにしたいと思います。 それではまず、モジュール化させるプロジェクトを作成します。 mkdir webpack-numbers cd webpack-numbers npm init -y …

windows_指定したexeに対してDLLインジェクションでコピペを検出する

前回は自分自身のプロセスに対してDLLインジェクションを実行しメッセージボックスの表示内容を変更しました。今回は指定したEXEに対してコピー&ペーストを検出できるようにしたいと思います。 それではDLL側のプロジェクトをまず作成していきます。

windows_DLLインジェクションで自分自身のプロセスのMessageBox関数のアドレスを変更する

前回まではsetWindowsHookExを使ってメッセージボックス表示の関数呼び出しをフックしていたのですが、今回はDLLを読み込んだ際に既存のMessageBox関数のアドレスを上書きすることでフックできるようにしたいと思います。 やりたいことはこちらの東京工業大学…

webpack入門_設定をマージしてみる

webpackの公式ドキュメントを試してwebpack.config.jsのマージを確認してみたいと思います。 開発時とビルド時でwebpackの設定は以下の方針に差が出ます。

windows_他のソフトのメッセージボックスを変更してみる

前回は同一プロセス内のメッセージボックスの内容を変更したので、今回は別プロセスのメッセージボックスの内容を変更したいと思います。ただし、今回の方法は対策を取るのが可能なようで再現できるかどうかはソフトによるような感じです。 まず、setWindows…

windows_同一プロセス内のメッセージボックスを変更してみる

windowsの環境でsetWindowHookExを使って同一プロセス内のメッセージボックス表示の処理をhookし内容を変更できるようにしたいと思います。別のソフトでのメッセージボックス表示内容を変更できるようになったら面白そうですが、まずは同一プロセス内のメッ…

windows_LowLevelKeyboardProcでキーボード入力をフックしてコードを変更してみる

Windows環境 LowLevelKeyboardProcで入力されたキーコードを変更する LowLevelKeyboardProcはwindows環境でsetWindowsHookEx関数と併用してキーボード入力があったときに呼び出されるコールバック関数になります。アクティブなウィンドウがなにかにかかわら…

webpack入門_hot-module-replacement

前回はwebpack-devserverで開発ができるようになりました、今回はwebpack-devserverでの開発中にhot-module-replacementでファイルの修正を検出してhot reloadできるようにしたいと思います。 webpack.config.jsには以下の修正を加えます。 - devServerにhot…

webpack入門_開発サーバ

前回はbiuldしてhtmlファイルを出力できるようになりました。今回は開発用サーバを使って毎回ビルドしないでも修正内容を確認できるようにしたいと思います。 公式のドキュメントでは開発用にwebpackをwatchモードで起動したり、webpack-dev-server,webpack-…

webpack入門_html-webpack-plugin

前回に引き続き、今回はbuildでhtmlを出力できるようにしたいと思います。使用するライブラリはhtml-webpack-pluginでbuildの時に必要になるものなので以下のコマンドを実行します。 npm install --save-dev html-webpack-plugin それからwebpack.config.js…

webpack入門_asset management

前回に引き続き今回はassetファイルを扱いたいと思います。 cssファイルの読み込み 以下のコマンドでcssファイルを読み込めるようにします。 npm install --save-dev style-loader css-loader 以前は--save-devではなく--saveを利用しましたが、--save-devは…

webpack入門_Getting Started

このところのjavascriptは発展が著しくECMAscript6が出たりAngularやReact,vueといったフレームワークが登場しています。新規の開発であればこれらの導入を検討しても良さそうですがビルドツールなどの環境整備の情報がまとまっていなかったりしてその分敷居…

Pyhonでアフィン変換をつかって2次元の画像を回転、平行移動させる

座標(x,y)のピクセルをアフィン変換で回転させる場合、変換後の座標(x', y')は以下の式で表すことができます。 それからx軸にx_t, y軸にy_t平行移動も加える場合、は以下の式になります。 これをPythonで実装する場合、変換対象の画像が2次元の配列で表せら…

PythonでCannyエッジを検出してみる

画像から枠線を取り出す手法としてエッジ検出について、代表的な手法としてCannyエッジ検出が有ります。Cannyエッジ検出の方法は以下の資料で確認できます。 http://www.cse.iitd.ernet.in/~pkalra/col783/canny.pdf http://www.massey.ac.nz/~mjjohnso/note…

Fessで集めた記事に対してPythonで実装したtf-idfを適用して特徴的な単語を取得する

事前作業 まずpythonにelasticsearchのクライアントをインストールします。 pip install elasticsearch それからFessでWebサイトをクロールさせて記事を収集させます。 $ curl -XGET http://localhost:9201/_cat/indices/fess.20180701\*\?v health status i…

Fessのクローラを機械学習に活用するための調査

機械学習のためのデータ収集にFessが使えるのか調査したいと思います。 Fessとは Javaで作られApacheライセンスで提供されるオープンソースの全文検索サーバです。検索エンジンとして以前はApache Solrが使われていましたが、現在ではElasticsearchが使われ…

TensorFlowのk平均法で文章をクラスタリングしてみた

TensorFlowのk平均法で文章をクラスタリングしてみた TensorFlowでスポーツニュースと経済ニュースの文書をクラスタリングしてみたので、その時の手順をまとめてみたいと思います。 今回の大まかな流れとして以下のように進めたいと思います。 - 経済とスポ…

Elasticserachのgetting startedを読んでみた

クラスターとノードについて Elasticserachはクラスターの構築を想定しています。クラスターはクラスター名で識別し、クラスター内のノードを識別するためのUUIDはクラスター参加時にランダムな値が生成されます。ノード起動時に参加可能なクラスターが存在…

モデル訓練のテクニック

モデル訓練のテクニック 機械学習でパラメータを更新するためのテクニックについてまとめていきたいと思います。 学習係数の決め方 機械学習では学習係数をどう決めるかが学習の成否を大きく左右し、極めて重要になります。 自動的に学習係数を決める手法で…

Haskellで数独を解いてみた

関数プログラミング実践入門を読んだのでHaskellで数独を解いてみました。実装は以下のようになりました。

Pythonでjanomeを使って形態素解析してみた

pipでjanomeを入れて形態素解析してみた 今までPythonで日本語の形態素解析を入れる時はまずmecabをインストールしてからPythonから呼び出せるように共有ライブラリの依存関係を更新するなどして少し手間がかかっていたのですが、Pythonで作られた形態素解析…