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

IT練習ノート

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

ServantのCSVファイルダウンロードのサンプル

Servant CSV download sample $ curl -i http://127.0.0.1:8081/csv/UNdata_Export_pork HTTP/1.1 200 OK Transfer-Encoding: chunked Date: Mon, 20 Jun 2016 16:12:16 GMT Server: Warp/3.2.9 Content-Type: application/csv "Country or Area","Year","Un…

HaskellのCSV読み込み

利用ライブラリ Text.CSV インポート Prelude> import Text.CSV 1行読み込み Prelude Text.CSV> parseCSVTest "aaa,bbb" [["aaa","bbb"]] Prelude Text.CSV> parseCSVTest "aaa,bbb,ccc" [["aaa","bbb","ccc"]] トリムはしない Prelude Text.CSV> parseCSVTe…

ServantのFileUploadサンプル

package servant-multipart: multipart/form-data (e.g file upload) support for servant $ cabal install servant-multipart Resolving dependencies... Notice: installing into a sandbox located at foo/.cabal-sandbox Downloading http-client-0.5.6.…

HaskellでYamlの任意項目の取り扱い

Applicativeスタイルで.*?で任意項目、.!=でデフォルト値を設定します。` parseJSON (Object m) = AppConfig <$> m .:? "port" .!= 8081 -- default a sample of reading a yaml file by Haskell

ghciのプロンプトをいい感じにする方法

いつも忘れるので備忘 coderwall.com >:set prompt "\ESC[34mλ> \ESC[m" λ> aa <interactive>:28:1: error: Variable not in scope: aa λ> :set prompt "\ESC[1;34m%s\n\ESC[0;34mλ> \ESC[m" *Main Control.Monad.Morph Control.Monad.Trans Control.Monad.Trans.Maybe Co</interactive>…

tidalをreplから使う

1: SuperColliderを起動する。 2: SuperDirtを起動する。 SuperDirt.start; 3: ghciを起動、ライブラリの取り込み $ cabal repl GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help Prelude> import Sound.Tidal.Context -- インポート 4: repl…

(solved) The pkg-config package 'libpcre' is required but it could not be found.

pkg-confgとして認識されているか確認する。 $ pkg-config --libs libpcre Package libpcre was not found in the pkg-config search path. Perhaps you should add the directory containing `libpcre.pc' to the PKG_CONFIG_PATH environment variable No …

ServantのFormサンプル

