プログラミング

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

8
挿入と同じ重複キー更新時
私は周りを検索しましたが、それが可能かどうかはわかりませんでした。 私はこのMySQLクエリを持っています: INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) フィールドIDには「一意のインデックス」があるため、2つ存在することはできません。同じIDがデータベースに既に存在する場合は、更新します。しかし、本当にこれらすべてのフィールドをもう一度指定する必要がありますか? INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) ON DUPLICATE KEY UPDATE a=2,b=3,c=4,d=5,e=6,f=7,g=8 または: INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) ON DUPLICATE KEY UPDATE a=VALUES(a),b=VALUES(b),c=VALUES(c),d=VALUES(d),e=VALUES(e),f=VALUES(f),g=VALUES(g) 私はすでにインサートにすべてを指定しました... 追加のメモ、IDを取得するための回避策を使用したいと思います! id=LAST_INSERT_ID(id) 誰かが私に最も効率的な方法を教えてくれることを願っています。

6
TeamViewerはどのように高速ですか?
長さについて申し訳ありません、それはちょっと必要です。 前書き 私は、Windows Vista / 7用のC#4.0でリモートデスクトップソフトウェア(楽しみのために)を開発しています。基本的な障害を乗り越えました:堅牢なUDPメッセージングシステム、比較的クリーンなプログラム設計、ミラードライバー(DemoForgeからの無料のDFMirageミラードライバー)が稼働しており、すべてにNATトラバーサルを実装しています対称NATを除くNATタイプ(企業ファイアウォールの状況に存在)。 画面の転送/共有については、ミラードライバーのおかげで、変更された画面領域が自動的に通知され、ミラードライバーの絶えず変化する画面ビットマップを自分のビットマップにマーシャリングできます。次に、画面領域をPNGとして圧縮し、サーバーからクライアントに送信します。物事はかなり良いように見えますが、十分に速くはありません。VNCと同じくらい遅いです(ところで、私はVNCプロトコルを使用せず、カスタムのアマチュアプロトコルを使用しています)。 最も遅いリモートデスクトップソフトウェアから最も速いリモートデスクトップソフトウェアまで、リストは通常​​、すべてのVNCのような実装で始まり、Microsoft Windowsリモートデスクトップ...、そして... TeamViewerまで続きます。CrossLoop、LogMeInについてはよくわかりません-私はそれらを使用していませんが、TeamViewerは非常に高速です。文字通りライブです。treeコマンドプロンプトでコマンドを実行したところ、20ミリ秒の遅延で更新されました。私のラップトップよりも数ミリ秒遅いWebを閲覧できます。Visual Studioでコードを垂直にスクロールすると、ラグ時間が50ミリ秒になります。これをすべて実現するには、TeamViewerの画面転送ソリューションがどれほど堅牢でなければならないかを考えてください。 VNCは、ポーリングベースのフックを使用して、画面の変化を検出し、ブルートフォース画面のキャプチャ/比較を最悪の場合に行います。最高の状態では、DFMirageのようなミラードライバーを使用します。私はこのレベルです。また、RFBプロトコルと呼ばれるものを使用しています。 Microsoft Windowsリモートデスクトップは、明らかにVNCよりも1段階高くなっています。StackOverflowのどこかから、Windowsリモートデスクトップは画面のビットマップを送信せず、実際の描画コマンドを送信すると聞きました。単純なテキストを送信できるため、これは非常に素晴らしいです(この長方形をこの座標で描画し、このグラデーションで色付けします)。リモートデスクトップは非常に高速で、自宅で作業するための標準的な方法です。また、RDPプロトコルと呼ばれるものを使用します。 今、TeamViewerは私にとって完全な謎です。どうやら、彼らはバージョン2のソースコードをリリースしました(TeamViewerは2012年2月現在のバージョン7)。人々はそれを読んで、バージョン2は役に立たないと言った-それは自動NATトラバーサルによるVNCのほんのいくつかの改善だ。 しかし、バージョン7 ...今は途方もなく高速です。つまり、実際にはWindowsリモートデスクトップよりも高速です。TeamViewerでDirectX 3Dゲームをストリーミングしました(1 fpsですが、WindowsリモートデスクトップではDirectXを実行することもできません)。 ちなみに、TeamViewerはミラードライバーなしでこれらすべてを行います。インストールするオプションがあり、少し速くなります。 質問 私の質問は、TeamViewerはどのくらい高速なのですか?それは不可能であってはなりません。24ビットの深さでも1920 x 1080の解像度がある場合(16ビットの深さはかなり醜いでしょう)、それでも未加工の6,220,800バイトです。libjpeg-turbo(大企業で使用されている最速のJPG圧縮ライブラリの1つ)を使用して30KBに圧縮すると(非常に寛大にしましょう)、TeamViewerのサーバーを介してルーティングするのに時間がかかります(TeamViewerは、トラフィックをプロキシするだけで、企業の対称NATをバイパスします彼らのサーバー)。そして、そのlibjpeg-turbo圧縮は圧縮に時間がかかります。高品質のJPG圧縮は、1920 x 1080のフルスクリーンショットで175ミリ秒かかります。そして、ホストのコンピューターがAtomプロセッサーを実行している場合、その数は増えます。TeamViewerが画面転送をどのように最適化したかがわかりません。繰り返しになりますが、小さなサイズの画像は高度に圧縮されている可能性があります。ただし、圧縮には少なくとも数十ミリ秒かかります。大きなサイズの画像は圧縮に時間がかかりませんが、処理に時間がかかります。どういうわけか、TeamViewerはこのプロセス全体を完了して、毎秒約20〜25フレームを取得します。私はネットワークモニタを使用しましたが、TeamViewerは500 Kbpsと1 Mbpsの速度でも遅延がありません(その転送速度ではVNCソフトウェアは数秒間遅延します)。私の中にtreeコマンドプロンプトテストでは、TeamViewerは1 Mbpsの速度でインバウンドデータを受信し、それでも5〜6 fpsを実行していました。VNCとリモートデスクトップはそれを行いません。では、どうやって? 答えはやや複雑で複雑になるため、TCPの代わりにUDPを使用しているためだと言ってはいけない場合は、$ 0.02を投稿しないでください(実際にTCPを同じように使用していると思いますか)。 StackOverflowのどこかにTeamViewer開発者がいることを願っています。 潜在的な答え 人々が返信したら、これを更新します。 私の考えは、まず第一に、TeamViewerは非常に細かいネットワーク制御を持っているということです。たとえば、大きなパケットをMTUサイズのすぐ下に分割し、トリップを無駄にすることはありません。おそらく、非常に高速なXOR画像比較とともに、画面の変化を検出するためのあらゆる種類のファンシーフックがあります。


