
你是否記得:剛學完編程基礎那會兒,特別想寫個東西,但動起手來卻發現到處碰壁?
你是否找到:一個好玩的開源項目,結果卡在了部署環境、安裝依賴上?最后"含恨而終"!
我剛學編程的時候,不止一次打開 IDE 看着閃動的光標發呆,大腦和空白的頁面一樣,一片空白毫無頭緒。想寫點東西根本無從下手,想玩別人的項目也跑不起來。一下子從書本抄代碼的階段,轉變到自己構思、設計、編寫代碼,這跨度着實有些大。當時感覺自己學的那些什么語法規則,都吃完拉了什么都沒留下。

有沒有人和我一樣,有過上面的經歷或者正處於這種狀態。我當時就在想有沒有那種,比書上的實例代碼長一些,有些實際用途的開源項目。即:
一個文件、運行簡單、一看就懂,有趣的開源項目!
因為一個文件的項目基本上復制代碼到編輯器里就能跑,還可以通過調試看每步的結果更容易讀懂代碼。重點是它要有實際用途,不是代碼例子,這樣就可以拿出去給別人看和使用,學起來很有動力。代碼中再多來點注釋,相對於干巴巴的教程文章,我更喜歡代碼中的注釋,簡潔直給解惑效果更佳。
功夫不負有心人,終於讓我找到它們了:
OneFile 匯集了僅一個文件,好玩的開源項目。

這里有游戲、編譯器、服務器、工具、實用庫等,它們運行簡單甚至復制代碼就能跑。
下面讓我們一起來把玩下吧!
1、點擊停球

消磨時間的小游戲,只需將球停在有顏色的區域即可得分。所有代碼就只有一個 HTML 文件,玩累了還可以右鍵“顯示網頁源代碼”,研究下源碼如何作弊。

試玩:https://hellogithub.com/onefile/code/cc759276aefe4bad87ac259940042581
2、番茄時鍾

純 Python 實現的命令行番茄時鍾,另外還支持安裝擴展實現桌面通知。復制代碼到 PyCharm 右鍵即可運行。

源碼:https://github.com/521xueweihan/OneFile/blob/main/src/python/tomato-clock.py
3、迷你編譯器

用 JavaScript 寫的迷你編譯器,實現將 LISP 轉化成 C 代碼。每一步寫的特別詳細注釋比代碼多,人人都能看懂的編譯器項目。打開瀏覽器的“開發者工具”跳轉到“Console”頁面,把代碼粘貼進去即可運行。
* LISP C
*
* 2 + 2 (add 2 2) add(2, 2)
* 4 - 2 (subtract 4 2) subtract(4, 2)
* 2 + (4 - 2) (add 2 (subtract 4 2)) add(2, subtract(4, 2))

源碼:https://github.com/521xueweihan/OneFile/blob/main/src/javascript/the-super-tiny-compiler.js
4、字符視頻

打開網頁授權開啟攝像頭,你將看到實時轉化成 ASCII 碼的圖像。瀏覽器右鍵“顯示網頁源代碼”,即可查看全部源碼。

試玩:https://hellogithub.com/onefile/code/126093303b6b414dbab9d623c957fdd4
5、太空侵略者

原版的《太空侵略者》由大約 2k 行的 8080 匯編代碼寫成,但匯編語言太過底層不方便閱讀,今天講解的開源項目 si78c 是按照原版匯編代碼用 C 語言重寫了一遍。這個項目雖然核心文件只有一個,但運行稍微復雜,不怕我們有配套講解文章。

源碼:https://github.com/521xueweihan/OneFile/blob/main/src/c/si78c.c
萬事開頭難,但這些項目一點都不難!
無數次想寫東西卻無從下手...無數個卡住的夜晚...無數次想砸電腦的沖動...
它們都將成為過去式,希望本期推薦的一個文件開源項目,能讓你重拾信心發現編程的樂趣。點擊發現更多!
開啟開源之旅
每個開源項目都是從一個文件開始,通過不停迭代才成為了被人熟知和喜愛的知名項目。
如果你發現某個痛點或者靈光乍現,僅需創建一個文件把它記錄下來,然后不斷更新迭代並開源出來。最終,它可以幫助到更多人,未來的某一天會驚艷到包括你在內的所有人!

如果讓你只用一個文件展示“平生所學”,編程語言不限!你會交出什么樣的作品呢?
一個文件的編程挑戰,要求如下:
- 單個文件、不可壓縮、體積小於 1 MB
- 代碼結構清晰,包含注釋,行數小於 5000 行
- 不限編程語言,不可僅包含 Markdown 文件
- 不引入任何外部文件(圖片、視頻、CSS 等)
- 項目功能完整,具有學習或使用價值
- (可選)最多依賴一個開源庫或框架
輕點 即可參加,開啟你的開源之旅。
