GitHub 熱點速覽 Vol.23:前後端最佳實踐

作者:HelloGitHub-小魚乾

摘要:最佳實踐,又名 best-practices,是 GitHub 常見的項目名,也是本周 Trending 關鍵詞。25 年 Python 開發經驗的 David Beazley 撰寫的 practical-python 開局並獲得了超 1k 的 star,而老項目 Node.js 最佳實踐在六月也開啟了更新模式,持續更新 Node.js 性能實踐篇。卡內基梅隆大學開源的 Penrose 一個可將複雜的數學符號轉換為各種風格的簡單圖表的項目無疑是數據圖表的最佳實踐…

以下內容摘錄自微博@HelloGitHub 的 GitHub Trending,選項標準:新發布 | 實用 | 有趣,根據項目 release 時間分類,發布時間不超過 7 day 的項目會標註 New,無該標誌則說明項目 release 超過一周。由於本文篇幅有限,還有部分項目未能在本文展示,望周知

  • 本文目錄
      1. 本周特推
      • 1.1 青春回憶:CnC_Remastered_Collection
      • 1.2 實用指南:practical-python
      1. GitHub Trending 周榜
      • 2.1 跨平台自動化:robotgo
      • 2.2 Docker 上的 Mac:Docker-OSX
      • 2.3 數學圖表生成工具:Penrose
      • 2.4 換臉技術:Deepfakes
      • 2.5 面經:go-interview
      • 2.6 高顏值播放器:ZY-Player
      • 2.7 最佳實踐:nodebestpractices
      • 2.8 蘋果開源密碼管理器:password-manager-resources
      1. 本周 GitHub Trending #Python 開發小工具# 主題的主力軍
      • 3.1 內存佔用分析:Memory Profiler
      • 3.2 異常監控:Sentry
      • 3.3 內存分析:scalene
      1. 推薦閱讀

1. 本周特推

1.1 青春回憶:CnC_Remastered_Collection

本周 star 增長數:7550+

New CnC_Remastered_Collection 收錄了遊戲公司 EA 發布的《命令與征服》和《紅色警戒》原作源代碼。開源的代碼不涉及遊戲引擎和遊戲素材,只包括 TiberianDawn.dll 和 RedAlert.dll 的源代碼,開源的 DLL 可幫助玩家設計地圖、創建自定義單位、替換藝術作品,以及更改遊戲邏輯和編輯數據。

GitHub 地址→https://github.com/electronicarts/CnC_Remastered_Collection

1.2 實用指南:practical-python

本周 star 增長數:1050+

Newpractical-python 是一名有 25 年 Python 開發經驗的程序員撰寫的實用 Python 指南。無需任何 Python 開發經驗,非 Python 程序員也可以學習下該項目。

GitHub 地址→https://github.com/dabeaz-course/practical-python

2. GitHub Trending 周榜

2.1 跨平台自動化:robotgo

本周 star 增長數:1700+

robotgo 是 Golang 跨平台自動化系統,控制鍵盤鼠標位圖和讀取屏幕,窗口句柄以及全局事件監聽。支持 Windows、Linux、macOS。

GitHub 地址→https://github.com/go-vgo/robotgo

2.2 Docker 上的 Mac:Docker-OSX

本周 star 增長數:3700+

New Docker-OSX 是一個能讓你在 Docker 上跑 Mac 的項目,它支持近乎原生的 OSX-KVM。

GitHub 地址→https://github.com/sickcodes/Docker-OSX

2.3 數學圖表生成工具:Penrose

本周 star 增長數:1550+

Penrose 一個只需在純文本中輸入數學符號就可以創建漂亮的圖表的工具。這樣做的目的是為了方便非專家專心研究更有有挑戰性的技術,而非花精力研究如何創建和探索高質量圖上。

GitHub 地址→https://github.com/penrose/penrose

2.4 換臉技術:Deepfakes

本周 star 增長數:1000+

Deepfakes 是一種利用機器學習中的深度學習實現深度視頻換臉的技術。這種技術在特定的場合下可以做出非常逼真自然的換臉視頻。

