RSS

[Xcode]產生iOS可用的jansson函式庫

序言

jansson函式庫是一個使用C語言開發的JSON編解譯的工具,

理論上應該是可以在不同環境下編譯後就能產生對應的函式庫檔來使用。

不過似乎從別人的發問與官方的回應下並沒有針對iOS給出一個確切的答案回答能不能使用。

經過嘗試之後,發現有另一個函式庫:libpomelo裡面有使用到這個函式庫,而這個函式庫目前也支援Andorid與iOS。

並且在我編譯過libpomelo就會產生jansson的函式庫,所以以下的步驟就是編譯過程與從中取得jansson函式庫檔。

環境

  • mac mini+New iPad with iOS 6.1

  • Xcode 4.6
  • libpomelo 0.3

命令

開啟Terminal,依序輸入以下命令

svn checkout https://github.com/NetEase/libpomelo.git/trunk libpomelo

cd libpomelo

svn checkout http://gyp.googlecode.com/svn/trunk/ gyp-read-only

cd gyp-read-only

./setup.py build

cd ..

sudo ./gyp-read-only/gyp --depth=. pomelo.gyp -Dlibrary=static_library -DTO=ios

./build_ios

./build_iossim


命令解釋

  1. 下載目前最新版的libpomelo
  2. 進入下載後的目錄
  3. 因為libpomelo的編譯是透過gyp這個工具,所以下載這個工具
  4. 進入gyp目錄
  5. 編譯gyp
  6. 離開gyp目錄
  7. 連結libpomelo
  8. 編譯ios版函式庫
  9. 編譯ios模擬器版函式庫

設定函式庫

以下要做的動作不是必要的。
我這邊依據我所需要的狀況,將函式庫複製到我的Xcode專案目錄並且命名為習慣的檔名。


  1. 從libpomelo的子目錄[deps/jansson/build/Default-iphoneos]與[deps/jansson/build/Default-iphonesimulator]會找到兩個同名的[libjansson.a]
  2. 將這兩個檔案複製到自己專案的根目錄,分別命名為[libjansson-device.a]與[libjansson-simulator.a]
  3. 設定的方式為點選專案的[TARGETS→Build Phases→Link Binary With Libraries],點選下面的[+]

    加入剛才複製過來的兩個.a檔[libjansson-device.a]與[libjansson-simulator.a]
  4. 從libpomelo的子目錄[deps/jansson]複製[src]目錄到自己專案的根目錄命名為[jansson]
  5. 專案的[TARGETS→Build Settings→Search Paths],設定[Header Search Paths],加入"$(SRCROOT)/jansson"

使用範例

這邊只寫個小程式測試編譯後可以執行,詳細CURL用法請參考相關文章


#include <jansson.h>
void myLib_test2(){
json_t *jdata;
char cmd_ark_id[] = "id";
char ark_id[] = "value";
jdata = json_pack("{s:s}",
cmd_ark_id,ark_id);
char *j_object;//json
j_object = json_dumps( jdata, 0 );
json_decref( jdata );
printf("%s",j_object);
}

參考文章

[Xcode]簡易加入libcurl到Xproject

序言

