プログラミング

プロおよび熱狂的プログラマーのためのQ&A

10
Javaで安全にlongをintにキャストする
キャストからlongへのキャストがint情報を失わないことを確認するJavaの最も慣用的な方法は何ですか? これは私の現在の実装です: public static int safeLongToInt(long l) { int i = (int)l; if ((long)i != l) { throw new IllegalArgumentException(l + " cannot be cast to int without changing its value."); } return i; }
489 java  casting 

30
スクリプト作成者によるWebサイトの非難
OverаэтотвопросестьответынаStack Overflowнарусском:Какустроитьловушкудляхакера、илидостойнаиотбии 私は答えを受け入れましたが、悲しいことに、私たちは最初の最悪のシナリオである、誰もががらくたを購入しようとするCAPTCHAに留まっていると思います。簡単な説明:キャッシング/ Webファームではヒットを追跡することができません。回避策(キャッシュされていないWebビーコンの送信、統合テーブルへの書き込みなど)により、ボットよりもサイトの速度が低下します。高レベルで役立つCiscoなどの高価なハードウェアが存在する可能性がありますが、すべてをキャプチャすることが代替手段である場合、コストを正当化することは困難です。後でもっと詳しく説明し、将来の検索者のためにこれを整理します(コミュニティウィキなので他の人も試してみてください)。 状況 これは、woot.comでのバッグの売り上げについてです。私は、Wottの子会社であるWoot Workshopの社長です。Wootの子会社であり、デザイン、製品の説明、ポッドキャスト、ブログの投稿、フォーラムのモデレートを行っています。私はCSS / HTMLを使用しており、他のテクノロジーにほとんど慣れていません。私は開発者と緊密に連携し、ここでのすべての答え(および私たちが持っている他の多くのアイデア)について話し合いました。 ユーザビリティは私の仕事の大部分を占めており、サイトをエキサイティングで楽しいものにすることは残りのほとんどです。ここで、以下の3つの目標が導き出されます。CAPTCHAはユーザビリティを損ない、ボットは私たちのがらくたの売上から楽しさと興奮を盗みます。 ボットは、ランダムクラップセールのために、フロントページを数十回、2番目のスクリーンスクレイピング(および/またはRSSのスキャン)で叩いています。彼らがそれを見た瞬間、それはプログラムの第2ステージをトリガーし、ログインし、I oneをクリックしてフォームに記入し、がらくたを購入します。 評価 lc:この方法を使用するstackoverflowおよびその他のサイトでは、試行されたタスクがそれを必要とするため、ほとんどの場合、認証(ログイン)ユーザーを処理します。 Wootでは、匿名の(ログに記録されていない)ユーザーがホームページを表示できます。つまり、スラミングボットは認証されない(そしてIPアドレスを除いて本質的に追跡できない)可能性があります。 したがって、IPのスキャンに戻ります。これは、a)クラウドネットワーキングとスパムボットゾンビのこの時代ではほとんど役に立たないこと、b)1つのIPアドレスから来るビジネスの数を考えると、あまりにも多くの無実をキャッチしていることです(非静的IP ISPおよびこれを追跡しようとする潜在的なパフォーマンスヒット)。 ああ、そして人々に電話をかけてもらうのは、最悪のシナリオです。彼らにあなたを呼んでもらえますか? BradC:Ned Batchelderのメソッドは見た目はかっこいいですが、サイトのネットワーク用に構築されたボットを打ち負かすためにかなりしっかりと設計されています。私たちの問題は、ボットが私たちのサイトを打ち負かすために特別に構築されていることです。これらのメソッドの一部は、スクリプト作成者がボットを進化させてハニーポットを無視し、フォームIDの代わりに近くのラベル名をスクリーンスクレイピングし、JavaScript対応のブラウザコントロールを使用するまで、短時間動作する可能性があります。 lc:「もちろん、誇大広告がマーケティングスキームの一部でない限り」はい、そうです。アイテムがいつ出現するのかという驚きと、なんとかアイテムを手に入れられた場合の興奮は、実際に得られるがらくたと同じかそれ以上に重要です。先着/先着順を排除するものは、がらくたを「勝つ」ことのスリルに有害です。 novatrust:そして、私は、新しいボット支配者を歓迎します。実際にRSSフィードを提供して、サードパーティのアプリがサイトをスキャンして製品情報を取得できるようにしますが、メインサイトのHTMLの前にはできません。私がそれを正しく解釈している場合、あなたのソリューションは、目標1を完全に犠牲にし、ボットががらくたのほとんどを購入するという事実を辞任することによって、目標2(パフォーマンスの問題)を助けます。あなたの最後の段落の悲観論は私には正確だと感じているので、私はあなたの回答に賛成票を投じました。ここには特効薬はないようです。 残りの応答は一般にIP追跡に依存しますが、これもやはり(ボットネット/ゾンビ/クラウドネットワーキングでは)役に立たないと思われ、有害(同じIP宛先から来た多くの無実を捕まえる)のようです。 他のアプローチ/アイデア?私の開発者は「CAPTCHAをやってみよう」と言い続けますが、私たちががらくたを欲している実際の人間すべてにとって、それほど邪魔にならない方法があることを望んでいます。 元の質問 知覚価値が非常に高く、非常に限られた量の何かを安く販売しているとしましょう。このアイテムをいつ販売するかは、正確にはわかりません。100万人を超える人々が、あなたが何を売っているかを定期的に訪れます。 プログラムでスクリプト作成者やボットが[a]そのアイテムをいつ販売するかを把握し、[b]それらが最初に購入したことを確認します。これには2つの理由があります。 あなたのサイトは非人間によって非難され、すべての人のすべてを遅くしています。 スクリプト作成者は最終的に製品を「勝ち取り」、常連客に騙されたと感じさせます。 一見明白な解決策は、ユーザーが注文する前にジャンプするためのいくつかのフープを作成することですが、これには少なくとも3つの問題があります。 CAPTCHAを解読したり、猫を選んだり、数学の問題を解いたりする必要があるため、ユーザーエクスペリエンスは人間にとってはうんざりです。 知覚された利益が十分に高く、群集が十分に大きい場合、一部のグループは微調整を回避し、軍拡競争につながります。(これは、微調整がより簡単であるほど特に当てはまります。非表示の「コメント」フォーム、フォーム要素の再配置、それらの誤ったラベル付け、非表示の「ゴッチャ」テキストはすべて一度機能し、この特定のフォームをターゲットに戦うために変更する必要があります。) スクリプト作成者が微調整を「解決」できない場合でも、フロントページを非難したり、スクリプト作成者が手動で注文を完了するようにアラームを鳴らしたりすることはできません。彼らが[a]を解くことで利点を得たとしても、注文ページに到達する最初の人間になるので、彼らはおそらく[b]を勝ち取るでしょう。さらに、1。が引き続き発生し、サーバーエラーが発生し、全員のパフォーマンスが低下します。 別の解決策は、頻繁にヒットするIPを監視するか、ファイアウォールからIPをブロックするか、またはその他の方法で注文できないようにすることです。これは2.を解決して[b]を防ぐことができますが、IPのスキャンによるパフォーマンスヒットは巨大であり、スクリプト作成者が単独で引き起こしているよりも1.のようなより多くの問題を引き起こす可能性があります。さらに、クラウドネットワーキングとスパムボットゾンビの可能性があるため、IPチェックはほとんど役に立ちません。 3番目のアイデアは、注文フォームをしばらく(たとえば、0.5秒)ロードすることを強制することで、迅速な注文の進行を遅くする可能性がありますが、やはり、スクリプト作成者は、実際のユーザー。 ゴール 非スクリプトの人間にアイテムを販売します。 ボットによって減速されない速度でサイトを実行し続けます。 「通常の」ユーザーが人間であることを証明するために完了するタスクを煩わせないでください。


