はてなキーワード: curlとは
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format it
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase it
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Technologic Technologic
Technologic Technologic
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
__________________________
Touch It Scroll It Pose It Click It Cross It Crack It Twitch Update It
__________________________
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Technologic Technologic
Technologic Technologic
Technologic Technologic
Technologic Technologic
というわけでお漏らし文学をChatGPTに調べてもらった
Last time I paid 1€ to take a piss,
I walked into the Sanifair, looked around,
and just… left.
It was so disgusting I decided to go outside and search for a bush instead.
— Reddit / r/AskAGerman
「1ユーロ払ってトイレに入ったんだけど、あまりに汚すぎてそのまま出てきた。結局、外の藪を探すことにした。」
ドイツ人ですら「お金払って藪で用を足す方がマシ」と言ってしまう悲哀。
URL:れでぃっと r/AskAGerman
I used to squat when using public toilets.
Then one day, I slipped.
That day, something inside me died… and something outside me was never clean again.
— れでぃっと / r/AskEurope
でもある日、足が滑った。
その日、僕の中の何かが死んだ… そして僕の外側も、二度と綺麗にはならなかった。」
もう「しゃがむ」という選択肢すら許されない。
In Belgium, there’s an unwritten rule.
You hand the bar owner a euro,
he silently hands you the bathroom key.
you find a dark corner of the street instead.
— Blog post “The art of le pee in Belgium”
バーの店主に1ユーロ渡すと、無言でトイレの鍵を渡してくれる。
観光都市ブリュッセルでも、路上で立ち尽くす影が絶えない理由。
URL:saintfacetious.com
All cafés were closed, all public toilets locked.
I stumbled along the riverbank,
In the end, the Seine saw everything.
— れでぃっと / r/Paris
「深夜1時、セーヌ川沿い。
ワインと後悔で酔った体を引きずりながら歩き、
パリの夜は美しく、そして容赦ない。
観光客だけでなく、現地の人すらこうなることがある。
I was in Bilbao, desperate to pee before the match.
I ran into one of those self-cleaning toilets…
and then the cleaning cycle started
僕は全身びしょ濡れになって出てきた。」
水と泡まみれで出てきたマンチェスター・ユナイテッドファン。
In Amsterdam, we had these half-open urinals called ‘pee curls.’
They were meant to stop men from peeing in the canals.
Now they’re disappearing…
and the canals smell like history again.
「アムステルダムには、半分だけ壁のある露天トイレ『pee curl』があった。
でも今はそのpee curlも減り、
I have MS.
Since the public toilets closed,
Last month, I didn’t make it home in time.
I cried, then laughed, then stayed inside for a week.
— The Guardian 読者投稿
「私は多発性硬化症です。
先月、家に帰る前に間に合わなくて…
URL:The Guardian
まあまあだな、また探す
____
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format it
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase it
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Technologic Technologic
Technologic Technologic
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
__________________________
Touch It Scroll It Pose It Click It Cross It Crack It Twitch Update It
__________________________
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Technologic Technologic
Technologic Technologic
Technologic Technologic
Technologic Technologic
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format it
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase it
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Technologic Technologic
Technologic Technologic
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
__________________________
Touch It Scroll It Pose It Click It Cross It Crack It Twitch Update It
__________________________
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It
Charge It Point It Zoom It Press It Snap It Work It Quick Erase It
Write It Cut It Paste It Save It Load It Check It Quick Rewrite It
Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It
Lock It Fill It Curl It Find It View It Code It Jam Unlock It
Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It
Name It Read It Tune It Print It Scan It Send It Fax Rename It
Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It
Technologic Technologic
Technologic Technologic
Technologic Technologic
Technologic Technologic
身体を壊して先日ちょっと入院していたのだが、病院内ではWiFiが提供されていたので、消灯時間外の日常生活アクセスはそれのお世話になっていた。消灯時間は夜9時から朝6時までだ。
事前に「入院生活にそぐわないサイトには接続できません」という告知が為されていたので、覚悟の上で使ったのだが、Webアプリ開発者としての業務に必要なサイトとかも禁止されていたので、ここにメモしておく。
通信が禁止されていると思われるサイトに接続すると、ブラウザ側ではタイムアウトのエラーとして表示される。もちろん、それなりに待たされる。ブラウザの開発ツールの様子を見るに、おそらく TCP handshake に失敗していそう。
正常に接続できるサイトの様子を見た範囲では、HTTPS接続の証明書改ざんは行われていないようだったことから、HTTPSの暗号を解読してどうのこうの、という処理をしていない可能性が非常に高い。つまり、通信制限は接続先ドメインまたはIPアドレスによる判断で実施している可能性が高い。
また、中間的なサイトも存在する。通常2秒以内で表示できるようなサイトの表示に10秒(体感)かかるところがある。稀にタイムアウトする。
謎なのは、通信が禁止されていそうなサイトでも「待たされた挙句、つながることが非常に稀にある」ということと、curl等ではすんなりと接続できることである。
DNS設定と一緒にproxy設定が落ちてきているのであればこの挙動も理解できるのだが、手元のOSのネットワーク設定にはproxy情報が何も出てこない。ちょっとよくわからない。
もしもDNSに対するAレコード(AAAAも?)問い合わせに対してニセモノを返すという仕組みで通信制限しているのだとしたら、「非常に稀につながる」挙動にはならないはずなので、透過型proxyによって頑張っているのではないかと想像するところである。
なお、消灯時間中は全てのリクエストがタイムアウトになる。消灯時間開始直前に HTTP Request を送出して、応答が来る頃には消灯時間に入っている場合にはどういう挙動をするのか、というテストをやる暇は無かった。スマソ
業務で使う全部のサイトを検証できた訳じゃなくてゴメンね。結局のところ仕事は携帯回線でやっちゃったから。
| ドメイン | サイトの概要 | 接続の様子 |
|---|---|---|
| hatelabo.jp | はてなの実験的サービス置き場 | すんなり |
| anond.hatelabo.jp | 増田 | 禁止 |
| ??????.hatenablog.jp | はてなブログのドメインの一つ、そして増田の中の人のブログ | 遅い |
| console.aws.amazon.com | AWSの管理コンソール | 禁止 |
| www.amazon.co.jp | ショッピング | めちゃくちゃ遅いけどつながる |
| www.amazon.com | ショッピング | めちゃくちゃ遅いけどつながる |
| ja.wikipedia.org | 百科事典 | 禁止 |
| www.php.net | プログラミング言語PHP | 禁止 |
| www.typescriptlang.org | プログラミング言語TypeScript | すんなり |
| stackoverflow.com | プログラミング質問サイト(英語) | すんなり |
| qiita.com | プログラミング質問サイト(日本語) | 禁止 |
| packagist.org | PHPのパッケージ管理 | 遅い(通常通り?w) |
| www.npmjs.com | JSのパッケージ管理 | すんなり |
なお、自分のドメインのサブドメインに禁止ドメインを入れたようなもの、例えば anond.hatelabo.jp.example.com のようなドメインに対する接続可否は検証していない(面倒だったw)
サーバ目線で見える client IP をwhois等で調べると、某F社さんだった。AWS管理コンソールへの接続を禁止するあたり「あっ…!」と思ったり…w
第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