- 1 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 05:22:16.82 .net]
- シェルスクリプトの総合スレです。
□お約束 ・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。 bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。 FreeBSDユーザは/bin/shの正体がashなので注意。 ・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています 最新の仕様はこちらへ pubs.opengroup.org/onlinepubs/9699919799/ (左上の「Shell & Utilities」 から参照することができます。) ・v7 shに一番近くて、現役(?)のshは、OpenSolaris由来のheirloom sh。 src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/ heirloom.sourceforge.net/sh.html ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) ・シェルスクリプトのことをシェルってゆうな □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも awkまたはperlの方が適した
- 291 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/03/31(水) 10:37:33.90 .net]
- シェルなんだから外部コマンドは呼べるし、テキストも扱えるしそんなに変わらんのでは
そんなに変らんということはすなわち、わざわざunix環境で使うモチベとしては弱いと思うが ドザーが流行りのwsl使うのには便利なんじゃね
- 292 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/03/31(水) 10:41:33.46 .net]
- 昔ながらのwinコマンドは大体外部コマンドだけど、pwshはほとんど組み込みコマンドなのがなあ
slsとか分けて提供してくれればbetter grep/findとして個人的には使いたいんだが
- 293 名前:名無しさん@お腹いっぱい。 [2021/03/31(水) 22:49:44.43 .net]
- >>286
Windowsのコマンドはスクリプトから使うことを考慮されてない物が多い 例えば、copyコマンドは、copyすると 1 個のファイルをコピーしました。 とか人間のためのメッセージが出てくるからテキスト処理に向かない バッチファイルは人間が操作するのと同じことただやるだけ (出力を加工しない)なのでバッチファイルから使う分にはそれでもいいが シェルスクリプトのように出力と入力をつないで処理することには向いていない だからpwshはWindowsのコマンドを呼び出さない 一方pwshで使うAPIは1行1データのテキストにはなってないし 普段使ってる外部コマンドではない どちらかと言えばPythonなどの関数に近い Unix/Linuxの外部コマンド・・・1行1データのAPIインターフェースでCLIからも参照する pwsh、Python、多くの言語・・・引数と戻り値のAPIインターフェースで言語内から参照しない APIのインターフェースが大きく違っていて Unix/Linuxの外部コマンドは改行の扱いが難しいなどの制限があるが その制限の範囲内ではスクリプトからも人間からも使いやすくて 他の言語には置き換えることが出来ないんだよ
- 294 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/01(木) 00:40:09.95 .net]
- Windowsでシェルスクリプト動かそうとすると、パスの\のエスケープで気が狂いそうになるから
その辺捨てたパワーシェルの割り切りは、それはそれで理解できるけどなー
- 295 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/01(木) 01:14:08.37 .net]
- >>289
Windowsでシェルスクリプトって何を使ってるの? パスの\のエスケープなんかしたことないよ pwshはスクリプト言語としては悪くないと思うよ ただPythonなんかと同じようなプログラミング用の言語ということ Pythonにも当てはまるけどプログラミング用の言語は シェルスクリプトとはスタイルが異なる。 シェルスクリプトは端末操作に特化した言語だから プログラミングはしにくいが端末操作は得意 まあPowerShellでも普段からコマンドレット使って端末操作してます。 pwshでもコマンドレットをメインで使いますって人なら シェルスクリプトと同じような感じに見えるかもしれないけど そんな人いるのかな?
- 296 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/01(木) 03:02:34.14 .net]
- >>290
Windowsはダブルクォートの直前にバックスラッシュがある場合のみエスケープとして扱うということに一応なってる。 しかし実はWindowsではダブルクォートも引数の区切りも解釈するのはアプリケーションの仕事なので実は上記のように解釈される保証はない。
- 297 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/01(木) 06:04:39.51 .net]
- >>291
アプリケーションの仕事って言うなら、 パワーシェルから呼び出したときも同じじゃん・・・
- 298 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/14(水) 16:39:38.83 .net]
- int main( int argc,char **argv){ printf("%s\n",argv[1]); return 0;}
みたいなプログラムを書いて a.exe "abc xyz" みたいに実行しても処理系によって出力が "abc xyz" だったり abc xyz だったり "abc だったり…そんな時代もあったね。
- 299 名前:名無しさん@お腹いっぱい。 [2021/04/17(土) 04:15:34.67 ID:1C2XvsMVm]
- 第一生命HD、副業解禁 約1万5000人対象
https://www.nikkei.com/article/DGXZQODF226QU0S1A120C2000000/ 第一生命HD、副業解禁 1万5000人対象―大手生保初 https://www.jiji.com/jc/article?k=2021020301353&g=eco IHI、国内8000人の副業解禁 重厚長大企業も転機 https://www.nikkei.com/article/DGXZQODZ171SS0X10C21A1000000 IHI、社外兼業を解禁 社内副業もルール化 https://www.jiji.com/jc/article?k=2021012100772&g=eco 50代に時給5000円の求人も。都会の会社員、“地方企業でリモート副業”が人気 https://nikkan-spa.jp/1711157 「週休3日制」導入は拡大するのか? 働き方が多様化する社会で生き抜く力 https://news.yahoo.co.jp/articles/2887cf226cf6f608ff511ee9e349fd6518d4311f スカイマーク、週休3日制へ 来春にも事務職対象 https://www.chunichi.co.jp/article/176961 週休3日制で何が変わる?休みが増えるメリット・デメリット https://career.joi.media/tips/2020/11/06/24138/ 週休3日制に賛成?反対? 東芝の模索 https://www.nhk.or.jp/ohayou/biz/20200701/index.html
- 300 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/20(火) 16:39:52.31 .net]
- SSDがいっぱいになってきたのでfind
- 301 名前:ナ各binを周りfileが吐いたリストをunstripped(だったか?)でgrep&stripするスクリプト書いた
半分くらいになるのなこれ… 今の所不具合は出てないからヨシ おすすめ [] - [ここ壊れてます]
- 302 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/20(火) 16:48:14.77 .net]
- >>290
ubuntuだけどbashからpwsh -cで便利なツールとして使うのがベスト 多少最適化されてそうなapt提供のプレコンパイル版でも60MiBあるから配布時依存に加えるのは厳しいのが悩み 私的ハックにはすごく重宝
- 303 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/20(火) 16:53:51.68 .net]
- >>289
`をエスケープに選んだのは英断だと思う m4と協調させようと思うと壊れるけど、まあm4のクオートは簡単に変えれるし満足
- 304 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/20(火) 16:55:18.39 .net]
- >>295
golang製のバイナリってstripすると壊れるんじゃなかったっけ
- 305 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/20(火) 17:07:12.66 .net]
- >>298
マジかー!でも何がgoとか把握してない… 内蔵HDDの方はテラ余裕なのでそっくりコピーしてある、万が一あってもそっちからブート&コマンド全て使えるから問題起きてからでもいいかな…
- 306 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/20(火) 18:04:12.33 .net]
- 学習コスト高そうだから何でも賢くキャストしてくれるキャスト器として使ってるわ
[xml]'<foo>...'くらいのカジュアルユース 年だからjqとか付いてけないしjsonもキャストして.付けてるタブ補完連打でアクセス ただの型コレクションとして気兼ねなく使えばいい
- 307 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/21(水) 20:07:40.11 .net]
- >>300
歳のせいにするな。お前の能力の問題だ。
- 308 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/21(水) 22:14:14.03 .net]
- 噂のpwsh試してみたけど、とりあえずコマンドライン作業中の電卓代わりにはpythonよりはいいな
子シェルだからパス通ってて、普通に演算子と数学関数が下拵え無しで使えるってだけだけど 64KBと打つと65536を返してくるのは遊び心かな? まあスレ違いだねごめん
- 309 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/21(水) 22:37:37.09 .net]
- 電卓代わりでbc/dc思い出して遊ぼうと思ったら今時のlinuxにはdcはいってないのね
頭の体操にいいのに残念
- 310 名前:名無しさん@お腹いっぱい。 [2021/04/22(木) 09:18:28.19 .net]
- 普通パッケージぐらいは用意されていて入れれば入るんじゃない?
deb系なら apt-get install dc で使える
- 311 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/22(木) 18:02:08.57 .net]
- LLのREPL使えばええやん
- 312 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/25(日) 11:29:37.47 .net]
- for i in "予定1" "予定2" "予定3"
do [ $i = "予定1" ] && echo "予定1"; sleep 3 [ $i = "予定2" ] && echo "予定2"; sleep 3 [ $i = "予定3" ] && echo "予定3"; sleep 3 done
- 313 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/01(土) 09:40:38.84 .net]
- 今日のIDすごいwww
- 314 名前:名無しさん@お腹いっぱい。 [2021/05/02(日) 22:37:50.92 .net]
- しらんがなー
- 315 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/03(月) 22:39:37.02 .net]
- シェルスクリプトはperl にとって代わるCGIの記述言語って本当すか?
- 316 名前:名無しさん@お腹いっぱい。 [2021/05/04(火) 00:29:14.02 .net]
- >>309
そもそもCGIはすでに廃れてるって知ってる?
- 317 名前:名無しさん@お腹いっぱい。 [2021/05/04(火) 00:30:10.82 .net]
- 今どき本格的なサーバー側アプリをCGIで作るなんてないわけで
まあ簡単なツールぐらいならやるかもしれんけどさ
- 318 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/04(火) 01:58:13.24 .net]
- >>311
知らんのだがCGI以外でどう処理してるの?ジャバスクリプト?
- 319 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/04(火) 07:10:50.01 .net]
- >>312
WebアプリケーションフレームワークがWebサーバ機能を持っていて、フロントエンドのWebサーバからリバースプロキシして使うのが多いかな。 だからWebサーバとアプリケーションの接続インターフェイスと言う感じじゃ無いんよ。
- 320 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/04(火) 17:00:00.58 .net]
- えっ、そうなの?
perlじゃ無くCGIがオワコンで、マトモwebサービス作成にはもう使われ無いのね。
- 321 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/06(木) 02:07:50.66 .net]
- perl自体がオワコンかどうかの話は別として歴史の話をすると
初期はウェブサーバー+perlスクリプト、つまりCGIでウェブシステムが作られていた もう2000年とかその頃の話よ。とほほのなんとかとかKentなんとかとかが幅を利かせていた 当時のプロ(ホームページ制作会社)でもそういったCGIを使っていた時代 その後はPHPが登場したが、これはウェブサーバーにPHPをモジュールとして組み込む mod_phpが利用されていた。アクセスのたびにperlスクリプトを呼び出さないから速い 同じようにmod_perlというのもあった。 この頃のプロといえば自社でサーバーを保守管理するウェブサービス会社だったかな その後から現在はアプリ自身でウェブサーバーとして起動するようになった RailsとかPythonとかはそれが主。もちろんphpでもperlでもこの仕組が使える クラウドの時代のプロのシステムはほぼこれ。もちろん今もホームページ制作会社はあるけど ウェブサービス作ってる会社ってもうこんな感じじゃないでしょ? アプリにウェブサーバーが内蔵されてると言っても、それはアプリに最適化されていて 静的コンテンツを配信するのには適していないから >>313のいうように前段に普通のウェブサーバー(nginxやapache)を配置して アプリ用のURLだけリバースプロキシでWebフレームワークにわたす仕組み シェルスクリプトは、ブラウザにモジュールとして組み込んだり シェルスクリプト自身をウェブサーバーにすることはできないからCGIオンリーで使うしか無い と思ったらmod_bashなんてあるのなw まあアクセス数が少ない個人用のシステムとか、特定のサーバーからアクセスしない 死活監視用のエンドポイント程度になら使っても良いんじゃね?
- 322 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/06(木) 11:37:17.18 .net]
- ネタかなんかなの?このくだり
- 323 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/07(金) 04:02:34.96 .net]
- いや、マジレスだろ。
- 324 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/07(金) 09:52:15.00 .net]
- 時系列はおかしいけども、仕組みとしては大体合ってるし、いいんじゃない?
- 325 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/08(土) 11:58:10.94 .net]
- 間違ってると言うやつほど
どこが間違っているかを言わない
- 326 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/08(土) 19:01:34.99 .net]
- しかしこれは CGI が使われなくなったと言われれば違和感はある Web サーバーがリバースプロキシに変化してアプリが Web サーバーを持ったに過ぎないのだろう
CGI とは Web サーバーから実行ファイルを走らせる技術だよね違うのかな
- 327 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/09(日) 02:29:54.79 .net]
- >>320
アプリケーションにHTTPヘッダを環境変数で渡す方法などを定めたものがCGI、だからInterfaceなの。 この方法で渡していないならそれはCGIではない。
- 328 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/09(日) 08:40:11.68 .net]
- もともとリバースプロキシの機能はウェブサーバーにあったのだから
どちらかと言えばウェブサーバーをリバースプロキシだけに使うように 使い方が変化してって言う方が適切だね ちなみに開発時だとウェブサーバーはあまり使わない ウェブサーバーとしての機能や性能は必要ないので アプリ内臓の簡易ウェブサーバー機能で十分だから
- 329 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/09(日) 08:52:57.10 .net]
- >>320
> CGI とは Web サーバーから実行ファイルを走らせる技術だよね違うのかな 一番の違いはアプリが常駐しているかどうか CGIはアプリが常駐して無くてアクセスのたびにコマンドを実行する このコマンドを実行するっていうのはかなり重い処理なのでパフォーマンスが出ない 特にシェルスクリプトなんか外部のコマンドを組み合わせて処理するものだから 1アクセスでシェルスクリプト本体の実行の他に sedコマンド+grepコマンド+awkコマンド+jqコマンド・・・みたいになるから Perlで作るよりも確実にパフォーマンスが悪くなる。Perlよりも悪い選択 それに対してCGIじゃない仕組みはサーバーマシン起動時に1回コマンドを起動するだけ もし誰かに、これからのCGIはシェルスクリプト!シェルスクリプトでもこれだけの速度が出る!って 郵便番号から住所を検索するデモをみせてシェルスクリプトでシステム開発させようと洗脳する組織団体にそそのかされていたら それアクセスが多い時にパフォーマンス出ますか?他の言語とベンチマークして比較していいですか?って聞いたら良いよ 郵便番号のデータなんてたかだか十数MBしかないしSSD使ってりゃ0.01秒未満で読み込めるのは当たり前 そんな低負荷なデモを数回見せた程度でパフォーマンスの検証なんてできやしない
- 330 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/09(日) 11:14:52.20 .net]
- >>323
fastcgiってcgiと呼んじゃダメなん?
- 331 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/09(日) 11:52:38.01 .net]
- >>324
FastCGIはCGIの環境変数や標準入出力の内容をカプセル化してsocketで通信するように定められているから無関係ではないんだけど、 環境変数とか標準入出力を使っているわけじゃないからやはりCGIでは無いと思うよ。
- 332 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/09(日) 14:19:11.63 .net]
- そういやFastCGIなんて技術もあったな
あれも「プロセス起動が遅い」という問題を プロセス終了をさせずにプロセスを使い回すことで 解決する技術なんだよな シェルスクリプトでそれがやれるかっつーと無理だろうな いやwikiによればhttps://ja.wikipedia.org/wiki/FastCGI 名前付きパイプもサポートしてるようだからから不可能じゃないのか? でもまあシェルスクリプトから呼び出すコマンドは どちらにしろプロセス起動になるわけで シェルスクリプトで全部実装するならまだしも 普通のシェルスクリプトではあまり効果がないだろうな
- 333 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/09(日) 14:26:02.10 .net]
- 英語だし読む気はないけどなんかそういう技術があるみたいだw
FastCGI shell script https://stackoverflow.com/questions/4685045/fastcgi-shell-script ここの Look at "Writing agents in sh: conversing through a pipe" まあ一般的にシェルスクリプトでFastCGIは無理(無意味)やでって書かれてるようだね
- 334 名前:名無しさん@お腹いっぱい。 [2021/05/09(日) 14:40:26.25 .net]
- んでさ>>309に聞きたいんだけど
> シェルスクリプトはperl にとって代わるCGIの記述言語って本当すか? ってどういう流れで誰に聞いたの? 二十年ぐらい前にコンピューターにちょっと詳しいだけの高校生や大学生の 会話で出てきた話だってのならわかるけどさ 今のウェブ開発ではCGIという単語自体でてこない
- 335 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/14(金) 08:14:28.21 .net]
- >>328
年寄りと話すと、API叩くことをCGI呼び出すと表現するよ
- 336 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/17(月) 12:58:38.74 .net]
- アクセス数が少なければ今でもcgiで十分。
- 337 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/17(月) 19:57:40.30 .net]
- アクセス数少ないのが前提w
- 338 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/17(月) 21:14:15.17 .net]
- 知り合いだけのサイトもありますし
- 339 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/18(火) 00:26:19.32 .net]
- >>332
仕事では使い物にならないって意味だよ
- 340 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/18(火) 00:27:32.81 .net]
- レガシーシステムの改修でもないかぎりCGIなんて出てこないし
新規でCGIとかいい出したら、そんな会社は切り捨てた方が良い
- 341 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/18(火) 09:35:06.09 .net]
- PHP fpm ってよく使われてるように思うけど技術的には Fast CGI なんでしょ?
- 342 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/18(火) 12:12:30.96 .net]
- cgiスレになって無いか?
- 343 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/18(火) 14:51:57.87 .net]
- 0埋めした2桁数字文字をdeclare -iの変数に入れると時々エラーになるので
ぐぐったら0埋め
- 344 名前:数字は8進数扱いって、何か面倒だなぁ... []
- [ここ壊れてます]
- 345 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/18(火) 16:12:30.34 .net]
- 頭0は8進数ってC言語とか昔から使われてるけど
最近の言語は頭0を8進数とみなさないように変わってきてる気がするね 2桁とわかってるならdeclare -i i="${var#0}"でいけるよ そうでない場合はdeclare -i i="10#$var"でいけるかな bash以外だとダメかもしれんけど
- 346 名前:名無しさん@お腹いっぱい。 [2021/05/19(水) 02:39:42.52 .net]
- ありがとうございます。
expr でどうにか凌ぎました。
- 347 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/19(水) 09:22:05.13 .net]
- exprは遅いぞ
- 348 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/19(水) 09:42:12.88 .net]
- 遅いけど、どんな環境でも
- 349 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/19(水) 10:08:35.53 .net]
- だからexprに一切メリットないって
- 350 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/19(水) 18:39:51.53 .net]
- 計算するときにコンソールで expr 以外に何か良い方法ありますか
- 351 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/19(水) 18:40:31.58 .net]
- $((1+2)、bc、dc
なんでもあるやろ
- 352 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/19(水) 22:49:05.88 .net]
- awkで計算しろ
- 353 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/20(木) 08:04:37.20 .net]
- >>328
シェルスクリプトでCGIとかきくとユニケージを思い出すな あ、脱ケージだっけwww あれほど酷い開発手法はないと思うね
- 354 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/20(木) 09:04:51.56 .net]
- >>346
いや、あれオモロいで。 ワンライナー繋げてwebアプリ。 小規模社内オフィス用に最適w
- 355 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/20(木) 09:10:53.80 .net]
- 誰かPOSIX原理主義者とユニケージの関係教えてくれ
- 356 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/20(木) 10:27:21.13 .net]
- どちらも秘密主義だからな。俺も少し興味があるが
非公開の独自技術には興味なくて裏で糸を引いているやつらに興味がある wikipediaを見る限りUSP研究所と金沢大学が手を組んでるっぽい USP研究所がユニケージという開発手法で怪しげなビジネスをしていて それにコネかなんかで金沢大学が手を貸して箔をつけてる感じ もしくは金沢大学関係者が作ったのがUSP研究所なのかもな POSIX原理主義者はUSP研究所もしくは金沢大学の関係者だと思われる 構成員の中の幹部クラスで多分3人ぐらいしかいない ただ引っかかるのはユニケージとPOSIX原理主義が矛盾しているという点 POSIX原理主義はPOSIXのコマンドだけを使うと言ってるがユニケージは独自コマンドを押し付けている ユニケージ=シェルスクリプト主義でそこから分岐したのが原理主義なのかもしれないな
- 357 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/20(木) 10:30:31.60 .net]
- >>347
ネタとしてのオモロイだなw 東京ハンズで大規模対応でクラウドに移行して それに対応できなくなって今では闇とか負債と言われてるんだっけな https://www.hands-lab.com/tech/t5600/ ここにはBashのフレームワークってかいてあるな BashってことはやっぱりPOSIX原理主義とも違うな
- 358 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/20(木) 11:00:28.58 .net]
- >>350
完全菜食と牛乳、卵は許すのような違いか。 ユニケージにベンダーロックインされて地獄を見るw 大規模化の可能性のある場合は、このネタシステムを使ってはいけないな。
- 359 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/20(木) 11:19:43.21 .net]
- POSIX原理主義者「シェルスクリプトは遅くない!なぜなら郵便番号から住所を検索なんで一瞬で探せる!」
※CSVファイルは解凍した状態でたったの12MBです。 どんだけ小規模低負荷前提で吠えてるのかとw
- 360 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/20(木) 16:03:03.24 .net]
- sql文を組み立てるシェルスクリプトを書きます
- 361 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/21(金) 21:36:49.34 .net]
- シェルスクリプトは連想配列が使えるから
原理的には高速 オーバーヘッドがない分 他の言語より早い場合が多いと思う 保守しにくいけど
- 362 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/21(金) 21:43:40.33 .net]
- オーバーヘッドって何のことだ?
- 363 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/21(金) 22:08:05.49 .net]
- ファイルサイズに依存するオーバーヘッドはメモリ上に載せる部分じゃろ?
全部載せてしまえば定数時間のはずだけど、上限とかなかったっけ 載せないで逐次処理なら固定長レコード上に添字でジャンプのデータベースには勝てない 載せても多分勝てないけど
- 364 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/21(金) 22:16:12.19 .net]
- 英辞郎くらいなら適当に整形してgrepで引いてるな、5秒くらいかかるが…
毎回読み込まず、&で起動して配列抱えたままsleep、named pipeをポーリングてもらうか
- 365 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/21(金) 22:31:20.56 .net]
- 前から舐めるから時間かかってるだけだな、見出し語辞書引きなら既にソートされてるので人力二分探索が楽か
イニシャルでファイルを8つくらいに分け、引数見て探すファイルを割り振るだけで十分一秒切れる
- 366 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/21(金) 23:18:21.57 .net]
- >>354 >>356
問題はメモリ(連想配列)に載せた後 1件のデータを引いたら、そのまま終了してメモリを破棄するしかない つまり1件検索する毎に全データを連想配列に読み込むw
- 367 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/21(金) 23:19:33.97 .net]
- >>358
普通にSQLiteでも使ったほうが良いのでは?w
- 368 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/21(金) 23:33:05.93 .net]
- >>354
> シェルスクリプトは連想配列が使えるから原理的には高速 モダンな言語で連想配列使えない言語ってそんなにないと思うが
- 369 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 00:00:45.90 .net]
- POSIX準拠だと連想配列ないけどねw
eval使えばそれっぽいことはできるけど
- 370 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 00:17:17.67 .net]
- >>357
一つのプログラムを常駐させ、もう一つのプログラムから問い合わせるってこと? それってシェルスクリプトだけで実現できるの?
- 371 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 02:03:30.66 .net]
- >>360
普段はdico(d)とかdict(d)使ってるよ、この用途には特化してる分sqlite3なんかより遥かに高速で優れてる ただ、自前の辞書に索引付けてdictのdbに変換…ってのは面倒なんだよ 英和の出来合いdbってdict.orgとかでも提供されてないしな テキスト形式の単一辞書(~100MB)をgrep、数秒のラグなら十分許容できるだろう 取り敢えず事足りればいいんだよって思想です
- 372 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 02:08:46.46 .net]
- >>363
デーモンなんかの実装は大体そうでしょ mkfifoでファイルのように読み書きできるパイプ作れるでしょ? 無限whileループの中で1秒程度sleep、パイプに書き込まれてるかreadでチェック(所謂原始的なポーリング)
- 373 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 02:29:18.62 .net]
- 追伸>>365
プロセスの関係について答えてなかった クライエントがコマンドライン引数を単にnamed pipeへ書き込むだけのシェルスクリプトでいいです というか必須でないです ぶっちゃけやることはecho query >fifo それを$eiji queryと書けると分かりやすいというだけですね
- 374 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 02:36:55.49 .net]
- 老婆心かもしれないけど、常駐シェルスクリプトなんて何ら特別なものでないよ
常駐しないシェルスクリプト=exitの記述が存在している、あるいはeofに達するもの 常駐できるシェルスクリプト=signalやらで殺さなければexit/eofに達しないモノです
- 375 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 02:44:59.50 .net]
- shを常用するやつは居るが
流石にed常用するやつは居らんな
- 376 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 02:59:57.65 .net]
- edは生の改行文字食わせる必要あるし、sedのように;で区切れないから、コマンドラインから使いにくい…
printf %s\\n cmd1 cmd2 ...をeasyedとか名付けておけば、easyed cmd1 cmd2 ...で使いやすくなるね ただ、sedやawkでカウンタ設定して何行後の処理を指定するような処理を書いている事に気づいたら、そういう処理はedの領分 前後の相対アドレスを+nのように簡潔に指定
- 377 名前:ナきる
あと、diffがedのコードを吐けるというのもあって、それをテンプレにして弄るとバッチ的な処理はより早く書けると思う [] - [ここ壊れてます]
- 378 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 05:16:06.47 .net]
- >>366
問題はデーモン側じゃないよ。 起動するのも、named pipeに書き込むのもそれはできる 問題は、その後どうやって情報を受け取るのか?って話
- 379 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 05:16:37.76 .net]
- × 起動するのも
○ 常駐するのも
- 380 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 05:19:29.71 .net]
- もっと具体的に言えば、POSIX準拠だと
シェルスクリプトは双方向パイプを使えない
- 381 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 06:08:57.28 .net]
- そこは似非精進の生臭坊主で行こう
- 382 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 06:15:51.15 .net]
- >>358
> イニシャルでファイルを8つくらいに分け、引数見て探すファイルを割り振るだけで十分一秒切れる 前方一致検索ならそれでもいいと思うけど、中間一致や全文検索だと結局すべてのファイルをgrepしないといけない SQLiteなら全文検索もあるようだ ytyaru.hatena(ドット)com/entry/2017/07/19/000000 >>364 > ただ、自前の辞書に索引付けてdictのdbに変換…ってのは面倒なんだよ インデックスつけるのが面倒なんでしょ? SQLiteならテーブル作ってデータを入れていくだけだよ
- 383 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 06:20:59.68 .net]
- >>374
原理主義者周辺にはNoSQLってこだわりがある。
- 384 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 07:32:30.98 .net]
- 原理主義者はNoSQLに何を使ってんの?
- 385 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 07:33:00.54 .net]
- MongoDBとか?
- 386 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 07:58:28.04 .net]
- 使えるならnamed pipeが行儀良いと思うけど、ポーリングさせるならただのファイルでも環境変数でも何でもいいんでね
あんまりSSDへ頻繁に書き込みたくないなら環境変数か 個人コマンドラインツールで一秒で返ってくれば問題ないという要件なら、ファイル分割で必要十分だろ メモリも今時100MBくらい一時占めるのは有りだとしても、常駐させるとなるとチリツモ
- 387 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 08:03:33.44 .net]
- >>378
いや、ファイルや環境変数を使うというのはどうでも良くて それらをどう使って実現するのか?って話だよ。 あなた、自動運転を実現するにはどうしたら良いか?って言う話に AIを使えばできるんです。みたいなことしか言ってないよw
- 388 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 08:04:29.68 .net]
- 定期的に読みに行けばいいだけじゃないの?
- 389 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 08:05:46.31 .net]
- > 個人コマンドラインツールで一秒で返ってくれば問題ないという要件なら
個人用途であれば、その程度でも構わないってことには反論はしないけどね C10K問題(クライアント1万台問題)が発生するような場合には、それじゃ使い物にならないけど
- 390 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 08:08:59.98 .net]
- >>380
もしかして 1. コマンド実行 2. 特定のディレクトリにファイルを作る 3. デーモンが1秒おきにそのディレクトリを監視している 4. デーモンはファイルを見つけたら処理をして新しく結果ファイルを作る 5. 1のコマンドは結果ファイルができるまで待ってて見つけたらその内容を表示する って話?
- 391 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/22(土) 08:10:30.45 .net]
- この方法だと環境変数は無理っぽいな
|

|