GitHub 地址→https://github.com/iperov/DeepFaceLab

2.5 面經:go-interview

本周 star 增長數:500+

go-interview 收錄了用 Go 解決技術面試的方法。

GitHub 地址→https://github.com/public-apis/public-apis

2.6 高顏值播放器:ZY-Player

本周 star 增長數:1300+

ZY-Player 是一個跨平台桌面端視頻資源播放器,簡潔無廣告且顏值高。特性:

  • 全平台支持:Windows、Mac、Linux
  • 12 個視頻源
  • 支持歷史播放記錄,並記錄播放進度
  • 支持分享功能,可一鍵分享海報圖片
  • 精簡模式支持修改透明度
  • 收藏夾同步更新視頻追劇
  • 支持演員名稱搜索
  • 後台自動更新
  • 全新布局配色
  • 多語言
  • 全局快捷鍵
  • 支持下載

GitHub 地址→https://github.com/Hunlongyu/ZY-Player

2.7 最佳實踐:nodebestpractices

本周 star 增長數:1100+

nodebestpractices 是一個 Node.js 最佳實踐列表,收錄 5 篇項目結構實踐、11 篇錯誤處理實踐、12 篇代碼風格實踐、13 篇測試和整體質量實踐、19 篇生產實踐、25 篇安全實踐及 2 篇性能實踐,項目持續更新中,如果你對 Node.js 最佳實踐用有心得不妨和項目作者交流下。

GitHub 地址→https://github.com/goldbergyoni/nodebestpractices

2.8 蘋果開源密碼管理器:password-manager-resources

本周 star 增長數:800+

New蘋果推出全新開源項目——Password Manager Resources,它集成蘋果 iCloud Keychain Password Manager,可以讓密碼管理 App 開發者為特定網站創建可以兼容的強密碼,這個機制與 iCloud 鑰匙串密碼管理器相同。

GitHub 地址→https://github.com/apple/password-manager-resources

3. 本周 GitHub Trending #Python 開發小工具#主題的主力軍

在本期主題模塊,小魚乾這裏選取了 3 個 Python 性能相關的小工具,希望能提高你的開發效率。

3.1 內存佔用分析:Memory Profiler

Memory Profiler 一聽名字就是一個 Python 程序內存佔用分析工具,它可以監視一個進程的內存消耗,甚至可以一行一行的分析 Python 程序的內存消耗。Memory Profiler 由 Python 實現,用戶可選 psutil 模塊(強烈推薦)作為依賴,會分析得更快。

GitHub 地址→https://github.com/pythonprofilers/memory_profiler

3.2 異常監控:Sentry

Sentry,一款免費開源的 Python 實時異常監控平台。Sentry 採用 C/S 模式,服務器端通過 Python 實現,同時提供 web 管理頁面,支持從任何語言、任何應用程序發送事件。一個成熟的服務必要的一環就是異常告警,Sentry 可以幫你及時知道服務非預期的異常。

GitHub 地址→https://github.com/getsentry/sentry

3.3 內存分析:scalene

scalene 一個 Python 的高性能 CPU 和內存分析器。Scalene 很快、佔用資源少、展示信息全面,可用來排查、優化 Python 程序佔用資源過多等問題。

GitHub 地址→https://github.com/emeryberger/scalene

推薦閱讀

  • GitHub 熱點速覽 Vol.22:如何打造超級技術棧
  • GitHub 熱點速覽 Vol.21:Go 新手起手式,學就完事兒了
  • GitHub 熱點速覽 Vol.20:VSCode 插件全家桶新增畫圖小能手

以上為 2020 年第 23 個工作周的 GitHub Trending 如果你 Pick 其他好玩、實用的 GitHub 項目,記得來 HelloGitHub issue 區和我們分享下喲

HelloGitHub 交流群現已全面開放,添加微信號:HelloGitHub 為好友入群,可同前端、Java、Go 等各界大佬談笑風生、切磋技術~

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

