1. 程式人生 > >《Android系統原始碼情景分析》連載回憶錄:靈感之源

《Android系統原始碼情景分析》連載回憶錄:靈感之源

       上個月,在花了一年半時間之後,寫了55篇文章,分析完成了Chromium在Android上的實現,以及Android基於Chromium實現的WebView。學到了很多東西,不過也挺累的,平均不到兩個星期一篇文章。本來想休息一段時間後,再繼續分析Chromium使用的JS引擎V8。不過某天晚上,躺在床上睡不著,鬼使神差想著去建立一個個人站點,用來連載《Android系統原始碼情景分析》一書的內容。

       事情是這樣的,躺在床上睡不著,就去申請了一個域名,0xcc0xcd.com。域名申請到了,總不能不用吧。用來做什麼呢?想起我寫的那本書《Android系統原始碼情景分析》,從2012年10月出版至今,也有四年多的時間了,得到了大家的厚受。不過網路上也逐漸的出現了一些盜版PDF。不用說,質量肯定很差。乾脆我把這本書的內容在我的個人站點上放出來吧。後面徵得了出版社的同意,就著手開始幹了。

       網站名稱為“進擊的程式設計師”,主要是為了配合0xcc0xcd.com這個域名。從Windows時代過來的老司機可能一眼就能看出這個域名是什麼意思。看不懂的,如果大家有興趣,後面我也可以詳細說說,懷念一下逝去的青春。

       從開始有想法,到把網站建好,以及將書前三章(準備知識、硬體抽象層、智慧指標)的內容放上去,花了不到一個月的時間。在這不到一個月的時間裡,學習到了挺多東西:申請域名、雲伺服器、域名解析、域名郵箱、網站備案以及開發網站等等。因為我一直都是做客戶端開發,剛畢業幾年做的是Windows客戶端,後面做的是Android端,沒有做過網站相關的開發,包含前端和後端,所以學習過程還是有些小波折。不過總體上來說還是比較順利的。這也跟網站的技術選型有關吧。

       現在不是提倡做全棧工程師嗎?這個建站過程也算是小小地實踐了一把。怕時間久了會忘記一些關鍵細節和踩過的坑,所以就計劃把建站連載書的過程記錄下來。也希望能夠幫助到有興趣做全棧工程師的同學們。

       網站使用的是LNMP架構,如下圖1所示:


圖1 進擊的程式設計師網站架構

       網站執行在雲伺服器上,系統裝的是Ubuntu 14.04,除了Nginx、PHP和MySQL,還搭了一個GIT倉庫,用來管理網站原始碼。這個GIT倉庫除了用來管理網站原始碼,還用來將原始碼分佈到網站中去。

       具體是這樣的,在本地用自己的電腦開發網站(其實就是用vim編輯網頁和PHP)。測試沒有問題之後,就用git push命令將原始碼上傳到GIT倉庫。然後再登入到雲伺服器上,在網站根目錄用git pull命令從GIT倉庫中獲得最新網站原始碼。

       此外,在本地還搭建了一個管理後臺。這個管理後臺就是用來給管理員管理網站的。主要就是操作一下資料庫,例如檢視資料、插入資料、更新資料等等。正規的網站會專門提供一些頁面供管理員操作。鑑於這個網站不是很正規,管理員又是一個技術控,於是就直接使用Python指令碼來實現這個管理後臺了,想要什麼功能就直接寫個指令碼。

      Oracle提供了一個Python版的MySQL資料庫驅動庫MySQL Connector/Python,通過它很容易用Python指令碼操作MySQL中的資料。這樣一個簡單的管理後臺就搭建起來了。

      整個網站的架構非常簡單,可以非常快上手,同時它又五臟俱全。網站的前端主要用Ajax、jQuery開發,後端沒有用什麼高大尚的框架,基本上是徒手寫的PHP。主要是考慮這個網站要做的事情很簡單,就是連載《Android系統原始碼情景分析》的內容,基本功能就是瀏覽和評論。所以就以最簡單最快的方式實現。

      為了讓大家利用碎片時間更好地閱讀書的內容,網站在提供PC版的同時,也提供了移動版。移動版和PC版的功能是一樣的,只是它們的頁面表現形式不一樣。所以網站在設計之初,就考慮了模組化和程式碼複用,用最小的成本獲得同時實現PC端和移動端的功能。

      不知道為什麼,說起PHP, 總是會想起“PHP是最好的語言”這句話。從這一個月的經歷看,PHP是不是最好的語言不知道,但是用來建網站,PHP的確是最好的語言。用PHP和JS開發網站,效率比用Java/OC開發App,高多了。不過,網站的體驗不如App。所以移動開發目前還是王道。

       接下來,我會用一個系列的文章分享整個建站過程,包括:

       1. 域名、雲伺服器、域名解析、網站備案、域名郵箱、CA證書申請

       2. LNMP開發環境搭建,包括如何配置SSL加密的HTTPS站點

       3. 支援SSH訪問的GIT倉庫搭建

       4. 網站基本功能開發,PC版和移動版程式碼複用

       5. 基於MySQL Connector/Python的管理後臺開發

       歡迎大家關注!想線上閱讀《Android系統原始碼情景分析》一書的,點選進擊的程式設計師進入!

