ソフトウェア工学

システム開発ライフサイクル内で働く専門家、学者、学生向けのQ&A

1
LLVMを介してC ++アプリケーションからJavaへのポートを作成することは実行可能ですか
LLVMを使用してC ++アプリケーションをJavaバイトコードに移植することは、どの程度実行可能ですか(おそらくLLJVM)。 現在のところ、プロセスはC ++で記述されていますが、新しいクライアントでは、明らかにネイティブコードがない(JNIがない)Java仮想マシンを使用して、マルチプラットフォームでプログラムを実行できるようにする必要があります。アイデアは、生成されたjarを取得して別のシステム(Linux、Win、32ビット-64ビット)にコピーできるようにすることであり、動作するはずです。 周りを見回すと、C ++をLLVM IRコードにコンパイルしてから、そのコードをJavaバイトコードにコンパイルできるように見えます。生成されたコードが読み取り可能である必要はありません。 私はemscriptenを使用して同様のもので少しテストしました。これはC ++コードを取り、それをJavaScriptにコンパイルします。結果は有効なJSですが、完全に読み取ることができません(アサンブラーのように見えます)。 この技術を使用して、C ++からJavaバイトコードへのアプリケーションの移植を行った人はいますか? どのような問題に直面する可能性がありますか? 量産コードに対する有効なアプローチはありますか? いくつかのコメントの後で私のポイントをより明確にするために、おそらくポートが十分に使用されていない可能性があります。結果として、読み取り可能なソースコードは期待できません.javaバイトコードだけなので、今後開発される「ポート」ではありません。ターゲットのプラットフォームは、ネイティブのアッサンブラーではなく、Java JVMでなければなりません。 注:現在、いくつかの非標準C ++およびクローズソースライブラリがあることを承知しています。この非標準コードおよびすべてのクローズソースライブラリを削除し、無料のLibreオープンソースソフトウェアを使用する予定です。したがって、すべてのコードが標準C ++コードであると仮定しましょうコンパイル時に利用可能なすべてのコード。 注2:移植可能なC ++コードを記述して、それを目的のターゲットプラットフォームにコンパイルするオプションではありません。コンパイルされたプログラムはマルチプラットフォームでなければならず、したがってJVMを使用します。 注3:現在、Pythonや他の言語ベースに適用される同様のソリューションについては検討していませんが、それについても聞きたいと思います。これにより、ターゲットの実行可能ファイルはjavaバイトコードである必要がありますが、C ++を有効なpythonコンパイル済みコードにコンパイルするオプションがある場合は、それらについても聞きたいと思います。
9 java  c++  porting 


1
ヘッダーのマクロ関数と静的関数
関数を使用できる多くの簡単なタスクでf(x,y)は、プレーンCではマクロが使用されます。関数呼び出し(つまり、任意のコードのコード拡張ではなく、関数のインライン化に使用されるマクロ)で解決できるこれらのケースについて具体的に尋ねたいと思います。 他のCファイルからリンクされている可能性があるため、通常、C関数はインライン化されません。ただし、静的C関数は、それらが定義されているCファイル内からのみ表示されます。したがって、コンパイラーによってインライン化できます。多くのマクロは、より安全なコードを生成するため、静的関数に変換することで置き換える必要があると聞きました。 これが良くないケースはありますか? 繰り返しますが、##と同様に、関数としてまったく表現できない構造を持つコード生成マクロについては尋ねません。
9 c 

3
node.jsコールバックピラミッドの処理
私はnodeを使い始めたばかりですが、すぐに気付いたのは、コールバックが愚かなレベルのインデントまでどれだけ速く構築できるかです。 doStuff(arg1, arg2, function(err, result) { doMoreStuff(arg3, arg4, function(err, result) { doEvenMoreStuff(arg5, arg6, function(err, result) { omgHowDidIGetHere(); }); }); }); 公式のスタイルガイドは別の関数内の各コールバックを置くことを言いますが、それは、オブジェクトがすべてを通過する必要があるように、単一のオブジェクトは、利用可能ないくつかの層下にトップレベルで宣言されたクロージャの使用に過度に制限的と思われる、となってい中間コールバック。 ここで助けるために関数スコープを使用しても大丈夫ですか?グローバルっぽいオブジェクトへのアクセスを必要とするすべてのコールバック関数を、そのオブジェクトを宣言する関数の中に置いて、クロージャーに入りますか? function topLevelFunction(globalishObject, callback) { function doMoreStuffImpl(err, result) { doMoreStuff(arg5, arg6, function(err, result) { callback(null, globalishObject); }); } doStuff(arg1, arg2, doMoreStuffImpl); } など、さらにいくつかのレイヤーについて... または、すべてのコールバックごとに名前付き関数を宣言せずにインデントのレベルを下げるのに役立つフレームワークなどはありますか?コールバックピラミッドをどのように扱いますか?

