轉 | 使用 NuGet 發射衛星只需要三步

2021-02-20 汪宇傑博客

軟體行業和其他行業不相同,在很多行業想要復用前人的知識,需要重新再製造一遍。而軟體行業,特別是 dotnet 系的技術,想要用前人的經驗只需要使用前人寫的庫。隨著越來越多的基礎設施和底層庫的積累,現在開發一個軟體的速度會越來越快。在使用 dotnet 技術棧時,可以通過 NuGet 方便使用前人的庫或發布自己的庫和工具。有很多功能,其實只需要知道用哪個庫和如何用,底層細節可以在完全不知道不了解的情況下也能用起來

回到上篇博客最後的問題,我想要寫一個軟體,用來發射衛星,請問需要幾步?

https://blog.lindexi.com/post/%E7%A8%8B%E5%BA%8F%E7%8C%BF%E4%BF%AE%E5%85%BB-%E4%BB%8E%E5%AE%89%E8%A3%85-dotnet-%E5%BC%80%E5%A7%8B.html

假設現在已經有大佬將創建衛星和發射衛星等的實現都封裝在一個庫中,那麼此時要發射衛星就非常簡單了

第一步:通過 NuGet 安裝發射衛星的庫

第二步:調用庫裡面發射衛星函數

第三步:使用 dotnet run 構建運行程序

沒錯,只需要三步

用 NuGet 就是怎麼神奇的東西,根據 GitHub 的統計,每天都會被小夥伴上傳幾百萬行代碼(數據不準確)而我每天最多只能看一萬行代碼,這就意味著有大量的知識或專業的知識其實我很難快速掌握。但是我又想做這方面的開放,難道我需要和之前上學一樣,從原理從最底層開始學習,我才可以進行開發?其實不然,如最簡單的矩陣轉換,我只需要知道調用哪個函數就會發生什麼,而不是去了解什麼是矩陣,矩陣的轉換的最優算法是什麼,如何寫,有哪些邊界。其實我大部分時間寫出來的邏輯都沒有從 NuGet 上使用其他小夥伴做的庫的方法來的穩當

按照中國的教科書,在學習一個東西之前都需要吹半天,而現在吹的部分也差不多了,下面就是實戰啦

當然,我不會告訴大家如何發射衛星,這個技術太可怕了。請讓咱來個簡單一點的東西,在開始之前需要了解什麼是 NuGet 工具。其實 NuGet 就是一個用來存放庫的東西,這裡的 庫 指的是小夥伴編寫上傳的封裝好的東西。可以引用庫來做很多有趣的事情。而 NuGet 分為兩部分,一部分在雲上面,就是上面所說的用來存放庫的功能。另一部分放在本地用來安裝和管理項目裡面用到的庫

如果小夥伴遇到一個功能不知道如何實現,在網上是期望找到原始碼複製粘貼好呢?還是找到一個現成的庫安裝好呢?其實我比較推薦後面一個方法

在安裝完成了 dotnet 工具之後,可以方便使用 NuGet 在本地的一個項目裡面安裝神奇的庫,我想要讀取一個PPT文件裡面的所有頁面的所有文本將這些文本輸出,此時我可以如何做?想要做PPT解析可不是一個簡單的事情,但是有了 NuGet 工具,好像就簡單了好多了

我通過神奇的bing找到了微軟開源的官方 Office 解析庫 OpenXml 庫,這是一個跨平臺的庫,可以在任何的 dotnet core 和 dotnet framework 項目上使用,首先就是按照慣例先安裝 NuGet 庫。如何安裝呢?

dotnet new console -o WhocohefurWallqemwaychurgu

在進入到 WhocohefurWallqemwaychurgu 文件夾之後,可以使用下面代碼用 dotnet 工具安裝 Openxml 庫

dotnet add package DocumentFormat.OpenXml

此時就完成了庫的安裝了,接下來就是使用這個庫啦,假設在 E:\lindexi\測試.pptx 的文件就是本文想要測試輸出的文件,可以在 Program 使用下面代碼,就是這麼方便就完成了一個 PPT 的解析了

