2010年6月26日 星期六

如何利用噗浪(Plurk)微網誌來進行網路行銷-行銷策略與實務運用的講解


轉載自 http://www.gururu.tw/Plurk_marketing

[Blog] 加密文章?

不過我應該不會用到這個功能啦~哈哈,都寫部落格了,為什麼還要在部落格中加密文張呢?那麼不想給人看到,那就別放唄!不過或許也有一些情況是需要用到的啦~看看囉!

有興趣的夥伴們可以上這個網站去看看:
JavaScript Encryption and Decryption 2.0
裡面雖然是全英文,不過應該是不會太難啦~

再開始加密文章之前,必須先修改部落格Tempelate的HTML Code,這只要打開「版面配置」裡面的「修改HTML」,然後按照指示第二部分The JavaScript decryption code去做就可以了。

接下來就可以回到一開始的網頁中,開始加密自己的文章。

第一欄Key
我們可以填上自己想要的密碼,也可以讓這個程式自己隨機選擇,但不管怎麼樣,我們都一定要記得密碼是什麼!

第二欄Plain Text
欲加密的文字內容就放在這一欄當中,一般文字沒有問題,如果想要加密圖片跟超連結也可以,這部分我想大家就先在Blogger中先編輯好我們的文章,然後再加想加密的部份貼到第二欄當中,應該就可以了!貼完之後,按下底下"Encrypt"(加密)的按鈕。

第三欄Cipher Text
就會出現一串看不懂的文字,我想這部分可以不用管它。

第四欄Html Code
也會出現我們想要的程式碼,只要把這個程式碼Copy Paste到我們的文章中就行了(在修改Html的模式中)

但是還是要在樣板內加入javascript來連結編碼 - 以blogger為例

版面配置 > 修改HTML(如果怕做錯可以先點選"下載完整範本來備份")
接下來再head前加入下圖這串
<script src='http://kensheep.googlepages.com/blogjscrypt.js' type='text/javascript'/>

【孫傳雄 撰文】Facebook 行銷學 (二):facebook 粉絲專頁建立教學與密技大公開!


轉載自 http://www.gururu.tw/%E7%B2%89%E7%B5%B2%E5%B0%88%E9%A0%81%E6%87%B6%E4%BA%BA%E5%8C%85.html

經由此篇文章讓我認識了 孫傳雄 大師,更讓我從不認識Facebook到漸漸對他有點了解,在此也感謝孫大師(老師)

【孫傳雄 撰文】Facebook 行銷學 (一):談粉絲專頁與個人檔案頁面、社團的差異


本文轉載自 http://www.gururu.tw/facebook%E8%A1%8C%E9%8A%B7%E5%AD%B8.html

經由此篇文章讓我認識了 孫傳雄 大師,更讓我從不認識Facebook到漸漸對他有點了解,在此也感謝孫大師(老師)

Facebook行銷:新的粉絲專頁政策限制與案例分享

在11月初的時候,Facebook對於粉絲專頁,發出新的管理指南公告,其中較為重要的原則有兩項:

所有在Facebook進行的推廣活動,必需被置放在1)某一應用程式的畫布裡(也就是頁首、右側與頁尾以外的部份) 或2)在粉絲專頁的應用程式欄中,而且在活動開始之前必需獲得Facebook的審核。

這對於專門在替別人製作粉絲專頁應用程式的公司,無疑是一種新的好消息。另外,這個條款引起所有人注目的,就是將對利用粉絲專頁來推廣商品的公司以及廣告商,進行所謂的『審核』;而一般認為,Facebook將透過此一審核機制,對於這些廠商進行收費。

我們先來看看哪些是清楚不能被執行的行銷活動:

“狀態更新”串聯比賽,也就是像某種我們熟悉『MSN狀態串聯』。

“上傳相片” 比賽。(內容就像是要求使用者上傳照片,然後把自己跟商品(或粉絲專頁)做Tag,此舉可以讓朋友們都看到這個狀態。

任何要求使用者成為粉絲、發表評論、或回應在即時動態的活動。(這樣做,將透過使用者為品牌不斷的曝光)
那麼時限呢?就如同盧廣仲的新歌 — 這個期限為『7天』,所有透過第3方應用程式舉辦的比賽或活動,必需在活動開始的7天前被Facebook審核通過,這將對於不斷嘗試新模式的眾家粉絲專頁產生衝擊。而面對Facebook這樣的挑戰,廣告代理商跟行銷人員們又是怎麼樣在鑽洞面對這些事呢?透過Inside Facebook,我們找到IKEA以及吉列牌刮鬍刀的行銷案例:

IKEA

IKEA在瑞典玩的活動是,第一個在活動照片裡家俱標上(tag)自己名字的使用者,將可以贏得該家俱。Facebook的發言人說明該活動已經違反此一新政策,將被下架。(可是我剛看活動照片還在:P)



吉列牌刮鬍刀

吉列在美國利用粉絲專頁來招募自己的活動會員或要求成為粉絲專頁的會員,這些顯然違反了新政策,不過Facebook的發言人則對於這個活動不願表達評論,這讓許多的行銷人員感到困擾,因為他們一時之間無從適應起。

看起來,Facebook在一邊努力籌措財源的同時,也一邊努力的希望在合理的範圍內,控制目前粉絲專頁上進行的各式活動。而這也將考驗著台灣Facebook行銷人員在重重限制下,進行更多病毒式行銷的能力。

轉自 http://www.inside.com.tw/12/03/facebook%e8%a1%8c%e9%8a%b7%ef%bc%9a%e6%96%b0%e7%9a%84%e7%b2%89%e7%b5%b2%e5%b0%88%e9%a0%81%e6%94%bf%e7%ad%96%e9%99%90%e5%88%b6%e8%88%87%e6%a1%88%e4%be%8b%e5%88%86%e4%ba%ab
作者 fOx,從6歲開始玩Apple II錄音帶遊戲,自以為是輕骨灰級遊戲玩家。曾經跟一群人玩CS玩到沒天沒夜。8年來,待過遊戲公司、入口網站、韓國網路公司。

Facebook App經濟的觀察心得

Facebook在2009年的下半年對台灣的網際網路產業造成了一些衝擊,許多人可能從未料到Facebook在台灣的使用者人數會大幅攀升(或是有料到但卻沒抓住這波機會),而且是以非常驚人的速度超越許多網站累積多年的會員人數,更了不起的是帶起這波風潮的還是簡簡單單的一個偷菜遊戲(或是開餐廳、養寵物、照顧水族箱),也因此目前帶起了一波遊戲開發的風潮,想必接下來會陸續有更多的軟體開發商來搶搭這波「App經濟」的列車。

就筆者上次參加「Facebook Developer Garage Taipei」的心得,簡要分享如下:

在台灣,App經濟的供給面還有很大發展空間,包括專業的開發商、第三方開發商、金流提供商、廣告平台提供商,然而台灣市場太小這點,是否應該放眼華文市場,並且將既有的Facebook發展模式引進其他大型網站,例如大陸目前火紅的人人網、開心網。(尤其人人網具有幾乎與Facebook Platform相同的開放平台,這對於有意進入人人網的團隊是個不錯的機會)

在台灣,目前的App獲利來源,以當天有上台發表的公司來說,主要可分成自有產品的廣告獲利、虛擬貨幣,以及專案開發等。自有產品的獲利,對於台灣市場來說,營收可能不足以養活一整個團隊,初期可能是作為成功案例或是試水溫之用的成份居多,當天印象比較深刻的是GameLet所推出的遊戲,畫面以及劇情的設計可能還在比較粗糙的階段,但遊戲本身的程式、基礎架構顯然已經完成,接下來只要搭配好的遊戲企劃與設計,便可以開始快速產出各種遊戲,這是目前筆者比較看好的;而目前比較活躍的公司同時也提出許多成功案例的公司主要以專案開發為主(或說社群整合行銷),都是以網路行銷的專業服務為切入角度,協助其他公司進行社群行銷,個人認為儘管這是個模式,但其隱憂在於社群行銷的進入門檻不高,傳統的行銷公司一旦加入戰局,市場會開始高度競爭,專案的費用勢必會大不如前,長久來說,筆者認為必須要有獨到的眼光與好的經營、行銷技巧,才能在這塊保持高競爭力。

看熱鬧的人很多,不過Facebook還能在台灣紅多久,是個問題。筆者與身邊幾位持續在觀察台灣網際網路生態的朋友閒聊,大家「感覺」上,總覺得Facebook大概快則半年、滿則一兩年,顯然會降溫的(既然是憑感覺,就不提出數據來佐證,歡迎來信討論),如搶搭這班車鞏固市場地位或是創造營收,是個非常值得探討的議題;假如熱度一過,是否會造成泡沫化或是市場萎縮,值得持續關注。筆者最關心,也認為是個關鍵議題的疑問是:台灣的使用者是否有機會從遊戲,轉而使用、依賴其他社群工具、社群功能,例如相簿(相簿的標記、留言功能)、群組、聊天機制或是將好友名單分類,作為主要的社交工具。倘若開發團隊或網路創業家所觀望的市場在於半年後,筆者認為,搶進各種實用性的Applications/Utilities開發、卡位,是個不錯的方向。

Facebook對於品牌、產品的行銷來說,是眾多行銷管道的其中一部分;而對產品開發來說,Facebook具有龐大的使用者數以及可善加利用的社群機制。倘若您也有興趣進行Facebook的應用程式開發、行銷,請與原文作者分享,原文連結如下。:)

