開源周報
經過近一個月籌備,開源周報終於昂揚鏗鏘地上路了,參與開源越久,越能體會到開源帶給這個時代和這個時代的我們的益處,本身開源就是一個開放協作的分享友誼,無數的程序員們將自己的項目和代碼,大方驕傲地分享出來,然後有更多的程序員加入使用、共同開發中來,可以不客氣地說,開源可能已經是推動IT領域發展最重要的一種形式和力量了。我們一直期待做一件事情,把開源領域好的東西遴選出來,新鮮的資訊,優秀的項目,發展的趨勢,給老朋友和新朋友,給在校的學生,給已經奔跑在路上的程序員戰友。今天這是開源周報的第0期,是我們這個嘗試的開始。
開源周報的目標是:薈萃最新開源項目資訊,攬勝前瞻IT技術趨勢。更新頻率會是一周一期,每周一更新,同時會精選介紹一些開源周報提到的優秀開源項目。
時代走得很快,技術迭代和更新發展也很快,關注音樂的朋友一定知道,早先有Billboard、叱咤樂壇流行榜、華語音樂榜中榜、音樂風雲榜等介紹一周或一月、一年最流行的音樂歌曲,在不曉得聽什麼歌的年代,關注這些音樂排行榜就對了,大多數是當時流行的紅極一時的歌曲。而在我們IT領域,GitHub 是全球最大的代碼託管平台,它也有一個 GitHub Trending 來介紹最近流行的開源項目,流行的判斷標準主要是被 star 的數量,同時也會兼具參考被 fork 的數量。可以很容易通過 GitHub Trending 和我們的開源周報來了解最新的開源項目以及技術趨勢,對於苟日新、日日新、瞬息萬變的信息時代,這一點又格外重要和有意義。
如果你是一名學生,可以挑選最新的項目來關注、了解、參與、學習。
如果你已經在工作,可以關注到好的項目,站在巨人肩膀上,參與開放協作,不用重複造輪子,同時了解行業里最新的發展趨勢和技術潮流。
Open Source Weekly 開源周報的固定網址為 https://openingsource.org/weekly/
本周開源趨勢 Top 10
1.Google / boardgame.io
boardgame.io該框架可以讓遊戲開發者輕鬆的改變規則來應對某些特定動作,比如當一個特定動作觸發的時候,通過幾個簡單的函數就能描述遊戲狀態的如何改變,其餘的事情就有框架來做。方便對遊戲做出修改。
特點:
- 狀態管理:遊戲狀態在瀏覽器,伺服器和存儲器之間自動進行無縫管理。
- 原型:調試界面甚至在渲染遊戲之前模擬移動。
- 多人遊戲:連接到同一遊戲的所有瀏覽器都實時同步,不需要刷新。
- 日誌:具有時間旅行能力的遊戲日誌(以較早的狀態查看棋盤)。
- UI工具包:React組件用於常見的遊戲元素(卡片等)。
編輯評論 : 就個人而言,這使得遊戲維護以及調試變得簡單(維護之前沒有的bug的時候)。會極大地提高生產效率。針對遊戲裡面的一些小範圍改動,比遊戲開發者自己去寫代碼修改更快,更直接。可以減少代碼量,使用現成的框架,可以實現豐富的功能。
2. parcel-bundler/parcel
parcel:非常快,不需要配置的網路應用打包機
特點:
非常快——打包時間,多核編譯,一個文件系統的存儲器的重建甚至只需要花費一次重啟的時間就能完成。創造性的支持JS, CSS, HTML, file assets,而且不需要安裝插件。在使用Babel, PostCSS, PostHTML甚至no_module時可以在需要時自動轉變模塊。在使用動態import()聲明時沒有配置代碼的分離。建立時支持熱插拔。友好的記錄錯誤的方式——語法會自動高亮代碼框架幫助找出問題
使用parcel的優點:
在使用其他打包機時都會有配置文件和插件,配置文件會佔用很多時間,它們不僅複雜而難以調配,而且在每個應用打包時都要再配置一次,而parcel的零配置可以讓你只要給它一個入口文件,就可以讓它做正確的事。
parcel運用多核處理器去平行編譯你的代碼,這會在開始打包時帶來巨大的速度提升,而且它會用自己的文件系統存儲編譯後的代碼,使得隨後的運行更為迅速。
現存的打包機一般都會在運行時在一個文件內進行大量的代碼轉換與生成,這會導致效率的下降,相反parcel使用抽象語法樹AST來進行轉換,保證每個文件只需要一種語法解析,許多轉換,一條代碼生成。
parcel的工作原理:
許多打包機都是基於JS文件與一種其他格式的,但是parcel不會知道文件的格式,它將不需要配置的對你期望的任何文件展開工作。有許多格式的文件會在parcel中有特別的定義——如何將他們轉變成特殊的文件類型。
parcel會將一個資源樹轉化為一個打包樹,在資源樹完成時,資源將會被放入打包樹中,一個包將會創建給入口文件,而子包會按照動態輸入來創建,這導致了代碼的分離,子包在文件以不同格式輸入時也會被創建。如果一個資源需要更多的包,它將被運到打包樹中最近的資源來源,保證一個文件只有一個包。
在包樹生成後,每個包將被依照文件格式決定的打包機寫入文件,這些打包機知道如何聯合這些文件代碼為最終在瀏覽器上讀取的文件。
3.Lidanger/LiteDB.wiki_translation_zh-cn
LiteDB 是一個單數據文件.NET NoSQL的文檔存儲。它是一個小型的,輕量,快速的NoSQL嵌入式資料庫,可以方便的存儲和搜索文檔。
特點 :
- Serverless NoSQL 文檔存儲
- 類似於 MongoDB 的簡單 API
- 100% C# 代碼,支持.NET 3.5 / .NET 4.0 / NETStandard 1.3 / NETStandard 2.0,單 DLL (小於 300kb)
- 支持線程和進程安全
- 支持文檔/操作級別的 ACID
- 支持寫失敗後的數據還原 (日誌模式)
- 可使用 DES (AES) 加密演算法進行數據文件加密
- 可使用特性或 fluent 映射 API 將你的 POCO類映射為 BsonDocument
- 可存儲文件與流數據 (類似 MongoDB 的 GridFS)
- 單數據文件存儲 (類似 SQLite)
- 支持基於文檔欄位索引的快速搜索 (每個集合支持多達16個索引)
- 支持 LINQ 查詢
- Shell 命令行
- 與 SQLite對比相當快
- 開源,對所有人免費 - 包括商業應用
- 可以從 NuGet 安裝:Install-Package LiteDB
在線測試:
相關資源:
一個GUI(圖形用戶界面)查看工具 https://github.com/falahati/LiteDBViewer
一個GUI(圖形用戶界面)編輯工具 https://github.com/JosefNemec/LiteDbExplorer
Lucene.NET目錄 https://github.com/sheryever/LiteDBDirectory
支持LINQPad https://github.com/adospace/litedbpad
支持F# https://github.com/Zaid-Ajaj/LiteDB.FSharp
4.Facebook/Docusaurus
Docusaurus是一個輕鬆構建,部署和維護開源項目網站的項目。
特點 :
- 啟動簡單 Docusaurus被構建在儘可能短的時間內容易地啟動和運行。我們已經構建了Docusaurus來處理網站構建過程,以便您可以專註於您的項目。
- 本地化的 Docusaurus 通過CrowdIn 提供本地化支持。通過翻譯文檔來增強您的國際社區的地位。
- 可自定義 雖然Docusaurus帶有您需要開始的關鍵頁面和部分,包括主頁,文檔部分,博客和其他支持頁面,但它也是可自定義的,以確保您擁有一個獨一無二的網站。
5.30 seconds of code
「30 seconds of code」意為30秒內可以理解的優秀JavaScript代碼。這個項目收錄了許多優秀的JavaScript的代碼片段,這些代碼依據ES6標準並通過Babel編寫,確保了代碼的向後兼容性,值得收藏並掌握。作者們已將代碼分類並編寫了目錄,我們能夠輕鬆地從中找到我們所需的知識。
6.math as code
這是一個用JavaScript的代碼來解釋數學符號的指南。程序員可以藉此更容易的理解數學符號。數學家也可以藉此使用程序來進行數學工作。該項目使用如下方式把數學符號和代碼段一一對應:
7.popmotion
一個用來開發網頁的js庫,兼容眾多瀏覽器,具有補間動畫等快捷功能,能快速,簡單的達到許多不錯的網頁效果,同時支持CSS,SVG等諸多風格。
安裝:
npm install popmotipn --save
導入:
import { tween } from 'popmotion'
示例:
tween({ from: {x:24, y: 200}, to: 0, //Both x and y will tween to 0 ease: { x:easing.easeOut, y: easing.easeIn } })
8.Coding interview university
教你一步步成為合格軟體工程師的學習指南,目前已有包括中文在內的多國語言版本。
項目片段 :
9.RectDec
基於LLVM的解碼器,支持眾多格式和架構。目前也提供網頁服務,可以輸出c python代碼文件。
目前支持Win7(及以上),Linux,unofficially macOS
10.Git Flight Rules
飛行指南(錯誤指南),以如下的形式詳細闡述了各種問題情形下你應採取的措施。
好了,本期第0期開源周報到此就結束了,今年還能再見一面,先祝大家給自己的女朋友買好了元旦禮物!下次周報再提醒你就來不及了老鐵!