読者です 読者をやめる 読者になる 読者になる

IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

all sorts of permutations (insertion sort)

all sorts of permutations (insertion sort)

streemのインストール

まつもとゆきひろ 言語のしくみ作者: まつもとゆきひろ出版社/メーカー: 日経BP社発売日: 2016/12/22メディア: Kindle版この商品を含むブログを見る 作業場所の作成 foo:work03 $ mkdir streem foo:work03 $ cd streem ソースコードの取得 foo:streem $ git …

monad transformers step by step

Monad Transformer step by step

Haskellでのデータベースアクセス

PostgresqlのHDBCを利用しました。 HDBC: Haskell Database Connectivity 作業場所の作成 $ mkdir haskelldatabase $ cd haskelldatabase サンドボックスの作成 $ cabal sandbox init Writing a default package environment file to /Users/bar/work03/hask…

HaskellのMonoidの情報

Monoid全般 Monoid応用 FizzBuzz itchyny.hatenablog.com Diagrams Diagrams - Diagrams Quick Start Tutorial Finger tree

Blenderで立方体を床に落とすサンプル

Cubeが床に落ちることをやります。 1: キューブを追加する(Shift+A -> Mesh -> Cube)。 2: Cubeを上に動かす。 3: Physics -> Rigid Body -> Type : Active とする。 4: 床を追加する(Shift+A -> Mesh -> Plane)。 5: Planeの位置と大きさを調整する。 6: Ph…

waiでのrequestの処理

waiでrequestの基本的な使い方を確認するサンプル。 wai_hello.hs wai_index.html *Main> main start app function ==================================== requestMethod : GET secure : False rawPathInfo : /cgi.php rawQueryString : ?foo=1111 requestHe…

map, map, liftM

> :t map map :: (a -> b) -> [a] -> [b] > :t fmap fmap :: Functor f => (a -> b) -> f a -> f b > :t liftM liftM :: Monad m => (a1 -> r) -> m a1 -> m r > :t (<*>) . pure (<*>) . pure :: Applicative f => (a -> b) -> f a -> f b > map (+1) [1,2,…

Monadのfail関数について思ったこと(2)

monadのfail関数の型は、fail :: Monad m => String -> m aとなっていて、それぞれのモナド毎に異なる挙動となる。 fail function of monad

3分でHaskellのWebアプリ

のサンプルを動かします。但し、待ち時間を除きます。 Beginning Haskell - A Project-Based Approach | Alejandro Serrano Mena | ApressのWebアプリの説明では、フレームワークとしてscottyを使っているので、導入してみました。 バージョンの確認 webapp …

Redmineインストール練習

今更ながらRedmineを使うことになったので、手元で弄れる環境を作ってみた。というかそもそもRailsわかってない。 Rubyのバージョン確認 (root)MacBook-Air-2:redmine foo$ ruby -v ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]…

Elastic Stackメモ

Elastic Stack 総称した製品 Elastc Cloud もある Logstash —> Elasticsearch -> Kibana x-pack 商用の拡張プラグイン x-packいろいろ入れると初回起動は遅くなる。 Logstash ログ収集、加工、転送 設定ファイル input / filter / output プラグイン多数 Kib…

Data types à la carte の写経

