《HelloGitHub》第 08 期
興趣是最好的老師,《HelloGitHub》就是幫你找到興趣!
簡介
最開始我只是想把自己在瀏覽GitHub過程中,發現的有意思、高質量、容易上手的項目收集起來,這樣便於以后查找和學習。后來一想,如果給這些GitHub項目都加上簡單的效果圖和一些通俗易懂的中文介紹。應該能夠幫助到我這樣的新手激發興趣去參與、學習這些優秀、好玩的開源項目。
所以,我就做了一個面向編程新手、熱愛編程、對開源社區感興趣 的人群的月刊,月刊的內容包括:各種編程語言的項目、各種讓生活變得更美好的工具、書籍、學習筆記、教程等。這些項目都是非常容易上手,而且非常Cool,主要是希望大家能動手用起來,加入到開源社區中。會編程的可以貢獻代碼,不會編程的可以反饋使用這些工具中的bug、幫着宣傳你覺得優秀的項目、star項目⭐️。同時你將學習到更多編程知識、提高自己的編程技巧、發現自己的興趣。
最后《HelloGitHub》這個項目就誕生了!😁
以下為本期內容|點擊查看往期內容
Python項目
1、reddit:reddit.com網站的源碼,通過這個項目,可以學習 python 在構建大型項目中的使用、項目結構、代碼風格、python技巧的使用方法等。安裝教程
2、httpstat:httpstat 美化了curl
的結果,使得結果更加可讀。同時它無依賴、兼容Python3、一共才300+行。還可以顯示 HTTP 請求的每個過程中消耗的時間,如下圖:
3、PyMySQL:純 pyton 寫的 mysql 庫,純 python 的好處就是可以運行在任何裝有 python 解釋器(CPython、PyPy、IronPython)的平台上。相對於 MySQLdb 性能幾乎一樣,使用方法也一樣,但是 PyMySQL 安裝方法極其簡單 ——pip install PyMySQL
,PyMySQL 使用示例代碼:
# 下面為例子需要的數據庫的建表語句
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) COLLATE utf8_bin NOT NULL,
`password` varchar(255) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
AUTO_INCREMENT=1 ;
# -*- coding: utf-8 -*-
import pymysql.cursors
# 連接數據庫
connection = pymysql.connect(host='localhost',
user='user',
password='passwd',
db='db',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
try:
with connection.cursor() as cursor:
# 創建一個新的紀錄(record)
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
# 連接不會自動提交,所以你想下面要調用 commit 方法,存儲對數據庫的改動
connection.commit()
with connection.cursor() as cursor:
sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
cursor.execute(sql, ('webmaster@python.org',))
# 獲取一條的紀錄(record)
result = cursor.fetchone()
print(result) # 結果輸出:{'password': 'very-secret', 'id': 1}
finally:
connection.close() # 操作完數據庫一要記得調用 close 方法,關閉連接
Go項目
4、kcptun:也許是世界上最快的UDP傳輸工具,支持 macOS/Linux/Windows/FreeBSD/ARM/Raspberry Pi/OpenWrt。
Ruby項目
5、discourse:Ruby 語言寫的論壇,百分之百開源、免費。
Javascript項目
6、WeFlow:微信出品的一個高效、強大、跨平台的 Web 前端開發工作流工具,官網:
7、atrament.js:極小的Js畫板,在線演示
C、C++項目
8、libco:libco 是微信后台大規模使用的 c/c++ 協程庫,2013年至今穩定運行在微信后台的數萬台機器上。
-
無需侵入業務邏輯,把多進程、多線程服務改造成協程服務,並發能力得到百倍提升;
-
支持CGI框架,輕松構建web服務(New);
-
支持gethostbyname、mysqlclient、ssl等常用第三庫(New);
-
可選的共享棧模式,單機輕松接入千萬連接(New);
-
完善簡潔的協程編程接口
- 類pthread接口設計,通過co_create、co_resume等簡單清晰接口即可完成協程的創建與恢復;
- __thread的協程私有變量、協程間通信的協程信號量co_signal (New);
- 語言級別的lambda實現,結合協程原地編寫並執行后台異步任務 (New);
- 基於epoll/kqueue實現的小而輕的網絡框架,基於時間輪盤實現的高性能定時器;
C#項目
9、Newtonsoft.Json:Newtonsoft.Json 是一款 .NET 平台中開源的 JSON 序列化和反序列化類庫,示例代碼:
public class Account
{
public string Email { get; set; }
public bool Active { get; set; }
public DateTime CreatedDate { get; set; }
public IList<string> Roles { get; set; }
}
Account account = new Account
{
Email = "james@example.com",
Active = true,
CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, ateTimeKind.Utc),
Roles = new List<string>
{
"User",
"Admin"
}
};
string json = JsonConvert.SerializeObject(account, Formatting.Indented);
// {
// "Email": "james@example.com",
// "Active": true,
// "CreatedDate": "2013-01-20T00:00:00Z",
// "Roles": [
// "User",
// "Admin"
// ]
// }
Console.WriteLine(json);
Objective-C、Swift項目
10、aria2gui:Aria2 的 Mac 客戶端(下載工具),介紹、使用方法,特點:
- 集成了 aria2,運行后即完成配置工作
- 多線程下載
- 未完成任務退出可以自動保存
- 支持迅雷離線,百度,115,360等網盤的aria2導出(需要瀏覽器插件支持)
- 支持PT/BT,BT速度跟種子熱度有關,如果沒有速度網盤離線后再下載
- 在Badge顯示整體下載速度
- 任務完成通知
Java項目
11、AndroidUtilCode:Android 開發人員不得不收集的代碼,中文介紹
12、DanmakuFlameMaster:Bilibili 開源的,Android 開源彈幕引擎·烈焰彈幕使,特性:
- 使用多種方式(View/SurfaceView/TextureView)實現高效繪制
- B站xml彈幕格式解析
- 基礎彈幕精確還原繪制
- 支持mode7特殊彈幕
- 多核機型優化,高效的預緩存機制
- 支持多種顯示效果選項實時切換
- 實時彈幕顯示支持
- 換行彈幕支持/運動彈幕支持
- 支持自定義字體
- 支持多種彈幕參數設置
- 支持多種方式的彈幕屏蔽
其它
13、提問的智慧
14、jstraining:阮一峰,全棧工程師培訓材料
15、PTVS:Visual Studio 下的 python 開發工具
16、the-swift-programming-language-in-chinese:中文版 Apple 官方 Swift 教程《The Swift Programming Language》
17、styleguide:百度前端研發團隊的文檔與源碼編寫風格
19、macOS-Security-and-Privacy-Guide:A practical guide to securing macOS.(英文)
聲明
如果你發現了好玩、有意義的開源項目,點擊這里分享你覺得有意思的項目。
- 分享項目格式:項目名稱——項目地址:項目描述(中文),追求完美👉項目上手demo、有圖有真相~
或許你分享的項目會讓別人由衷的感慨:“原來還有這么有意思的項目!編程可以這么酷!”
歡迎轉載,請注明出處和作者,同時保留聲明和聯系方式。