推文按鈕

收進你的MyShare個人書籤

2008年12月4日 星期四

Search Engine Starter Guide 中文摘要

搜尋引擎當紅,SEO已經是當今網路行銷的一門顯學
坊間一大堆公司靠SEO優化賺錢
不過Google最近公佈了《Search Engine Starter Guide》
教站長們如何正確的搜尋優化,而不需要求助旁門左道,大家可以參考
按此下載
此份文件需要基本的html概念

節譯如下:

1. 建立唯一且精確的網頁title:html碼之中的title標籤,必須唯一且精準,page title的文字會出現在搜尋結果的標題列

Good Practice:
  • 準確地描述網頁內容,避免和網頁無關的內容或者自動產生的「page1」、「untitle」
  • 為每一個頁面建立獨特的網頁title,避免在站上所有頁面或者很多頁面都使用同樣的title
  • 使用簡短、但是具描述性的title
2. 善用description的meta標籤,meta description的文字將會出現在搜尋結果的內容列

Good Practice:
  • 為每一個頁面下一個獨特的描述,避免在站上所有頁面或者很多頁面都使用同樣的meta
3. 改善url中的結構

不好的url結構:url中的文字無意義
http://www.bandonbaseballcards.com/folder1/1089257/x1/0000023.htm
好的url結構:url中的文字包含了關鍵字,對於搜尋引擎有意義
http://www.brandonbaseballcards.com/article/ten-rarest-baseball-cards.htm
(PS. 場地王的經驗,中文關鍵字url對於Google、Yahoo的搜尋優化效果超讚!)
Good Practice:
  • 在url中使用字眼,避免
    • 使用充斥著無效參數或sessionid的過長url
    • 選擇自動產生的檔名,如page1.html
    • 使用太超過的關鍵字

  • 建立簡單的目錄結構,避免
    • 太過深入的目錄結構,例如/dir1/dir2/dir3/dir4/dir5/dir6.page.html
    • 使用與內容無關的關鍵字
  • 僅提供唯一的url至每一個頁面,避免
    • 有網頁從次網域或根目錄都能到達同一頁(例如domain.com/page.html和subdomain.domain.com/page.html
    • 在內部連結結構中混用www及non-www的連結版本
    • 使用奇怪拼字的url
  • 使網站更易被瀏覽

....這篇放了一陣子因為工作忙一直沒翻完,大家自己看原文吧~
檔案下載 http://www.google.com/webmasters/docs/search-engine-optimization-starter-guide.pdf

2008年11月25日 星期二

用Javascript 判斷訪客為爬蟲還是使用者

場地王正從完全資料開放轉向免費對會員開放,
以增加會員數和網站上的會員動態資料
但首先便是要兼顧各家爬蟲能夠進來找資料,index網頁,帶來搜尋引擎的流量

找了一下資料
作法大致如下

用javascript判斷browser.userAgent的型態,可參考
http://www.w3schools.com/js/tryit.asp?filename=tryjs_browserdetails

另外各家搜尋引擎爬蟲註冊的名稱可以參考
http://www.user-agents.org/index.shtml
http://www.smart-it-consulting.com/internet/google/googlebot-spoofer/
http://www.mrsneeze.com/httplogs/useragents.html

SEO一年再看:49个影响网站排名的因素

http://www.admin5.com/article/20080920/105007.shtml

内部因素: 网站必修之内功篇,要想有金庸武侠小说里主人公的传奇色彩先练好内功

  URL中出现关键词 对百度很有用,一年时间我充分认为百度对中文的识别技术比GOOGLE厉害,英文则相反

  网页Title中出现关键词 地球人都知道

  常规内容中出现关键词 COPY↑

  在页面的第一段中出现关键词 有用

  在页面的最后一段中出现关键词 也有用看文章的长短合理的分布[关键字密度来着]

  Heading 标签 比如h1,h2中出现关键词 强调

  站内的链接中出现关键词 这个比较有用 所谓的锚点

  导向相关内容的导出链接 也要考虑

  导出链接中出现关键词 没有研究过

  图片文件名中出现关键词 对图片SEO有相当作用

  Alt标签中出现关键词 有用但是似乎不是很重要

  comment中出现关键词 很有作用

  合理的频率更新内容 这个值得注意那少女都一天换一件衣服,你一月洗次澡总可以吧

  内容对搜索引擎的展示位置 自左至右 从上到下

  网站结构循环PR,而非散发PR 新鲜玩意没有时间研究

  关键词进行适当的修饰(加粗、斜体等)很有作用

  外部因素:

  大量的导入链接 SEO一向倡导

  从高PR值得网页获得导入链接 所以那么多人热衷交换链接

  从相关内容网站获得导入链接 一条和相关度高的网站交换链接

  导入链接指向的网页有具体内容 内容为王 你我都喜欢看有故事的东西

  锚文字中有关键词 很不错的方法

  锚文字周围有相关词 提高关键字密度

  锚文字存在于文章或句子中 文章内链接 记得要加TITLE标签

  导入链接的时间长度,一般导入链接的存在时间有3-6个月 永久不是更好?

  单向链接的价值高于交换链接 是的你说的对 信任你才链接你

  导入链接的页面的导出链接小于100个,流出链接越少越好 很好 一个PR4只单向链接到你一个站的链接比一个PR5有100个链接 只有一个链向你要好

  链接来自不同IP 你觉得呢 这样很好

  合理的导入链接增长频率 一天增长个1000-10000个就是某些所谓的SEO公司的策略,汗!

  你需要避免的事情:

  关键词堆积 没有明显区别 要是内容够好那也不怕

  所有的锚文字都相同 不好吧 有点区别才能吸引啊

  使用CSS或背景色隐藏内容,这是十恶不赦的大恶 欺骗 你伤害了我还一笑而过

  使用JavaScript跳转 分情况不能一概而论

  相同ip之下的网页直接进行大量交换链接 蜘蛛很生气 后果很严重

  桥页和Cloaking,诱导搜索引擎的爬虫,这是十恶不赦的大恶 十恶不赦的大恶

  成人内容,违禁药品,赌博相关内容 这样的站赚钱就像笔者经常去的某网站 百度就没有收录 不过是XXXX级啊【想知道地址,单独MMM啊】

  内容重复 全民COPY的时代 好在搜索引擎还没有到辨别伪原创的地步

  连向作弊的网站 傻啊你

  站内的绝大部分网页有相同的网页title 你会在GOOGLE网站管理员工具里收到提示的

  加入到Link Farm或则Link交换类网站 初学者为了流量最容易这样

  使用被惩罚过的域名 买安全套的时候看看是不是放在针线盒的旁边

  网站建立在被惩罚的IP上 找工具查去

  尽量避免的问题:

  地址中存在动态变量 没有一定之规 其实动态的也凑活

  单一图片和Flash的网站 这个可要研究下

  用Javascript制作的网站导航条或目录 有时间你得换回来,悟空这样做是不好的

  用图片做网站导航而不加ALT标签 突然看见一排图片全XXXXXX 我也会当时就XX浏览器

  〈head〉〈/head〉之间有太多的代码 注意一下啦!

  存在太多与网站主题无关的内容 太多?那叫内容丰富

  导入链接中购买链接占多数 你是有钱人我佩服,别看这个对你没有用

  和作弊的网站在同一服务器上 哥们联系我 那服务器杠杠地...

  一年之后看这些 难免有些感触,有空你就琢磨琢磨!整不明白了就去www.coffly.com找我去!

2008年11月22日 星期六

PPT簡報範本

最近在選簡報的範本,除了微軟官方網站上的版型外
還有幾個好站可以免費下載唷

Presentation Helper
http://www.presentationhelper.co.uk/free_powerpoint_template.htm

簡體中文站
http://pooban.com/
http://www.soppt.cn/
http://www.51ppt.com.cn/

2008年11月18日 星期二

新創網站都瞄準活動市場啊

怡青寫了一篇揪團熱!新創網站掀活動市場商機

介紹了場地王
UtoNet、Nextmin、wellmeet、alika、Registrano 等網站
今天在ptt創業版又出現一個「好動王」(funwant.cc),還有之前針對婚宴為主的美書兒

新創網站紛紛瞄準活動揪團這塊市場
目前場地王已經和Nextmin、alika、Registrano開始在談了
借力使力,用各種服務和內容壯大自己!
也期待這塊市場一起做大!

2008年10月30日 星期四

站長們必讀!請按月向啞虎繳納保護費!

這一篇文章是要誠摯的呼籲台灣網路界的站長及所有從事電子商務的朋友
這是場地王站長Willy的血淚史.....
不要再妄想與台灣網路的霸王啞虎對抗
請記得,
按月定期向啞虎繳交保護費
否則您的網站將被打入萬劫不復之地.....

昨天(10/30)上搜尋引擎打打「場地王」的排名
Google還是老樣子,大概第4名/第5名
但是啞虎就發生令人氣憤的事

原本打「場地」關鍵字,前幾天還在排名第一位,現在居然落到第10頁以後都找不到
終於在第11頁找到「場地王」,非常好樣的,搜尋到的還不是場地王首頁
而是部落格上的一篇文章(圖片紅框處)



早就風聞啞虎將搜尋排名和付費廣告掛勾,沒想到怎麼樣都避不掉
台灣網路界國寶 浩宇寫的這篇 絕不能用的Yahoo! 奇摩站長工具
http://yha88800.pixnet.net/blog/post/18196406

沒 想到過了四 天,Yahoo的本性就露出來了,就在浩宇的一些朋友與客戶放上Yahoo廣告三天後,我就發現了一個奇怪的現象,在從Google搜尋導入流量不變且網 站品質不變的情況之下,使用Yahoo站長工具的數個網站從Yahoo搜尋導入流量平均每日減少33%,也就是說如果第一天有1300人,第二天會只剩下 858人,第三天566人,第四天373人。很多客戶透過努力經營很久,排行相當好的關鍵字,開始掉到第三頁以後,很多靠搜尋流量經營網站的站長,都發現 了這個問題。隔天,幾個客戶與朋友不約而同的以申請站長工具的Yahoo信箱收到Yahoo關鍵字行銷廣告商的廣告信,宣傳購買Yahoo奇摩關鍵字行銷廣告

沒錯,天下
沒有白吃的午餐,Yahoo絕對沒有讓你白用的好服務,雖然Yahoo用操控搜尋引擎來獲利的傳言或是事實,在業界已經不是秘密。但浩宇壓根兒也沒想到,Yahoo竟然會利用站長工具,來搞這種勾當!我強烈懷疑,Yahoo希望透過站長工具,更加清楚的分析網站的流量來源,並藉此增加關鍵字廣告的銷售,並透過壓縮Google Adsense的空間,獨佔台灣市場,進而透過獨占市場,賺取更多的利潤。

來說說場地王和啞虎的糾葛吧
場地王六月上線的時候,那時候就看過浩宇這篇
但是想說只要不要把「站長工具」的統計流量程式碼放在網站上,應該就會沒事吧
所以我很鐵齒的用了搜尋分析管理,將場地王網址加入......
沒想到隔天搜尋排名大落
連打「場地王」都會落在第四頁之後.....
後來只好乖乖繳保護費,
購買啞虎關鍵字廣告.....
果然排名慢慢往前爬,
但是使用不到1個月,預付的3000元廣告費用盡後,
馬上排名又往後掉

後來想想不是辦法,總不能一直這樣子填無底洞
所以用了一個月就不再用,現在只有下Google關鍵字

一個月前場地王為了增加PR值,花了3000元在啞虎付費優先處理網站登錄
付費的日期是9月25日,
果真排名就慢慢往前跑
搜尋「場地」關鍵字,從3-4頁慢慢跑到第二頁、跑到第一頁,最後到上週就已經成為「場地」關鍵字的第一名....

但是昨天一看,居然場地王掉到第11頁,而且呈現出來的還不是首頁....
twitter上murmur,tempofeng說「可能是你們 server 換 ip 了, 如果是的話, 可能過一兩個星期就會回來」,但是我們這幾天沒有進行ip異動,也沒有上什麼大功能....

另外roach1971 說「這兩天雅虎在調整自然搜尋的排序規則,我們同業也都是全部大風吹。或許雅虎就是要常常跳跳舞大家才會勤奮買關鍵字廣告吧.....」

啞虎公關朋友的說法則是「這是自然搜尋結果....」

如果依據啞虎公關朋友的說法是自然搜尋的結果,那時間點還真是巧合啊

1. 9/25付費3000元購買「
優先處理網站登錄」,排名開始快速上升,大約10/30發現排名掉到10頁之外,時間大約是1個月,推斷啞虎優先處理網站登錄對於排名的影響力大約1個月(因為我沒有每天看排名,可能排名往後掉前幾天就發生了),1個月以後,對不起,請再繳交保護費!

2. 若是整體調整自然搜尋的排序規則,那啞虎的搜尋功能還真是強大啊,從第一名掉到第10頁之後,這調整的幅度還真是大啊,這個搜尋引擎的 可靠度還真是脆弱啊!

3. 我昨天有在twitter上和william_yeh 聊了一些關於啞虎不利的消息....是不是這樣子被盯上呢...

[有此一說] Y!奇摩的首頁變矮,反映廣告量下滑 (link)
@william_yeh Yahoo今年從首頁掉的廣告量可能上億 (link)
幾大旅遊網站 ezfly、雄獅、燦星等 已經聯合 撤掉 Yahoo!首頁的廣告
以每家一年2000-3000萬來說 就是個億 (link)
@alslp 除了之前旅行社撤廣告的事件之外,還有什麼更大規模的事件嗎? (link)
alslp @william_yeh 房仲業和地產商的廣告

+++++

再度誠摯的呼籲台灣網路界的朋友
千‧萬‧不‧要‧試‧圖‧與‧啞‧虎‧對‧抗
台灣的霸王不是好對付的
希望不要再有下一個受害者了
請做個網路界好國民
記得每月定期向啞虎繳交保護費!

請熱烈響應「網路好公民,請按時向啞虎繳交保護費」活動


http://stickeraction.com/payahoo
將貼紙貼到您的部落格上吧!



附註:場地王在啞虎搜尋各種瀏覽器及cookie下的排名截圖
http://www.flickr.com/photos/8339251@N02/





2008年10月7日 星期二

不用程式硬搞出公關動態RSS及熱門公關職缺RSS

場地王上個月推出了公關論壇,一開始大家不願意分享,
為了要增加黏度,至少得做成一個整合的資訊平台!
最快的方法就是去抓其他站的RSS內容,
第一個是抓銘報新聞的公關新聞,
第二個是從104抓出最新公關職缺。

這兩個內容都沒有提供RSS,所以得用硬幹的方式!
銘報公關產業新聞在這一頁,
http://mol.mcu.edu.tw/showmore.php?cid=z31
先Ponyfish提供的RSS feed maker免費服務,硬捉出RSS
http://www.ponyfish.com/feeds/43738MELcEFjb
再用grazr.com的服務,將RSS包成web widget,
結果就是公關論壇下方的「台灣公關活動動態RSS

http://www.where2event.com/forum/

104的公關職缺比較難,因為104的工作內容都用Ajax包起來,以免讓爬蟲抓去別的網站。
http://www.104.com.tw/jobbank/joblist/joblist.cfm?jobsource=n104bank
Ponyfish有提供加上cookie參數,去抓RSS,不過也一直抓不到
我只好去看1111,沒想到現在1111的查詢,完成學104,所以也失敗!
(1111上面看到有職缺RSS服務,我爽了一下原來內容都是空的..!)
後來我在試試看將職缺儲存到個人頁面,頁面轉到pda.104.com.tw
我加上cookie參數,就可以抓到以下RSS
http://www.ponyfish.com/feeds/44115nBfRyAYo
但是Ponyfish免費的服務只能抓一個欄位,所以我只抓到職缺,沒抓到公司名....

我改找看看104有沒有提供行動的服務,可能會用RSS的方式實現
所以連到104i,查詢關鍵字「公關」的職缺,
http://pda.104.com.tw/if/joblist.cfm?kws=公關&kwop=2&order=1
無意間 ponyfish吐出訊息說104本身就有提供RSS
http://pda.104.com.tw/if/joblist.cfm?fmt=1&kws=公關&kwop=2&order=1
原來是在網址上加了一個fmt=1的參數....
真是藏得太好了!!!

那就很簡單啦!
把RSS包進grazr.com 的Widget,
程式碼貼到公關論壇即可!

...只是越掛越多,速度load得越慢啦!

2008年9月24日 星期三

台灣第一個公關討論區-場地王公關論壇和大家見面啦

為了服務更多辦活動的網友,場地王推出了台灣第一個公關論壇啦!

大家在場地王找完活動場地後,還可以到公關論壇討論活動舉辦的大小事,包括主秀表演、流程、主持人、Showgirl、媒體互動、新聞稿撰寫、議題塑造等,有許多公關高手在版上呢!

公關論壇有三大特色:

  1. 首創「場地廠商來比價」功能:以往網友找場地,都得一家一家搜尋,每家個別去談;公關論壇由於有場地王數百家場地廠商基礎,提供反向的比價功能,由消費者在論壇上主動將需求寫成表單,場地廠商一起向消費者報價,消費者一次可以獲得多個場地廠商的報價,而且由於廠商互相競價,消費者可以撿到最大的便宜
  2. 「最專業公關交流平台」:場地王是台灣最大的活動場地平台,每天都有數百個專業公關活動從業人員在此,將提供最專業的舉辦活動及公關的經驗,並促成業界的互動;同時,針對目前當紅的特闢「網路公關/部落格行銷討論區」,由舉辦多次網路聚會的站長Willy親自主持。
  3. 「新聞稿刊登」:公關論壇開放新聞稿刊登服務,並提供RSS方便媒體記者直接訂閱,任何新聞皆不會漏掉。

目前開設版面如下:

  1. 公關行銷專區
    • 公關活動版分享辦公關/行銷活動的經驗,主秀表演、流程、主持人、Showgirl、媒體互動、新聞稿撰寫、議題塑造等議題
    • 網路公關/部落格行銷web 2.0時代,部落格行銷當道,傳統公關公司開始接觸全新的網路媒體,在這裡分享您的經驗及見解吧!
    • 公關行銷人才動態公關界好封閉唷!其他公關人都在做什麼呢?大家來分享動態吧!徵才、找工作也可以在在這裡發表!
    • 新聞稿專區在這裡刊登你的新聞稿吧!
  2. 活動場地專區
    • 場地舞台佈置大家來分享或交流場地舞台的布置及設計吧!
    • 場地廠商來比價如果你有活動場地的需求,在這裡將你的預算/需求公開說出來,讓廠商主動來報價!
  3. 管理專區

快點來看看吧!

場地王公關論壇 http://www.where2event.com/forum/


同場加映

場地王也同時啟用了「場地.tw」這個網址,您也可以用「http://場地.tw」連到場地王唷!


2008年8月4日 星期一

JAVA 縮圖程式 JMagick

在找場地王的縮圖程式,搜尋了一下網路,發現Java 縮圖程式的效果不太好
很多人推薦ImageMagick,ImageMagick支援超過100種影像格式,如GIF, JPEG,PDF, PNG, SVG, and TIFF等常用格式皆有,主要可用來轉檔、縮圖及一些影像處理功能,Flickr在被Yahoo併購前就是使用ImageMagick!

ImageMagick可以在UNIX-like及Windows下運行,並衍生出許多語言的介面,可以透過各種語言進行實作,如Java介面的JMagick、C++的Magick++、PHP的MagickWand for PHPIMagick、Ruby的RMagick、Python的PythonMagick、Perl的PerlMagick、Pascal的PascalMagick .....

JMagick的官方網頁
http://www.imagemagick.org/
載點
http://sourceforge.net/projects/jmagick/


JMagick相關討論
http://hedong.3322.org/archives/000341.html
http://www2.matrix.org.cn/thread.shtml?topicId=46202&forumId=19&fid=19
http://www.javaworld.com.tw/jute/post/view?bid=11&id=73466&sty=3&age=0&tpg=1&ppg=1#73466
http://topic.csdn.net/t/20060603/15/4798174.html

其他JAVA縮圖程式
http://www.javaworld.com.tw/roller/ingramchen/entry/2007_2_1_ResizePhotoInJava
http://blog.xuite.net/genix/destiny/11620831

2008年7月2日 星期三

場地王官方部落格上線囉

現在是部落格行銷的時代,場地王當然要來個部落格!
才能融入部落客社交圈囉!

以後在場地王官方部落格,將會交流場地王大小事、常見問題、場地主題報導並分享ext-js的開發經驗

大家來捧個人場吧!

2008年6月7日 星期六

AND(&&)及OR (||) 判斷式

場地王搜尋程式,判斷前端傳來的值遇到了問題,搞了好久終於解開
原來是基本的語法邏輯沒搞透徹

前端傳來計價方式(A),及價格區間(低值B、高值C)三個參數
要判斷三者全都有值才會加入SQL語法

if (A!=null && B!=null && C!=null){
sql.append(.....);
}

但是即使前端三個條件沒有全部成立,判斷式內的語法還是會被執行
最後發現原來即使前端是空值(null),但是還是會傳回空字串(""),所以得用A.equals("")處理字串,最後!A.eqauls("")判斷...



場地王已經偷偷上線囉

場地王已經偷偷上線囉
不過還有很多功能要加,很多bug要修,很多場地要刊登,
介面也還沒很完善.....
但是總算是個開始了~
已經大家找活動場地來場地王

網址:http://www.where2event.com/

2008年5月30日 星期五

不知如何下手的SQL查詢--Checkbox的多值

一直找不到答案,有人可以給點提示嗎?

前端表單傳來checkbox的多值,想在資料表的某欄位裡找出全部符合條件的筆數,該如何寫比較好呢?

資料表是這樣設計的:
場地表 Room
1. r_no:場地的流水號
2. r_name:場地名
ex.
r_no, r_name
1,A 場地
2,B 場地
3,C 場地

設備表 Facility
1. f_no 設備的流水號
2. f_r_no 設備對應所屬場地的流水號
3. f_item 設備的種類(如燈光、音響等)
ex.
f_no,f_r_no,f_item
1, 1, 燈光
2, 1, 音響
3, 2, 燈光
4, 2, 麥克風
5, 3, 麥克風
6, 1 ,白板
7, 1, 投影機
8, 2, 白板
9, 3, 投影機

前端搜尋表單的checkbox傳來設備代號f_item會有好幾個值,來查Facility表
舉例來說,使用者要找同時有白板、麥克風的場地,該怎麼下SQL語法呢?

2008年5月25日 星期日

JAVA 處理影像的open source library

使用者上傳的照片需要經過處理,產生縮圖,已減少頻寬用量


JIU – The Java Imaging Utilities
http://schmidt.devlib.org/jiu/
JIU(Java Imaging Utilities)是一个Java包提供加载,解析,处理和保存图象像素.

OpenJGraph
OpenJGraph是一个开源的Java库,用于创建和处理图形和图像绘制.
http://openjgraph.sourceforge.net/



JAVA處理照片的相關套件
http://www.javaapi.cn/ShowPost.asp?ThreadID=1014
http://www.mathtools.net/Java/Image_Processing/index.html

2008年5月12日 星期一

好文推薦:網頁應用程式 Usability 筆記

出處: Xexes's Java Blog
http://www.javaworld.com.tw/roller/ingramchen/entry/2007_11_18_WebAppUsabilityNotes

2008年5月6日 星期二

Firefox text-align:center 的問題

在做場地王View,有一個一直困擾已久的排版問題終於找到答案了
這次問題不再IE,而在FF。
問題出在text-align:center屬性在IE內可控制文字和子區塊置中,
但是在IE內就只能控制文字,子區塊還是會依預設的靠右,
原來CSS要設定為 text-align: -moz-center,
才能正常的把子區塊置中。

2008年5月4日 星期日

婚宴工具網站:美書兒(MISHUER)

無意看到一個婚禮活動的工具網站,非常有趣

1. 寄發邀請函並統計
2. 系統排位
3. 問卷調查
4. 禮品採購
5. 新娘秘書報價

和公關王的點子有異曲同工之妙

2008年4月28日 星期一

tempo 的創業經驗分享

忘了參加HappyWeb10,不過光看tempo的簡報就覺得沒去很可惜.....


2008年4月17日 星期四

適合Servlet/JSP的Tomcat主機

找了一下適合Servlet/JSP的Tomcat主機,看到一家國內的廠商ServerZoo,Java World上有人在推薦,一年50G,450MB保證頻寬,一年8820元,超過流量每GB 70元(預付價),另外還有虛擬專屬主機的選擇,除了獨立執行緒和保證記憶體外,還可以自行安裝需要的OS及軟體。比起另一家補夢網便宜多了。

另外國外有一家DailyDazor,Xdite現在架twitio.us就用這裡,提供250GB頻寬,每月57.95美金,256保證頻寬,並允許768的瞬間流量。

之前在數位時代,瞭解一個中型新聞性網站的流量(page view 120萬,人次18萬次,unique user 86,000人),大約一個月需要90G的流量空間。場地王每月人次應該在3-5萬低於數位時代,但是下載的場地圖片比較多,因此平均流量應該落在每月50-70G,前三個月可能只有20G左右,看起來ServerZero應該是很不錯的選擇。

2008年4月13日 星期日

有用的正規表示法

出處:http://scnujie.javaeye.com/blog/172872

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^\s*|\s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]\d{5}(?!\d)
评注:中国邮政编码为6位数字

