忍者ブログ
  • 2024.12«
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • » 2025.02
mkfifoを使わずに、プログラムの循環パイプ(yourPG | interpreter | yourPG)サンドウィッチ
mkfifoを使うと、重複して使えないので、名前なしパイプに名前を付けてみた。

ソース

■使い方 fifoの使い道と同じことがパイプファイルなしにできる。
$ ./a.out
$ $PIPEIN | bash | tee /dev/stderr | python ./test.py | tee /dev/stderr | $PIPEOUT

プロセス内で作成したパイプ処理を環境変数に閉じ込めて、bash呼び出しは重複して呼び出せるので良いかも。

拍手[1回]

PR
【2022/08/15 18:59 】 | C/C++ | 有り難いご意見(0)
MovableType To Yaml のsedスクリプト作ってみた。
引越し検討がてら、MovableType To Yaml のsedスクリプト作ってみた。
MovableTypeフォーマット
このフォーマットsedで置換できますか?

ソース

いい感じにyamlになって使い勝手が良いかも?




Qiitaはエクスポート標準で対応してないし、インポートもできないのか。。。
引越し辞めるかw

拍手[1回]

【2022/08/15 18:48 】 | sed | 有り難いご意見(0)
mkfifoの使い道
mkfifoを使うと標準出力と標準入力を用いてインタプリタのプログラムを組むことが容易になる。

pythonプログラム(subprocessを用いていない)
import re
def send(s):
    RET = "@@RETURN VALUE@@"
    print(s+";echo {} $?".format(RET))
    outputs = []
    while True:
        output = input()
        if re.search("^{} ".format(RET), output):
            m = re.match("^{} (.*)".format(RET), output)
            return (int(m.groups()[0]), outputs)
        outputs.append(output)

import sys
print(send("ping www.google.co.jp -c 4"), file=sys.stderr)
print(send("ls ----"), file=sys.stderr)
subprocessなしでシェルをキック
$ mkfifo net
$ bash < net 2>&1 | tee /dev/stderr | python ls.py | tee net
ping www.google.co.jp -c 4;echo @@RETURN VALUE@@ $?
PING www.google.co.jp (142.250.206.195) 56(84) bytes of data.
64 bytes from kix07s07-in-f3.1e100.net (142.250.206.195): icmp_seq=1 ttl=56 time=14.8 ms
64 bytes from kix07s07-in-f3.1e100.net (142.250.206.195): icmp_seq=2 ttl=56 time=16.6 ms
64 bytes from kix07s07-in-f3.1e100.net (142.250.206.195): icmp_seq=3 ttl=56 time=15.8 ms
64 bytes from kix07s07-in-f3.1e100.net (142.250.206.195): icmp_seq=4 ttl=56 time=15.4 ms

--- www.google.co.jp ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 14.760/15.666/16.645/0.681 ms
@@RETURN VALUE@@ 0
(0, ['PING www.google.co.jp (142.250.206.195) 56(84) bytes of data.', '64 bytes from kix07s07-in-f3.1e100.net (142.250.206.195): icmp_seq=1 ttl=56 time=14.8 ms', '64 bytes from kix07s07-in-f3.1e100.net (142.250.206.195): icmp_seq=2 ttl=56 time=16.6 ms', '64 bytes from kix07s07-in-f3.1e100.net (142.250.206.195): icmp_seq=3 ttl=56 time=15.8 ms', '64 bytes from kix07s07-in-f3.1e100.net (142.250.206.195): icmp_seq=4 ttl=56 time=15.4 ms', '', '--- www.google.co.jp ping statistics ---', '4 packets transmitted, 4 received, 0% packet loss, time 3005ms', 'rtt min/avg/max/mdev = 14.760/15.666/16.645/0.681 ms'])
ls ----;echo @@RETURN VALUE@@ $?
ls: unrecognized option '----'
Try 'ls --help' for more information.
@@RETURN VALUE@@ 2
(2, ["ls: unrecognized option '----'", "Try 'ls --help' for more information."])

ほかにも、通信系のインタプリタをライブラリなしで実行することができる。
便利なり。
その代わり、標準出力は使えないが(笑)簡易RPA的なコンソールプログラムはすぐに作れる。

拍手[2回]

【2022/08/14 07:38 】 | linux | 有り難いご意見(2)
Ubuntuの復旧 Ubuntu18.04→Ubuntu20.04へのアップデート
・Ubuntuが起動できなくなったので、インストールCDでリカバリした。
マウント
chroot

デバイスドライバまわりのメモ
・r8168ネットワークドライバが認識しない。
 RTL8111/8168/8411 のインストールに苦悩した話
・i915ビデオドライバがflickerする。
 「PCIe Bus Error: severity=Corrected, type=Data Link Layer」を回避する方法

拍手[1回]

【2021/11/28 09:08 】 | 未選択 | 有り難いご意見(0)
AGC039 Graph partitionを解いてみた
AGC039に参加して問題Bが解けなかったのだけども、解き方が分かったので解説

問題としては、同じVnに辺があってはいけないというもの。

幅優先探索法で、既に探索済みのノードに出会った場合、次のレベルか前のレベルかしかないということに気づけば後はもっとも長いパスを見つければOK


うーん、時間中には思いつかん。。。

拍手[0回]

【2019/10/06 20:17 】 | atcoder | 有り難いご意見(0)
前ページ | ホーム | 次ページ

忍者ブログ [PR]