隨着 HelloGitHub 月刊持續更新了一年多,內容變的愈來愈多。由於內容數據沒有結構化,若是仍是使用以前的編輯文本的方式編輯月刊內容,會對後面的繼續發刊和維護帶來了不少問題和多餘的工做,例如:查看、查重、分類、排序、修改、同步內容等css
最初 是使用本地數據庫的方式進行管理數據,經過腳本生成內容,數據仍是很容易出錯。前端
後面 隨着內容的增多,爲了便於用戶的分類查看,打算作個網站,利於展現和查閱。python
最後 爲了方便的管理展現的內容,同時簡化月刊的發佈流程,就打算開發個後臺。git
技術選型:github
網站效果:
sql
網站地址:HelloGitHub.com數據庫
首先本項目受益於開源,正是由於衆多的開源庫,使得我在開發這個網站的過程變的十分容易,不可思議沒有這些開源的庫。編程
其次,個人 HelloGitHub 月刊是推薦開源項目,那麼這個網站開源也是必然的。flask
我發如今學習編程的過程當中,入門資料十分的多,可是進階的資料少之又少。這種現象不侷限於某種語言,而是廣泛想象。爲何會有這種顯現呢?微信
入門是簡單的,只要跟着輸入指令獲得預期的結果,就算過關。然而在入門階段,不少概念不是那麼容易理解,只是會使用或者說「照貓畫虎」能夠寫出來。而後,當基礎教程學習完成,打算動手寫個項目的時候,發現步履維艱。而後就開始懷疑本身是否適合編程這條路,這就是爲何編程進階的階段會卡住不少人。
在討論:「概念不理解」、「不知道寫什麼」這些問題以前,我以爲能夠先討論下:編程是什麼?
百度百科:讓計算機爲解決某個問題,對某個計算體系規定必定的運算方式,是計算體系按照該計算方式運行,並最終獲得相應結果的過程。
簡而言之,編程是爲了讓計算機幫助咱們解決某個問題,而編程語言是與計算溝通的橋樑。這也就是說,全部的編程技巧和特性都是爲了讓咱們更好的去解決實際的問題。
那麼是否能夠反思得出,入門時學習編程語言,一味的注重記住語法、而不去思考爲何會有這種特性和語法?就像學習漢字的過程,若是在學到一個新字時候,就去想在哪裏見過、有什麼詞組、它是什麼意思、如何使用它,而不是記住他詳細的筆畫。
拿編程中的面向對象舉例:我在學習 Java 語言的時候,就接觸到了面向對象,而後學習 Python 也遇到了這個概念。在介紹完這個概念就會學 「類」 這一章。每次到這一章,我就開始懷疑人生!我根本不懂面向對象的概念,就讓我寫類,我只能死記硬背、照貓畫虎。隨着照着寫玩的代碼能夠跑了,隨後而來的是我對編程失去信心了。
直到,我閱讀、編寫的代碼量積累到必定的量的時候,我才真正的明白麪向對象的意思:封裝、繼承,這給編程帶來多大的便利。不少時候不是老師教授課的能力問題、本身的理解能力的問題。而是編程這門學科,在我看來是爲了使用計算機解決實際問題而誕生的。全部的技巧都是爲了更好的使用計算機解決問題,那麼這些技術都是經過解決問題的過程當中積累、總結而來的。若是不經過實際的理解使用,是沒法理解這種技術的目的和優點的。
回到如何解決 「概念不理解」、「不知道寫什麼」這些問題,個人辦法是閱讀、編寫代碼,用代碼解決實際問題。 在不會寫代碼的時候,多看別人怎麼使用某一種編程問題去解決問題的;在寫代碼的過程當中,要多看文檔、錯誤信息;能寫100行代碼後,就考慮下這些代碼有沒有冗餘的地方?若是讓它變的更加易讀和使用。
最後,這就是爲何我推崇開源的緣由。正是豐富的開源資源讓我學到了不少編程技巧同時融匯貫通、有意思的開源項目讓我發現編程的樂趣,讓我在編程的這條路上越走越遠。
此項目基於 Flask 開發,如今只開發了一些基本功能,並無集成 flask 的第三方庫。現已發開的功能:
之因此如此簡陋就選擇開源。由於,我想呈現的就是從零到一的過程。在這個過程當中,歷經的開發、集成庫、重構的過程和思想, 纔是我想分享給你們的。經過上述的過程可讓新手更好的理解 開源思想、第三方庫的優劣、Web 開發技術、開發流程 等。
我但願 hellogithub.com 這個項目能夠作成一個系列教程,主要目的是:以實際 Web 開發項目爲主要呈現,去理解、加入開源,發現編程的樂趣。
我認爲持續的天然成長才是進階的解決之道,而不多是醍醐灌頂的飛躍。在學會了如何參與開源、使用開源社區的資源、解決問題的思路,在進階的路上會越走越高,越走越順暢。
git clone https://github.com/521xueweihan/hellogithub.com.git
pip install -r requirements.txt
python server.py
配置步驟以下:
在該目錄下:/項目地址/hellogithub.com/hellogithub/hellogithub/
建立 config.py
,配置內容以下:
#/usr/bin/env python # -*- coding:utf-8 -*- from os import path DEBUG = True SECRET_KEY = 'test_secret_key' STATIC_PATH = path.join(path.dirname(__file__), 'static') PAGE_MAX = 5 GITHUB_IMAGE_URL = u'https://raw.githubusercontent.com/521xueweihan/HelloGitHub/{path}' GITHUB_IMAGE_PREFIX = u'https://github.com/521xueweihan/HelloGitHub/blob/' GITHUB_IMAGE_PATH_PREFIX = u'master/content/{volume_name}/img/{image_name}' APP_DIR = '/項目地址/hellogithub.com/hellogithub' GITHUB_TEMPLAT_PATH = path.join(APP_DIR, 'output_template/github_template.md') GITBOOK_TEMPLAT_PATH = path.join(APP_DIR, 'output_template/gitbook_template.md') DATABASE = 'sqliteext:///%s' % path.join(APP_DIR, 'test_hellogithub.db') # GitHub OAuth local CLIENT_ID = '02f1c617c1b20948b635' CLIENT_SECRET = '2102c5c75d7482acf70a09317b697d6892380adc' AUTHORIZE_URL = 'https://github.com/login/oauth/authorize/' ACCESS_URL = 'https://github.com/login/oauth/access_token/'
開啓 admin 權限:
個人前端技術很菜,須要前端小夥伴一塊兒飛。同時,但願老司機也能帶帶我,對本項目和之後的規劃提出建設性意見。
因此,我留下個人微信號,後面可能會拉個微信羣一塊兒交流,讓這個項目可以幫助到更多的人。