匹配身份证:\d{15}|\d{18}
评注:中国的身份证为15位或18位

匹配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有用

匹配特定数字:
^[1-9]\d*$    //匹配正整数
^-[1-9]\d*$   //匹配负整数
^-?[1-9]\d*$   //匹配整数
^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串


正则表达式 \d前面加个"\"转义字符 这里是判断YYYY-MM-DD这种格式的,基本上把闰年和2月等的情况都考虑进去了 ^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$

下面的是加了时间验证的 ^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$

2008年3月21日 星期五

地圖日記課程:Google Map API

前天請到地圖日記技術長Andy為同事講解示範Google Map API的玩法,
大家都收穫良多,來分享一下。

叫出地圖
首先引入Gmap,Key要向Google Map申請,每個網域都有特定的值
<script type="text/javascript" src="http://www.google.com/jsapi?key=ABCDEFG">script>
接下來將Map2物件實體化,並塞在前端div=map的標籤內,
用setCenter方法,傳入經緯度及地圖比例(1~18),就可以將地圖叫出
var map = new google.maps.Map2(document.getElementById("map"));
map
.setCenter(new google.maps.LatLng(37.4419, -122.1419), 13);
加上標記(marker)
用Gmarker,
GMarker(point, icon?, inert?),
第一個參數傳入一個Gpoint或GLatLng,第二個是傳入icon類型,
Gmarker實體化,再用map.addOverlay(marker),將標記放在地圖上。
icon可以換成自己想要的圖或者選擇預設
icon的定位設定跟iconSize及iconAnchor,如果
iconoff.iconSize = new GSize(40, 40);
iconoff.iconAnchor = new GPoint(20, 40);

