搜尋此網誌

2012年4月29日 星期日

[Google Guava] ImmutableMap 使用

這是小緋這陣子使用實際使用的套件

因為這陣子常使用暫存集合,且常用於純屬唯獨的狀況
所以因考量後,決定採用不可變集合

目前採用的為 ImmutableMap

ImmutableMap 的實例有兩種方式:
  1. of - 透過 static of() 可以直接實例 ImmutableMap,並有支援 0 ~ 5組(K,V)的實例方法,適用於存放量不多的時候,且比較迅速實例的方法
  2. builder - 預先暫存於 Builder 空間,可透過 builer.put(K,V)方法儲存資料,最後再透過 build()方法實例ImmutableMap
透過 Builder 實例作法:

//宣告 Builder 來儲存集合
ImmutableMap.Builder<K,V> builder = ImmutableMap.builder();

---------------------------------------------------------------------------------
使用 Builder put 儲存想要的資料
builder.put(K,V);

---------------------------------------------------------------------------------
最後透過 Builder build 方法實例 ImmutableMap
ImmutableMap iMap = builder.build();

這樣就可以實例一個 ImmutableMap


2012年4月17日 星期二

[Google Gson] 從json格式轉型成自定義宣告

這是小緋近幾天來的研究

主要是因為針對資料庫欄位,不適合接受多方的參數命名來定義資料庫欄位
畢竟一家公司就有一個參數命名,那 N 家公司就有 N 個,如果想針對每家都加一個欄位,這是吃力不討好的事情

本來是透過字串切割的方式來處理此事情,後來在友人的建議下更改為使用Json格式,說穿了Json就很類似 Map物件

今天要針對json格式字串轉譯成自定義宣告


1.首先,你要定義一個想寫回的型別

import java.lang.reflect.Type;
import com.google.gson.reflect.TypeToken;

Type type = new TypeToken<自定義型別, Map, List .....>( ) { }.getType( );


2.再來進行寫回動作

import com.google.gson.Gson;

自定義型別 變數 = Gson.fromJson( "Json格式字串" , type);

透過這種方式,就可以將json物件轉型成自己想要的宣告,當然前提格式要剛好能符合,才能成功的轉型

官方範例:
Type listType = new TypeToken>() {}.getType();
List target = new LinkedList();
target.add("blah");

Gson gson = new Gson();
String json = gson.toJson(target, listType);
List target2 = gson.fromJson(json, listType);

參考連結:http://google-gson.googlecode.com/svn/tags/1.2.3/docs/javadocs/com/google/gson/Gson.html


2012年4月7日 星期六

[Play Framework] Format JS Route

小緋從事網頁開發也有段時日了,但經驗尚淺,
今天來講我常用的 Play! Framework Route設定吧!

這也是小緋近幾日的研究,平常使用 render 時,大多都是處理html格式,
所以在 Play 預設上,都會都是處理 html ,也不用太特地去過格式處理

當需要遠端要求 js code頁面時,在 Play! 上就需要另外做格式處理

例如:
<script type="text/javascript" src="http://test.com/test.js"></script>
像這段我需要請求 js code

在 Play 上,需有 test.js檔案,以及所對應的 Action Render

並於 route 設定

/test.js                              Test.test

但 Play 預設格式為 HTML ,所以在此需要進行格式處理,更改 Route 如下:
/test.js                              Test.test ( format:'js' )

在這樣設定後,就可以正常呼叫 js code了

當然也可以處理 xml 檔、 css ...etc.

詳細參考官方文件:http://www.playframework.org/documentation/1.2/routes

2012年4月6日 星期五

[心得] JavaScript 嵌入心得

看過Google AdWord的呼叫的js code,嘗試著它的寫法
  1. 於想呈現的頁面呼叫script: <script type="text/javascript" src="js link"></script>
  2. 然後在server端的派送js處理,加入 document.write("your code");
  3. 就可以在呼叫頁面呈現出你想要的呈現
但是看過其他的文章,建議不要使用document.write的寫法,應該透過一個html標籤來當容器的處理
  1. 於想呈現的頁面呼叫script: <script type="text/javascript" src="js link"></script>,並另外宣告一個容器:<div id="js_id"></div>
  2. 於server端的派送js處理,更改為
    window.onload = function (){
            document.getElementById("js_id").innerHTML="your code";
    }
  3. 就可以在呼叫遠端js時,將你想呈現的js code寫入至容器中了



2012年4月3日 星期二

搜尋引擎 & 蜘蛛

搜尋引擎工作原理:網頁自動索引程式+分詞+索引+查詢+用戶體驗


搜尋引擎蜘蛛來讀取你的網站的時候,主要以文字資訊為主,因此蜘蛛需要把頁面中的內容索引出來,然後過濾掉如flash等多媒體內容,同時記錄文字的版面格式和資訊,讀取到頁面資料後會執行四項工作:
  1. 關鍵字的索引
  2. 重複、轉載的去除
  3. 連結分析
  4. 網頁重要程度運算
然後將結果放入搜尋引擎索引資料庫中。