19
Excel用のCSVファイルの生成、値内に改行を入れる方法
Excel用のファイルを生成する必要があります。このファイルの値の一部に複数の行が含まれています。 そこには英語以外のテキストも含まれているため、ファイルはUnicodeである必要があります。 私が生成しているファイルは次のようになります:(UTF8で、英語以外のテキストが混在し、行数が多い) Header1,Header2,Header3 Value1,Value2,"Value3 Line1 Value3 Line2" 複数行の値は二重引用符で囲まれ、通常の毎日の改行が含まれていることに注意してください。 Webで見つけた結果によると、これは機能すると想定されていましたが、機能しませんが、少なくともExcel 2007およびUTF8ファイルは使用できません。Excelは、3行目を最初のデータ行の2行目ではなく2行目のデータとして扱います。 これは顧客のマシンで実行する必要があり、私は彼らのバージョンのExcelを制御できません。そのため、Excel 2000以降で動作するソリューションが必要です。 ありがとう 編集:私は2つのCSVオプションを使用して問題を「解決」しました。1つはExcel用(Unicode、タブ区切り、フィールドに改行なし)、もう1つはその他の国(UTF8、標準CSV)です。 私が探していたものではありませんが、少なくとも(これまでのところ)機能します
158 excel  csv  newline 