6
シェルでファイルを変数に読み込む方法は?
ファイルを読み取って変数に保存したいのですが、ファイルを出力するだけでなく、変数を保持する必要があります。これどうやってするの?私はこのスクリプトを書きましたが、それは私が必要とするものではありません: #!/bin/sh while read LINE do echo $LINE done <$1 echo 11111----------- echo $LINE スクリプトでは、ファイル名をパラメーターとして指定できるため、たとえばファイルに "aaaa"が含まれている場合、次のように出力されます。 aaaa 11111----- しかし、これはファイルを画面に出力するだけなので、変数に保存したいと思います。これを行う簡単な方法はありますか?
489 shell  unix  sh 

6
フラグメントのインスタンス状態をバックスタックに正しく保存するにはどうすればよいですか?
SOで同様の質問の多くの事例を見つけましたが、残念ながら私の要件を満たす回答はありません。 縦向きと横向きのレイアウトが異なり、バックスタックを使用しています。これにより、setRetainState()構成変更ルーチンを使用できなくなり、トリックを使用できなくなります。 デフォルトのハンドラーに保存されない特定の情報をTextViewでユーザーに表示します。アクティビティのみを使用してアプリケーションを作成する場合、以下がうまく機能しました。 TextView vstup; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.whatever); vstup = (TextView)findViewById(R.id.whatever); /* (...) */ } @Override public void onSaveInstanceState(Bundle state) { super.onSaveInstanceState(state); state.putCharSequence(App.VSTUP, vstup.getText()); } @Override public void onRestoreInstanceState(Bundle state) { super.onRestoreInstanceState(state); vstup.setText(state.getCharSequence(App.VSTUP)); } Fragmentこれが唯一の非常に特定の状況で動作します。具体的には、ひどく壊れるのは、フラグメントを置き換え、それをバックスタックに入れ、新しいフラグメントが表示されている間に画面を回転させることです。私が理解したところによると、古いフラグメントはonSaveInstanceState()置き換えられたときにへの呼び出しを受信しませんが、何らかの形でにリンクされたままでありActivity、このメソッドは、それViewが存在しないときに後で呼び出されるため、私TextViewの結果をに探しNullPointerExceptionます また、sを使用しても問題TextViewsがなかったFragmentとしても、s を使用した参照を維持することは良い考えではありませんActivity。その場合、onSaveInstanceState()実際には状態が保存されますが、フラグメントが非表示のときに画面を2度回転するonCreateView()と、新しいインスタンスで呼び出されないため、問題が再発します。 状態onDestroyView()をいくつかのBundleタイプのクラスメンバー要素(実際には1つだけではなく、より多くのデータですTextView)に保存し、onSaveInstanceState()それを保存することを考えましたが、他にも欠点があります。主に、フラグメントが現在表示されている場合、2つの関数を呼び出す順序が逆になるため、2つの異なる状況を考慮する必要があります。よりクリーンで正しい解決策が必要です!