在此也感謝原文出處網站,讓我有機會研究Facebook這個品牌

轉自 http://www.inside.com.tw/12/26/facebook-app%e7%b6%93%e6%bf%9f%e7%9a%84%e8%a7%80%e5%af%9f%e5%bf%83%e5%be%97
作者 Lawrence 網路創業者、部落客、碩士研究生

關於Facebook未確認的改版示意圖

<本文節譯自Om Malik的部落格文章,主圖來源亦同>

原文作者Om Malik在上週取得兩張關於Facebook改版的示意圖,並認為Facebook將試圖回歸根本,排除一些在即時彙整裡的泛濫訊息(ex.遊戲資訊等)。

主要的改變如下:

導覽列更為清楚,而更棒的是,以前令人混淆的重覆個人檔案連結不再存在。(指的是ID跟個人檔案的兩個連結,實際是一樣的連結,但卻重覆出現在最頂端)

搜尋框現在被移到Facebook的Logo旁,亦代表Facebook對於搜尋的重視程度;搜尋品牌、活動、公司或名人將更被強調。

將設定跟登入塞到帳號(Account)這個下拉式選單裡頭,試圖讓整個使用者經驗更為清楚。

邊欄的設計可以看得出來很多Facebook Lite的身影,如即時動態、朋友、活動及相簿的顯示方式。
書籤的設計讓使用者得以更方便的增加喜愛的應用程式、粉絲專頁以及其他連結。

Facebook的聊天室看起來應該是會被放在右下角沒錯了,但是應用程式的快選單跟通知不意外的被拿掉了。
大致看起來,跟Facebook前回洩露的設計圖差不多,實際上也一直按著Facebook所公佈的Roadmap在在走,由於Facebook得以利用大量的使用者數據分析,猜測這些改變都已經有考量過使用者使用的頻繁程度。

您覺得新的Facebook頁面看起來如何呢?


轉自 http://www.inside.com.tw/12/29/%e9%97%9c%e6%96%bcfacebook%e6%9c%aa%e7%a2%ba%e8%aa%8d%e7%9a%84%e6%94%b9%e7%89%88%e7%a4%ba%e6%84%8f%e5%9c%96
作者 fOx,從6歲開始玩Apple II錄音帶遊戲,自以為是輕骨灰級遊戲玩家。曾經跟一群人玩CS玩到沒天沒夜。8年來,待過遊戲公司、入口網站、韓國網路公司。

Facebook介面小改進:增加『轉貼自』顯示,讓粉絲觀注的專頁或者應用程式內容更為注目

Facebook在最近,針對粉絲專頁以及應用程式的內容,推出了『轉貼自』,也就是標明出處的功能,讓使用者在轉貼他們覺得有趣的內容時,還可以順便宣傳這些內容是在哪裡看到的;據聞這個功能想法可能來自於Twitter的Retweet功能,讓使用者可以看到原始出處的類似概念。

改良後,標示出處,將可以更鼓勵那些被轉貼的人或者粉絲專頁,原始出處的作者有被觀注的感覺,而粉絲專頁則可以透過這樣的方式獲得更多的流量。

將鼓勵粉絲專頁的擁有者去發掘更多有趣的網站或連結,粉絲更願意轉貼的同時,他們的粉絲專頁就會獲得更多的曝光,藉由這樣的系統生態,也許在喜好者不斷的轉貼之下,就可以達到某種病毒式行銷的效果,而也會為Facebook分享文帶來更多趣味。

不過要注意的是,即便您是第一個轉貼的人,名字只會保留一次,您的朋友A轉貼了您的文,而朋友B看到了A的文,再進而轉貼,出處就會變成A,而不是您唷!

轉自 http://www.inside.com.tw/01/19/facebook%e4%bb%8b%e9%9d%a2%e5%b0%8f%e6%94%b9%e9%80%b2%ef%bc%9a%e5%a2%9e%e5%8a%a0%e3%80%8e%e8%bd%89%e8%b2%bc%e8%87%aa%e3%80%8f%e9%a1%af%e7%a4%ba%ef%bc%8c%e8%ae%93%e7%b2%89%e7%b5%b2%e8%a7%80%e6%b3%a8
作者 fOx,從6歲開始玩Apple II錄音帶遊戲,自以為是輕骨灰級遊戲玩家。曾經跟一群人玩CS玩到沒天沒夜。8年來,待過遊戲公司、入口網站、韓國網路公司。

一般企業應該注意的10個社群媒體指標


由於幾個老師的推波助欄(咳),使得所謂的社群行銷成為一種顯學,但進行社群行銷到底除了粉絲數、好友數之外,還有什麼是對的指標呢?投資報酬率(以下簡稱ROI)又是怎樣的評量狀況呢?以下是日前Social Times為讀者提出的10個重要指標以及相關討論,這些對於許多網路人士來說是家常便飯的名詞,可能對許多較不熟悉這領域的朋友會有些幫助。

針對2009年相關的研究,針對世界各地的從業人員,詢問他們如何針對社群媒體的活動進行ROI評量,有84%的從業人員表示他們並不進行任何的評量,聽起來的確是個令人覺得訝異的數字,不過事實也許真的如此。

根據另外一份調查結果,得出最常被用來估算ROI的方式,依序是:

訪客數以及來源流量
網絡的規模大小 (跟隨者、粉絲、會員)
關於品牌或產品的評論數
這幾個指標都是明瞭易懂社群媒體指標,但是有沒有其他更值得監控的指標,讓公司得分析然後改善社群行銷(SMM, Social Media Marketing) 的力道呢?這裡再提供10種以作參考:

社群媒體導入的流量(Social media leads) ,將網站流量來源依不同的社群媒體區分出來,並針對最多的幾個來源進行紀錄,如果您的社群媒體成員送出參考連結(如轉噗、分享),把這也視為指標之一。以台灣的狀況來說,監控Facebook、Plurk以及主流的部落格,大致就可以達成這個任務。

停留時間(Engagement duration),對於某些公司來說,停留時間會比翻頁數更重要的多。舉例來說,如果你有一個Facebook應用程式,使用者花多少時間在使用?每個使用者的使用時間是否不斷成長?如果人們從社群媒體造訪公司官網,他們花多少時間停留,又是看了哪些頁面?

退回率(Bounce rate),人們從社群媒體跑進來,卻快速離開呢?也許您引入的頁面需要改善,也許是他們找不到要的資訊,又或者是根本不相關的內容。

會員增長速度以及活躍的網絡規模(Membership increase and active network size),這指的是您公司在社群網站上的狀況(ex.Twitter, Plurk, Facebook);您的會員、跟隨者、粉絲是否有成長,而他們與您內容進行互動狀況為何?

活躍比例(Activity ratio) 您公司的整體社群網絡活躍度為何?活躍會員與總會員數的比例為何?總是會有許多社交網路上的會員是沒什麼互動性的,但是如果您開始進行一連串的活動,想要增加互動,這部份的資料是需要被考慮進去的。活躍度可以藉由許多方法評量,包含社群應用程式的使用量等。

轉換率 (Conversions) ,您一定很想把社群網站上的會員轉換成付費會員、或者是銷售(直接或者透過分潤)、Facebook應用程式使用量或任何您想要直接或間接轉化為收入的漏斗型態。(例如,用戶固定每週接收您的電子報,您就有機會將電子報裡的版位轉化成廣告收入),記得測量各種的轉換率,並時常的紀錄他們。

在社群媒體裡品牌被提及次數 (Brand mentions in social media),當您擁有極度活躍的社群網絡,會員們都在討論您公司的品牌;記得不斷的紀錄以及追蹤正反評價與數量。

忠誠度 (Loyalty) ,是否社群上的會員不斷造訪同一網絡,分享內容與連結,提及並宣揚您的品牌?有多少會員會再往外分享?多久會分享?

擴散性 (Virality) ,社群會員可能會用Twiter Tweets 、Plurk轉噗或者是Facebook個人狀態分享關於您公司的資訊,但這個是否是透過他們自己網絡擴散的?他們多久後會再往外擴散?朋友們間的擴散狀況如何?(不過我正在思考這個要怎麼追蹤…hmm)

部落格互動 (Blog interaction) ,這其實是好幾個指標的融合,部落格是社群網站行銷的一塊,不過這指的是您要先把評論機制開起來,並與讀者們透過回應互動才是,如果您這樣做的話,記得在評論裡、或是文章正文裡、或是Twitter、Plurk裡(透過部落格插件的方式)不斷的鼓勵使用者利用這樣的機制,如果您的部落格內容適合書籤或投票網站(Digg、funP等),記得把推文按鈕也裝進部落格,並追蹤這些網站導引過來的狀況。