開對話視窗

用map.openInfoWindow(point, node, opts?)或openInfoWindowHtml(point, html, opts?)
或GinfoWindow開出視窗,可設定各種視窗及效果


將鏡頭拉到某一個點

map.panTo(center),center傳入一個GLatLng(lat, lng, unbounded?)或Gpoint(x,y)當作中心點,
因此如果要做出動態拉鏡頭的效果,可以將一串經緯度傳入陣列,再用setTimeout
設定依時間順序序傳入陣列的經緯度值。
setTimeout("javascript statement",milliseconds);
另外,eval()也很好用,
後端回傳的responseText如果用JSON格式,塞入eval(string)中,可以直接成為陣列
landmarkdata = eval('(' + o.responseText + ')');
標定視窗界線,讓使用者拉動到鏡頭外時可以重新傳入新的經緯度值

必須以事件(GEventListener)監聽地圖的四個角的位置(GBound),
當改變時,重新到資料庫取出新的使用者經緯度資料,並重繪地圖。

2008年3月13日 星期四

資料庫優化

發現資料庫的查詢很慢,看了一下書,做點筆記

1. 建立索引
- 建立索引可以加速查詢,但是update的速度會慢一些,因為update資料欄位也同時要更新索引排序
- 不能在太多欄位建立索引,否則資料量會變大,也讓速度下降
- 使用不可重覆的索引,並且盡量短(但是還是得保留辨視度)
- 索引建立的地方,加在 FROM或WHERE相關的欄位,而不是要SELECT的欄位