搜尋引擎蜘蛛 ( Web Spider)
主要工作就是來蒐集網站資料回去供,搜尋引擎分析後排名

所以當使用搜尋引擎搜尋時,載出的頁面早在之前就已經準備好了!
搜尋引擎在收集網頁的時間點可分為兩種:
  • 定期收集網頁:每隔一段時間,搜尋引擎就會對整個網路上的網站從頭到尾收集一遍,但是全世界網頁資料龐大,從頭到尾更新一次,就算網站沒有更新資料,也會被重新蒐集一次網頁資料,所需時間要一兩個月以上。
  • 增量收集網頁:針對各個不同權重的網站,給予不同的拜訪次數及拜訪時間的長度。因此為什麼常常說網站要持續穩定的更新原因就在這,更新越是頻繁那蜘蛛拜訪的時間就越快。相反地,如果每次來拜訪你的網站,都沒發現新的資料,那搜尋引擎來的速度就會越來越慢。
搜尋引擎抓取網頁的方式分為兩種:
  • 廣度優先:網路蜘蛛會先抓取導覽列所有網頁,然後再選擇其中的一個網頁往下抓一整層,類似水平抓法。這是最常見的方式,主要對於新的網站或是權重較低的網站採取廣度優先,因為這個方式可以讓蜘蛛並行處理,提高抓取速度。
  • 深度優先:網路蜘蛛會從首頁的第一個連結一個連結往下抓,抓到沒有連結頁面之後再回首頁從第二個連結往下抓,類似垂直抓法。這個方法的優點在可以完整性的抓取一整個網站的資料,通常使用於權重較高內容較豐富的網站。

參考資料:
SEO教學第三課:搜尋引擎原理:網頁蒐集!:http://www.wide.com.tw/seo-teaching/723
搜尋引擎蜘蛛與SEO優化的關係?:http://www.wide.com.tw/seo-2/308





[轉載] SEO - 搜尋引擎優化

搜尋引擎優化的8大步驟
  1. 關鍵字分析選擇(也叫關鍵字定位):關鍵字分析包括:關鍵字熱門程度分析、競爭對手分析、關鍵字與網站相關性分析、關鍵字分佈、關鍵字排名預測。你可以利用yahoo或google關鍵字建議工具進行分析,分析後建立關鍵詞競爭分析表,競爭程度由高到低。這是進行SEO搜尋引擎優化最重要的一環,這一步錯了,後面就都錯了,精準耐心的評估所需關鍵字後,才能知道究竟該如何進行seo優化
  2. 網站結構分析,是否符合搜尋引擎優化的原則網站架構分析包括:剔除網站結構不良設計、網站呈樹狀目錄結構、網站導航欄與連結權重傳遞。網站結構經過seo優化後則可以符合搜尋引擎蜘蛛的喜好。搜尋引擎蜘蛛檢索他人網站需花費1分鐘,而檢索你的網站只花費了10秒,這其中的差別就是在於網站結構是不是符合搜尋引擎的規則,比如flash、ajax、雜亂無髒的連結方式,都會造成搜尋引擎蜘蛛的無所適從!
  3. 關鍵字合理分配,別被搜尋引擎判斷成作弊網站權重再高的網站都無法優化所有關鍵字,因此需要將最重要最競爭的關鍵字設定於首頁,次重要的關鍵字安排於導航欄,次次重要的關鍵字安排於內頁,至此通常已經可以安排數十組關鍵字。常見seo初學者,在首頁設定了數十個關鍵字,希望這些關鍵字排名上去,其實這大大違背了seo搜尋引擎優化的原則!所帶來的後果通常是關鍵字密度過高、文章難以閱讀,而且就算排名上去了,也很不穩定,非常容易掉下來。
  4. 持續更新網頁+正確的連結傳遞搜尋引擎喜歡有規律的網站內容更新,所以合理安排網站內容更新速度是SEO搜尋引擎優化的重要技巧之一。連結分配則是把整個網站頁面有效的串連起來,如何讓搜尋引擎明白每個網頁相對於關鍵字的重要性。這就有賴於使用連結來告訴搜尋引擎,正確的使用連結便可以有效的傳遞權重。外部連結'、友情連結的戰役也是在這個時候展開,連結成為了seo搜尋引擎優化的每日功課。
  5. 與搜尋引擎對話,要溝通無誤就需要seo搜尋引擎優化向各大搜尋引擎登陸你的網站。搜尋引擎通常會在數日內開始收錄你的網站內容,清晰的seo搜尋引擎優化,能讓搜尋引擎清楚、快速的了解您的網站在說什麼,如果不知所云,搜尋引擎就聽的慢,頁面收錄自然就慢。
    • site指令:如何知道搜尋引擎是否已經收錄頁面?或搜路多少頁面?在該搜尋引擎的搜尋框上輸入「site:你的網址」,便會顯示該搜尋引擎收錄了你的網站多少頁面,且需注意是否持續收錄,是不是持續收錄就關乎於你seo搜尋引擎優化技術的好壞
    • link指令:link:你的網址」,這只是初略的知道外部連結情況,較為精準的可以使用外連分析工具。另外seo搜尋引擎優化人員必備的工具,就是yahoo網站管理員工具及Google網站管理員工具。
  6. 建立網站地圖sitemap,讓搜尋引擎更了解你的網站可想而知既然稱之為地圖,就是為了讓搜尋引擎更方便的找到你網站內的任何頁面,雖然有些人認為如果seo搜尋引擎的優化做的夠好就不需要網站地圖,其實利用網站地圖工具製作網站意圖一點都不難,多做這件事情也只是有益無害,根本跟seo搜尋引擎優化的好壞沒有關係。最好提供兩個sitemap,一個使用者方便客戶快速查找網站資訊(html格式),另一個方便搜尋引擎得知網站的的更新頻率、更新時間(xml格式)。
  7. 高品質的網站外部連結,seo優化的每日工作高品質的外部連結幾乎是所有seo搜尋引擎優化人員的每日追求。持續穩定的外部連結成長相當重要,外部連結月多代表這被連結網站的權重越高,搜尋引擎更信任該網站,收錄速度就越快,收錄網頁數量就越多。切記一個高權重網站的外部連結指向你的網站遠高於100個網站權重比你還低的網站指向你!
  8. 採用網站流量分析工具,監控seo搜尋引擎優化的結果從網站流量分析工具可以得知SEO優化後的結果後,著手擬定下一步的SEO策略,同時流量分析工具也會記錄用戶體驗的相關數據,比如停留時間、跳離率、瀏覽頁數,這些都會被搜尋引擎列為排名要素。這也是為什麼一些文章是人無法閱讀通順的作弊網站排名無法提高的原因。建議採用流量分析工具,目前分為兩大派Google analytics分析工具和yahoo統計分析工具。