14
フィールドのタイプを変更するには?
mongoシェル内からフィールドのタイプを変更しようとしています。 私はこれをしています... db.meta.update( {'fields.properties.default': { $type : 1 }}, {'fields.properties.default': { $type : 2 }} ) しかし、それは機能していません!
158 mongodb 

11
Gitブランチの作成者を見つける
誰がブランチを作成したのか知りたい。 私はそうすることができます: git branch -a | xargs -L 1 bash -c 'echo "$1 `git log --pretty=format:"%H %an" $1^..$1`"' _ ただし、これはブランチごとに最後のコミッターを返します。必ずしもブランチを作成した人ではありません。
158 git  git-branch 

5
データベースフィールドを1ずつ増加
MySQLで、たとえばログインなどのフィールドがある場合、SQLコマンド内でそのフィールドを1だけ更新するにはどうすればよいですか? firstName、lastName、loginを作成するINSERTクエリを作成しようとしています。ただし、firstNameとlastNameの組み合わせがすでに存在する場合は、ログインを1つ増やします。 そのため、テーブルは次のようになります。 firstName----|----lastName----|----logins John Jones 1 Steve Smith 3 実行時に新しい人物(つまり、Tom Rogers)を挿入するか、John Jonesが使用した名前である場合はログインをインクリメントするコマンドの後にいます。
158 mysql  insert  increment 


5
辞書ビューオブジェクトとは何ですか?
Python 2.7では、ディクショナリビューメソッドを使用できるようになりました。 今、私は次の長所と短所を知っています: dict.items()(そしてvalues、keys):あなたが実際に結果を格納することができますので、リストを返し、 dict.iteritems() (など):ジェネレータを返すため、生成された各値を1つずつ反復できます。 何のためにdict.viewitems()(など)?それらの利点は何ですか?どのように機能しますか?結局のところ、ビューとは何ですか? ビューは常に辞書からの変更を反映していると読みました。しかし、パフォーマンスとメモリの観点からはどのように振る舞いますか?長所と短所は何ですか?
158 python  view  dictionary 

12
Xcode:ビルドに失敗しましたが、エラーメッセージはありません
Xcode 4.5.1を使用します。私たちのプロジェクトは過去3か月間正常にビルドされていましたが、突然ビルドしようとすると、「ビルドに失敗しました」と表示されますが、三角形の感嘆符のタブにエラーは表示されず、ポップアップしたときに理由も表示されませんビルドに失敗しました。 バンドル識別子やその他のプロジェクトプロパティは変更していません。私はきれいにしてからビルドしましたが、運はありませんでした。 問題の原因は何ですか? この質問に似ていますが、どの解決策も当てはまりません。
158 xcode  build 

30
Androidデバイスがadbリストに表示されない[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 この質問を改善する HP Slate 21をUSBケーブルを使用してWindowsボックスに接続しています。デバイスでUSBデバッグが有効になっています。後、適切な追加%SingleAdbInterface%と%CompositeAdbInterface%にエントリをandroid_winusb.infファイル、私は今、私のデバイスマネージャで「AndroidのADBインタフェース」を参照してください。ただし、adb devicesコマンドラインで実行してもデバイスは表示されません。 別のHP slate 7を使用していますadb devices。 デバイスマネージャーから見た唯一の違いは、動作するものは「Android Composite ADB Interface」という名前で、もう1つは「Android ADB Interface」という名前です。 さらに微妙な違いがあります。winusb.infファイルでは、Slate 7には2つの%CompositeAdbInterface%エントリが定義されていますが、Slate 21には1つの%CompositeAdbInterface%エントリしか定義されていません。 私のセットアップの何が問題になっているのでしょうか?
158 android  adb 


7
画像を自動的にトリミングして中央に配置する方法
任意の画像が与えられた場合、画像の中心から正方形を切り取り、特定の正方形内に表示します。 この質問はこれに似ています:CSSで画像のサイズを変更してトリミングした画像を表示しますが、画像のサイズがわからないため、余白を設定できません。
158 css 



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