SELECT (col_a) FROM (tb1 LEFT JOIN tb2 ON tb1.col_b=tbl2.col_c) WHERE (col_d=expr)

-UPDATE時,盡量寫在一筆內一次寫入多個欄位,而不要分為多筆,否則必須重覆建立索引,速度會很慢

2. 欄位設定NOT NULL,可以讓Where的判斷式更快
3. 使用查詢加速器
4. 記憶體要大,請參考FAR的文章

相關資料
http://www.belinking.com/Big5/data_52.htm

2008年3月6日 星期四

Web 2.0 創新服務大驚奇

昨天參加完資策會web 2.0創新服務競賽的決選,表現不算好,
能不能入選看運氣囉!

不過隔天看到Multani的文章12,發現兩個有趣的網站,ShowJoinLocalking,分別和場地王有合作的可能性

1. ShowJoin,是敲活動時間的工具+社群網站:
a. 場地王開放場地API,供ShowJoin網友揪團的時候除了時間還可以有活動場地的選擇
b. ShowJoin開放API讓場地王嵌入網站,提供場地王使用者在場地王平台外,除了選擇活動 (記者會、宴席、聚會)場地外,還可以橋時間。揪團網也提供類似功能。

2. LocalKing,在msn介面上以plugin嵌入Google Map,以web 2.0方式提供地緣關係的生活資訊 問答。
a. 場地王網站上提供LocalKing Plugin下載,增加LocalKing User Base;
b. LocalKing在msn上的LocalKing介面,可以藉由場地王資料庫豐富生活資訊及專家。
c. 場地王客戶若需要在多一個介面上(LocalKing)刊登廣告,可以透過場地王,並將利益拆帳給 LocalKing

