IT練習ノート

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

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

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

Monadのチュートリアルでほとんど語られることがないfailについて確認します。 Monadの情報を確認すると: Prelude> :i Control.Monad Top level: Failed to load interface for `Control' Use -v to see a list of the files searched for. Prelude> :i Mon…

関数プログラミング実践入門

書評が出来る程のスキルがあるわけではないので、つらつらと感想を: 関数プログラミング実践入門 ──簡潔で、正しいコードを書くために (WEB+DB PRESS plus)作者: 大川徳之出版社/メーカー: 技術評論社発売日: 2014/11/14メディア: 単行本(ソフトカバー)こ…

関数が第一級の対象であることの感覚とは?(2)

Stateモナド,Writerモナド,Readerモナドは、型の中に関数が「隠れている」感じがします。 どのような関数が型の中に「隠れている」かを見抜くことがポイントなのかなぁと思っています。 もっと単純な(役に立たない)コードで示すと: test15.hs: data AB = …

Javaの感覚、Haskellの感覚

Javaやっていて、Haskellを学んでいると、なにか原落ちしない感覚、違和感のある感覚があり、それがうまく言葉に表せないことが多々あります。 こういうところが、腹落ちしてなかったのだなぁと感じたことのメモ。 データ構造としてMapはどの言語でも使いま…

関数が第一級の対象であることの感覚とは?

多分こんな感じではないかと思っています。 通常は関数を定義して、それに値を与えます。例えばこんな感じ: Prelude> let f1 = \x -> x * 2 Prelude> :t f1 f1 :: Integer -> Integer Prelude> f1 4 8 Prelude> 関数が第一級のクラスであるとは、関数の引数…

Haskellで最小値と最大値を同時に(one pass)求める

モノイドを学習をしているときに、モノイドのインスタンスがあれば、複数のモノイドを同時に計算ができて、スゲーなと思いました。じゃあ、minとmaxのモノイドを作れば同時に求めることができるだろうと思って試行錯誤したことがあります。こちらのエントリ…

Java8に嵌る

本に載っていたサンプルを参考に、 import java.io.File; public class Main { public static void main(String[] args) { File[] files = new File(".").listFiles(File::isHidden); for (File f :files) { System.out.println(f.getAbsoluteFile()); } } }…

Intellijのエディタに嵌る

Intellijなれるのに苦労しますね。 プロジェクトの各種設定 デフォルトでプロジェクトを作ったらコンパイラの指定がJava6でした。Java8に変えたかったのですが、プロジェクトの設定場所が分からず暫し悩む。上部にアイコンがありました。ここから設定画面に…

IntellijでJavaFXのHelloWorldで早速嵌る

なんか早速嵌りました。 いろいろ試行錯誤していて正確な記憶は薄れてしまったのですが、初期起動時にJDKを自動では認識してくれないようでした。JDKを設定するダイアログでJDK8を指定したのですが、javafx.jarへのパスが通ってなくて生成されたコードがコン…

Stateモナドのモジュール名

Lazyの有無に関係ないようですね。 Prelude> :i Control.Monad.State.State type Control.Monad.Trans.State.Lazy.State s = Control.Monad.Trans.State.Lazy.StateT s Data.Functor.Identity.Identity -- Defined in `Control.Monad.Trans.State.Lazy' http…

タグ名よりEC2インスタンスを起動する

require File.expand_path(File.dirname(__FILE__) + '/../samples_config') instances = AWS::EC2.new.instances # p instances instances.each { |i| puts i.id + " " + (i.ip_address ? i.ip_address : "") + " " + (i.tags["Name"] ? i.tags["Name"] : "…

nodeJSの練習

参考情報 https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager RHEL/CentOS/Scientific Linux 6 インストール [ec2-user]# yum update [ec2-user]# yum install nodejs npm --enablerepo=epel Loaded plugins: amazon-id, rhui-lb,…

haskellのインストール

悲しいことにAWS上に作っていたHaskell環境のインスタンスを誤ってTerminateしてしまいました。 なので、再度環境を作成しました。 環境はamzn-ami-pv-2014.03.2.x86_64-ebs (ami-25dd9324)です。 コマンドのログは下記です。 yum update yum install gcc yu…

haskellでのバイナリデータの書き出し その2

バイナリデータの扱いを例として、モナドの使い方の練習を引き続き行っています。 work03$ ghci GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking .…

JavaScript実装のV8のインストール

JavaScriptの勉強のためインストールしてみました。 コードのダウンロード [ec2-user]# mkdir V8 [ec2-user]# cd V8/ # svnが入ってなかったのでインストール [V8]# yum install svn # レポジトリからチェックアウト [V8]# svn checkout http://v8.googlecod…

