高速文字列解析の世界

高速文字列解析の世界のサポートページがなくなっていたのでインターネットアーカイブより。 web.archive.org

正誤表を探していたので、その個所を抜粋

訂正箇所

訂正・追記 (新しい版では既に修正されている場合があります。)
p.12 2.1章 文字列の記法:Σkについての例。例えばΣ={a, b, c}の時、Σ2 = {aa, ab, ac, ba, bb, bc, ca, cb, cc}。
p.18 2.5.1章「加算無限個」は「可算無限個」
p.19 2.5.2章「例えば,P(1100_2) = 110_2」は,「例えば,P(1100_2) = 100_2」
p.19 2.5.4章「r = x' / k」は,「r = (x' / k) + 1」。また「mを長さ|(k)2|ビット」は「mを長さ|(k-1)2|ビット」
p.20 2.5.6章 「lg p ビット」は 「-lg p ビット」
p.21 表2.2 100に対するゴロム符号化は「0000000000001011」
p.24 3.1章「<{lec}」は「{lex}」
p.28 3.2章「C[0, \delta]」は「C[0, \sigma]」、
「T_B = "a_1 r_1 d_1 c_1 a_2 ...」は「T_B = "a_1 r_1 d_1 $ c_1 a_2」、
「T_F = "a_1 a_2 ...」は「T_F = "$ a_1 a_2 ..."」、
「T_B = "ard$caaaaabb"であるが」は「T_B = "ard$rcaaaabb"」、
「T_F="$aaaaabcdrr"」は「T_F="$aaaaabbcdrr"」、
「T_B="a_1 r_1 d_1$ c_1 ...」は「T_B="a_1 r_1 d_1 $ r_2 c_1 ...」
p.31 補題3.7 証明中 「S{i+1}はyが1回以上繰り返された後にyより...」は「S{i+1}はyが0回以上繰り返された後にyより...」、同様に「S{j+1}はyが1回以上繰り返された後にyより...」は「S{j+1}はyが0回以上繰り返された後にyより...」
p.38 Algorithm2 3番目のfor文のCの添字「c」は「i」 また、同アルゴリズムの最後のfor文のT[i]への代入とpへの代入は順番が逆
p.44 4.2.1章 「 rank(B, i) として求めることができる」は 「 rank_1(B, i) として求めることができる」

Pythonシンタックス __call__

Pythonコードで以下の様なシンタックスに出くわした。

A()(a, b)

初見、A()の戻り値とタプル(a, b)の積かなと思ったが、積演算子がない。

A()の引数を外側受け取る記述?そんなのあったっけ?と脳内検索。

Aのクラス定義みると __init__, __repr__, __call__ の特殊メソッドの実装のみ。

__init__ もしくは、__call__ になるかな。

__call__ メソッドあまり使ったことないのでググると、

クラスのインスタンス Instances of arbitrary classes can be made callable by defining a call() method in their class.

3. データモデル — Python 3.10.6 ドキュメント

インスタンスがcallableになる。

なので、

A()(a, b)

は、以下を端折った記法のようでした。

a = A()
a(a, b) # __call__ が呼び出される

PyTorchインストール時のトラブル

PyTorchのソースからインストールの備忘録、、、

備忘録と言いつつ行った日からだいぶ時間経ってからの記録なので内容はおぼろげ(.zsh_historyを参考にしながら)記述。

DeepLearning系を触らずにいたら、`pytorch` が動かなくなってしまっていた。

RuntimeError: CUDA error: no kernel image is available for execution on the device

と、エラーが返ってきた。

CUDAのバージョンとpytorchのバージョンがあっていなのかな。

pip install torch==XXX+cuXXX` 

でバージョン指定を探ったが、自分の環境に合ったものがなかった。

ので、ソースからインストールを行った。

git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
python setup.py install

cmake がないといわれ、なぜか pip install で cmake をインストールしていた。

ninjaライブラリもインストール ( pip install ninja )

CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}  python setup.py install`

で、エラー

以下と類似した cmake でのエラー

github.com

Cmake 3.23 で起こる問題なので、ダウングレードしたらうまくいったよ

というヒント。 バージョンは `3.23` ではなかったが、それ以降の最新版だったので、

pip install cmake==3.22

で、3.23 の1つ前のバージョン3.22をインストール

再度、

CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}  python setup.py install

で、何かエラーがでて、再度、`CMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc`を追加して、インストール。

最終、
ninja, cmake==3.22をインストールし、以下のコマンドでインストール成功

CMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"} python setup.py install

マンカラ JS ver.

先日YouTubeのQuizKnockチャンネルさんで紹介されたマンカラ

www.youtube.com

面白そうだったのでJavaScriptで実装してみました。

f:id:DummyWitty:20190702021230p:plain
マンカラ

駒は数字で表すようにしています。
クリックしたタイルの数字がその次のタイル以降に加算されていくまでは実装しました。

JS初心者でクラス使って実装しようとしたらthis問題と衝突したので諦めた。
qiita.com

Phoenix@Ubuntu

ベースは以下の記事を元にElixir + Phoenix インストールしてみた際の色々とトラブったので備忘録

qiita.com

PostgreSQLのインストール、起動で以下のエラーとなる。
解決方法は以下のページではうまく行かない。

stackoverflow.com


環境は


PostgreSQLのインストール時にデータベース起動には以下を実行と書かれてるので実行しても起動せず

/usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l logfile start

logfileを確認

postgres: could not access the server configuration file /var/lib/postgresql/10/main/postgresql.conf: No such file or directory

  • D のデータベース先にconfigファイルも必要なようなので

ln -s /etc/postgresql/10/main/postgresql.conf /var/lib/postgresql/10/main/
ln -s /etc/postgresql/10/main/conf.d /var/lib/postgresql/10/main/

と、シンボリックリンクを作成

再度、

/usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l logfile start
waiting for server to start.... done
server started

起動成功

mydbデータベースの作成もうまくいく


mix phx.new hello OK

mix ecto.create 失敗

phx.new hello中の出力に

We are almost there! The following steps are missing:

$ cd hello
$ cd assets && npm install && node node_modules/brunch/bin/brunch build

と出るので、これを実行

mix locale.hex 成功
mix ecto.create 失敗
mix deps.get
mix ecto.create 成功

mix.phx.server 失敗
エラー出通りに
mix.exsを編集

  • {:plug_cowboy, "~> 1.0"} の追記
  • "test" --> test

再度、mix deps.get 成功
mix phx.server サーバー起動成功