2008年3月2日 星期日

好文精選:架設大型網站的Tips

原文出自Pixnet的創辦人Far
http://blog.pixnet.net/far/post/17024


「架設像Pixnet或者是無名這類網站真的要所費不貲麼?
其實不然.
下面的東西,對一些大Site來說是很基本的道理。只是想讓初學者省去摸索跟試誤的時間。
一些架站的Tips..

1. Storage Server
外面一台專業存儲設備或者是NAS等等都價格昂貴,但有多少錢做多少事情,買個幾台一般的主機,買個幾張RAID卡,RAID卡的價錢,當然就關係著品質。建議購買具有RAID 5的功能之RAID卡,stripe 可以加快讀取速度,硬碟越多顆,讀取速度越快。RAID 5允許在有一顆硬碟fail的情況下可以rebuild資料回來。增加資料安全性。

一般建立使用者,會給予其流水號,建議使用流水號來分目錄,比如說Pixnet,有一位使用者的帳號是far,他的uid是12345,我會將他的圖片放置於userpics/4/5/12345裡面,這樣有什麼好處?好處在於可以把使用者平均的分散在不同的目錄,不同的機器上。像pixnet的範例,依成長的比例,從1台~100台都可以自由運用。 (分的越細當然就可以分更多台)。有人會說每個人用量都不一樣,真的能夠平均麼?可以的。人數越多,就越平均.:)。某site用的是使用者名稱的第一個字母,但是英文字首的命名本來就極不平均,所以要load banlance就越困難,加上他只能最多分到26台。
ㄧ般要讓其他機器可以存取圖檔,我們習慣的作法是開NFS,但是我們建議,盡量不要用NFS,問題太多,效能也不好。能用其他方式取代就取代。

2. DB
Pixnet 使用MySQL 5,自MySQL 4.1之後的sub-select是我很愛用的,真的頗好用。DB在編譯的時候,用不到的功能能關就關,my.cnf 其實有很多東西可以調,看你自己最多的query type是什麼,對於memory的分配就很重要。DB重的是memory,所以能大就盡量大。

tune my.cnf只能有部分的效能增進,要使其到極限,還是要去改寫你的mysql query,使用EXPLAIN來看你的query是不是做太多白工。這部份的效能增進是最大的。

打開log slow query,可以讓你知道哪些query最耗時,想辦法改寫他。

打開mysql cache,這樣mysql會有cache的功能,相同的query就不會再去處理一次,而把上ㄧ次同樣的結果丟出來。時間與CPU都省了下來。

安裝mytop可以幫助你了解可能出問題的query在哪裡。

定期OPTIMIZE TABLE。

能讓php做的,就不要讓mysql去做。與其讓mysql去做非自己專們的運算,不如給php做。
對於常常access且static的資料,比如像是熱門相簿等等,不需要每次都重算。你可以每小時做一次統計,並且將結果丟到一個HEAP的 table,這樣對於這種很常大量access的資料,mysql幾乎只是提取資料,而不需要另外做運算。效能上當然是大大增進。

將ㄧ些會很常大量access的資料,且可以經由其他table運算出來的資料,放到另ㄧ個HEAP table,因為HEAP是把table放置到memory,在server重起後,資料會不見。所以適合可以重新運算即可得到,且被大量使用的資料上。

類似像隨機相簿這種,請不要真的把所有的資料放下去隨機,隨著你的site成長越大,這部份的load也就會越大,你只要讓人家感覺是隨機就好了。每個小時從原始資料中random出夠大的SET(比如說1萬份),當使用者要access時,再從這1萬份裡random取出10份即可。randomㄧ萬份是比random一千萬份的時間是少之又少。Server Load也頓減許多。

要做的是功能,某種層度上它是真的隨機,請不要傻傻的全部去給他隨機。
如果機器算多的話,做一下mysql replication,讓master專門做寫入,讓多台slave做讀取,如此可以做到High Available又可以做到備份的功效。效能增進上更是倍數成長。

3. reverse Proxy
Proxy是很重要的,他是擋在file server前面的東西。大家都知道file server最怕的是硬碟壞軌,而過量的IO也確實會讓file Server的壽命減少。Reverse Proxy的功能就在保護File Server的壽命。我在每台file server上面跑thttpd。然後Reverse Proxy再跟file server的HTTP要檔案。thttpd本身有cache的功能,你可以設定expire time,他會cache在memory中,所以實際上可以減少硬碟的I/O,加上Reverse Proxy又再一次的cache,可以做到雙層cache,做到保護硬碟的功效。

4. Web
如果可以的話,讓網站只有很簡單的吞吐,不要有多餘的功能,如果是用APACHE之類的,module load越少越好,htaccess能關儘量關掉。PHP如果可以就跑fastcgi,現在php cache的soft有很多,像是mmcache,APC,eaccelerator等等。它可以將php complie候cache在memory裡,如此,下一次同樣的request就可以少掉這段的耗費。

如果可以弄成static page就最好弄成static page。靜態頁面的吞吐大過於php產生頁面。

5. 程式
程式方面就沒什麼好說了,這多少是看功力。多試多玩,他就是你的了。

還有,做這種東西,很重要的是"Cache!Cache!Cache!!"

很多Optimize的方法Google其實都有,不要怕花太多時間,就算是一點點小tip,有時也是很實用的。

寫的有點雜亂無章.以後想到再補訴。」

補充資料
1. MySQL設定
http://www.eland.com.tw/www/javaland/2003_11/javatech_javaclassroom.htm

2. HEAP TABLE
http://www.databasejournal.com/features/mysql/article.php/3077531
http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html
http://linux.tnc.edu.tw/techdoc/mysql/mysql_doc/manual_Server.html
http://www.twbbs.net.tw/1302006.html

2008年2月26日 星期二

如何善用網路上的開源碼:回收再利用

分享Qing的另一個系列文,「Google時代的程式撰寫」
http://www.javaworld.com.tw/roller/qing/entry/2006_4_18_Google_Programming

