タグ付けされた質問 「libraries」

ライブラリは、独立したソフトウェアを開発するためのデータやサービスを提供するリソースの集まりです。

7
なぜ内部アプリケーション用の内部ライブラリを開発するのですか?
内部アプリケーションの開発専用に使用する内部ライブラリを開発する必要がある理由を理解できません。組織外の誰かが作成したソフトウェアを使用したい場合は、ヘッダーファイルと.aまたは.soファイルを送ってプロジェクトにリンクするだけでよい(同じ環境でコンパイルされていると仮定) 。 しかし、ヘッダーと実装ファイルにアクセスでき、それらをソースツリーに含めてすべて一緒にコンパイルできるときに、内部ライブラリを内部アプリケーションにリンクするためだけに開発する必要があるのはなぜですか? つまり、ソースコードが記述されている場合、それをバイナリライブラリにコンパイルしてアプリケーションにリンクするか、プロジェクトのソースファイルに含めて定期的にコンパイルするだけにするかをどのように決定しますか? 各プロジェクトに「インクルード」ファイルと言っても、現在開発中のプロジェクトのソースツリーに各ファイルをコピーして貼り付けることを意味するものではありません。通常の方法でプロジェクトのファイルに含めることができる共通のソースコード(#includeなど)を含む(任意のプロジェクトとは別の)ディレクトリ/ライブラリを開発することを意味します。 psここでは、複数のデスクトップアプリケーション用のc / c ++開発について話しています。
10 libraries 

1
組み込みのPythonモジュールを編集できますか?
私は現在Pythonを学習しており、数学ライブラリの使用についての本の途中です。PythonのWebサイトを調べたところ、ライブラリが少々不足していて、さらに便利な関数をいくつか作成していることがわかりました。たとえば、先に進んで、係数を取得して方程式の根を返す関数を作成しました。本質的には二次式関数です。これをpython Mathライブラリに追加できるかどうか疑問に思っています。そうでない場合は、関数を呼び出すだけで作成した他のPythonプログラムでその関数を使用できるように、どのように保存しますか?

9
開発者は、実際のプログラムの前に内部ライブラリをコンパイルする必要がありますか?
最近、私が一緒に仕事をしている上級開発者が、開発者に最新バージョンを入手し、プロジェクトの一部として主要な内部ライブラリをコンパイルするよう要求することを主張しました。これは、プロジェクトチームが内部のMavenリポジトリから取得する安定したバージョンを使用して作業する必要があるという反論とは対照的です。開発者は、ソースコードを開発者のマシンで利用できるようにすると、ライブラリのソースを読み取ることができるので時間を節約できると主張しました。必要な機能が利用可能かどうかを判断するコード。 上級開発者には有効な議論がありますか?それとも、開発者に、ライブラリのソースコードを読み取って、カプセル化の基本的な哲学に対抗し、そもそもライブラリを用意するように要求するのでしょうか。

2
ライブラリでのEINTRの適切な処理方法
EINTR図書館で推奨されるエチケットは何ですか? 現在、POSIX APIでいくつかのファイルシステムタスクを実行する関数を書いていますが、使用する多くの呼び出しはを返す可能性がありEINTRます。さらに、この関数は状況によってはブロックされる場合があります。(興味のある人のために、それはロック機構を実装しています。) これをできるだけ一般的にするために、中断されたシステムコールを処理する適切な方法を知りたいと思います。 私が読んだほとんどの情報源から、人々は通常、電話を再試行し、ビジネスを続けます。ただし、かなりの時間がかかる場合があるため、機能を中断する正当な理由がある場合があるため、ここでそれを行うのが正しいかどうかはわかりません。さらに、それはEINTR単にが関数に飲み込まれることを意味し、呼び出し元はそれが発生したことを示しません。 私の現在の戦略はEINTR、発信者に受信して通知した場合、すぐに操作を中止することです。このようにして、呼び出し元は私の機能を再試行するかどうかを決定できますよね?(または、おそらく私の信号の理解に欠陥がありますか?)
10 c  libraries  signals  posix 

2
Javaで書かれたAPIで内部クラスをカプセル化する方法は?
ライブラリを書かなければならない。当然、非常に小さなAPI(必要に応じてできるだけ広い)のみを使用する必要があります。ライブラリの内部はやや複雑です。したがって、構造化が必要です。 構造化について、私は現在2つの方法を考えています。 1.パッケージを使用します。 長所:ライブラリはきちんと構成できます。その場所のすべて。 短所:パッケージの境界線を介したクラスの使用にはパブリッククラスが必要であり、したがってライブラリ全体のAPIを拡張します。 2.すべて1つのパッケージで静的内部クラスを使用します。 長所:必要なパブリッククラス(クラス、メソッドなど)はごくわずかです。 短所:クラスは、それらを構造化するためにのみ非表示になります。これは、非常に多くの静的内部クラスが使用される非常に数少ないユースケースの1つです。開発者はそれに慣れておらず、見落とす可能性があります。 よく構造化されたライブラリで小さなAPIを実現するより良い方法はありますか? 編集:言及するのを忘れていました:Androidライブラリ用です。したがって、java9はありません。

2
例外クラスの設計
小さなライブラリをコーディングしていますが、例外処理の設計に問題があります。私はC ++言語のこの機能に(まだ)混乱していると言わざるを得ません。例外クラスを適切に処理するために何をしなければならないかを理解するために、この件について可能な限り読んでみました。 クラスのsystem_errorSTL実装からインスピレーションを得たタイプのアプローチを使用することにしましたfuture_error。 エラーコードを含む列挙があります: enum class my_errc : int { error_x = 100, error_z = 101, error_y = 102 }; そして、単一の例外クラス(error_category構造のタイプとsystem_errorモデルが必要とする他のすべてによってバックアップされます): // error category implementation class my_error_category_impl : public std::error_category { const char* name () const noexcept override { return "my_lib"; } std::string message (int ec) const override { std::string …

2
Haskell GUI:Haskellでできること
Haskellでグラフィックスを試してみたいと思っています。私が見てきたことから、利用可能なライブラリは、C / C ++ライブラリのフロントエンドか、最小限の機能を備えたそれらの抽象化のいずれかです。高レベルのライブラリーは私のニーズに合わないようなので、低レベルのフロントエンドのままにしておきます。 必要なのは、タイルとテキストをレンダリングすることです。これは、非常に単純なゲームの基本です。私はこれをCで行う方法を知っており、グラフィックをCで記述してHaskellとインターフェイスできると考えていました。別の方法は、Haskellライブラリを使用してグラフィックを書き込むことです。 私の質問は、利用可能なHaskellライブラリが私が望むものを達成できるかどうかです。私は後ろに曲がりたくありません。Cが私が知りたいよりも上手にできるなら。

3
有用なJavaライブラリを作成して公開する方法
私は最近、オブジェクトのリストごとに順列を生成するJavaクラスに取り組みました。とにかく、私はこのライブラリーを一般に提供してもらいたいので、いくつか質問があります。 私が目にするほとんどのライブラリには、特にcom/ を含む、この複雑なパッケージの命名がありorgます。これらの規約はありpermutationsますか、それともパッケージで十分ですか? これらを公開するための特定の形式はありますか?ソースコード/ javadocに個別のWARを含める必要がありますか? GitHubリポジトリにファイルがあります。私はそこにファイルを提供できると思いますが、どのようにして私のリポジトリを見つけてもらえますか?

4
いくつかの大きなライブラリまたは多くの小さなライブラリ?
数か月の間に、現在すべてのプロジェクトに組み込んでいるゲーム開発のための小さなフレームワークを作成しました。 フレームワークは、SFML、LUA、JSONcpp、およびその他のライブラリに依存しています。オーディオ、グラフィック、ネットワーキング、スレッディングを扱います。いくつかの便利なファイルシステムユーティリティとLUAラッピング機能があります。また、文字列解析ヘルパーや数学ユーティリティなど、多くの便利な「ランダム」ユーティリティメソッドがあります。 私のプロジェクトのほとんどはこれらの機能をすべて使用していますが、すべてを使用しているわけではありません。 ファイルシステムとネットワーク機能のみを使用する自動アップデーターがあります ネットワーク機能のないゲームを持っています JSONcppを必要としないプロジェクトがあります これらの文字列/数学ユーティリティのみが必要なプロジェクトがあります つまり、SFML / LUA / JSON共有ライブラリは、たとえ使用されていなくても、すべてのプロジェクトに含める必要があります。プロジェクト(非圧縮)のサイズはこのように10MB以上で、そのほとんどは未使用です。 代替策は、フレームワークを多くの小さなライブラリに分割することです。これは、はるかに効果的でエレガントになると思いますが、より多くのDLLファイルとプロジェクトを維持する必要があります。 フレームワークを多数の小さなライブラリに分割する必要があります。 グラフィックス スレッディング ネットワーキング ファイルシステム 小さいユーティリティ JSONcpp utils LUA utils これは最良の解決策ですか?

3
重大なAPIの変更:ライブラリユーザーが簡単に移行できるようにするにはどうすればよいですか?
以前は、@DeprecatedAPIバージョンにアノテーションを追加する標準的な方法を使用していましたが、今後のバージョンでは削除されます。 現在、ライブラリのメジャーバージョンを準備しています。多くのAPIパーツが削除され、名前が変更されています。 既存のユーザーが簡単に移行できるようにするには、新しいライブラリバージョンを古いバージョンと並べて使用できると便利な場合があります。 メリット バージョン間の動的切り替えを実装できます 新しいバージョンでバグが見つかった場合、アプリケーションは前のバージョンにフォールバックできます(ベータ段階で役立ちます) これを行うために、私は単純に新しいパッケージに新しいライブラリのバージョンを移動することができcom.mycompany.libraryへcom.mycompany.library.v2 これは一般的な方法ですか、それともこのようなJavaライブラリの並列使用について他の推奨事項がありますか? バックグラウンド: ライブラリはシンプルなドキュメントコンバーターです。そのため、convert(in、out)メソッドのほかに、多くの構成プロパティといくつかのイベントハンドラーがあります。サイドバイサイドの使用法を提供する場合、コンシューマーはそれらを動的にインスタンス化して構成できます。 if (useVersion2) { com.mycompany.library.v2.Converter c = new com.mycompany.library.v2.Converter(); // configure and run c.setOption(...); c.convert(in, out); } else { com.mycompany.library.Converter c = new com.mycompany.library.Converter(); // configure and run c.setOption(...); c.convert(in, out); } (質問は/programming/37192945/から移動しました)

2
STLを複数の共有ライブラリに静的にリンクすることの何が問題になっていますか?
ここにシナリオがあります: libA.soとlibB.soは両方とも同じSTLに静的にリンクします。 libA.soには、std :: stringを返すパブリックAPIがあります。 libB.soはこの関数を呼び出し、文字列のコピーを受け取ります。 文字列のlibB.soのコピーがスコープ外になると、文字列のデストラクタが呼び出されます。 コピーされた文字列を解放しようとするアプリケーションセグメントフォールト。 このように静的にリンクすることは悪いことを他の場所で読んだことがありますが、なぜそれが悪いのかをもっと理解したいと思います。上記のシーケンスがクラッシュする理由を誰かが説明できますか?

1
依存関係をできるだけ少なくして科学ソフトウェアを配布するにはどうすればよいですか?
私の研究の一環として、他人に配布する必要のないPythonおよびMATLABコードを多数記述しています。ソフトウェアを配布する必要がある場合でも、PythonとMATLABの両方が解釈されるため、共有が比較的簡単になります。 今、私はC ++で配布したいソフトウェアを書いています。私は自分のマシンでソフトウェアをコンパイルする方法を理解していますが、他の人にソフトウェアを提供するために何をする必要があるかを理解していません。 まず、プロジェクトの詳細:視覚化を計算して表示するためのコードを書いています。プロジェクトはグラフベースなので、LEMONグラフライブラリを使用しています。視覚化を表示する目的でVTKとOpenGLの実装を調査しています。私のソフトウェアを使用できるように、それらの環境のユーザー向けにPythonおよびMATLABバインディングを記述したいと思います。また、WindowsおよびLinuxバージョンを作成したいと思います(OS Xについてはまだ考えていません...)。 それでは、レモングラフライブラリを例に考えてみましょう。これは、小さな共有オブジェクトを伴う一連のヘッダーです。開発システムでは、CMakeを使用してライブラリをコンパイルし、プロジェクトにリンクします。 次に、Windowsで実行している誰かにソフトウェアを提供したいとします。私は彼らがインストーラーをダウンロードし、ボタンを1つか2つクリックして、すべての面倒を見てもらいたいと思っています。レモンライブラリやOpenGLのインストールについて心配してほしくありません。彼らは意図的に何かをコンパイルする必要はありません。これは可能ですか? 私はそれを感じていますが、参照を検索するときに不足します。Windowsでバイナリをコンパイルすると、Windows OSを実行している誰にでもそのバイナリを配布できるはずだという漠然とした考えがあります。しかし、私が使用するライブラリはどうですか?Windowsでそれらを静的にリンクする必要があると思います。これで、依存関係の問題が解決されます。しかし、私の心の奥で、静的リンクは良い習慣ではないことを読んだことがあります(または、これはLinuxだけですか?) ご存知のように、私は少し迷っています。私は正しい方向に微調整し、何かを知っていたら読んだ参考文献をいただければ幸いです!

3
一部のopensouceライブラリにコメントがないのはなぜですか?
これがほとんどのオープンソースライブラリで発生するかどうかはわかりませんが、私が知っている多くのライブラリ(OpenSSL、Webkitなど)はすべてコメントがないか、コメントがほとんどありません。 非常に少数のドキュメントは言うまでもなく、ソースコードを読むのは困難です。メンバー変数が何を意味するのか、またはこの関数が何をするのかはほとんど理解できません。これはコーディング標準の慣行に反しているようです 何故ですか?コメントをほとんど付けずに、これらのオープンソースに人々が協力するにはどうすればよいですか

2
Cでのライブラリのリンクに関する質問
LinuxでGCCコンパイラを使用してC(まだ初心者)を学んでいます。math.hヘッダーで使用されるライブラリなど、一部のライブラリを含める場合は、手動でリンクする必要があることに気付きました。上記の数学ライブラリ-l[library-name]など、さまざまな形式のフラグを使用してライブラリをリンクしてい-lmます。 ただし、コマンドラインからおよび/または切り替えた後GeanyにCode::Blocks、私は気づいCode::Blocks用途は、g++プログラムをコンパイルする代わりに、gcc私は(プロジェクトが間違いなくCとして指定されているにもかかわらず)に慣れていること。また、Code::Blocksそのような数学ライブラリなどのライブラリ-手動でコンパイルする際にリンクするライブラリを必要としないだけで仕事を。 2つの質問があります。 まず、g++コンパイラでCプログラムをコンパイルするのは「悪い」のでしょうか。これまでのところそれは動作するようですが、結局のところ、C ++はCではなく、g++コンパイラーがC ++用であることを確信しています。 次に、g++ライブラリの自動リンクを実行しているのはコンパイラCode::Blocksですか?
8 c  libraries  gcc  linking 

3
大規模なプロジェクトで機能が属する場所をどのように決定しますか?
私の現在の開発状況では、多くのDLL、実行可能ファイル、静的ライブラリがあります。DLLに何を入れるかをどのように決定しますか?実行可能ファイルには何を入れるべきですか?異なる実行可能ファイルに別々の機能があるのはなぜですか?私は答えが簡潔になることを望んでいますが、これはそれが思われるだろう主に意見が分かれたトピックです。 大規模なプロジェクト(複数の実行可能ファイル)のどこに機能が存在するかをどのように決定しますか?「グッドデザイン」から「モジュール性」、「管理者が要件ドキュメントに入れるものは何でも」まで、さまざまな回答を期待しています。

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