您可以從上面挑選幾個適合自己使用的指標開始追蹤並分析,當然,有一些並不是那麼輕易的可以追蹤,甚至可能需要一些專業的口碑管理工具才行;除此之外,也記得為這些指標設下一些檢核點以及目標,以利後續ROI的評估。近來流行利用Facebook應用程式進行的行銷,除了觀察使用量外,也別忘了看看最終的轉換結果。

轉自 http://www.inside.com.tw/03/10/%e4%b8%80%e8%88%ac%e4%bc%81%e6%a5%ad%e6%87%89%e8%a9%b2%e6%b3%a8%e6%84%8f%e7%9a%8410%e5%80%8b%e7%a4%be%e7%be%a4%e5%aa%92%e9%ab%94%e6%8c%87%e6%a8%99%e4%b8%8b
作者 fOx,從6歲開始玩Apple II錄音帶遊戲,自以為是輕骨灰級遊戲玩家。曾經跟一群人玩CS玩到沒天沒夜。8年來,待過遊戲公司、入口網站、韓國網路公司。

Facebook新政策變化預告 -> “加入粉絲”概念將改為”讚好”

根據美聯社三十號發布的新聞資料顯示,Facebook將會把"加入粉絲團"這個概念與字眼改為另一個已廣為熟悉的字眼"讚好"。也就是,在不久的將來,我們就不能按下"加入粉絲團"按鈕成為某某品牌或某某明星在Facebook粉絲專頁上的粉絲了。

這則新聞看似奇怪,因為根據Facebook官方發布的統計資料顯示,平均一個人一個月會加入四個新的粉絲團,成為他們的粉絲。這樣的好成績為什麼要改變做法?

細究新聞內容後可知,由於"讚好"這件事情已被使用者廣泛接受,Facebook發現使用者"讚好"的次數幾乎是按下"加入粉絲團"按鈕的兩倍。加上"讚好"這件事情已能正面表達出品牌認同度,但宣稱我是xxx的粉絲多了那麼點負擔,且有宣示意味。因此Facebook打算透過"字眼"的改變,讓使用者更容易表達對品牌名人的認同度,更願意加入粉絲專頁。在使用者的專頁上,對於"讚好"過的專頁還是可以會列在該使用者的profile上面,儘管字眼改變,但結果還是與原來相同。

估計這樣的改變,可讓使用者更願意去對品牌專頁"讚好"

轉自 http://www.inside.com.tw/04/01/facebook_fan_page_policy
作者 陶韻智,待過IBM與NHN

facebook粉絲值多少?


vitrue是一家專門提供社群管理平台的技術公司,協助品牌公司在Facebook或Twitter這類的平台上進行行銷,打造品牌。

他的客戶很多大咖,隨便講都會聽過,隨便列個幾個- Ford汽車, AT&T, P&G, BestBuy, Fridays餐廳…等,不勝枚舉。從他的客戶名單看起來,絕對是個不可忽視的社群行銷公司。

到vitrue的官網上,也可看到另一個驚人的數字。那就是,截至目前為止,vitrue的客戶們透過vrrtue的平台,已經服務了超過四千萬的粉絲,可說是在社群行銷上相當有經驗的一家公司,而其必然對實際的粉絲操作結果有很solid的數據與實作基礎。

vitrue公司根據他對大小品牌操作的經驗,將所有數據統計分析後,算出了每位粉絲每個月平均產生的impression,加上一個五美金的CPM來計算,得到了這樣的一個結論 – 擁有一百萬粉絲數的粉絲專頁,轉換成媒體的廣告價值相當於一年美金三百六十萬元。若以StarBucks六百五十萬的粉絲數來看,建立了這樣的粉絲基礎,等同於每年產生了美金兩千三百四十萬的媒體價值。

在抓行銷預算的時候,雖然以上這個數字大體反應的是美國市場,還是值得我們這邊的行銷人在Facebook進行粉絲專頁建立與互動活動中作為參考。

進一步考慮ROI時,則可將粉絲頁面在“建立重複運用之媒體”以外的價值列入考量,如“客戶關係管理”這塊的價值,或是可用來作為新品促銷宣傳的管道。

這樣看來,擁有自己品牌的粉絲專頁是不是賺很大?

你可幫忙算算看,7-eleven的粉絲專頁上有三十三萬粉絲。建立後可省下7-eleven一年多少的媒體採購預算?

轉自 http://www.inside.com.tw/04/13/facebook_fan_value
作者 陶韻智,待過IBM與NHN

快速上升的 “為什麼只有「讚」可以點,沒有「幹」可以點?”

這個粉絲團的標題下的不太雅,但反應了一些心聲,粉絲數在過去十二個小時暴增了一倍,目前已經吸引了超過兩萬網友的喜愛。

更厲害的事情是….到目前為止,這個粉絲頁上的塗鴉牆竟然只有一行,沒有其他的塗鴉!!

可以想像嗎?

那行塗鴉就是….

“”為什麼只有「讚」可以點,沒 有「幹」可以點?”

這句話在塗鴉牆上已經吸引了1102人讚好,且有268則留言。

轉自 http://www.inside.com.tw/04/28/only_like_no_fuck
作者 陶韻智,待過IBM與NHN

Facebook推出更強大的粉絲專頁流量分析工具

Facebook上的使用者總數即將到達5億個使用者,對於許多粉絲專頁的經營者來說,究竟這麼多的使用者,有多少人來逛過自己的粉絲專頁、有多少人成為粉絲、每一則訊息又被多少人看過、分享過,許多關鍵數據都是追蹤績效的過程中必須要有的參考數據。

過去Facebook提供了頗為陽春的參考數據,若你是粉絲專頁的管理者,可以看到以下圖片:


Facebook會直接提供粉絲專頁塗鴉牆的Post Quality以及互動次數的統計,點選進去之後又可以看到進一步的資訊:



你的粉絲專頁的粉絲組成(國家、性別、年齡層)、每天互動的情形,有進行互動的粉絲們又是如何組成,以及每天新增的粉絲、退出的粉絲,都是可以追蹤的。

如今Facebook推出Insights Dashboard工具,讓粉絲專頁的經營者們可以了解更多關於粉絲專頁的統計數據。或許有一天,Facebook Insights也可以有如Google Analytics一樣,提供非常詳盡、完整的流量分析工具。


目前Facebook Insights Dashboard可以針對:

有使用Facebook社群工具的網站
Facebook應用程式
Facebook粉絲專頁,包括透過Open Graph所建立的粉絲專頁
三種不同的資料來源進行分析。可以呈現的數據比起原本的粉絲專頁,真的多了不少:

活躍使用者(寫過塗鴉牆、回應過留言、給過「讚」,以及有造訪頁面但沒有成為粉絲的使用者)
External Referrers:除了Facebook以外,有哪些外部連結、網站為我們吸引粉絲的造訪,現在也可以追蹤了
Tab views:究竟做了那麼多漂亮的頁籤,有沒有人在看?現在我們可以得知個別頁籤被點選的比例


Media Consumptions:究竟每天放那麼多照片、影片,有沒有人在看?現在也可以統計了,包括有多少使用者播放影片、多少人看過照片


每天的Share數、Like數、回應數都可以統計之外,每一則訊息的曝光次數也可個別統計(不過筆者目前看到的畫面還沒有出現這部份的數據,目前是參考官方所提供的畫面)
有了更多的數據後,對於粉絲專頁的經營者來說至少有兩個優點:

更清楚地掌握粉絲專頁的經營績效
協助經營者調整經營方式(例如影片都沒人看?是影片太爛還是文案不好?還是乾脆別放了?)
未來持續會有進階的功能出現,包括開發者也可透過程式、API取得資料後做更進一步的分析,Facebook平台真是越來越有趣了!

轉自 http://www.inside.com.tw/06/11/facebook-insights-dashboard
作者 Lawrence 網路創業者、部落客、碩士研究生

四個讓你的Facebook廣告更吸引人的小技巧

現在Facebook已經成為最大網路平台焦點,你會在上頭下廣告,運用facebook的精準行銷平台找到你的客戶,但怎樣才能達到最佳效果呢?

底下根據communications conversations寫的這篇文章提出的四個下廣告小技巧介紹,希望能給讀者未來下廣告時的文案發想帶來一些幫助:

1. 問問題!

與人互動的好方法之一是問問題,下facebook廣告自然也不例外。透過問題的引導,或戲謔方式引導用戶來到你的粉絲專業或網站去。

2. 標題不要用重複的字

標題只能放二十五個字,想辦法用流行語、縮寫,或英文拼音、看得懂的注音都成,在有限的標題裡把最多的意思塞進去吧。

3. 強調效果/好處

寫廣告文案最重聽眾感受到的好處。如果對粉絲專頁讚了一下,網友有甚麼好處?你的產品服務解決了消費者甚麼問題?從這些角度出發來引起共鳴。

