0

特定の ID 番号に基づいて文字列を生成するには、Linux vps で小さなコード スニペット (以下) を実行する必要があります。私は PHP の経験があまりありませんが、PHP でアルゴリズムをコーディングしようとしましたが、常に C# コードとは異なる結果が得られます。おそらく、Randomize または Rnd 関数の動作方法が原因です。

モノは、これほど小さなものに対して有効なソリューションですか? 実装に関係するもの。どんな情報でも役に立ちます。さらに調査を行うことができますが、これを Linux で動作させるために時間を無駄にしていないことを確認する必要があります。小さなスクリプトに Mono を使用した経験がある人はいますか?

EDIT私は、この小さなものでのモノの実装の経験を持つ人に非常に興味があります.

c# のコードは次のとおりです。これを実行する前に、データベースを呼び出して、unquiueid 文字列変数に格納されている数値を取得します。このスニペットを実行すると、unlockcode 変数をデータベースに書き込むコードができます。

var rnum = Microsoft.VisualBasic.VBMath.Rnd(-1);
var seed = 2 * uniqueid.AsInt();
Microsoft.VisualBasic.VBMath.Randomize(seed);
for (int i = 1; i <= 6; i++)
{
   unlockcode = unlockcode + Convert.ToChar((int)((26) * Microsoft.VisualBasic.VBMath.Rnd() + 1 + 64));
}
4

1 に答える 1

0

私はあなたの質問に少し当惑しています。
アプリケーションのサイズが限られているからといって、Mono を使用しない理由にはなりません。

ただし、Linux をターゲットにしている場合は、Windows 固有のものを避ける必要があります。
たとえば、Linux で WPF アプリケーションを実行することはできません。

理論的には、コードをコンパイルして、Mono を使用して Linux で実行でき
ますが、Microsoft.VisualBasic のクラスを使用しています。Mono で利用できるかどうかは確認していませんが、利用できる場合でも使用する必要はありません。

var unlockCode = 0;
var random = new Random(Convert.ToInt32(uniqueId));
var randomNumber = random.Next();
for (int i = 1; i < 6; i++)
{
    unlockCode += Convert.ToChar((int)((26) * random.Next() + 1 + 64));
}

Microsoft.VisualBasic.VBMath.Randomize の代わりに System.Random を使用すると、心配する依存関係が 1 つ少なくなります。

また、たとえば Visual Studio などを使用して Windows でこれを
コンパイルする場合、Linux で使用するために再コンパイルする必要はありません。コンパイルされたアセンブリ (exe) をコピーして Linux に展開し、実行するだけです。モノでそれ。

逆に、mono csharp コンパイラを使用して Linux でアプリケーションをコンパイルする場合は、単純に Windows マシンにコピーして .NET (または Mono) で実行できます。

Windows でアプリケーションをコンパイルし、Linux/Mono で利用できないものを使用しているかどうかを知りたい場合は、MoMa ツールを使用してください: http://www.mono-project.com/MoMA

Linux/Mono でアプリケーションを実行すると、どのような問題が発生するかがわかります。

更新: コメントについて

7 行のレガシー C# コードを実行するためだけに Mono を実行するのは少しばかげているようです

ばかげたことは何もありません...確かにディスクスペースをいくらか占有しますが、バックグラウンドなどで継続的に実行されるプロセスではありません。Mono ランタイムは、アプリケーションを実行するときに使用され、他の Mono/.NET アプリがアクティブでなくなると停止します。Python アプリケーションやコマンドライン PHP アプリケーションについても同じことが言えます。システムに Mono を使用しても害はありません。心配する必要はありません。

于 2013-02-22T12:49:53.103 に答える