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

IT練習ノート

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

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…

ReactiveX/RxAndroidのサンプルの入門

(1) プロジェクト作成 Android Studio で新規 プロジェクトをblank activityで作成します。 (2) ライブラリ依存関係の設定 Appディレクトリ配下のbuild.gradleファイルのdependencyのcompileに以下を追加します。 compile 'com.android.support:appcompat-v7…

Android Studio でビルドエラー

下記のようなエラーは都度対応しないとダメなようですね。 Error:Gradle: A problem occurred evaluating project ':app'. > Failed to apply plugin [id 'com.android.application'] > Could not create plugin of type 'AppPlugin'. AndroidStudioで今まで…

ExpandableListViewのPackedPosition

よくわからなかったのでコードを書いてログを出して確認してみました。 PackedPositionは内部的に管理されているポジションのようです。 PackedPositionはタイプがあって、親用(グループ)と子供用があります(Nullというのもあるが)。 使う時のパターンとして…

関数をn回適用する

foldr (.) id (replicate n f) を理解したい。 stackoverflow.com *Main> :t foldr (.) の型を考える。 *Main> :t foldr foldr :: (a -> b -> b) -> b -> [a] -> b 置き換えておく。 foldr :: (x -> y -> y) -> y -> [x] -> y *Main> :t (.) (.) :: (b -> c)…

swiftを使ってみた

某Wimax2の制限なしの2年縛りが近づいてきているので、諸々の大きめなファイルのダウンロードをしていました。xcodeもこの機会にダウンロードしました。せっかくなのでswiftを使ってみました。 起動する。 ガチで開発しない場合はPlaygroundを使うようです。…

JSONのVisitorPatternをやってみた

背景もどき 諸般の事情があり、JSONをVisitorパターン的に取り扱うことになりました。JSONはツリー構造になっているので、Visitorパターンが使える仕組みがあるのかとおもったのですが、org.jsonのAPIにはVisitorパターンはサポートされていないようです。 …

Warning:Gradle version 2.10 is required. Current version is 2.8

経緯 Android Studio 2.0 でのgradleのビルドエラーが発生しました。 Warning:Gradle version 2.10 is required. Current version is 2.8. If using the gradle wrapper, try editing the distributionUrl in ...hoge...\myproject\gradle\wrapper\gradle-wr…

Custom cursor sample

AbstractCursor AbstractCursor implements CrossProcessCursor protected int mPos; // index public final boolean moveToPosition(int position) // various methods -> moveToPosition -> onMove (check) public boolean onMove(int oldPosition, int ne…

Android Custom Cursor Sample

追記 バージョンによっては動作しない。 column_keyに_idが必要 column数取得を実装する必要がある ContentProviderを別APKにすると、Cursor利用側でキャッシュがされる。 ScreenShot Class MainActivity-->MyAdapter (ItemLayout)<-->MyCursor<-->MyContent…

PowerShellでファイルの行数を取得する

手元にWindowsマシンがなくて試せないが、こんな感じのコードだったはず。 PASH /home/cg/root> Get-ChildItem C:\foo\bar.* -Include *.java -Recurse | %{$_.fullname + "`t" + (Get-Content $_.fullname).length} /home/cg/root/mmm.java 74 /home/cg/roo…

const id

constとconst idの違い Prelude> const 'a' 1 'a' -- 第1引数を返す Prelude> (const id) 'a' 1 1 -- 第2引数を返す 型の確認 const idは第2引数を返すことがわかる。 Prelude> :t const id const id :: b -> a -> a 型の計算 Prelude> :t const const :: a …

clojureにcdr, cddr, cdddr, cddddr がない件

自分で定義するのが正解なのでしょうか? user=> (defn cdr [x] (rest x)) #'user/cdr user=> (defn cddr [x] (cdr (cdr x))) #'user/cddr user=> (defn cdddr [x] (cdr (cdr (cdr x)))) #'user/cdddr user=> (defn cddddr [x] (cdr (cdr (cdr (cdr x))))) #…

ClassCastException java.lang.Boolean cannot be cast to clojure.lang.IFn

cond関数を使っていたら表題のエラーがでました。 user=> (defn foo [x] (cond ((= x 2) "two") ((= x 3) "three"))) #'user/foo user=> (foo 3) ClassCastException java.lang.Boolean cannot be cast to clojure.lang.IFn user/foo (form-init268103478811…

Lisp事始め

Lispを始めるには? Lispを使うにはどの実装を使えば良いのでしょうか? CommonLisp系ではこちらにたくさん掲載されています。 CLiki: Common Lisp implementation Lisps 当然、どれを使うか迷うわけで、質問することになります。 programmers.stackexchange…

(.f)は定義域を書き換えると思ってみる。

用語の使い方が雑ですが、、、。 理解したかったこと Prelude> :t Data.Char.chr Data.Char.chr :: Int -> Char のときに Prelude> :t (. Data.Char.chr) (. Data.Char.chr) :: (Char -> c) -> Int -> c となる理由がよくわからなかったのでメモ。 考え方 g …

Tree Iterator

修正したい。。 github.com

Android Studioで通常のJava(メインメソッド)を実行する

Android Studio のバーション メインメソッドをもつJavaクラスを作る。 実行 -> 構成 を選択する。 構成ダイアログの右上のプラスを押す。 アプリケーションを選択する。 構成名称を記入する。 実行するJavaクラスを記入する。 モジュールを選択する。 Java…

ContentProvider

ContentProvider <--> Activity com.example.cp01 <--> com.example.cp02 ContentProvider Application (com.example.cp01) manifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.cp01"> </manifest>