4. 精準族群訴求

facebook廣告平台最大的差異是你能對使用者族群做相當精準的廣告投放,例如針對24~35歲的女性。因此,例如有三個族群想target,不要用一個廣告解決,就用三個適合該族群的廣告文案來target吧!必有較佳回收效果!

以上原作者簡單分享四個不算獨門創見,但也算有條理的想法。若您也有好的facebook廣告文案技巧想分享,敬請至原作者部落格留言喔!

轉自 http://www.inside.com.tw/06/15/4tips_facebook_ads
作者 陶韻智

十二個成功Facebook案例教你做社群行銷

想做好社群行銷,最好的方法就是跟大師學習,文中精挑細選了十二個案例或說法,告訴你不為人知的行銷操作秘訣,值得參考,茲整理閱後心得如下:

第一:跟粉絲互動,請拋出"問題"
只要你的塗鴉牆上有越多的粉絲加入互動,頻率越高,這則訊息就會出現在粉絲個人頁feed的越上面的位置,越容易被注意,而正向循環。而讓粉絲加入互動的最簡單方法,就是拋出問題。拋出問題後,你可以自己先試著回答,炒熱氣氛,以讓人能跟上。

這是一件容易且重要的事情,問題也宜短,能簡單回答的好。有爭議,能激起討論的也好,大家可以試著操作看看。

如果我們看一下7-eleven的塗鴉牆,就是個好例子。

第二:先聽。談論粉絲想聽的話題
"先聽,再銷售"是老生常談了。先聽聽看粉絲們想聽的是甚麼話題,然後就順著毛摸,跟他談下去,引起注意、喜歡了,再賣給他葫蘆裡的藥,接受度自然就高了。

現在問題是,"聽"的方法是甚麼?對粉絲想聽的話題保持敏銳度的好方法,以國內來說就是多上plurk,或ptt查詢現在夯的話題是甚麼,或者用google 的blog search看最新熱門的部落格文章在談什麼。你談了自然會有共鳴。這些免費的工具都在那裏,記得用來多"聽"。

第三:使用影片,公司犯錯,也能轉換成黃金
即使是服務出了差錯,也可能是很好的關係建立機會。

最佳的案例就是達美樂披薩,影片在這裡,網路上也有專文在談,運用負面消息成功行銷,有為者亦若是。

第四:善用YouTube關鍵字
Youtube在美國與在台灣都享有很高的使用度與搜尋量。大家一般都使用Google 或Yahoo關鍵字分析工具來協助發想關鍵字。本文中,作者建議大家採用Youtube關鍵字分析工具,可能更容易掌握使用者都在查甚麼樣的關鍵字詞。

第五:在Facebook與Twitter上推廣簡訊行銷
Facebook上有一億用戶透過手機來使用,因此如果你要做簡訊行銷,記得運用Facebook這樣的平台推廣活動,可得到很好效果。

第六:運用工具秘密地查看甚麼樣的消費者想買你的東西
品牌商或企業主常會到有放自己產品的商家去,扮演一般的消費者,看真正的消費者對自家產品的反應。

在網路上,可以使用 plurk或twitter,搜尋產品的關鍵字,你可能會發現哪個名人正在談你的產品。

原作者在Twitter上搜尋Wish pepsi,意外發現BestBuy社群行銷經理是Pepsi的愛好者。

第七:提供聽眾需要的內容
產品銷售建立顧客群後,環繞在產品主題通常還會建立起一到兩個周邊社群。而這些社群的聽眾可能不僅只想聽產品資訊,他想知道更多其他的專頁內容。例如,Graco這家做嬰兒車與幼兒用品的公司,僅偶爾發布產品資訊,而花大部分的時間談論育兒的一般性話題,例如發布"怎麼讓保母帶小孩"這樣聽眾需要的內容。

第八:把部落格內容同步推送到數個大站
很多人都會建立了部落格,發布了內容就覺得做完了,而喪失了增加流量的機會。其實,只要透過簡單的方法,把已經產生的部落格內容,同步到幾個大站上,如Facebook, plurk, 無名上面,就有機會提升流量數倍。

第九:讓對話與互動自然發生
社群媒體上的操作基本上還是follow一般的社交元素,若談論話題時讓人感受到你在"銷售",你就失敗了。應盡量去想有趣的互動方法,讓對話自然發生。

第十:擬定社群行銷上的主元素
作社群行銷的時候,還是得擬定出目前最急迫的行銷主軸在哪?是提高知名度、還是增加銷售量,還是甚麼?確立了大方向,在訊息的操作與互動上所採的戰略才會清晰。

所有目標都想一次到位的大雜燴,往往會讓聽眾接收到的訊息紊亂,無法達到所想的效果。

第十一:重複發tweets
看來這是老外的智慧:他認為只要有人點某個話題,這個話題就可以重複發,發到沒有增加點擊率為止。

這個值得思考一下。

第十二:沒有一擊可中的做法
社群媒體行銷操作的成功要素仰賴了你的顧客類型、產品、公司、網路與環境。必須要熟知自己的品牌、深入了解顧客、以及適用的社群媒體,上面的工具及溝通法策略。其中只有工具這件事情相對來講容易預測。

轉自 http://www.inside.com.tw/04/06/12tips
作者 陶韻智

給行銷者:擬定社群行銷策略之事前檢查表

身為一個社群網路行銷專業人員,隨著社群網站的興起與普及,可用的工具平台多了,做起網路行銷活動較以前容易太多了。也因為工具平台太多,行銷者擬定策略時,也常常顧此失彼,見樹不見林,採用了A平台,卻乎略了B工具,進行了C活動,卻忘了透過D及時將結果播送出來。

本文以條列的方式列出社群行銷時應注意的做法或平台項目。在進行一項社群行銷案策略規劃時,不仿參考本列表,看看是否有所遺漏:

部落格:進行一個社群活動的最佳起點與終點就是個部落格。即便想自行設計一個活動網站,也可由採用部落格平台的方式來進行。部落格的採用方法有二:一為採用現有第三方平台,如無名,yam天空部落或Pixnet的部落格。另外就是可以使用WordPress或Moveable Type來自建部落格網站。強烈建議在進行行銷策略時從部落格開始。

MicroBlog:在台灣,最流行的這類平台是Plurk,在歐美是Twitter,在大陸則是新浪微博。很適合作為品牌或企業對顧客的即時溝通管道。唯一的缺點是必須時常更新,優點則是能累積用戶。活動結束後,相關投資具累積性。

線上影片:成功的影片易於打動人心,人們對影片的接受度也是很高的,行銷活動中應盡量考慮埋入這個元素。如果自建影音平台,往往無法負荷大量流量需求。若影片下載速度過慢,往往也會打壞一個行銷活動的效果。最佳的使用平台就是Youtube,Vimeo或無名的影片。
圖片分享:社群行銷時亦可採取鼓勵圖片分享的元素,針對主題進行串聯。適合的平台是無名相簿,及其他主要入口網站的相簿服務。Flickr當然也是個好選擇。
標準社群網站:台灣最大的社群網路是Facebook。其他主題社群,如地圖日記與www.minik.tw也值得注意。由於社群元素的豐富性,很適合在上頭建立粉絲專頁,開發小遊戲等,與精準的顧客群互動溝通,建立知名度。

討論區:雖然流量趨勢往下,但討論區還是在台灣占有一席之地。各類主題討論區仍須參與在你的行銷策略中。如3C的Mobile01, 育兒的Babyhome,線上遊戲的巴哈,問與答的Yahoo知識家或是歷久不衰的PTT。在這些主題討論區中與聽眾或意見領袖互動,都已證實是有行銷回報的。
評論網站:網友參考的重要指標網站形態之一。這在台灣隱身在許多中小型網站中,如討論餐廳美食的愛評網,介紹好康的好康挖挖哇。“理論上”,這裡的評論對你的產品或服務很重要,好評負評可能會大大影響行銷結果。

書籤網站:網路書籤能幫忙將你的網址分享出去,並加強SEO的結果。常見的書簽網站如Yahoo書籤,聯合新聞網書籤,FunP及HemiDemi。

議題監測:透過網路進行即時議題監測,可有效監控行銷成效,品牌認知,並對網路上出現的野火及時撲滅。國內目前這部分機制還有待有心人加強之。目前可透過Google搜尋,Google Alert與Google Trend自行拼湊出需要的結果。另可用如i-Buzz網路口碑或PlurkTop來協助話題追蹤。

以上針對需要考量的平台作個簡單的整理,方便大家在作行銷規劃時,能快速地檢查是否已涵蓋了各個面向,敬請指教。

轉自 http://www.inside.com.tw/04/09/checklist_for_social_marketing
作者 陶韻智

2010年6月20日 星期日

GridView如何抓取已經隱藏的欄位值

有很多時候一些欄位不想給使用者看到,但是卻必須利用那些欄位的值作一些判斷,試過了Row.Cells和FindControl都找不到它該怎麼辦勒...以下介紹兩種方式來讓您找到隱藏的欄位值。