相關推薦

Android系統原始碼情景分析連載回憶錄靈感

       上個月,在花了一年半時間之後,寫了55篇文章,分析完成了Chromium在Android上的實現,以及Android基於Chromium實現的WebView。學到了很多東西,不過也挺累的,平均不到兩個星期一篇文章。本來想休息一段時間後,再繼續分析Chromium

android hardware 簡述(Android系統原始碼情景分析 筆記)

轉自 https://blog.csdn.net/u013377887/article/details/52965988   1.Android原始碼開發的C可執行原始檔一般存在external目錄下  2  Android的幾層框架.  &n

Android系統原始碼情景分析 [羅昇陽著][帶書籤和原始碼]

在組織上,本書劃分為初識Android系統、Android專用驅動系統和Android應用程式框架三大篇。初識Android系統篇介紹了參考書籍、基礎知識以及實驗環境搭建;Android專用驅動系統篇介紹了Logger日誌驅動程式、Binder程序間通訊驅動程

Android系統Binder原始碼情景分析

寫在前面:看過很多大牛寫的Binder詳解,因為講得太過晦澀難懂,所以對於新手好像不太友好,為了讓新手對於Binder有一個大概的認識,故準備了半個月寫了這篇部落格,部落格的大概流程應該是正確的,希望看過的新手能夠有一些收穫。本文主要講解了三個部分:Servic

(連載)Android系統原始碼分析--如何下載和閱讀Android原始碼