Curl函式庫常使用在進行Http的操作,這篇文章將使用已編譯完成的libcurl(來源為Nick's software)加入一個Xcode的Project所需的設定。

環境

設定函式庫

  1. 下載ioscurl-7.32.0.tar.gz,解壓縮後可以得到[ioscurl-7.32.0]目錄
  2. 進入[ioscurl-7.32.0/iOScURL]目錄會找到[libcurl-device.a]與[libcurl-simulator.a]兩個檔案與一個[curl]目錄,將這三個東西複製到自己專案的根目錄。

    (同層目錄下也有一個xCode的Project可以做為設定的參考)

    壓縮檔內的檔案


  3. 在專案中加入所需要的函式庫。

    設定的方式為點選專案的[TARGETS→Build Phases→Link Binary With Libraries],點選下面的[+]

    加入iOS原有的[Security.framework]、[libz.dylib]與剛才複製過來的兩個.a檔[libcurl-device.a][libcurl-simulator.a]
    設定後的函式庫
  4. 專案的[TARGETS→Build Settings→Search Paths],設定[Header Search Paths],加入"$(SRCROOT)/curl"

使用範例

這邊只寫個小程式測試編譯後可以執行,詳細CURL用法請參考相關文章

#ifndef xcurl_myLib_h
#define xcurl_myLib_h

#include <curl.h>
int myLib_test1(){
curl_global_init(CURL_GLOBAL_ALL);
CURL *curl;
CURLcode res;
curl=curl_easy_init();
{
curl_easy_setopt(curl, CURLOPT_URL,"http://www.google.com.tw");
res=curl_easy_perform(curl);
curl_easy_cleanup(curl);
}

return (int)res;
}

#endif

相關文章

[Android x86]安裝在SD卡上

心血來潮~想在我的NB試試Android~
不過因為原本的硬碟是空間小小的SSD~
我也不想把原本安裝在上面的Windows直接覆蓋掉~
所以就想著如果能直接把Android裝在SD卡或USB上~這樣似乎不錯~
如果能直接安裝在SD卡上更好,因為我的NB上有內建讀卡機~
這樣機器就不會凸出一個大大的USB隨身碟~
而實際上嘗試過後~雖然一開始不順利~但最後還真的可以達成~
以下是我的作法~

安裝環境

  • 最少要有個支援USB的電腦(我的有支援用讀卡機開機~所以也能支援使用SD卡)
  • 以下步驟是使用Windows7建立安裝用的USB與預訂安裝Android的SD卡
  • SD卡~建議準備一張2G以上速度快一點的~最少要有1G會比較實用
  • 一個500MB以上的隨身碟,要當作安裝來源開機USB

下載檔案與工具

安裝步驟

1.分割SD卡

基本上不分割也能執行~也可以在電腦上同時外接多個USB當作額外的儲存空間~
不過我比較希望我這張SD卡既能當主硬碟又能當額外的空間~
So~~~我打算把SD卡切成兩個區塊~一個當主硬碟一個當儲存空間
  • 開啟MiniTool Partition Wizard(操作方法可自行參考網路上的文章)
  • 選擇SD卡後,把所有的空間都刪除(當然如果你裡面有資料請先移到別的地方去…)
  • 我這邊希望的是資料空間也能被Windows讀取,所以第一個區塊是資料區塊。設成Primary,格式化為Fat32,空間大小隨便,但建議剩餘空間留個1G以上~最好有2G給第二個區塊
  • 第二個區塊式系統區塊,設成Primary,格式化為Ext3,空間大小為1G以上~最好有2G
  • 最後點Apply,開始進行分割與格式化

2.建立安裝用的USB

這一步是把下載下來的Android x86 ISO檔放到USB裡做為安裝來源的開機USB~
  • 開啟Unetbootin(操作方法可自行參考網路上的文章)
  • 選擇ISO檔與目標的USB,再來就開始建立

3.開機設定

再來就可以把USB與SD卡都插上,重新開機,然後進BIOS畫面
把第一個Boot的優先權設為USB,把第二優先權設為SD卡(讀卡機)

4.安裝Android x86到SD卡

使用USB開機後,會出現Live CD與安裝的選單
  • 選擇最底下的[Installation - Install Android-x86 to harddisk]
  • 選擇分割區,選到剛才在SD卡建立的Ext3分割區
  • 如果他問你要不要Format,使用Ext3
  • 然後會問要不要安裝GRUB開機管理程式,選擇Yes(我試過不安裝,會無法順利開機)
  • 然後問要不要讓system可讀寫,選擇是
  • 再來就會開始安裝,這中間會有段時間只有藍色畫面,不要心急,等他跳出詢問要不要直接執行或是重新開機
  • 選擇重新開機,並把開機用的USB隨身碟拔除,讓它用SD卡開機
  • 再來就是耐心的等Android開機完成就大功告成了(這時候就是不成功~便成仁~禱告吧XD)

5.BIOS開機順序

成功後~我把BIOS開機順序設定成 先讀讀卡機,再讀硬碟~

這樣想用Android就把SD卡插進去開機,平常還是可以用原本的windows~

6.安裝檔案瀏覽器

安裝ES檔案瀏覽器Root browser lite後,就可以在mnt/USB0目錄找到SD卡中分割的區塊

之後如果外接更多儲存設備也可以這樣存取

後記

使用上雖然還是有些小問題,像是youtube 不能用HD播放~輸入法不容易習慣~
還有一堆以ARM為基礎的App都不能裝(雖然有文章有提到解決方法-ARM emulation,但我還是試不出來)
但能在NB用Abdroid還是很感動~~~

[Unity]加入Subversion(SVN)的步驟

將Unity加入Subversion(SVN)的步驟
可參考
但不能直接砍掉整個Library目錄
實際步驟如下

  1. *建議在開始前先備份整個Unity專案目錄
  2. 在Unity開發程式中選擇Edit → Project Settings → Editor

  3. Inspector中會出現Editor Settings,將Version Control Mode改為Meta Files、Asset Serialization Mode改為Force Text

  4. 儲存後關閉整個Unity,確保所有設定都被儲存了
  5. 刪除根目錄的以下附檔名檔案
    *.csproj
    *.pidb
    *.sln
    *.userprefs
  6. 保留Library目錄的*.asset與AssetServerCacheV3檔案,刪除其他Library目錄的檔案與子目錄

  7. 將整個Unity專案目錄Import到SVN,並Check out出來用Unity開啟來看看有沒有問題

[MS-SQL]不具自動容錯移轉的鏡像設定

以下的資料庫鏡像架構大致上就是

應用程式==data==>主體伺服器==data==>鏡像伺服器

環境

兩台一樣環境的伺服器

  • Windows Server 2003 R2
  • Microsoft SQL Server 2008 R2
  • Microsoft SQL Server Management Studio 10.0.1600.22

SQL Server服務啟動帳號設定

  1. 在windows服務(services.msc) 列表中,找到SQL Server,右鍵選內容或雙擊
  2. 後選擇登入頁,在此帳戶中這裡配置登錄用戶和密碼,這個地方建議兩台伺服器都配置一組一樣的帳號,並將此帳戶加到SQL Server的管理帳戶,後續的鏡像會用這組帳號繼續設定
  3. SQL Server Agent 啟動帳號也一樣設置

主體伺服器備份

  1. 在主體伺服器用windows帳戶登入Management Studio工具,這個動作是為了後續使用語法產生SQL檔時才不會有權限錯誤
  2. 產生資料庫建立語法
    以物件總管詳細資料選取需要鏡像的資料庫,並產生Create語法(選檔案即可產生.sql檔)
  3. 匯出每個資料庫的備份檔
    backup database [DataBaseName1] to disk='D:\dbbackup\[DataBaseName1].bak'  with init
    GO
    backup database [DataBaseName2] to disk='D:\dbbackup\[DataBaseName2].bak' with init
    GO
  4. 匯出每個資料庫的記錄檔
    BACKUP LOG [DataBaseName1] TO DISK = 'D:\dbbackup\[DataBaseName1].log'
    GO
    BACKUP LOG [DataBaseName2] TO DISK = 'D:\dbbackup\[DataBaseName2].log'
    GO

還原資料到鏡像伺服器

  1. 將上一步驟產生的檔案(含*.sql、*.bak、*.log)所在dbbackup資料夾複製到鏡像資料庫
  2. 在鏡像伺服器用windows帳戶登入Management Studio工具
  3. 建立資料庫:以Management Studio開啟建立資料庫用的sql檔並執行,即可產生與主體伺服器相同名稱的資料庫
  4. 還原資料
    restore database [DataBaseName1] from disk='D:\backupz\[DataBaseName1].bak' with replace,norecovery
    GO
    restore database [DataBaseName2] from disk='D:\backupz\[DataBaseName2].bak' with replace,norecovery
    GO
  5. 還原記錄檔
    RESTORE LOG [DataBaseName1] FROM DISK = 'D:\backupz\[DataBaseName1].log'  WITH FILE=1, NORECOVERY
    GO
    RESTORE LOG [DataBaseName2] FROM DISK = 'D:\backupz\[DataBaseName2].log' WITH FILE=1, NORECOVERY
    GO
  6. 成功後會看到建立起來的資料庫名稱後面會出現(正在還原...)的狀態

於主體伺服器啟動鏡像服務

  1. 在主體伺服器的資料庫上點右鍵,選屬性,並選擇[鏡像]頁籤。接著點選[設定安全性]鈕就會開啟[設定資料庫鏡像安全性精靈]

  2. 於見證伺服器選擇頁選擇否,不使用見證伺服器

  3. 第一次使用鏡像設定會選擇本機的鏡像服務Port與鏡像端點名稱,此處採用預設值即可

  4. 設定鏡像伺服器的連線資訊

  5. 服務帳戶不用設定

  6. 完成後就會進行設定,第一次設定時會自動產生服務端點,這時就會啟動服務的Port

  7. 完成後會詢問是否要啟動鏡像,選擇不要啟動鏡像。這時如果直接啟動如果連線網域名稱錯誤就會失敗(而且還不給設定…)

  8. 接著就可以在伺服器網路位址確認鏡像伺服器的連線資訊

    需注意的是他有個奇怪的驗證,就是預設他會把鏡像伺服器的電腦名稱帶到鏡像的位址,但他的預設格式是[電腦名稱.網域名稱],沒有網域名稱時就必須在電腦名稱後面加一個句點.,否則你就會看到下面的錯誤

  9. 啟動成功後如下圖

  10. 重覆此上述動作把所有資料庫的鏡像都啟動
這裡是關於技術的手札~

也歡迎大家到

倫與貓的足跡



到噗浪來

關心一下我唷!
by 倫
 
Copyright 2009 倫倫3號Beta-Log All rights reserved.
Blogger Templates created by Deluxe Templates
Wordpress Theme by EZwpthemes