此篇由demo分享,因我同事之前也有遇到相同問題,故記錄下來

第一種方式算是比較小技巧的我們再GridView的RowCreated事件中撰寫以下code
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)     
{
if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Header)
e.Row.Cells[0].Visible = false;
}

然後在RowDataBound事件中,一樣可以利用Row.Cells的方式找到它
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)     
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string aa = e.Row.Cells[0].Text;
}
}

第二種方式看起來就比較有點水準@@
我們是直接使用ui介面把某個欄位隱藏起來(Visible = False),然後直接指定DataItem的方式去找到它,我們需要在RowDataBound事件撰寫以下code
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)     
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Boolean draft = Convert.ToBoolean(DataBinder.Eval(e.Row.DataItem, "draft"));
if (draft == true)
e.Row.ForeColor = System.Drawing.Color.Green;
}
}

以上的code我是把draftx欄位轉換成布林,然後去判斷是真是假再去對該ROW的字色作變換
轉載自 http://demo.tc/Post/88

如何在GridView中加上CheckBox的全選功能

在一些應用上,我們會利用CheckBox來讓使用者勾選需要改變的資料,一次列出10條還好,如果一次列出50條,而使用者都要選取的話,活生生要按50次實在是不貼心的設計,所以此文介紹如何在GridView中加上CheckBox的全選功能。

首先我們當然是要先做出一個有資料的GridView

GridView做好後,我們在後方新增一個樣板欄位(TemplateField)

請在新增的樣板欄位中的HeaderTemplate加入一個CheckBox作為全選用,然後在ItemTemplate也加入一個CheckBox,如下方







接者請在該頁面的最底部加上以下的Java Script
 
如果您的頁面有套用MasterPage請將上方JS放在標籤上面
轉自 http://demo.tc/Post/98 感謝demo分享

預設(今天、明天、昨天)時間範圍觀念

如果你有作過類似報表的東西,可能就會使用到今天、昨天、前天、本月、上月這些預設的按鈕,讓使用者按下以後可以直接搜尋時間範圍的值,所以本篇就說明一下邏輯,以後你就無敵啦。
//今天這最好寫啦預設就有
DateTime.UtcNow.AddHours(8).ToString("yyyy/MM/dd");
//昨天,就是今天的日減一
DateTime.UtcNow.AddHours(8).AddDays(-1).ToString("yyyy/MM/dd");


//明天,就是今天的日加一
DateTime.UtcNow.AddHours(8).AddDays(+1).ToString("yyyy/MM/dd");
//前天,就是今天減二囉
DateTime.UtcNow.AddHours(8).AddDays(-2).ToString("yyyy/MM/dd");

//本週(想知道本週的第一天就先抓到今天是星期幾,然後就可以知道怎麼抓到星期日
DateTime.UtcNow.AddHours(8).AddDays(Convert.ToInt16((0 - Convert.ToInt16(DateTime.UtcNow.AddHours(8).DayOfWeek)))).ToString("yyyy/MM/dd");
//本週第一天

DateTime.UtcNow.AddHours(8).AddDays(Convert.ToInt16((6 - Convert.ToInt16(DateTime.UtcNow.AddHours(8).DayOfWeek)))).ToString("yyyy/MM/dd");
//本週最後一天

我們是利用Convert.ToInt16()的方法把DayOfWeek轉換成數字,這樣子我用0減去該數字就可以知道第一天,同理我用6減去該數字就可以知道最後一天了(一週的第一天是星期日唷)
//上週,一週7天,上週就是本週減去7天,下週也是一樣滴
DateTime.UtcNow.AddHours(8).AddDays(Convert.ToInt16((0 - Convert.ToInt16(DateTime.UtcNow.AddHours(8).DayOfWeek))) - 7).ToString("yyyy/MM/dd");

DateTime.UtcNow.AddHours(8).AddDays(Convert.ToInt16((6 - Convert.ToInt16(DateTime.UtcNow.AddHours(8).DayOfWeek))) - 7).ToString("yyyy/MM/dd");


//本月,之前的寫法就是抓到這個月份把日期改成1號,最後一天就是下個月1號再減一天,但是在c#裡面有更快的寫法
DateTime.UtcNow.AddHours(8).ToString("yyyy/MM/01");

DateTime.Parse(DateTime.UtcNow.AddHours(8).ToString("yyyy/MM/01")).AddMonths(1).AddDays(-1).ToString("yyyy/MM/dd");



//上個月,就是本月減掉一個月
DateTime.UtcNow.AddHours(8).AddMonths(-1).ToString("yyyy/MM/01");

DateTime.Parse(DateTime.UtcNow.AddHours(8).ToString("yyyy/MM/01")).AddDays(-1).ToString("yyyy/MM/dd");



//本季,一年有四季,所以一季是三個月沒錯吧,所以我們利用下方就可以抓到這是那一季,接者再抓出第一天
DateTime.UtcNow.AddHours(8).AddMonths(0 - ((DateTime.UtcNow.AddHours(8).Month - 1) % 3)).ToString("yyyy/MM/01");

DateTime.Parse(DateTime.UtcNow.AddHours(8).AddMonths(3 - ((DateTime.UtcNow.AddHours(8).Month - 1) % 3)).ToString("yyyy/MM/01")).AddDays(-1).ToString("yyyy/MM/dd");

轉自 http://demo.tc/Post/91 真的很受用,感謝demo分享

ASP.NET內抓取網址的方式一覽表(Request)

有些時候我們需要抓到網址中的某一字串來作判斷,你還在用老舊的IndexOf 與 Substring 慢慢組嗎?別鬧了.NET有提供更聰明的作法,以下就列出一張表,各位就很清楚啦。

假設我們的網址為http://demo.tc/Default3.aspx?id=1019&uu=77
 Request.ApplicationPath
//output:/

Request.PhysicalPath
//output:磁碟機代號:\父目錄\子目錄\Default3.aspx

System.IO.Path.GetDirectoryName(Request.PhysicalPath)
//output:磁碟機代號:\父目錄\子目錄

Request.PhysicalApplicationPath
//output:磁碟機代號:\父目錄\子目錄\

System.IO.Path.GetFileName(Request.PhysicalPath)
//output:Default3.aspx

Request.CurrentExecutionFilePath
//output:/Default3.aspx

Request.FilePath
//output:/Default3.aspx

Request.Path
//output:/Default3.aspx

Request.RawUrl
//output:/Default3.aspx?id=1019&uu=77

Request.Url.AbsolutePath
//output:/Default3.aspx

Request.Url.AbsoluteUri
//output:http://demo.tc/Default3.aspx?id=1019(這是上一頁的網址)

Request.Url.Scheme
//output:http

Request.Url.Host
//output:demo.tc

Request.Url.Port
//output:80

Request.Url.Authority
//output:demo.tc

Request.Url.LocalPath
//output:/Default3.aspx

Request.PathInfo
//output:

Request.Url.PathAndQuery
//output:/Default3.aspx?id=1019&uu=77

Request.Url.Query
//output:?id=1019&uu=77

Request.Url.Query[id]
//output:1019

Request.Url.Query[uu]
//output:77

Request.Url.Fragment
//output:

Request.Url.Segments[0]
//output:/

Request.Url.Segments[1]
//output:Default3.aspx

轉自http://demo.tc/Post/230

頁面上兩個TextBox輸入完按Enter觸發不同的按紐

this.TextBox1.Attributes.Add("onkeypress", "if( event.keyCode == 13 ) {" + this.ClientScript.GetPostBackEventReference(this.Button1, "") + "}");
this.TextBox2.Attributes.Add("onkeypress", "if( event.keyCode == 13 ) {" + this.ClientScript.GetPostBackEventReference(this.Button2 , "") + "}");

Me.TextBox1.Attributes.Add("onkeypress", "if( event.keyCode == 13 ) {" & Me.ClientScript.GetPostBackEventReference(Me.Button1, "") & "}")
Me.TextBox2.Attributes.Add("onkeypress", "if( event.keyCode == 13 ) {" & Me.ClientScript.GetPostBackEventReference(Me.Button2, "") & "}")

C# 擴充 DateTime 轉換顯示民國年

將西元轉換為民國年是台灣開發者經常遇到的問題,在這之前demo都是很自然的把年份-1911拿達成,但客戶要求顯示的日期需要有星期,因為減了1911年星期會相差一天,於是就乾脆直接擴充 DataTime 作一個轉換民國年的擴充方法。
        static public string ChangeTaiwanCalendar(this DateTime x, string format)
{
DateTime now = x;
TaiwanCalendar tc = new TaiwanCalendar();
Regex regex = new System.Text.RegularExpressions.Regex(@"[yY]+");
format = regex.Replace(format, tc.GetYear(x).ToString("000"));
return x.ToString(format);
}

轉自 http://demo.tc/Post/579

利用 Java Script 抓取系統時間

