Sack System抽象化コンポーネントキット。
libuv、libsdl、gkt、qt、...それらはすべて1つだけではありません。主に、メカニズムをロックしている場合と存在しない場合、リスト、スタック、キューのcに拡張します。オーバー/アンダーフローまたは使用(書き込み)を無料で識別するために構築されたメモリ診断ティクス。ファイルシステムイベント通知標準API、シンプルなスレッド、バックグラウンドスレッド、HTTP、WebSocket、JSON、JSON6、JSOXパーサー、XMLパーサーで動作するイベントベースのネットワーク。データベースの接続と使用を簡素化するSQLite/ODBC共通ラッパー。単純な分数数値ライブラリ、ベクトルライブラリ、手順および関数登録システム。複雑なプラグ可能なシステムでライブラリモジュール相互通信の関数またはインターフェイステーブルの両方を登録できます。ファイルシステムの抽象化と仮想ファイルシステムインターフェイス。
なんて?それ自体はオペレーティングシステムではなく、タスクローダーが不足しており、プロセス割り当て自体がありません。メモリはシステムから要求され、コードのために管理されると、メモリはプロセス間で共有される場合があります。
ヘッダードキュメント情報から公開されたドキュメント-http://sack.sf.net(https://sourceforge.net/projects/sack/)
Gitは多くの場合、より最新です。 GITは、主要な開発ソース制御システムです。 Mercurialは使用されなくなりました。 (SourceForge Obsolete)
モノトーンは最高だったでしょう。しかし;まあ...多分彼らはあまりにも閉じていた。
Cシングルソースパッケージ。 C/C ++複雑なソース、および単一のヘッダー。各プロジェクトでのRelavent Docsへのリンク...
node.jsを介してinteropを介してv8に露出します...
両方のプロジェクトが同じソースで構築されます - 別のcmakelistsを使用して、Githubから引っ張られたサックのバージョンを使用してGUIバージョンを構築します。融合が含まれるのではなく。
Gitはフックをうまく節約できませんが、サブモジュールは一種の痛みです。これは、GITサブモジュールを使用するために移動しています。簡単にはフックが必要です。これにフックがロードされる場所の構成をセットアップすると、役立ちます。
このリポジトリの.githooksのフックは、セットアップがあるテンプレートからコピーされた既存のフックにチェーンを作成しようとします。
# git config --global core.hookPath .githooks
# git clone git://github.com/d3x0r/sack
# cd sack
# mkdir build # could be mkdir sack/build instead
# cd build
# cmake ../cmake_all -DCMAKE_BUILD_TYPE=Debug
### alternatively, you can just build the sack core
# cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=output
### and later build binary specifically
# cd ..
# mkdir sack-binary-build
# cd sack-binary-build
# cmake ../binary -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=output -DSACK_SDK_ROOT_PATH=../build/output
cmake_build_type(リリース/debug/relwithdebinfo/minrel)名は、_solutionおよび_outディレクトリを生成するために使用されます。 「デバッグ」を使用する場合、ディレクトリは「debug_solution」などになります。各プロジェクトは、関連する<bult_type> _outフォルダーにインストールされます。
ccmakeまたはcmake-gui使用して、コンパイル用のオプションを構成できます。システムに基づいて推測するという公正な仕事をしますが、変更したいことがあります。
Globalの構成設定には、サポートが少ない、またはテストのために、または開発のために、より多くのアプリケーションをサック内でより多くのアプリケーションを構築するBUILD_EXTRASオプションがあります。
sack ..._ Solution/Coreプロジェクトの構成には、PNG/JPEG/ZLIBなどを含むかどうかなど、多くのオプションがあります。 sqliteでも同じです。 NO_ODBCがODBCライブラリの依存関係を無効にすることができます...その他多く。
(Linux)unixodbc(ccmake in Coreを使用したCmakeオプションは、この依存関係を無効にする可能性があります);
(openssl?)/libressl(libressl 3.2.1(最新)が含まれています)
GUIパーツ(Ubuntuパッケージ名、他のシステムで異なる場合があります)
ffmpeg 、一部のコードで使用されて、ビデオ/オーディオストリーミングプレーヤーを生成できます。 FFMPEGインターフェイスモジュールは、FFMPEG.DLLを動的にロードします。これは、リポジトリのWindowsで使用できる必要があります。または構築することができます...
WSL 2でビルドするようにしました。 (WSL - インストール)。およびArch Linux Image(https://github.com/yuk7/archwsl); ApproRiateとしてのビルドツールがインストールされていると仮定します
Pacman -Sは、Diffutils MingW-W64-GCCを作成します
そして多分MingW-W64-PKG-CONFIG(AUR)MINGW-W64-ENVIRONMENT(AUR)MINGW-W64-CMAKE(AUR)
git clone https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
mkdir build
../configure --arch=x86_64 --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32- --prefix=output --enable-shared --disable-static
これは通常、小さなものの大きなコレクションです。 C/C ++のコンパイル。これは図書館であり、いくつかのサポート/ユーティリティプログラムがあります。それがコアです。さらにいくつかのスタンドアロン種類のアプリケーションが含まれています。 WindowsとPosixの間の抽象化、さらにはLinux、Android、Macなど、Posixのさまざまなフレーバーを提供します。 SDL(一種)で、Busyboxですが、実際にはそうではありません。 GTK(SORTA)、STL(スタック、リスト、キュー、コンスタイナーズ、ジェネリックなど)です。
当初、DOSシリアル端末プログラムがありました。 Cで書かれたものがありました。もちろん、基本的なコンテナタイプが欠落しているため、基本的にすべての構造は古いものの新しい実装でした。しかし、それは簡潔であり、特定の場合を除いて使用されていないものを提供する可能性のある一般的なクラスの場合、「必要はない」余分なものがありませんでした。これには実際にはスレッドがありました。 Vairousの状態には、時間を放棄できるいくつかの命令スタックがありました。
NIPC(新しいインタープロセス通信)と呼ばれる独自のOSに進化しました。これは、スレッドを持っているだけでなく、プロセスとしてDOS .exeファイルをスレッドにロードすることができます(.comファイルだけでなく)。この管理されたメモリの割り当て、表示アクセス、ディスクアクセンス、およびCPU時間は、ラウンドロビンの方法で。最初は睡眠はありませんでしたが、後のスレッドは目を覚まさないようにスケジュールから外れる可能性があります。 386-25では、1秒あたり1500サイクルがありました。しかし、その実際の作業のほとんどは、他のシステムと通信する割り込み処理であった。
その後、Windows 3.1 ...とNT 3.51があり、NT4が発売されるまで短時間でした。したがって、今ではすべてのカスタムスレッドコントロールはかなり陳腐化していましたが、そのアロケーターはかなり良かったです。また、共有メモリパイプ/キュー/などの多くの開発がありました。 NIPCにもソケットがありました。 UDP/TCP/IPスタックとして、直接書き込まれたネットワークカードに書かれています。そのためのAPIはもちろんイベントベースでした。なぜなら、私はネットワークに対処する他の種類の方法を本当に知らなかったからです。もちろん、バークレーソケットがあり、彼らは私がそのAPIを実装するべきだと言った、それはとても複雑だった...私は座ってデータを待たなければならない?
それからインターネットがあり、隠者としての生活があり、捕まっていない人のためにピン留めし、ロックを変えた人から痛くなり、「Vurt」がありました。
サウンドブラスターと3DFX(グライド)で自分自身を面白くしている小さなものについて、多くのいじくり回しがありました。凸固形物のためにかなりうまく機能するいくつかの建設的なジオメトリアルゴリズム...
そこで、コアは本当にそれ自体のものとして形成されました。タイプ(テキスト、リスト、スタック、キューなど...)、メモリアロケーター(所有者が解放した後にメモリのブロックを保持できるようにするhold()操作があります。これは、プロセス間の共有メモリのカスタムヒープの割り当てにも包まれています。それと、ファイルを裏返しのヒープを使用して、リロードできる永続的なメモリとして使用し、プログラムが既存のメモリ状態で再開されます。固定ネットワーキング。ポーリングをイベントベースに変える。ネットワーキングは、1つのwaitformuitpled()を使用した最初の時代から大きく進化しました。 (いいえ、2000人のクライアントが接続していることに問題があり、80%が完全に失敗します)。この頃、グラフィックインターフェイスレイヤーが開始されました。 Allegroに触発され、最初にImageFile_Tag {}構造を使用して、専用の32ビットカラーパスルーチンを実装しました。 Allegroは、あらゆる種類のピクセルタイプをサポートしていましたが、これは、間接的な関数ポインターを呼び出すことで依然として遅くなりました。 ASMとMMXの両方のフレーバーの両方のブロックコピーとラインルーチンのいくつかのアセンブリバージョンを時間式にしました。 SSEが出てくるまでに、コンパイラはCを最適化するという本当に良い仕事をしていました。コンピューターはより速くなりました。すでに非常に高速だったのは、さまざまなプラットフォーム/コンパイラの維持が廃止されたことです。描画できる画像ができたら、システムに表示させるだけの問題であるため、Linux FrameBuffer(これは決して高速ではありませんでした)を意図して、Windowsインターフェイスが完了しました。
したがって、これをプラットフォームとして考えると、Sackに基づくアプリケーションとしてのDekwareが形成され、最終的には現れました。ライブラリのテストフィクスチャとして機能します。
そのため、単一の画像ライブラリとレンダリングライブラリがあったため、それらはすべて1つの大きなパッケージにパッケージ化されていました。 (Cmakeにはまだbuild_monolithicオプションがありますが、これはおそらくかなり壊れています)。私は当時、Dekwareを使用してたくさんの泥を演奏していました(FreeBSDで走っていた他の誰かのサポートDekwareでさえ、非Gnu Makeを使用していました。どんな痛みでしたか...私はメイクを使用していましたが、多くのシステムにさまざまなメイクファイルのフレーバーがたくさんありましたか?)...とにかく、これは本当に袋の起源です。それ以前は、以前の仕事で学んだパターンの後、「一般的」でした。袋は大きなバッグです。バッグは5袋のように保持できますが、袋は25袋のように保持できます。バッグは、基本的な集合体グループ、またはサブモジュールです...それ自体がommittedであり、他のものに影響を与えない作品。袋には多くのバッグが含まれています。
そのため、新しいソフトウェアを構築する新しいジョブがあり、同じコードと#ifdef'sを使用してWindowsまたはLinuxで実行されるサックを非常に迅速に使用することができました。 SYSVIPCメッセージキューを使用してMSGSVRレイヤーを開発し、アプリケーション用に共通のディスプレイドライバーを実行しました。それを失ったのは、殺されてやり直す必要があるほど十分に壊れていると判断したと思います。当時、私はopengl、gl2、gles、qnx、websocket/htmlキャンバスを既に表示していました。そして、メッセージシステムは良さそうでしたが、本当にかなり悪かったです。 (それはまだそこにあり、いくつかのことはまだそれを使用しています;それは機能します....)ここで、この新しい仕事で、私は自分の図書館を他の人に提示するようになりました。私は、「袋」が私が意図したこと以外に完全に何かを意味する可能性があることに気づきませんでした。私がこのプロジェクト(Milk -Modular Interface Layout Kit)を作成したとき、それはEspcaillyが悪くなりました。これは私の袋に基づいています。または...から来る...
時間が経つにつれて、デモンストレーションの目的、テスト、一般的なユーティリティの両方で、サックの下に「utils」フォルダーがあります。アプリケーションに近いものを備えた「ゲーム」フォルダー。参照コード以外の理由がない場合。
したがって、ベクトル数学ライブラリ(建設的な地球圏のための救済祭?)、数字/分母の整数を保存する分数の数学ライブラリがあります。これは、GUIバッグのスケーリング目的に使用されます。タイマーのラッパーがあります。 Windows Sittimerのように、addtimer()があります。タイマーとスレッド(pthread_create/createthread/....)の代わりにthreadto()。
Intershellは、フルスクリーン専用の機能アプリケーション(キオスクインターフェイス、ディスプレイ、看板)を迅速に生産するためのプログラムです。透明なウィンドウをサポートするため、おそらくVLCのようなもので再生された既存のアニメーションコンテンツに静的コンテンツをレイヤーできます(ただし、FFMPEGをインターシェルのドロップインコントロールとして使用してビデオを再生する小さなユーティリティがあります)。
ソースは一般に別々であり、他の人の最も少ない依存症を必要とします。いつかこれは、より高いレベルでレバレッジできる実際の依存ツリーに結合する必要があります。
if( options/version == 1 ) option set options/version=2... option default otheroption/app/color=12344そして、上記で注文した場所... 11)プロセスレジストリでは、後で消費するために値、関数、およびタイプを登録できます。 PSI制御レジストリは、このレジストリツリーに基づいています。ツリー内の名前は、後のブラウジングのためにダンプできます(デバッグ、それはどこで終わったのでしょうか?)。このモジュールは、Interface.confを読み取り、追加のモジュールの読み込みを処理したり、指定されたオプションに基づいてインターフェイスにエイリアスを構成するライブラリデッドスタートでもあります。 (これは少なくともウィキページ全体に値します)
12 ... n)この抽象化ライブラリで書かれた多くの小さなユーティリティは、一般的にすべてのシステムで機能するだけです。
異なるいくつかのベース機能 - プロセスの作成、ソケットを効率的に処理する、ファイルシステムの抽象化(仮想ファイルシステムの例でも、独自のファイルシステムインターフェイスを実装する方法を示す)、ping(raw sockets)、arp、whois queryドライバーが少し廃止された、Windowsサービスフックを書きます。任意の実行可能ファイルを実行するだけのサンプルサービスでさえ。言語翻訳システム(特別なものや魔法のようなものはありません)。
n+1)インターシェル。これは一般的なアプリケーションレイアウトハンドラーです。展開後も簡単に配置できる一般的なコントロールを備えた高レベルのプラグインを処理します。小さなプラグインをインターフェイスから簡単にロードでき、ユーザーコードへの簡単なイベントインターフェイスを提供できます。
n+10)dekware-上記のすべて。インターシェルをロードしてから、ボタンを拡張してスクリプトを提供できます。端末、一般的なスクリプト処理ユーティリティ...
画像とレンダリングライブラリは、インターフェイスを介して接続されています。インターフェイスは、名前で要求される関数ポインターの構造です。インターフェイスがエイリアスされる可能性があるため、ビデオが「video.opengl」として「ビデオ」と呼ばれるエイリアスを作成して、デフォルトで提供されるものを選択するために作成できます。
画像は32ビット色です。コンポーネントから色を作成したり、色からコンポーネントを取得したりするためのプラットフォーム順序のDWORDSを提供する機能があります。内部的には、32ビットの色転送と操作に最適化されたタイトループがいくつかあります。 2000年に、私はビデオカードに内部的に存在する「64ビットカラー」を検索しました(精度の少年が少ない)...一般的にユーザーは256色のすべてのレベルを区別できないため、十分です。
Navtive Xを介したLinuxのサポートは、Gles2またはNative FrameBuffer(AnativeWindow?)Windowsを使用できます。WindalはWin32 Windows、OpenGL、D3D(ほぼ)を使用できます。OpenGLで作成されたWindows/Controlは、3Dスペースのサーフェスになります。 (これが、画像レイヤーがプラグ可能なインターフェイスである理由です。これは、描画操作がOpenGLコールに変わるためです)。すべてが、ブラウザが接続できるネットワークインターフェスを提供するプロキシを使用できます。
Vulkan層を開始しました。これにより、いくつかのものが単純化されます。シェーダー用の画像OpenGLインターフェイスは、Vulkanをバックエンドとして実際に使用できます...しかし、それらは今ややや柔軟性があります...したがって、Vulkanのある方法でより深いAPIのレイヤーを実装するかもしれません。
これは、ノードGUIとしてより適切に実装されています
これは、コントロールのクラスの登録されたコールバックに基づいて構築されたコントロールライブラリです。ライブラリは画像とレンダラーのインターフェイスの上に構築されています...スライダー、リストボックス、ボタンなどのより高いレベルのものを追跡し、各クラスに基づいてカスタム拡張機能を提供します。
Dekwareビルド製品は泥のクライアント/泥です。事前に構築されたバージョンのドキュメントとダウンロードは、d3x0r.orgまたはwww.d3x0r.orgで入手できます。
コアライブラリサポートをJavaScriptに公開するノードアドオン。 WebSocket、HTTP、JSON、JSOXパーサー、SQLite/ODBCインターフェイスを提供します。
NPMパッケージとgitリポジトリ
sack.vfsからのすべてのインターフェイスを含むノードアドオンですが、インターフェイスをGUIサブシステムに実装し始めます。
NPMパッケージとgitリポジトリ。
GITリポジトリは、sack.vfsのマスターに根ざした分岐であり、既存のインターフェイスに追加されています。 sack.cc amaglamationの使用からは変わりますが、Cmake外部プロジェクトを使用してGithubからsackリポジトリをダウンロードします。