using (var presentationDocument = DocumentFormat.OpenXml.Packaging.PresentationDocument.Open(@"E:\lindexi\測試.pptx", false))
           {
               var presentationPart = presentationDocument.PresentationPart;
               var presentation = presentationPart.Presentation;

               // 先獲取頁面
               var slideIdList = presentation.SlideIdList;

               foreach (var slideId in slideIdList.ChildElements.OfType<SlideId>())
               {
                   // 獲取頁面內容
                   var slidePart = (SlidePart) presentationPart.GetPartById(slideId.RelationshipId);

                   foreach (var paragraph in
                       slidePart.Slide
                           .Descendants<DocumentFormat.OpenXml.Drawing.Paragraph>())
                   {
                       // 獲取段落
                       // 在 PPT 文本是放在形狀裡面
                       foreach (var text in
                           paragraph.Descendants<DocumentFormat.OpenXml.Drawing.Text>())
                       {
                           // 獲取段落文本,這樣不會添加文本格式
                           Debug.WriteLine(text.Text);
                       }
                   }
               }
           }

這個項目所有代碼放在 github 歡迎小夥伴訪問

通過上面例子小夥伴可以看到用 NuGet 的話,將問題從如何理解一個新的知識和如何應用和編寫代碼轉換為如何尋找一個庫,以及如何使用這個庫。按照學習模型的分法,尋找一個庫和學習如何使用這個庫都是屬於舒適區範圍。而學習一個新知識,如學習 PPT 的格式等,這些就是屬於學習模型裡面的恐慌區了,學起來的難度和需要投入的時間都是很大的

剛才都是通過命令行的形式安裝庫的,我是不是還可以使用太陽系裡面最強的 IDE 來進行管理 NuGet 庫呢?沒錯請打開 VisualStudio 創建一個控制臺項目,我這裡還是依然使用剛才的命令行創建的項目為例子。可以雙擊 xx.csproj 打開項目,此時的 VisualStudio 在你關閉它時會提示保存 sln 文件,而不需要先新建 sln 文件

右擊項目點擊管理 NuGet 程序包

這裡提供了安裝 NuGet 庫的功能以及卸載庫的功能,只需要在搜尋裡面輸入對應的庫的名字,支持模糊搜尋的功能,找到對應的庫,點擊安裝就可以了

多使用 NuGet 庫,可以減少自己寫的代碼的時間,如果看到一個庫裡面的下載量很多,那麼證明這個庫還是有比較多小夥伴用的。換句話就是有很多小夥伴幫你踩坑了,基本上可以放心使用

我是一個助人為樂的逗比,我想要將自己寫的代碼打包為庫讓更多的小夥伴能用上我的逗比代碼,我可以怎麼做?

很簡單,在 VisualStudio 右擊打包就可以啦

請看 VisualStudio 使用新項目格式快速打出 Nuget 包 基本上5分鐘內就可以完成打包啦

https://blog.lindexi.com/post/VisualStudio-%E4%BD%BF%E7%94%A8%E6%96%B0%E9%A1%B9%E7%9B%AE%E6%A0%BC%E5%BC%8F%E5%BF%AB%E9%80%9F%E6%89%93%E5%87%BA-Nuget-%E5%8C%85.html

不想打開 VisualStudio 的話,可以用上文介紹的 dotnet pack 一句話進行打包,當然這個命令就只能打包,而對包裡面的作者什麼的設置就需要手動編輯 csproj 文件啦,沒有在 VisualStudio 裡面那麼方便啦

很不辛苦,很簡單打出一個包出來了,請問如何發布呢?訪問 https://www.nuget.org/ 官網,點擊上傳就可以啦。想要進行自動化的發布,在 Github 上往主分支合併時就自動發布,請看 Github 給倉庫上傳 NuGet 庫

https://blog.lindexi.com/post/Github-%E7%BB%99%E4%BB%93%E5%BA%93%E4%B8%8A%E4%BC%A0-NuGet-%E5%BA%93.html