要在網頁上秀出 Server 的時間,如果使用 Java Script 來抓,顯示的會是 Client 的時間,可是如果一直去後端拿,那 Server 的負擔就很大了,因此 demo 想到一個「偷吃步」的方式來解決這需求。
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
DateTime d1 = new DateTime(1970, 1, 1);
DateTime d2 = DateTime.Now.ToUniversalTime();
TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);
ViewData["serverTime"]= ts.TotalMilliseconds;

利用C#來做到圖檔縮圖的方式

在我們利用asp.net的上傳將圖檔傳至server後總是會害怕使用者上傳了一個無敵大的圖檔,雖然可以限制單檔上傳大小,但是使用者不是每個都會使用繪圖軟體會縮圖,所以我們限制使用者不如來幫助使用者自動縮圖。
using System.Drawing.Imaging;
using System.Drawing;

System.Drawing.Image image = System.Drawing.Image.FromFile("圖檔的位子");
//必須使用絕對路徑
ImageFormat thisFormat = image.RawFormat;
//取得影像的格式
int fixWidth = 0;
int fixHeight = 0;
//第一種縮圖用
int maxPx = Convert.ToInt16(ConfigurationManager.AppSettings["maxWidth"]);
//宣告一個最大值,demo是把該值寫到web.config裡
if (image.Width > maxPx || image.Height > maxPx)
//如果圖片的寬大於最大值或高大於最大值就往下執行
{
if (image.Width >= image.Height)
//圖片的寬大於圖片的高
{
fixWidth = maxPx;
//設定修改後的圖寬
fixHeight = Convert.ToInt32((Convert.ToDouble(fixWidth) / Convert.ToDouble(image.Width)) * Convert.ToDouble(image.Height));
//設定修改後的圖高
}
else
{
fixHeight = maxPx;
//設定修改後的圖高
fixWidth = Convert.ToInt32((Convert.ToDouble(fixHeight) / Convert.ToDouble(image.Height)) * Convert.ToDouble(image.Width));
//設定修改後的圖寬
}

}
else
//圖片沒有超過設定值,不執行縮圖
{
fixHeight = image.Height;
fixWidth = image.Width;
}
Bitmap imageOutput = new Bitmap(image, fixWidth, fixHeight);

//輸出一個新圖(就是修改過的圖)
string fixSaveName = string.Concat("新圖的檔案名稱",".jpg");
//副檔名不應該這樣給,但因為此範例沒有讀取檔案的部份所以demo就直接給啦

imageOutput.Save(string.Concat(Server.MapPath("~/"),fixSaveName), thisFormat);
//將修改過的圖存於設定的位子
imageOutput.Dispose();
//釋放記憶體
image.Dispose();
//釋放掉圖檔

ASP.NET C# 上傳圖檔並產生縮圖

在縮圖前就先計算好維持比例的縮圖尺寸,例如 800x600 要縮成 200x200 時,實際上應該縮成 200x150 ,於是下參數就下 200x150 ,修改後的原始碼(.CS):
using System;
using System.Drawing;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class UploadPicture01 : System.Web.UI.Page
{
// 設定縮圖後的檔案存放路徑
private const string savePath = @"C:\Inetpub\wwwroot\200x200\";

// 設定暫存路徑
private const string tempPath = @"C:\Inetpub\wwwroot\temp\";

protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string tempName = tempPath + FileUpload1.FileName;
string imageName = savePath + FileUpload1.FileName;

// 儲存暫存檔
FileUpload1.SaveAs(tempName);

// System.Web.UI.WebControls 與 System.Drawing 同時擁有 Image 類別
// 所以以下程式碼明確指定要使用的是 System.Drawing.Image

System.Drawing.Image.GetThumbnailImageAbort callBack =
new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
Bitmap image = new Bitmap(tempName);

// 計算維持比例的縮圖大小
int[] thumbnailScale = getThumbnailImageScale(200, 200, image.Width, image.Height);

// 產生縮圖
System.Drawing.Image smallImage =
image.GetThumbnailImage(thumbnailScale[0], thumbnailScale[1], callBack, IntPtr.Zero);

// 將縮圖存檔
smallImage.Save(imageName);

// 釋放並刪除暫存檔
image.Dispose();
System.IO.File.Delete(tempName);
}
}

// 計算維持比例的縮圖大小
private int[] getThumbnailImageScale(int maxWidth, int maxHeight, int oldWidth, int oldHeight)
{
int[] result = new int[] { 0, 0 };
float widthDividend, heightDividend, commonDividend;

widthDividend = (float)oldWidth / (float)maxWidth;
heightDividend = (float)oldHeight / (float)maxHeight;

commonDividend = (heightDividend > widthDividend) ? heightDividend : widthDividend;
result[0] = (int)(oldWidth / commonDividend);
result[1] = (int)(oldHeight / commonDividend);

return result;
}

private bool ThumbnailCallback()
{
return false;
}
}

ASP VB.NET去除HTML Code 的語法

HTMLs = System.Text.RegularExpressions.Regex.Replace(HTMLs, "<(.|\n)*?>", "") 

ASP VB.NET 縮圖語法(圖片處理)

Function ASP_IMAGE(ByVal durl As String, ByVal surl As String, ByVal w As Integer, ByVal h As Integer)
'ASP.NET 縮圖功能
Dim image As System.Drawing.Image
'Dim anewimage As System.Drawing.Bitmap
Dim callb As System.Drawing.Image.GetThumbnailImageAbort
Dim width, height, newwidth, newheight As Integer

image = System.Drawing.Image.FromFile(durl)
width = image.Width
height = image.Height

If Not (width < w And height < h) Then
If width > height Then
h = w * height / width
Else
w = h * width / height
End If
End If

Dim img As System.Drawing.Bitmap = New System.Drawing.Bitmap(w, h)
Dim graphic As Graphics = Graphics.FromImage(img)
graphic.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality
graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
graphic.DrawImage(image, 0, 0, w, h)

image.Dispose()

img.Save(surl, System.Drawing.Imaging.ImageFormat.Jpeg)

img.Dispose()
graphic.Dispose()

End Function

ASP VB.NET 線上解壓縮的寫法

透過zip的command mode,在用asp.net 去呼叫執行,並且帶入參數就可以
    Protected Sub exzip()
Dim dir As String = 『C:\』 ‘主要目錄
Dim zip As System.Diagnostics.ProcessStartInfo = New System.Diagnostics.ProcessStartInfo()
zip.FileName = Server.MapPath(『zip.exe』)
zip.Arguments = 』 x 』 & dir & 『\』 & DropDownList1.SelectedValue & 』 -o』 & dir & 』 -y』
Dim ziprocess As Diagnostics.Process = System.Diagnostics.Process.Start(zip)
Label2.Text = DropDownList1.SelectedValue & 『解壓縮成功』
ziprocess.WaitForExit(180000)
If Not ziprocess.HasExited Then
Label2.Text = 『壓縮檔無法在3分鐘內解壓縮完畢,解壓縮失敗』
ziprocess.Kill()
End If
End Sub

ASP VB.NET - 如何開啟另存新檔的對話視窗來下載MP3檔案

一般若只在MP3檔上加個連結﹝link﹞,IE會自動開啟相關的軟體﹝如:Windows Media Player﹞來播放,無法pop-up出另存新檔﹝Save As﹞的對話視窗。
而要開啟另存新檔的對話視窗來下載MP3檔,首先得先建立一個如下的aspx檔﹝在此範例中,命名為ringtone.aspx﹞:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Response.ContentType = "audo/mp3"
Response.AppendHeader("Content-Disposition", "Attachment; FileName=ringtone.mp3")
Response.TransmitFile(Server.MapPath("download/ringtone.mp3"))
Response.End()
End Sub

ASP VB.NET - 如何線上產生高品質的縮圖

ASP .NET的線上縮圖程式,一般都是使用Image.GetThumbnailImage的方式來實作。使用Image.GetThumbnailImage雖然是很簡單,但其縮圖的品質有時真是慘不忍睹,尤其是對高畫質﹝High Quailty﹞的原圖來作縮圖。