11
辞書キーが利用できない場合はNoneを返します
そのキーが存在する場合にディクショナリ値を取得する方法、または単に返す方法が必要です Noneしない場合はです。 ただし、KeyError存在しないキーを検索すると、Pythonでは例外が発生します。キーを確認できることはわかっていますが、もっと明確なものを探しています。Noneキーが存在しない場合に戻る方法はありますか?




29
SQL Serverには、.NETのMath.Maxのような2つの値をとるMax関数はありますか?
Наэтотвопросестьответына スタックオーバーフローнарусском:ПоискмаксимуманаSQL Serverのкотораяпринимаетнавходдвазначениякаквネット? 私はこのようなクエリを書きたいです: SELECT o.OrderId, MAX(o.NegotiatedPrice, o.SuggestedPrice) FROM Order o しかし、これはMAX関数が機能する方法ではありませんよね?これは集約関数であるため、単一のパラメーターを想定し、すべての行のMAXを返します。 誰か私のやり方で知っていますか?
488 sql  sql-server  max 

5
IntelliJ IDEAはプラグインを介してWebStormおよびPHPStormのすべての機能をカプセル化できますか?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか? Stack Overflowのトピックとなるように質問を更新します。 先月休業。 私は新しいIDEの市場にいますが、Jetbrainsのいくつかの製品間の重複について混乱しています。IntelliJ IDEAには、Node.jsおよびphp開発を可能にするプラグインがあるようです。 IntelliJ IDEAは、プラグインを介してWebStormおよびPHPStormが行うすべてのことを実行できますか、それともIDEAで利用できない特別な機能を備えていますか?すべての開発に単一の多言語IDEが欲しいです。


12
Javaコードの特定のセクションでEclipseコードフォーマッターをオフにする方法
Java文字列として記述されたSQLステートメントを含むJavaコードをいくつか持っています(OR / Mフレームワールは使用しないでください。埋め込まれたSQLはそれです-私の決定ではありません)。 メンテナンスを容易にするために、SQLステートメントを意味的にいくつかのコード行に連結された複数の文字列に分割しました。したがって、次のようなものの代わりに: String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4"; 私のようなものがあります: String query = "SELECT FOO, BAR, BAZ" + " FROM ABC " + " WHERE BAR > 4 "; このスタイルにより、特に大規模なクエリの場合に、SQLが非常に読みやすく、維持されます(IMHO)。たとえば、エディターを「上書き」モードにして、テキストをその場で簡単に変更できます。 この問題は、SQLの特定の例を超えて一般化することに注意してください。垂直方向の書式、特に表形式の構成で記述されたコードは、きれいなプリンターによって破壊されやすくなります。 現在、一部のプロジェクトメンバーはEclipseエディターを使用しており、ソースファイル全体をフォーマットすると、セマンティックフォーマットが破壊されることがよくあります。 フォーマットに関してソースの特定の行を無視するようにEclipseに指示する方法はありますか? Eclipseフォーマッターを切り替える特別なコメントのようなものを探しています。理想的には、そのようなコメントは私たちが選択したものになるように構成可能であり、他のフォーマッターもそれを尊重するようにプログラムできます。 // STOP-ECLIPSE-FORMATTING String query = "SELECT FOO, BAR, …


7
C#セットコレクション?
SetC#にJavaのコレクションに相当するものがあるかどうか誰かが知っていますか?値を入力して無視することで、a Dictionaryまたはa を使用してセットをいくらか模倣できることは知っていますがHashTable、それはあまりエレガントな方法ではありません。
488 c#  .net  collections  set 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.