> ** 這是一個連載的博文系列,我將持續為大家提供儘可能透徹的Android原始碼分析 [github連載地址](https://github.com/foxleezh/AOSP)** ## 前言 閱讀Android原始碼的好處有很多,可以加深我們對系統的瞭解,可

Android系統原始碼分析-ContentProvider

距離上一次寫部落格已經半年多了,這半年發生了很多事情,也有了很多感觸,最主要是改變了忙碌了工作,更加重視身體的健康,為此也把工作地點從深圳這個一線城市換到了珠海,工作相對沒有那麼累,身體感覺也好了很多。所以在工作完成之餘,也有了更多的時間來自我學習和提高,後續會用更多時間來寫更多實用的東西,幫助我們理解

Android系統原始碼分析--View繪製流程-setContentView

上一篇分析了四大元件之ContentProvider,這也是四大元件最後一個。因此,從這篇開始我們分析新的篇章--View繪製流程,View繪製流程在Android開發中佔有非常重要的位置,只要有檢視的顯示,都離不開View的繪製,所以瞭解View繪製原理對於應用開發以及系統的學習至關重要。由於View

Linux核心原始碼情景分析-特殊檔案系統/proc

    由於proc檔案系統並不物理地存在於任何裝置上,它的安裝過程是特殊的。對proc檔案系統不能直接通過mount()來安裝,而要先由系統核心在核心初始化時自動地通過一個函式kern_mount()安裝一次,然後再由處理系統初始化的程序通過mount()安裝,實際上是"重

協議棧之一《linux核心網路棧原始碼情景分析》.(曹桂平)

在工作中或多或少需要和協議棧打交道,因為公司的策略,公司自有的協議棧基本都是基於開源協議棧的理解重寫的協議棧,在可維護性和效能方面均比開源軟體強勢很多,可惜在公司時更多是呼叫API,並未從頭到尾研究過一個完整的協議棧。從事網路工作沒有研究過完整的協議棧,不得不說是個嚴重的缺

Linux核心原始碼情景分析-系統呼叫mknod

    普通檔案可以用open或者create建立,FIFO檔案可以用pipe建立,mknod主要用於裝置檔案的建立。    在核心中,mknod是由sys_mknod實現的,程式碼如下:asmlinkage long sys_mknod(const char * filen

Android 設計模式情景分析——觀察者模式

get ble not exception 知識庫 system observe 行為型模式 .get 觀察者模式是一種使用頻率非常高的模式,有時也被稱作發布/訂閱模式,屬於行為型模式,它最常用的是 GUI 系統、訂閱——發布系統,它一個重要作用就是解耦,使得它們之間的依賴

【安卓本卓】Android系統原始碼(二)Source Insight

Source Insight(以下簡稱SI) 一、SI簡介        SI是一款面向專案開發的程式編輯器和程式碼瀏覽器,它提供了一個檢視將分散在各個地方的程式碼匯合在一起形成一個虛擬的整體,供開發者方便地閱讀和編輯,如下圖所示。它已經持續維護了10多年了,旨在提

Android 系統原始碼不編譯xxxTests模組的mk檔案註釋

1. 編譯xxxTests模組導致的編譯不過 build/core/Makefile:2789: warning: ignoring old commands for target `out/target/product/sp9832e_op54_go/sp9832e_op54_g

Android 系統無聲問題分析

記錄以前解決的無聲問題,以便總結解題思路 一,音樂播放中但耳機中無聲 Platform:MTK,MT6755 Description: [預置條件]:插入耳機,後臺播放音樂,聲音和振動中將觸控提示音開關開啟 [測試步驟]:主選單--設定--聲音和振動--資訊鈴聲--隨機預覽

Android FrameWork學習(二)Android系統原始碼除錯

為了更進一步地學習跟研究 Android 系統原始碼,今天我們來講講如何進行 Android 系統原始碼的除錯,只有學會了如何進行系統原始碼的除錯,才能幫助我們更高效地閱讀跟理解原始碼。 我們知道,Android Framework 的程式碼主要由Java、C\

【安卓本卓】Android系統原始碼(一)原始碼獲取、原始碼目錄結構及原始碼閱讀工具簡介

前言 古人常說,“熟讀唐詩三百首,不會作詩也會吟”,說明了大量閱讀詩歌名篇對學習作詩有非常大的幫助。做開發也一樣,Android原始碼是全世界最優秀的Android工程師編寫的程式碼,也是Android開發中絕對的權威所在。Android系統開源,且佔據了當今手機系統世界的絕大部分江山,各大手機廠商要做手機系

如何學習Android系統原始碼

參考資料 Android系統的原始碼非常龐大和複雜,我們不能貿然進入,否則很容易在裡面迷入方向,進而失去研究它的信心。我們應該在分析它的原始碼之前學習好一些理論知識,下面就介紹一些與Android系統相關的資料。 我們知道,Android系統是基於Linux核心來開發

比特幣原始碼情景分析script指令碼驗證(1)

Bitcoin script是一種簡單的指令執行框架1)指令碼概述指令碼主要由兩部分構成:指令碼物件CScript和執行函式VerifyScript。指令碼物件分為兩類:scriptSig和scriptPublicKeyscriptSig位於交易中的txin中,而script

線上看Android系統原始碼,那些相見恨晚的幾種方案

前言:最近在研究MediaCodec,u盤壞了,之前下載的原始碼也就自然沒有了,真是個難過的事情,不能因為沒有原始碼了,就阻擋我的計劃了呀,於是就是今天一文,線上看Android原始碼,加之此前很多人也有向我留言,如何看android系統的原始碼,今天來敲黑

比特幣原始碼情景分析bloom filter精讀

上一篇SPV錢包裡utxos同步提到了bloom filter,這一章節我們將從原始碼分析角度來個深度解剖Bloom filter基本原理 An example of a Bloom filter, representing the set {x, y, z}. The co