問題タブ [quicklisp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
raspberry-pi - コマンドライン引数を使用して CCL + Quicklisp スクリプトを実行可能ファイルとして呼び出し、目的の出力を実現する
簡単に入手できるパッケージのみを使用して、新しい Raspberry Pi 2 (Raspbian を実行) を使用して、コマンド ラインから YouTube ビデオを視聴する非常に簡単な方法を発見した後、次のようになります。
YouTube のプレイリスト全体をそのように見る方法がすぐに欲しかったのです。だから私はこれを、 Common Lispでソリューションをハックする完璧な言い訳だと思った:)
私の解決策 (想像力で RpiTube と呼ばれています) は、YouTube プレイリストの URL を指定すると、ページの HTML ソースを検索し、そこに含まれるビデオの URL を抽出するスクリプトです。次に、これらの URL を Bash スクリプトに渡すことができます。Bash スクリプトは、最終的に各ビデオに対して個別に上記のコマンドを次々と呼び出します。Common Lisp スクリプト自体は完全で動作しますが、URL をコマンド ライン引数として使用して呼び出すのは困難です。これは主に、私が Quicklisp や Lisp パッケージ、Common Lisp コードから実行可能ファイルを作成することにまだ慣れていないためです。
私はClozure Common Lisp (CCL) を Quicklisp ( Rainer Joswig の指示に従ってインストール) で実行しています。以下に完全なコードを含めました。少し効率が悪いかもしれませんが、驚いたことに、Raspberry Pi でもかなり高速に動作します。(提案された改善は高く評価されます。)
まず、次の行をスクリプトに追加してみました
そして実行中
これは次を与えます:
./rpitube.lisp がこの認識されない引数のリストに存在しないことを少なくとも期待していたとき. Clozure CL では、コマンド ライン引数をそのままREPLセッションに渡すには、次のように 2 つのハイフンで他の引数と区切る必要があることを私は知っています。
しかし、このようにスクリプトを呼び出すと、スクリプトの実行後に REPL が発生することは明らかです。これは望ましくありません。さらに、Quicklisp の読み込み情報と進行状況バーが端末に出力されますが、これも望ましくありません。(ちなみに、Rainer が示唆したように、私は CCL init ファイルに Quicklisp を追加していません。なぜなら、私は追加のオーバーヘッド、つまり Raspberry Pi での数秒の読み込み時間は一般的に望んでいないからです。それが関連しているかどうかはわかりません)。
次に、実行してスタンドアロンの実行可能ファイルを作成することにしました (上記のコードが読み込まれたら)。
そして、次のようにシェルから呼び出します。
これは次を与えます:
これは改善されているようですが、私はまだ何か間違ったことをしています。drakma、cl-html-extract、および split-sequence を必要とする独自の asdf パッケージを作成し、それをin-package
などでロードして、Quicklisp 関連のコードを置き換える必要がありますか? 別のプロジェクトで以前に独自のパッケージを作成しました-具体的には、コードを複数のファイルに分割したかったためです-動作しているように見えますがql:quickload
、in-package
後者は動作しないように見えたので(おそらくそれについては別の質問として尋ねるべきです)。ここで、rpitube.lisp のコードは非常に短いので、quickproject 全体を作成してパッケージ化する必要はないように思われます。
では、スクリプト (またはその呼び出し) を変更して、URL をコマンドライン引数として受け入れ、非対話的に実行できるように (つまり、REPL を開かず)、必要な出力のみを出力するようにするにはどうすればよいですか?ターミナル - スペースで区切られた URL のリスト - Quicklisp ロード情報なし?
lisp - 大規模な Lisp アプリケーションの構造化
私は現在、パッケージ、システムなどに頭を悩ませようとしています。
パッケージ、システム、モジュール、ライブラリを読みました - WTF? 数回、私はまだそれを正しくするのに苦労していると思います.
Lispソースファイルを2つのファイルに分割したいだけで、一方が他方を「使用」する場合 - どうすればよいですか? このためのシステムを構築する必要がありますか? モジュールを使用する必要がありますか? …? 私は Node.js のバックグラウンドを持っています。
file にエクスポートされたものへの参照を取得しますfoo.js
。Lispでこれに最も近いものは何ですか?
ASDFはシステム用であり、少なくともそのドキュメントによると、Quicklispの一部としてバンドルされていることを理解しています。
ASDF は、アクティブな Common Lisp 実装の最近のすべてのリリースと、quicklisp […] にバンドルされています。
わかりました、Quicklisp はライブラリ用ですが、それらの関係は何ですか? Quicklisp は他の言語では「パッケージ マネージャー」のようなものですか? もしそうなら、ASDFは正確に何を提供しますか?
たくさんの質問をして申し訳ありませんが、Lisp アプリケーションを構築する方法を理解するのに苦労していることを示しているだけだと思います。どんな助けでも大歓迎です:-)
lisp - デフォルトシステムを上書きするQuicklisp
cl-json
実装が不十分なサーバーパーサーに使用する、わずかに変更されたバージョンがあります。試してみると(ql:quickload :cl-json)
、ローカルのハード ドライブに保存されている変更済みのバージョンではなく、サーバーに保存されているファイルが自然に読み込まれます。
ASDF モジュールに変換することを検討しましたが、すべてのソース コードに、(json:decode...)
動作しなくなるような参照が含まれています。
quicklisp に「サーバーからダウンロードするのではなく、あちらのディレクトリを使用してください」と伝えるにはどうすればよいですか?
package - SBCL - パッケージはすべての Quicklisp ライブラリをロード時にロックしますか?
ライブラリが Quicklisp によってロードされるときに、ライブラリを自動的にパッケージロックできますか? すべてのパッケージをロックしたい。これはできますか?
common-lisp - Emacs/Slime/SBCL に quicklisp パッケージを認識させる方法
Emacs、SLIME、quicklisp を適切に連携させようとしています。次の環境をセットアップしています。
- インストール済みの Emacs
- SLIMEをEmacsにインストール
- インストール済みSBCL
- インストールされたquicklisp
(quicklisp-quickstart:install)
SBCLで実行(ql:add-to-init-file)
SBCLで実行(ql:quickload "quicklisp-slime-helper")
SBCLで実行(ql:quickload "cl-csv")
SBCL で使用するインストール済みパッケージ cl-csv(setq inferior-lisp-program "sbcl")
.emacs に追加(load (expand-file-name "~/quicklisp/slime-helper.el"))
.emacs に追加- すべてを再起動しました
パッケージをロードして使用するためにtest.lisp
で始まるファイルがあります。(ql:quickload "cl-csv")
ファイルを Emacs にロードして SLIME を実行し、それを使用してコンパイルしようとするとslime-compile-and-load-file
、SBCL でPackage CL-CSV does not exist
.
これらの部品を適切に連携させるために何が欠けていましたか?
lisp - <> Lisp - マトリスプ
私は Common Lisp にまったく慣れていませんが、(ql:quickload :matlisp) でロードするパッケージ Matlisp を使用しようとしたときに問題に遭遇しました。
たとえば、単に実行してパッケージを使用しようとすると:
私はいつも次のようなエラーを受け取ります:
" 抽象テンソル クラス "TENSOR DOUBLE-FLOAT STRIDE-ACCESSOR SIMPLE-ARRAY" のメソッドを生成しません。[型 TENSOR-ABSTRACT-CLASS の条件]
バックトレースには、多くの「オブジェクトの印刷エラー」メッセージが表示されます (添付の画像に示すように)。
この問題は、私が試したすべての matlisp 関数で発生します。私はおそらく非常に基本的なものを見逃していますか、それともパッケージの問題でしょうか?
私は Emacs 25.0.50 で Slime を実行しており、私の Lisp 実装は SBCL 1.2.11 です。この情報が関連している必要があります。
どんな助けでも大歓迎です!
ここでバックトレース:
quicklisp - quicklisp はダウンロードの検証を行いませんか?
quicklisp はダウンロードの検証を行いませんか? ソースコードをざっと見てみると、チェックサムや暗号化検証を行っている兆候は見られず、http 経由ですべてをダウンロードしているように見えます。