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

IT練習ノート

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

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>

ドラックアンドドロップ(Drag and Drop)

ドラックアンドドロップのサンプル package com.example.dnd02; import android.content.ClipData; import android.graphics.Color; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.DragEvent; import an…

fmap f = bind (return . f)

fmap f = bind (return . f)を確認する。 まず、定義の確認 fmap :: (a -> b) -> (W a -> W b) --- {*4} fmap f (W x) = W (f x) --- {*1} return :: a -> W a --- {*6} return x = W x --- {*3} bind :: (a -> W b) -> (W a -> W b) --- {*7} bind f (W x) …

HaskellのEitherとeither

Eitherという型がありますが、eitherという関数もあります。 Either型 Data.Either Prelude> :i Either data Either a b = Left a | Right b -- Defined in `Data.Either' instance (Eq a, Eq b) => Eq (Either a b) -- Defined in `Data.Either' instance M…

Haskellで例外処理の初歩

import System.Environment (getArgs) import Control.Exception (catch, SomeException) main :: IO () main = do args <- getArgs out <- catch (readFile $ head args ) (\_ -> return "error") print out test$ runghc test02.hs test02.hs1 test02.hs:1…

Haskellでコマンドライン実行で引数をとる

getArgsを使う import System.Environment (getArgs) main :: IO () main = do args <- getArgs print args test$ runghc test02.hs [] test$ runghc test02.hs a ["a"] test$ runghc test02.hs a b ["a","b"] test$ runghc test02.hs ab ["ab"] test$ rungh…

Pandasのgroupbyの結果をDateFrameにする

groupbyでは、groupieオブジェクトが返却されるが、DataFrameが欲しいときがある。その場合は、as_index=Falseを指定する。 In [70]: type(df.groupby(['項目1','項目2'],as_index=False).agg(np.average)) Out[70]: pandas.core.frame.DataFrame stackoverf…

PandasのDataFrameの嵌りどころ

データフレームから複数条件で行を絞るとき df[df['項目1']==0 and df['項目2']==1] df[df['項目1']==0 & df['項目2']==1] df[(df['項目1']==0) and (df['項目2']==1)] 上記3つはいずれも下記のエラーが出る。 ValueError: The truth value of a Series is …

Pythonでピボットテーブル

件数を数える。 import pandas df = pandas.read_csv(CSVファイル) df[[項目1,項目2]].pivot_table(index=項目1, columns=項目2, aggfunc=len) 単に1項目のみの件数を求めるなら、groupbyを使うよりvalue_countsのほうが手軽。 import pandas df = pandas.re…

matplotlibでヒストグラム

数値データとカテゴリデータではやり方が若干異なる。 $ ipython --version 3.2.0 %matplotlib inline import pandas df = pandas.read_csv(対象データファイル) # 数値項目のヒストグラムの作成 # binsで幅を調整する df['数値項目'].hist(bins=999) #カテ…

matplotlibとggplotを使ってみる

# ライブラリのインポート import pandas # データの読み込み df = pandas.read_csv('foo.csv') # 必要なデータに絞る df2 = df[['x','y']] # x軸を分類する df2['x_rank'] = df2['x'].apply(lambda x : int(x / 1000)) # matplotlibのインポート import mat…