麻袋系統抽象組件套件。
libuv,libsdl,gkt,qt,...只有一個。主要是列表,堆棧,隊列,具有有或沒有鎖定機制的C的C擴展。內存的內存診斷劑,以識別免費/下流或使用(寫)。文件系統事件通知,簡單線程,基於事件的網絡,可用於背景線程,HTTP,Websocket,JSOND,JSOND,JSON6,JSOX PARSERS,XML PARSER,導出;簡化數據庫連接和使用的SQLITE/ODBC通用包裝器;簡單的分數數字庫,矢量庫,過程和功能註冊系統,可以在復雜的可插入系統中註冊函數或接口表的函數或接口表;文件系統抽象和虛擬文件系統接口。
不是什麼?它本身不是操作系統,而是缺乏任務加載程序,並且是處理分配本身;從系統請求內存並管理代碼,可以在程序之間共享內存。
從header文檔信息發布的文檔-http://sack.sf.net(https://sourceforge.net/projects/sack/)
git通常是更新的。 GIT是主要的開發源控制系統。不再使用Mercurial。 (Source Forge已過時)
單調最好是最好的;但;好吧...也許他們太封閉了。
C單源軟件包。 C/C ++可編譯源和單個標頭。鏈接到每個項目中的Relavent文檔...
通過iNterop通過node.js ...暴露於v8 ...
這兩個項目都使用相同的來源構建 - 使用從Github拔出的Sack的版本,使用單獨的CMakelists來構建GUI版本;而不是包括合併。
git不能很好地保存鉤子 - 但是子模型有點痛苦。這已經遷移到使用git子模型;這需要輕鬆的鉤子。為加載鉤子的位置設置配置將有所幫助。
在此存儲庫中的鉤子中的掛鉤將嘗試將其鏈接到您已設置的模板中復制的任何現有鉤子。
# 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(reparion/debug/relwithdebinfo/minrel)名稱用於生成_solution _solution和_OUT目錄。如果您使用“調試”,則目錄將是'debug_solution'等。每個項目都安裝在其相關<build_type> _OUT文件夾中。
ccmake或cmake-gui可用於配置編譯選項。它在基於系統的猜測方面做得很公平,但是有時您想改變一些事情。
Global的配置設置具有BUILD_EXTRAS選項,該選項將在SACK中構建更多的應用程序,這些應用程序較少支持或進行測試或深入開發。
SACK ..._解決方案/核心項目的配置有許多選項,例如是否使用包括PNG/JPEG/ZLIB等或系統版本。與sqlite相同。可以啟用NO_ODBC禁用ODBC庫的依賴...更多。
(Linux)UnixODBC(使用CORE中使用CCMAKE的CMAKE選項可以禁用此依賴性);
(openssl?)/libressl(包括libressl 3.2.1(最新))
GUI零件(Ubuntu軟件包名稱,其他系統可能有所不同)
一些代碼可以使用ffmpeg來生成視頻/音頻流播放器。 FFMPEG接口模塊動態加載ffmpeg.dll,該模塊應適用於存儲庫中的Windows;也可以建造...
我得到了使用WSL 2構建的; (WSL-安裝)。和Arch Linux圖像(https://github.com/yuk7/archwsl);假設安裝了作為資助的構建工具
PACMAN -S製作Diffutils mingw-w64-gcc
也許是mingw-w64-pkg-config(AUR)mingw-w64-環境(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(有點),是Busybox,但不是真的。它是gtk(sorta),它是stl(堆棧,列表,隊列,組成,仿製藥等),它幾乎都可以依靠C庫。
一開始,有一個DOS串行終端程序。它是用C寫成的。當然,基本的容器類型缺少,因此基本上每個結構都是舊事物的新實現。但這是簡潔的,沒有額外的東西,如果是通用類,除了特定情況外,可能會提供未使用的東西。這實際上有線程;它在可惡的州有幾個說明堆棧,可以放棄時間。
它演變成一個稱為NIPC(新的Inter Process Communications)的專有OS,它不僅具有線程,而且可以將DOS .EXE文件作為過程加載到線程中(不僅是.com文件)。這以圓形旋轉方式管理了內存分配,顯示訪問,磁盤加速和CPU時間。一開始就沒有睡眠,但是後來的線程可能會放棄計劃,甚至沒有被喚醒。在386-25上,它每秒得到1500個週期。但是它的大部分實際工作都是中斷處理,與其他系統進行通信。
然後是Windows 3.1 ...和NT 3.51短時間內,直到NT4出來。因此,現在所有的自定義線程控件都相當過時了,但是那個分配器,這很好。共享內存管/隊列/等以及套接字有很多開發。 NIPC也有插座。以UDP/TCP/IP堆棧的形式寫入直接寫入的網卡;當然,API是基於事件的,因為我真的不知道任何其他方法可以處理網絡。當然有伯克利插座,他們告訴我我應該實施該API,這是非常令人費解的……我必須坐下來等待數據?
然後是互聯網,有一個隱士的生活,為那些不會被抓住的人釘住了,從改變鎖的人那裡酸痛,那裡有“ vurt”。
在這里和那裡的小事上有很多修補,這讓我自己很有趣,這讓我很有趣。一些建設性的幾何算法非常適合凸固體...
因此,在這裡,核心確實形成了自己的核心。它是內存分配器(具有hold()操作,允許在所有者釋放後的內存塊(允許存儲塊)的類型(文本,列表,堆棧,隊列,...)。那並使用文件備份的堆作為可以重新加載的持續內存,並在其現有內存狀態下恢復程序。和固定的網絡;將民意測驗變成基於事件的內容。畢竟,從使用一個waitformuitpleobjects()開始的日子,網絡已經發展了很多,畢竟,對於任何人來說,64個插座還不夠嗎? (no,2000個連接的客戶存在問題,完全失敗了)。大約在這個時候,啟動了圖形接口層。受Allegro的啟發,並最初採用其ImageFile_tag {}結構,實現了專用的32位色路路徑例程。 Allegro支持了各種像素類型,這些像素類型的速度仍然可以通過間接功能指針來減慢。我有一段時間的組裝版本的某些塊拷貝和線條例程ASM和MMX口味。到SSE出來時,編譯器在優化C上做得非常好,計算機的速度更快,已經很快的速度要快得多,以至於對各種平台/編譯器的維護性都使它固定了。一旦您可以繪製圖像,那麼這只是使系統顯示它們的問題,因此完成了Windows界面,只需使用Linux Framebuffer(從來都不是很快)。
因此,鑑於這是一個平台,將其作為基於袋裝的應用程序的Dekware表格並最終表現出來。用作圖書館的測試固定裝置。
因此,有一個單個圖像庫和渲染庫,因此它們都被包裝成一個大包裝。 (Cmake仍然具有build_monolethic選項,現在可能已經被相當折斷了)。當時我是在使用Dekware玩很多泥漿(甚至為其他在freebsd上運行的人提供了Dekware,with non-gnu make;這是一種痛苦...我是否提到過,那時我正在使用Make Make Make Make Make Make For Makefiles for Make For Systems,這實際上是袋裝嗎?)在此之前,這只是我在上一份工作中學到的模式之後的“常見”。麻袋是一個大袋子。一個袋子可以容納5個袋子,但是一個麻袋可以容納25個袋子。袋子是一個基本的骨料組,或一個子模塊……這本身可以被承諾並且不會影響其他任何東西;和麻袋裡有很多袋子。
因此,有一項新工作,構建了新軟件,我能夠很快利用麻袋並構建應用程序,該應用程序將在Windows或Linux上使用相同的代碼運行,而沒有#ifdef。我使用SYSVIPC消息隊列開發了MSGSVR層,並為應用程序做了一個公共顯示驅動程序。從那以後,我想我認為它已經足夠折斷了,需要殺死並重做。那時,我已經有OpenGL,GL2,GLES,QNX,WebSocket/HTML帆布顯示驅動程序;消息系統看起來不錯,但真的很糟糕。 (它仍然存在,有些事情仍然使用;它有效。...)在這裡,在這份新工作中,我必須向其他人介紹我的圖書館;我沒有意識到“麻袋”除了我的意圖外,這完全意味著什麼。當我製作這個項目(牛奶 - 模塊化界面佈局套件)時,它變得不好,這是基於我的麻袋。或來自...
隨著時間的流逝,出於演示目的,測試和通用實用程序,袋子下的“ UTILS”文件夾是基於麻袋的真正微小的應用程序;還有一個“遊戲”文件夾,其中包含更接近應用程序的內容。如果沒有其他原因,則沒有參考代碼。
因此,有一個矢量數學庫(Remeber for建設性地理?),一個分數數學庫,它存儲了編號數字/分母整數;這用於在GUI袋中進行縮放。有一個定時器的包裝紙;像Windows settimer一樣,也有addTimer();計時器和線程(threadto()而不是pthread_create/createThread/....)。
Intershell是一個程序,用於快速生產全屏專用功能應用程序(售貨亭接口,顯示和標牌)。它支持透明的窗口,因此您可以在現有動畫內容上分層靜態內容,也許會使用VLC之類的內容(儘管只有使用FFMPEG作為Intershell中的Dropin控件播放視頻的效用很小)。
來源通常是分開的,需要他人最少的依賴。總有一天,這應該梳理到可以在更高級別上利用的實際依賴樹。
if( options/version == 1 ) option set options/version=2... option default otheroption/app/color=12344以及以上排序的某個地方... 11)過程註冊表,允許註冊值,功能和類型以供以後消耗。 PSI控制註冊表基於此註冊表樹。樹上的名稱可以傾倒以進行以後的瀏覽(例如,調試,最終在哪裡?)。該模塊也是庫DeadStart,它讀取Interface.conf並處理加載其他模塊,或根據指定的選項將別名配置為接口。 (這至少值得一個整個Wikipage)
12 ... n)與這個抽像庫一起編寫的許多小公用事業,通常在所有系統上都起作用。
某些不同的基本功能 - 創建一個進程,有效地處理插座,文件系統摘要(即使是一個示例虛擬文件系統,它顯示瞭如何實現自己的文件系統接口),ping(RAW Sockets),ARP,A WHOIS查詢驅動程序,現在有點過時,現在,Windows Service Hook來編寫自己的服務。即使是剛剛運行任意可執行的示例服務。語言翻譯系統(沒有什麼特別的或神奇的)。
n+1)互換;這是一個通用應用程序佈局處理程序。它可以使用通用控件處理高級插件,即使在部署後也可以輕鬆放置。可以通過接口輕鬆加載小插件,從而為用戶代碼提供簡單的事件接口。
n+10)DEKWARE-上述所有;它可以加載互換,然後擴展按鈕以提供腳本。終端,一般腳本處理實用程序...
圖像和渲染庫是通過接口連接的。接口是按名稱請求的功能指針結構。接口可能會被混合使用,因此,如果視頻加載為“ video.opengl”,則可以創建一個稱為“視頻”的別名來選擇默認情況下的幾個。
圖像為32位顏色;有一些功能可以提供平台有序的dwords來從組件創建顏色或從顏色中獲取組件。在內部,只有幾個針對32位顏色傳輸和操作進行了優化的緊密循環。早在2000年,我就搜索了“ 64位顏色”,該顏色內部存在於視頻卡上,以提高精度(精度丟失的小數)...但是通常,用戶無法區分256種顏色的每個級別,因此它足夠了。
Linux通過Navtive X Now Android支持Linux可以使用GLES2或本機framebuffer(AnativeWindow?)Windows Windows可以使用Win32 Windows,OpenGL,D3D(大致),在OpenGL中,Windows/Controls在3D空間中創建的Windows/Controls可以在3D空間中變成表面,可以在其他3D物體周圍和周圍呈現。 (這就是為什麼圖像層是一個可插入的接口,因為繪製操作會變成OpenGL調用)。所有人都可以使用瀏覽器可以連接到的網絡Interafce的代理,將繪製命令貼在BRWSER上以執行...
開始了一個Vulkan層,這將簡化一些事情。著色器的圖像OpenGL接口確實可以將Vulkan用作後端...但是現在它們有些靈活...因此,也許以Vulkan的方式實現了更深層次的API。
這可以更好地作為節點GUI實現
這是一個控制庫,建立在控件類別的註冊回調上。該庫是在圖像和渲染器接口上構建的...它跟踪更高級別的內容,例如滑塊,列錶框,按鈕,並根據每個類提供自定義的擴展名。
Dekware Build Product是泥客戶/泥漿。可在d3x0r.org或www.d3x0r.org上獲得預製版本的文檔和下載。
節點插件將核心庫支持向JavaScript展示。提供Websocket,HTTP,JSON,JSOX PARSER,SQLITE/ODBC接口。
NPM軟件包和GIT存儲庫
節點插件包含來自SACC.VF的所有接口,但也開始實現Interfce到GUI子系統。
NPM軟件包和GIT存儲庫。
GIT存儲庫是一個植根於sack.vfs的分支,只是對現有接口的添加。儘管它確實從使用sack.cc amaglamation改變了,但它使用cmake外部項目從github下載sack存儲庫。