問題タブ [rewriting]
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.
.net - CLR プロファイリング API を使用して IL を書き換えるには、独自のアンマネージ IL ライブラリを作成する必要がありますか?
私は CLR プロファイリング API に関するいくつかの記事を見てきましたが、それらの記事の多くは SetILFunctionBody() を呼び出して実際の IL 書き換えを行うことについて述べています。ただし、実際のメソッド IL バイトを書き換えるために何を使用できるかを正確に説明している記事はありません。IL を作成できる管理されていないライブラリはありますか、それとも自分で作成する必要がありますか?
text - テキストの書き換えを自動化するにはどうすればよいですか?
やりたいことを説明します。
「gothereJack」のようなテキストがあり、「Jackgotthere」として書き直したい場合。
数千行を超える長いテキストであり、「go there Jonh」、「go there Joe」、「go there Smith」などのように、時間の経過とともに形式が固定されていると想像してみてください(これらは単なる架空の例ですが、テキストはそれほど多くありません違う)。
だから私はそのようなタスクを自動化するためのツールやプログラミング言語ライブラリがあるかどうか尋ねたいですか?
注意:「Linuxのテキストフィルターについて聞いたことがありますが、Googleは役に立ちませんでした」
networking - libnetfilter_queueを使用してその場でネットワークパケットを書き換える
OSのネットワークスタックにフックして、通過するパケットをスニッフィングし、関心のあるパケットを編集できるユーザースペースアプリケーションを作成しようとしています。
多くのグーグルの後、(どのプラットフォームでも)そうするための最も簡単な(しかしかなり堅牢な)方法はLinuxのlibnetfilter_queue
プロジェクトであるように私には思えます。ただし、限られた公式ドキュメント以外に、プロジェクトの妥当なドキュメントを見つけるのに苦労しています。その主な機能(最初のリンクで述べられているように)
- カーネルnfnetlink_queueサブシステムからキューに入れられたパケットを受信する
- 評決の発行および/または変更されたパケットのカーネルnfnetlink_queueサブシステムへの再注入
強調は私自身のものです。私はこれについてどのくらい正確に意味しますか?提供されているサンプルコードを変更しようとしましたが、何かを誤解している可能性があります。コードはNFQNL_COPY_PACKET
モードで動作しているので、パケット全体を受信していますが、「コピー」セマンティクスを考えると、予想どおり、パケットへの変更は自分のアプリケーションに制限されているようです。
どういうわけか利用するつもりなのですがNF_QUEUE
、なかなか手に入れていません。ポインタはありますか?
(これを行うためのより単純なメカニズムがあり、それがクロスプラットフォームでもある場合は、それについて聞いてみたいです!)
scheme - スキームは let* をネストされた単項 let として書き直します
一致が見つからない場合に引数を返すことを除いて、match-rewriter
基本的には関数を作成しました。match-lambda
match-rewriter
ここで、ソース コードを表す文字列を取得let*
し、ネストされた unary として書き直すために使用したいと思いますlets
。
これをパターンマッチする方法に本当に困惑しています。戻る必要があります:
しかし、ネスティングは私を困惑させました。アドバイスをいただければ幸いです。
さて、これが私の最善の試みです:
しかし、これはそれがどのように動作するかです:
(let*→nested-unary-lets '(let* ((a 1) (b (+ a 1)) (c (+ ab))) (displayln c))) '(let ((a 1) (let *→nested-unary-lets '(let* (((bc) ((+ a 1) (+ ab))) ...) (displayln c)))))
次の引数の順序について混乱しています。
私には次のように思われます:
また、let*→nested-unary-lets
テキストとして出力するだけでなく、 への呼び出しが実行されると便利です。
scheme - ネストされた単項letとしてのSchemelet*
let*
演習として、ソースコードを表す文字列をネストされた単項レットとして書き直そうとしています。これが私の最善の努力です:
私が現在経験している問題は、そのパターンです。
次のような文字列と一致しません:
節という用語は、2番目の節にのみ一致し(c d)
ます。(var val)
残りのすべての句をリストとして受け取る必要があるように思われます((c d) (e f))
。とにかくそうする必要があります。
アドバイスをいただければ幸いです。
私を困惑させるのは、exprsが式のリストと一致するため、句も一致しない理由を考えることができないことです。
python - ファイルシステムを使用しない PIL 画像変換
RAMメモリだけを使ってPILで画像変換・書き換えをしたいです。RAMにバイト単位の画像があり、それを他の形式またはおそらく同じ形式に変換したいと思います。ファイルシステムに名前を付けて保存するようにできることはわかっていますが、ファイルシステムに触れずにRAMを使用して実行したいと思います。例は見つかりませんでした。どんな助けでも大歓迎です!ありがとう!
z3 - ビットベクトル演算の決定手順における項書き換えの使用
私は、用語の書き換えを使用して固定サイズのビットベクトル算術問題を解決/簡素化することに焦点を当てたプロジェクトに取り組んでいます。これは、ビットブラストに基づくものなどの決定手順の前のステップとして役立つものです。書き換えという用語は、問題をまったく解決するか、そうでなければ、はるかに単純な同等の問題を生成する可能性があるため、両方を組み合わせると、かなりの速度向上が得られます。
多くの SMT ソルバーがこの戦略を実装していることは承知しています (Boolector、Beaver、Alt-Ergo、Z3 など)。一般に、著者がそのような単純化の手順をいくつかの段落で説明している論文しか見つけられませんでした。用語の書き換えの使用法を詳細に説明しているドキュメントを見つけたいと思います: ルールの例を提供し、AC 書き換えおよび/または他の等式公理の利便性について議論し、書き換え戦略の使用など.
今のところ、CVC Lite によって実行される正規化/単純化の手順について説明しているテクニカル レポートA Decision Procedure for Fixed-Width Bit-Vectorsを見つけました。このようなテクニカル レポートをもっと見つけたいと思います! STP での用語の書き換えに関するポスターも見つけましたが、これは簡単な要約にすぎません。
私はすでにそれらの SMT ソルバーの Web サイトにアクセスし、それらの出版物ページを検索しました...
よく知られているSMTソルバーの現在のバージョンで用語の書き換えがどのように使用されているかについての参照または説明をいただければ幸いです。Z3 は最もスマートな単純化フェーズの 1 つを備えているように見えるので、特に Z3 に興味があります。たとえば、Z3 3.* では新しいビット ベクトル決定手順が導入されましたが、残念ながら、それについて説明している論文を見つけることができませんでした。
c++ - ファイルの行を上書きして「更新」する
呼び出されたときに、パラメータに一致するテキストファイルを検索し、ファイルを上書きして「更新」する関数を作成しようとしています。
これが私の現在の機能です:
編集:これは新しい更新されたコードですが、まだ機能していません:/
UpdateGemに送信する行は次のとおりです(例:sTempTxt: "AB:5.55")
置き換える必要のある行はNAME:NUMBERの形式であり、番号は異なる可能性があるため、splitstring関数を使用して名前を見つかった行の名前と比較し、その行を完全に消去して「更新」します。後で再度追加してください。ただし、現在のコードは更新された行のみをファイルに書き込み、古い行は書き込みません...
scala - Kiama/Scala で用語を条件付きで書き換える
Kiama で「コミットされた選択」操作を実装しようとしています (同様の方法で機能する他の機能と共に)。
サブタームの 1 つが正常に書き直せる場合は、タームを書き直したいです (いずれかのブランチを開始すると、コミットされるという考えです)。
現在、私は次のようにすることができます:
したがって、r2 は、r1 を最初のサブタームに正常に適用できる場合にのみ起動します。
これはあまりキアマっぽい感じがしません。合同を使用する必要があると感じていますが、ドキュメントからどのように機能するかわかりません。
これを行うためのよりエレガントでキアマイ風の方法を提案できる人はいますか?
.htaccess - URL を 3 つの動的パラメーターで書き換える
URLが次のようなWebサイトで作業しています:
htaccess で次のルールを試しました。
URL を次の形式に書き換えるには:
残念ながら、それは私にとってはうまくいきません。
誰かが問題を整理するのを手伝ってください。また、誰かがそれがどのように機能したかを理解してくれれば幸いです。私は.htaccessの初心者です。上記のルールでは、次のような 3 つの異なる部分を見ることができます。
これら 3 つの部分はバックスラッシュで区切られています。それらがどのように機能し、同じ Rewrite URL フォームを 3 つ以上、たとえば 4 つまたは 5 つのパラメーターと 3 つ未満のパラメーター (2 つのパラメーターなど) にどのように利用できますか?
ありがとう!