<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 的練手項目有哪些值得推薦?

          共 5066字,需瀏覽 11分鐘

           ·

          2022-01-14 21:21

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          今天要推薦一本非常著名的開源書籍:《500 Lines or Less》。

          在開始正題之前,先介紹一下它所屬的系列。該系列叫 AOSA,是“The Architecture of Open Source Applications”的簡稱,即“開源程序的體系結構”,目前有四本書,本期主角是最近的一本(發(fā)布于 2016.7.12)。

          這個系列最初的目的是:研究那些優(yōu)秀的開源項目,從中吸取精華的實踐經(jīng)驗。

          在前三本書中,研究對象已多達 50 幾個,其中不乏名頭響亮者,例如 Eclipse、Selenium、Git、matplotlib、nginx、Puppet、Pypy、SQLAlchemy 與 Twisted 等等。

          每個章節(jié)的作者都是開源軟件的核心參與者,介紹了項目是如何設計的、為什么這樣設計、主要的組成部分是什么、各模塊間如何互動、開發(fā)中的優(yōu)秀成果有哪些……

          這些書拆解了開源界的明星項目,通過閱讀,你能了解到開源作者們的思考方式,了解到各類困難問題的解決方案,學習使用現(xiàn)成的輪子。所謂見多識廣,學習吸取經(jīng)驗,有望“站在巨人的肩膀上”。

          但是,這幾本書主要偏向于架構和工程方面,項目代碼量基本是幾千上萬行,對于初級程序員來說不夠?qū)嵱茫胍酝?,挑?zhàn)性太大。

          針對這個問題,該系列新出了一本《500 Lines or Less》,專注于 500 行或更少代碼的小型項目。

          關注編寫代碼時所作出的設計決定與權衡

          • 為什么要使用一些接口將應用程序分成不同的模塊?

          • 為什么在這里使用繼承,在別處使用封裝?

          • 如何預測程序的擴展,如何讓其他程序員輕松實現(xiàn)?

          簡而言之,這本書聚焦于一些相對較小但又很具代表性的課題,并通過 500 行以內(nèi)的代碼來實現(xiàn)它。

          書中寫了 22 個項目,下面逐一簡介:

          1、Blockcode: A visual programming toolkit(可視化編程工具包)

          使用語言:HTML、CSS、JavaScript

          該項目基于開源的 Waterbear 工具,提供可視化的操作界面,通過簡單而直觀的交互方式,實現(xiàn)圖形編程。

          2、A Continuous Integration System(持續(xù)集成系統(tǒng))

          使用語言:Python 2

          CI 是軟件開發(fā)中重要的持續(xù)集成系統(tǒng),保障新功能的穩(wěn)定實現(xiàn)。這個項目介紹了 CI 系統(tǒng)的工作原理,并嘗試構建自己的 CI 系統(tǒng),實現(xiàn)監(jiān)聽器、測樣例調(diào)度器和測試運行器。

          3、Clustering by Consensus(分布式系統(tǒng))

          使用語言:Python

          探索如何實現(xiàn)一個網(wǎng)絡協(xié)議,用于可靠的分布式計算。為了解決共識性問題,使用了 Paxos 算法的衍生 Multi-Paxos。學習這個項目,能接觸很多分布式的知識。

          4、Contingent: A Fully Dynamic Build System(動態(tài)構建系統(tǒng))

          使用語言:Python

          構建系統(tǒng)(build system)用于將源代碼生成用戶可用的目標(如庫、可執(zhí)行文件、腳本等),常見的有 GNU Make、CMake、Apache Ant 等。Python 中的 PyInstaller 也是構建系統(tǒng)的一種。本項目實現(xiàn)了一個構建系統(tǒng),且試圖對“動態(tài)交叉引用”問題提出一個解決方案。

          5、A Web Crawler With asyncio Coroutines(使用協(xié)程實現(xiàn)的爬蟲)

          使用語言:Python

          作者之一是 Python 之父(Guido van Rossum),使用標準庫 asyncio  實現(xiàn)異步的網(wǎng)頁爬蟲。(學習爬蟲者必看)

          6、Dagoba: an in-memory graph database(內(nèi)存中的圖形數(shù)據(jù)庫)

          使用語言:JavaScript

          圖形數(shù)據(jù)庫是 NoSQL 數(shù)據(jù)庫的一種,使用圖形理論來存儲實體間的關系。這個項目介紹了圖形數(shù)據(jù)庫要解決的幾個問題,然后將它實現(xiàn)。

          7、DBDB: Dog Bed Database(狗床數(shù)據(jù)庫)

          使用語言:Python

          用 Python 實現(xiàn)一個簡單的鍵值對存儲數(shù)據(jù)庫(key/value database),其特點是在電腦崩潰或程序出錯時,也能保證數(shù)據(jù)的安全。學習這個項目,可以掌握關于數(shù)據(jù)庫的一些核心特性,例如原子性(atomicity)、一致性(consistency)、獨立性(isolation)和持久性(durability)。

          8、An Event-Driven Web Framework(事件驅(qū)動的Web框架)

          使用語言:Common Lisp

          構建一個以事件驅(qū)動的 Web 框架,使用 HTTP 做通信協(xié)議。

          9、A Flow Shop Scheduler(流水車間調(diào)度器)

          使用語言:Python 2

          流水車間調(diào)度問題是查找最優(yōu)解問題的一種,本項目基于局部搜索(local search)方法,實現(xiàn)流水車間調(diào)度器。

          10、An Archaeology-Inspired Database(受考古學啟發(fā)的數(shù)據(jù)庫)

          使用語言:Clojure

          主流的數(shù)據(jù)庫是面向空間編程 (place-oriented programming),即在更新數(shù)據(jù)的時候,新數(shù)據(jù)會占據(jù)老數(shù)據(jù)的空間。本項目開了個腦洞,用考古學家的視角設計數(shù)據(jù)庫,記錄數(shù)據(jù)的所有變化軌跡,更新數(shù)據(jù)時并不刪除老數(shù)據(jù)。最終實現(xiàn)代碼僅 360 行,作者稱這個數(shù)據(jù)庫為CircleDB 。

          11、Making Your Own Image Filters(圖片濾鏡)

          使用語言:Java

          Processing 是一種用 Java 構建的開發(fā)環(huán)境,本項目介紹了它的特性與配置,并最終實現(xiàn)自己的濾鏡 APP。功能比較簡單,但實現(xiàn)過程涉及很多圖像處理的內(nèi)容。

          12、A Python Interpreter Written in Python(Python解釋器)

          使用語言:Python

          它的結構跟 CPython 解釋器差不多,作者命其名為 Byterun。文中詳細講解了解釋器的工作原理,跟著學習,將極有幫助。

          13、A 3D Modeller(3D建模)

          使用語言:Python

          3D 圖形化編程,使用 OpenGL 來渲染圖形。

          14、A Simple Object Model(對象模型)

          使用語言:Python

          當今最主流的編程范式依然是面向?qū)ο缶幊蹋暮诵膭t是對象模型。編寫一些簡單的對象模型可以更好地理解現(xiàn)有語言的內(nèi)部工作原理,并且深入地了解面向?qū)ο笳Z言的設計理念。

          15、Optical Character Recognition (OCR,光學字符識別)

          使用語言:Python、JavaScript、HTML

          基于人工神經(jīng)網(wǎng)絡(ANNs)實現(xiàn)的簡單 OCR 系統(tǒng),并設計了一個 Web 客戶端。

          16、A Pedometer in the Real World(現(xiàn)實計步器)

          使用語言:Ruby

          計步器的設計依據(jù)是什么,如何在現(xiàn)實世界中把它實現(xiàn)呢?該文回答了這個問題,它還設計了一個友好的 Web 界面。

          17、The Same-Origin Policy(同源策略)

          使用語言:Alloy

          同源策略(SOP)是當今瀏覽器中安全機制的重要組成部分,用于控制瀏覽器中腳本間的通信。文中使用 Alloy(一種用于建模與分析軟件設計的語言)來構建一個可執(zhí)行的 SOP 模型。

          18、A Rejection Sampler(采樣器)

          使用語言:Python

          “采樣”是指從一些概率分布中生成隨機數(shù),文中介紹了如何從非標準的概率分布里進行采樣,以及如何計算樣本在分布里對應的概率。

          19、Web Spreadsheet(Web 電子表格)

          使用語言:HTML、CSS、JS

          電子表格是辦公軟件的必備,我們最熟知的是微軟的 Excel。文中用 AngularJS 框架來實現(xiàn)一個簡單的 Web 電子表格,所用代碼僅 99 行。效果查看:https://audreyt.github.io/500lines/spreadsheet

          20、Static Analysis(靜態(tài)分析)

          使用語言:Julia

          “靜態(tài)分析”指的是在不運行代碼的情況下檢查代碼(類型、格式、編碼規(guī)范等等),這項工作通常是由各種 IDE 編輯器來完成。本項目使用 Julia,實現(xiàn)了一些基本的靜態(tài)分析功能。

          21、A Template Engine(模板引擎)

          使用語言:Python

          “模板引擎”是 Web 開發(fā)中很重要的東西,支持將用戶界面與實際業(yè)務數(shù)據(jù)分離,通過它可生成標準的 HTML 文檔。文中所用的模板引擎語法基于 Django,總代碼量僅 262 行。

          22、A Simple Web Server(Web服務器)

          使用語言:Python、HTML

          實現(xiàn)了一個簡單的 Web 服務器,主要使用了標準庫中的BaseHTTPServer。另外,它還介紹了 CGI(通用網(wǎng)關接口) 協(xié)議,給服務器實現(xiàn)了運行外部程序的功能。

          所有項目介紹完畢??梢钥闯?,22 個項目中有 13 個使用了 Python,占60%,難怪網(wǎng)上有些不明真相的同學直呼它是“一本Python神書”。

          有些項目初看的話,你難以想象只需不到 500 行代碼就能實現(xiàn),但是經(jīng)過必要的問題裁剪,并使用恰當?shù)默F(xiàn)成輪子(開源庫、工具、框架等),就能取得簡單的成果。

          與之相對的,不要以為 500 行以內(nèi)的項目就很簡單。每個項目的作者都大有來頭(連 Python 之父都親自上陣啦),文章中寫到的技術背景、實現(xiàn)原理以及設計思路,全都值得仔細研讀(很多還不一定能讀懂)。


          這本書是開源的,在官網(wǎng)上可以免費閱讀。它還配套了 Github 倉庫,存放了完整的項目代碼,目前已經(jīng)獲得 20000 多顆星星啦。

          Github 上有對它的中文翻譯計劃,但是翻譯者寥寥,只有 10 幾篇翻譯了出來,翻譯質(zhì)量還不敢恭維。

          不管如何,這么優(yōu)質(zhì)而誠意十足的開源書籍,非常值得推薦!作為咱們 Python 貓薦書系列的第八期,也非常合適。

          最后附上該書在開篇中的寄語:

          We hope that the experiences of the authors in this book will help you grow out of your comfort zone in your own programming practice.


          我們希望本書作者的經(jīng)驗能夠幫助您在自己的編程實踐中成長。

          相關鏈接:

          書籍官網(wǎng):http://aosabook.org/en/index.html

          Github英:https://github.com/aosabook/500lines

          Github中:https://github.com/HT524/500LineorLess_CN


          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 65
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  综合一和综合二图片小说 | 任你躁精品一区二区三区介绍 | 伦中文亚洲 | 姝姝窝人体色www国产 | 波多野结衣一区久久在线观看 |