Haskellで数独を解いてみた

関数プログラミング実践入門を読んだのでHaskellで数独を解いてみました。実装は以下のようになりました。 module Try.Sudoku where import Data.List import Data.Function type Cell = (Int, Int) type Board = [(Cell, Int)] solve :: Board -> [Board] s…

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

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

一般化線形モデルの訓練

一般化線形モデルの訓練についてまとめてみました。 ちゃんと確認が取れているわけではなく、間違っている部分があるかもしれませんがご了承ください。 誤差の削減 損失関数によりモデルの当てはまりの良さの計算が行える。 モデルの訓練では損失の計算、パ…

Swiftで100マス計算を実装してみた

まず、実装したソースは以下のようになりました。 let col = [1,2,3,4,5,6,7,8,9,10] let row = [1,2,3,4,5,6,7,8,9,10] class Answer { let col: [Int] let row: [Int] let ans: [[Int]] init(col: [Int], row: [Int], ans: [[Int]]) { self.col = col; sel…

言語処理のための機械学習入門を読んでみた

自然言語処理のための機械学習入門を読んだので載っていた内容を簡単にまとめたいと思います。 1.必要な数学的知識 最適化問題 確率論 情報理論 2.文章および単語の数学的表現 nグラム(n-gram) 文書、文のベクトル表現 文章に対する前処理とデータスパースネ…

階層ベイズモデルについての読書メモ

岩波データサイエンス vol.1の読書メモ 階層ベイズ最初の一歩 階層ベイズモデル(階層事前分布を使った統計モデル)からベイズ統計モデルの良さを解説 階層ベイズモデルは似たようなパラメータに制約を与える特徴がある → それによりパラメータが多い場合であ…

Hadoopエコシステム周辺について

Hadoop Hadoop Distributed File System(HDFS) Yet Another Resource Negotiator(YARN) Apache Tez Apache Hive Apache Spark Apache Sqoop Apache ZooKeeper presto Hadoopは大規模データの分散処理を支えるオープンソースのソフトウェアフレームワークとし…

ユースケース駆動開発実践_実装

設計が済んだら実装を進めたいと思います。JavaのSpringBootを使って実装したいと思います。 コントローラー コントローラーはリクエストを受け取るインターフェースになります。リクエストを受け取った後にユースケース毎のアプリケーションサービスを呼び…

ユースケース駆動開発実践_詳細設計

以下のユースケースモデリングとロバストネス分析ができている状態で詳細設計を行いたいと思います。ユースケース駆動開発実践ガイドでは詳細設計でシーケンス図の作成を行うのですが、オブジェクトに対して処理を割り当てる前にドメインモデルを見直してみ…

ユースケース駆動開発実践_分析・概念設計

ユースケースモデリングにより以下のようにソフトウェア要件が具体化されている状態から、分析・概念設計を進めたいと思います。 1.ログイン ユーザはログイン画面を表示しユーザ名、パスワードを入力してログインボタンをクリックする。 システムはユーザ名…

ユースケース駆動開発実践_要件定義

前回ユースケース駆動開発の流れを掴めたので実際に開発を進めてみたいと思います。以下のECサイトの機能要求からドメインモデリングとユースケースを行いたいと思います。 - ユーザはログイン画面でユーザ名、パスワードを入力してログイン認証が行えます。…

ユースケース駆動開発実践ガイドメモ

ユースケース駆動開発実践ガイドの読書メモ ICONIXプロセストとは ドメインモデリングによって対象領域を理解し、ユースケースを書くことで顧客の要求を目に見える形でまとめ上げ、ロバストネス図によってソフトウェアの振る舞いを明確化し、シーケンス図に…

ambariでhadoopクラスタ構築

Ambariとは OSSで作られているHadoop管理プラットフォーム。セキュアな(Kerberosベースの) Hadoopクラスタのインストールをサポートし、ロールベースのユーザー認証と許可そして監査機能を提供し、ユーザー管理のために LDAPと Active Directoryとの統合も…

sbtのマルチプロジェクトでサブプロジェクトをimportする

以下のようにcoreとsubのマルチプロジェクトを作成しsubプロジェクトのSampleクラスをcoreプロジェクトのCoreクラスでimportして利用してみたいと思います。 . ├── build.sbt ├── core │ ├── src │ │ ├── main │ │ │ ├── resources │ │ │ └── scala │ │ │ └─…

Ansibleでインターネットに繋がらない環境へPythonライブラリをインストールする

インターネットに繋がらないHadoopクラスタの各slaveに対してAnsibleでPythonのライブラリを管理することを想定して試してみましたので、その時の内容を書いておきます。 hadoopクラスタへのpythonライブラリ追加として、とりあえず以下のユースケースを追加…

Typescriptで作成したパーサコンビネータを使ってJSONをパースしてみる

以前作成したTypescriptでのパーサコンビネータを利用してJSONをパースしてみたいと思います。 まずJSONの構文定義を確認してみます。確認したところarrayはelementsを含み,elementsはvalueを含みvalueはarrayを含むといった再帰的な構造を扱える必要がある…

Typescriptでパーサコンビネータを書いてみる

Typescriptは静的に型付があるので安全ではあるのですが、JavascriptではJSON.parseなどの結果を動的にたどることができたのに対してTypescriptでは静的型にして返す必要があり、Javascriptを書くときと比べて煩わしさがあったりします。Typescriptで自由な…

Typescriptでの@typesメンテ不備の対応

ReactでTypescript開発をした際にハマったのでめも。 react-data-gridが便利そうだったので@types/react-data-gridも合わせてnpm innstall --saveでインストールしてみたのだがreact-data-gridで定義されている関数がTypescriptで利用することができなかった…

Javaパフォーマンス(オライリー)を読んでみた

JVMの管理についてガベージコレクションやヒープメモリの調査方法などプログラミングをするだけではあまり意識しなかったことについて知れたのはよかったと思います。 2章パフォーマンステストのアプローチ Javaアプリケーションの正確なパフォーマンス測定…

sshjを試してみた

javaで作られているsshクライアントであるsshjを試してみました https://github.com/hierynomus/sshj/blob/master/examples/src/main/java/net/schmizz/sshj/examples/LocalPF.java 単純にssh経由でコマンドを実行するだけでなくsshプロトコルを利用している…

Haskellで100マス計算を解いてみた

Haskellでの100マス計算を以下のように実装しました。 module Try.Hyakumasu where data MathData = MathData {col :: [Int], row :: [Int]} deriving (Show, Eq) hyakumasu :: (Int -> Int -> Int) -> MathData -> [[Int]] hyakumasu f x = [f c <$> (col x…

Haskell学習中のメモ

関数を定義する 高階関数 ラムダ式 map 型、型クラス 型コンストラクタと型引数 型変数 型制約 代数的データ型を定義する 複数のデータコンストラクタを持つデータ型の定義 データの正格性フラグ フィールドの値の差し替え 型シノニム newtype 型クラス ファ…

kaggleのTitanic問題をといてみる

kaggleでチュートリアルがわりに使われているTitanicの問題を解いてみて実際に行われている分析の流れを把握できるようにしたいと思います。 kaggleでは個人の解答が公開、議論されているので普段分析をしない人でも学習にはちょうど良さそうな気がします。 …

sbt assemlby実行時にリソースフォルダを変更できるようにしたい

まずデフォルトのリソースフォルダを変更してみる sbt assemblyで実行可能jarを作成する際通常は"src/main/resources"がリソースフォルダとして使われますが、build.sbtにresourceDirectory in Compileの設定をすることによりデフォルトのリソースフォルダを…

Sparkで状態を持つobjectを使い回す方法について調べてみた

Sparkでの開発時に既存のjava資源を使用するのはよくあると思うけど、objectが状態を持っていて使い回す必要がある場合も考えられるのでその場合どうすれば良いのか調べてみました。 まず以下のように引数で与えた値だけ内部のカウンターを増やすクラスがあ…

ApacheSparkで扱うobjectのSerializableの必要性について

ApacheSparkで扱うobjectのSerializableの必要性について hiveやファイルからデータを読み込んだ直後値はRDD, Dataset, DataFrameになっていて、少ないデータに対して何回もfilter処理を行う必要がある場合に一旦collectして配列に変換しdriver内で処理した…

Scalaでseqを操作してみる

scalaでSeqを操作してみる まず以下のcase classがあったとし、 case class Element(id: Int, time: java.sql.Timestamp) 初期のデータとして以下を保持する val elementSeq = Array( Element(1, new java.sql.Timestamp(new DateTime(2017, 8, 10, 16, 13).…

sparkからhiveを利用してみる

spark-shellにてクラスパスを指定する hive SQLを実行してみる summarizationsパターンを試してみる Datasetのapiを実行してみる spark-shellにてクラスパスを指定する spark-shell --driver-class-path 対象クラスパス 開発時にちょっと修正後にいちいちビ…

Hiveの環境構築

Hive環境構築 インストール 1.javaのインストール 2.Hadoopのインストール 3.Hiveのインストール hiveのメタ情報保存先の設定 動作確認 Hiveserver2を起動してbeelineで接続してみる hiveqlを実行してみる Apache SparkからHiveを利用する spark-shellでイン…

Apache Sparkのアプリをデバッグする

sparkアプリケーションのデバッグ 1.sbt assemblyでjarファイルを生成しspark-submitコマンド実行サーバにアップロードする 2.spark-submitコマンド実行サーバにポートフォワードの設定付きでssh接続する とりあえず5039ポートを使ってみる ssh -L 5039:remo…