每種語言發展到乙個階段,就會出現相應的依賴管理工具, 或者是****倉庫。比如
隨著ios開發者的增多,業界也出現了為ios程式提供依賴管理的工具,這個工具叫:cocoapods。
cocoapods是乙個負責管理ios專案中第三方開源**的工具。cocoapods專案的原始碼在github上管理。該專案開始於2023年8月12日,經過一年多的發展,現在已經超過1000次提交,並且持續保持活躍更新。開發ios專案不可避免地要使用第三方開源庫,cocoapods的出現使得我們可以節省設定和更新第三方開源庫的時間。
拿我之前開發的粉筆網iphone客戶端為例,其使用了14個第三方開源庫。在沒有使用cocoapods以前,我需要:
把這些第三方開源庫的相關檔案複製到專案中,或者設定成git的submodule,然後這些開源庫通常需要依賴系統的一些framework,我需要手工地將這些framework一一增加到專案依賴中,比如asi網路庫就需要增加以下framework: cfnetwork, systemconfiguration, mobilecoreservices, coregraphics and zlib。
對於regexkitlite這個正規表示式庫,我還需要設定-licucore的編譯引數
手工管理這些依賴包的更新。
12
$ sudo gem install cocoapods
$ pod setup
如果你的gem太老,可能也會有問題,可以嘗試用如下命令公升級gem:
1
sudo gem update --system
另外,ruby的軟體源rubygems.org因為使用的亞馬遜的雲服務,所以被牆了,需要更新一下ruby的源:
123
gem sources --remove
gem sources -a
gem sources -l
使用時需要新建乙個名為podfile的檔案,以如下格式,將依賴的庫名字依次列在檔案中即可
使用cocoapods生成的 .xcworkspace 檔案來開啟工程,而不是以前的 .xcodeproj 檔案。
每次更改了podfile檔案,你需要重新執行一次pod install命令。
你如果不知道cocoapods管理的庫中,是否有你想要的庫,那麼你可以通過pod search命令進行查詢,以下是我用pod search json查詢到的所有可用的庫:
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
44
$ pod search json
-> anyjson (0.0.1)
encode / decode json by any means possible.
- homepage:
- source: .git
- versions: 0.0.1 [master repo]
-> jsonkit (1.5pre)
a very high performance objective-c json library.
- homepage:
- source: git:
- versions: 1.5pre, 1.4 [master repo]
-> mtjsondictionary (0.0.4)
an nsdictionary category for when you're working with it converting to/from json. deprecated, use mtjsonutils
instead.
- homepage:
- source:
- versions: 0.0.4, 0.0.3, 0.0.2 [master repo]
-> mtjsonutils (0.1.0)
an nsobject category for working with json.
- homepage:
- source:
- versions: 0.1.0, 0.0.1 [master repo]
-> sbjson (3.1.1)
this library implements strict json parsing and generation in objective-c.
- homepage:
- source:
- versions: 3.1.1, 3.1, 3.0.4, 2.2.3 [master repo]
-> touchjson (1.0)
touchjson is an objective-c based parser and generator for json encoded data.
- homepage:
- source: .git
- versions: 1.0 [master repo]
1
大概研究了一下cocoapods的原理,它是將所有的依賴庫都放到另乙個名為pods專案中,然後讓主專案依賴pods專案,這樣,原始碼管理工作都從主專案移到了pods專案中。發現的一些技術細節有:
pods專案最終會編譯成乙個名為libpods.a的檔案,主專案只需要依賴這個.a檔案即可。
對於資源檔案,cocoapods提供了乙個名為pods-resources.sh的bash指令碼,該指令碼在每次專案編譯的時候都會執行,將第三方庫的各種資源檔案複製到目標目錄中。
cocoapods通過乙個名為pods.xcconfig的檔案來在編譯時設定所有的依賴和引數
使用xunsearch來做全文檢索
xunsearch是乙個搜尋的工具,可以加快搜尋速度 一般的步驟為 1.在伺服器安裝xunsearch服務,注意如果要給外部伺服器訪問,要在防火牆設定開放8383,8384埠 2.將根目錄的sdk php檔案裡面的所有內容移到你的專案中 4.匯入mysql資料來源到xunsearch中 5.在網頁中...
使用php來做守護程序
起源 linux unix下守護程序 daemon 大家都知道,比如我們常用的httpd mysqld等等,就是常駐記憶體執行的程式,類似於windows下的服務。一般守護程序都是使用c c 來寫,就是通過fork生成子程序,當前臺shell下的父程序被殺掉,子程序就轉到後台執行,為了不在終端產生輸...
MySQL 使用索引掃瞄來做排序
mysql有兩種方式可以生成有序的結果 通過排序操作 或者按照索引順序掃瞄 如果explain 出來的結果的type列的值為 index 則說明mysql使用了索引掃瞄來做排序 不要和extra列的 using index 搞混 掃瞄索引本身是很快的,因為只需要從一條索引記錄移動到緊接著的下一條記錄...