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

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

asdf を久々に使う

common lisp の環境も関係者の努力によっていろんなツールが着々とバージョンアップを重ねているらしく、しらないうちに adsf も version 3.0 になった。3年以上前のようだが、、、 ドキュメントも充実し始めているので、もはや断片的に誰かの blog や書き残し(多分古い情報だ)をみるより本家を見た用がよい。そのうちこの blog も古くなる。 日本語の(非公式らしい)訳があるので参考になる。

Top (ASDF マニュアル)

2014 と少し古いようが keens さんの blog も参考になる。

require, ASDF, quicklispを正しく使う | κeenのHappy Hacκing Blog

まず version 2.0 のスタイル asdf:central-registry は使わない。後方互換もあるようなので使っても構わないが、3.0 以降では非推奨だ。

ubuntu では簡単に apt install cl-asdf でインストールできる。そうすると、/usr/share/common-lisp/ にインストールされる。source と systems があるが systems は古いスタイルようなので無視する(asdシンボリックリンクがある)。source が対象になる。asdf は /usr/share/common-lisp/cl-asdf にあり、さらに自動的に build ディレクトリの下に asdf.lisp があるはずだ。これを load すれば以後 asdf が使える。よかったよかった。

clisp では

#-:asdf (load "/usr/share/common-lisp/source/cl-asdf/asdf.lisp")

と書けばいいだろう。これで asdf が使える。asdf:asdf-version でバージョンを確認しよう。

[1]> (asdf:asdf-version)
"3.3.1"

つぎに追加のディレクトリ。

ASDFがシステムを見つけられるように設定する (ASDF マニュアル) にあるように、

  • ~/common-lisp/
  • ~/.local/share/common-lisp/source/

のいずれかにソースを置くようにする。そうすると自動的に検索対象になるようだ。追加の為には

~/.config/common-lisp/source-registry.conf.d/

に 50-luser-lisp.conf などと conf の拡張子のあるファイルを置いていく。私は、keens さんを参考に3つのパスを通した。

> ls
10-systems.conf  20-ryos.conf  30-quicklisp.conf
> cat *
(:tree "/usr/share/common-lisp/source/")
(:tree (:home "Lisp/"))
(:tree "~/quicklisp/dists/")

最初の /usr/share/common-lisp/source は ubuntu における common-lisp ライブラリの標準のインストール場所。以後 apt などで install されたライブラリがここで参照できる。

そしてこれまた人まねで quicklisp の初期化は .clisprc からコメントアウトした。(sbcl 使えって?)、これでうまくいくはず。いままでいい加減に load とかやってたのを ubuntu の世界でうまく整理できた。

