原创 服務端自動部署靜態項目的幾種方法

使用場景 最近幫忙前端把一個靜態的項目(掛在coding.net的倉庫裏)掛上自己的生產服務器 ,但是由於前端不會使用SSH登錄服務器自行pull+checkout,因此我想了幾種能讓前端接受的方法把這個靜態項目自動部署到服務器上

原创 從零開始自動部署Django項目(一):開發配置與生產配置

引言 作爲一隻後端工程師,經常會碰到本地開發環境跟遠程服務器生產環境配置不一樣的情況,比如說本地數據庫使用的是SQLite,而在遠程上的數據庫用的卻是Mysql。 對於一些小的修改,比如數據庫的密碼不一樣之類的,當然可以選擇直接

原创 Django Form之動態數據初始化

Form.initial != 動態數據初始化 在上一篇對BaseForm的源碼分析中,我們已經可以清晰地知道Form.initial並沒有對數據初始化,它只是對沒有綁定的表單進行展示。 接下來我將提供一個簡短的代碼片段及示例來

原创 RSA與SSL淺析

HTTPS = HTTP + SSL HTTP協議是明文傳輸的,也就是說當數據包使用HTTP協議進行傳輸的時候,如果數據包中途被截下來了,那麼裏面的數據(明文)就會完全暴露。因此,如果數據包裏面存放着用戶的帳號和密碼,就可以認爲用

原创 從零開始自動部署Django項目(三):使用uWSGI emperor管理進程

引言 在上一篇從零開始自動部署Django項目(二):使用Python編寫Git Hooks,筆者直接通過Python模擬正常的人肉linux命令來確定python debug server是否在指定端口運行,如果正在運行則先殺掉

原创 Python的包導入機制

Background 在Python的大型項目中,一般都會用到模塊包來組織文件層次,其中當一個目錄內含有__init__ . py文件時,就可以視該目錄爲一個模塊包。 當在模塊包中使用import語句的時候,不同的語法會導致不同

原创 關於Unicode,utf-8,utf-16 on mac

Unicode 說到Unicode的起源就要先談起ASCII。 ASCII使用一個字節(8位)進行存儲,8位一共可以表示256個字符,而ASCII只使用了其中的128位,即0~127位,這128位裏面包括了常用的英文字符以及標點

原创 Django Form源碼分析之BaseForm驗證邏輯

引言 在Django中,Form的主要功能分爲輸入驗證以及在模板中的展示。 首先看一下Form的源碼定義: class Form(six.with_metaclass(DeclarativeFieldsMetaclass, Ba

原创 mac安裝apache的mod_wsgi模塊錯誤總結以及hello world測試

mac系統版本爲OS X EI Capitan 10.11.4 (其實系統已經安裝好了管理員權限的apache,在/etc/apache2下,但是我們還是要安裝用戶權限的apache,方便更改文件不需要權限) 默認已經在mac上

原创 WA的2015與正在RE的2016

2015年是我第一年真正的接觸大學,接觸編程。   然而這一年迷茫而痛苦。 大學與高中最大的不同,在於,你要爲自己制定目標,你要爲自己做出的選擇負責任。 我知道,我要爲自己的現在負責,爲自己的未來負責,確保自己現在做出的是最優選擇。 充實

原创 WSGI初探及wsgiref簡單實現

什麼是WSGI?什麼是wsgiref? WSGI(Web Server Common Interface)是專門爲Python語言制定的web服務器與應用程序之間的網關接口規範,通俗的來說,只要一個服務器擁有一個實現了WSGI標準

原创 從零開始自動部署Django項目(二):使用Python編寫Git Hooks

引言 在上一篇從零開始自動部署Django項目(一):開發配置與生產配置,已經給出了通過環境變量來實現不同配置選擇的解決方案。既然是環境變量,那就可以通過shell腳本或者python腳本來實現。 接下來,我將通過使用pytho

原创 Django Form源碼分析之Field驗證邏輯

引言 在上一篇對BaseForm的分析中,我只提及了在Form層次的輸入驗證,在Form.full_clean()主要調用的兩個函數self._clean_field(), self._clean_form()。其中,self._

原创 希爾排序實現

希爾排序算是插入排序的一種高級進化版,雖然希爾排序的實現比較簡單,但是它的原理證明非常複雜,由於能力有限,故沒有涉及。 我直接上代碼吧。 #include<stdio.h> int container[1000001]; int

原创 django URL模式淺析

準備 首先新建一個Django 項目。 django-admin startproject urlTest # 進入manage.py所在目錄後 ./manage.py startapp app1 ./manage.py star