問題タブ [multiplatform]
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.
javascript - コマンドラインを使用してJavaScriptコードを美化するにはどうすればよいですか?
JavaScriptコードを美化するためにバッチスクリプトを書いています。WindowsとLinuxの両方で動作する必要があります。
コマンドラインツールを使用してJavaScriptコードを美化するにはどうすればよいですか?
java - .NET は、Java が主張するような WORA (write once, run Anywhere) プラットフォームですか?
Sun のスローガンをとても鮮明に覚えています... 「Write Once, Run Anywhere」 . プログラムは標準のバイトコードにコンパイルされるため、Java 仮想マシンを備えたどのデバイスでも実行できるという考えです。何年にもわたって、Java は多くのプラットフォーム/デバイスに採用されてきたようです。
これは意図されたものですか、それとも .NET の意図でしたか。もしそうなら、それを実現するためにどのような努力がなされていますか?
c++ - プログラムでマシンのコア数を見つける
プラットフォームに依存しない方法で、マシンが C/C++ から持っているコアの数を判断する方法はありますか? そのようなものが存在しない場合、プラットフォーム (Windows/*nix/Mac) ごとに決定するのはどうですか?
c - プロセス開始からの経過時間の取得
プログラムが開始されてからの経過時間 (壁時計時間) を取得する方法が必要です。これは、ユーザーがシステム クロックに干渉しても回復できる方法です。
Windows では、非標準の clock() 実装ではうまくいきません。起動時にサンプリングされた時間との差を計算するだけで機能するように見えるため、「時計の針を戻す」と負の値が得られます。 .
UNIX では、clock/getrusage はシステム時刻を参照しますが、gettimeofday などの関数を使用してタイムスタンプをサンプリングすると、Windows で clock を使用するのと同じ問題があります。
私は精度にはあまり興味がありません.0.5秒の解像度タイマーをバックグラウンドで回転させて、クロックスキューが発生したときにクロックスキューに対抗することで解決策をハックしました(サンプル時間と予想時間の差が1秒を超える場合)新しいベースラインに予想されるタイマーを使用します)が、もっと良い方法があるに違いないと思います。
c++ - 自明でないコンストラクターで共用体を初期化する
メンバーを 0 に初期化するカスタム コンストラクターを作成する構造があります。古いコンパイラで、リリース モードの場合、memset を 0 に設定しないと、値が初期化されないことがわかりました。
この構造体をユニオンで使用したいのですが、自明でないコンストラクターがあるためエラーが発生します。
では、質問 1. デフォルトのコンパイラが実装するコンストラクターは、構造体のすべてのメンバーが null 初期化されることを保証しますか? 重要なコンストラクターは、すべてのメンバーの memset を「0」にして、クリーンな構造を確保します。
質問 2: 基本構造でコンストラクターを指定する必要がある場合、その要素を含むように共用体を実装し、0 で初期化された基本要素を確保するにはどうすればよいですか?
64-bit - autotools はマルチプラットフォームの makefile を作成できますか
私が数年間開発してきたプラグイン プロジェクトがあり、プラグインは [プライマリ アプリケーション バージョン、サードパーティ ライブラリ バージョン、32 ビットと 64 ビット] のさまざまな組み合わせで動作します。autotools を使用して、プラグインのすべてのバージョンをビルドする単一のメイクファイルを作成する (クリーンな) 方法はありますか?
autotools のドキュメントをざっと読んでわかる限り、私が望むものに最も近いのは、プロジェクトの N 個の独立したコピーを作成し、それぞれに独自のメイクファイルを作成することです。これは、(a) コードの変更をすべての異なるコピーに継続的に伝達する必要があり、(b) プロジェクトを何度も複製すると多くの無駄なスペースがあるため、テストと開発には最適とは言えません。より良い方法はありますか?
編集:
私はしばらくの間、独自のソリューションを展開してきました。そこでは、派手なメイクファイルと、さまざまなサードパーティのライブラリ バージョンなどを追跡するためのいくつかの perl スクリプトがあります。そのため、他の非 autotools ソリューションに対してオープンです。他のビルド ツールについては、エンド ユーザーが非常に簡単にインストールできるようにしたいと考えています。また、ツールは、さまざまなサード パーティのライブラリやヘッダーを問題なく検索できるほどスマートである必要があります。私は主に Linux ソリューションを探していますが、Windows や Mac でも機能するソリューションがあればおまけになります。
build - クロスプラットフォームドライバー、ライブラリ、GUIビルドを最もよくサポートしているビルドシステムはどれですか?
GNUとMicrosoftの両方のツールチェーンを使用して、すべての主流OS用のドライバー、ライブラリ、コマンドラインツール、GUI、およびOSインストールパッケージを生成する100万行を超えるマルチプラットフォームプロジェクトのビルドシステムの最良の選択は何でしょうか?
私たちのソースコードは主にCで、Python、C#、GNU makefile、そして少しのC++とbashが含まれています。これは主に1つのリポジトリにありますが、ソースコードをさまざまなサードパーティにプッシュします。サードパーティはすべて、ソースコードコードリポジトリを持っています。ビルドを高速に保つことにも関心があります。これには、プロジェクトの分割が含まれる場合があります。
現在、GNU make、bash、python、およびMicrosoftのDDKBUILDを組み合わせて使用しています。主な問題は、makeの上に複雑なスクリプトのセットを維持していて、サードパーティ(できればオープンソース)のツールを使用することを好むことと、cygwinがWindowsで堅牢であることが証明されていないことです(たとえば、フォークが常に可能であるとは限りません) )、および現在のビルドシステムはツールチェーンをビルドまたはインストールしないため、ツールチェーンのバージョン変更に対して脆弱です。
perl - Perl マシンまたはプラットフォームに依存する TDD を行うにはどうすればよいですか?
マシンまたはプラットフォームに依存する機能またはモジュールをテストするにはどうすればよいですか? たとえば、Net::Ifconfig::Wrapper$^O
のようなモジュールまたはモジュールを調べたり依存したりしますか? Net::Ifconfig::Wrapper が正しい値を返すかどうかをテストする必要はありませんが、それらの値で正しいことを行っているかどうかをテストする必要があります。
ありがとう!
編集: テスト$^O
は思ったより簡単でした:
何らかの理由で、読み取り専用の変数だと思いました。
c++ - 過負荷。-> および :: マルチプラットフォーム クラスで使用するため
サポートしたい OS ごとに 1 つずつ、3 つのウィンドウ クラスがあるとします。
- Windowsウィンドウ
- OSXウィンドウ
- Linuxウィンドウ
それらはすべてWindowクラスから継承します。これは、インスタンス化するクラスでもあります。Window クラスには . -> および :: 演算子がオーバーロードされ、(IFDEF に基づいて) 実行されている OS に応じて、this ポインターが関連するクラスにキャストされます。
私がやりたいことは、どの OS が実行されているかについての手がかりなしに Window インスタンスを作成することです。この考え方はかなり間違っていますか?ダウンキャストは危険ですか?これを行うためのより良い方法はありますか?
これを行うためのライブラリがあることは承知していますが、自分で試してみたいと思います。
最も簡単な方法は、工場を作成することだと思います。しかし、このようなことができるでしょうか?
user-interface - マルチプラットフォーム.netアプリケーションのUI
Linuxでプログラムを実行したいのですが、UIについてどうしたらよいかわかりません。現在、私はWPFを使用していますが、Monoではすぐにはサポートされない可能性があります。UIコントロールは、非UIコードによって直接編集されます。
Windowsフォームへの切り替えが最も簡単ですが、Linuxではあまり見栄えが良くないと思います。
私が今夢見ているのは、標準のコントロール(標準のメンバーを含む)を提供し、UI以外のコードを他のコードから遠ざける、ある種の抽象的なUIを持つことです。したがって、抽象UIの変更を具体的なUIに変換する必要があります。これは大変な作業ですが、コードは非常に再利用可能です。
あなたはどうしますか、そして最後のアイデアについてどう思いますか?
(Windowsに新しいものをインストールする必要がない場合は良いでしょう。)