Monadの練習

Int型の数値の確認 Prelude> 1 1 Prelude> :t 1 1 :: Num a => a Int型の配列の型の確認 Prelude> :t [1] [1] :: Num t => [t] Maybe Int型の型の確認 Prelude> :t Just 1 Just 1 :: Num a => Maybe a returnしたときの型の確認 このでは何のMonadであるかは…

adbでdbの確認

adbでsqliteの操作の練習 adbツールの場所の確認 test$ ls NOTICE.txt adb api fastboot source.properties systrace 接続 test$ ./adb shell 該当アプリのデータベースのディレクトリへ移動 root@generic:/ # cd /data/data/com.example.test02 root@generi…

Haskellでバイナリの書き出し

まずは、型の確認。 Prelude> :t Data.ByteString.Lazy.putStr Data.ByteString.Lazy.putStr :: Data.ByteString.Lazy.Internal.ByteString -> IO () Prelude> :t Data.Binary.Put.runPut Data.Binary.Put.runPut :: Data.Binary.Put.Put -> Data.ByteString…

haskellのlookAheadの練習

BinaryパッケージにlookAhead関数があります。 https://hackage.haskell.org/package/binary-0.5.0.2/docs/src/Data-Binary-Get.html#lookAhead Prelude> :t Data.Binary.Get.lookAhead Data.Binary.Get.lookAhead :: Data.Binary.Get.Get a -> Data.Binary.…

android端末の傾き情報の取得

もうちょっときれいにまとめたかったのですが。。 アクティビティ package com.example.sensor01; import java.util.HashMap; import java.util.List; import java.util.Map; import android.annotation.SuppressLint; import android.content.Context; impo…

chefでhello world

今回も嵌りました。単純にログでHello Chef!を出力したかったのですが、出来ず。あとruby覚えるのが辛い。 参考にさせて頂いた資料 http://www.engineyard.co.jp/blog/2013/chef-tutorial-updated/ http://www.slideshare.net/marcyterui/aws-2 http://tsuch…

Eclipse上でコードを読めるようにする

ソースコードをダウンロードします。 ソースコードをダウンロードしているかどうかは、SDKマネージャで確認できます。 規約に同意してインストールを開始します。 インストール中です。(ここでは他のものもインストールしています) "Peer not authenticated"…

バイナリデータ読み込み

Read a bite from a binary file Prelude> :l test01.hs [1 of 1] Compiling Main ( test01.hs, interpreted ) Ok, modules loaded: Main. *Main> test_binary Loading package array-0.4.0.1 ... linking ... done. Loading package deepseq-1.3.0.1 ... li…

ADTで最初に嵌った点

ADTをダウンロードして解凍し、Eclipse.appを起動します。 なんとJava6が必要とのこと。確かに、システム用件を確認するとJava6が必要と書いてありますが、他のサイトとかみるとJDK7でもできているみたいですが。。。 指示に従ってインストールを進めます。 …

様々なsplitAt

HoogleでのsplitAt検索結果 http://www.haskell.org/hoogle/?hoogle=splitAt 比べてみると理解が深まりますね。 配列 Prelude> :t splitAt splitAt :: Int -> [a] -> ([a], [a]) Prelude> splitAt 5 "abcdefghijklmnopqrstuvwxyz" ("abcde","fghijklmnopqrst…

struts1.3のインストール

もう必要ない情報ですが。 [tmp]# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//struts/binaries/struts-1.3.10-all.zip --2014-03-26 09:02:04-- http://ftp.meisei-u.ac.jp/mirror/apache/dist//struts/binaries/struts-1.3.10-all.zip ftp.meisei…

Monads for functional programmingの写経(3)

Log Monad Log Monad

macへjavaのインストール

サイトよりダウンロードしたファイルです。 ダブルクリックするとインストーラが起動します。 上記の画像で箱の部分をダブルクリックすると始まります。 確認画面です。 インストール中です。結構時間がかかりました。 インストール終了。 インストールされ…

Monads for functional programmingの写経(2)

State Monadの写経をしてみました。 実際に計算をしていると、状態というよりs->(x, s)という関数をずっと使い回しているイメージでした。 State Monad ふぅ。計算に疲れました。。。

EC2インスタンスの情報を参照する

EC2のインスタンスの情報を確認する小さなサンプル 1 require File.expand_path(File.dirname(__FILE__) + '/../samples_config') 2 3 instance_id = "i-XXXXXXXX" 4 instance = nil 5 begin 6 instance = AWS::EC2.new.instances[instance_id] 7 p instance…