相關焦點

  • 北鬥衛星系統創造「中國速度」,「三步走」邁入全球時代
    自上世紀90年代開始,北鬥系統啟動研製,按「三步走」發展戰略,先有源後無源,先區域後全球,走出了一條中國特色的衛星導航系統建設道路。「雙星定位」方案腦洞大開按照空間定位原理,對地球上一個目標點進行定位,至少需要3顆衛星;考慮到時間誤差,精確定位至少需要4顆衛星。這就是GPS和格洛納斯的工作原理和全球組網方案。如果按這條路徑探索試驗,我們既缺技術儲備,又缺工程經驗,更缺經費支撐。
  • 三顆視頻成像模式衛星發射升空 發射一顆民用衛星分幾步走?
    探索推廣政府與社會資本合作(PPP)等模式,鼓勵和引導社會力量參與國家民用空間基礎設施、衛星地面應用系統等建設運營,以及空間信息產品服務,培育「網際網路+衛星應用」新業態,建立完善政府購買服務的模式,促進商業航天健康發展。在國內,什麼樣的人可以發射民用衛星?
  • 北鬥三號最後一顆組網衛星計劃於5月份發射,有哪些重要意義?
    我國的北鬥衛星建設方針也分為三步走,與月球探測計劃比較相似,正因為此,北鬥有一代、二代、三代之分,也就是北鬥一號、二號與三號,這裡大家要注意一下,北鬥一號並不是一顆衛星的名稱,它代表的是第一代北鬥衛星導航試驗系統,是包含幾顆衛星的,作為第一代試驗系統,北鬥一號也提供實用功能。如今經歷了北鬥一代、二代,三代也迎來了最後一顆組網衛星的發射,真可謂是振奮人心。
  • 「三步走」「齊步走」:中國航天闖出自強路
    此外,本月計劃發射北鬥三號最後一顆組網衛星,北鬥導航系統建設「第三步」即將迎來收官戰。對於中國航天來說,2020年註定是個不平凡的年份,多項按照「三步走」發展戰略實施的航天旗艦工程「齊步」挺進,形成世界航天發展史上的壯觀景象。
  • SpaceX拼車計劃,進一步降低小衛星發射成本——海外航天視點之三
    多年來,SpaceX一直在推動降低將大型衛星送入軌道的成本。該公司8月份啟動的拼車計劃現在也給發射小型衛星的成本帶來了下行壓力。「太空探索技術公司提供的價格是以前從未見過的,」地球成像公司「行星」(Planet)的發射副總裁邁克·薩芬(Mike Safyan)說。該公司在軌道上有150多顆小型衛星。
  • 夜空中最亮的星——我國北鬥最後一顆全球組網衛星發射成功!
    中國的北鬥一號完全基於此技術,同時北鬥衛星導航系統除了使用新的技術外,也保留了這項技術。當衛星導航系統使用無源時間測距技術時,用戶至少接收4顆導航衛星發出的信號,根據時間信息可獲得距離信息,根據三球交匯的原理,用戶終端可以自行計算其空間位置。
  • 長三乙火箭成功發射亞太6D衛星 ——面對超重50公斤的衛星,火箭...
    今天(7月9日)20時11分,我國在西昌衛星發射中心用長徵三號乙運載火箭,成功將亞太6D衛星送入預定軌道,發射獲得圓滿成功。這次任務是長徵系列運載火箭的第339次飛行。 跟以往發射任務不同,為了將亞太6D衛星順利送到預定軌道,長三乙火箭專門減了肥。長三乙火箭的地球同步轉移軌道運載能力是5500公斤,而這次的乘客卻有5550公斤。
  • 西昌衛星發射中心成功發射遙感三十號衛星
    2020年10月26日23時19分,伴隨著遙感三十號07組衛星成功發射,西昌衛星發射中心西昌發射場時隔14天再次圓滿完成新的發射任務,實現了下半年新一輪高密度航天發射任務兩戰兩捷。據悉,此次發射是西昌衛星發射中心在4發任務並行的狀態下組織開展的,且發射能力逼近極限。
  • 地球繞太陽轉月亮繞地球轉,為啥沒有星球繞月亮轉?衛星還有衛星...
    地球繞太陽轉,月亮繞地球轉,為啥沒有星球繞月亮轉,衛星還會有衛星環繞運行嗎?可能很多人都會有這樣的問題,其實這問題不難解答,基本可以肯定地回答,這個可以有,衛星的衛星叫「護星」。但奇怪的是,我們怎麼沒有發現過「護星」這種衛星的衛星呢?
  • 抖音看慢動作播放圖文教程 只需要三步就可以了哦
    抖音看慢動作播放圖文教程 只需要三步就可以了哦時間:2018-10-18 19:11   來源:今日頭條   責任編輯:沫朵 川北在線核心提示:原標題:抖音看慢動作播放圖文教程 只需要三步就可以了哦 抖音如何看慢動作播放?
  • 「天團」主力全部就位 兩顆「北鬥星」在西昌衛星發射中心成功發射
    12月16日,2019年北鬥發射任務的收官之戰順利結束。隨著第52、53顆北鬥導航衛星順利落子於北鬥「大棋盤」的中圓地球軌道,北鬥三號在該軌道上規劃的24顆衛星已全部到位,意味著北鬥三號全球系統核心星座部署正式完成。  什麼叫全球系統核心星座?北鬥三號為何由三種軌道衛星組成?這次發射又有何意義?
  • 第21顆北鬥三號衛星成功發射 計劃2020年全球提供服務
    6月25日,中國航天科技集團官方公眾號宣布,北鬥三號IGSO-2衛星發射成功!航天科技集團表示,6月25日2點09分,我國在西昌衛星發射中心用長徵三號乙運載火箭成功將北鬥三號第2顆傾斜地球同步軌道(IGSO-2)衛星送入預定軌道,發射取得圓滿成功。
  • 北鬥三號系統首顆地球靜止軌道衛星成功發射
    北鬥三號系統首顆地球靜止軌道衛星成功發射。梁珂巖攝 本報西昌電(陳飈孫欣記者彭溢)1日23時57分,我國在西昌衛星發射中心用長徵三號乙運載火箭,成功發射第41顆北鬥導航衛星。
  • 中國成功發射資源三號衛星
    就在中國首次火星探測器發射成功後一天,今日在中國太原衛星發射中心,成功發射資源三號衛星。長徵四號乙運載火箭在太原衛星發射中心成功執行一箭三星任務。資源三號03星及搭載的2顆小衛星成功發射升空,衛星順利進入預定軌道,任務獲得圓滿成功。
  • 臺灣好不容易發射的衛星,失聯
    由臺灣研發的「飛鼠」衛星、「玉山」衛星升空時間一拖再拖,直至1月24日晚23時於美國卡納維拉爾角基地升空。但當衛星於25日10時和晚間20時各通過臺灣上空一次時,臺灣基地臺都沒收到衛星傳回信號。臺「太空中心」解釋,可能是衛星信號接收盤架設角度不對或電力不足,將再度嘗試。
  • 美GPS只用24顆衛星,為啥北鬥卻需要發射55顆?
    ,恐怕很少有人沒聽過GPS這三個字母吧,在我國搭建起北鬥系統之前,GPS其實是一個特指,它說的就是美國的GPS衛星定位系統。離地球近的軌道有距離上的優勢,在搭建定位系統的時候只需要少數衛星就能夠對地球試試完全覆蓋
  • 衛星拯救者還是衛星殺手?美國的軌道延壽衛星2號發射升空
    2020年8月16日,阿麗亞娜5火箭在法屬蓋亞那的庫魯航天中心,成功發射,把三顆衛星送入軌道。這三顆衛星其中有一顆非常特殊,那就是諾斯羅普.,它的目標是Intelsat公司的衛星Intelsat 10-02,一顆2004年發射的同步軌道衛星。
  • 北鬥問蒼穹:北鬥三號最後一顆組網衛星發射任務重啟
    據中國衛星導航系統管理辦公室消息,6月16日推遲執行的北鬥三號最後一顆全球組網衛星發射任務相關技術問題已排除,任務重新啟動,6月23日擇機發射。  這是我國第55顆北鬥導航衛星,也是北鬥三號全球衛星導航系統的最後一顆組網衛星。
  • 一箭三星 中國成功發射資源三號03星等三顆衛星—新聞—科學網
    中新網北京7月25日電(郭超凱) 記者從中國國家航天局獲悉,北京時間7月25日11時13分,中國在太原衛星發射中心用長徵四號乙遙四十五運載火箭,成功將資源三號
  • 中國北鬥三步走向太空,vivo兩步走向世界
    這一年,我們見證了太多的歷史:武漢封城、美股熔斷、高考延期、奧運會延期......但是,相比這幾次歷史見證,北鬥收官之星的成功發射,才是國人最為激動、喜悅和自豪的。6月23日,中國在西昌衛星發射中心發射了北鬥三號全球衛星導航系統最後一顆組網衛星。至此,北鬥三號全球衛星導航系統星座部署全面完成。這意味著,中國有了自己的全球導航定位系統。