新千葉 ガーベージ・コレクション

FPGA マガジンやインターフェースで書けなかったこと等をちょぼちょぼ書いてます。@ryos36

Polyphony と Jupyter

Polyphony 用に Jupyter の環境を用意しました。 binder で起動できます。

sinby.page.link

では Google Colaboratory ではどうでしょう? Fifefox では upload できないという Issue があるみたいですが、、、

おーうまくできました。Python のコードからコンパイルして Verilog を生成しました。 f:id:ryos36:20190314004343p:plain

Ningle つかってみる

blog.8arrow.org とりあえずはこれでできるらしいぞ。

f:id:ryos36:20190310001554p:plain

おーできたできた。一部、改変が必要だったけど。

  • cl-project が使えなかった。まぁいいや
  • templates ディレクトリ以下に、、、ソースは entries.html になっていたので修正。
  • getf 、、、getf の形式(プロパティ?) でなかったので assoc に置き換えた。

もちろん 20 分じゃできない。でも 2H はかからないかな。そのあと fcgi と連携させるというところまでできた。

clisp で cl-smtp が使えない、sbcl で ironclad がコンパイルできない

cl-smtp

どういうわけか clisp で test がコンパイルできない。 define-cl-smtp-test というマクロが実行できない。正確にはその中で rfc2045-q-encode-string-to-stream が使えない。これは export こそされていないが cl-smtp 内の関数。たぶん、clisp の package が順序悪く?でもなっているのだろう。ほかのパッケージは大抵 test を別パッケージにしているからね。そうすべきなんだと思う。 ってことでコメントアウト

format がおかしい

clisp の format がおかしい。(format t "X-Mailer:~a" (format nil "~a~%~a" (lisp-implementation-type) (lisp-implementation-version)))みたいにすると余計な改行を入れる。sbcl では起きない

X-Mailer:
CLISP
2.49.60+ (2017-06-25) (built on lgw01-amd64-012.buildd [127.0.1.1])
NIL

このおかげでヘッダーが壊れてしまう。適当に修正。postfix 経由でメール発信できたから良し(ベネ)とする。sbcl ではきれいに動くから良しとする。

sbcl で ironclad がコンパイルできない

理由は不明。sbcl の内部の問題と思われる。1.4.10 まではうまくコンパイルできる。現時点の、最新の 1.5.0 でもだめだね。も~。

そうか lack を使うのか、、、

clack をつかっていて clack は単なる引き渡しルーチン(アダプタ?)であることが分かった。lack の builder というのをつかうのね。middleware というものが定義されていて、実用的な?ものがそろってそう。名前からの憶測だけど。誰も語っていないのでソースを読んだ人しかわからないだろうな。

  • Lack.Middleware.Accesslog
  • Lack.Middleware.Auth.Basic
  • Lack.Middleware.Backtrace
  • Lack.Middleware.Csrf
  • Lack.Middleware.Mount
  • Lack.Middleware.Session
  • Lack.Middleware.Static

ここが比較的わかりやすかった。深堀を(私が)読みこなせてない。 diary.wshito.com

common lisp で venv 的なことを

ASDL で出来るのだろうなと思い調べてみるとありますね。

diary.wshito.com

この通りにやるとできます。ASDF の Ver3 に移行したので、すでに .config/common-lisp/source-registry.conf.d をつかってます(てのはすでにブログに書いた) asdf を久々に使う - 新千葉 ガーベージ・コレクション

さて、あとは動的に出来るはず。禁じ手的な asdf:central-registry を書き換える(これは Ver2. の手法なのでおすすめされていない) がありますが(通常の registry より後方互換のために先に読まれる模様)

asdf:initialize-source-registry で設定すれば動的に出来ます。はい。その際に DSL (S 式だけどこの ASDF アプリローカルな記述ね) を使えば、あとからロードパスを設定出来てそれは優先順位的に先に設定されるもよう。引数には :inherit-configuration か :ignore-inherited-configuration を設定する。前者は既にある設定を引き継ぐ(つまりいま設定しようとしている値を足す)、後者は既にある設定を無視して新たに設定しなおす。

DSL の詳細はこちら ASDF マニュアル

あと asdf.conf というファイルを置いておくと自動的に読み込まれるみたいね(試してない。既出の wshito さんのページ 参照の事)

ということで、ローカルにプロジェクトをダウンロードして自分でディレクトリ設定してそこにバージョン違いのものを入れておけば、複数の違うバージョンのものがインストール可能。

ついでに書くと asdf:user-cache を上書きすると、普段は ~/.cache/.... の下にコンパイルされたオブジェクトが置かれるけど、それを変えることが出来る。

(setf asdf:*user-cache* #P"/home/user/Works/my-cache/")

こんなかんじ。 あ~これ便利だわ。

docker のイメージをつくる

sbcl 用と clack + fcgi の docker イメージを作りました。hub.docker.com に登録しました。どちらも日本語対応しているつもり。

あれ?でも外から見えないような。あ~みえたみえた。

perl の locale failed

なんかしらんが ubuntu ( Linux subsystem だったりするが ubuntu 全般だろう) で perl を使うと failed とか言われる。

> perl -v
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "ja_JP.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

.cshrc には (bash じゃない!!) には LANG の設定しているがどうやらシステムでちゃんと設定しないとだめらしい。最初 /etc/locale.gen を”直接"編集しようと思ったがいくらなんでもこれじゃだめだろう。さがせば答えがあるね。

qiita.com

> sudo apt-get install language-pack-ja
> sudo update-locale LANG=ja_JP.UTF-8

これでどうよ?

> perl -v
This is perl 5, version 26, subversion 1 (v5.26.1) built for x86_64-linux-gnu-thread-multi
(with 67 registered patches, see perl -V for more detail)

Copyright 1987-2017, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

おー大丈夫になった。