直和型を構成するところがわからなかったので写経してみました。 論文のコードと異なるところは Functorはderivingした 適宜showを実装した Exprにデストラクタoutを追加 Free Monadの構成のところで、Applicativeを追加した(ただし、Applicativeの実装はわ…

型だけでReaderモナドを理解しようと試みる

Reader Monad は 昔 Environment Monad と呼ばれていたそうです。 Control.Monad.Reader ということで(!?)、設定ファイルを使う体で例を作ってみました。 設定ファイルを使わないと、 doJob123' = \x -> doJob3' x $ doJob2' x $ doJob1' x () となります。…

JavaでReaderモナドを理解してみる

Readerモナドはdependency Injectionとして理解してみると良いかもしれません。 slides.com Java開発で言えば、Web開発でよくDependency Injectionがでてきます。例えば、フレームワークにSpringをつかうと、こんな感じでしょうか。 package hello; import o…

brewでpostgresqlの起動停止

起動 (root)MacBook-Air-2:test$ brew services start postgresql ==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql) 停止 (root)MacBook-Air-2:test$ brew services stop postgresql Stopping `postgresql`... (might take a while…

MacでのF#の環境設定

環境 Mac OS X 10.10.5 VS Code 1.7.1 F#のページ F# Software Foundation Macのインストール方法のページ Use F# on Mac OSX | The F# Software Foundation Monoのサイトでダウンロードする。 Monoのインストール 指示に従ってインストールする インストー…

構造を保つ関数の比較

map > :t map map :: (a -> b) -> [a] -> [b] fmap > :t fmap fmap :: Functor f => (a -> b) -> f a -> f b traverse > :t traverse traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) mapM > :t mapM mapM :: (Traversable t, …

Beginning Haskell A Project-Based Approachはお勧め?

「すごいHaskellたのしく学ぼう!」https://www.amazon.co.jp/dp/B009RO80XY/と並行して、Beginning Haskell A Project-Based Approachを読んでみようかと思いました。 www.apress.com が、誤記が多いらしく、お勧めできないようです。

Type Classのメモ

Type Classは以下の4つの観点から理解するとよい。 観点 (1) インターフェースが定められている。 (2) 満たすべき法則(law)がある。 (3) 上記を満たすインスタンスがある(抽象化の逆の具体化されたもの)。 (4) インターフェース以外に便利な操作(Operation)…

monad transformers step by step

2016/11時点monad transformers step by stepをgoogleで検索すると、本家ではない情報が先に出てくるようです。 こちらが先に出てくるようですが、 https://page.mi.fu-berlin.de/scravy/realworldhaskell/materialien/monad-transformers-step-by-step.pdf …

The Extended Functor Family

www.youtube.com class position terminology intuition application Functor positive covariant full of a's applicative alternative Contravariant negative contravariant consuming a's divisible decidable discrimination Produnctor left negative …

reactnative事始め

インストールは下記のURLの通り進めれば良い。 https://facebook.github.io/react-native/docs/getting-started.html#content Node.jsのインストール MacBook-Air:testnode foo$ nodebrew use v7.0.0 use v7.0.0 (root)MacBook-Air:testnode foo$ node -v v7…

PHPでサーバ

MacにはPHPが入っているので、ちょっとしたWebサーバを動かすことができる。 (root)MacBook-Air:php foo$ php -v PHP 5.5.29 (cli) (built: Sep 6 2015 20:20:34) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend …

コンピュータは数学者になれるのか

感想が書けるほど知見がないし、理解しているわけでもないので、メモです。 コンピュータは数学者になれるのか? -数学基礎論から証明とプログラムの理論へ-作者: 照井一成出版社/メーカー: 青土社発売日: 2015/02/24メディア: 単行本この商品を含むブログ (8…

jquerymyのtwo way bindingのsample

完全なtwo way bindingではないけれど、jQueryの資産を生かせる形なので使い所があるかも。 gist.github.com

foldlとfoldrの違い

foldl 手続き型言語のループの代わり foldr コンストラクタの置き換え foldr -- 型の確認 Prelude> :t foldr foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b -- リストのコンストラクタを適用 Prelude> :t foldr (:) [] foldr (:) [] :: Foldable t…

イベント伝播の確認サンプル

イベント伝播の確認サンプル gist.github.com セルをクリックしたとき [Log] cell (5,1) (test.html, line 27) [Log] MouseEvent {clipboardData: undefined, screenX: 98, screenY: 252, clientX: 98, clientY: 190, …} (test.html, line 28) [Log] <td id=​"c51">​1,131​</td>…

JavaScriptでsum, concat, maximum, inits, tails, ...

JavaScriptにはsumとか標準でないようですね。なにか見落としているのかな、、、。 合計 var sum = function(xss){return xss.reduceRight(function(acc, v){return acc + v;},0);}; undefined sum([1,2,3]); 6 最大 var maximum = function(xss) {return xs…

inits, tails を紙で確認

inits tails

スコープのメモ

JavaScriptのスコープのメモ 宣言してない -> ReferenceError: a1 is not defined 実行時エラーとなる。 宣言したけど値が設定されていない -> undefined 実行時エラーとはならない。 関数の定義でスコープができる。スコープは静的(lexical scope)。(vs thi…

pqGridでラジオボタン選択を実装してみる

pqGridでチェックボックスでのグリッド選択ができます。 jQuery grid with Checkbox Selection colModelで対象の列のtype属性にcheckBoxSelectionを指定します。また、選択のモード(single, range or block)等をselectionModelで指定します。 モードがsing…

pqGridの基本形

javascriptのグリッドライブラリにpqGridがあります。 jQuery Grid シンプルな基本形があると、そこから設定を追加して行っていろいろ試せるので、用意してみました。 <html> <head> <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/themes/base/jquery-ui.css" /> </link></head></html>

Constantのファンクタ則を例を使って確認

インポート *Main> import Data.Functor.Constant 型の確認 *Main Data.Functor.Constant> :t Constant Constant :: a -> Constant a b *Main Data.Functor.Constant> Constant 1 Constant 1 *Main Data.Functor.Constant> let x = Constant 1 *Main Data.Fu…

nodeJSでES6を使う(多分)

よくわかってないのですが、harmonyオプションをできるみたいです。 :testnode$ node -help | grep harm --harmony_scoping (enable harmony block scoping) --harmony_modules (enable harmony modules (implies block scoping)) --harmony_proxies (enable…

ファイル読み込みでのモナドを使っている感じ

do記法でのファイル読み込み import System.IO printFile :: String -> IO() printFile path = do handle <- openFile path ReadMode contents <- hGetContents handle putStrLn contents hClose handle 型を確認する。 > :t openFile openFile :: FilePath …

PipesでHelloWorld

PipesでHelloWorld Prelude Pipes P> runEffect $ (yield "Hello World" ) >-> P.stdoutLn Hello World Producerの型 Prelude Pipes P> :t (yield "Hello Wordl") (yield "Hello Wordl") :: Monad m => Proxy x' x () [Char] m () Consumerの型 Prelude Pipe…

cabalのサンドボックスでモジュールを取り込みghci(?)を利用する

サンドボックスを作る。 $ cabal sandbox init Writing a default package environment file to ... モジュールをサンドボックスを取り込む。 $ cabal install pipes-safe ghciではなくて、cabal上で、対話用のオプション(repl)を指定して起動する。 $ cabal…

Haskellでgithubに公開されているパッケージを取得してサンドボックスで実行するまで

ポーカーゲームを例にしてGithubからパッケージを取得して実行するまでの手順をまとめる。 github.com 作業ディレクトリを作る。 aaa:work03 foo$ mkdir poker aaa:work03 foo$ cd poker gitからパッケージを取得する。 aaa:poker foo$ git clone https://gi…

Applicativeファンクタを使って見る

最初の取っ掛かりとして、Applicativeファンクタの例としてわかりやすいのは、データコンストラクタを使う例ではないかと。 データ型を定義 > :i Emp data Emp = Emp {first_name :: String, last_name :: String} -- Defined at testapp01.hs:1:6 instance …

^Mを取り除く

csvデータの改行コードが違っていたのでどうしたものかと。 とりあえず:%s/\r/\r/gでできました。 改行コード2回重ねるのに違和感がありますが。

pureをControl.Applicative.LiftA0と思う

引数が3個の場合 *> :t liftA3 liftA3 :: Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d 引数が2個の場合 *> :t liftA2 liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c 引数が1個の場合 (あたかもLiftA1) *> :t liftA …

MacへのRのインストールで嵌った

単純にXQuartzが必要でした。これがないとグラフの表示ができません。 CRANのサイト https://cran.r-project.org: 2016/04/28 時点ではR-3.2.4.pkgが最新 XQuartz http://www.xquartz.org: 2016/04/28 時点ではXQuartz-2.7.8.dmgが最新 Pythonの似たようなや…

ざっくり機械学習

機械学習は参入障壁がとても高いということがわかった(今更感)。 機械学習 学習コストが高い 多変量解析 計算の途中で有用な情報がでてくるが(機械学習はそうではない)。 多変量解析の本をまず読む 機会学習の本ではすっ飛ばされる。 必要な知識が多岐に渡…

市ヶ谷Geek★Night「Scala大名の平成維新〜殿中でScala!〜」のメモ

Scalaは気になっているが実際に使ったことはないのでざっくり感を知りたくて参加してみました。 ichigayageek.connpass.com 自分用メモ。 ナイル 学び方はひとによって様々 ドワンゴ 新人研修でテキストのpull requestを受け付ける。 こちらかな dwango.gith…

AndroidのViewクラスを読んでみる

いつもお世話になっているViewクラスのコードを途中まで読んでみました。 http://tools.oesf.biz/android-4.4.0_r1.0/xref/frameworks/base/core/java/android/view/View.java#getListenerInfo Viewクラスは19533行もあります。お酒の力をつかって読み始めま…

IntelliJ乗り換え中

Android Studio で Android ではない Pure Java の開発が難しいので、Eclipseを使おうかと思いましたが、この際、Eclipseからも乗り換えて、IntelliJを使うことにしました。 本家サイト www.jetbrains.com Downloadへ行くと、エディションの説明があります。…

OnScrollListenerのscrollState

OnScrollListenerのscrollStateの挙動を確認しました。 ドキュメントを読むとscrollStateは0,1しかとら無いようにも読めますが、2もありました。 http://developer.android.com/intl/ja/reference/android/widget/AbsListView.OnScrollListener.html stateの…

OnScrollListenerのscrollState

AndroidのOnScrollListenerのscrollStateの挙動を確認しました。

グループ化のコードを書いてみた。

諸々の制約のもとグループ化のコードを書いてみた。 こんなことをしたい。 * input [1, 2, 3, 1, 1, 3, 3, 3] * grouping 1 [1, 2, 3] * grouping 2 [1] [2] [3] [1, 1] [3, 3, 3] * grouping 3 [1, 1, 1] [2] [3, 3, 3, 3] * grouping 4 {1=[1, 1, 1], 2=[2…