問題タブ [rebol2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rebol - 複数のIPへのRebol 2ポートバインディング
複数の IP を持つ Windows セットアップがあり、Rebol スクリプト (Rebol/Core 2.78 上) が個々のバインドを作成し、それらの IP のそれぞれで同じポート番号をリッスンすることを望みます。
ごく最近まで、これを行うための構文は次のとおりだと思っていました。
しかしPort2Test
、その部分が完全に無視されているため、行が失敗していることがわかりましたbrowse http://10.100.44.6?
(そして今検索しても、最初にその構文を取得した場所を見つけることさえできません)。
リスニングポートを指定する方法について私が見つけることができるすべてのドキュメントを読むと、次のようになります。
Port1Test
ポートを調べると、ほとんどの設定が に設定されてnone
おり、いくつかは次のように設定されていることがわかります。
そこで、これらの値を次のように変更しようとしました。
Port1Test
残念ながら、との IP 値を交換するなど、上記の変更のすべてのバリエーションは、 のPort2Test
作成時に失敗しますPort2Test
。:-(
見落としているものがあると確信していますが、ポートを特定のインターフェイスにバインドしながらポートを初期化する方法についてのヒントはどこにも見つかりません。
どんなヒントでも大歓迎です!
編集:
Rebol がインターフェイスにバインドする方法は、今ではかなり明白ですが、それを変更する方法はまだ謎です。
1 つのネットワーク カードに関連付けられた 2 つの IP (== インターフェイス) があるとします: 10.100.1.1 と 10.100.1.2。10.100.1.1:80 で、その特定のインターフェイスにバインドできることがわかっている Tomcat アプリケーションをセットアップしました。次に、同じくポート 80 を要求する REBOL アプリケーションを開始します。どちらも正常に動作し、Rebol アプリケーションが 10.100.1.2 にバインドされているかのように、1 つの IP だけでそれぞれにアクセスできます。次に、Tomcat アプリケーションをシャットダウンし、起動しようとしました。インターフェイスが使用されているため、これは不可能であることが判明しました。両方の IP にアクセスすると、両方の IP で Rebol アプリケーションにアクセスできることがわかります。
ここで機能するのは Rebol のアクティブなメカニズムではありませんが、Rebol は 0.0.0.0 インターフェース (サーバーのコンテキストでは、0.0.0.0 は「ローカル マシン上のすべての IPv4 アドレス」を意味します) を要求しているため、現在利用可能な任意のアドレスに変換されます。インターフェイス、およびインターフェイスが利用可能になったときの延期された要求。
ポートの作成時に、Rebols のデフォルト インターフェイス 0.0.0.0 を別のものに変更する方法を見つけられると本当にうれしいです!
rebol - HTTP からファイルを読み取る
National Stock Exchange からテキスト ファイルをダウンロードするプログラムを作成しました。これはダウンロード機能です:
必要なファイルが存在するにもかかわらず、ファイルが見つからないというメッセージが何度も表示されます。複数のファイルが要求され、それらのいくつかがダウンロードされない場合、これはイライラします。再試行すると、ファイルを受け取ります。
wait
Rebol 2 ドキュメントのコマンドを読んだところ、ポートを開くためのデフォルトは待機であることがわかりました。私は何を間違っていますか?サーバーからの応答を得るために Rebol を数秒間待機させる方法はありますか?
編集 - 毎日のアクティビティのファイルがあります。たとえば、10 日間 (1 月 1 日から 1 月 10 日まで) ダウンロードしているとします。その後、数日間はファイルが取得され、数日間はエラーが発生します。同じ日付ですぐに再度ダウンロードすると、不足しているファイルがいくつか取得されます。3 番目と 4 番目try は残りのすべてのファイルを取得します. ただし、ファイルが見つからないというエラーは、日付のいずれかで毎回ランダムになります.
良い、
- tomcが言ったように、タイムアウトを10秒に増やしました。
- Graham Chiu が提案したように、失敗したもののリストも収集しました
Hostilfork が示唆するように、Wireshark を使用できませんでしたが、以下のようにコードを少し変更することでエラーをトラップできました。
その後、2015 年 12 月 1 日から 2015 年 12 月 15 日まで 2 回ダウンロードしました。
最初の試行で失敗したリスト -
2 回目の試行で失敗したリスト -
エラーメッセージはすべてのケースで同じでした-
]
先ほどエラーを正しくトラップできなかったことをお許しください。私はRebolを初めて使用します。
これに対する解決策は何なのかわかりません。8 mbps のネット接続があり、完全に機能しています。
好奇心から、Rebol コンソールを開いて google.co.in に接続しました。これは、2 回同時に試行した結果です。
したがって、現時点では、両方の提案に従っています。
もう1つ学んだこと-トラップエラーはこのようには機能しません-
ファイルを変数に読み込む必要があります。そうしないと、ファイルが実際に受信された場合、Rebol2 がエラーでクラッシュします - エラー: 値が必要です。
rebol - |Red プログラミング言語| Web ページから Cookie を取得するには?
Google と Stackoverflow でよく検索しました。Web ページから Cookie (または一般的には HTTP ヘッダー) を取得し、それを編集して送り返す方法が見つかりませんでした。
[読み取り/書き込みを使用して POST/GET リクエストを作成する方法は知っていますが、Cookies idk]
rebol - Rebol 2はコンソールエコーを無効にします
コンソールへのキーボード文字エコーを無効にしたい Rebol2 コンソール アプリ (Rebol Core) があります。アプリは最小限の Linux カーネル/initramfs から実行され、busybox inittab によって (ターミナルからではなく) 開始されます。色などの ANSI コードを使用する最小限のコンソール ユーザー インターフェイスを備えており、キーを 1 回押すだけでメニュー選択に応答します。コンソールを「静かにする」ために、カーソルをオフにして、キーを押しても出力が表示されないようにしました (最近まで)。
以前は、Rebol 内で 'stty -echo' を呼び出すことで問題が解決したと思っていましたが、実際には機能せず、5 ~ 10 秒かかる関数が 1 つあります。完了する関数。
この 1 つの関数の実行中にエコーされた文字しか表示されない理由はよくわかりませんが、時間がかかる唯一の関数です。キーボードは、console:// をバイナリ モードで開くことによってポーリングされ、キーが押されるのを待ってから、switch ステートメントで機能を選択します。バイナリ/コンソールでのキーの読み取りは、キー エコーを「消費」しているようです。
(値は希望どおりに返され、文字はエコーされません。これは良いことです。ほとんどの関数では、キーは get-key ループで「消費」されると思いますが、より長い関数では「消費」する機会がありません' それらをコンソールにエコーすることになります)
Rebol2 内のコンソール文字エコーを無効にする方法はありますか? system/console と system/ports/input,output を調べましたが、明らかなものは何もありません。私の現在の回避策は、テキストの色を背景に合わせて変更するだけで、特定の機能の実行中にキーを押しても見えないようにすることです。
ここに私がやっていることの最小限の例があります-
永久ループはキーボード入力を「消費」しているように見えますが (何もエコーされません)、関数の 1 つに時間がかかると、キーボード入力はカーソルがどこにあっても画面にエコーされます。ほとんどの場合、get-key を呼び出す間の時間が最小限であるため、エコーされた文字は表示されません。また、エコーされた文字は、その後の get-key の呼び出しにも表示されないことに注意してください。
アップデート-
これは、問題を確認するためのより良いコードのサンプルです-
私の「長い」関数は、数秒かかる可能性のある呼び出しを使用しているため、呼び出しを使用すると問題が発生することがわかりました。
上記のコードを実行すると、キーが get-key 関数 (括弧) で出力されるためだけにエコーされることが示されます。long-func が実行されている場合、キーは get-key の外側 (括弧なし) でエコーされます。完了すると、get-key はそれらのキーも処理します。または単に「call/wait {sleep 10}」を実行すると、待機中にエコーされたキーが取得され、コールが返されたときに Rebol によってエコーされた同じキーも取得されます。reb-func の実行時にキーはエコーされません。reb-func が完了すると、get-key はすべてのバッファリングされたキーを処理します。call を使用すると、キーボード入力が 2 回処理されます。
call コマンド (bash プロンプトなどの call string コマンド) で stdin/stdout をリダイレクトしようとしましたが、機能するコンボが見つかりませんでした。(私の実際のコードは /output/error で呼び出しを実行して、すべての出力をキャプチャします)。
url - Rebol url のエスケープ記号
Rebol 2.7.8.3.1 を使用しています。@
URL 内の記号をエスケープしようとしていますが、うまくいきません。また、手動でエスケープしようとしましたが、それも機能しません。
私は次のことを試しました:
フォルダーがある場合folderB
(@
パスにない)、正常に動作します。
また、エスケープされていないものとエスケープされていないものの両方の文字列として url を書き込もうとしましたto-url
が、同様の結果が得られます。
を使用decode-url
すると、私のすべてのケースで Rebol が URL を誤って解釈しているようです。
RebolでURLをエスケープするにはどうすればよいですか?
rebol - rebolのデフォルトのタイトルバーを削除するには?
rebolのデフォルトのタイトルバーを削除するには?