はてなキーワード: CURLとは
第3回 さくらインターネットのスタンダードプランの環境にnpmをインストールする
第2回が頓挫したので、その原因を取り除くためにnpmとやらをインストールする。
参考文献を元に進める。
まず新しいバージョンのOpenSSLをコンパイルするらしい。あと新しいバージョンを使うにはPythonも必要らしい。
openssl version OpenSSL 1.1.1k-freebsd 24 Aug 2021 python --version Python 3.8.12
いきなりnpm(⇔Node.js?)のコンパイルが行けそうな気がしたので、とりあえずやってみる。
参考にしたサイトにはOpenSSL云々に関することが書いてあるが、その辺は全部問題ないことを祈って、関連するオプションを全部取っ払う。
curl -sSf https://nodejs.org/dist/v20.11.0/node-v20.11.0.tar.gz -O tar zxf node-v20.11.0.tar.gz cd node-v20.11.0 ./configure
とすると、
Node.js configure: Found Python 3.8.12... WARNING: C++ compiler (CXX=g++, 9.4.0) too old, need g++ 10.1.0 or clang++ 8.0.0 WARNING: warnings were emitted in the configure phase INFO: configure completed successfully
「successfully」なら問題ないよな?
続いてmakeだ。makeってなに?もちろんconfigureもよくわかってない。大規模なプログラムをコンパイルするときに必要なヤツというボンヤリとした認識だ。
当然コンパイルがなんなのかもよくわかってない。
nohup make install DESTDIR=/home/*****/local PREFIX=
ここから30分経っても応答が無いので飽きる。
はい、もう無理。飽きた! 次回があるとしたら「npmをインストールする②」である。
もっと新しい情報があったようだ。こっち見てやればよかった。
githubっていつのまに、ちょい古めのブラウザだとassetsの所がグルグル回ったまま、クリックしても開かないようになったんだ。
ちなみに、ちゃんと開けるブラウザを使ってだ、HTMLの検証できるサイトに行ってそのページのソースを貼り付けたらば、やっぱ古いブラウザと同じ結果になる。
ほんまにいらんことしよってからに!
ダウンロードするには、ターミナルでcurl -v https://api.github.com/repos/[目的の場所 公開してる人のアカウント名(owner)/プロジェクト(repo) ]/releases/assets
ってやるとずらっと表示される中に"browser_download_url" とあって、ブラウザでダウンロードできるURLが表示される。
releasesの右に/tag/が入ってるページの絞り込みはreleasesの横に入れればいいのかと思ったが、ちょっと分からなかった。
*ターミナルを使わなくてもcurl -v を省いて、"https://api.github.com/repos/"から"/releases"までをブラウザのURL欄に入れたら同じ内容が階層にまとまった状態で表示されるのに気づいた(三角をクリックしたら開く)
そしてグレーで「jsonを検索」って所にラベル名なんかを入れると絞り込んでくれる。
なんだこれ凄く便利じゃないか!
M1 pro Macにて。ここ参照:https://github.com/magnusviri/stable-diffusion/tree/apple-silicon-mps-support
git clone https://github.com/magnusviri/stable-diffusion.git
cd stable-diffusion
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
conda activate ldm
mkdir -p models/ldm/stable-diffusion-v1/
https://huggingface.co/CompVis/stable-diffusion-v-1-4-original から`sd-v1-4.ckpt`をダウンロードして、
ln ~/Downloads/sd-v1-4.ckpt models/ldm/stable-diffusion-v1/model.ckpt
以下のパッケージを追加した。https://twitter.com/hevohevo/status/1562364961481162754?s=20&t=KxNXNB9fz99fbosZ8TfnvQ を参考に。
conda install onnx
pip install invisible-watermark
それで実行
python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms
するとエラーになる。https://qiita.com/hevo2/items/e646148a05118074fecf に従い、下記ファイルの2511行目を書き換え。
vi /opt/homebrew/Caskroom//miniforge/base/envs/ldm/lib/python3.10/site-packages/torch/nn/functional.py
普段から俺様が使っているスクリプトあるから、公開してほめちぎってもらうぞー!
出力はただの文字列だから音声読み上げアプリでも何でも、突っ込んで遊んでくれ。
jq必須です。
ログインせず使うので当然アカウント固有の非表示設定とかは動きません。
あれなIDのコメントも全部所得することになるのでご注意ください。
まあそこらへんはsedでも使って気に入らないidの行を勝手に削除してくれ
hatebu_comment.sh
#!/bin/bash if [[ "$1" =~ ^http ]];then : # Success else echo "Error: 引数に指定したURLのブックマークのコメント一覧を取得するやーつ" echo "例: ./hatebu_comment.sh 'https://www3.nhk.or.jp/news/html/20200405/k10012369381000.html' | less" exit; fi if [[ "$1" =~ b.hatena.ne.jp/entry/s ]];then # はてブページのURLでも動作するように url="https://$(echo $1 | sed -e 's@.*/entry/s/@@')" else url=$1 fi if ! jq --version > /dev/null ;then echo "Error: jqがインストールされていません" exit; fi curl -s "https://b.hatena.ne.jp/entry/jsonlite/?url=$url" | jq '.bookmarks[] | if .comment != "" then ("「" + .user + "」 " + .comment) else empty end' | sed 's@^"@@g' | sed 's@"$@@g'
RStudioがPC内から気がついたら消滅していたので何回もやり直すのが面倒で書いた
コメントアウトをいじればFedoraやmacOSでも動くと思う
https://pastebin.com/HiPqLVq7 (6/4 shコマンドでも動くように修正 以前はbash hogehoge起動していたので動作確認していなかった)
エラーでここに貼れなかった
util-linux(rev) libxml2-utils(xmllint) gpg curl coreutils(sha256sum)とR関連
echo "$HTML" | xmllint --nowarning --xpath hogehoge --html - | hogehoge
こうしないとxmllintがエラーでhtlmなどをうまく読み取らない
sed 's/href="//g;s/"//g;s/\s/\n/g;s/^.?$//g;s/^\n//g'
href="hogehoge"の形で出てxmllint内で除去出来なかったのでsedで妥協
hrefが1回しか出ないのでひとまとめにできそうだが面倒なので分けた
この書き方なら複数回出ても除去できるはず
先頭の謎のスペースの除去が面倒だった
echo "$HASH" "$FIELNAME" | sha256sum --status -c ;echo $?
スペースが2つないと書式で怒れられてハッシュ値が合っていてもsha256sumが終了ステータス0で正常終了を返してくれない
VScodium
ShellCheck
https://open-vsx.org/vscode/item?itemName=timonwong.shellcheck
XPath Helper
https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl
zenn.devに書こうか迷ったがどちらの方が良かったのだろうか…
ダウンロードしたサーバーがやられてるならハッシュ値も改ざんするだろうgpgで確認しないと意味ないでしょとかsudoでやったらディレクトリがとか色々ガバあるから誰かいい感じに改良して
https://cran.rstudio.com/bin/linux/debian/
オープンソースcURLの作者、某大企業から「24時間以内にこの質問に答えるように」との無礼なメールを受け取る - Publickey について思ったことをつらつらと。
log4shell と呼ばれる脆弱性が 2021 年 12 月にあった。これは Java というプログラミング言語でプログラムする際に、動作のログを記録するのに非常によく使われるライブラリ log4j にとても危険な脆弱性があった。なにがそんなに危険かっていうと
マインクラフトのサーバが乗っ取られたとか被害も有名。詳細は Piyolog さんの Log4jの深刻な脆弱性CVE-2021-44228についてまとめてみた - piyolog あたりを参照。
そんなわけで即座に影響範囲、脆弱性のない新しいバージョンになっているか調べろ!って IT 関連企業はとてもバタバタしていた。
という背景の中、オープンソースのソフトウェアである cURL の作者にとても失礼な log4j の問題に関する質問メールが送られてきて、「サポート契約すれば即座に教えてあげますよ」ってかっこいい返しをして盛り上がっている。
cURL (https://github.com/curl/curl]) はオープンソース(以下 OSS)の通信ライブラリとコマンドラインツール。 Linux などのサーバ上からファイルをダウンロードしたりするのにとてもよくつかわれるライブラリ。
C言語で書かれている。
ライセンス は MIT を参考にした独自ライセンス https://curl.se/docs/copyright.htm]
OSS は基本的に無保証で提供される。そのことはライセンスに明記されている。
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
そんな OSS に対して、
「あなたがこのメールを受け取ったのは、■■があなたが開発した製品を採用しているためです。私たちはこのメールをあなたが受け取ってから24時間以内に、お読みいただいた上でご返答いただくよう要求します」
といった上から目線のメールを開発者に送るというのは、IT 企業として無知にもほどがあるといったところ。加えて log4shell 問題、名前のとおり log4j の脆弱性なので Java でかつ log4j を使ってなければ影響はないのに、C言語でかかれた cURL に問い合わせているので問題を全く理解していない。(Java の j が消えるので log4shell という命名はどうなんだというのは個人的にある。つーか Poodle とか Spectre とかファンシーな名前つけてあそんでんじゃねーとも思う。)
なお cURL はどうやら開発者の Daniel Stenberg 氏が wolfSSL というところを通じて商用サポートを提供しているらしい。 https://curl.se/support.html]
ということで、「サポート契約を結んでいただければ、喜んですべて速やかにお答えしますよ」 というのはネタでもなんでもなく、普通の対応。
そしてブログに書いてある2回目の返信で、David と名前を間違えられたのに対して、Fotune 500 の巨人ということで "Hi Goliath," と返しているのも最高にクールですね。
こういうフローが事前に規定されていて CVE とか問題が検知されると発動する。このときに担当が大丈夫です!って回答するときにエビデンス(証拠)を求められるのだけど、クソな情セキは自社の担当の言葉を信用せず、開発会社からの言質をとれ!って命令するので、くそメールがスパムされるという背景があったりする。(担当が無知だったりイケイケだと、とにかく下請けにやらせればいいというパターンももちろんある)
そして情セキも経営層に報告するのに必要で、経営が0リスク信者だと報告が大変なのはわかる。わかるがそれを説得するのが情セキの仕事やで。
加えて担当レベルになると大手は「そんなん下請けにやらせればいいだろ」ってマインドのところが多く、上から目線かつ丸投げすることが多いように思う。
もちろん担当者はピンキリだからこうとは限らないけど比較的多い印象。
ま、これ今回 Daniel Stenberg 氏が公表したからばずってるだけで、日本でもしょっちゅう行われているし、Hacker News みると海外でも一般的なムーブのようです。 LogJ4 Security Inquiry – Response Required | Hacker News
小さいところは
とかであんまり上から目線でこない感じはするけど、これはあくまで個人の資質なのでやべー人はやべーです。オラオラ系の中小とかやっぱいます。でもこんな細かいことはあんまり聞いてこない。(個人の感想です)
この手のメールになんでカチンとくるのかって言えば
ということで、皆ちゃんと保守・サポート契約して、契約範囲で質問しような!
そして金払ってても相手は人間なんで、お互い敬意をもって接しような!
Public Key でこの件にからめて記載されている奴について
https://www.itmedia.co.jp/news/articles/2201/11/news160.html]
ちな、これ詳しくないんだけど、OSS 作者が 「もうただ働きで支援をするつもりはない。これを機に、私に6桁ドルの年間契約書を送るか、プロジェクトを分岐させて他の人にやってもらうかしてほしい」 というのもよくわからないんだよなぁ。
火事で財産失ってむしゃくしゃしてやったのかなんなのか。人気 OSS になったのに全然金にならんぜ!ってのが辛いのはわかる。が、OSS のライセンス的に支援を義務としてやる必要はないので、そんな義務的になってる報告は無視してええんちゃうんと思ってしまう。今回みたいにサポートフィーよこせみたいなスキームが必要だったのかもしれない。
あと個人開発で、善意でこれ便利だろ?って公開しているものに対して、辛辣な言葉の心ないバグ報告やら改善要望は心には刺さるので辛いのはある。それで辞めてしまう人も居る。
ブコメでフリーライドって書いている人が居るけど、MIT ライセンスでだしてんだから OSS の理念である自由なソフトウェアという意味で、再配布、改変、利用は自由でいいんだよ。イヤなら MIT 以外のライセンスでだせばよい。古くは MySQL の Dual ライセンス、最近の Redis とか Mongo みたいに。
ただ、金欲しいとか大体 Donation 募集したりするとかやってると思うんだけど、そういうのもあったのかなかったのかがよくわからにぃ。ポートフォリオになるので、採用にはつかえるんじゃないのかね?
じゃなきゃ GitHub に Public でコード公開しないと思うんだけどな。いまいちピンとこないのであんまり言及しない。
https://www.publickey1.jp/blog/19/redismongodbkafkaaws.html]
で、商用ライセンスの問題。これ今回のくそムーブの問題じゃないのここに並べられるのに非常に違和感がある。なんか OSS と大企業の対立を煽るようなミスリードを誘っているように感じてしまう。
大手クラウドベンダは OSS のライセンスに則って利用・改変するのは問題がない。つーか儲かってるから金よこせっていうのはちょっと違うんじゃないかなと思う。
オリジナルを開発した会社がリスペクトされず、商業的に儲からないってのは、心情的、道義的、人気的にどうなの?クラウドベンダも金払ってあげれば良いんじゃないの?とは思うよ。(2社は協業したけど)
ただ、オープンソースで公開するということは次のような利点を求めてするこって、それがイヤならプロプラで良いわけさね。
Apache License 2.0 とかのライセンスの OSS として公表しているものの利用をフリーライドと表現するのも、それがなんか嫌儲で Evil ってのはちょっと判断できないかなぁ。
大手が自社でメンテできてしまう(できるようにする)というのは経営戦略であり、開発元がクローズにするってのも経営戦略。罵り合い合戦はちょっとなぁという感じ。
OSS の理念的に改修した分は元のソースにもっとフィードバックしろよってのはあるけど AGPL とかで出してないんだよなぁ。
この辺は賛否両論色々あるので気になったら調べてみて。
以上。ご査収ください。
[B! oss] オープンソースcURLの作者、某大企業から「24時間以内にこの質問に答えるように」との無礼なメールを受け取る
https://b.hatena.ne.jp/entry/s/www.publickey1.jp/blog/22/curl24.html
https://b.hatena.ne.jp/entry/4714515911211219074/comment/mohno
無関係な相手に筋違いのクレームつけてくるキ印って、けっこう少なくないのよ。
昔、俺がWebサイトを作ってやった企業というか個人商店レベルの相手、すごいヤツがいたよ。
ある日、電話をかけてくるなり最初から激高しており「お前の作ったホームページを印刷したら横線がかすれて印刷されない部分がある! プリンタが壊れた!! お前のせいだから今すぐに直しに来い!!!!!!!!!! kファfパエlrかldjfかjかrpブヒィイイイイイイイ!!!!!!!!!!!!!」
ってマジだよこれ。
いやそれインクがかすれてるだけだからヘッダをクリーニングしろ、と言っても馬耳東風。超絶太ってる馬鹿だったから豚耳東風かな。
まあとにかく何を言っても「お前のせいだ、直しに来い」の一点張りだったが、これで折れたら以後ずっと馬鹿につけこまれる。なので、「ですから、うちには関係ないので行きません」と突っぱねて最終的には電話を切った。
そいつは店の二代目だったので、先代の親父さん(ご高齢)に電話をかけて事の顛末を説明。親父さんはまともな人なので、パソコン知識は全くわからないがこちらの言い分が正しいことは分かってくれたらしく、謝ってくれた。
実行すると、各記事を
{
users:ブクマ数,
tags:[タグ]
}
の形式に変換し、500ブクマ以上でフィルタし、ブクマ数降順で返す。
#一行版
curl -s https://b.hatena.ne.jp/hotentry/it | pup --charset utf-8 'div.entrylist-contents-main json{}' | jq -r '[.[] | {title: (.. | select(.class? == "entrylist-contents-title") | .children[].title), url: (.. | select(.class? == "entrylist-contents-title")) | .children[].href, users: (.. | select(.class? == "entrylist-contents-users") | .children[].children[].text | tonumber), tags: ([.. | select(.class? == "entrylist-contents-tags") | .children[]?.children[]?.text])}] | unique | map(select(.users >= 500)) | sort_by(.users) | reverse'
#変数版
title='title: (.. | select(.class? == "entrylist-contents-title") | .children[].title)' users='users: (.. | select(.class? == "entrylist-contents-users") | .children[].children[].text | tonumber)' url='url: (.. | select(.class? == "entrylist-contents-title")) | .children[].href' tags='tags: ([.. | select(.class? == "entrylist-contents-tags") | .children[]?.children[]?.text])' target='https://b.hatena.ne.jp/' hotentry='hotentry/it' curl -s $target$hotentry | ¥ pup --charset utf-8 'div.entrylist-contents-main json{}' | ¥ jq -r "[.[] | {${title}, ${url}, ${users}, ${tags}}] | unique | map(select(.users >= 500)) | sort_by(.users) | reverse"
$ffparam = "" $inputs = "" $lists = Get-Clipboard Write-Output $lists foreach ($pms in $lists) { if($pms.Contains("curl")) { $inputs += $pms.Replace("curl","-i") } if($pms.Contains("user-agent")) { $ffparam += $pms.Replace(' -H "user-agent: ','-user_agent "') continue } if($pms.Contains(" -H")) { $ffparam += $pms.Replace(" -H","-headers") } } $ffparam += $inputs $ffparam = $ffparam.Replace("^","") $ffparam += "-c copy -movflags faststart -bsf:a aac_adtstoasc" Set-Clipboard $ffparam
この解説記事の通りにやったらDockerのインストールが完了した。
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# :OUTPUT:
# OK
sudo apt-key fingerprint 0EBFCD88
# :OUTPUT:
# pub rsa4096 2017-02-22 [SCEA]
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get install docker-ce docker-ce-cli containerd.io
# :OUTPUT: