IT練習ノート

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

haddockのインクリメンタルサーチ

ちょっと作ってみた。そもそもなんで付いていないんだろうか。

f:id:naotoogawa:20170806122200p:plain

f:id:naotoogawa:20170806122154p:plain

作業ログ

Haskell

Haskellの例外処理 | Netsphere Laboratories

Exceptions Best Practices in Haskell

cabalでローカルにあるライブラリを使う

課題

  • ローカルに自作ライブラリのソースコードがある。
    • ライブラリ側の変更はない仮定(安定している仮定)。
  • そのライブラリを使うプログラムをローカルで作りたい。
  • ライブラリのソースコードディレクトリは別にするが、cabalプロジェクトを作る。
    • ライブラリ側はlibraryディレクトリ配下、プログラムはsrc配下のようにする。
  • ライブラリ側のコードも一緒にコンパイルされるので、ビルドに時間がかかる。 ⇨ なんとかしたい

解決策

  • ライブラリ単独でcabalプロジェクトにして、それをプログラム側のcabalプロジェクトにインストールする。

やり方

  • ライブラリ用のcabalプロジェクトを作成する。
> cabal sandbox init
などなど
name:                mylibrary
version:             0.1.0.0
省略

library
  exposed-modules: Foo.Bar.X
                 , Foo.Bar.Y
                 , Foo.Bar.Z
                 , などなど
 
  • ライブラリモジュールを作成する(ビルドする)。
> cabal build
  • 上記のライブラリを利用するcabalプロジェクトを作成する。まずは、ライブラリを意識せずにプロジェクトを作成する。
> cabal sandbox init
いろいろ
  • ライブラリプロジェクトを取り込む。
> cabal sandbox add-source ライブラリがあるパス(のcabalファイルの親ディレクトリのパス)
  • cabalファイルの依存関係の指定をする。
executable myprogram
  main-is:             Main.hs
  other-extensions:    BangPatterns, DeriveDataTypeable, DeriveGeneric, FlexibleInstances, MultiParamTypeClasses
  build-depends:       base >=4.9 && <4.10
   その他いろいろ
                     , mylibrary <-- ここにライブラリ名を追加
> cabal install

作業ログ

Vim

Vim の置換で後方参照 - Qiita

ファイル内の各行ごとに編集処理を実行する、何行かおきに編集処理を実行する。 — 名無しのvim使い

作業ログ

haskell

How to split a string in Haskell? - Stack Overflow

Vim

VimとWindows コピーの違い - World Wide Wonderful

作業ログ

haskell

Data.Binary.Get

読み込みの場合、基本的にバイナリデータピッタリでないと実行時エラーとなる。runGetしてデータがない場合や不足した場合、Nothingや読み込め多分が返却されるような仕組みではない。(と思う)。終わりがわからない場合runGetOrFailで都度確認が必要になる。

MySQLのSample Databaseの設定

sample data

https://dev.mysql.com/doc/index-other.html

word_x-db

Download and unzip

shell> wget http://downloads.mysql.com/docs/world_x-db.zip
shell> unzip world_x-db.zip 

Read instruction

shell> less world_x-db/README.txt 

Connect to MySQL:

shell> mysql -u root -p

Load the file:

mysql> SOURCE /tmp/world_x-db/world_x.sql;

sakila-db

Download and unzip

shell> wget http://downloads.mysql.com/docs/sakila-db.zip
shell> unzip sakila-db.zip

Connect to MySQL:

shell> mysql -u root -p

Load the file:

mysql> SOURCE example-databases/sakila-db/sakila-schema.sql
mysql> SSOURCE example-databases/sakila-db/sakila-data.sql

Reference

https://dev.mysql.com/doc/sakila/en/sakila-installation.html

menagerie-db

download and unzip

shell> wget http://downloads.mysql.com/docs/menagerie-db.zip
shell> unzip menagerie-db.zip 

Connect to MySQL and make tables

shell> mysql -u root -p
mysql> SOURCE example-databases/menagerie-db/cr_pet_tbl.sql
mysql> SOURCE example-databases/menagerie-db/cr_event_tbl.sql

Disconnect mysql, cd and load data

shell> cd example-databases/menagerie-db
shell> mysql menagerie --local_infile=1 -u root -p < load_pet_tbl.sql
shell> mysqlimport --local menagerie event.txt

Reference

https://dev.mysql.com/doc/refman/5.6/en/load-data-local.htm://dev.mysql.com/doc/refman/5.6/en/load-data-local.html