2
Windows上の.NET用のRSpec + Seleniumテスト
私はRails開発者で、MacでRSpec、Capybara、Selenium Webdriverを使用してTDDを行っています。現在、私の会社から、このアプローチをWindows環境の.NETに使用するように依頼されました。これを行う最良の方法は何ですか? Rubyをインストールして、RSPEC、Capybara、Selenium Webdriverを使用して統合テストを行うことができます。しかし、単体テストはどうですか?NSpecも調べましたが、統合テストのためにそれをCapybaraまたはSeleniumと組み合わせることができるかどうかはわかりません。 ここでの良いアプローチは何でしょうか?
9 .net 


2
RESTまたは多層異種システムのメッセージキュー?
Client application-> Front-end API cloud server->のような3層システム用のREST APIを設計していますuser's home API server (Home)。 Homeはホームデバイスであり、Front-endWebsocketまたは長い投票(これは、RESTに違反している最初の場所です。後でさらに悪化します)を介した接続を維持することになっています。Front-endほとんどの場合、Client要求をHome接続にトンネルし、一部の呼び出し自体を処理します。にHome通知を送信することがありますClient。 Front-endHome基本的に同じAPI を持っています。LAN経由で直接Client接続している可能性がありますHome。この場合、それ自体にHomeいくつかのClientアクションを登録する必要がありFront-endます。 このシステムでのRESTの長所は次のとおりです。 RESTは人間が読める形式です。 RESTには、動詞(CRUDなど)、名詞、および応答コードのプロトコルオブジェクトへの明確に定義されたマッピングがあります。 HTTP上で動作し、可能なすべてのプロキシを渡します。 RESTコントラは次のとおりです。 リクエストとレスポンスのコミュニケーションスタイルだけでなく、パブリッシュサブスクライブも必要です。 3層通信エラーを処理するには、HTTPエラーコードでは不十分な場合があります。必要な接続が壊れていて、あるはずだったことを知るためだけに、非同期呼び出しにFront-end戻る場合があります。202 AcceptedHome503 Homeにメッセージを送信する必要がありますClient。ClientポーリングするFront-endか、接続を維持する必要があります。 我々は考えているWAMP / アウトバーンを、それがすでにメッセージキューのように見ていることを私を襲ったとき、機能をパブリッシュ/サブスクライブを取得するのWebSocketの上に。 一種のメッセージングキューをトランスポートとして評価する価値はありますか? メッセージキューの逆のように見えます: CRUD動詞とエラーコードをメッセージレベルで自分で定義する必要があります。 「メンテナンスコストが高い」と書いてありますが、どういう意味ですか? これらの考慮事項はどのくらい深刻ですか?

1
数学はHaskellの型システムの背後にある理論を理解する必要がありますか?
最近、私はハスケルに深く興味を持っています。 新しい概念(forallキーワードやSTモナドなど)とHaskellの型システム全般を学習しようとしている間、私は絶えずカテゴリー理論とラムダ計算の概念に出くわしました。だから、私は思う: Haskellの型システムを十分に理解するには、数学の他のどの分野が重要ですか? これらの数学の厳密な研究を見逃して、代わりに特定の関連する概念に焦点を当てることはできますか?(例えば、ラムダ計算における数量詞。)もしそうなら、どの概念が不可欠ですか? タイプとプログラミング言語をすぐに取り上げたいと思っていますが、適切と思われる代替の参考資料を提案してください。

2
Ruby on Railsで画像を保存する方法は何ですか?
私はiOSで開発しており、PHPバックエンドからRuby on Railsに切り替えています。交換形式はJSONです。 Googleで「Railsに画像を保存」をすばやく検索すると、画像データをblobとしてデータベースに保存することについてほとんどすべての結果が得られます。誤解しているかもしれませんが、データベースに画像データを保存すると、ファイルの場所( '/img/subcat/4656.png'へのリンクを保存するのとは対照的に)に多大な時間とスペースが無駄になるという印象を受けます。 PHPでは、データを受け取り、ファイル名を生成し、そのファイルをディスクに保存し、データベースをディスク上のイメージの場所で更新するのはかなり標準的です。これはRuby on Railsでも同じですか、それとも、知らない組み込みのActiveRecord画像機能がありますか?

3
Entity Frameworkデータベースコンテキスト(モデル)をMVVM WPFのViewModelに接続する最良の方法は何ですか?
上記の質問のように:Entity Frameworkデータベースモデル(コンテキスト)をMVVM(WPF)のviewModelに接続する最良の方法は何ですか? 私はWPFでMVVMパターンを学習しています。多くの例は、viewModelにモデルを実装する方法を示していますが、その例のモデルは単なる単純なクラスであり、エンティティフレームワークモデル(ベースファーストアプローチ)と一緒にMVVMを使用したいと思います。モデルをviewModelにワイヤリングする最良の方法は何ですか。 回答ありがとうございます。 //ctor of ViewModel public ViewModel() { db = new PackageShipmentDBEntities(); // Entity Framework generated class ListaZBazy = new ObservableCollection<Pack>(db.Packs.Where(w => w.IsSent == false)); } これは私のViewModelの通常の俳優です。もっと良い方法があると思います。リポジトリパターンについて読んでいましたが、これをWPF MVVMに適応できるかどうかわかりません

