
たとえば、モデレーター(または職務の分配に応じてモデレーター)は
ノード(またはポイント)が同じコンピューターで継続的に実行されている場合、そのような公開は単純で巧妙な方法で自動化されます:ファイルをcronデーモン
Fidonetシステムが同じコンピューターで動作しない場合(結局、あるワークステーションから別のワークステーションにFidonetソフトウェアのセットをディスケットに一度ドラッグしたが、最近はフラッシュドライブにドラッグするfidotniksがいます)または少なくとも連続して動作しません(しかしフィードの送信、受信、読み取りを希望する場合は、fidoshnikによって時々起動されます)、出版物の規則性はサービス(デーモン)ではなく、それ以降に何日も経過したかどうかをチェックする単純なプログラムによって提供されます それを公開vdrugoryad時間であることを保証するために、必要に応じて最後のファイルが投稿されました。
今日は
まず、この問題の重要な部分はすでに解決されていることに注意してください。
ファイルを公開するには、 hpt postコマンドをHuskyソフトウェアスイートからHPT
そのようなパブリケーションの日付と時刻を保存(記憶)するには、ファイルに関連してtouchコマンドを与え、最後の変更の日付を更新するだけで十分です。
したがって、反対のタスクを実行するチームのみを構成します。コマンドラインは、指定されたファイルの経過日数を読み取り、特定の経過時間と比較できます。 この目的のために、
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という名前を付けたので 、スクリプトを実行してファイルの経過時間を調べ 、この経過時間を所定の数値と比較する機会を得ます。 次に
![[年齢のスクリーンショット]](https://habrastorage.org/storage2/4db/d95/7ba/4dbd957ba9e9497b0e40ac4f0064eb2b.png)
このようなツールを(エコープロセッサ
@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
このようなバッチファイル(この例では
ソースコードを見ると、このバッチファイルは、Ru.GoldEDの1つのファイルの毎月(30日ごと)の発行と、司会者に代わって3つのFidonetエコー会議のルールを持つ3つのファイルの毎週(7日ごと)の配布を提供しています
「hpt post」という単語で始まるコマンドラインは十分に長く、Habrahabrに表示されるときにおそらく自動的に折り返されますが、実際にはそのような各コマンドは1行で記述されます。 (このような転送後に隣のチームとマージしないように、各
(一般的なHPTの代わりにFidonetで別のエコープロセッサを使用する場合、このすべての情報により、
上記のソリューションのほとんどの要素(Node.jsエンジン、agedaysスクリプト、タッチコマンド、HPTエコープロセッサ)もマルチシステム (クロスプラットフォーム)であるため、Windowsから別のオペレーティングシステムに転送する場合は、バッチファイルを書き換えるだけです。
スクリプトagesdays.js を無料のMITライセンスの下でGithubに投稿しました。これで私の話は終わりです 。