網路上流傳:使用兩次Image.GetThumbnailImage來縮圖,取其第二次的縮圖其品質會比較好
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
'----------------------------------------------------------------
Dim sFileName As String = Server.MapPath("SANY0722.jpg")
Dim tFileName_1st As String = Server.MapPath("SANY0722_thumb_1st.jpg")
Dim tFileName_2nd As String = Server.MapPath("SANY0722_thumb_2nd.jpg")
'----------------------------------------------------------------
' Delete the file if it exists.
'----------------------------------------------------------------
If File.Exists(tFileName_1st) Then
File.Delete(tFileName_1st)
End If
'----------------------------------------------------------------
If File.Exists(tFileName_2nd) Then
File.Delete(tFileName_2nd)
End If
'----------------------------------------------------------------
Dim sFileStream As FileStream = File.OpenRead(sFileName)
Dim tFileStream_1st As FileStream = File.Create(tFileName_1st)
Dim tFileStream_2nd As FileStream = File.Create(tFileName_2nd)
'----------------------------------------------------------------
ResizeImage(0.1, sFileStream, tFileStream_1st, tFileStream_2nd)
'----------------------------------------------------------------
sFileStream.Close()
tFileStream_1st.Close()
tFileStream_2nd.Close()
'----------------------------------------------------------------
End Sub
Public Sub ResizeImage(ByVal scaleFactor As Double, ByVal fromStream As Stream, ByVal toStream_1st As Stream, ByVal toStream_2nd As Stream)
'----------------------------------------------------------------
Dim image As System.Drawing.Image = System.Drawing.Image.FromStream(fromStream)
Dim newWidth As Integer = CType((image.Width * scaleFactor),Integer)
Dim newHeight As Integer = CType((image.Height * scaleFactor),Integer)
'----------------------------------------------------------------
Dim thumbnail_1st As System.Drawing.Image = image.GetThumbnailImage(newWidth, newHeight, Nothing, IntPtr.Zero)
Dim thumbnail_2nd As System.Drawing.Image = image.GetThumbnailImage(newWidth, newHeight, Nothing, IntPtr.Zero)
'----------------------------------------------------------------
thumbnail_1st.Save(toStream_1st, image.RawFormat)
thumbnail_2nd.Save(toStream_2nd, image.RawFormat)
'----------------------------------------------------------------
thumbnail_1st.Dispose
thumbnail_2nd.Dispose
image.Dispose
'----------------------------------------------------------------
End Sub

JavaScrip防止回上一頁

下一頁  

Asp 防隱碼攻擊

隱碼攻擊是由SQL接字串時所引發的安全性問題
在沒有防隱碼攻擊的一些網站可介由任何一個input輸入
' or '1' = '1
以達到入侵的需求,最慘的是還可以下一些SQL DELETE FROM的語法

在這裡介紹如何用Replace簡單的過濾字串,以防止隱碼攻擊
UserName=Replace(Request("UserName"),"'","'+chr(34)+'")  
Password=Replace(Request("Password"),"'","'+chr(34)+'")

2010年6月14日 星期一

jquery圖表-Highcharts Demo Gallery-DEMO


官網在這:What is Highcharts?
範例:Highcharts Demo Gallery



若是使用IE請加入這一行
   

  




2010年6月13日 星期日

愚蠢的績效考核

起先在這個世界剛剛開始運轉的時後,一切都是那麼單純,人們只需要躲在家裏睡懶覺偶爾出來曬曬太陽就可以過完一生,真是美好啊。但是總是會有些邪惡的傢伙會組織另外一些同樣邪惡的傢伙佔領土地組成國家,從此每個人就必需工作然後繳稅 (該死!這就是我現在這麼忙的真正原因),最後其中有人變成大律師,有人卻是整天開著漆成黃色的車子在路上猛按喇叭,無論如何每個人都會在互相爭下產生不同的價值然後被分配在不同的位置上。如果你夠注意的話應該會發現無論是在多幽暗的角落都會有評鑑每個人價值的古怪方法,這真的是無所不在,來聽聽一個真實的案例。

在我所待的公司裏有一個令人討厭的績效考核制度,目地就是要找出整天在公司只是上上網收收信並且當有人跟經理對嗆時大開賭盤的人,然後把這些人的年終獎金一部分沒收,好用來打平當年的營運虧損。

每到年末我的經理就會一個個找我們評定績效,他會先跟我解釋公司的績效考核制度好讓我認同這決對是非常公正的,他把所有的員工用常態分布的方式分成三類。

好員工 - 程式寫超快,隨便弄弄就讓公司的產品大賣。
普通員工 - 程式寫的普通爛不過至少可以讓客戶的印像不會太糟。
爛員工 - 常常睡到中午才想到今天要上班而且整天無所事事。

解釋完了績效制度的規則後經理就會宣佈你是屬於三種員工的哪一種,通常你會得到這種答案。

「嗯,雖然你不是最好的,但也不算太差,所以你是普通爛的員工。」

嗯,謝了,其實我很懷疑跟本不會有人會被分類到爛員工那一類,因為負面評價對士氣傷害很大,一般人只要知道自己被歸類為爛員工後要做的第一件事就是打開瀏覽器上104填履歷,另外會被歸類到好員工的人也不會太多,因為那代表公司將要付出巨額的獎金,最後這種績效考核制度只是讓幾乎全部的人都成為普通爛的員工,意思也就是說績效考核制度只不過是讓大家白忙了一場然後什麼做用也沒有。所以不用再唬我了,我不會上當的,哈哈!

如果你正巧是發明這種考核制度的管理階層可要小心了,長期在這種績效考核下薰陶的公司文化會漸漸走像不好的極端,你的客服部門可能會有意無意的掛掉客戶的來電,這樣他才有辦法一天接300通電話,不然你以為那些所謂的客服專線為啥總是接通後就莫名奇妙的斷線了,而且等早上掛完300通電話後下午就可以悠哉的泡咖啡去了,所以到了下午就沒有人會去接電話,努力工作的人因為處理客戶問題花太多時間結果變成爛員工,然後很不爽的跳槽了,最後留下來的只剩一堆偷雞摸狗的傢伙,從此以後沒有人會去在意他該做的工作只在意他的績效獎金,這裏當然是假設客服部門是以處理客戶電話的多寡來評定績效,但是套用在其它方面也是差不多意思。

最慘的是大多數人都會對評估結果感到失望,不論你的評估是如何的公正都一樣,下次有機會你可以注意看看,是否每次舉辦頒獎儀式後(我說的就是那種幾個人上台領壓克力獎牌並且跟總經理親親抱抱的遊戲),大約會有一個星期左右大家都很消沉,只因其他領不到壓克力的人正在不爽。

所以結論就是愚蠢的績效考核可以讓五個人高興一下,同時讓一百個人不太高興好一陣子,最後這種遊戲只會是扼殺整體士氣的最佳手段。(尤其是發現自已剛好就是那一百個人之一的時後…)

該文是轉載來的,不過轉載的地方找不到了,抱歉

漂亮的jQuery Chart Plug-in-Highcharts -jQuery圖表

無意間在網路上看到這個jQuery的圖表Plug-in,驚嘆於現在Javascript的強大外,也對其蓬勃發展愈來愈有信心,下面先來看看這個圖表工具有多好:

官網在這:What is Highcharts?
範例:Highcharts Demo Gallery

先來看看幾個範例圖表:

ASP.NET 數個 Gridview 資料轉匯到同一個 Excel 檔中 - 不同分頁 - 使用 NPOI

使用的是 NPOI 的函示庫,你可以在下列 Ref 參考文件中找到更詳細的說明資料,我僅就運用例子作說明

Ref 0: http://npoi.codeplex.com/
Ref 1: http://msdn.microsoft.com/zh-tw/ee818993.aspx
Ref 2: http://pz0513.blog.51cto.com/443986/115553
Tutorials: http://npoi.codeplex.com/documentation
NPOI Library : Binary Download、Examples

** 必要載入與宣告 **

在 .NET 開發環境中,要將你所抓回來的 *.DLL 加入到參考。
在程式運用呼叫時,要載入函示庫
Imports NPOI.HSSF.UserModel
Imports System.IO

** 呼叫方式 **:因為採用 sub procedure 方式處理,所以在觸發點,我是利用 excel_array 來傳遞數個 Gridview 資料與要表現的內容參數,使其能在 sub 中順利列印
Dim excel_array(,) As String = {{"測試囉", "gridview1", "工作表的標題欄", "備註1"}, {"測試囉222", "gridview2", "工作表的標題欄222", "備註2"}}
npoi_excel(excel_array, "file_name.xls", 3) '資料陣列、檔名、Gridview 數量


** 副程式 npoi_excel 程式片段 **
Sub npoi_excel(ByVal excel_array As Array, ByVal filename As String, ByVal size As Integer) 'NPOI_Excel 多工作表匯出
Dim i, j, m As Integer '資料陣列、檔名、Gridview 數量
Dim gv(size) As GridView
Dim workbook As New HSSFWorkbook '使用 NPOI 函示庫 要載入 Imports NPOI.HSSF.UserModel
Dim ms As New MemoryStream
Dim mysheet(size) As HSSFSheet '定義工作頁
Dim up_row As Integer
Dim up_column As Integer '記錄 Gridview 的 Row 與 Column 上限
Dim region As NPOI.HSSF.Util.Region

For i = 0 To size - 1
mysheet(i) = workbook.CreateSheet(excel_array(i, 0))
gv(i) = New GridView
gv(i) = CType(FindControl(excel_array(i, 1)), GridView) '取得對應的 Gridview 物件
up_row = gv(i).Rows.Count - 1
up_column = gv(i).Columns.Count - 1

region = New NPOI.HSSF.Util.Region(0, 0, 0, up_column) '合併儲存格
mysheet(i).AddMergedRegion(region)
mysheet(i).CreateRow(0).CreateCell(0).SetCellValue(excel_array(i, 2)) '印 Caption

