網頁

2013年7月31日 星期三

【AWS】EC2 後台串接建立 介紹

【環境:AWS】

說明:

在架設aws後,通常我們會很貪心的想要把server的建立變成自動化,也就是說透過自己的web site自行利用AMI的方法,自動擴增我們的backEnd環境,雖然AWS本身有auto Scaling、Load balancing和cloud Watch 的 alarm 可使用,但若能夠在alarm下,後台管理者,自動的得知系統不論是記憶體or硬碟容量快要滿載下,及時開立一個新的EC2 or EBS
注意建立的數量有上限,若需更多的虛擬設備,可寄信跟他們的管理員通知,當然AWS也不是省油的燈,說明在底下:

http://awsdocs.s3.amazonaws.com/EC2/latest/ec2-gsg.pdf

能夠讓你即時上手,AWS的好處就是用多少,花多少,甚至可開micro,每個月有免費的額度,讓測試者盡情測試,你只需stop你的ec2,就不會增加額外的負擔,但只要terminate即可卸載。


相當好用,推薦。

補充:
安裝ec2-api-tools

1.下載工具
2.安裝
3.設定home


java_home  :  export JAVA_HOME=$(/usr/libexec/java_home)





As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

【跨server結合】心得

【環境:AWS、linux】

說明:

在學習建立大型系統專案架構前

世界上有很多很棒的模仿對象

站在他們的角度上去思考,這就是解決的好方法

架設普通流量的網站,很簡單,但最不容易的就是瞬間大量資訊的流通

所以在此想推薦使用的是AWS

關於AWS的優點,網路上很多

在此介紹我曾用過的方式

建構大型專案,通常我們會把很多細微的部分切割開來,譬如說sql的運算,frontEnd入口網站的分流,backEnd的分流匹配…等等

在不同伺服器間互相的溝通,達到在big data速度上的最大匹配效益

當然我們可以無上限的衝高我們單一主機的硬體設備,但遲早會有崩頂的一天

我看過一句話,『絕對無法想像google的伺服器是用大量的次等,甚至更低階的伺服器串聯而成,透過程式的運算,若系統卡住,立即透過其他的backEnd產生支援』

其實我對於linux or 大型系統沒有什麼概念,憑著這句話,就開始著手規劃心中的藍圖。

方式是用戶透過frontEnd去跟backEnd詢問,達到分工的效果,當然我們也可以把sql拆開來獨立成一個自主的系統,但目前運算量尚為達到最大,所以目前將sql與frontEnd作結合。

至於關鍵點的server間的溝通,可以利用區域網路透過socket去結合兩者。

frontEnd的基礎架構:
linux、apache、 sql:

backEnd的基礎架構:
linux

補充:
通常我們在sql,存入大量big data後,有時會遇到一個問題,就是index的擴增太快,排序錯亂,若超出item設定的格式上限,容易造成資料庫錯誤,所以隔一段時間就要優化你的data index,這部分的解決方法還沒想到:
故暫時的想法為重新整理資料表的index排序
SET @newid=0;

update imageRelation set id = (SELECT @newid:=@newid+ 1);

As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

【xCode】static lib與專案結合

【環境:xCode4.6.7 , ios6.1 , USE ARC】
說明:在使用static lib時,據我所知,通常最常用的方法有
1.
將lib compiler後,實機和測試均compiler一次,再用 "lipo" 指令,進行結合。

2.
建立work space,加入所有你需要用的lib,並設定,lib與你將要產出的target project作結合。(此次要介紹的)

3.
將所有的static lib包成framework,在需要使用時,再放入你的專案中。

可能還有其他更好的方法,以上是我所知。

==
第一步:

用Xcode建立一個workspace,並同時建立一個static lib(name:staticLib2)與一個用來套用此lib的project(name:your app)。



第二步:setting your static lib
注意以下幾個地方:


2-1.
設定lib.a的安裝路徑
安裝的路徑取決於xcode的偏好設置:Locations.


但我要把他指定到target的路徑位置。

為了使得在各種情況下都一樣,需要把lib編譯設定裡的"Installation Directory"設置為"$(BUILT_PRODUCTS_DIR)"

以防萬一,我們也順便檢查一下“Skip Install”項,此目錄預設應為yes,避免此lib被裝載到mac目錄下的“/usr/local/lib”位置中,檢查是否為 yes。 


2-2.設置static.h文件的路徑
在Build Settings中,將“Public Headers Folder Path”設為"$(TARGET_NAME)"

如此,.h文件的路徑就為:$(BUILT_PRODUCTS_DIR)/TARGET_NAME/xx.h




第三步:Now setting your app

3-1.點擊該工程的target,在Build Phases 項的“Link Binary With Libraries”添加.彈出個框大概如下:選我們的workspace裡面這個lib.(已加入的lib不會再次顯示)


3-2.添加.h路徑.
Build Settings/User Header Search Paths, 添加$(BUILT_PRODUCTS_DIR),記得選擇"recursive"


此時注意,全部路徑添加完畢後,請先執行一次your app,並且關閉整個work space,並且重開

此時在your app中,Xcode就可自動找到static2.h的頭文件。


補充:

When using a static library which includes categories we will also have to add the “-ObjC” flag to the “Other Linker Flags” build setting. This will force the linker to load all objective-c classes and categories from the library. If the library contains only categories “-all_load” or “-force_load” may be needed as well. See Technical Q&A QA1490 for a more detailed explanation of these settings. 

As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。