6
フィールドとメソッドの引数[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 私は新しいクラスを書き始めたばかりで、厳密には必要のないメソッド引数をたくさん追加していることに気付きました。これは、クラスの一般的な構成や依存関係ではなく、特定のメソッド呼び出しに固有のクラス内の状態を回避する習慣に従っています。 そうすることは、引数を持たない可能性のある多くのメソッドが1、2、または3で終わることを意味します。 このトレードオフについてどう思うか、どのような状況でどのアプローチを取るかをどのように決定するかについて、あなたの意見を聞きたいのですが。 コードを説明するとき、コードは英語よりも理解しやすいことが多いため、両方のバリアントを含む小さな要点を作成しました:https : //gist.github.com/JeroenDeDauw/6525656

3
iOS開発のWebサービスからデータを取得するためにHTTPリクエストを作成するメソッドをどこに配置すればよいですか?
私のiOSアプリケーションにModel Carがあり、名前、年、値などのパラメーターがWebサービスからフェッチされ、リストに自動車のデータが入力されます。 非同期でサーバーに行き、車の配列を返すメソッドをどこに置くべきですか(このメソッドはすでにJSONをCar配列に変換しています)? 私の現在のアプローチは、HttpClientを受信して​​(クライアントをモックするユニットテストを実行できるように)Carクラスの静的メソッドであり、車のNSArrayを返しますが、これは良いですか? この状況で皆さんは何をしましたか? 私は最近、クラスは1つのことだけを行うべきであるというクリーンなコードを読み始めたので心配です。現在の方法では、2つのことを行うように見えます(Carに関する情報を保持し、Carのリストを取得します)。

2
Gitステージング:いつステージングするか?後で変更が発生した場合の対処
私はGitの広い世界に慣れていません。私はマニュアルを読んで練習してきましたが、検索してみて理解できなかったいくつかの点について混乱しています。 不思議なんだけど: プロジェクト(最初のコミット後)で、ソースファイルをステージングする適切なタイミングはいつですか?コミットする直前?追加/削除または変更した直後ですか? ファイルが2つのコミットの中間でステージングされ、その後変更された場合、Gitはどうなりますか?それが述べられたときのコンテンツの変更とそれ以降の内容について注意する必要がありますか? 新しいファイルを作成し、それをステージングしてから削除したい場合、Gitが「-f」フラグを使用するように求め、単純な「git -rm file.ext」が機能しないのはなぜですか? 「ステージの意味」など、Gitのマニュアルやその他のチュートリアルのさまざまな主題を読みましたが、前述のように、上記のことはまだわかりません。 ですので、できれば、自分の言葉と例を使って質問に答えてください。そうすれば、理解しやすくなるでしょう。 ありがとうございました。

2
プログラミングしないことでプログラミング言語を習得しますか?
コンピュータサイエンティストのPeter Norvigは、エッセイ「Teach Yourself to Program in 10 Years」で、約10,000時間の練習が必要だと主張しました。 しかし、ジェフ・アトウッドは彼の投稿で、「プログラミングしないことによってより良いプログラマになる方法」は彼がより良いプログラマになるための唯一の方法はプログラミングしないことだと信じていると主張しました。 これらの記事は反対です。ジェフ・アトウッドのアプローチを証明する科学的証拠はありますか?

4
開発デバイスが通常のデバイスよりも多くのリソースを提供するのはなぜですか?
私は第4世代のiPod Touchと会社の第5世代のiPod touchで動作するアプリを作成しました。 開発者以外のデバイスがアプリを実行した後に発生するクラッシュを発見したとき、私たちはリリースしようとしていました*。 「開発者用デバイス」として登録されたデバイスにより、アプリはより多くのリソースを使用できるようになるという考えが浮上しました。存在する理由を考えることができなかったので、これは私には正しくないようです。建物またはプロビジョニングプロファイリングの問題である可能性が高いように感じます。 しかし、それは議論を促しました。そもそも、ゲームコンソール開発キットなど、ターゲットプラットフォームよりも多くの機能を持つデバイスが存在するのはなぜですか。もちろん、プログラムのストレステストを行うのは良いことですが、ターゲットプラットフォームのより正確な表現が意味をなさないのではないでしょうか。 TL; DR-開発キットにターゲットプラットフォームよりも多くのリソースがあるのはなぜですか? *開発者以外のデバイスが第3世代以上の場合。アプリとxcodeがインストールされているコンピューターから直接ではなく、サーバーからアプリをダウンロードするiOSデバイス。 似たような別の質問があることに注意してください。ただし、シミュレータについて質問しているため、実際には異なります。シミュレータと実際のデバイスの使用には大きな違いがあることを理解しています。

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