[轉載] SEO - 搜尋引擎優化



Seo優化站內優化依照難易程度、繁瑣程度條列如下:
  1. 先去除錯誤的seo優化方式: 儘量改變原來的圖片連結和flash連結,盡量使用純文字連結,除去框架結構的網頁結構、減少使用flash、ajax、javascript,避免網站內容搜尋引擎蜘蛛無法閱讀你的網站
  2. 優化網址,讓首頁權重集中:把網址統一,利用301跳轉將各種不同的首頁網址指向統一的網址
    例:[http://www.你的網址.com/index.htm] 、[http://你的網址.com/index.htm] 、[http://www.你的網址.com/] 、[http://www.你的網址.com/index.html] …等各式各樣的首頁表現形式,指向某一個型態的網址,這樣才不會把首頁的權重分散
  3. 標題需包含關鍵字,標題優化就是做到每個頁面不同: 標題中要包含您想優化的關鍵字,並解釋一次該關鍵字的意思,然後加上網站名稱,組合方式如下:「關鍵字+解釋+網站名稱」,接下來將這個方法運用到各個內頁,只要每個頁面鎖定的關鍵字不同,就可以讓網站內所有內頁的標題皆不相同
  4. 每個頁面內容包含關鍵字並保持一定的密度: 標題設定了關鍵字後,在該頁面內需再次提到高關鍵字,讓關鍵字保持在密度2~8%之間,過低的密度會被搜尋引擎忽視,過高則容易被判斷成作弊(關鍵字堆疊)
  5. 為網站添加可以經常更新添加文字的欄位: 搜尋引擎最喜歡的是文字!為了優化網站因此我們需要提供更多文字讓搜尋引擎收錄!讓搜尋引擎收錄越多的頁面,是提高網站權重的要素之一。最常見的就是使用新聞系統(最新消息)定期、頻率穩定的增加新聞,這是seo優化在日常理最重要的工作
  6. 為網站增加外部連結: 對網站結構大致調整好了之後,就可以利用一些資源增加外部連結。最簡單的是到各大部落格平台開設部落格,部落格名稱就使用公司產品的關鍵字,同時進行公司原網站資訊的轉載,附帶公司網址,然後使用該空間帳號去訪問與自己行業相關的部落格,留下回覆或是發表評論,並留下自己網站的外部連結
  7. 精確使用標籤,提高關鍵字的權重:標籤有:h1~h6、文字加粗、畫底線、斜體、變色為什麼將這個動作排在第七,是因為這個方式通常需要了解css,否則文字一旦設定成h1將會變其大無比,影響閱讀,我們在seo優化的過程中仍須兼顧用戶體驗,否則跟作弊seo沒有兩樣。在以上所有標籤中,偏偏最重要的是h1的標籤,h1標籤的權重高於其它任何標籤,因此在一個頁面只在最重要的關鍵字上加上,如果到處都是h1標籤都會分散該關鍵字的權重
以上7點,各點都對seo優化有舉足輕重的影響,除非是在網站上線前就做完以上工作。如果網站已經上線一段時間千萬不可以貿然一次將這七點都執行,那很容易讓搜尋引擎對你的網站整個重新計算,造成關鍵字排名降低,甚至被放入沙盒中。每執行完一個步驟就先停止一段時間讓排名穩定下來,再進行下一個步驟!才是seo優化正確的方式!