For m = 0 To up_row
For j = 0 To up_column
mysheet(i).CreateRow(m + 1).CreateCell(j).SetCellValue(gv(i).Rows(m).Cells(j).Text) '插入各個細項資料
Next
Next
'結尾提示文字,可以用以表現資料產出時間
mysheet(i).CreateRow(up_row + 3).CreateCell(0).SetCellValue("資料產出時間:" & Now.ToString) '時間記錄
mysheet(i).CreateRow(up_row + 4).CreateCell(0).SetCellValue(excel_array(i, 3)) '備註
Next

workbook.Write(ms)
Response.AddHeader("Content-Disposition", String.Format("attachment; filename=" & filename))
Response.BinaryWrite(ms.ToArray)
ms.Close()
ms.Dispose()
End Sub


註:以這種方式來產生 Excel 不會有 Rendercontrol 的錯誤,也不需要額外再加入一些程式片段,對於規則性的資料表現是相當不錯的方法。

缺點當然就是你在前端以 HTML TABEL 產出的資料部分,就無法輕易的轉匯到 Excel 工作表中。如要轉匯 Table 內容,並以迴圈插入值,需要以 ASP Table 來建立,關於這點改天再來說明。

原文轉載 http://blog.xuite.net/tolarku/blog/30309069

在 Server 端存取 Excel 檔案的利器:NPOI Library

NPOI 函式庫
NPOI 函式庫可以在 http://npoi.codeplex.com 中下載,目前的版本為 1.2.1,有分為 .NET 1.1 與 .NET 2.0 以上版本兩種,支援主要的 POI 專案提供的功能,但專案中的範例程式碼都是以 Excel 為標的,原因應該是 Excel 在伺服器端的處理遠比 Word 和 PowerPoint 等文件要多太多了,故筆者在本篇文章也是以 Excel 檔案為主要說明的標的。

NPOI 函式庫檔案有七個,分別是:

NPOI.DLL:NPOI 核心函式庫。
NPOI.DDF.DLL:NPOI 繪圖區讀寫函式庫。
NPOI.HPSF.DLL:NPOI 文件摘要資訊讀寫函式庫。
NPOI.HSSF.DLL:NPOI Excel BIFF 檔案讀寫函式庫。
NPOI.Util.DLL:NPOI 工具函式庫。
NPOI.POIFS.DLL:NPOI OLE 格式存取函式庫。
ICSharpCode.SharpZipLib.DLL:檔案壓縮函式庫。

一般需要存取 Excel 97-2003 格式(.xls)的檔案時,需要使用 NPOI、NPOI.HSSF、NPOI.POIFS 與 NPOI.Util 函式庫,因此專案中要引用這四個 DLL,若要一併存取文件摘要資訊時,則也要引用 NPOI.HPSF.DLL 檔案,以取得必要的類別宣告。開發人員通常只要集中精神在 NPOI.HSSF.UserModel 命名空間即可,它包含了控制 Excel 資料的各式類別物件供開發人員取用。

在 Server 端存取 Excel 檔案的利器:NPOI Library v1.21(改寫成VB範例)

範例一: 下列的 ASP.NET 程式碼可以生成一個空白的 Excel 檔案,並且添加三個指定名稱的試算表
 Imports System.IO 
Imports NPOI.HSSF.UserModel
Imports NPOI.HPSF
Imports NPOI.POIFS.FileSystem

Protected Sub Button1_Click() Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'== 本範例的資料來源:http://msdn.microsoft.com/zh-tw/ee818993.aspx

Dim workbook As HSSFWorkbook = New HSSFWorkbook()
Dim ms As MemoryStream = New MemoryStream() '==需要 System.IO命名空間

'== 新增試算表。
'== 生成一個空白的 Excel 檔案,並且添加三個指定名稱的試算表 Sheet
workbook.CreateSheet("試算表 Sheet A")
workbook.CreateSheet("試算表 Sheet B")
workbook.CreateSheet("試算表 Sheet C")

workbook.Write(ms)
'== Excel檔名,請寫在最後面 filename的地方
Response.AddHeader("Content-Disposition", String.Format("attachment; filename=你的檔名.xls"))
Response.BinaryWrite(ms.ToArray())

'== 釋放資源
workbook = Nothing '== C#為 null
ms.Close()
ms.Dispose()
End Sub

範例二: 添加一個指定名稱的試算表,在裡面添加資料
 Imports System.IO 
Imports NPOI.HSSF.UserModel
Imports NPOI.HPSF
Imports NPOI.POIFS.FileSystem


Protected Sub Button1_Click() Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'== 本範例的資料來源:http://msdn.microsoft.com/zh-tw/ee818993.aspx

Dim workbook As HSSFWorkbook = New HSSFWorkbook()
Dim ms As MemoryStream = New MemoryStream() '==需要 System.IO命名空間

'== 新增試算表 Sheet名稱。
Dim u_sheet As HSSFSheet = workbook.CreateSheet("My Sheet")

'== 插入資料值。
u_sheet.CreateRow(0).CreateCell(0).SetCellValue("0000")
u_sheet.CreateRow(1).CreateCell(0).SetCellValue("1111")
u_sheet.CreateRow(2).CreateCell(0).SetCellValue("2222")
u_sheet.CreateRow(3).CreateCell(0).SetCellValue("3333")
u_sheet.CreateRow(4).CreateCell(0).SetCellValue("4444")
u_sheet.CreateRow(5).CreateCell(0).SetCellValue("5555")

u_sheet.CreateRow(6).CreateCell(1).SetCellValue("6666") '== CreateCell() 可設定為同一列(Row)的 [第幾個格子]


workbook.Write(ms)

'== Excel檔名,請寫在最後面 filename的地方
Response.AddHeader("Content-Disposition", String.Format("attachment; filename=你的檔名.xls"))
Response.BinaryWrite(ms.ToArray())

'== 釋放資源
workbook = Nothing '== C#為 null
ms.Close()
ms.Dispose()
End Sub

範例三: 設定儲存格的背景色
 Imports System.IO 
Imports NPOI.HSSF.UserModel
Imports NPOI.HPSF
Imports NPOI.POIFS.FileSystem


Protected Sub Button1_Click() Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'== 本範例的資料來源:http://msdn.microsoft.com/zh-tw/ee818993.aspx

Dim workbook As HSSFWorkbook = New HSSFWorkbook()
Dim ms As MemoryStream = New MemoryStream() '==需要 System.IO命名空間

'== 新增試算表 Sheet名稱。
Dim u_sheet As HSSFSheet = workbook.CreateSheet("My Sheet")

'== 建立儲存格樣式(底色)。
Dim style1 As HSSFCellStyle = workbook.CreateCellStyle()
style1.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.BLUE.index2 '==藍色底的儲存格
style1.FillPattern = HSSFCellStyle.SOLID_FOREGROUND

Dim style2 As HSSFCellStyle = workbook.CreateCellStyle()
style2.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.YELLOW.index2 '==黃色底的儲存格
style2.FillPattern = HSSFCellStyle.SOLID_FOREGROUND


'== 設定儲存格樣式與資料。
Dim cell As HSSFCell = u_sheet.CreateRow(0).CreateCell(0)
cell.CellStyle = style1
cell.SetCellValue("0000") '== 插入資料值。

cell = u_sheet.CreateRow(1).CreateCell(0)
cell.CellStyle = style2
cell.SetCellValue("1111") '== 插入資料值。

cell = u_sheet.CreateRow(2).CreateCell(0)
cell.CellStyle = style1
cell.SetCellValue("2222") '== 插入資料值。

cell = u_sheet.CreateRow(3).CreateCell(0)
cell.CellStyle = style2
cell.SetCellValue("3333") '== 插入資料值。

cell = u_sheet.CreateRow(4).CreateCell(0)
cell.CellStyle = style1
cell.SetCellValue("4444") '== 插入資料值。


workbook.Write(ms)
'== Excel檔名,請寫在最後面 filename的地方
Response.AddHeader("Content-Disposition", String.Format("attachment; filename=你的檔名.xls"))
Response.BinaryWrite(ms.ToArray())

'== 釋放資源
workbook = Nothing '== C#為 null
ms.Close()
ms.Dispose()
End Sub

轉載連結 http://www.dotblogs.com.tw/mis2000lab/archive/2010/05/07/npoi_excel_vb_asp_net.aspx.aspx

2010年6月2日 星期三

CSS 改變超連結顏色

改變超連結(在一般、滑鼠滑入、點選瞬間、已使用過連結)的顏色、形式CSS程式碼(以下為範例):





aaaa


A:連結程式標籤、link一般、hover滑鼠滑入、active點選、visited使用過連結、color:顏色(使用色碼)、text-decoration:底線形式(none無底線、underline有底線)

2010年6月1日 星期二

Button如何不要PostBack

在.cs 檔案中加入這一行
Btn.Attributes.Add("onclick", "event.returnValue=false;");

或 直接在Button 加上 onclick 控制

或 直接在Button 加上 onclientclick 控制