作者指出有三大轉變
1. 由於Google搜尋引擎和網路的的發達,現在更容易找到人家分享的開放原始碼(如http://www.codeproject.com
2. 錯誤排除的速度更快了,現在只要把錯誤碼或訊息貼到搜尋引擎,就可以找到一大堆解法
3. 以前的開發方式通常都是靠自己寫或團隊的程式庫,但是現在網路上一大堆open source code,也因此現在
「追蹤原始程式碼、拆解原始程式碼」的能力,可能比自己撰寫程式碼的能力更重要。

開放原始碼的回收與再利用
http://www.javaworld.com.tw/roller/qing/entry/2006_4_19_Recycle_Open_Source

作者分享如何有效利用回收、再利用開放原始碼,增快程式開發能力
1. 在網路上搜尋適合的原始碼:基本規則如下
  • 執行平台、語言相符
  • 版權宣告適合
  • 範圍接近、相依性低
  • 使用者眾(可加上有開發社群)
2. 瞭解程式架構,拆解出自己所需的部份
3. 訂定不同階段,從最小里程碑開始
4. 做最細部拆解,先求能編譯,再求能正確執行
5. 暫時忽略第一個里程碑的內容:適時註解掉不是目前正在處理的部份,以求通過編譯檢查
6. 適度地斬斷關連性,尋找適合的替代品
7. 整理介面,去除不必要的元素
8. 做好心理準備,面對混亂
9. 跨出成功的第一步

開放原始碼的回收與再利用-實例探討:視訊檔案的格式探測
http://www.javaworld.com.tw/roller/qing/entry/2006_10_10_%E9%96%8B%E6%94%BE%E5%8E%9F%E5%A7%8B%E7%A2%BC%E7%9A%84%E5%9B%9E%E6%94%B6%E8%88%87%E5%86%8D%E5%88%A9%E7%94%A8_%E5%AF%A6%E4%BE%8B%E6%8E%A2%E8%A8%8E_%E8%A6%96%E8%A8%8A%E6%AA%94%E6%A1%88%E7%9A%84%E6%A0%BC%E5%BC%8F%E6%8E%A2%E6%B8%AC

作者示範回收再利用開放原始碼的範例

分享很棒的程式開發觀念

今天看到了一個程式設計師qing的部落格,分享了很多篇程式開發的觀念
我覺得很棒,大家一定要點來看!

砍掉重練真的會比較好嗎?
http://www.javaworld.com.tw/roller/qing/entry/%E7%A0%8D%E6%8E%89%E9%87%8D%E7%B7%B4%E7%9C%9F%E7%9A%84%E6%9C%83%E6%AF%94%E8%BC%83%E5%A5%BD%E5%97%8E
作者討論會想要讓程式設計師砍掉重練的情況大致上有5種:
(1)撰碼風格不佳(2)過多重覆累贅的程式碼(3)程式架構疊床架屋(4)架構設計不夠通用(5)所運用的技術跟不上潮流(5)有太多隱藏在深處的臭蟲未爆彈。
但是他認為其實大多數的時候不應該砍掉重練,因為以生產力的角度來說是不划算的。
很多情況只要透過重構(refactoring),將類似的程式碼精鍊即可。

想要砍掉重練,通常是優秀程式員想要維持完美性的心魔,但是這樣可能陷入over-engineering(討論請詳見下一篇),他的看法是程式可以跑最重要!

淺談軟體設計的Over-Engineering
http://www.javaworld.com.tw/roller/qing/category/programming?page=1

作者提到了under-engineering和over-engineering。「under-engineering是絲毫不為日後的可能做準備,而over-engineering則是為尚不可見的未來做太多準備。」

「這種情況的設計者,尤其是剛領教到軟體設計之美的設計者尤其會犯。這類的設計者會有太多的企圖,希望打造一個十分通用、最好是放諸四海皆準的設計。使得日後無論有多少變化,通通都能夠被納入在這個設計當中。」

這個也是我們目前必須警惕到的問題。

此外,作者認為軟體設計是「魚與熊掌不可得兼」,想要建立彈性極佳,可應付未來各種需求的程式設計時,可能就得用效能來交換。

「但是,吊詭的是,其實你往往不需要如你想像中的彈性。建立一個無懈可擊幾近完美的一般化設計,除了美感外,別無用處。但軟體設計的目標並不在展現美感,而是要解決真實的工程問題。」

那麼,「在over-engineeringunder-engineer之 間又要如何拿捏分寸呢?過與不及看來都有問題。你要做的並不是什麼設計都不做,也不是把設計做了過火。你要做的是,去建立一個具演化能力的設計,讓這個設 計能夠隨時依照可見到的迫切需求,在很短的時間內滿足這個迫切的需求,同時繼續為下一次的演化而做準備。就是這樣,每一次的改變,除了滿足目前的需要之 外,同時也為下一次的改變而做準備。」


建立自用的程式庫
http://www.javaworld.com.tw/roller/qing/entry/%E5%BB%BA%E7%AB%8B%E8%87%AA%E7%94%A8%E7%9A%84%E7%A8%8B%E5%BC%8F%E5%BA%AB
鼓勵將開發中的公用需求建立成自己的程式庫,並重複運用,可大幅提高生產力。

「大多數的程式員因為拘泥於物件導向,一想到程式碼的重複運用,往往直接聯想到透過繼承方式取得的重複運用。然而,大多數情況下,除非我們設計的是應用程 式的框架,或者是某種特殊應用的類別庫,否則設計的類別之間並不會存在太多或太複雜的繼承階層關係。這自然意謂著,透過繼承而得的重用程式碼其量不致於太 多,因此也不太可能透過它得到非常多生產力的提昇。」

但是,「當你跳脫出利用繼承得到可重複使用之程式碼的想法後,或許會發現到,重複運用許多在開發過程中會需要的公用程式,也是提高生產力的主要來源之一。」

但是作者也認為「不用追求一次到位式的立即整理出一個好用的公用程式庫,你只需要在開發的過程中,逐步的觀察是否發生了重複性的程式碼片段,倘若有,便利用「重構(refactoring)」中提煉函式或提煉類別的技巧,將它們從應用程式的程式碼中提煉出來,萃取到你自己的公用程式庫中。

如果是在一個開發團隊中,這個公用的程式庫應該是採取團隊共用的模式,相關的議題就會更多,包括:你們應該要制定一個維護公用程式庫的簡單流程,例如應該 通知那一位協調者,應該如何撰寫說明文件、如何對你加入程式庫的公用程式進行測試以維護品質、如何確保不會對公用程式庫的其他程式產生副作用、如何管控公 用程式庫的版本,以及和已開發、開發中的應用系統之間的組態管理等等。」

技術昇級狂熱及新技術焦慮
http://www.javaworld.com.tw/roller/qing/entry/%E6%8A%80%E8%A1%93%E6%98%87%E7%B4%9A%E7%8B%82%E7%86%B1%E5%8F%8A%E6%96%B0%E6%8A%80%E8%A1%93%E7%84%A6%E6%85%AE



化繁為簡,執簡御繁
http://www.javaworld.com.tw/roller/qing/entry/2007_7_25_the_way_to_simplify_%283_3%29
如何找出共通性

2008年2月24日 星期日

37個網路行銷的技巧

你的網站該如何行銷呢?來看看這篇「37個網路行銷的技巧吧」!
看一下人家怎麼做?
或還有什麼行銷手段可以用呢?

原文出處:
List of 37 Internet Marketing Techniques
http://www.ecnow.com/Internet_Marketing.htm


基礎

1. 取一個包含關鍵字的url
2. 簡單易用的網站設計
3. 將價值回饋社群
4. 利用外部資源讓使用者對內容滿意
5. 將你的url放在各個可見的角落
6. 善加利用email簽名檔
7. 將網站盡量提交到搜尋引擎、目錄網站等

優先技巧:將網站盡量推廣出去

8. 點擊付費或其他付費網路行銷
9. 部落格
10. 建立免費的線上電子報
11. 搜尋引擎優化:盡量讓你的網站在搜尋結果的前2頁
12. Podcasting
13. 找到或培養網站大使(evangelist):病毒式行銷
14. 建立合作伙伴計畫:讓其他網站也可以銷售你的產品或取得內容
15. email行銷
16. 撰寫或發佈白皮書於本網站或其他消費性指南網站
17. 發佈文章/書或想辦法在新聞中被提到
18. 舉行線上直播會議
19. 撰寫線上新聞稿並連回網站: 以下網站都有提供新聞稿服務
PRnewswire, BusinessWire, MarketWire, Internet Newsbureau,
PRweb, 24-7PressRelease, PressReleaseWriting, PressReleaseNetworking, ExtraPR, GlobalPRMedia, Eworldwire, ProfNet.org/press.html, Pressbox.co.uk, PrudentPressAgency, Pressreleasenetwork, Urlwire, Webwire, XpressPress
20. 參加商業社交聚會
21. 找出線上社群並參與
22. 建議並帶領線上論壇/社群
23. 在網站上建立wiki,讓使用者可以自行更新網站內容
24. 與產業內的適合網站互惠地交換連結
25. 設定自動回覆信件
26. 發佈調查:相關結果可用於文章、新聞稿部落格等地方
27. 主動的監看或參與線上社群
28. 舉辦拍賣
29. 舉辦比賽,贈送獎品
30. 提供線上的折價券
31. 參與公益網站
32. 在入口網站或網路商場放置連結
33. 參與付費或免費的橫幅式廣告
34. 放置付費或免費的分類廣告
35. 在自己的網站上放置分類廣告
36. 申請並贏取獎項
37. 提供一些免費服務的網頁:例如免費下載軟體等

2008年2月18日 星期一

Google Calendar API

tempo建立了台灣網路活動行事曆
並聽他在blog上介紹Google Calendar 可以發送事件簡訊至手機
這應該可以用在PR 2.0的網站
做為活動提醒的工具

2/19 補充:目前在台灣尚未提供服務
3/6 補充:網友香腸表示中華電信支援此服務,目前不需收費 http://sofree.twbbs.org/blog/2008/03/06/google-calendar-sms/


相關資料如下:
http://code.google.com/apis/calendar/:API首頁
http://code.google.com/apis/calendar/developers_guide_protocol.html
http://groups.google.com/group/google-calendar-help-dataapi :論壇
http://code.google.com/apis/gdata/clientlibs.html:Client Library

目前用Google Calendar 做出來的mesh-up
http://www.programmableweb.com/api/google-calendar/mashups

2008年2月16日 星期六

AJAX 隨手爬

Ext JS:a pure javascript library

http://en.wikipedia.org/wiki/Ext_(javascript_library)
http://extjs.com/learn/Tutorial:Introduction_to_Ext_2.0
http://extjs.com/learn/

Tempo的AJAX by Example



Tempo在AJAX环境下使用RPC
http://www.usstec.com/htmldata/5/18/2007_12/071229332540_5160_1.html

Tempo的Introduction to Google Gadget

HappyWeb 9 聚會

今天去了HappyWeb 9,主辦人tempo和cjin邀請了VeryXD的Xdite及訂便當的ingramchen

Xdite的簡報檔
http://blog.xdite.net/?p=543

http://blog.xdite.net/?p=548 技術文章

另一位ingramchen
http://www.javaworld.com.tw/roller/ingramchen/entry/happyweb_9_%E7%B0%A1%E5%A0%B1%E6%AA%94

分享一些筆記:

在網站效能優化的部份

1. 網站的瓶頸常常會發生在資料庫存取,所以可以用快取(cache)或將常用動態頁面轉成靜態頁面(static page)的方式
2. 搜尋程式(在我們網站上特別指關鍵字搜尋)因為演算法很複雜,會是網站loading的最大來源,所以可以獨立於一台主機上
3. 租用reverse proxy服務,可節省大量頻寬
4. 平衡負載(load balancing):訂便當的網站,設計時盡量以css而不用圖檔,因此以一台主機,平均Load不到1,ADSL 2M 上傳,加上平衡負載器,即可應付流量需求。

網站經營:

1. 網站服務最好維持核心的單一主軸,Simplest is best!不要confuse 使用者
2. 降低進入門檻,可以免註冊方式進行。
3. 對於工具型網站來說,Flash動畫的使用手冊及文件是必須的,而且最好快速的回應,讓網站有活著的感覺!
4. 動態的隨機出圖,可以增加page view

技術:

訂便當用到的技術以java為主,並用了許多套件,請參考。 http://dinbendon.net/do/pub/AboutPage

1. Wicket:一套java framework,可支援javascript,訂便當站長提了好幾次。
相關介紹
http://wicket.apache.org/introduction.html
http://nettrace.blogspirit.com/tag/wicket

2. log4j:設計給Java的日誌系統的framework。http://logging.apache.org/log4j/
(謝謝William的指正)

3. Lucene:java搜尋套件,另外有包成API(Solr),我有一篇文章介紹
http://lonelymisconception.blogspot.com/search/label/%E6%90%9C%E5%B0%8B

4. Quartz:java的工作排程套件,可以用來設計單一程式或者大型電子商務網站。http://www.opensymphony.com/
quartz/

5. JfreeChart:java的畫圓餅圖的套件 http://www.jfree.org/

6. ROME: 解析、產生、發佈RSS的java library

7. JUnit, EazyMock: Unit Test工具

8. JExcel API: java API 可做出Excel效果,http://jexcelapi.sourceforge.net/

今天ingramchen有提到ZK的授權方式,指出商業用途需要收費,我嚇了一跳,我現在正在進行的案子打算用ZK,若收費是不小的成本
後來查了一下ZK的licensing,採GPL與商業授權並行
http://www.zkoss.org/license/gpl.dsp
http://www.zkoss.org/license/cml.dsp

所謂的GPL,也就是MySQL的授權方式,可參考wikipedia的解釋
http://zh.wikipedia.org/wiki/GNU%E9%80%9A%E7%94%A8%E5%85%AC%E5%85%B1%...

我們若要免費使用ZK或MySQL這些GPL的軟體在我們的網站上,就必須在網站上聲明遵守GPL,讓別人可以修改、複製、再發行;但是GPL並不禁止對服務收取費用,同時只要不要再發行,就不一定要公開或開放原始碼。

2008年2月15日 星期五

Google Map API

昨天找到Google Map API中文地址轉經緯度的方法(Geocoding Class),
方法很簡單,只要用http的Get方法即可,
透過HTTP,以http://maps.google.com/maps/geo?q=地址或查詢關鍵字&key=Google Map授權碼&out=xml

* q -- The address that you want to geocode.
* key -- Your API key.
* output -- The format in which the output should be generated. The options are xml, kml, csv, or json.

除了上述方法,也可以用Geocoding物件來實作,可參考

http://5i01.com/topicdetail.php?f=130&t=491638
http://code.google.com/apis/maps/documentation/services.html#Geocoding
http://www.javaworld.com/javaworld/jw-01-2006/jw-0116-google.html?page=2

Google API簡單介紹
http://www.gather8.com/blog/article.asp?id=845
http://blog.roodo.com/syshen/archives/347151.html

用ext-js
http://ongmap.com/blog/?page_id=259

2008年2月12日 星期二

2008年2月11日 星期一

How to Program:病毒式行銷

我們常常會收到社群或交友網站某朋友寄來的邀請函,
其實是該網站提取朋友的聯絡人清單大量寄發的,
這就是所謂的病毒式行銷!
雖然很煩,但是對於剛開始起步想取得第一批使用者的網站來說滿有用的。

找了一些相關資料,關鍵字:"tell a friend"、"retrieve contacts"
MsnPlez:php script to retrieve msn contacts http://www.phpclasses.org/browse/package/4229.html

Contact Grabber:可以存特定的網站取得聯絡人,包含Yahoo, Gmail, Hotmail, AOL, Lycos, Rediff, Orkut & MySpace, LinkedIn
http://sourceforge.net/projects/contactgrabber/

OpenHotmail: 將存取windows live hotmail的HTTP 協定文件化,並提供libraries讓程序員更易撰寫存取hotmail的應用程式
http://sourceforge.net/projects/open-hotmail/

OpenContacts.NET:OpenContacts.NET is open-source library for importing contacts from popular web-mail services. Now supports: GMail, Yahoo! Mail, Live (Hotmail).
http://sourceforge.net/projects/opencontactsnet/

Get your friend's contact information: designed to manage your firend's paper daytimer (address book, appointments, business cards, phone numbers, mail, MSN, ICQ etc) in a single application.
http://sourceforge.net/projects/getcontacts/

2008年2月4日 星期一

Web Widget Maker

這次Demo的大驚喜除了地圖日記獲得票選首獎,令人興起有為者亦若是之感外,
有一個專門讓網友製作Web Widget的網站Sprout也相當有趣。

ReadWriteWeb專文介紹了這家網站,並提供線上示範
快來玩玩吧

PS. 目前Sprout尚未支援中文

2008年1月20日 星期日

站內搜索- Lucene及Solr

場地王在討論站內關鍵字搜尋
本來想包給Google Local Search
因為覺得關鍵字搜尋牽涉到自然語意....
每個人的語意表達方式都不盡相同
要搜尋到精準並排序並不容易。
所以為了使用者經驗,還是請出Google大神吧!

但是班長分享了一個Java-based的Search Engine叫Apache Lucene,
許多大網站如digg、livejournal、CNet、Joost 都使用Lucene
證明這套Search Engine在穩定度和搜尋效能應該都有一定水準
而且又是free/open source的。

Tsung's Blog:Apache Lucene 入手指南

http://plog.longwin.com.tw/news-technology/2007/07/24/search_engine_lucene_study_2007

Tsung介紹了Lucene,文後又留言最後他們公司使用了solr,
一個open source/free java-based search engine,是建在Lucene之上的search engine
找到另一篇solr的介紹

George Lee's blog
Solr - Enterprise search 的「黑盒子」

「簡單說,Solr 是完全把 Lucene 整個包起來,藏成一個搜尋的黑盒子。你不要管 Lucene 裡面怎麼做Tokenizer、Analyzer (雖然如果想改也可以),而只需要透過 XML/HTTP 來跟 Solr 溝通即可。要新增文件去搜尋,就 用 HTTP POST 塞資料給它。要做搜尋的時候,再另外做 HTTP GET 就好。非常符合 KISS 原則 (Keep It Simple, Stupid)。

雖然還沒進行壓力測試,不過 Solr 的底層是 Lucene,又是 CNet 的人寫出來的,看起來應該是還不錯用才對。」

http://mclee.foolme.net/2007/07/solr-enterprise-search.html

2008年1月8日 星期二

24小時打造出.com 網站

意譯一篇今天看到的好文章
講如何在四天共24小時內,打造出一個網站服務 Wigitize.com
http://dominiek.com/articles/2008/1/6/building-a-com-in-24-hours

作者是一個程式魔人,但是這篇文章是他嘗試透過多領域訓練(multi-disciplinary)的方式,整合各種現成的工具及網路服務,不重複造輪子,並補強他的弱項:設計、前端程式、系統管理及搜尋優化(SEO),並成功在24小時內打造出web 服務。

Widgetize提供的服務,可以讓使用者透過第三方的RSS/ATOM feed,製作成embedded widget。最常用的data feed格式RSS,並不適合做Widget,因為RSS feed需要較為複雜的伺服器端處理,才能呈現資料;Widget通常透過一種聰明的技術JSON,讓使用者的瀏覽器得以更輕鬆取得第三方的資料。

服務特徵:
1. 簡單:輸入該BLOG的URL即可取得RSS
2. 聰明:必須能自動偵測這些資料的feed
3. 可整合性:提供API給其他網路服務


設計實作,3hr
作者使用Adobe Photoshop (CS3) 進行網頁設計,透過CS3的Blending Options做出類似web 2.0的色彩效果。網站配色建議
產生Web 2.0效果的LogoButton

將整個Project檔案放在線上管理員,30min
Assembla這個網站提供線上的SVN及專案控管免費服務,內含Subversion、trac及wiki功能。作者申請好後將檔案上傳。

用Ruby On Rail 及Textmate 開發,4hr
這部份是用ROR開發,所以比較快,我不懂,所以也不詳述了。程式邏輯分為:
  • 將輸入的URL接到feed detector及aggregator。
  • 確認集合的資料儲存成JSON格式
  • 製作一個Widget的模子,可以儲存URL、偵測URL及JSON資料。
處理HTML的CSS,1hr

作者主張先開始處理html的CSS,理由只有一個,讓整個網站在早期就看起來很真實很可用,Kimochi爽效率才高!
  • 先開發Firefox版本,建議使用Firebug軟體,可讓速度更快;
  • 記得每次要把一些基本會用到的CSS先放進去;
  • Padding and margin:這兩個很重要,但是最難調,盡量用margin而非padding;另外,盡量用margin-bottom而不要用margin-top,因為每個物件通常都比較容易上浮;
  • 時下流行:採用美觀的字體(作者大量使用Trebuchet MS極少數的Ariel)
  • 盡量不要用銳利的黑色,建議可用#111或#222;
  • tables最好只用在table上,不要用在layout上;
  • AJAX的註解:AJAX千萬別拿來作為瀏覽效果用,有很多搜尋優化(SEO)和易用性的問題。
AJAX的轉動效果(Spinner),2hr
AJAX為了要顯示傳輸狀態,會有個轉動的javascript效果,作者的作法在此,他承認這一塊他花太久時間。PS1. 網友另外建議了另一個網站ajaxload,提供相同的服務。

設計及撰寫footer程式,2hr

作者認為footer扮演網站地圖的重要角色, last.fmsnooth.com是兩個很好的範例網站。


使JSON可嵌入,3hr


包含三步驟:

  • 定義包含的列(ul)
  • 引入JS Library,內含特殊的呼叫功能wigitize_feed()
  • 將JSON檔引入,呼叫wigitize_feed以取得適當資料。

讓機制在後台開始運作,3hr


這段作者以ROR的BackgrounDRb實作,略過。

完成API,4hr
參考成品

設定網域及網域email,30min

設定主機,1hr

作者選擇了比較高檔的主機商 slicehost.com,每月20美金,可享有256MB空間和獨立IP

提示及警告訊息,3hr

作者設計了當系統遇到scaling problem所呈現的頁面,並提醒網友可以收藏網站為書籤,addthis.com提供整合各家社交書籤的按鈕。另外還有一些提醒訊息。

網站統計資料及搜尋優化,1hr

10分鐘就可以裝好Google Analytics,作者另外裝了getclicky.com的統計工具。
搜尋優化的部份,作者參考how to provide different meta tags in railssome discussion about whether to use www. or not,並將www的網域名稱省略,導向http://wigitize.com的短域名。

選擇網域名稱也對SEO很重要,若有人在Google查詢時拼錯成widgetize,只有105個結果;而且Wigitize.com是動詞!

未來改進的空間:
  • 未來增加「last wigitized sites」 and 「most wigitized sites」,這些頁面會被搜尋爬蟲爬到,並提供外部連結,應對搜尋優化有幫助
  • 增加sitemap.xml
  • 在Widget上增加病毒式傳播的元素,例如FeedBurner的按鈕會出現在有名的部落格上。

####

PS2. 網友建議其實用Yahoo!Pipe也可以玩出類似效果