問題タブ [text]
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.
algorithm - 複数のユーザーが編集したテキストの「所有者」を特定する
お気づきかもしれませんが、コミュニティ Wiki の投稿に編集の概要が表示されるようになりました。
コミュニティ wiki
220 リビジョン、48 ユーザー
また、ページに表示される最終的なコンテンツを「最も所有している」ユーザーを、残りのテキストのパーセンテージとして表示したいと思います。
コミュニティ wiki
220 リビジョン、48 ユーザー
kronoz 87%
はい、上位 (n) 人の「所有者」がいる可能性がありますが、今のところ、上位 1 人が必要です。
このデータ構造があると仮定します。これは、投稿の時点で時系列に並べられたユーザー/テキストのペアのリストです。
これらのユーザーのうち、最終的なテキストを最も「所有」しているのは誰ですか?
所有者を決定するための合理的なアルゴリズムを探しています。近似値である可能性があり、完全である必要はありません。パーセンテージ スコアで表すのが理想的です。
編集、削除、および挿入を考慮に入れる必要があることに注意してください。そうすれば、最終結果は合理的で正しいと感じられます。適切なリビジョン履歴 (再タグ付けだけでなく、頻繁な投稿本文の変更) を持つスタックオーバーフロー投稿をテスト コーパスとして使用できます。これは良いもので、14 人の異なる著者による 15 のリビジョンがあります。「所有者」は誰ですか?
https://stackoverflow.com/revisions/327973/list
「ソースを表示」をクリックして、各リビジョンの生のテキストを取得します。
純粋なアルゴリズムによる解決策が、最終的には最長共通部分文字列問題の形式になる可能性があることを警告しておく必要があります。しかし、前述したように、近似値と推定値も、うまく機能する場合は問題ありません。
どの言語での解決策も歓迎しますが、私は次のような解決策を好みます
- C# に変換するのはかなり簡単です。
- 依存関係がありません。
- 効率よりもシンプルさを優先してください。
SO に関する投稿に 25 回以上のリビジョンがあることは非常にまれです。ただし、正確に「感じられる」必要があるため、編集内容を目で見て確認した場合は、最終決定に同意することになります. リビジョン履歴を含むスタック オーバーフローの投稿でアルゴリズムをテストし、最終的な出力に同意するかどうかを確認することをお勧めします。
私は現在、次の概算を展開しています。これは、コミュニティ Wiki の投稿で新しく保存されたすべてのリビジョンの動作を確認できます。
- 本文が変更されたすべてのリビジョンの行ベースの差分を実行します
- 各リビジョンの挿入行と削除行を「editcount」として合計します
- 各ユーザー ID は、貢献した「editcount」の合計を取得します
- 最初のリビジョンの著者は、一次著者ボーナスとして、初期スコアとして 2x * "editcount" を取得します
- 最終的な所有権のパーセンテージを決定する: 各ユーザーの編集された行数の合計を、すべてのリビジョンの編集された行の合計数で割った値
(リビジョンが 1 つ、作成者が 1 人のみなど、一般的な単純な条件に対するいくつかのガード句もあります。行ベースの diff により、すべてのリビジョンの再計算がかなり高速になります。たとえば、10 リビジョンの典型的なケースでは、約 50 ミリ秒です。)
これは、私のテストではかなりうまく機能します。数人が編集する 1 ~ 2 行の小さな投稿の場合は少し崩れますが、それは仕方のないことだと思います。ジョエル・ニーリーの答えを、私が行ったものに精神的に最も近いものとして受け入れ、実行可能と思われる他のすべてを支持しました。
windows - ファイル内のテキストを検出して削除する Windows コマンド
私はASCIIファイルを持っていて、そこのどこかに行があります:BEGINとその後の行:END
Windowsのコマンドライン呼び出しから、これら2行とその間のすべてを削除できるようにしたいと思います。これは完全に自動化する必要があります。
編集: Vista で sed を参照してください - 間のすべてのシンボルを削除する方法は? sed を使用してこれを行う方法の詳細については (cygwin には sed があります)。
編集: SED が機能している可能性があることを発見しましたが、出力をファイルにパイプすると、改行が削除されました。どうすればこれらを保持できますか? この sed 正規表現を使用する:
/^GlobalSection(TeamFoundationVersionControl) = preSolution$/,/^EndGlobalSection$/{ /^GlobalSection(TeamFoundationVersionControl) = preSolution$/!{ /^EndGlobalSection$/!d } }
.. 開始セクションは 'GlobalSection(TeamFoundationVersionControl) = preSolution' で、終了セクションは 'EndGlobalSection' です。これらの行も削除したいと思います。
編集:私は今、sedにもっと簡単なものを使用しています:
/^GlobalSection(TeamFoundationVersionControl) = preSolution$/,/^EndGlobalSection$/d
改行はまだ問題ですが
plugins - vi のようなモードを備えた拡張可能なエディターはありますか?
私は完璧なテキストエディタを探しています:)
「必須」リスト:
- vim のようなモーダル編集、vim に似たキーバインド
- emacs のような拡張性 - プラグインとエディター自体の「実際の」言語が同じであるため、拡張機能はエディター内と外部のほとんどすべてに影響を与えることができます... vim スクリプトでは不十分で、python プラグインでも十分ではありません
- プラグインは外部プロセスに関して制限されず、テキストを非同期に変更できます。
- termcap / curses をサポートしているため、内部で実際の端末を実行できます
- 実際の構文解析を使用するため、プラグインは「色」パスを経由せずに単語の「タイプ」に関する情報を取得できます (synIDattr(synID(line("."), col("."), 1), 「名前」) は不可)
- リモート編集が可能 (ただし、プラグイン + 拡張ポイントによって既に保証されている可能性があります)
viper emacs については知っていますが、そのアイデアが好きかどうかはわかりません... 誰かもっと良いことを知っていますか?
説明:
私はフルタイムのプログラマーではありません。私は管理者 / プログラマー / パワー ユーザーであり、一度に多くのホストのコンソールで常に時間を費やしており、その時間の 95% を vim で実行しています。私は vim が大好きですが、vim-im を探しています ;) ほとんどの場合、独自の構文ファイルで構成ファイルや DSL を編集しているため、Eclipse ではうまくいきません。
頻繁に行うことのために、一種のリファクタリング プラグインが必要になることがあります。vimで実行できるという証拠がありますが、それは本当に苦痛です...たとえば、「解析ツリーの前のトークン」を要求することはできません。あなたができる最善の方法は、文字ごとに戻って、単語が変数/関数/その他のものと同じ色付けスタイルを持っているかどうかを確認することです (チェックごとにファイルフラグメントの解析を要求します)。単純なスクリプト言語でエディターを拡張できなければ、私にとってもうまくいきません。
また、何かを実行して出力をvimにコピーするためだけに、2番目の端末が必要になることがよくあります。:!r... コマンドが終了するまでvimのすべてのタブがハングするため、実行できません。
ああ-そしてLinux +コンソールのみ-私はWindowsの世界には興味がありません:)
java - Javaでテキストドキュメントの言語を識別するにはどうすればよいですか?
文字列に英語のテキストが含まれているかどうかを教えてくれる既存の Java ライブラリはありますか (たとえば、フランス語とイタリア語のテキストを区別できるようにする必要があります。関数は、フランス語とイタリア語の場合は false を返し、英語の場合は true を返す必要があります)。 ?
html - stackoverflow スタイルの「質問」/「タグ」ロールオーバー ボタンをコーディングする最良の方法
Stackoverflow の上部にある「質問」、「タグ」、「ユーザー」のようなロールオーバー「ボタン」を実装する最良の方法は何ですか。
実際には次のように実装されています。
すべてのjavascriptが1行にあるように見えるので、これのためのjavascriptを見つけようとするのをちょっとあきらめました。
このような単純なボタンを実装するための最も単純で信頼性の高い方法は何だと人々は考えているのだろうと思っていました。
<li>
のようなものではなく、stackoverflow が使用していることは非常に興味深いと思いました<span>
。なぜか気になる...
PS。私は ASP.NET を使用しています。現在、JQuery などの他のライブラリはありませんが、役立つ場合はそのようなものを試してみたいと思っています。
text - ドキュメント、テキスト形式
私のプロジェクトでは、多くの種類のドキュメント (表形式のデータ、請求書、手紙、いくつかのフォーミュラーなど) 用のドキュメント エディターが必要であり、タスクを達成するためのテキスト形式とエディターを探しています。
- MS Word のような形式はありますか?
- たとえば、rtf、書式設定が必要、非表示のコメントは非常に良いことを知っています
- オープンフォーマット
- 同3P。編集者はいいだろう
私はいくつかの解決策を見つけました.rtfが最も頻繁です
同じ提案や個人的な経験を教えてください。
c - 画面への印刷とテキストファイル
特定のものをテキストファイルにダンプする必要があり、同じものを画面に表示する必要があります。(私はCプログラムユーティリティについて話しています)メニューオプションは次のようになります。
1/2/3 を選択した場合は、画面のみに表示するだけで済みます。オプション #4 を選択した場合は、すべてのパラメータを 1 つずつ表示し、同じように .txt ファイルにダンプする必要があります。
printf 関数と fprintf 関数を使用して、それぞれ画面に表示し、テキスト ファイルに書き込むことができます。問題は、20 個を超えるパラメーターを表示し、それぞれに少なくとも 20 個のサブパラメーターがあることです。
私は現在、以下のように実装されています、
コードの行数を減らすためにこれを実装する最も簡単な方法はありますか?
c++ - fprintf/printfを使用してダッシュまたはドットを出力するには?
今のところ、ドットなしで印刷するために以下の行を使用しています
出力は次のようになると予想しています。
fprintf/printfを使用してダッシュまたはドットを出力するには?
svn - ファイルをバイナリではなくテキストとして扱うように SVN に明示的に指示する方法
Mime タイプを正しく設定せずに SVN にチェックインしたファイルが多数あります。SVN は当初、それらをバイナリとして分類していました。
それ以来、propset を介して SVN で Mime タイプを「text/plain; charset=UTF-8」に設定し、すべてのファイルが UTF-8 署名されていることを確認しました。「svn Blame filename」を実行すると、svn はファイルがバイナリであり、明示的な Blame タイプの出力を提供しないと言います。
これらが本当にテキストファイルであることをSVNに納得させる方法について何か提案はありますか?
android - 画面上にテキスト編集ボックスを表示するには?
縦向きのプライマリ レイアウト (縦向きに固定されている) を持つアプリケーションがあり、テキストを入力する場所が 1 つあります。背景画像がぼやけて横向きのポップアップウィンドウのように起動したいと思います。ポップアップ ウィジェットがあることは知っていますが、テキスト編集ボックスを回転させるためのアイデアは素晴らしいでしょう。キーボード スライドでテキスト ボックスを含む新しい画面を表示する場合と同様に、キーボードをスライドさせたときにポートレート ビュー (テキスト ボックスのみ) に回転することもできます。