كيس نظام تجريد الجرد.
libuv ، libsdl ، gkt ، qt ، ... فقط لا شيء من كل شيء في واحد. في المقام الأول امتدادات إلى C للقوائم ، المداخن ، قوائم الانتظار ، مع وبدون آليات قفل. تم تصميم Memory DiagnsOtics لتحديد الزائد/السفلي أو الاستخدام (الكتابة) بعد مجانًا ؛ إشعارات أحداث نظام الملفات في واجهة برمجة التطبيقات القياسية ، مؤشرات الترابط البسيطة ، الشبكات القائمة على الأحداث التي تعمل على مؤشرات ترابط الخلفية ، HTTP ، WebSocket ، JSON ، JSON6 ، JSOX Parsers ، XML Parser تم تصديرها ؛ غلاف SQLite/ODBC الشائع الذي يبسط اتصال قاعدة البيانات واستخدامه ؛ مكتبة رقمية بسيطة ، مكتبة المتجهات ، نظام الإجراءات ونظام تسجيل الوظائف الذي يمكنه تسجيل كل من الوظائف أو جداول الواجهة لوحدة المكتبة في الأنظمة المعقدة القابلة للتجانس ؛ تجريد نظام الملفات وواجهة نظام الملف الافتراضي.
ما ليس ذلك؟ إنه ليس في حد ذاته نظام تشغيل ، فهو يفتقر إلى اللوادر المهمة ، وتخصيص العملية نفسها ؛ يتم طلب الذاكرة من النظام وإدارتها للرمز ، قد تتم مشاركة الذاكرة بين البرامج.
مستند نشرت من معلومات مستند الرأس - http://sack.sf.net (https://sourceforge.net/projects/sack/)
غالبًا ما يكون GIT أكثر تحديثًا. GIT هو نظام التحكم في مصدر التطوير الأساسي. لم يعد ميركوريال يستخدم. (SourceForge عفا عليها الزمن)
رتابة كان أفضل. لكن؛ حسنا ... ربما كانوا مغلقة جدا.
C حزم مصدر واحد. مصادر C/C ++ قابلة للتجميع ، ورأس واحد. روابط إلى مستندات Relavent في كل مشروع ...
مكشوف من خلال interop إلى v8 من خلال node.js ...
يبني كلا المشروعين نفس المصدر - يتم استخدام cmakelists منفصلة لبناء إصدار واجهة المستخدم الرسومية ، باستخدام إصدار من Sack تم سحبه من Github ؛ بدلا من الدمج المشمولة.
لا تسمح 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 (إصدار/تصحيح/RELWITHDEBINFO/MINREL) لإنشاء الدلائل _solution و _out. إذا كنت تستخدم "Debug" ، فستكون الدلائل "debug_solution" وما إلى ذلك. كل مشروع يتم تثبيته في مجلده <Build_type> _out.
يمكن استخدام ccmake أو cmake-gui لتكوين خيارات للتجميع. يقوم بعمل عادل للتخمين بناءً على النظام ، ولكن في بعض الأحيان هناك أشياء ترغب في تغييرها.
تحتوي إعدادات التكوين لـ Global على خيار BUILD_EXTRAS الذي سيقوم ببناء المزيد من التطبيقات في الأكياس التي هي أقل دعمًا أو للاختبار أو في التطوير بعمق.
يحتوي تكوين SACK ..._ على الحلول/المشروع الأساسي للعديد من الخيارات مثل استخدام PNG/JPEG/ZLIB ، أو إصدارات النظام. نفس الشيء مع sqlite. يمكن تمكين no_odbc من تعطيل تبعية مكتبات ODBC ... الكثير.
(Linux) UNIXODBC (خيارات CMAKE باستخدام CCMAKE في CORE يمكن أن تعطيل هذا التبعية) ؛
(Openssl؟)/libressl (لديه libressl 3.2.1 (الأحدث))
أجزاء واجهة المستخدم الرسومية (أسماء حزم Ubuntu ، قد تختلف بالنسبة للأنظمة الأخرى)
يمكن استخدام ffmpeg من قبل بعض التعليمات البرمجية لإنشاء مشغلات الفيديو/الصوت. تقوم وحدة واجهة FFMPEG بتحميل FFMPEG.DLL ديناميكيًا ، والتي يجب أن تكون متاحة لنظام التشغيل Windows في المستودع ؛ أو يمكن بناؤها ...
حصلت عليها للبناء مع WSL 2 ؛ (WSL -التثبيت). و Arch Linux Image (https://github.com/yuk7/archwsl) ؛ بافتراض تثبيت أدوات البناء كما تم تثبيت المتدرب
Pacman -S Make 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 وحتى نكهات مختلفة من Posix ، مثل Linux و Android و Mac ، وآخرون. إنه SDL (نوعًا ما) ، إنه مشغول ، ولكن ليس حقًا. إنه GTK (sorta) ، إنه STL (المكدس ، القوائم ، قائمة الانتظار ، القضبان ، الأدوية ، ...) ، يمكن أن تعتمد على أي من مكتبة C تقريبًا حتى.
في البداية ، كان هناك برنامج محطة DOS التسلسلية. تمت كتابته في C. بالطبع كانت هناك أنواع الحاويات الأساسية المفقودة ، لذلك كان كل هيكل في الأساس بعض التنفيذ الجديد لشيء قديم ؛ لكنها كانت موجزة ولم يكن لديها أشياء إضافية لم تكن بحاجة إليها في حالة فئة عامة قد توفر أشياء غير مستخدمة إلا في حالات محددة. كان هذا في الواقع المواضيع. كان لديه العديد من مداخن التعليمات في فالوس ينص على التخلي عن الوقت ل.
لقد تطورت إلى نظام تشغيل خاص يسمى NIPC (اتصالات Inter الجديدة) ، والتي لم يكن فقط مؤشرات ترابط ، ولكن يمكنها تحميل ملفات dos .exe كعمليات في مؤشرات الترابط (وليس فقط ملفات .com). هذا تخصيص الذاكرة المدارة ، وصول العرض ، ومساحات القرص ، ووقت وحدة المعالجة المركزية بطريقة مستديرة. في البداية ، لم يكن هناك نوم ، لكن الخيوط اللاحقة يمكن أن تخرج نفسها من الجدول الزمني حتى لا تستيقظ. على 386-25 حصلت على 1500 دورة في الثانية. لكن معظم عملها الحقيقي كان في معالجة المقاطعة ، والتواصل مع بعض الأنظمة الأخرى.
ثم كان هناك Windows 3.1 ... و NT 3.51 لفترة قصيرة حتى خرج NT4. والآن ، كانت جميع التحكم في الخيط المخصص قديمًا إلى حد ما ، لكن هذا المخصص ، كان جيدًا. وكان هناك الكثير من تطوير أنابيب الذاكرة المشتركة/قوائم الانتظار/الخ والملابس. كانت هناك مآخذ في NIPC أيضا. مكتوبة كمكدس UDP/TCP/IP ، إلى بطاقة شبكة تمت كتابتها مباشرة ؛ كانت واجهة برمجة التطبيقات لذلك بالطبع تعتمد على الحدث ، لأنني لم أكن أعرف أي نوع آخر من الطرق للتعامل مع الشبكة. كان هناك بالطبع مآخذ بيركلي ، وأخبروني أنه يجب علي تنفيذ واجهة برمجة التطبيقات ، وكانت معقدة للغاية ... لا بد لي من الجلوس وانتظر البيانات؟
ثم كان هناك الإنترنت ، كانت هناك حياة كأنك ناسك ، تتجول في الشخص الذي لن يتم القبض عليه ، وألم من تلك التي غيرت الأقفال ، وكان هناك "فورت".
كان هناك الكثير من العبث على الأشياء الصغيرة هنا وهناك مسلية نفسي مع Blasters الصوتية و 3DFX (الانزلاق). بعض خوارزميات الهندسة البناءة التي تعمل بشكل جيد للمواد الصلبة المحدبة ...
حتى هنا تشكلت جوهر حقًا كشيء خاص به. كانت الأنواع (النص ، القوائم ، المداخن ، قوائم الانتظار ، ...) ، تخصيص الذاكرة (التي لديها عملية Hold () تتيح أن يتم الاحتفاظ بمجموعة من الذاكرة بعد تحرير المالك.) والتي يتم تغليفها أيضًا في تخصيص أكوام مخصصة من الذاكرة المشتركة بين العمليات ؛ هذا واستخدام كومة مدعومة ملفًا كذاكرة ثابتة يمكن إعادة تحميلها واستئناف البرنامج في حالة ذاكرته الحالية. والشبكات الثابتة ؛ تحول ما كان الاقتراع إلى الحدث. لقد تطورت الشبكات كثيرًا من الأيام في بداية استخدام OneFormuitpleObjects () ، بعد كل شيء ، ليست 64 مآخذًا كافية لأي شخص؟ (لا ، لدى 2000 عميل التواصل مشكلات مع ذلك بفشل 80 ٪ تمامًا). في هذا الوقت ، بدأت طبقات واجهة الرسومات. مستوحاة من Alegro ، وأخذ بنية ImageFile_Tag {} في البداية ، نفذت إجراءات مسارات الألوان المخصصة 32 بت. حصل Allegro على دعم لجميع أنواع أنواع البكسل ، والتي ، بأسرع ما كانت ، كانت لا تزال تباطؤ من خلال الاتصال من خلال مؤشرات الوظائف غير المباشرة. كان لديّ إصدارات تجميع زمنية لبعض نكهات النكهات والخطوط من النكهات ASM و MMX. بحلول الوقت الذي خرجت فيه SSE ، كان المترجمون يقومون بعمل جيد حقًا في تحسين C ، وكانت أجهزة الكمبيوتر أسرع ، وأن ما كان سريعًا بالفعل كان أسرع بكثير ، حيث أوفقه على ذلك من المنصات/المترجمين المختلفة. بمجرد حصولك على صور يمكنك رسمها إليها ، فهذا مجرد مسألة الحصول على النظام لإظهارها ، لذلك تم إجراء واجهة Windows ، مع نية على Linux FrameBuffer فقط (الذي لم يكن سريعًا أبدًا).
لذلك ، بالنظر إلى ذلك كمنصة ، أخذ DeKware كتطبيق يعتمد على SACK نموذجًا وتجلى في النهاية ؛ بمثابة لاعبا أساسي في الاختبار للمكتبة.
لذلك كان هناك مكتبة صورة واحدة ومكتبة عرض ، لذلك تم تعبئتها جميعها في حزمة واحدة كبيرة. (لا يزال لدى Cmake خيارات Build_monolithic ، والتي ربما يتم كسرها إلى حد ما الآن). كنت في ذلك الوقت ألعب الكثير من الطين باستخدام DeKware (كان حتى دعم Dekware لشخص آخر كان يعمل على Freebsd ، مع عدم وجود GNU ؛ ما هو الألم الذي ذكرته ، هل كنت أستخدمها في ذلك الوقت ، وكان لدي الكثير من النكهات المختلفة من Makefiles للعديد من الأنظمة؟) على أي حال ، هذا هو أصل Sack ؛ قبل ذلك ، كان الأمر مجرد "شائع" بعد النمط الذي تعلمته في وظيفتي السابقة. كيس هو حقيبة كبيرة. يمكن أن تحمل الحقيبة مثل 5 أكياس ، ولكن يمكن أن يحمل كيس مثل 25 كيسًا. الحقيبة عبارة عن مجموعة إجمالية أساسية ، أو وحدة فرعية ... قطعة يمكن أن تُعتبر نفسها ولا تؤثر على أي شيء آخر ؛ ويحتوي كيس على العديد من الحقائب.
إذن ، كانت هناك وظيفة جديدة ، وبناء برامج جديدة ، وتمكنت من الاستفادة من الأكياس وبناء التطبيقات بسرعة كبيرة والتي ستعمل على Windows أو Linux بنفس الرمز ولا يوجد #IFDEF. لقد طورت طبقة MSGSVR باستخدام قوائم قوائم رسائل SYSVIPC ، وقمت برامج عرض شائعة للتطبيقات ؛ لقد فقدت ذلك منذ ذلك الحين ، أفترض أنني قررت أنه تم كسره بما يكفي لدرجة أنه يحتاج إلى قتل وإعادة تدوين. في ذلك الوقت ، كان لدي OpenGL و GL2 و GLES و QNX و WebSocket/HTML Canvas Divers بالفعل ؛ ويبدو نظام الرسائل جيدًا ، لكنه كان سيئًا للغاية. (لا يزال هناك ، وبعض الأشياء لا تزال تستخدمها ؛ إنها تعمل ....) هنا ، في هذه الوظيفة الجديدة ، حصلت على تقديم مكتبتي للآخرين ؛ لم أكن أدرك كيف يمكن أن تعني "الأكياس" شيئًا ما غير المقصود تمامًا. أصبح الأمر سيئًا عندما قمت بهذا المشروع (مجموعة تخطيط الواجهة المعيارية) ، والتي تعتمد على كيس بلدي ؛ أو يأتي من ...
مع مرور الوقت ، على حد سواء لأغراض التوضيح والاختبار والفائدة العامة ، أصبح هناك مجلد "utils" تحت كيس وهو نوع من التطبيقات الصغيرة حقًا على أساس SACK ؛ ومجلد "ألعاب" مع أشياء أقرب إلى التطبيقات. إذا لم يكن لسبب آخر سوى رمز المرجع.
لذلك هناك مكتبة الرياضيات المتجهات (Remeber Back for GeoMtry البناءة؟) ، مكتبة الرياضيات الكسر ، والتي تخزن أعداد الأعداد الصحيحة/القاسم ؛ يستخدم هذا لأغراض التحجيم في حقيبة واجهة المستخدم الرسومية. هناك غلاف للوقت. مثل Windows Settimer هناك AddTimer () ؛ أجهزة ضبط الوقت والمواضيع (threadto () بدلاً من pthread_create/createThread/....).
Intershell هو برنامج مخصص للإنتاج السريع لتطبيقات الوظائف المخصصة للشاشة بملء الشاشة (واجهات Kiosk والعروض واللافتات). إنه يدعم النوافذ الشفافة ، بحيث يمكنك وضع محتوى ثابت على المحتوى المتحرك الموجود ربما يتم تشغيله بشيء مثل VLC (على الرغم من وجود أداة صغيرة لتشغيل مقاطع الفيديو فقط باستخدام FFMPEG كعنصر تحكم في intershell).
المصادر منفصلة بشكل عام ، وتتطلب أقل عدد من تبعية الآخرين. في يوم من الأيام ، يجب تمشيط هذا في شجرة التبعية الفعلية التي يمكن الاستفادة منها على مستوى أعلى.
if( options/version == 1 ) option set options/version=2... option default otheroption/app/color=12344وفي مكان ما أمر في ما سبق ... 11) سجل العملية ، يسمح بتسجيل القيم والوظائف والأنواع للاستهلاك اللاحق. يعتمد سجل التحكم في PSI على شجرة التسجيل هذه. يمكن إلقاء الأسماء في الشجرة للتصفح لاحقًا (تصحيح الأخطاء ، أين انتهى الأمر؟). هذه الوحدة هي أيضًا محطة Deadstart التي تقرأ Interface.Conf وتتولى تحميل وحدات إضافية ، أو تكوين الأسماء المستعارة للواجهات بناءً على الخيارات المحددة. (هذا يستحق ما لا يقل عن ويكيباج كامل)
12 ... ن) الكثير من المرافق الصغيرة المكتوبة مع مكتبة التجريد هذه التي تعمل بشكل عام على جميع الأنظمة.
بعض الوظائف الأساسية التي تختلف - قم بإنشاء عملية ، وتعامل مع المقابس بكفاءة ، وتجريدات نظام الملفات (حتى على سبيل المثال نظام الملفات الافتراضية ، يوضح كيف يمكنك تنفيذ واجهات نظام الملفات الخاصة بك) ، ping (مآخذ RAW) ، ARP ، A WHOIS QUERY DRAVEN الذي يعد قليلاً الآن ، خدمة Windows Service لكتابة الخدمات الخاصة بك. حتى خدمة مثال تدير فقط قابلة للتنفيذ تعسفي. نظام ترجمة اللغة (لا شيء كل هذا خاص أو سحري).
n+1) intershell ؛ هذا هو معالج تخطيط التطبيق العام. إنه يتعامل مع الإضافات عالية المستوى مع عناصر تحكم عامة يمكن وضعها بسهولة حتى بعد النشر. قد يتم تحميل المكونات الإضافية الصغيرة بسهولة من خلال الواجهة مما يوفر واجهات حدث سهلة لرمز المستخدم.
n+10) dekware - كل ما سبق ؛ يمكنه تحميل intershell ، ثم تمديد الأزرار لتوفير البرمجة النصية. الطرفية ، الأداة المساعدة لمعالجة السيناريو العام ...
يتم توصيل الصورة والمكتبات عبر الواجهات. الواجهة هي هيكل من مؤشرات الوظائف المطلوبة بالاسم. قد تكون الواجهات مسبوقة ، لذلك إذا تم تحميل الفيديو على أنه "video.opengl" ، يمكن إنشاء اسم مستعار يسمى "الفيديو" لتحديد أي من العديد منها يتم توفيره افتراضيًا.
الصور 32 بت. هناك وظائف لتوفير DWORDs المطلوبة من النظام الأساسي لإنشاء ألوان من المكونات أو الحصول على مكونات من الألوان. داخليًا ، هناك عدد قليل من الحلقات الضيقة المحسنة لنقل وعمليات الألوان 32 بت. في عام 2000 ، بحثت عن "64 بت اللون" الموجود داخليًا على بطاقات الفيديو بدقة أعلى (عدد أقل من العشرية المفقودة من الدقة) ... ولكن بشكل عام لا يمكن للمستخدم التمييز بين كل مستوى من 256 لونًا ، لذا فهو أكثر من كافية.
يمكن لدعم Linux من خلال Navtive X Now Android استخدام GLES2 أو FrameBuffer الأصلي (AnistativeWindow؟) يمكن أن تستخدم Windows Windows و OpenGL و D3D (تقريبًا) ، في OpenGL ، Windows/Controls التي يتم إنشاؤها إلى أسطح في مساحة ثلاثية الأبعاد ، والتي يمكن تقديمها داخل وحول كائنات ثلاثية الأبعاد أخرى. (هذا هو السبب في أن طبقة الصورة عبارة عن واجهة قابلة للتوصيل ، لأن عمليات الرسم تتحول إلى مكالمات OpenGL). يمكن للجميع استخدام الوكيل الذي يوفر شبكة Interafce التي يمكن للمستعرض الاتصال بها ، يتم تمييز أوامر السحب إلى Brwser لأداء ...
بدأت طبقة فولكان ، والتي من شأنها تبسيط بعض الأشياء. يمكن أن تستخدم واجهة Image OpenGL للتظليل حقًا Vulkan كوجود خلفي ... لكنها مرنة إلى حد ما الآن ... لذلك ربما يتم تنفيذ طبقات أعمق من API بطريقة Vulkan.
يتم تنفيذ هذا بشكل أفضل باعتباره واجهة المستخدم الرسومية العقدة
هذه هي مكتبة التحكم بناء على عمليات الاسترداد المسجلة لفئات عناصر التحكم. تم تصميم المكتبة على واجهات الصورة والعارض ... إنها تتتبع أشياء أعلى من المستوى مثل Sliders و Listboxes و Buttons وتوفر ملحقات مخصصة على أساس كل فئة.
منتج DeKware Build هو عميل/طين الطين. تتوفر توثيق وتنزيلات الإصدارات المسبقة على d3x0r.org أو www.d3x0r.org.
Addon العقدة التي تكشف دعم المكتبة الأساسية لجافا سكريبت. يوفر WebSockets و HTTP و JSON و JSOX Parsers و SQLITE/ODBC.
حزمة NPM ومستودع GIT
Addon العقدة التي تتضمن جميع واجهات من sack.vfs ، ولكنها تبدأ أيضًا في تنفيذ نظام واجهة المستخدم الرسومية الفرعية.
حزمة NPM ومستودع GIT.
مستودع GIT هو فرع متجذر في سيد Sack.vfs ، وهو مجرد إضافات إلى الواجهات الموجودة ؛ على الرغم من أنه يتغير من استخدام sack.cc amaglamation ، فإنه يستخدم مشروع Cmake الخارجي لتنزيل مستودع الأكياس من GitHub.