2019 年 4 月 25 日恍箭,Github Star 第一的開(kāi)源項(xiàng)目 freeCodeCamp 創(chuàng)始人 Qunicy 發(fā)表了一篇文章,《Introducing Programmer Playing Cards》蝉仇,介紹了一副可以邊玩邊了解程序員歷史的撲克牌撕予。幾個(gè)月后,因著自己對(duì) FCC 中文社區(qū)的持續(xù)投入淮逻,收到了其中的兩份卡牌鞍泉,也塑造了這篇文章皱埠、以及這個(gè)開(kāi)源項(xiàng)目的靈感起源。
整副卡牌共 54 張撲克咖驮,包含大小王和四種花色的各 13 張牌边器⊙凳啵卡牌全部由 100% PVC 材質(zhì)打造,適度彎曲忘巧、浸水以及打火機(jī)烘烤都不會(huì)影響卡片的耐久度恒界;卡牌包含 54 位程序員先鋒的故事,每一張卡片內(nèi)含一個(gè)程序員的生活照片砚嘴、主要成就清單十酣,以及摘自 TA 的名言——正是這些先鋒們開(kāi)創(chuàng)了現(xiàn)代程序員所依賴(lài)的技術(shù)。
游歷其中际长,能感受到短短的年代中計(jì)算機(jī)技術(shù)飛躍發(fā)展的歷史耸采,以及欣賞到每個(gè)人對(duì)自己所熱愛(ài)的這份事業(yè)所作出的答卷。同時(shí)也能看出由于 54 張卡片數(shù)量的局限性工育,無(wú)法對(duì)更多辛勤貢獻(xiàn)的程序員們提供展示的舞臺(tái)虾宇。因此,為了讓這份有關(guān)“程序員撲克牌”的喜悅能夠通過(guò)互聯(lián)網(wǎng)傳播如绸、通過(guò)開(kāi)源項(xiàng)目傳播文留,并逐步收錄更多的故事,塑造更多的可能性——那就從為其寫(xiě)一份 UI 開(kāi)始吧竭沫!
值 2020.01.01 新的十年伊始之際,以全新品牌“凝果屋(@ningowood)”為出發(fā)點(diǎn)骑篙,以全新開(kāi)源項(xiàng)目“程序員撲克牌(poker-coder)”為著手點(diǎn)蜕提,用更多實(shí)打?qū)嵉拈_(kāi)源項(xiàng)目驅(qū)動(dòng)學(xué)習(xí),開(kāi)啟新十年的開(kāi)源征程靶端!
開(kāi)源項(xiàng)目倉(cāng)庫(kù)地址:https://github.com/ningowood/poker-coder
開(kāi)源項(xiàng)目部署地址:https://ningowood.github.io/poker-coder/
一谎势、54 張撲克牌,54 個(gè)技術(shù)故事
收錄的 54 個(gè)程序員里杨名,包含有業(yè)界耳熟能詳?shù)?Ruby on Rails 之父 David脏榆、比特幣之父中本聰、Linux 之父 Linus台谍、以及有“第一位程序員”以及“第一位女性程序員”之稱(chēng)的 Ada Lovelace......下面我們先大致介紹一下收錄中的這 54 位程序員吧须喂。
目錄結(jié)構(gòu)分為“大小王 Jokers”、“黑桃 Spades”趁蕊、“紅桃 Hearts”坞生、“梅花 Clubs”、“方塊 Diamonds”以及“亞裔程序員”和“女性程序員”板塊掷伙。其中“亞裔程序員”和“女性程序員”摘自前面花色中是己,且有重復(fù)性,但不妨我們從另一個(gè)角度看待全球計(jì)算機(jī)發(fā)展史上亞洲程序員以及最重要卻最容易被忽視的——女性程序員的貢獻(xiàn)任柜。
大小王 Jokers
借助基于密碼證明的電子貨幣卒废,無(wú)需信任第三方中間商沛厨,資金就可以安全,交易也不費(fèi)吹灰之力摔认∧嫫ぃ——Satoshi Nakamoto(中本聰)
花色 | 程序員 | 成就概要 |
---|---|---|
大王 | David Heinemeier Hansson | 創(chuàng)造了 Ruby on Rails |
小王 | Satoshi Nakamoto | 發(fā)明了區(qū)塊鏈;設(shè)計(jì)了比特幣 |
黑桃 Spades
你可以說(shuō)我在計(jì)算上很懶惰级野,但因此我創(chuàng)造了計(jì)算機(jī)页屠。——Konrad Zuse
花色 | 程序員 | 成就概要 |
---|---|---|
? A | Ada Lovelace | 發(fā)明了計(jì)算機(jī)算法蓖柔;編寫(xiě)了第一個(gè)計(jì)算機(jī)程序 |
? 2 | Linus Torvalds | 創(chuàng)造了 Linux 操作系統(tǒng)辰企;創(chuàng)造了 Git 版本控制系統(tǒng) |
? 3 | Bjarne Stroustrup | 創(chuàng)造了 C++ 程序語(yǔ)言 |
? 4 | Patricia Sellinger | 幫助創(chuàng)造 System R 項(xiàng)目(SQL 的第一次實(shí)現(xiàn)) |
? 5 | Tim Berners-Lee | 創(chuàng)造了萬(wàn)維網(wǎng) |
? 6 | Richard Stallman | 發(fā)明了 GNU 操作系統(tǒng);建立了自由軟件基金會(huì)况鸣;創(chuàng)造了 GNU Emacs 編輯器 |
? 7 | Raymond Kurzweil | 發(fā)明了 OCR(光學(xué)字符識(shí)別)牢贸;開(kāi)發(fā)了首款商用文本語(yǔ)音合成器 |
? 8 | Ken Thompson | 發(fā)明了 B 語(yǔ)言;合作發(fā)明了 Unix 操作系統(tǒng)镐捧;合作發(fā)明了 Go 語(yǔ)言 |
? 9 | Ray Tomlinson | 發(fā)明了 Email |
? 10 | Mary Allen Wilkes | 為 LINC 設(shè)計(jì)了交互式操作系統(tǒng) LAP6潜索;第一個(gè)在家中建造和使用個(gè)人計(jì)算機(jī) |
? J | Edsger Dijkstra | 發(fā)明了 Dijkstra 最短路徑算法;提出了哲學(xué)家就餐問(wèn)題 |
? Q | Douglas Engelbart | 發(fā)明了鼠標(biāo)懂酱;幫助發(fā)明了圖形用戶(hù)界面 |
? K | Konrad Zuse | 建造了第一個(gè)二進(jìn)制電腦竹习;建造了第一個(gè)可編程數(shù)字計(jì)算機(jī);設(shè)計(jì)了第一個(gè)高級(jí)程序設(shè)計(jì)語(yǔ)言 |
紅桃 Hearts
Python是程序員需要多少自由度的實(shí)驗(yàn)列牺。自由度太大整陌,沒(méi)有人可以閱讀別人的代碼;太少了瞎领,表現(xiàn)力受到了威脅泌辫。——Guido Van Rossum
花色 | 程序員 | 成就概要 |
---|---|---|
? A | Grace Hopper | 首創(chuàng)術(shù)語(yǔ)“bug”九默;發(fā)明了編譯器震放;合作開(kāi)發(fā)了 COBOL |
? 2 | Andrew Ng | 領(lǐng)導(dǎo)斯坦福人工智能機(jī)器人項(xiàng)目;領(lǐng)導(dǎo)斯坦福自治直升機(jī)項(xiàng)目驼修;上線(xiàn)線(xiàn)上機(jī)器學(xué)習(xí)課程 |
? 3 | Corrinne Yu | 為美國(guó)航天飛機(jī)計(jì)劃編寫(xiě)代碼殿遂;為自己創(chuàng)建了 3D 圖形引擎;領(lǐng)導(dǎo) Halo 游戲系列的開(kāi)發(fā) |
? 4 | Brian Fox | 創(chuàng)造了 GNU 的 Bash Shell乙各;合作開(kāi)發(fā)了 OVC 開(kāi)源投票系統(tǒng) |
? 5 | Guido Van Rossum | 創(chuàng)造了 Python 語(yǔ)言 |
? 6 | Larry Wall | 創(chuàng)建了 Git 的前身 Patch勉躺,創(chuàng)建了 Per 語(yǔ)言 |
? 7 | Bob Frankston & Dan Bricklin | 創(chuàng)造了第一個(gè)電子表格程序 VisiCalc |
? 8 | Adele Goldberg | 提出用于圖形用戶(hù)界面的概念;合作開(kāi)發(fā)了 Smalltalk-80 語(yǔ)言 |
? 9 | Brian Kernighan | 合作開(kāi)發(fā)了 Unix 操作系統(tǒng)觅丰;編寫(xiě)了第一個(gè) “Hello World” 程序饵溅;合作發(fā)明了 Awk 語(yǔ)言 |
? 10 | Donald Knuth | 出版了《計(jì)算機(jī)編程藝術(shù)》;設(shè)計(jì)了 TeX 類(lèi)型設(shè)置系統(tǒng) |
? J | Judea Pearl | 創(chuàng)建了人工智能的概率方法妇萄;發(fā)明了貝葉斯網(wǎng)絡(luò) |
? Q | John McCarthy | 提出了術(shù)語(yǔ)“人工智能”蜕企;創(chuàng)建了 Lisp 語(yǔ)言 |
? K | Maurice Wilkes | 打造了第一臺(tái)具有內(nèi)部存儲(chǔ)程序的計(jì)算機(jī) EDSAC |
梅花 Clubs
知識(shí)管理首先是要利用信息來(lái)提出正確的問(wèn)題咬荷,這本身就是一個(gè)巨大且通常是無(wú)法識(shí)別的挑戰(zhàn)∏嵫冢——Dana Ulery
花色 | 程序員 | 成就概要 |
---|---|---|
? A | Ida Rhodes | 從事于“數(shù)學(xué)表項(xiàng)目”幸乒;和 Betty Holberton 一起為 UNIVAC-I 設(shè)計(jì)了 C-10 語(yǔ)言 |
? 2 | Bram Cohen | 創(chuàng)造了 BitTorrent 對(duì)等協(xié)議 |
? 3 | Brendan Eich | 創(chuàng)造了 JavaScript 語(yǔ)言 |
? 4 | Sophie Wilson | 設(shè)計(jì)了橡子微型計(jì)算機(jī);開(kāi)發(fā)了 BBC Basic 語(yǔ)言 |
? 5 | James Gosling | 創(chuàng)造了 Java 語(yǔ)言 |
? 6 | Bill Joy | 創(chuàng)造了 VI 編輯器唇牧;創(chuàng)造了 Unix 下的 C Shell |
? 7 | Steve Wozniak | 設(shè)計(jì)了第一臺(tái)大眾市場(chǎng)的微型計(jì)算機(jī) Apple II罕扎;發(fā)明了通用遙控器 |
? 8 | Ward Christensen | 開(kāi)發(fā)了一種簡(jiǎn)單的文件傳輸協(xié)議 XMODEM,第一個(gè)公告板 CBBS 共同創(chuàng)始人 |
? 9 | Dennis Ritchie | 合作創(chuàng)建了 Unix 操作系統(tǒng)丐重;設(shè)計(jì)了 C 語(yǔ)言 |
? 10 | Dana Ulery | 早期的科學(xué)計(jì)算應(yīng)用先鋒腔召;建立了電子數(shù)據(jù)交換標(biāo)準(zhǔn) |
? J | Frances Allen | 為最早的超級(jí)計(jì)算機(jī)之一 IBM Stretch 設(shè)計(jì)了編譯器 |
? Q | Marvin Minsky | 發(fā)明了神經(jīng)網(wǎng)絡(luò)和第一臺(tái)自學(xué)機(jī)器;發(fā)明了第一臺(tái)頭戴式圖形顯示器 |
? K | Alan Turing | 發(fā)明了圖靈機(jī)扮惦;開(kāi)發(fā)出可以破解納粹加密的計(jì)算機(jī)臀蛛;發(fā)明了圖靈測(cè)試 |
方塊 Diamonds
始終如一地編寫(xiě)安全代碼要比指出不安全代碼要困難得多⊙旅郏——Parisa Tabriz
花色 | 程序員 | 成就概要 |
---|---|---|
? A | Dorothy Vaughan | 計(jì)算出了美國(guó)太空計(jì)劃的飛行軌跡浊仆;教員工行 FORTRAN 編程 |
? 2 | Parisa Tabriz | 監(jiān)督 Google Chrome 的安全性;成立了安全倡導(dǎo)者會(huì)議 |
? 3 | Yukihiro Matsumoto | 設(shè)計(jì)了 Ruby 語(yǔ)言 |
? 4 | Stephen Wolfram | 開(kāi)發(fā)了計(jì)算機(jī)代數(shù)系統(tǒng) Mathematica豫领;開(kāi)發(fā)了應(yīng)答引擎 Wolfram Alpha |
? 5 | Alexey Pajitnov | 設(shè)計(jì)并開(kāi)發(fā)了俄羅斯方塊 |
? 6 | Phil Zimmermann | 創(chuàng)建了公共密鑰加密程序 Pretty Good Privacy |
? 7 | Radia Perlman | 設(shè)計(jì)了以太網(wǎng)的生成樹(shù)協(xié)議 |
? 8 | Andrew Yao | 用極小定理提出姚的極小極大原理抡柿;引入通信復(fù)雜性理論;提出了姚的百萬(wàn)富翁問(wèn)題 |
? 9 | Vint Cerf & Bob Kahn | 發(fā)明了傳輸控制協(xié)議等恐;發(fā)明了互聯(lián)網(wǎng)協(xié)議 |
? 10 | Alan Kay | 率先使用了面向?qū)ο蟪绦蛟O(shè)計(jì) |
? J | Margaret Hamilton | 負(fù)責(zé)阿波羅登月任務(wù)的軟件開(kāi)發(fā) |
? Q | Jean E. Sammet | 合作開(kāi)發(fā)了 COBOL 語(yǔ)言洲劣;開(kāi)發(fā)了 FORMAC 語(yǔ)言 |
? K | Vera Molnar | 開(kāi)始迭代組合圖像;開(kāi)始基于幾何形狀和主題創(chuàng)建算法繪畫(huà) |
亞裔程序員
節(jié)選名言:今天鼠锈,我實(shí)際上很難考慮一個(gè)在未來(lái)幾年內(nèi)不會(huì)被人工智能改變的行業(yè)⌒侵——Andrew Ng
花色 | 程序員 | 成就概要 |
---|---|---|
小王 | Satoshi Nakamoto | 發(fā)明了區(qū)塊鏈购笆;設(shè)計(jì)了比特幣 |
? 2 | Andrew Ng | 領(lǐng)導(dǎo)斯坦福人工智能機(jī)器人項(xiàng)目;領(lǐng)導(dǎo)斯坦福自治直升機(jī)項(xiàng)目虚循;上線(xiàn)線(xiàn)上機(jī)器學(xué)習(xí)課程 |
? 3 | Yukihiro Matsumoto | 設(shè)計(jì)了 Ruby 語(yǔ)言 |
? 8 | Andrew Yao | 用極小定理提出姚的極小極大原理同欠;引入通信復(fù)雜性理論;提出了姚的百萬(wàn)富翁問(wèn)題 |
女性程序員
有時(shí)我會(huì)擁抱我的代碼横缔。我會(huì)抓取一些代碼打印輸出铺遂,將自己圍在幾本書(shū)中,握住法律墊子茎刚,curl 縮在帶毯子的沙發(fā)上襟锐,然后開(kāi)始閱讀并亂涂亂畫(huà)。[機(jī)翻]——Corrinne Yu
花色 | 程序員 | 成就概要 |
---|---|---|
? A | Ada Lovelace | 發(fā)明了計(jì)算機(jī)算法膛锭;編寫(xiě)了第一個(gè)計(jì)算機(jī)程序 |
? 4 | Patricia Sellinger | 幫助創(chuàng)造 System R 項(xiàng)目(SQL 的第一次實(shí)現(xiàn)) |
? 10 | Mary Allen Wilkes | 為 LINC 設(shè)計(jì)了交互式操作系統(tǒng) LAP6粮坞;第一個(gè)在家中建造和使用個(gè)人計(jì)算機(jī) |
? 3 | Corrinne Yu | 為美國(guó)航天飛機(jī)計(jì)劃編寫(xiě)代碼蚊荣;為自己創(chuàng)建了 3D 圖形引擎;領(lǐng)導(dǎo) Halo 游戲系列的開(kāi)發(fā) |
? 8 | Adele Goldberg | 提出用于圖形用戶(hù)界面的概念莫杈;合作開(kāi)發(fā)了 Smalltalk-80 語(yǔ)言 |
? A | Ida Rhodes | 從事于“數(shù)學(xué)表項(xiàng)目”互例;和 Betty Holberton 一起為 UNIVAC-I 設(shè)計(jì)了 C-10 語(yǔ)言 |
? 4 | Sophie Wilson | 設(shè)計(jì)了橡子微型計(jì)算機(jī);開(kāi)發(fā)了 BBC Basic 語(yǔ)言 |
? 10 | Dana Ulery | 早期的科學(xué)計(jì)算應(yīng)用先鋒筝闹;建立了電子數(shù)據(jù)交換標(biāo)準(zhǔn) |
? J | Frances Allen | 為最早的超級(jí)計(jì)算機(jī)之一 IBM Stretch 設(shè)計(jì)了編譯器 |
? A | Dorothy Vaughan | 計(jì)算出了美國(guó)太空計(jì)劃的飛行軌跡媳叨;教員工行 FORTRAN 編程 |
? 2 | Parisa Tabriz | 監(jiān)督 Google Chrome 的安全性;成立了安全倡導(dǎo)者會(huì)議 |
? 7 | Radia Perlman | 設(shè)計(jì)了以太網(wǎng)的生成樹(shù)協(xié)議 |
? J | Margaret Hamilton | 負(fù)責(zé)阿波羅登月任務(wù)的軟件開(kāi)發(fā) |
? Q | Jean E. Sammet | 合作開(kāi)發(fā)了 COBOL 語(yǔ)言关顷;開(kāi)發(fā)了 FORMAC 語(yǔ)言 |
隱藏的第 55+ 張撲克:你
整副撲克牌 UI 已經(jīng)變成 CSS 布局糊秆,因此在本地可以自定義自己的卡牌。
二解寝、純前端開(kāi)源項(xiàng)目開(kāi)發(fā)歷程小記
本項(xiàng)目目前專(zhuān)注于純前端技術(shù)的建設(shè)扩然,主要的前端技術(shù)棧如下:
- React:前端視圖層核心庫(kù)
- TypeScript:提供靜態(tài)類(lèi)型檢查
- Material UI:Material Design 風(fēng)格的 UI 設(shè)計(jì)庫(kù)
- ...
React + Material UI
這里不做過(guò)多的技術(shù)探討,NingoWood 的主要前端技術(shù)選型也將圍繞 React + Material Design 搭建前端風(fēng)格聋伦。未來(lái)會(huì)在學(xué)習(xí)過(guò)程中逐步分享相關(guān)技術(shù)知識(shí)點(diǎn)夫偶。
從零到 Create React App,再到正式開(kāi)發(fā)業(yè)務(wù)代碼的小記(構(gòu)建項(xiàng)目觉增,安裝依賴(lài))如下:
$ npx create-react-app poker-coder --typescript
$ git remote add origin git@github.ningowood/poker-coder.git
$ git flow init
$ git flow feature start poker-coder
$ mkdir src/views src/store src/routes src/config src/components src/commons
$ sudo commitizen init cz-conventional-changelog --yarn --dev --exact --force
$ sudo yarn add react-router-dom @types/react-router-dom
$ sudo yarn add redux react-redux @types/react-redux
$ sudo yarn add redux-devtools-extension redux-logger redux-thunk @types/redux-logger
$ sudo yarn add @material-ui/core @material-ui/icons axios moment notistack
$ sudo yarn add react-i18next i18next
$ sudo yarn add --dev less less-loader node-sass react-hot-loader
布局 + 填充
從看到撲克牌 UI 到落實(shí)的過(guò)程中兵拢,需要進(jìn)行 CSS 思維的轉(zhuǎn)換。每一張卡片分為左側(cè)和右側(cè)的花色姓名欄以及中間的內(nèi)容部分逾礁;內(nèi)容部分又包括程序員圖片说铃、里程碑事件以及名言引用塊。
關(guān)鍵的 CSS 突破點(diǎn)在于柵格系統(tǒng) + 響應(yīng)式高度來(lái)實(shí)現(xiàn)撲克牌的寬高比例恒定問(wèn)題嘹履。其實(shí)只要會(huì)搜索腻扇,就會(huì)發(fā)現(xiàn)可以用 padding-bottom: 140%
來(lái)保證高度是寬度的 1.4 倍,然后寬度隨著柵格系統(tǒng)改變即可砾嫉。
容器的 CSS 代碼如下幼苛,具體可以參考開(kāi)源項(xiàng)目根目錄下 src/components 下的寫(xiě)法。
root: {
height: 0,
width: '100%',
paddingBottom: '140%',
position: 'relative',
},
cardWrap: {
height: '100%',
width: '100%',
backgroundColor: '#fff',
position: 'absolute',
textAlign: 'center',
},
開(kāi)源 + 部署
為了貫穿良好的開(kāi)發(fā)習(xí)慣焕刮,整個(gè)開(kāi)發(fā)過(guò)程從 Git Flow 的選用以及 Git Commit Message 等角度都做了較好的規(guī)范舶沿,并最終通過(guò)npm run build
和npm run deploy
部署到 Github Pages 頁(yè)面上。
截止 v0.1.0 發(fā)布配并,通過(guò) git log --pretty=format:'%ar,%s' > log.csv
命令生成并通過(guò) Emoji 適度修改的 Commit Log 記錄如下括荡,統(tǒng)一記錄在了 Release 里。
三溉旋、v0.1.0 正式發(fā)布畸冲,以及未來(lái)版本藍(lán)圖
回顧整個(gè)開(kāi)發(fā)過(guò)程,通過(guò)簡(jiǎn)單的 CSS 布局 + 卡片內(nèi)容填充以及 Github Pages 部署上線(xiàn),v0.1.0 正式發(fā)布召夹。在這個(gè)過(guò)程中初期靈感得到實(shí)現(xiàn)岩喷,也隨之而來(lái)了各種各樣的新靈感。記錄在這里监憎,也逐步開(kāi)放在 Github 倉(cāng)庫(kù)中的 issue 里纱意,歡迎大家的加入。
[1] 不僅僅是程序員撲克牌
從之前介紹的隱藏的第 55+ 張撲克牌可以看出:我們不僅僅可以記錄程序員的故事鲸阔,也能記錄各行各業(yè)先驅(qū)的故事偷霉;我們不僅僅可以記錄人的故事,也可以記錄不同事務(wù)的故事——如不同的編程語(yǔ)言甚至不同超級(jí)英雄的故事——一切都是開(kāi)放性的褐筛。
[2] 不僅僅只有一個(gè)卡組
也因此得出這個(gè)待做事項(xiàng)——支持更多的卡組类少,記錄更多的人與事。
[3] 自定義卡片與卡組
目前的重點(diǎn)是純前端實(shí)現(xiàn)“程序員撲克牌”項(xiàng)目渔扎,這就可以發(fā)展處讓用戶(hù)不用克隆項(xiàng)目至本地修改源碼來(lái)自定義卡片硫狞,直接在線(xiàn)編輯卡片并導(dǎo)出,甚至保存在云端晃痴。
[3] i18n: 國(guó)際化語(yǔ)言
由于這幅撲克牌的介紹都是純英文的残吩,也因此從純英文支持出發(fā)。接下來(lái)逐步開(kāi)放多語(yǔ)言支持倘核,并對(duì)社區(qū)提供翻譯入口的開(kāi)放泣侮,對(duì)中文更加友好。
以及更多...
尾紧唱、寒冬寄語(yǔ)活尊,歡迎加入凝果開(kāi)源社
縱觀(guān) 2019,寒冬越來(lái)越“寒”漏益,同時(shí)蛹锰,中文語(yǔ)境下的“程序員”三個(gè)字也逐漸變得和“被動(dòng)”、“猝死”绰疤、“淘汰”铜犬、“失業(yè)”有關(guān)。希望我們能夠通過(guò)這篇文章對(duì)“程序員撲克牌”的介紹峦睡,通過(guò)這個(gè)項(xiàng)目對(duì)這些“Programmer”的真實(shí)記錄翎苫,重新找回屬于自身職業(yè)的榮耀权埠,讓自己對(duì)事業(yè)能多添一份激情所在榨了。
那么,歡迎加入凝果開(kāi)源社攘蔽,2020 伊始龙屉,對(duì)未來(lái)開(kāi)源世界的持續(xù)支持與關(guān)注,就從訂閱我們的微信公眾號(hào)(@ningowood)開(kāi)始吧!
我的 Github 地址:https://github.com/hylerrix
凝果屋的 Github 地址:https://github.com/ningowood
程序員撲克牌的 Github Pages:https://ningowood.github.io/poker-coder/