POSTでFormデータを送信するServantの実装サンプルを、本家サイトも含めて探していたのですが、見つけられませんでした。結果的にはとっても簡単でした。FromFormのインスタンスにするだけでした。 data Res = Res { ret :: Int} deriving (Eq, Show, Generi…

The pkg-config package 'libpcre' is required but it could not be found.

stackはcabal hellを解決してくれるはずですが、上手くいかないケースもあるようです。servant,persistent,mysqlの組み合わせで環境を作ろうとしましたができませんでした。 新規作成 foo$ stack new servant06 ghcを取得 foo$ stack setup リゾルバは8.3 re…

threejsのカメラ移動とライト移動のサンプル

threejs sample camera threejs sample light

PythonでBlenderのオブジェクトを操作する(Quaternion)

Quaternionを使ってオブジェクトを回転させます。 Math Types & Utilities (mathutils) — Blender 2.63.7 - API documentation オブジェクトの移動がわかりやすくなるように目安の円を描きます。 bpy.ops.mesh.primitive_circle_add(location=(0,0,0), radiu…

最小のServantのサンプル(3)

A simple servant sample of error

最小のServantのサンプル(2)

A simple servant sample of Capture

最小のServantのサンプル

simple servant sample $ curl http://127.0.0.1:8081/myapi [{"name":"abc","id":1}]

PythonでBlenderのオブジェクトを操作する

トーラスを追加します。リングのカーソルがある位置に追加されます。下の画像では、X=5, Y=4の位置に追加されます。 >>> bpy.ops.mesh.primitive_torus_add() {'FINISHED'} 追加したトーラスが選択されているものとします。選択オブジェウトをobjに参照をも…

HaskellでMySQLにアクセス

サンドボックスの作成 (root)foo:mysqlsample foo$ cabal sandbox init Writing a default package environment file to /Users/foo/work03/haskelldatabase/mysqlsample/cabal.sandbox.config Creating a new sandbox at /Users/foo/work03/haskelldatabase…

Mac, Haskell, OpenGLでサンプルを動かすまで(2017/02時点)

github.com このサンプルを動かそうとしたのですが、かなりハマったので、忘れないうちにメモを取ります。サンプルそのものの問題ではないです。 基本的な考え方 利用環境のOpenGLのバージョンを確認する。 support.apple.com GLSLのバージョンを確認する。 …

GLFWでwindowを表示するのサンプル

GLFWでwindowを表示するのサンプル(意外にも、単純なサンプルが検索しても見つけられなかった) the smallest GLFW sample

Railsのリクエストパラメータの確認方法

logディレクトリ配下にログファイルがある。 (root)$ ls log delete.me development.log production.log (root)$ vim log/development.log Started POSTを目印に探す。 例1:チケット作成時 Started POST "/projects/proj_hoge/issue_categories" for 127.0…

HaskellでOpenGLのサンプルを動かす

どうもGLUTは描画がメインで、GUIの操作はうまくできないらしく、GUI操作までやりたい場合はGLFWを使うようです(この点は理解があやふや)。ともかく動いたのでメモ。 サンプル ライブラリ OpenGLのライブラリ(Macではデフォルトで入っている??) GLFW - A…

2次曲線と4次曲線の原点での曲率

じっくり学ぶ曲線と曲面―微分幾何学初歩作者: 中内伸光出版社/メーカー: 共立出版発売日: 2005/09/15メディア: 単行本購入: 2人 クリック: 29回この商品を含むブログ (14件) を見る p.15 に 例1.1.4(放物線の曲率)、例1.1.5(4次曲線の曲率)があります。 放物…

Servantでの例外処理

ファイルの読み込み(基本形で、ここではまだ例外処理を入れていない) Reading a file in Servant ファイル読み込みに失敗した時の対処 (catch) *> :t catch catch :: Exception e => IO a -> (e -> IO a) -> IO a catchは、catchした時の対処はできるが、…

明示的に型を指定するVisible Type Application

GHC 8.0からVisible Type Applicationが導入されました。 TypeApplication – GHC 今までは::で型を明示的に指定していました。 Prelude> Prelude> let x = return 1 Prelude> :t x x :: (Num a, Monad m) => m a Prelude> let x = return 1 :: Maybe Int Pre…

IntとIntegerの違い

IntとIntegerとの違い インスタンスの確認 Prelude > :i Int data Int = GHC.Types.I# GHC.Prim.Int# -- Defined in ‘GHC.Types’ instance Bounded Int -- Defined in ‘GHC.Enum’ instance Enum Int -- Defined in ‘GHC.Enum’ instance Eq Int -- Defined in…

Haskellで複素数

複素数のためのData.Complexパッケージがあります。 Data.Complex 複素数は:+コンストラクタを使います。 > :i :+ data Complex a = !a :+ !a -- Defined in ‘Data.Complex’ infix 6 :+ 1+2iは次のよう:+を使って次のようになります。 > 1 :+ 2 1 :+ 2 > :t …

Servantのexampleのcabalファイルを作成する

下記にあるexampleのgreet.hs用のcabalファイルを作ります。 github.com cabal initにて対話形式で必要な項目を入力していきます。 foo$ cabal init Package name? [default: servant02] greet Package version? [default: 0.1.0.0] Please choose a license…

Servantのログ出力

@lotz さんの下記の記事があります。手元で動かそうとしたところ(2017/01/15時点)、記事が書かれた頃とライブラリのバージョンが変わっているため、そのままでは動作しませんでした。そこで、修正部分をメモしました。 qiita.com 修正のポイントは以下の2点…

Control.Monad.Logger

Log出力したいだけなのにさっぱりわからず。下記は動作するけどコーディングの考え方が間違っているはず。LoggingTはMonadXXXXのインスタンスになっているのに、なんでliftが必要なのかも謎。Haskellの独学は厳しい。。。。 Control.Monad.Logger Monad Logg…

map f . map g = map (f.g)

map f . map g = map (f.g)

ScalaとPlayFrameworkインストール

Javaの確認 (bar)blender:work06 foo$ java -version java version "1.8.0_05" Java(TM) SE Runtime Environment (build 1.8.0_05-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode) Scalaのインストール (bar)blender:work06 foo$ curl…

Poserset by filterM

stackoverflow.com Deducing code from types:&nbsp;filterMbyorgey.wordpress.com Powerset by filterM

Monadic parsing in Haskell

Monadic parsing in Haskell Monadic parsing_in_Haskell

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, …