【入門】Common Lisp その11【質問よろず】

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2014/09/21(日) 22:49:21.73ID:FJokPHUt
Lisp Schemeスレでは恥ずかしくて聞けないようなことを質問したり、
Lisp Schemeスレの話題は高度すぎて気後れする人が話しあったり。
それ以外でもCommon Lispについての話題なら歓迎します。

ま、ゆっくりやりましょう。

「いいものの本質は、いかなる時代においても変わらない」byパワーズ

■前スレ
【入門】Common Lisp その10【質問よろず】
http://peace.2ch.net/test/read.cgi/tech/1361341876/

■Wiki
http://wiki.fdiary.net/lisp/ (id:guest pass:cl)
http://cl.cddddr.org/
http://tips.lisp-users.org/common-lisp/
2021/02/08(月) 22:30:06.33ID:WYlwG+td
再帰的にパッケージ作ってはimport でホームに設定してるけど…やっぱり筋が悪かったですごめんなさい

一応軌跡だけ
デフォルト値はエラーをhandler-bindで捕まえる
cl-userの(list-all-package)が汚れるからcl-userから先頭以外はuninternして、でも参照は保持して…と
hs見たらdelete-packageやuninternしてもアクセスは許されるがpathologicalなのでチェックは行わないとか書いてる
怪しからん事になってきた

>>796
lisp5らしい方法ですね
propertyスロットに入れたのに、value slotにアクセスしようとしていつも怒られるからあんまりやらないけど…
情報付けたいけどvalueスロットが既に埋まってて、それがライブラリ由来で手を入れたくない時とかの非常口として稀に役に立つ
2021/02/08(月) 22:35:25.83ID:WYlwG+td
sbclではcl-userからのfind/list-all-packageに引っかからなくても普通に生きてるみたい
2021/02/12(金) 01:40:00.02ID:jvXjcedJ
どれくらいplist(用のセル)が使われてるんだろうかと(do-external/all-symbols (s :clとか色々) (when s (print s)))してみたらinternalには意外に使われてた
まあ殆どデバッグ用のタグのようだが
800デフォルトの名無しさん
垢版 |
2021/02/14(日) 06:07:46.29ID:QgaFclDV
The Lisperati1000 Is a Cyberdeck Terminal Dedicated to Lisp Programming
Dr. Conrad Barski wanted a small, portable device for coding Lisp on the go and
built the Lisperati1000 cyberdeck terminal for the job.

The Lisperati1000 is a very compact device based on the Raspberry Pi Zero W single-board computer.
Its most striking feature is the 8.8” LCD display,
which has an ultra-wide aspect ratio with a resolution of 1920x480.
2021/02/16(火) 17:55:44.18ID:05vP8Ot3
たのしそう
なんですげー細長いのかすらもよく分からんが
androidだとeclのreplがあるけど残念UIで殆ど触ってない
外付けBluetoothキーボード安いの買ってみるかな
2021/02/16(火) 18:22:07.49ID:6gVrqubW
DynabookならぬTecobookみたいなw
2021/02/16(火) 22:06:52.79ID:05vP8Ot3
ポン叩くとnilが生じ、クルッと( )で囲んだり、ピンチで←(こ う)→引き伸ばしたり、そこへ(flick me)をフリックで放り込んだり(こ (flick me)う)したいです

例えはプログフォームなことを忘れてたら
ここを(kar | kadar...)こうシュッと分裂(kar ) ( kadar...)させてシュッと((kar ) ( kadar...))こうする感じで
よろしくおねがいします
2021/02/16(火) 22:16:37.94ID:05vP8Ot3
paredit/vim使ってるけど脳内操作感はこんなんだな
vimでジェスチャーは難しそう?
:nnomap <left-mouse> ,@(スプライス/paredit)みたいのはタブレで桐南るんだろ?
マウスなら左右中×シングルダブクリの6パターン使えるが
2021/02/16(火) 23:05:06.72ID:82m2i+/K
play storeに転がってるvimの投げやりなポート触る限り、矩形選択が使えそう?
範囲だけで動きが追えないが
キーボードフリーvimなんて、と思ったけどふと試した音声入力が結構戦える事に気づいた(約物とauto-capさえ切れば)
修飾キーあんまり使わないからだね
:、escよく使う大文字修飾コマンド、モード切替あたりはリマップする必要があるが
(par、)renでいこう
2021/02/17(水) 01:10:17.45ID:H30hYpZs
hyperspecの発音記号の項目が輝く時がやっと来たのか
2021/03/04(木) 00:09:41.26ID:p41hv1JI
hsもcltl2も大体読んで細かいとこ気になってきたらansi/isoも読むべき?
60$とえらく高いし製版の評判ボロクソだけど
ANSIに持ち込んで版権付く直前のドラフトがansi-cl.psでググって出てくるけどどのくらい違うんだろ、並べて読まないとhsとは違いが分からんが…
処理系作成者以外が参照する準公式文書でフリーなのは以上3つで尽きてるよね?
もし買った熱心な方いたらお願いします
2021/03/04(木) 00:29:46.91ID:p41hv1JI
紙のスキャンでocrすらしてない名ばかりpdf、スキャンが斜めってて端の方の文書が欠けてると聞くと、むしろ怖いもの見たさが湧く
c/c++のように違法アップロードが見当たらないのはclの民度が高いのか、もっと高額だからか、それとも単に需要がないからなのか…
2021/03/04(木) 02:23:20.12ID:tD3BuSri
情報元にドラフトと内容の違いはないというのも書いてあったよな
2021/03/04(木) 12:33:01.96ID:CuM732tt
>>809
そうなの、ありがとう
じゃあ古代のマニュアルでも読んでた方がむしろcons/prosを学べそうだな
2021/03/04(木) 13:48:00.83ID:CIINzG5o
無理矢理なPDF版よりも、むしろ紙の仕様書が欲しい
AmazonのPODで売ってくれたら絶対買う
2021/03/04(木) 15:02:38.87ID:CuM732tt
紙の持ってるとほんといいね
寝ながらcltl2の余白に書き込みまくってる、枕にも丁度よい
amazon中古送料込み450円なんでためらいもない
2021/03/07(日) 21:32:46.67ID:xqIC71Yx
誰か教えてください
CLOSで デストラクタ的な事をするにはどうしたらいいんでしょうか?

