3

生徒が宿題をメールで送信し、メールが自動的に処理されるように、メール ゲートウェイを設定する方法についてアドバイスを求めています。

たとえば、studenta@univ.edu から「CS208 hw1」という件名のメールが届いた場合、CS208 を受講している学生のリストで Studenta をクロスチェックし、添付ファイルをすべて取得して、その学生の hw1 フォルダにダンプし、返信します。どのファイルをいつ受信したかを示す電子メールで。件名が間違っていたり、ファイルが見つからないなど、学生の電子メールの形式が正しくない場合、サービスは適切な電子メールを送信します。

私は、電子メール サーバーとして構成できるキャンパス内の Linux マシンへの管理アクセス権を持っています。

思いつきで、fetchmail と cron ジョブを使用して、指定されたユーザーの電子メールを一貫して読み取り、何らかのスクリプトで適切な応答を実行することを考えていました。これは良い方法のように聞こえますか?より良いアイデアを歓迎しますか?

4

2 に答える 2

2

個人的には、アップロード ダイアログがあり、現在のファイルとおそらく FTP サーバーをリストする可能性があるページを応援します。メールの問題点は、メールが途中で自分以外のサーバーで処理されるため、サーバーまでの送信が手の届かないところにあることです。メールは途中で紛失または変更される可能性があり、すべてのサーバーが特定のサイズまたはタイプの添付ファイルを受け入れるとは限りません。アイデアは非常に優れていますが、前述のページや ftp サーバーなど、他のソリューションよりも最適なソリューションとは言えないと思います。

編集

私はむしろmswの方法を好むでしょう。バージョン管理システムを使用すると、多くの手間と問題を回避できます。* tips hat to msw*

于 2010-08-23T01:57:28.377 に答える
2

実際には、適切に処理された準拠メールよりもはるかに多くの例外が、あなたが処方する規則に当てはまることになると思います。手動での修正と「コンピューターが宿題を食べた」という主張の頭痛の種になるでしょう。

これは CS 200 レベルのクラスなので、何らかのバージョン管理システムを使用するように要求し、VCS が強制する厳格な構造を持つ自由形式の電子メールを解析する手間を省きます。あなたの学生もこの要件から恩恵を受けるでしょう。私の 10 歳の子供が Google ドキュメント内の自動改訂管理のメリットを理解できたなら、あなたの生徒は Mercurial や git、さらには (あえぎ!) Subversion を扱えると思います。

コメントに応じて追加

はい。ただし、Mercurial (およびおそらく git) では、「リポジトリ」は「ディレクトリ」を意味する派手な言葉であり、古い VCS モデルで期待されるような重い DBMS のようなものではありません。

学生として、仮説的な課題に取り組む方法は次のとおりです。

studenta@dorm$ hg clone https://Rich.univ.edu/studenta/cs208
$ cd cs208 ; broswer ./hw1.html
$ mkdir hw1 ; cd hw1 ; make my work files 
$ hg add * ; hg commit -m "perfect the first time!" # updates locally only
$ make lots of bug fixes
$ hg commit -m "okay really done now"
$ hg push 
# sleep, party, go to class with hangover
$ hg pull
$ browse hw2.html ; mkdir hw2 
...

あなたが学生用リポジトリに配置した課題は、デモンストレーションのためだけのものでした。あなたが Rich.unix.edu マシンを「所有」しているため、彼らのプッシュは信頼できるものになります。あなたがしただろう

  1. hg init $student/cs208名簿の各学生について、Rich.univ.edu に(小さな) スクリプトを書きます。
  2. ご使用の環境で HTTPS と SSH のどちらが最適に機能するかを把握する
  3. 必要に応じて、学生のファイルにコメントを追加して、次のプルで取り上げます。
  4. すべてのやり取りの管理された便利なログ記録を用意します。
  5. 学生は、それが受け入れられたというプッシュの瞬間に肯定的なフィードバックを受け取ります

最後に、リポジトリ サーバーがダウンした場合、

$ hg export tip | mail -s "server down; assignment done" Rich@univ.edu

そして、タイムスタンプが付けられ、消化されたバージョンの提出物がまだあります。これには、提出者のためにコミットできる厳密な形式があります。

「リッチ博士、サーバーがダウンしました!!!」
「でも、メールでエクスポートを送ってくれましたよね?」
「もちろんです」
「まあ、マシンが元に戻ったら押してください。時間通りに完了したという証拠はすでにあります。」
「おお、リッチ博士、うねりだ!」

于 2010-08-23T02:04:32.947 に答える