
一部のfidoshnikは、特定のFidonetエコー会議で数日ごとに同じメッセージ(同じテキストファイル)を定期的に発行する必要に直面しています。
たとえば、モデレーター(または職務の分配に応じてモデレーター)は
、週に1〜2回、自分のルールをエコー会議
に入れる
必要があります。 少し異なる(しかし、まだ似ている)例は、いくつかのFAQのサポートを引き継ぎ、テーマに関連する1つ以上のエコー会議で公開しているfidosです。 (Fidonet.Historyのエコーでは、FAQに質問と回答で表されたFidonetの独特の履歴が含まれています
。SU.IP.Point-SU.FidoTechで新しいポイントを獲得しているノードのリストのエコーで
表されています。特定のソフトウェア製品専用のエコー会議では、FAQで構成方法などが説明されています。
ノード(またはポイント)が同じコンピューターで継続的に実行されている場合、そのような公開は単純で巧妙な方法で自動化されます:ファイルを
cronデーモン (UNIX系システム)または他のシステムの類似物のタスクリストに公開します。
Fidonetシステムが同じコンピューターで動作しない場合(結局、あるワークステーションから別のワークステーションにFidonetソフトウェアのセットをディスケットに一度ドラッグしたが、最近はフラッシュドライブにドラッグするfidotniksがいます)または少なくとも連続して動作しません(しかしフィードの送信、受信、読み取りを希望する場合は、fidoshnikによって時々起動されます)、出版物の規則性はサービス(デーモン)ではなく、それ以降に何日も経過したかどうかをチェックする単純なプログラムによって提供されます それを公開vdrugoryad時間であることを保証するために、必要に応じて最後のファイルが投稿されました。
今日は
、Node.jsエンジンがこのタスクをどのよう
に実現できるかを見ていきます。
まず、この問題の重要な部分はすでに解決されていることに注意してください。
ファイルを公開するには、
hpt postコマンドを
Huskyソフトウェアスイートから
HPT エコープロセッサに与えるだけです。 (同様のコマンドは、他の一般的なFidonetエコープロセッサにも存在します。)
そのようなパブリケーションの日付と時刻を保存(記憶)するには、ファイルに関連して
touchコマンドを与え、最後の変更の日付を更新するだけで十分です。
UNIXライクなオペレーティングシステムには通常、このコマンドが既製の形式で含まれており、Windowsの場合はSourceForgeの
unxutilsサイトからダウンロードできます。
したがって、反対のタスクを実行するチームのみを構成します。コマンドラインは、指定されたファイルの経過日数を読み取り、特定の経過時間と比較できます。 この目的のために、
Node.jsには次のJavaScript
を使用します
。var fs = require('fs'); var clog = console.log; if (process.argv.length < 3) { clog('Usage:'); clog(' node agedays "filename" [N]'); clog(''); clog('Parameters:'); clog(' filename -- name of the file which age (in days) is checked'); clog(' N (optional) -- if file is N days old (or older),'); clog(' errorlevel 1 is set'); } else if (process.argv.length == 3) { try { var msec = (new Date()).getTime() - fs.statSync(process.argv[2]).mtime.getTime(); var days = msec / 1000 / 60 / 60 / 24; clog('File "' + process.argv[2] + '" is ' + days + ' days old.'); } catch(e) { clog('File "' + process.argv[2] + '" cannot be opened.'); } } else { try { var msec = (new Date()).getTime() - fs.statSync(process.argv[2]).mtime.getTime(); var days = msec / 1000 / 60 / 60 / 24; if( days > (+process.argv[3]) ) { process.exit(1); } else { process.exit(0); } } catch(e) { clog('File "' + process.argv[2] + '" cannot be opened.'); process.exit(2); } }
このスクリプトを保存し、
agedays.jsという名前を付けた
ので 、スクリプトを実行してファイルの
経過時間を調べ 、この
経過時間を所定の数値と比較する機会を得ます。 次に
、areas.cfgファイルに対するWindowsでのこのようなアクションの例を
示します。![[年齢のスクリーンショット]](https://habrastorage.org/storage2/4db/d95/7ba/4dbd957ba9e9497b0e40ac4f0064eb2b.png)
このようなツールを(エコープロセッサ
とtouchに )以前使用できた2つに追加する
と、最終的に
バッチファイル(オペレーティングシステムコマンドを含むファイル)を作成できます。
バッチファイルは、1つ以上のファイルをFidonetで定期的に発行するタスクを実行します。 以下は、Windowsで私のサイトで使用されるバッチファイルの例です。
@echo off :checkmonth node agedays NodePost\monthly._flag 30 if errorlevel 1 goto monthly goto checkweek :monthly \utils\unxutils\touch NodePost\monthly._flag hpt post -nf "Mithgol's Wishlist Robot" -s " " -e "Ru.GoldEd" -z "Mithgol's NodePost" -o "FGHI Global Headlight Ignited" -f loc NodePost\GED_Wish.txt goto checkweek :checkweek node agedays NodePost\weekly._flag 7 if errorlevel 1 goto weekly goto end :weekly \utils\unxutils\touch NodePost\weekly._flag hpt post -nf "Moderator of Ru.Fidonet.Yo" -s "*** Rules" -e "Ru.Fidonet.Yo" -z "Mithgol's NodePost" -o "FGHI Global Headlight Ignited" -f loc NodePost\YoRulez.txt hpt post -nf "Moderator of Ru.Russophobia" -s "*** Rules" -e "Ru.Russophobia" -z "Mithgol's NodePost" -o "FGHI Global Headlight Ignited" -f loc NodePost\PhobRule.txt hpt post -nf "Moderator of Ru.Russian.1916" -s "*** Rules" -e "Ru.Russian.1916" -z "Mithgol's NodePost" -o "FGHI Global Headlight Ignited" -f loc NodePost\rule1916.txt goto end :end
このようなバッチファイル(この例では
NodePost.cmdと呼ばれ
ます )は 、HPTと同じディレクトリに配置してそこから実行するのに最も適しています。これにより、
hpt postコマンドは作業ディレクトリでHPT構成ファイル
を見つけることができます。 バッチファイルによって発行されたファイルをNodePostというサブディレクトリに配置しました。
フラグファイルもそこにあり
、その唯一の目的は
touchコマンドで
タッチし、
agedaysコマンドでチェックすること
です 。ソースコードを見ると、このバッチファイルは、Ru.GoldEDの1つのファイルの毎月(30日ごと)の発行と、司会者に代わって3つのFidonetエコー会議のルールを持つ3つのファイルの毎週(7日ごと)の配布を提供しています
( ...のモデレーター。)。「hpt post」という単語で始まるコマンドラインは十分に長く、Habrahabrに表示されるときにおそらく自動的に折り返されますが、実際にはそのような各コマンドは1行で記述されます。 (このような転送後に隣のチームとマージしないように、各
「hpt post」コマンドの上下に空行を1つ追加しました
。) 「-nf」パラメーターの後に、送信者の名前が書き込まれ、その下にファイルがエコー会議に送信されます、および
「-e」パラメータの後
-このエコー会議のエコータグ。 パラメータ
「-s」、 「 - z
」 、
および「-o」の後に、目的のメッセージヘッダー、そのティアラインおよび発信元が記録されます。
「-f loc」パラメータは、メッセージが「ローカル」と見なされ(このFidonetステーションで正確に作成され)、その後エコープロセッサによって他のFidonetノードへの発信としてパックされるために絶対に必要です。 最後のパラメーターは、公開されるファイルの名前です。
(一般的なHPTの代わりにFidonetで別のエコープロセッサを使用する場合、このすべての情報により、
「hpt post」をソフトウェアに適したコマンドの呼び出しに簡単に置き換えることができます。)
上記のソリューションのほとんどの要素(Node.jsエンジン、agedaysスクリプト、タッチコマンド、HPTエコープロセッサ)も
マルチシステム (クロスプラットフォーム)であるため、Windowsから別のオペレーティングシステムに転送する場合は、バッチファイルを書き換えるだけです。
スクリプト
agesdays.js を無料のMITライセンスの下
でGithubに投稿しました。これ
で私の話は
終わりです 。