(defmethod delete ((o myclass))
~disconnect DB connection とか colse socket とか~ )

(let ((obj (make-instance 'myclass))) ... )
参照が残っていなければ勝手に (delete obj) がコールされるのが理想です

少しググっても「放っておけばガーベッジコレクトされるのに何を心配する必要があるんだ?(英語) 」
みたいなのばかり引っかかってどうにも分かりませんでした
2021/03/07(日) 21:44:41.79ID:OPAOeHk0
参照がないことを検知できないので
disconnectやらcloseやらは明示で呼ぶしかない
2021/03/07(日) 21:54:16.38ID:xqIC71Yx
ありがとうございます
それが Lispスタイルなのですね、少しづつ慣れていこうと思います
2021/03/07(日) 22:12:51.14ID:R8ni/s97
単に接続を確実に閉じたいだけなら、with-open-file みたいなマクロ書くけど
CLOSかぁ
2021/03/08(月) 21:55:25.40ID:WFQsFdpL
c++にとらわれすぎc++の用語で検索するからヒットがないだけでlisp raiiで検索すると沢山でてくるよ
リソース管理だから816の回答が定石
2021/03/10(水) 01:22:08.43ID:Y251bYtV
with-なんたらがC#のusing相当よね
2021/03/11(木) 00:45:34.23ID:SHe0MBwi
Python の with はCL由来かな
2021/03/11(木) 09:02:08.80ID:ifNxw6Pa
Pythonはpaulがベタ褒めしてから20年くらい追ってるけど、元はblock(不採用)として提案され、先例上げるのが通例なのに言及もなかったはずなので直接は関係ないんじゃないかな?
pepでよく言及されるのは確かだが
今だと構文マクロは却下されそうだな、面白そうなのに

ふつうの言語はASTを内部表現に採用してると思うが、Pythonは標準関数で抽出&evalを許してるのが特異で面白い
lispインタプリタ書きなどしなくとも、ノードのラベルをリストのcarと入れ替えるだけの数行のコードでフルパワーlispになる
2021/03/11(木) 21:29:17.70ID:WMKPM4Ms
>>820 ちょっと何言ってるか分かんない
2021/03/12(金) 00:20:34.70ID:jnwQeQfS
>>820
うーん、ちょっと信じられん、Python の内部表現ぐちゃぐちゃじゃなかったっけ
コードで示せる?
2021/03/13(土) 03:54:58.89ID:znyU1x9d
CCLでdexadorが使えなくて困ってるのだけどもしかしてビルド失敗してるのかな
SBCLなら通るのだけどCCLだとこんなエラーになる

ttps://i.imgur.com/uCzQQTm.png

lispの問題解決はそもそもよくわかってないのでどうしたらいいものやら
2021/03/13(土) 06:33:03.19ID:XgCz+Tty
SBCLつかう
2021/03/14(日) 15:46:41.12ID:o2ffqw6Y
>>823
connection refused って出てるあたりよく分からないなあ。
俺が手元のMacで試すと成功したのでより分からない。

いっそのこと HTTP クライアント変えて Drakma 使うとか。
(ql:quickload "drakma")
(drakma:http-request "https://ja.wikipedia.org/wiki/Common_Lisp";)
2021/03/14(日) 16:55:20.29ID:CVMafXuR
>>797
propertyはおもむろにsetfしても怒られないので対話使用に便利

というのはさておき怒られない理由が気になる
letでそのシンボルを束縛しててもグローバルのシンボルのplist見に行くよね?
単に気にもかけられない機能だからとか?
2021/03/14(日) 17:02:06.59ID:o+fPUrgF
ああletで束縛するのはplistという名前のvalueであって、getf 'plist 'propって書けば当然シンボルとしてのplistを見に行くわな
自己解決
2021/03/14(日) 17:04:59.01ID:o+fPUrgF
するとpletって概念が頭に浮かぶんだけど、どう実装できるだろう?
ちょっと思いつかない
2021/03/15(月) 00:09:02.39ID:2V51Rd3t
>>825
Drakmaも同様にだめでした
今の所どこから手をつけたらいいかわからないけど地道に調べます
2021/03/15(月) 22:54:46.18ID:nwI8edue
ccl使ってないからわからないけど、ipv6とか出てるのが気になる
831デフォルトの名無しさん
垢版 |
2021/03/16(火) 00:47:01.98ID:z8vZoY4R
最近Lispというものを知ったのですが、皆さんはなぜこの言語を使っているのですか?
2021/03/16(火) 01:48:52.01ID:SXyIy3pf
マスコットが可愛いから
2021/03/16(火) 15:35:46.37ID:3xabyoxQ
どこまでも動的だから
2021/03/16(火) 16:36:23.79ID:SXyIy3pf
遊び甲斐がある、たぶんFORTHと並んで最も面白い言語から
しかし仕事はない
間接的に地力固めにはなってる気はする
2021/03/16(火) 16:39:38.49ID:SXyIy3pf
求人ねえかなあ…
2021/03/16(火) 16:47:09.56ID:SXyIy3pf
lisperを集めてもみんな船頭になりたがる人種だから川渡れないよなあ
伝説的なプロジェクトは大体少人数ってのが裏付けている、気がする
2021/03/16(火) 17:51:29.58ID:le9BGxml
CCLの再ビルドをしていて気づきましたがcan’t findが大量に出てますねえ・・
ccl -n
>(rebuild-ccl :clean t)
Can't find #P"ccl:library;lispequ.dx64fsl.newest" so requiring "ccl:library;lispequ.lisp" instead
Can't find #P"ccl:bin;hash.dx64fsl.newest" so requiring "ccl:lib;hash.lisp" instead
Can't find #P"ccl:bin;backquote.dx64fsl.newest" so requiring "ccl:lib;backquote.lisp" instead
Can't find #P"ccl:bin;level-2.dx64fsl.newest" so requiring "ccl:lib;level-2.lisp" instead
.....

この後にも大量に出てますが対象のlispファイルは存在しているようなので
見にいくようにすればいいのではないかと思いますがやり方がわかりません
どなたか教えていただければ助かります
CCL本体のmake自体は特に何も出ていませんでした。
2021/03/16(火) 20:24:15.22ID:SXyIy3pf
うちはsbclなんであれだがSBCL_HOMEみないな名前の環境変数は.../lib/sbclをちゃんと指してるか?
2021/03/16(火) 20:51:54.59ID:le9BGxml
ttps://github.com/Clozure/ccl/releases
ここを見る限りは必要ないみたいです
ほとんどは参照に成功しているようでLoadingとCommpilingが繰り返されてますね

さっきから調べてますがちょっとこれ手に負えないですわ・・
2021/03/16(火) 21:47:53.48ID:Rsbfm/u/
そもそもどういう環境なのか書いて欲しい
エスパーするにも限度があるぞ
2021/03/16(火) 21:56:26.16ID:le9BGxml
すみません
high sierra 10.13.6 です
経験なさすぎて手に負えません
先輩方お願いします
2021/03/16(火) 22:14:38.72ID:5EsGrMIo
趣味悪いやつがどこまでエスパーできるか試してるようにしかみえん・・
2021/03/16(火) 22:19:17.23ID:oighJobp
どうやってインストールしたん
CCLのバージョンは
なんでCCLの再ビルドしたん
2021/03/16(火) 22:31:08.36ID:le9BGxml
ttps://github.com/Clozure/ccl/releases
ここにある通りです
CCL 1.12がlatestのはずです

git clone https://github.com/Clozure/ccl.git ccl-dev
curl -L -O https://github.com/Clozure/ccl/releases/download/v1.12/darwinx86.tar.gz
cd ccl-dev
tar xf ../darwinx86.tar.gz

なおここから先のCCL本体のビルドはやってもやらなくても結果は同じでした
cd lisp-kernel/darwinx8664
make clean
make

ln -s */ccl-dev/dx86c164 ccl
は適宜やってます

単にCCLはビルド以外の提供がなかったからビルドしただけで他意はないんです
2021/03/16(火) 22:34:20.43ID:Rsbfm/u/
lisper だけにエスパーは得意でございます
お後がよろしいようで…

つか、なんかcclのページに何か不安なこと書いてるね
Unfortunately, on Windows and macOS Catalina, (rebuild-ccl :full t) will not work.
2021/03/17(水) 02:23:28.92ID:IQD2IzZ+
>>844
たまたまうちの環境も High Sierra だけど CCL は roswel で導入したのを使ってる (他に sbcl と abcl-bin を入れてる)
確かに ccl-bin でしか提供されてないけど気にならないので再ビルドする気にはならんね

> Can't find #P"ccl:library;lispequ.dx64fsl.newest" so requiring "ccl:library;lispequ.lisp" instead
> ...
この箇所ってエラーではないと思うよ

コンパイル済みの "ccl:library;lispequ.dx64fsl.newest" が見つからんので
代わりに "ccl:library;lispequ.lisp" を探すわ (そしてコンパイルするわ)
ってだけのメッセージでしょ
(translate-logical-pathname "ccl:library;lispequ.lisp") の場所にファイルがあれば何も問題ないはず
2021/03/17(水) 05:48:07.88ID:kb+CEO2s
>>846
なるほど実は(rebuild-ccl :clean t)は必要なかったんですかね
気を取り直してCCL本体はmakeせずrebuildも打たない形にしてみたんですが

やっぱりdexadorは同じところで止まるようです
しかしCCLで動いている方もいるようなので(>>825)
こうなるとますますわかりません
何か設定がおかしいのか、足りないのか・・

とりあえず現状で:F 1から:F10まで追ってみたんですが
SSLっぽい引数が全部NILってことに気づいてSSLをしくっている可能性を考えました
internet-familyはIPv6/IPv4に対応しているような感じは受けますがそこはまずおいておいて

IPv4を返しているwww.niconico.jpをgetさせたらkilled: 9でCCL自体落ちました
2021/03/17(水) 05:57:38.64ID:kb+CEO2s
(続き)
こうなるとdexadorがCCLに対応していない可能性があると思い
ttps://github.com/fukamachi/dexador
ここを見ると特に対応情報とかはないようですがサンプルから

? (dex:get "http://lisp.org/";)
"<HTML>
<HEAD>
<title>John McCarthy, 1927-2011</title>
・・・中略・・・・
<a href=¥"http://www-formal.stanford.edu/jmc/¥;">John McCarthy's Home Page</a><br>
<a href=¥"http://news.stanford.edu/news/2011/october/john-mccarthy-obit-102511.html¥;">Obituary</a>
</BODY>
</HTML>
"
200
#<HASH-TABLE :TEST EQUAL size 10/60 #x302002997A5D>
#<QURI.URI.HTTP:URI-HTTPS https://lisp.org/>;
#<SSL-STREAM for #<BASIC-TCP-STREAM ISO-8859-1 (SOCKET/11) #x30200299FA3D>>
?

んー?落ちてきますねえ・・
https://lisp.org/に変えても落ちてきます。
dexadorに頼っていいのかどうかわからなくなってきました
2021/03/17(水) 06:03:28.42ID:kb+CEO2s
>>847のリンクを間違えました
誤 IPv4を返しているwww.niconico.jpをgetさせたらkilled: 9でCCL自体落ちました
正 IPv4を返しているwww.nicovideo.jpをgetさせたらkilled: 9でCCL自体落ちました
2021/03/17(水) 10:33:15.58ID:IQD2IzZ+
>>847
High Sierra + CCL 環境で問題なくgetできてるよ
quicklisp周りのアップデートしたら直るんじゃないかな
2021/03/17(水) 11:20:35.79ID:e+VOZDZq
環境構築めんどくせえからxyzzyかPortacleでいいや
2021/03/17(水) 11:57:13.48ID:eAjGywmP
lisp.orgなる良いドメイン確保してるの初めて知った…
stanfordのjmcのhpへのリンクがあるだけ?
(いまお外でスマホブラウザftpできない)
2021/03/17(水) 12:14:26.44ID:nm2OeIl9
ubuntsu で普通にaptでsbcl落とせたはず、ccl は知らんけど
850のコメントが正しいと思う、usocket が壊れてるとかかな
2021/03/17(水) 12:30:51.87ID:kb+CEO2s
やってみました

? (ql:update-client)
The most up-to-date client, version 2021-02-13, is already installed.
T

? (ql:update-all-dists)
1 dist to check.
You already have the latest version of "quicklisp": 2021-02-28.
NIL

特に何も変わらないようです・・
ccl自体はquicklispの管理には入っていないと思うのですがこれを組み込むべきと言うことでしょうか?
2021/03/17(水) 16:11:31.69ID:IQD2IzZ+
>>854
あと考えられるのは
quicklisp/.. . .. /cl+ssl-20210228-git/src/reload.lisp で
libcrypto.dylib, libssl.dylib をロードしようとしていて

システム標準ライブラリに付いてるコメントが怪しい ( MacPorts/Homebrew etc. の dylib を優先的に探索している)
"libcrypto.dylib" ;; default system libcrypto, which may have insufficient crypto
"libssl.dylib" ;; default system libssl, which may have insufficient crypto

「これだと暗号化が不十分かも」という事は、 https 通信で問題起こす可能性があるということ
そこで拒否られる ( connection refused ) かどうかはサーバーのバージョンと設定次第なんじゃないかと
なので 自力 make install か homebrew とかで を最新の openssl をインストールしたら直るかもよ

それと dexador/drakma はサーバーがLocation属性で示したリダイレクト先(大抵は https://... ) 見に行くようなので
httpなら大丈夫だった, httpでも拒否られた ってのはアテにならない気がする
2021/03/17(水) 16:20:38.24ID:MY4kqLB8
ああ、qlはssl対応してないんだっけな(遠い目)
永久にβ版
2021/03/17(水) 20:29:18.59ID:IQD2IzZ+
>>854 あと rebuild-ccl についてなんだが

https://github.com/Clozure/ccl/releases を見ると
Windowsや macOS Catalina だと (rebuild-ccl :full t) はうまくいかないかも
Xcode 11 (Mojave) の一部バージョンだと make も通らんかもとあるが
我々の環境 Xcode 10.1 (High Sierra) では大丈夫なはず

;; git 版 rebuild-ccl ;;
ccl-dev❦:./dx86cl64 --no-init
? (rebuild-ccl :full t)
. . ... . .
;Building lisp-kernel ...
;Kernel built successfully.
できた

;; roswell 版 rebuild-ccl ;;
~❦:ros install ccl-bin {まだ入れてなければ}

~❦:ros +Q +R run { +Q: quicklisp無し, +R: "--no-init" に相当 }
? (rebuild-ccl :full t)
. . ... . . できた

~❦:ros run {普通に起動}
? (ql:quickload :dexador)
? (dex:get "https://lisp.org";)
. . ... . .
とりあえず問題無さそう
素のCCLとの性能差は体感では分からなかった
2021/03/17(水) 21:56:44.29ID:kb+CEO2s
>>855
libcryptoとlibsslは自分でビルドしたのを/usr/local/libに置いてます
そんなに古いわけじゃないとは思うんですが早速更新して見ます

SSL関係はCLの標準ライブラリとして持ってるものだと思ってました・・
2021/03/18(木) 00:04:37.76ID:txHaGLQk
うーんだめでした
CCL本体のmakeをせずrebuildもしないものと
CCL本体をmakeしrebuildも実行したものどっちも同じ結果です

[package dexador.error]...........................
[package dexador.backend.usocket].................
[package dexador].
(:DEXADOR)
? (ql:update-all-dists)
1 dist to check.
You already have the latest version of "quicklisp": 2021-02-28.
NIL
? (dex:get "https://ja.wikipedia.org/wiki/Common_Lisp";)
> Error: Error #<USOCKET:CONNECTION-REFUSED-ERROR #x3020023388AD>
> While executing: USOCKET::RAISE-ERROR-FROM-ID, in process listener(1).

OpenSSLの最新はmake testをパスしてます

/usr/local/libは優先パスになってるので通常そこはいいはずなんですが
quicklisp側に設定がいるんでしょうか

前から気になるのはquicklispのsetupを実行するといつまでたっても終わらないことですね
仕方ないので
rm -rf ~/quicklispで消してから
ccl ―load quicklisp.lisp
(quicklisp-quickstart:install)
(ql:quickload :dexador)
(dex:get "https://ja.wikipedia.org/wiki/Common_Lisp";)

とかやってます
2021/03/18(木) 00:17:32.21ID:3weRgygV
そんなにこだわることかね?安定版、あわよくばプリコンパイル済の入れて差分は手動パッチの方が楽じゃないの

俺なんか素のリスプイメージから10代くらいsave-lisp-and-dieし続けた秘伝のイメージだから、もはやどうやって再現していいのかわからん
2021/03/18(木) 00:26:02.89ID:txHaGLQk
特にmakeせずgitでプリコンパイルされているものを使ってもだめなのでよくわからないんですよね
common lispの環境もよくわかっていないので問題解決もままならないです
OpenSSLは正しく/usr/local/libに入っているのを確認しているのでそこは大丈夫なはずですが
何かしらの理由で読んでいないとかだとまずいですねえ・・
2021/03/18(木) 00:27:52.12ID:MFTfSoUk
>>860
それはそれでダメだろw
再現できる環境作れなきゃ、時代遅れ過ぎる
2021/03/18(木) 00:31:03.23ID:3weRgygV
愛着が湧いてくるのです
2021/03/18(木) 02:31:51.99ID:TYZwFG+5
>>861
あと思いつくのは

・コンパル済みキャッシュ
念のため真っさらに
rm -rf ~/.cache/common-lisp/ccl-1.12-f98-macosx-x64

・Fink, MacPorts, Homebrew 経由の古い libcrypt.dylib, libssl.dylib
こいつらは /usr/local/lib/* より参照優先度が高い ( sbcl だと大丈夫な理由が分からんけど )
インストールした覚えがなくてもチェックしときましょうか

とか?
2021/03/18(木) 07:21:38.54ID:0KnUd1t3
ld.conf.d とか変に弄ったのを忘れてるに一票
2021/03/18(木) 14:14:43.37ID:txHaGLQk
>>864
fink /sw ~/sw はありませんでした
MacPorts /opt 以下はX11だけでした
Homebrew /opt/homebrew はありませんでした

コンパイル済みキャッシュ・・はどこにあるのか結局わからなかったので
CLLのフォルダごと削除して新しくgit cloneしました

~/.cache/common-lisp/ccl-1.12-f98-macosx-x64 はありました
他にsbclとかも入っていたので全て消しました

あとは同じように
m -rf ~/quicklisp
ccl ―load quicklisp.lisp
? (quicklisp-quickstart:install)
? (ql:quickload :dexador)
? (dex:get "https://ja.wikipedia.org/wiki/Common_Lisp";)
> Error: Error #<USOCKET:CONNECTION-REFUSED-ERROR #x30200246AE5D>

ダメでした・・
URLによってエラーになったりならなかったりよくわからないですね

>>865
特に触っていないと思います
この間始めたばかりの素人なのでインストールガイドに書いてあることくらいしかできてないのです
そういうわけなので設定とかもしかしたら必要なのかもしれませんが全くやっていません
2021/03/18(木) 15:56:19.49ID:TYZwFG+5
システム標準の "libcrypto.dylib" "libssl.dylib" が connection refused の原因なのか?という件

quicklisp/dists/quicklisp/software/cl+ssl-20210228-git/src/reload.lisp を編集して
どのdylibも存在しないパスに書き換えると (ql:quickload :dexador) に失敗するので「リストにあるどれか」を必要としている事は確か
そして システム標準以外を見に行かないようにすると...
少なくとも https://lisp.org, https://nicovideo.jp に関しては問題なく ( dex:get ... ) ができました

>>866
/usr/local/lib/ にインストールしたOpenSSL は大丈夫なはず!
かどうかは分からないので同じように試してみるといいかもしれない
2021/03/18(木) 16:03:33.65ID:eM8QRv2l
動いてないの質問者1人で動いてるやつ3人くらいいる状況だと質問者の環境がおかしいとしか・・
2021/03/18(木) 18:48:43.68ID:txHaGLQk
>>867
このように変えてみました
(:darwin (:or "/usr/local/lib/libcrypto.dylib" ;; personalized install
))
(:darwin (:or "/usr/local/lib/libssl.dylib" ;; personalized install
))

改変のreload.lispを適当に他のディレクトリに置いておいて・・

rm -rf ~/quicklisp
ccl ―load quicklisp
(quicklisp-quickstart:install)

別のシェルで 改変後のreload.lispを置き換えようとしましたが
~/quicklisp/dists/quicklisp/software のディレクトリがありませんでした

(ql:quickload :dexador) を実行するとsoftwareディクトりができます
quicklisp/dists/quicklisp/software/cl+ssl-20210228-git/src/reload.lisp が存在しているようなので
これを改変したもので置き換えて確認・・

? (dex:get "https://ja.wikipedia.org/wiki/Common_Lisp";)
> Error: Error #<USOCKET:CONNECTION-REFUSED-ERROR #x30200230B4ED>

だめでした・・
もしかしてreload.lispを評価していないんじゃないかとも思うのですがやり方がわからないです

>>868
多分そうなんじゃないかと思うんですが初心者すぎてどうにもならないです
お手数かけます先輩方
2021/03/18(木) 19:55:32.23ID:TYZwFG+5
>>869 のパターンだと /usr/local/lib にインストールしたやつ「だけ」がロードされる状態になってる
俺が言いたかったのは そいつが悪い (CCLと相性が悪い?) んじゃないかということ

本当に CCL がこの reload.lisp を読み込んでいるのか気になるなら
まず全部に x つけて ( "x/usr/local/lib/libssl.dylib" みたいに ) から quickloadしてみればいい
リストに合致する dylib がねーよ...と文句言われればOK
2021/03/18(木) 20:50:01.39ID:eM8QRv2l
Lisp以外は初心者だと思ってないから環境初期化して試さないんでしょ?
デフォ環境からカスタマイズどれくらいされてるかわからん状態でエスパーする意味ある?
手元ではappストアで配布のcclとhomebrewのデフォルトインストールのsbclで動いてるよ
usocketの環境問題の切り分けならsbcl試すべきでしょどっちもだめならlisp以前のもんだい
2021/03/18(木) 21:25:00.91ID:txHaGLQk
>>870
やってみようと思ったんですがちょっとやり方がわからないです
というのも
~/quicklispが作られるのが
ccl ―load quicklisp.lisp
? (quicklisp-quickstart:install)

の後で
software以下のディレクトリができるのが
(ql:quickload :dexador)
の後なので
これ以降の修正しかできない感じです

どうしたらいいでしょうか

>>871
sbclだと動いてます
毎回quicklispは消してやってるので環境初期化は大丈夫だと思うんですが
皆さんには常識のこととか多分私にはわかってません
2021/03/18(木) 21:30:32.20ID:txHaGLQk
あとはすごく気になるのが
quicklispのインストールが終わった後で
CCLを(quit)してしまうと

ccl ―load quicklisp.lisp
をやっても(ql: を評価しないし
(load #P で~/quicklispのsetupを読み込むとそこで止まります

インストール後なら(ql: は使えるのでdexadorは読み込めるんですが・・
2021/03/18(木) 22:02:51.90ID:ESPdjtZ2
もしかしてスレ建て以来最高に盛り上がってる?
次スレ必要?
2021/03/18(木) 22:28:06.14ID:0KnUd1t3
>>874
早いよw

普通に環境依存の話だろうね

既に指摘されてるけど初心に返って、
環境変数全部見直すか、
タイムマシーンで以前の状態に戻すとか、
新規にユーザ作ってそれで試すとか、
そこら辺をちゃんと地道にやるしかないと思うよ
2021/03/18(木) 22:39:03.34ID:txHaGLQk
>>875
質問する前から新規ユーザーで既にやってました
その辺は言われることなので
環境変数とかもそんなわけでライブラリパス以外は割とスカスカですね

lisp関係はここに出ている作業くらいのものなので
lisp関係の細かい設定とかそういうのは一切やってないんですよね

そういえばsbclに関して思うことがありますが
あれはOpenSSLを更新する前にビルドしてあったものですねえ・・
2021/03/18(木) 22:54:57.42ID:0KnUd1t3
>>876
おっと失礼した

そこまでちゃんと分かってるなら後は、
変えてないつもりのものとか、
動いているつもりのものを疑ってみることを
勧めるよ
2021/03/18(木) 23:19:23.97ID:txHaGLQk
うーん・・調べてはいるんですが手がかりがあまりにもなさすぎて
どう手をつけたものかって感じです・・
git版でも動くようなのでなぜこうなるのかますますわかりませんが・・
2021/03/19(金) 02:10:05.85ID:6x0jzlEw
>>872
> software以下のディレクトリができるのが
> (ql:quickload :dexador)
> の後なので
> これ以降の修正しかできない感じです

「これ以降の修正」それでいいんです
(quit)状態で 修正して、起動して (ql:quickload :dexador) すると
依存するパッケージのソース変更を自動察知してコンパイルが走りますんで

今回のが openssl に起因する問題なのか不明だけど
縁の下なライブラリを自力で makeインストールするのはあまりオススメできませんね
脆弱性報告を随時チェックして...
configure オプションの推奨設定なんかを毎回調べて...
依存するライブラリ/プログラム群を必要に応じてアップデート ...
それらが Homebrew のアップデートコマンドを週一で叩くだけで済むならその方が良くないですか?
2021/03/19(金) 03:54:01.31ID:RMQx/osX
マカーでないのでよく分からんが、うちの界隈で新しいマックはdll(dylibっていうんだっけ?)の仕様代わって大変ってどこかで聞いた
invarid/unsafe accessとかそんな感じのエラー吐いてない?
相対パスの使用が厳しくなって怒られるらしい、ブロブをsls(macだとgrep?)に掛けてパスっぽいものを絶対パスに置換するだけでよいらしいが
2021/03/19(金) 09:10:11.27ID:cqWDT3jG
細かいところから

>>873

> quicklispのインストールが終わった後で
> CCLを(quit)してしまうと
> ccl --load quicklisp.lisp
> をやっても(ql: を評価しないし

この quicklisp.lisp は quicklisp.org から落としてきたものだと思うけど、それなら当たり前。
quicklisp.lisp は Quicklisp のインストーラに過ぎなくて ql パッケージは入ってないから、 quicklisp.lisp を読むだけでは使えない。

インストール済みの Quicklisp を (load #P"~/quicklisp/setup.lisp") で読み込むと ql パッケージが使えるようになる。
起動の度に毎回 load するのが面倒なら、 quicklisp インストール後に (ql:add-to-init-file) で処理系が起動時に読み込むファイルで load するよう書いてくれる。

でも
> (load #P で~/quicklispのsetupを読み込むとそこで止まります
止まるわけないんだけどなあ。止まるってどういう意味でしょ。かっこの閉じ忘れとかじゃないよね。
2021/03/19(金) 09:26:57.31ID:cqWDT3jG
>>869 でUSOCKET:CONNECTION-REFUSED-ERROR が出たとか言ってるあたり、ソケットのレベルで導通してるかも気になる。

これは成功するんだよね?

? (usocket:socket-connect "ja.wikipedia.org" 443)
#<USOCKET:STREAM-USOCKET #x3020020A09FD>


ちなみに俺の環境
? (lisp-implementation-type)
"Clozure Common Lisp"
? (lisp-implementation-version)
"Version 1.12 (v1.12-39-g6c1a9458) DarwinX8664"
2021/03/19(金) 16:35:51.38ID:0qPpyi/x
遅くなりましたすみません開始します

>>879
手順把握しました
makeに関しては昔MacPortsでやるとうまくいかないやつがちらほらあって
手動で細かく制御するとできるとかがあったのでそれっきりだったんですよね
今ではそんなこともないということでしたら考え直します
おすすめはhomebrewでしょうか?

>>880
high sierraなのでその辺は大丈夫なはず・・です

>>881
(load #P"~/quicklisp/setup.lisp")
これを実行するとそのまま止まって次のプロンプト(?)が出てこないんです
原因は全く不明なんですが
(ql:add-to-init-file) これはやってみます
2021/03/19(金) 16:40:05.22ID:0qPpyi/x
>>882
For more information, see http://www.quicklisp.org/beta/

NIL
? (lisp-implementation-type)
"Clozure Common Lisp"
? (lisp-implementation-version)
"Version 1.12 (v1.12-39-g6c1a9458) DarwinX8664"
?

これは大丈夫そうですね
2021/03/19(金) 16:49:39.87ID:0qPpyi/x
(ql:add-to-init-file) を実行すると
~/.ccl-init.lisp が生成されるようです

(quit)で終了して・・
CCLを単独で起動すると
(ql:quickload :dexador) は通りました

この状態では以下変わりません
? (dex:get "https://ja.wikipedia.org/wiki/Common_Lisp";)
> Error: Error #<USOCKET:CONNECTION-REFUSED-ERROR #x30200311B01D>

.ccl-init.lispを見るとsetupを実行しているように見えなくもないのですが
特に止まるとかそういうことはこの手順だとないようです
次にSSLライブラリを読むかどうかのチェックをしてみます
2021/03/19(金) 16:58:13.55ID:0qPpyi/x
reload.lispを変更しlibssl , libcryptを見に行かないようにしました

CCLを起動しdexadorを読みます

CCL is free software. It is distributed under the terms of the Apache
Licence, Version 2.0.
? (ql:quickload :dexador)
To load "dexador":
Load 1 ASDF system:
dexador
; Loading "dexador"
..................................................
[package dexador.encoding]........................
[package dexador.connection-cache]................
[package dexador.decoding-stream].................
[package dexador.keep-alive-stream]...............
[package dexador.util]............................
[package dexador.body]............................
[package dexador.error]...........................
[package dexador.backend.usocket].................
[package dexador].
(:DEXADOR)
? (dex:get "https://ja.wikipedia.org/wiki/Common_Lisp";)
> Error: Error #<USOCKET:CONNECTION-REFUSED-ERROR #x302001DAED7D>

これは・・
再確認します
2021/03/19(金) 17:00:59.35ID:0qPpyi/x
更新して書き換えられたかもと思いましたがそんなことはなかったようです

reload.lispはこのようになっていました

(:darwin (:or "x/usr/local/lib/libcrypto.dylib" ;; personalized install
))

・・中略・・
(:darwin (:or "x/usr/local/lib/libssl.dylib" ;; personalized install
))

手がかりになるでしょうか?
2021/03/19(金) 17:22:35.07ID:0qPpyi/x
~/.cacheを消し忘れていたので実行後に
再度(ql:quickload :dexador)をやりました

reload.lispは改変のまま置かれていますが

[package dexador.error]...........................
[package dexador.backend.usocket].................
[package dexador].
(:DEXADOR)
? (dex:get "https://ja.wikipedia.org/wiki/Common_Lisp";)
> Error: Error #<USOCKET:CONNECTION-REFUSED-ERROR #x30200230142D>

ここは変わりませんでした
2021/03/19(金) 18:14:15.37ID:6x0jzlEw
>>887 これは予想がつく
こっちでも試してみたんだが  ql:quickload の挙動は
○○○.lisp のタイムスタンプが コンパイル済みファイル ( ~/.cache/. . ... . . /○○○.dx64fsl )
よりも「新しくなった時」に ソース変更あり!と判断しているようだ

つまりまだ「新しい」reload.dx64fsl がキャッシュにあるのでそれをロードして何も変化が起きなかったんだろうなと
準備しておいた 改変済み reload.lisp (古い) に差し替えじゃなくて
生で置かれた reload.lisp を直に編集して保存 (新しい) しとけば良かったと

だとしても >>888 の説明がつかん
そちらの手順に何か勘違いがあるんじゃないかな
2021/03/19(金) 18:30:33.54ID:6x0jzlEw
繰り返しになるけど、まずは

(:darwin (:or "X/opt/local/lib/libcrypto.dylib" ;; MacPorts
"X/sw/lib/libcrypto.dylib" ;; Fink
"X/usr/local/opt/openssl/lib/libcrypto.dylib" ;; Homebrew
"X/usr/local/lib/libcrypto.dylib" ;; personalized install
"Xlibcrypto.dylib" ;; default system libcrypto, which may have insufficient crypto
"X/usr/lib/libcrypto.dylib"))

libssl.dylib も同様に改変して
これを読ませてエラーになる事を確認してから

(:darwin (:or "X/opt/local/lib/libcrypto.dylib" ;; MacPorts
"X/sw/lib/libcrypto.dylib" ;; Fink
"X/usr/local/opt/openssl/lib/libcrypto.dylib" ;; Homebrew
"X/usr/local/lib/libcrypto.dylib" ;; personalized install
"libcrypto.dylib" ;; default system libcrypto, which may have insufficient crypto
"X/usr/lib/libcrypto.dylib"))

これで試してみましょう
2021/03/19(金) 19:41:49.55ID:0qPpyi/x
>>889-890
手順に気をつけてもう一度やって見ました

まずは.cacheの
rm -rf common-lisp

~/quicklisp/dists/quicklisp/software/cl+ssl-20210228-git/src/reload.lisp
を直接編集してタイムスタンプが変わっていることを確認します

>ccl
? (ql:quickload :dexador)
[package dexador.util]............................
[package dexador.body]............................
[package dexador.error]...........................
[package dexador.backend.usocket].................
[package dexador].
(:DEXADOR)

※ここでreload.lispを確認して改変されたままであることはわかりました

? (dex:get "https://ja.wikipedia.org/wiki/Common_Lisp";)
> Error: Error #<USOCKET:CONNECTION-REFUSED-ERROR #x30200225506D>

こうなるようです・・
2021/03/19(金) 19:45:45.88ID:0qPpyi/x
思ったんですが
どの変数がpathを握っているのか表示できないものでしょうか?
2021/03/19(金) 21:08:00.19ID:OkAVL8Bz
結局何がしたくて、何が出来てて、何が出来てないんだっけ?
2021/03/19(金) 21:13:21.69ID:RMQx/osX
普段過疎ってるのに急に優しさに満ちたな…
ついでに興味深いレスも書き捨ててってよ
2021/03/19(金) 22:35:05.73ID:0qPpyi/x
>>893
まずはCCLでdexador動くところまでですかね・・
CCLはObjCのインターフェース持っててnibも読めるので
ネイティブアプリのように振る舞えるかなと思いまして
今の問題が解決したら進めてみようと思ってます

毎日お手数おかけします先輩方
ほんとすいません
2021/03/19(金) 22:41:03.30ID:CjYMRRBz
>>884
これ試してっていってるのとちがうくないん?
usocket:socket-connectのほうでしょ
■ このスレッドは過去ログ倉庫に格納されています