ghciのプロンプトをいい感じにする方法
いつも忘れるので備忘
>: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 Control.Monad.Trans.State
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上でコーディングする
Prelude Sound.Tidal.Context> :t bpsUtils -- 時間を取得する bpsUtils :: IO (Double -> IO (), IO Rational) Prelude Sound.Tidal.Context> let s = bpsUtils Prelude Sound.Tidal.Context> :t superDirtSetters -- パターン関数を取得する superDirtSetters :: IO Time -> IO (ParamPattern -> IO (), (Time -> [ParamPattern] -> ParamPattern) -> ParamPattern -> IO ()) Prelude Sound.Tidal.Context> let dd = s >>= \x -> superDirtSetters (snd x) Prelude Sound.Tidal.Context> :t sound sound :: Pattern String -> ParamPattern Prelude Sound.Tidal.Context> :t atom atom :: a -> Pattern a Prelude Sound.Tidal.Context> :t sound . atom -- 文字列からパターンを作成する sound . atom :: String -> ParamPattern Prelude Sound.Tidal.Context> dd >>= \x -> fst x (sound (atom "bd")) -- バスドラが鳴る
(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 package 'libpcre' found
profile
の編集
$ vim ~/.bash_profile
.bash_profile
に下記を追加。
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
パスを登録
source ~/.bash_profile
認識されていることを確認
$ pkg-config --libs libpcre -lpcre
再インストール
$ cabal install pcre-light-0.4.0.4 --reinstall Resolving dependencies... In order, the following will be installed: pcre-light-0.4.0.4 (via: mysql-simple-0.4.0.1) (new version) mysql-simple-0.4.0.1 (via: persistent-mysql-2.6) (reinstall) (changes: pcre-light-0.4.0.3 removed) persistent-mysql-2.6 (reinstall) (changes: mysql-simple-0.4.0.1 removed) Warning: Note that reinstalls are always dangerous. Continuing anyway... Notice: installing into a sandbox located at /work03/webapp/servant04/.cabal-sandbox Configuring pcre-light-0.4.0.4... Building pcre-light-0.4.0.4... Installed pcre-light-0.4.0.4 Configuring mysql-simple-0.4.0.1... Building mysql-simple-0.4.0.1... Installed mysql-simple-0.4.0.1 Configuring persistent-mysql-2.6... Building persistent-mysql-2.6... Installed persistent-mysql-2.6 Updating documentation index /work03/webapp/servant04/.cabal-sandbox/share/doc/x86_64-osx-ghc-8.0.1/index.html
ServantのFormサンプル
POST
でForm
データを送信するServant
の実装サンプルを、本家サイトも含めて探していたのですが、見つけられませんでした。結果的にはとっても簡単でした。FromForm
のインスタンスにするだけでした。
data Res = Res { ret :: Int} deriving (Eq, Show, Generic) -- Formデータを受け取るデータ構造 instance FromForm Req --- FromFormのインスタンスにする。
実行
$ curl -w '\n' 'http://localhost:8081/add' --data 'x=1&y=1' -XPOST {"ret":2}
送信したデータの型が不正の場合は400
となる。
$ curl http://127.0.0.1:8081/add -d "x=1&y=a" -XPOST could not parse: `a' (input does not start with a digit)
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
resolver: lts-8.3
cabalファイルに必要なライブラリを記載
foo$ vim servant06.cabal
22 executable servant06-exe 23 hs-source-dirs: app 24 main-is: Main.hs 25 ghc-options: -threaded -rtsopts -with-rtsopts=-N 26 build-depends: base 27 , servant06 28 , servant-server 29 , persistent 30 , persistent-mysql
ビルドする
foo$ stack build .... servant06-0.1.0.0: unregistering (missing dependencies: persistent-mysql) pcre-light-0.4.0.4: configure base16-bytestring-0.1.1.6: download mysql-0.1.4: download base16-bytestring-0.1.1.6: configure blaze-textual-0.2.1.0: download base16-bytestring-0.1.1.6: build mysql-0.1.4: configure base16-bytestring-0.1.1.6: copy/register mysql-0.1.4: build blaze-textual-0.2.1.0: configure blaze-textual-0.2.1.0: build blaze-textual-0.2.1.0: copy/register mysql-0.1.4: copy/register Progress: 4/7 -- While building package pcre-light-0.4.0.4 using: /Users/bar/.stack/setup-exe-cache/x86_64-osx/setup-Simple-Cabal-1.24.2.0-ghc-8.0.2 --builddir=.stack-work/dist/x86_64-osx/Cabal-1.24.2.0 configure --with-ghc=/Users/bar/.stack/programs/x86_64-osx/ghc-8.0.2/bin/ghc --with-ghc-pkg=/Users/bar/.stack/programs/x86_64-osx/ghc-8.0.2/bin/ghc-pkg --user --package-db=clear --package-db=global --package-db=/Users/bar/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/pkgdb --libdir=/Users/bar/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/lib --bindir=/Users/bar/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/bin --datadir=/Users/bar/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/share --libexecdir=/Users/bar/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/libexec --sysconfdir=/Users/bar/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/etc --docdir=/Users/bar/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/doc/pcre-light-0.4.0.4 --htmldir=/Users/bar/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/doc/pcre-light-0.4.0.4 --haddockdir=/Users/bar/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/doc/pcre-light-0.4.0.4 --dependency=base=base-4.9.1.0 --dependency=bytestring=bytestring-0.10.8.1 Process exited with code: ExitFailure 1 Logs have been written to: /Users/bar/work03/webapp/servant06/.stack-work/logs/pcre-light-0.4.0.4.log Configuring pcre-light-0.4.0.4... setup-Simple-Cabal-1.24.2.0-ghc-8.0.2: The pkg-config package 'libpcre' is required but it could not be found.
extra-lib-dirsを指定しても同様
foo$ stack build --extra-lib-dirs="/usr/local/lib/pkgconfig" --extra-include-dirs="/usr/local/include" pcre-light-0.4.0.4: configure Progress: 1/4 -- While building package pcre-light-0.4.0.4 using: /Users/ogawanaoto/.stack/setup-exe-cache/x86_64-osx/setup-Simple-Cabal-1.24.2.0-ghc-8.0.2 --builddir=.stack-work/dist/x86_64-osx/Cabal-1.24.2.0 configure --with-ghc=/Users/ogawanaoto/.stack/programs/x86_64-osx/ghc-8.0.2/bin/ghc --with-ghc-pkg=/Users/ogawanaoto/.stack/programs/x86_64-osx/ghc-8.0.2/bin/ghc-pkg --user --package-db=clear --package-db=global --package-db=/Users/ogawanaoto/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/pkgdb --libdir=/Users/ogawanaoto/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/lib --bindir=/Users/ogawanaoto/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/bin --datadir=/Users/ogawanaoto/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/share --libexecdir=/Users/ogawanaoto/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/libexec --sysconfdir=/Users/ogawanaoto/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/etc --docdir=/Users/ogawanaoto/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/doc/pcre-light-0.4.0.4 --htmldir=/Users/ogawanaoto/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/doc/pcre-light-0.4.0.4 --haddockdir=/Users/ogawanaoto/.stack/snapshots/x86_64-osx/lts-8.3/8.0.2/doc/pcre-light-0.4.0.4 --dependency=base=base-4.9.1.0 --dependency=bytestring=bytestring-0.10.8.1 --extra-include-dirs=/usr/local/include --extra-lib-dirs=/usr/local/lib/pkgconfig Process exited with code: ExitFailure 1 Logs have been written to: /Users/ogawanaoto/work03/webapp/servant06/.stack-work/logs/pcre-light-0.4.0.4.log Configuring pcre-light-0.4.0.4... setup-Simple-Cabal-1.24.2.0-ghc-8.0.2: The pkg-config package 'libpcre' is required but it could not be found.
ログ全体
PythonでBlenderのオブジェクトを操作する(Quaternion)
Quaternion
を使ってオブジェクトを回転させます。
Math Types & Utilities (mathutils) — Blender 2.63.7 - API documentation
オブジェクトの移動がわかりやすくなるように目安の円を描きます。
bpy.ops.mesh.primitive_circle_add(location=(0,0,0), radius=4, rotation=(0,0,0)) bpy.ops.mesh.primitive_circle_add(location=(0,0,0), radius=4, rotation=(pi/2,0,0)) bpy.ops.mesh.primitive_circle_add(location=(0,0,0), radius=4, rotation=(pi/2,0,pi/2))
トーラスを描きます。
bpy.ops.mesh.primitive_torus_add(location=(4,0,0), major_radius=0.5) obj = bpy.context.active_object
Quaternion
を使ってトーラスを移動します。
Quaternion
のベクトル(虚部)を(0,0,1)
にとって、z軸を中心に回転をさせていきます。
obj.location.rotate(Quaternion((cos((pi/16)/2), 0.0, 0.0, sin((pi/16)/2)))) obj.location.rotate(Quaternion((cos((pi/16)/2), 0.0, 0.0, sin((pi/16)/2)))) obj.location.rotate(Quaternion((cos((pi/16)/2), 0.0, 0.0, sin((pi/16)/2))))
円の上にトーラスが乗っていることがわかります。