プログラミング

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

9
8ビット整数から8ビットより大きい値を取得するにはどうすればよいですか?
この小さな宝石の後ろに隠れている非常に厄介なバグを見つけました。C ++仕様によると、符号付きオーバーフローは未定義の動作ですが、値がbit-widthに拡張されたときにオーバーフローが発生した場合のみsizeof(int)です。私が理解しているように、のインクリメントは、でcharある限り、未定義の動作であってはなりませんsizeof(char) < sizeof(int)。しかし、それはどのようcにして不可能な価値を得ているのかを説明していません。8ビット整数として、cそのビット幅より大きい値をどのように保持できますか? コード // Compiled with gcc-4.7.2 #include <cstdio> #include <stdint.h> #include <climits> int main() { int8_t c = 0; printf("SCHAR_MIN: %i\n", SCHAR_MIN); printf("SCHAR_MAX: %i\n", SCHAR_MAX); for (int32_t i = 0; i <= 300; i++) printf("c: %i\n", c--); printf("c: %i\n", c); return 0; } 出力 SCHAR_MIN: -128 SCHAR_MAX: …

3
GetType()は、基本クラスから呼び出されたときに最も派生した型を返しますか?
GetType()は、基本クラスから呼び出されたときに最も派生した型を返しますか? 例: public abstract class A { private Type GetInfo() { return System.Attribute.GetCustomAttributes(this.GetType()); } } public class B : A { //Fields here have some custom attributes added to them } または、派生クラスが次のように実装する必要がある抽象メソッドを作成する必要がありますか? public abstract class A { protected abstract Type GetSubType(); private Type GetInfo() { return System.Attribute.GetCustomAttributes(GetSubType()); } } public …

8
すべてのブラウザーのObject.watch()?
Object.WatchとのObject.Observe両方が現在非推奨になっていることに注意してください(2018年6月現在)。 オブジェクトまたは変数の変更を監視する簡単な方法を探していたところObject.watch()、MozillaブラウザーではサポートされているがIEではサポートされていないことがわかりました。だから私は誰かが何らかの同等のものを書いたかどうかを探して周りを探し始めました。 私が見つけた唯一のことはjQueryプラグインですが、それが最善の方法かどうかはわかりません。私は確かにほとんどのプロジェクトでjQueryを使用しているので、jQueryの側面については心配していません... とにかく、質問:そのjQueryプラグインの実際の例を誰かに見せてもらえますか?うまく動かないのですが… または、クロスブラウザで動作するより良い代替案を誰かが知っていますか? 回答後に更新: 回答ありがとうございます!ここに投稿されたコードを試してみました:http : //webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html しかし、IEで動作させることができなかったようです。以下のコードはFirefoxでは正常に動作しますが、IEでは何も実行しません。Firefoxでは、watcher.status変更されるたびにdocument.write()in watcher.watch()が呼び出され、ページに出力が表示されます。IEではそれは起こりませんがwatcher.status、最後のdocument.write()呼び出しで正しい値が表示されるため(IEとFFの両方で)、値が更新されていることがわかります。しかし、コールバック関数が呼び出されない場合、それは一種の無意味です... :) 何か不足していますか? var options = {'status': 'no status'}, watcher = createWatcher(options); watcher.watch("status", function(prop, oldValue, newValue) { document.write("old: " + oldValue + ", new: " + newValue + "<br>"); return newValue; }); watcher.status = 'asdf'; watcher.status = '1234'; document.write(watcher.status + …


2
WCFサービスアプリケーションとWCFサービスライブラリの違いは何ですか?
私はWCF Webサービスを開発しており、そのためにWCFサービスアプリケーションテンプレートを使用しました。 「WCFサービスアプリケーション」の作成はこの要件を満たしていますか?WCFサービスアプリケーションよりもWCFサービスライブラリを作成する利点は何ですか?

4
なぜ常に./configure; 作る; インストールを行います。3つの別々のステップとして?
ソースから何かをコンパイルするたびに、同じ3つのステップを実行します。 $ ./configure $ make $ make install インストールプロセスを複数のステップに分割することは理にかなっていますが、理解できません。この惑星のすべてのコーダーが同じ3つのコマンドを何度も何度も記述して、1つのジョブを完了する必要があるのです。私の観点から./install.shは、次のテキストを含むソースコードと共にスクリプトが自動的に配信されるようにするのはまったく理にかなっています。 #!/bin/sh ./configure make make install なぜ人々は3つのステップを別々に行うのですか?

6
最適なユダヤ人の足の爪の切断アルゴリズムは何ですか?
私は、足の爪を自動的にトリミングするマシンのソフトウェアに取り組んでいます。そのため、ユーザーは自分の足をその中に入れて実行するだけで、手動でかむことや爪切りを使用する必要はありません。 潜在的なユーザーベースのかなりの割合がユダヤ人である可能性が高く、明らかに、足指の爪(または指の爪)を順番どおりにトリミングしないという伝統があります。 この伝統の正確な適用については反対意見があるようですが、次のルールは、宗教的な慣習により爪を順番に切ることを禁止している人々に対応するのに十分だと思います。 隣接する2つの足指の爪を連続して切断しないでください 左足の切断順序は右足の順序と一致してはなりません 2つの連続したランの切断順序は同じであってはなりません。シーケンスは簡単には予測できないため、交互のシーケンスをハードコーディングしても機能しません。 これは、つま先に番号を付けることを決定した方法です。 5 4 3 2 1 1 2 3 4 5 Left foot Right foot 問題を解決するためのコードを作成しましたが、使用されているアルゴリズムは最適ではありません。実際、最悪の場合のパフォーマンスはO(∞)です。動作方法はbogosortに匹敵します。以下は、使用される実際のコードの疑似コードの簡略化です。 function GenerateRandomSequence sequence = Array[5] foreach (item in sequence) item = RandomNumberBetween(1,5) return sequence function GetToenailCuttingOrder while (true) sequence = GenerateRandomSequence() if (!AllItemsAreUnique(sequence)) continue if (NoTwoAdjacentItemsHaveConsecutiveNumbers(sequence)) return sequence …

5
「is_base_of」はどのように機能しますか?
次のコードはどのように機能しますか? typedef char (&yes)[1]; typedef char (&no)[2]; template <typename B, typename D> struct Host { operator B*() const; operator D*(); }; template <typename B, typename D> struct is_base_of { template <typename T> static yes check(D*, T); static no check(B*, int); static const bool value = sizeof(check(Host<B,D>(), int())) == sizeof(yes); }; …

1
Math.pow()()がJavaScriptの**と等しくないのはなぜですか?
(MDNリファレンス)のa**b代替としてECMAScript 7機能を発見しました。その投稿で、動作が明らかに異なるという議論に遭遇しました。Chrome 55でテストしましたが、結果が異なることが確認できました。Math.pow(a,b) Math.pow(99,99) 戻り値 3.697296376497263e+197 一方 99**99 戻り値 3.697296376497268e+197 したがって、差分Math.pow(99,99) - 99**99をログに記録すると、になり-5.311379928167671e+182ます。 これまでのところ、それは単なる別の実装であると言えるかもしれませんが、それを関数でラップすることは再び異なる動作をします: function diff(x) { return Math.pow(x,x) - x**x; } 呼び出しをdiff(99)返します0。 なぜそれが起こっているのですか? 以下のようxszabojは指摘し、これはこの問題に絞り込むことができます。 var x = 99; x**x - 99**99; // Returns -5.311379928167671e+182

7
NULLの再定義
アドレス0x0000が有効で、ポートI / Oを含むシステム用のCコードを書いています。したがって、NULLポインタにアクセスする可能性のあるバグは検出されないままであり、同時に危険な動作を引き起こします。 このため、NULLを別のアドレス、たとえば無効なアドレスに再定義したいと思います。誤ってそのようなアドレスにアクセスすると、エラーを処理できるハードウェア割り込みが発生します。このコンパイラのstddef.hにアクセスしたため、実際に標準ヘッダーを変更してNULLを再定義できます。 私の質問は、これはC標準と競合しますか?標準の7.17からわかる限り、マクロは実装定義です。NULL が0でなければならないことを述べている標準の他の場所はありますか? もう1つの問題は、多くのコンパイラーが、データ型に関係なく、すべてをゼロに設定して静的初期化を実行することです。標準では、コンパイラーは整数をゼロに、ポインターをNULLに設定する必要があるとしていますが。コンパイラーに対してNULLを再定義すると、このような静的な初期化が失敗することがわかります。手動でコンパイラヘッダーを大胆に変更した場合でも、コンパイラの動作が間違っていると見なすことはできますか?なぜなら、この特定のコンパイラーは、静的な初期化を行うときにNULLマクロにアクセスしないことは確かです。
118 c  null 

3
ARCで__autoreleasing所有者修飾子を記述する必要があるのはどのような場合ですか?
パズルを完成させようとしています。 __strongNSObject、NSStringなどのすべてのObjective-C保持可能オブジェクトポインタのデフォルトです。これは強力な参照です。ARC -releaseは、スコープの最後でa とバランスをとります。 __unsafe_unretained古い方法に等しい。保持可能なオブジェクトを保持せずに弱いポインターに使用されます。 __weak以下のようなものです__unsafe_unretained、それはポインタが参照されるオブジェクトが割り当て解除されるとすぐにnilに設定されることをオートゼロ弱参照の意味だことを除いて。これにより、ダングリングポインターやEXC_BAD_ACCESSエラーの危険性がなくなります。 しかし、正確には何が__autoreleasing良いのでしょうか?この修飾子を使用する必要がある場合の実用的な例を見つけるのに苦労しています。私はそれが次のようなポインターポインターを期待する関数とメソッドのためだけであると私は信じています: - (BOOL)save:(NSError**); または NSError *error = nil; [database save:&error]; ARCでは、次のように宣言する必要があります。 - (BOOL)save:(NSError* __autoreleasing *); しかし、これは曖昧すぎるため、その理由を完全に理解したいと思います。私が見つけたコードスニペットは、2つの星の間に__autoreleasingを配置しています。タイプはNSError**(NSErrorへのポインターポインター)なので、__autoreleasing単純に前ではなく星の間に配置するのはNSError**なぜですか? また、私が頼らなければならない他の状況があるかもしれません__autoreleasing。

8
コマンドラインからEclipse Javaプロジェクトをビルドする
コマンドラインからEclipseベースのJavaプロジェクトをコンパイルする方法はありますか? 私は(AntではなくFinalBuilderを使用して)ビルドを自動化しようとしていますが、JavaでもEclipseの専門家でもありません。たぶん、Javaコマンドラインオプションを使ってこれを行う方法を理解できるかもしれませんが、Eclipseプロジェクトは多くの無駄な努力のように感じられます。 コマンドラインを介してEclipseプロジェクトをコンパイルする方法がない場合、Eclipse内から必要なJavaコマンドラインを生成する方法はありますか?それとも裏で実行しているコンパイル手順を見つけるために私がぶらぶらできるいくつかのファイルはありますか? みんな、アリを含まない答えを探しています。元の質問をもう一度繰り返しますが、コマンドラインからEclipseプロジェクトをビルドする方法はありますか? ビジュアルスタジオで次のようなことができるので、これは不合理な質問ではないと思います。 devenv.exe /build "Debug|Any CPU" "C:\Projects\MyProject\source\MyProject.sln"

9
キャッシュの無効化—一般的な解決策はありますか?
「コンピューターサイエンスには、キャッシュの無効化と名前の付け方という2つの難しい問題しかありません。」 フィル・カールトン キャッシュを無効にする一般的な解決策または方法はありますか?エントリが古くなったことを知るために、常に最新のデータを取得することが保証されていますか? たとえばgetData()、ファイルからデータを取得する関数について考えます。ファイルが最後に変更された時刻に基づいてキャッシュされ、呼び出されるたびにチェックされます。 次にtransformData()、データを変換する2番目の関数を追加し、その関数が次に呼び出されるときにその結果をキャッシュします。それはファイルの知識を持っていません-ファイルが変更された場合、このキャッシュが無効になるという依存関係をどのように追加しますか? が呼び出さgetData()れるたびに呼び出しtransformData()、それをキャッシュの構築に使用された値と比較できますが、結果として非常にコストがかかる可能性があります。

5
エンティティフレームワークを「ウォームアップ」する方法 いつ「冷たく」なりますか?
いいえ、2つ目の質問の答えは冬ではありません。 序文: 私は最近、Entity Frameworkについて多くの研究を行っていますが、クエリがウォームアップされていないときのパフォーマンス、いわゆるコールドクエリに悩まされています。 私が通過したパフォーマンスに関する考慮事項の Entity Frameworkの5.0についての記事。著者は、ウォームクエリとコールドクエリの概念とそれらの違いを紹介しました。これらも、その存在を知らずに気づきました。ここで、私がたった6か月しか経験していないことに言及する価値があるでしょう。 これで、パフォーマンスの観点からフレームワークをよりよく理解したい場合に、さらに調査できるトピックがわかりました。残念ながら、ほとんどのインターネット上の情報のが上の任意の付加的な情報を見つけるために、したがって、私のことができない、時代遅れまたは主観で肥大化しているウォーム対コールドクエリトピックを。 基本的に、これまでに気付いたことは、再コンパイルまたはリサイクルのヒットが発生するたびに、最初のクエリが非常に遅くなることです。予想どおり、後続のデータ読み取りは高速(主観的)です。 私たちは、Windows Server 2012、IIS8、SQL Server 2012に移行する予定です。私はジュニアとして、実際にそれらをテストする機会を得ました。彼らが私の最初のリクエストのために私のアプリケーションを準備するウォーミングアップモジュールを導入してとても嬉しいです。ただし、Entity Frameworkのウォームアップの進め方がわかりません。 私がすでに知っていることはやる価値があります: 提案されているように、事前にビューを生成します。 最終的には、モデルを別のアセンブリに移動します。 私がやろうと考えていることは、常識的に考えて、おそらく間違ったアプローチです: 物事をウォームアップし、モデルを生成して検証するために、Application Startでダミーデータを読み取ります。 質問: Entity Frameworkでいつでも高可用性を実現するには、どのような方法が最適ですか? Entity Frameworkはどのような場合に「コールド」になりますか?(再コンパイル、リサイクル、IIS再起動など)

11
SchrödingersMySQLテーブル:存在しますが、存在しません
私はすべての最も奇妙なエラーを抱えています。 テーブルを作成または変更するときに、「テーブルが既に存在する」というエラーが発生することがあります。ただし、DROP TABLEは「#1051-不明なテーブル」を返します。だから私は作成できない、ドロップできないテーブルを手に入れました。 データベースを削除しようとすると、mysqldがクラッシュします。場合によっては、別の名前で別のデータベースを作成することが役立つこともありますが、そうでない場合もあります。 私は〜50テーブルのDBを使用しています。すべてInnoDBです。この問題は、異なるテーブルで発生します。 Windows、Fedora、Ubuntu、MySQL 5.1および5.5でこれを体験しました。PDO、PHPMyAdmin、またはコマンドラインを使用する場合の同じ動作。MySQL Workbenchを使用してスキーマを管理しています。関連するエラー(エンドラインなど)がいくつかありましたが、どれも私には関係がありませんでした。 いいえ、それはビューではなく、テーブルです。すべての名前は小文字です。 私はグーグルできるすべてを試しました-テーブルをフラッシュし、dbからdbに.frmファイルを移動し、mysqlログを読み取りましたが、何もかも全部再インストールするしかありませんでした。 「テーブルの表示」は何も明らかにしません、「説明」テーブルは「テーブルが存在しない」と言いますが、.frmファイルはありませんが、「テーブルの作成」はエラーで終了します(「テーブルが存在しない場合はテーブルの作成」も行います)。データベースを削除するとmysqlがクラッシュする 関連するが役に立たない質問: Mysql 1050エラー「テーブルはすでに存在しています」が実際には存在しない MySQLテーブルが存在しないエラーですが、存在します 編集: mysql> use askyou; Database changed mysql> show tables; Empty set (0.00 sec) mysql> create table users_has_friends (id int primary key); ERROR 1050 (42S01): Table '`askyou`.`users_has_friends`' already exists mysql> drop table users_has_friends; ERROR 1051 (42S02): …
118 mysql 

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