cygwin もやってみた。asdf を make して build に asdf.lisp が出来るところまでやったが、(require "cl-fad") (公式ドキュメントによると "cl-fad" と文字列でやるのが互換性のある記述らしい。'cl-fad は GNU lisp で動くが互換性はないとのこと)、とすると alexandria がこける。どうも LANGの設定が絡んでいるようだが、なにが悪いのかは特定できなかった。cygwinclisp がだめなのかも。

証明書の管理は2つある

コンピュータ証明書の管理とユーザ証明書管理って微妙に違う。PowerShell から certmgr を起動せよと書いてあるのだが、それを読み飛ばして cert... で検索して実行しようとすると、、、 f:id:ryos36:20190107114004p:plain この絵では2つ出ているが(たぶん一回ユーザ証明書を起動したから)、最初はコンピュータ証明書しか選択肢になかった。起動するとこんな感じ。

f:id:ryos36:20190107114213p:plain

いまになってみると微妙な違いが分かるが、上の絵はローカルコンピュータになっている。 次にユーザ証明管理を起動するとこんな感じ。

f:id:ryos36:20190107114350p:plain

微妙に違う。そして個人と書かれたフォルダは別々のものが入っている。コンピュータ証明書の方からは Azure が必要とするクライアント証明書は入っていないので注意が必要。 f:id:ryos36:20190107114935p:plain

VPN を他の PC にインストール

もういっこククライアント証明書をつくってエクスポートしました。 そして、Azure からダウンロードした VPN の exe を 32bit Windows 10 にインストール。まずは証明書なしでアクセス。当然、証明書がないと怒られます(絵がなくてすいません)。 その後、クライアント証明書をインストール。ルート証明書を Azure 側にインストールした後ですので、Azure はこのクライアント証明書を知りません。さてアクセス。が~ん。セキュリティチェックに引っかかって接続できません。TLS のバージョンの問題かと思いましたが、ちゃんと 1.2 でアクセスしているもよう。

VPN - Error 812

です。しょうがないのでとにかく Windows10 をアップデート。最新にしてみます。それになんと2日かかりました。でもって今アクセスするとちゃんと VPN つながりました。古い Windows10 はセキュリティのチェックにひかかって Azure の VPN にはアクセスできないようです。

Azure と VPN その2

Windows10 でやっと Azure の VPN に接続できた。 なにがだめだったのか?Windows の標準機能でできる的な事が本家のウェブサイトのどっかに書いてあったので、Windows 10 上でなにもインストールせずに VPN をつかったのだが、じつは GatewayVPN client というのをダウンロードしてインストールしなければならない。たぶん、設定ファイルやなんやかんやだと思う(精査してない)、

ポイント対サイト接続とネイティブ Azure 証明書認証を使用してコンピューターを Azure 仮想ネットワークに接続する: Azure Portal | Microsoft Docs

ここにある「クライアント アドレス プールの追加」で[今すぐ構成] で「フィールドに証明書データを貼り付けます」の後に、

f:id:ryos36:20190104164214p:plain
VPN クライアントをダウンロード

VPN クライアントをダウンロードというのがあるのでこれでダウンロードすると、64bit と 32bit の Windows 用と General(たぶん他の機種用。精査してない。) をダウンロードできるので、それをインストール。これをインストールするとネットワークに vnet が現れる。あとはこれをクリックするだけ。

下の絵が出る。普通の VPN の設定じゃダメ。なにこれ?って感じ。 https://docs.microsoft.com/ja-jp/azure/vpn-gateway/media/vpn-gateway-howto-point-to-site-resource-manager-portal/clientconnect.png

azure と gateway

ただの備忘録。

ポイント対サイト接続とネイティブ Azure 証明書認証を使用してコンピューターを Azure 仮想ネットワークに接続する: Azure Portal | Microsoft Docs

単純にこの通りにやる。 最初に VM とかつくらないで VPN つくる。この例では微妙に 192.168.1 を先に作って(default のサブネット) 192.168.0 をあとから vpn 用に作っている。 あとこの例の通りにすると、SKU が VpnGW1 になる。最初は BASIC にするとトラフィック制限があるが 安くなる。

で証明書をつくる。

ポイント対サイトの証明書の生成とエクスポート: PowerShell: Azure | Microsoft Docs

この通りにやると CN 名称が P2SRootCert になってしまう。 その場合は Azure 側の名称を P2SRootCert にしなくてはいけない。(絵もそうなっている、、、) ださいので最初から CN の名称は自分のにしましょう。

でもって VPN で Windows10 からつなごうとすると

VPN クライアント エラー: VPN トンネルの試行に失敗したため、リモート接続を確立できませんでした。

これ NIC ドライバが古いときにもこういうエラーが発生するらしい(わかりづらい)。で、ただいま NIC ドライバ更新中。

Azure ポイント対サイト接続の問題のトラブルシューティング | Microsoft Docs

また同じエラー。うまくいかんぞ。

タイミングについての覚書

f:id:ryos36:20181101130550p:plain タイミングでエラー。配置配線(Implemantation) でも 37 分近くかかっている。開始時間が 1:42 AM というのが泣けてくる。 どこがエラーか?

f:id:ryos36:20181101130839p:plain

clk_pl_1 と clk_pl_2 の間で起こっていることが分かった。このシステムは clk_pl_1 に AXI ライトでコントロール系、clk_pl_2 は画像処理で使っていて、基本的に AXI ライトで頻繁にパラメタを変えることはない。なので、 clk_pl_1 と clk_pl_2 はほぼ排他的。もし画像処理中にコントロールしたいなら、ソフトで画像処理をいったん止めてコントロールするなどの処理をするシステム。あるいは IP コアの方で vsync のタイミングで反映するように気を使ってある。 しかし、ツールはそんなシステム設計やや IP コアの気遣いは知らないのでがんばって帳尻あわせようとする。無理がある。

f:id:ryos36:20181101131139p:plain

橙色のところが unsafe。ということで明示的に clock の group 分けをする。

f:id:ryos36:20181101131313p:plain

これで再合成すると、タイミングエラー消えて、合成時間も短くなる(はず)。

IBM think 2019 のウェブサイト

f:id:ryos36:20180904165623p:plain まずヘッダー。header 属性で Think2019 と What to expect , How to attend, Registration opens in X days を定義している。そういう構成。

映像をはめ込んでいるが、それはどうやっているのか? 実は2層になっている。それを div でまとめている。 一番上は文字とSVG。文字は h2 や p でつくっていて特記するほどではない。z-index で上に来るようになっている。ついでに書くと js で slide-in するようになっている。data-trigger="slide-in" がそれ。class にも slide-in はあるが slide in の動作には関係ない(なかった)。 そして、play/pause ボタンのために SVG がかかれている。absolute で bottom:2rem と下に来るようになっている。

これらは small, mid, large のサイズで hide/display を切り替えている。このケースでは small の時に hide。

したの div に mp4 を配置している。sm (small サイズ。つまりスマホ)のときは動画は表示しない。

ここまでが一個目のsection。div で ibm-grid という名称の class とかつかっているのが特徴。

.ibm-grid {
  display: flex;
  flex-wrap: wrap;
  box-sizing: border-box;
  position: relative;
}

どうも、ibm-col-group というのが別のページにはあったのだが、名称が変わったか、新たに作られたかしたらしい。

次の section は Join us... で、これも sm, md, lg でサイズで表示が微妙に変わる。

更に次の section は Expand your ... でこれもサイズで配置が変わる。 f:id:ryos36:20180904171641p:plain:w300

[f:id:ryos36:20180904171710p:plain:w200 ]

f:id:ryos36:20180904171815p:plain:w100

基本的に以下これの繰り返しだ。