※教你寫出一流的銷售文案?

※回頭車貨運收費標準

※別再煩惱如何寫文案,掌握八大原則!

[C#.NET 拾遺補漏]03:你可能不知道的幾種對象初始化方式

閱讀本文大概需要 1.2 分鐘。

隨着 C# 的升級,C# 在語法上對對象的初始化做了不少簡化,來看看有沒有你不知道的。

數組的初始化

在上一篇羅列數組的小知識的時候,其中也提到了數組的初始化,這時直接引用過來。

int[] arr = new int[3] {1, 2, 3}; // 正兒八經的初始化
int[] arr = new [] {1, 2, 3}; // 簡化掉了 int 和數組容量聲明
int[] arr = {1, 2, 3}; // 終極簡化

字典的兩種初始化方式

第二種是 C# 6 的語法,可能很多人不知道。

// 方式一:
var dict = new Dictionary<string, int>
{
{ "key1", 1 },
{ "key2", 20 }
};

// 方式二:
var dict = new Dictionary<string, int>
{
["key1"] = 1,
["key2"] = 20
};

含自定義索引器的對象初始化

這種初始化原理上其實是和上面字典的第二種初始化是一樣的。

public class IndexableClass
{
public int this[int index]
{
set
{
Console.WriteLine("{0} was assigned to index {1}", value, index);
}
}
}

var foo = new IndexableClass
{
[0] = 10,
[1] = 20
}

元組(Tuple)的三種初始化方式

前面兩種方式很常見,後面一種是 C# 7 的語法,可能有些人不知道。

// 方式一:
var tuple = new Tuple<string, int, MyClass>("foo", 123, new MyClass());

// 方式二:
var tuple = Tuple.Create("foo", 123, new MyClass());

// 方式三:
var tuple = ("foo", 123, new MyClass());

另外補充個小知識,在 C# 7 中,元組的元素可以被解構命名:

(int number, bool flage) tuple = (123, true);
Console.WriteLine(tuple.number); // 123
Console.WriteLine(tuple.flag); // True

自定義集合類的初始化

只要自定義集合類包含Add方法,便可以使用下面這種初始化方式為集合初始化元素。

class Program
{
static void Main()
{
var collection = new MyCollection {
"foo", // 對應方法:Add(string item)
{ "bar", 3 }, // 對應方法:Add(string item, int count)
"baz", // 對應方法:Add(string item)
123.45d, // 對應擴展方法:Add(this MyCollection @this, double value)
};
}
}

class MyCollection : IEnumerable
{
privatereadonly IList _list = new ArrayList();

public void Add(string item)
{
_list.Add(item);
}

public void Add(string item, int count)
{
for (int i = 0; i < count; i++)
{
_list.Add(item);
}
}

public IEnumerator GetEnumerator()
{
return _list.GetEnumerator();
}
}

static class MyCollectionExtensions
{
public static void Add(this MyCollection @this, double value) =>
@this.Add(value.ToString());
}

對象的集合屬性初始化

我們知道對集合的初始化必須使用new創建該集合,不能省略,比如:

// OK
IList<string> synonyms = new List<string> { "c#", "c-sharp" };

// 編譯報錯,不能省略 new List<string>
IList<string> synonyms = { "c#", "c-sharp" };

但如果該集合作為另外一個類的屬性,則可以省略new,比如:

public class Tag
{
public IList<string> Synonyms { get; set; } = new List<string>();
}

var tag = new Tag
{
Synonyms = { "c#", "c-sharp" } // OK
};

能想到和找到的就這麼點了,希望以上會對你的編程有所幫助。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※回頭車貨運收費標準

台中搬家公司費用怎麼算?

再生能源興起及疫情助攻 印度碳排放40年來首下降

摘錄自2020年5月12日自由時報報導

印度的二氧化碳排放量出現40年來首次下降,根據印度國家電力公司的數據,二氧化碳排放量在3月份下降了15%,4月份預計可下降30%。其中以燃煤減量為最主要的影響。

截至今年3月的財政年度報告,煤炭的運輸量下降約2%;而火力發電在過去10年中每年增長75%,石油消費需求也同樣下降。根據環境網站「Carbon Brief」的分析,用電下降和再生能源的競爭削弱了國內對化石燃料的需求,加上武漢肺炎(新型冠狀病毒疾病,Covid-19)疫情爆發,印度國內實施全境封鎖,成功改變碳排放量增長的趨勢。

據報導,印度今年3月石油的消耗量下降18%,再生能源供應在過去1年中則有所增加。根據國際能源署(International Energy Agency,IEA)4月底發布的數據,今年第一季度全球燃煤使用量也下降了8%。但分析師則提醒,化石燃料使用率的下降可能不會持續,分析師指出,當全球疫情趨緩,各國重啟經濟,排放量將再次飆升。

公害污染
空氣污染
能源議題
再生能源
污染治理
能源轉型
國際新聞
印度
碳排放
武漢肺炎
化石燃料
疫情看氣候與能源

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計最專業,超強功能平台可客製化

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※回頭車貨運收費標準

※推薦評價好的iphone維修中心

※教你寫出一流的銷售文案?

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

台中搬家公司費用怎麼算?

蘇門答臘高速公路通車前夕驚見虎蹤 生態廊道功效恐不足 專家建議另增柵欄

環境資訊中心綜合外電;范震華 翻譯;賴慧玲 審校;稿源:Mongabay

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※回頭車貨運收費標準

※推薦評價好的iphone維修中心

※超省錢租車方案

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

※推薦台中搬家公司優質服務,可到府估價

毀林、武肺、林火三重危機 專家警告:亞馬遜今年火災恐比去年惡化50%

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※回頭車貨運收費標準

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※推薦評價好的iphone維修中心

※教你寫出一流的銷售文案?

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

真香,擼一個SpringBoot在線代碼修改器

前言

項目上線之後,如果是後端報錯,只能重新編譯打包部署然後重啟;如果僅僅是前端頁面、樣式、腳本修改,只需要替換到就可以了。

小公司的話可能比較自由,可以隨意替換,但是有些公司權限設置的比較嚴格,需要提交申請交給運維去處理。

如果僅僅是一個前端問題,又很緊急,這時候提申請走流程勢必會影響到用戶的正常使用。

今天,擼主給大家推薦一款前端代碼文件編輯器來解決以上問題。

案例

定義實體,用於前端文件樹展示:

@Data
public class SysFile {
    private Integer fileId;
    private String name;
    private Integer parentId;
    private String parentPath;
}

由於項目採用的是SpringBoot框架,打成了war包部署,後端採用以下方式獲取文件列表:

/**
 * 列表
 * @return
 */
@RequestMapping(value = "list", method = RequestMethod.POST)
public Result list() throws FileNotFoundException {
    String filePath = ResourceUtils.getURL("classpath:").getPath();
    List<SysFile> fileList = new ArrayList<>();
    getAllFilePaths(filePath,fileList,0,"");
    return Result.ok(fileList);
}

遞歸獲取某目錄下的所有子目錄以及子文件:

/**
 * 遞歸獲取某目錄下的所有子目錄以及子文件
 * @param filePath
 * @param filePathList
 * @return
 */
private static List<SysFile> getAllFilePaths(String filePath, List<SysFile> filePathList,
                                             Integer level,String parentPath) {
    File[] files = new File(filePath).listFiles();
    if (files == null) {
        return filePathList;
    }
    for (File file : files) {
        int num = filePathList.size()+1;
        SysFile sysFile = new SysFile();
        sysFile.setName(file.getName());
        sysFile.setFileId(num);
        sysFile.setParentId(level);
        if (file.isDirectory()) {
            if(level==0){
                if(file.getName().equals("templates")||
                        file.getName().equals("static")){
                    filePathList.add(sysFile);
                    parentPath = SystemConstant.SF_FILE_SEPARATOR+file.getName();
                    getAllFilePaths(file.getAbsolutePath(), filePathList,num,parentPath);
                    num++;
                }
            }else{
                filePathList.add(sysFile);
                String subParentPath = parentPath+SystemConstant.SF_FILE_SEPARATOR+file.getName();
                getAllFilePaths(file.getAbsolutePath(), filePathList,num,subParentPath);
                num++;
            }
        } else {
            if(level!=0){
                sysFile.setParentPath(parentPath+SystemConstant.SF_FILE_SEPARATOR+file.getName());
                filePathList.add(sysFile);
                num++;
            }
        }
    }
    return filePathList;
}

獲取文件內容:

/**
 * 獲取內容
 * @return
 */
@RequestMapping(value = "getContent", method = RequestMethod.POST)
public Result getContent(String filePath) throws FileNotFoundException {
    String path = ResourceUtils.getURL("classpath:").getPath();
    String content = FileUtil.readUtf8String(path+filePath);
    return Result.ok(content);
}

修改保存:

/**
 * 保存內容
 * @return
 */
@RequestMapping(value = "save", method = RequestMethod.POST)
public Result save(String filePath, String content) throws FileNotFoundException {
    String path = ResourceUtils.getURL("classpath:").getPath();
    /**
     * 生產環境自行解除
     */
    if(active.equals("prod")){
        return Result.error("演示環境禁止插插插!!!");
    }else{
        File file = new File(path+filePath);
        long lastModified = file.lastModified();
        FileUtil.writeUtf8String(content,path+filePath);
        file.setLastModified(lastModified);
        return Result.ok();
    }
}

當然了,如果代碼修改比較多,也可以對文件進行上傳覆蓋操作。

截圖

小結

如果身邊恰好沒有工具連接遠程服務,亦或是自己沒有服務器的權限,這款在線修改器,擼主覺得還是很方便的。但一定要控制好權限,防止普通人員亂修改,還有一定要做好安全日誌記錄。

源碼

https://gitee.com/52itstyle/SPTools

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

※回頭車貨運收費標準

太陽能板報廢處理費問題多 日政府:交由外部單位預存 擬2022年實施

文:宋瑞文(加州能源特約撰述)

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※別再煩惱如何寫文案,掌握八大原則!

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※超省錢租車方案

※教你寫出一流的銷售文案?

網頁設計最專業,超強功能平台可客製化

※產品缺大量曝光嗎?你需要的是一流包裝設計!

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

邊工作邊渡假 日本後疫情時代 政府鼓勵人民到國家公園「Workation」

文:宋瑞文

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

網頁設計最專業,超強功能平台可客製化

抓準時機 澳洲有望在武肺過後追趕全球綠能進度

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計最專業,超強功能平台可客製化

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※回頭車貨運收費標準

※推薦評價好的iphone維修中心

※教你寫出一流的銷售文案?

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

台中搬家公司費用怎麼算?

LG化學又傳工安意外 南韓工廠爆炸1死2傷

摘錄自2020年5月19日自由時報報導

南韓LG化學再傳工安意外,位在忠清南道瑞山市的催化劑工廠,在當地時間今(19)日下午2時20分(台灣時間下午1時20分)左右爆炸失火,造成1死2傷。

《韓聯社》報導,該化工廠的催化劑疑似在過高的壓力下爆炸而引發大火,火勢已在下午3時30分(台灣時間下午2時30分)被撲滅,據消防部門表示,沒有有害化學物質外洩。目前該設施已關閉,警方和消防部門將在清理現場後調查確切事故原因。

本月7日,LG化學在印度投資的一家化工廠發生重大事故,廠內兩座5000公噸級苯乙烯儲存槽因不明原因發生嚴重外洩,造成12人死亡,1000多人住院。

建築
公害污染
生活環境
污染治理
國際新聞
南韓
化學工廠
工安事故
化工廠爆炸

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※回頭車貨運收費標準

※推薦評價好的iphone維修中心

※超省錢租車方案

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

※推薦台中搬家公司優質服務,可到府估價