Juniper Networks認為,Android不一定比iOS或其他平台危險,Google對Android平台線上軟體商店採取開放的態度可能是惡意軟體成長迅速的主要原因。
瞻博網路(Juniper Networks)發表一份統計報告,顯示最近四個月中針對Android開發的惡意軟體大量增加,七月以來總共成長472%,該公司將其原因歸咎於Google開放式的應用軟體商店上架模式及Symbian、Windows Mobile平台駭客轉移到Android平台。
該份報告認為,Google對Android平台線上軟體商店採取開放的態度可能是惡意軟體成長迅速的主要原因。任何人僅需支付25美元就可以在Google官方的Android線上軟體商店上架,而且不需要經過任何審查。
Juniper Networks先前的一份行動裝置惡意軟體趨勢報告顯示,自2009到2010年夏季,Android的惡意軟體成長400%。最新報告則顯示,今年十月及十一月是Android平台有史以來惡意軟體成長最快的階段,所蒐集的惡意軟體樣本數十月份比九月份就成長110%。
除了數量增加之外,Juniper Networks指出,惡意軟體的結構也日趨複雜。今年初才出現利用Android平台漏洞取得root權限、進而可以在背景中執行、更新的惡意程式,現在幾乎所有的惡意軟體都具有這種能力,原因在於90%的Android設備都存有此類漏洞。
報告指出,這些惡意軟體中有55%會竊取通訊記錄、所在位置等足以辨識個人的資料,有44%會在暗中傳送簡訊導致用戶必須支付高額費用,例如簡訊抽獎、投票等。
相較於Android平台惡意軟體大量成長,Symbian及Windows Mobile平台的惡意軟體成長則日漸趨緩,該份報告認為這些平台的惡意軟體開發人員可能轉向Android平台導致成長速度如此迅速。
Juniper Networks認為,從作業系統的安全性來看,Android不一定比iOS或其他平台危險。但Android採用開放式線上軟體商店,加上缺乏事先審核及數位簽署等機制,導致駭客可以輕易散佈惡意程式。(編譯/沈經)
2011-11-18
詳見
2011年12月13日 星期二
Adobe放棄行動版Flash,轉進HTML 5
Adobe互動開發部門總經理Danny Winokur在官方部落格宣布這項產品調整策略,他表示,未來只提供安全更新,不再針對個別裝置推出新版Flash Player。
Adobe將停止開發行動版Flash Player,將資源轉投入HTML 5工具的研發。Adobe互動開發部門總經理Danny Winokur在官方部落格宣布這項產品調整策略,他表示,未來只提供安全更新,不再針對個別裝置推出新版Flash Player。
Adobe首席產品經理Mike Chambers也在部落格上坦言,Flash未獲主流行動平臺蘋果iOS的支援,導致Flash在行動裝置的普及率遠低於桌面裝置,因此,Adobe改將研發資源投入目前獲得行動裝置普遍支援的HTML 5技術。
不過,Adobe並未撤出行動市場,Danny Winokur表示,未來將集中資源來協助開發者,運用Adobe AIR技術封裝Flash應用,以發布成行動裝置上的原生應用程式。另外,Adobe也已投入Flash Player 12的開發,現已完成CSS著色功能,未來也會推出Flash和HTML 5的轉換機制。文⊙王宏仁
2011-11-21
詳見
Adobe將停止開發行動版Flash Player,將資源轉投入HTML 5工具的研發。Adobe互動開發部門總經理Danny Winokur在官方部落格宣布這項產品調整策略,他表示,未來只提供安全更新,不再針對個別裝置推出新版Flash Player。
Adobe首席產品經理Mike Chambers也在部落格上坦言,Flash未獲主流行動平臺蘋果iOS的支援,導致Flash在行動裝置的普及率遠低於桌面裝置,因此,Adobe改將研發資源投入目前獲得行動裝置普遍支援的HTML 5技術。
不過,Adobe並未撤出行動市場,Danny Winokur表示,未來將集中資源來協助開發者,運用Adobe AIR技術封裝Flash應用,以發布成行動裝置上的原生應用程式。另外,Adobe也已投入Flash Player 12的開發,現已完成CSS著色功能,未來也會推出Flash和HTML 5的轉換機制。文⊙王宏仁
2011-11-21
詳見
紅陽科技線上金流平台交易資料外洩!
包括交易店家、消費者姓名、電話、訂單編號、交易金額、交易時間、IP位置,以及信用卡部份號碼等即時的交易資料,都可在網路上查詢得到。
提供第三方線上支付服務的紅陽科技線上交易平台傳出資料外洩,包括交易店家、消費者姓名、電話、訂單編號、交易金額、交易時間、IP位置,以及信用卡部份號碼等即時的交易資料,都可在網路上查詢得到。紅陽科技已經緊急修補網站漏洞,並預計在周三發佈新聞稿對外說明。
周日(12/4)晚十點鐘左右在Mobile 01論壇上出現一篇以「<01獨家新聞>線上交易平台漏洞,洩漏個人購買資料~」為題的文章,文章以網路截圖指證歷歷表示,此漏洞資料是即時更新的,作者並表示之前買完東西馬上就有人(暗指詐騙集團)來電說繳款失敗!
紅陽科技協理李宏鑫表示,早上在得知此事後,發現是Windows伺服器的安全漏洞所致,因此已立即進行修補;另外也已經請Google刪除搜尋的頁庫存檔資料。對於漏洞詳情李宏鑫未多所說明,但他坦承,此事件讓公司可能評估改用Linux。
對於有多少資料外洩,紅陽並不確定,但表示,早上發現時Google庫頁存檔資料約可查到300筆;iThome記者在下午四點左右查詢時約可查到近200筆。另外,根據Mobile01上署名為ient的網友表示嘗試改code之後,可以追朔資料到11月份。如果真如ient所言,那麼資料外洩的數字將遠比上述數字更加嚴重。
在後續處理方面,紅陽預計請客服專員向合作店家直接說明,而消費者方面則會透過e-mail或簡訊通知,另也會在周三發佈新聞稿對外說明。
據李宏鑫表示,公司合作的商家約3000家左右。不過,依據紅陽科技網站所提供的公司介紹,2005年時所提供的「 e`safe 代收代付金流服務」機制全台灣已有超過 4500 家企業及商家簽約採用,已有超過200萬人次的消費者使用過MSTS機制支付其日常消費。2005年每月透過「MSTS全方位金流服務」的流量高達 2.5億元,預估金流流量於年底前將達到每月 5億元。
李宏鑫表示,洩露的資料並未包含信用卡的完整資料,因此消費者不用擔心因此會被盜刷。另外,他也強調紅陽在資安上的重視,並表示紅陽已通過Visa及Master Card的PCI DSS認證。
2011-12-05
詳見
提供第三方線上支付服務的紅陽科技線上交易平台傳出資料外洩,包括交易店家、消費者姓名、電話、訂單編號、交易金額、交易時間、IP位置,以及信用卡部份號碼等即時的交易資料,都可在網路上查詢得到。紅陽科技已經緊急修補網站漏洞,並預計在周三發佈新聞稿對外說明。
周日(12/4)晚十點鐘左右在Mobile 01論壇上出現一篇以「<01獨家新聞>線上交易平台漏洞,洩漏個人購買資料~」為題的文章,文章以網路截圖指證歷歷表示,此漏洞資料是即時更新的,作者並表示之前買完東西馬上就有人(暗指詐騙集團)來電說繳款失敗!
紅陽科技協理李宏鑫表示,早上在得知此事後,發現是Windows伺服器的安全漏洞所致,因此已立即進行修補;另外也已經請Google刪除搜尋的頁庫存檔資料。對於漏洞詳情李宏鑫未多所說明,但他坦承,此事件讓公司可能評估改用Linux。
對於有多少資料外洩,紅陽並不確定,但表示,早上發現時Google庫頁存檔資料約可查到300筆;iThome記者在下午四點左右查詢時約可查到近200筆。另外,根據Mobile01上署名為ient的網友表示嘗試改code之後,可以追朔資料到11月份。如果真如ient所言,那麼資料外洩的數字將遠比上述數字更加嚴重。
在後續處理方面,紅陽預計請客服專員向合作店家直接說明,而消費者方面則會透過e-mail或簡訊通知,另也會在周三發佈新聞稿對外說明。
據李宏鑫表示,公司合作的商家約3000家左右。不過,依據紅陽科技網站所提供的公司介紹,2005年時所提供的「 e`safe 代收代付金流服務」機制全台灣已有超過 4500 家企業及商家簽約採用,已有超過200萬人次的消費者使用過MSTS機制支付其日常消費。2005年每月透過「MSTS全方位金流服務」的流量高達 2.5億元,預估金流流量於年底前將達到每月 5億元。
李宏鑫表示,洩露的資料並未包含信用卡的完整資料,因此消費者不用擔心因此會被盜刷。另外,他也強調紅陽在資安上的重視,並表示紅陽已通過Visa及Master Card的PCI DSS認證。
2011-12-05
詳見
Android程式下載突破100億次
Android Market在去年7月創下10億次的程式下載,今年3月達到30億次,代表今年以來Android Market每月平均都有10億次的程式下載數。
Google周二(12/6)宣布,Android Market的應用程式下載量已於上周末超過100億次,為了慶祝此一里程碑,Google與開發人員協議讓Android用戶可以0.1美元添購多種受歡迎的程式,此一慶祝活動將維持10天。
Android Market在去年7月創下10億次的程式下載,今年3月達到30億次,代表今年以來Android Market每月平均都有10億次的程式下載數。
從周二開始,Android Market每天都可看到售價只要0.1美元的程式,目前上線的有Asphalt 6 HD、Color & Draw for Kids、 Endomondo Sports Tracker Pro、Fieldrunners HD、Great Little War Game、Minecraft、Paper Camera、Sketchbook Mobile、Soundhound Infinity及SwiftKey X等,10天內還會有其他優惠程式上線。
Android Market程式下載數的爆炸性成長歸功於Android手機的市佔率。市場研究機構Canalys今年第二季的調查顯示,Android手機出貨量已佔全球智慧型手機48%的比例,蘋果的iOS則佔19%。
目前Android Market約有超過30萬的應用程式,蘋果App Store的程式數量則超過50萬,同時App Store在今年7月的程式下載量就已突破150億,即使的應用程式數量與下載量現在皆領先Android Market,但市場認為在Android裝置數量不斷擴大的情況下,Android程式下載量很快就會超越iOS程式。(編譯/陳曉莉)
詳見
Google周二(12/6)宣布,Android Market的應用程式下載量已於上周末超過100億次,為了慶祝此一里程碑,Google與開發人員協議讓Android用戶可以0.1美元添購多種受歡迎的程式,此一慶祝活動將維持10天。
Android Market在去年7月創下10億次的程式下載,今年3月達到30億次,代表今年以來Android Market每月平均都有10億次的程式下載數。
從周二開始,Android Market每天都可看到售價只要0.1美元的程式,目前上線的有Asphalt 6 HD、Color & Draw for Kids、 Endomondo Sports Tracker Pro、Fieldrunners HD、Great Little War Game、Minecraft、Paper Camera、Sketchbook Mobile、Soundhound Infinity及SwiftKey X等,10天內還會有其他優惠程式上線。
Android Market程式下載數的爆炸性成長歸功於Android手機的市佔率。市場研究機構Canalys今年第二季的調查顯示,Android手機出貨量已佔全球智慧型手機48%的比例,蘋果的iOS則佔19%。
目前Android Market約有超過30萬的應用程式,蘋果App Store的程式數量則超過50萬,同時App Store在今年7月的程式下載量就已突破150億,即使的應用程式數量與下載量現在皆領先Android Market,但市場認為在Android裝置數量不斷擴大的情況下,Android程式下載量很快就會超越iOS程式。(編譯/陳曉莉)
詳見
標籤:
Android,
Android Market,
App Store
GFK:8月Android已佔台灣智慧型手機銷售量8成
8月手機零售通路銷售統計,智慧型手機銷售量已佔整體手機46%,智慧型手機銷售中高達8成為Android手機,其次是約1成的iPhone與不到5%的Symbian S60。
GFK對台灣零售通路8月調查指出,Android手機佔該月智慧型手機整體銷售量已達8成,在手機零售通路銷量佔比創下新高,遠超越iOS、Symbian等其他手機平台。
該調查是以台灣零售通路為對象,調查通訊行、電信通路與3C資訊通路手機銷售資料,不同於IDC、Gartner是以手機業者為對象,研究各家業者手機出貨至通路的數量。
根據GFK的8月統計資料,該月所有手機銷售約71萬支,其中智慧型手機共賣出33萬支,佔所有手機銷售量的46%,在手機業者、電信業者力推下,智慧型手機銷量已接近一半市場。智慧型手機銷售以Android遙遙領先其他平台,8成智慧型手機銷售為Android手機。
GFK分析師吳柏毅表示,Android手機銷售成長除了品牌手機、電信業者的支持外,還與其他平台在該季的表現下滑有關,包括微軟芒果機在8月尚未推出,蘋果尚未發表iPhone 4S,加上Symbian銷售下滑,都促使Android手機在通路銷售上取得高佔比。
該月智慧型手機平台表現,蘋果iPhone 4以1成左右的比重居次,Nokia的Symbian S60手機佔比不到5%,其他平台如微軟Windows手機、RIM黑莓機各自佔比不到1%。
吳柏毅表示,從季度資料來看,Android在第二季已拿下6成5的智慧型手機銷售,第三季雖然尚未完成統計,但8月Android手機銷量站上新高之下,第三季有機會達到7成以上。
智慧型手機銷售中,高階機種因規格、功能的豐富性吸引消費者青睞,約佔整體智慧型手機銷售的4成,而價位在5千到9千之間的入門級智慧型手機也達到2成左右。顯示本地消費者對智慧型手機喜好呈現高階、入門兩端發展。
除了GFK最新資料之外,統計手機業者出貨給通路數量的IDC,第二季報告顯示Android手機出貨已將近智慧型手機的7成,第三季因Windows手機、iPhone尚未推出新品,IDC預期Android手機出貨可能繼續增加。
詳見
GFK對台灣零售通路8月調查指出,Android手機佔該月智慧型手機整體銷售量已達8成,在手機零售通路銷量佔比創下新高,遠超越iOS、Symbian等其他手機平台。
該調查是以台灣零售通路為對象,調查通訊行、電信通路與3C資訊通路手機銷售資料,不同於IDC、Gartner是以手機業者為對象,研究各家業者手機出貨至通路的數量。
根據GFK的8月統計資料,該月所有手機銷售約71萬支,其中智慧型手機共賣出33萬支,佔所有手機銷售量的46%,在手機業者、電信業者力推下,智慧型手機銷量已接近一半市場。智慧型手機銷售以Android遙遙領先其他平台,8成智慧型手機銷售為Android手機。
GFK分析師吳柏毅表示,Android手機銷售成長除了品牌手機、電信業者的支持外,還與其他平台在該季的表現下滑有關,包括微軟芒果機在8月尚未推出,蘋果尚未發表iPhone 4S,加上Symbian銷售下滑,都促使Android手機在通路銷售上取得高佔比。
該月智慧型手機平台表現,蘋果iPhone 4以1成左右的比重居次,Nokia的Symbian S60手機佔比不到5%,其他平台如微軟Windows手機、RIM黑莓機各自佔比不到1%。
吳柏毅表示,從季度資料來看,Android在第二季已拿下6成5的智慧型手機銷售,第三季雖然尚未完成統計,但8月Android手機銷量站上新高之下,第三季有機會達到7成以上。
智慧型手機銷售中,高階機種因規格、功能的豐富性吸引消費者青睞,約佔整體智慧型手機銷售的4成,而價位在5千到9千之間的入門級智慧型手機也達到2成左右。顯示本地消費者對智慧型手機喜好呈現高階、入門兩端發展。
除了GFK最新資料之外,統計手機業者出貨給通路數量的IDC,第二季報告顯示Android手機出貨已將近智慧型手機的7成,第三季因Windows手機、iPhone尚未推出新品,IDC預期Android手機出貨可能繼續增加。
詳見
App開發者一定要學會如何行銷
寫出「我要搭高鐵」App的王崇仁認為,自己開工作室發展軟體,除了英文能力要好,也必須學習如何推銷,以提高軟體的下載率
IT人物- Ollix工作室執行長 王崇仁
● 出生年:1985年
● 學歷:中興大學資訊工程系畢、目前就讀同校資工碩士班
● 工作內容:程式設計
公司檔案-Ollix工作室
● 服務項目:軟體開發
● 網址:www.ollix.com
● 軟體作品:我要搭高鐵、Music & Lyrics
在Apple的App Store上有一款名為我要搭高鐵的App,相當出名,它是提供查詢高鐵班次及訂票功能的軟體,雖然售價為4.99美元,但從上架至今已突破30萬人次下載,也曾經獲得臺灣總付費排行榜的第一名。
會獲得這麼好的成績,負責開發這套App的作者王崇仁說,是因為在開發時就以簡單、好用為前提,而且在推出後,也持續的更新功能,讓付費下載的使用者可以感覺到,作者是真正用心經營這套軟體。
因為找不到適合的App協助訂票,於是便開發了我要搭高鐵
王崇仁在大學時,便自己創立了Ollix工作室,他的理念是只做自己想要的東西,而我要搭高鐵就是這樣產生的。王崇仁是桃園人,而當時在臺中念書,所以時常搭乘高鐵往返兩地。因為覺得在網站上訂票及取票很不方便,所以他開始在App Store找能在iPhone上直接查詢並訂票的App,但是所找到的軟體,都沒有完全符合他想要的功能,於是他便有自己開發這套軟體的想法。
在2009年時,Ollix工作室先製作了我要搭高鐵的第一版,但因為第一次開發App,所以在功能上還不完整。直到2010年時,他認為自己的技術已經成熟了,便著手設計第二版並於年底推出,而甫推出便受好評。這一版加入了許多其它同類型App所沒有的功能,例如,可線上刷卡、支援早鳥優惠、即時座位檢查等。
從國小就自修HTML,慢慢累積程式設計的基礎
其實王崇仁在國小時就有接觸程式設計的經驗,一開始他先利用微軟的FrontPage軟體,製作了自己的網站,後來他看到別人的網頁,呈現許多的效果,例如,字體可以設定大小,甚至跑馬燈等,才知道原來那是用HTML寫出來的,於是開始學習HTML,爸爸也會買書給他看。王崇仁說,從小到大,他的電腦知識都是靠自修。
受到同學的影響,開始專注於程式開發
剛上大學時,其實王崇仁就跟一般大學生一樣,不知道自己將來要做什麼,甚至上課也都不專心聽講。直到大二時,有一天他在系上的電腦教室,看到一位同學鄧暐敦坐在電腦前,好奇地走過去看,想知道對方在做什麼?結果發現這個人正在翻譯英日文的電腦書,並且是利用自己開發的翻譯系統在工作。
王崇仁覺得很了不起,於是便詢問他,這套系統是用什麼程式語言寫的?鄧暐敦說,是用Python,因此他便開始學習這套語言,還特地買了一本Python的原文書來看。從此,他便熱衷於學習程式設計。
而在學習程式語言的過程中,每當遇到困難,王崇仁都會去請教鄧暐敦,後來他說,其實有問題可以上Google查詢,幾乎所有的解答都可以在上面找到。因此,他開始學習如何使用Google來解決所碰到的難題,例如,在欲查詢的字串加上雙引號,可以得到更精確的搜尋結果等。而他的經驗是,Google真的可以解決95%以上的問題,所以他得到了一個結論──要學程式語言,必須先學會使用Google查詢。也因為這樣,現在只要有學弟、妹來問他關於程式設計的事情,他也會先請這些人去網路上尋求解答。
除了熱衷程式設計,也喜歡拍照
由於王崇仁認真學習程式設計,在大學時就發展到很不錯的程度──他自己利用Python寫出了一套選課系統。他說,由於大學有些課程非常熱門,所以很難選到,而一些網路上可以下載到的滑鼠連點程式,又不好用,所以才會想開發這套系統。他保證,只要使用他這套程式,絕對選得到課。
而除了程式設計之外,他也喜歡拍照,還買了單眼相機,他會將自己認為拍得好看的照片,上傳到國外一些專門出售照片的網站,例如Shutterstock等拍賣,但因為這類網站在國外有好幾個,而每個網站的分類排序又不一樣,所以要分開上傳時就很麻煩,於是他寫了一套叫Micro agent的程式,它的功能是可以去搜集這些網站的關鍵字,並搜尋前一千張熱賣的照片,然後利用演算法去分析,最後主動將想上傳的照片依照這些網站的分類分好。
不斷創造練習英文的機會,增加自己的國際競爭力
王崇仁提到,想當個程式開發者,英文能力一定不能太弱,至少在讀跟寫方面要沒問題。因為在臺灣,程式設計的相關資源沒有國外豐富,所以想要習得更高的技巧及觀念,必須要到國外網站去找尋資源。
談到這裡,他在大學時有個有趣的小故事。他立志朝國際發展,因此知道英文的重要性,所以無論什麼作業,他都全部用英文去寫。因為他的想法是,這些老師都是留學回來的,所以他天真地認為,只要用英文交作業,那些老師就會順便幫他訂正文法。但結果是,作業發回來只有分數,根本就沒有幫他訂正,那時他有些失望。
雖然他想到的這個學習方法不管用,但他還是不斷找機會學習英文。例如,他只看原文書,遇到不懂的單字或片語,一開始會去查中英字典,但到後來都只看英英字典了,他說這樣學英文才會快。而他在考研究所時,自傳也是全部用英文寫的。由於持續練習英文,目前他的英文程度已經是不錯了。他笑著說,現在回頭去看大學時寫的那些作業,心裡都會想,天啊,這種文法當初怎麼可能寫得出來。
而他希望有一天,當國外有人邀請他上臺演講時,他可以用流利的英文演講。另外,因為他在大學就立志當獨立開發者,但他知道自己沒錢找別人幫他行銷,所以大學所修的輔系,他選擇了行銷系,他說念行銷對現在推廣他的App很有幫助,例如訂價策略,將售價訂的比其它同類型App高,是因為消費者對於價格較高的商品,都會有品質較好的想法。而在提高售價後,下載次數的確成長了不少,這些技巧都是當初念行銷系學來的。
堅持理念做自己,不接外包的案子
Ollix工作室成立至今,雖然有許多大企業找他們合作,甚至連政府機關都有,但都婉拒了。因為如果接受這些案子,那麼就會有時間上的限制,這跟他們的理念不符合。他們寧願多花一些時間讓App的品質更好,也不願意因為期限的關係,讓他們覺得不夠好的作品匆促上架。
而在程式開發上,王崇仁說,他們是比較狂熱的工作者,如果碰到問題,就會不斷的去思考如何解決,因此通常在一天之內就可以處理完。
最近,他們又有一套新的App上架了,這是一套iTunes的歌詞播放軟體,名為Music & Lyrics,它的功能是在播放音樂時,會自動上網下載歌詞,而特別的地方在於,這套軟體可以將簡體自動轉換成正體,他說,轉換的準確率甚至比Google的翻譯系統還高。
夢想邊工作邊環遊世界
他們的夢想是環遊世界,王崇仁說,曾經看過一個攝影師,邊旅遊邊拍賣沿途記錄下來的影片,完成了環遊世界。因此,他希望有一天也能靠著App及出售照片的收入,無憂無慮地完成這個夢想。文⊙胡仁禮
詳見
IT人物- Ollix工作室執行長 王崇仁
● 出生年:1985年
● 學歷:中興大學資訊工程系畢、目前就讀同校資工碩士班
● 工作內容:程式設計
公司檔案-Ollix工作室
● 服務項目:軟體開發
● 網址:www.ollix.com
● 軟體作品:我要搭高鐵、Music & Lyrics
在Apple的App Store上有一款名為我要搭高鐵的App,相當出名,它是提供查詢高鐵班次及訂票功能的軟體,雖然售價為4.99美元,但從上架至今已突破30萬人次下載,也曾經獲得臺灣總付費排行榜的第一名。
會獲得這麼好的成績,負責開發這套App的作者王崇仁說,是因為在開發時就以簡單、好用為前提,而且在推出後,也持續的更新功能,讓付費下載的使用者可以感覺到,作者是真正用心經營這套軟體。
因為找不到適合的App協助訂票,於是便開發了我要搭高鐵
王崇仁在大學時,便自己創立了Ollix工作室,他的理念是只做自己想要的東西,而我要搭高鐵就是這樣產生的。王崇仁是桃園人,而當時在臺中念書,所以時常搭乘高鐵往返兩地。因為覺得在網站上訂票及取票很不方便,所以他開始在App Store找能在iPhone上直接查詢並訂票的App,但是所找到的軟體,都沒有完全符合他想要的功能,於是他便有自己開發這套軟體的想法。
在2009年時,Ollix工作室先製作了我要搭高鐵的第一版,但因為第一次開發App,所以在功能上還不完整。直到2010年時,他認為自己的技術已經成熟了,便著手設計第二版並於年底推出,而甫推出便受好評。這一版加入了許多其它同類型App所沒有的功能,例如,可線上刷卡、支援早鳥優惠、即時座位檢查等。
從國小就自修HTML,慢慢累積程式設計的基礎
其實王崇仁在國小時就有接觸程式設計的經驗,一開始他先利用微軟的FrontPage軟體,製作了自己的網站,後來他看到別人的網頁,呈現許多的效果,例如,字體可以設定大小,甚至跑馬燈等,才知道原來那是用HTML寫出來的,於是開始學習HTML,爸爸也會買書給他看。王崇仁說,從小到大,他的電腦知識都是靠自修。
受到同學的影響,開始專注於程式開發
剛上大學時,其實王崇仁就跟一般大學生一樣,不知道自己將來要做什麼,甚至上課也都不專心聽講。直到大二時,有一天他在系上的電腦教室,看到一位同學鄧暐敦坐在電腦前,好奇地走過去看,想知道對方在做什麼?結果發現這個人正在翻譯英日文的電腦書,並且是利用自己開發的翻譯系統在工作。
王崇仁覺得很了不起,於是便詢問他,這套系統是用什麼程式語言寫的?鄧暐敦說,是用Python,因此他便開始學習這套語言,還特地買了一本Python的原文書來看。從此,他便熱衷於學習程式設計。
而在學習程式語言的過程中,每當遇到困難,王崇仁都會去請教鄧暐敦,後來他說,其實有問題可以上Google查詢,幾乎所有的解答都可以在上面找到。因此,他開始學習如何使用Google來解決所碰到的難題,例如,在欲查詢的字串加上雙引號,可以得到更精確的搜尋結果等。而他的經驗是,Google真的可以解決95%以上的問題,所以他得到了一個結論──要學程式語言,必須先學會使用Google查詢。也因為這樣,現在只要有學弟、妹來問他關於程式設計的事情,他也會先請這些人去網路上尋求解答。
除了熱衷程式設計,也喜歡拍照
由於王崇仁認真學習程式設計,在大學時就發展到很不錯的程度──他自己利用Python寫出了一套選課系統。他說,由於大學有些課程非常熱門,所以很難選到,而一些網路上可以下載到的滑鼠連點程式,又不好用,所以才會想開發這套系統。他保證,只要使用他這套程式,絕對選得到課。
而除了程式設計之外,他也喜歡拍照,還買了單眼相機,他會將自己認為拍得好看的照片,上傳到國外一些專門出售照片的網站,例如Shutterstock等拍賣,但因為這類網站在國外有好幾個,而每個網站的分類排序又不一樣,所以要分開上傳時就很麻煩,於是他寫了一套叫Micro agent的程式,它的功能是可以去搜集這些網站的關鍵字,並搜尋前一千張熱賣的照片,然後利用演算法去分析,最後主動將想上傳的照片依照這些網站的分類分好。
不斷創造練習英文的機會,增加自己的國際競爭力
王崇仁提到,想當個程式開發者,英文能力一定不能太弱,至少在讀跟寫方面要沒問題。因為在臺灣,程式設計的相關資源沒有國外豐富,所以想要習得更高的技巧及觀念,必須要到國外網站去找尋資源。
談到這裡,他在大學時有個有趣的小故事。他立志朝國際發展,因此知道英文的重要性,所以無論什麼作業,他都全部用英文去寫。因為他的想法是,這些老師都是留學回來的,所以他天真地認為,只要用英文交作業,那些老師就會順便幫他訂正文法。但結果是,作業發回來只有分數,根本就沒有幫他訂正,那時他有些失望。
雖然他想到的這個學習方法不管用,但他還是不斷找機會學習英文。例如,他只看原文書,遇到不懂的單字或片語,一開始會去查中英字典,但到後來都只看英英字典了,他說這樣學英文才會快。而他在考研究所時,自傳也是全部用英文寫的。由於持續練習英文,目前他的英文程度已經是不錯了。他笑著說,現在回頭去看大學時寫的那些作業,心裡都會想,天啊,這種文法當初怎麼可能寫得出來。
而他希望有一天,當國外有人邀請他上臺演講時,他可以用流利的英文演講。另外,因為他在大學就立志當獨立開發者,但他知道自己沒錢找別人幫他行銷,所以大學所修的輔系,他選擇了行銷系,他說念行銷對現在推廣他的App很有幫助,例如訂價策略,將售價訂的比其它同類型App高,是因為消費者對於價格較高的商品,都會有品質較好的想法。而在提高售價後,下載次數的確成長了不少,這些技巧都是當初念行銷系學來的。
堅持理念做自己,不接外包的案子
Ollix工作室成立至今,雖然有許多大企業找他們合作,甚至連政府機關都有,但都婉拒了。因為如果接受這些案子,那麼就會有時間上的限制,這跟他們的理念不符合。他們寧願多花一些時間讓App的品質更好,也不願意因為期限的關係,讓他們覺得不夠好的作品匆促上架。
而在程式開發上,王崇仁說,他們是比較狂熱的工作者,如果碰到問題,就會不斷的去思考如何解決,因此通常在一天之內就可以處理完。
最近,他們又有一套新的App上架了,這是一套iTunes的歌詞播放軟體,名為Music & Lyrics,它的功能是在播放音樂時,會自動上網下載歌詞,而特別的地方在於,這套軟體可以將簡體自動轉換成正體,他說,轉換的準確率甚至比Google的翻譯系統還高。
夢想邊工作邊環遊世界
他們的夢想是環遊世界,王崇仁說,曾經看過一個攝影師,邊旅遊邊拍賣沿途記錄下來的影片,完成了環遊世界。因此,他希望有一天也能靠著App及出售照片的收入,無憂無慮地完成這個夢想。文⊙胡仁禮
詳見
非官方統計:Android應用程式已超過20萬種
雖然Android Market建立之初應用程式數量的成長速度曾令人擔心,但隨著愈來愈多Android裝置的出爐,也吸引了更多開發人員投入Android程式的開發。
專門偵測Android Market應用程式數量的AndroLib本周的數據顯示,Android應用程式數量現已突破20萬。
Google曾在今年10月底宣布Android Market應用程式數量已突破10萬,若AndroLib的估計確實,顯示了Android應用程式數量在兩個月內就成長了一倍。
雖然Android Market建立之初應用程式數量的成長速度曾令人擔心,但隨著愈來愈多Android裝置的出爐,也吸引了更多開發人員投入Android程式的開發。Google在12月初發表Nexus S時曾表示,迄今市場上已有超過100種不同的Android裝置,且平均每天啟用20萬個Android裝置。
蘋果現仍保持應用程式龍頭位置,旗下的App Store在今年11月就提供超過30萬種應用程式,不過,隨著Android逐漸佔領智慧型手機市場,勢必會吸引更多的開發人員,先前即有多份調查報告透露開發人員最看好的應用程式平台是Android。
Gartner估計Android手機的全球出貨量在今年底將能超越黑莓機,成為全球第二大行動平台,並在2014年挑戰Symbian的龍頭位置。(編譯/陳曉莉)
詳見
專門偵測Android Market應用程式數量的AndroLib本周的數據顯示,Android應用程式數量現已突破20萬。
Google曾在今年10月底宣布Android Market應用程式數量已突破10萬,若AndroLib的估計確實,顯示了Android應用程式數量在兩個月內就成長了一倍。
雖然Android Market建立之初應用程式數量的成長速度曾令人擔心,但隨著愈來愈多Android裝置的出爐,也吸引了更多開發人員投入Android程式的開發。Google在12月初發表Nexus S時曾表示,迄今市場上已有超過100種不同的Android裝置,且平均每天啟用20萬個Android裝置。
蘋果現仍保持應用程式龍頭位置,旗下的App Store在今年11月就提供超過30萬種應用程式,不過,隨著Android逐漸佔領智慧型手機市場,勢必會吸引更多的開發人員,先前即有多份調查報告透露開發人員最看好的應用程式平台是Android。
Gartner估計Android手機的全球出貨量在今年底將能超越黑莓機,成為全球第二大行動平台,並在2014年挑戰Symbian的龍頭位置。(編譯/陳曉莉)
詳見
2011年12月11日 星期日
Motivation
源起
I have developed a lot of programs, so alought there is no one formal description, I already have one set of naming rules. Recently, I took apart in several group-developing projects. These exprements make me feel that: something such as naming is unnecessary (even awkward) if it is hardness; but is important to list them if you need a general direction.
雖然不能稱得上非常多,但是我個人開發過的程式還算不少,所以雖然沒有很正式的規定,但是已經有自己的一套命名規則;加上最近參加過幾次團體開發的經驗,覺得這種東西,硬性規定的確沒有必要,或者說,還蠻鳥的,不過提些大方向,尤其是條列出來,還蠻重要的。
This document will list several basic naming rules, maybe a few concepts about source code writing. In addition, I will suggest some minor issues, such as indenting. But just like many other documents on Internet, do that as a natural sequence is most important.
這份文件打算條列出一些基本的命名規則,或許還會寫寫一些關於原始碼的想法,什麼地方該怎麼寫,什麼地方不該怎麼寫;還有些更無關緊要的,像是縮排要幾格?我會提些建議,但是就像其他網路上文件提過的,自己習慣還是最重要的。
Variable Prefixes
變數前置字元
Prefix Meaning Description
g global Always used on global variables. But some global variable such as those in a library but that library doesn't provide any interface to access them, because they are global only in their own library, conceptually they are local in that module. So I will use m_ as a prefix on these variables.
通常使用在全域變數上,但是有些全域變數,像是一個函式庫的全域變數,因為它只在那個函式庫中全域,在概念上,我覺得反而比較像是那個模組裡的區域變數,所以這時我會選用 m 開頭,而不是使用 g 。
m module, member You could think them as module variables or member variables. But I like conceptual explanation more personally. So whenever I name an variable, not only class member variables will be prefixed by m_. Above situation is a example. Basically, only variables which span two or more modules will be prefixed by g_.
模組和成員變數,這兩種解釋都通,但因為我個人比較喜歡概念上的解釋,所以通常在使用上,不是只有在物件中(物件才有成員變數)才會用到 m 開頭的變數,上面提的例子就是一個,基本上,會超越模組(跨模組)使用的變數我才會以 g 開頭。
s static In principle, I will use s_ on those variables which are specified by static keyword (in C/C++). Of course, this kind of variables is rare. If you have a lot of s_ varialbes, there are two possible reasons: 1. your program is very special, or 2. you make a mistake! (maybe you confuse the concept of static variable.) Besides, some people like use st_ to be a prefix of static variables. Maybe st_ comes from static, but since one character will not confuse with other prefix characters, why we use two characters?
靜態變數,原則上,使用 static 這個關鍵字(在 C/C++ 語言中)的變數,我就會使用 s 開頭,當然,這在程式中是很少使用的,靜態變數多有兩種可能,一個是程式特殊,另一個就是你寫錯了!或是搞錯靜態變數的概念,基本上應該是不常用到才對;另外也有人喜歡用 st 開頭,取自 static 吧,不過既然一個字元就不會重複了,沒什麼必要用兩個字元。
local There is usually no any prefix before local variable. Here "local" means usually the area between two braces of functions. I list a identical variable in four representations: g_foo, m_foo, s_foo, and foo.
區域變數,通常前面是不會有任何前置字元的,而這邊所謂的區域,通常在函式的兩個大括號中間。這邊列出同一個變數,用四種表示法分別為 g_foo, m_foo, s_foo, foo 。
Variables Type
變數型態
Type Meaning Description
a array 老樣子,我還是喜歡邏輯上的意義,所以同樣是 int * 的型態,如果變數是代表著一個整數陣列,就用 a 開頭,若是代表著一個整數指標,則用 p 開頭。
ch char 字元型態,我不知道有沒有人只有 c 開頭的就是了。
d double 就目前來講,我希望所有浮點數都是倍精確度,所以只有定義 d 開頭的代表 double ,而沒有指定 float 所使用的縮寫。
f flag 其實應該就是布林代數,不過 C/C++ 語言中並沒有這個型態,我個人習慣使用 BOOL 來代表這個抽象型態;其實還有另一種命名法,就是使用 b 開頭代表 boolean ,然後 f 就可以用來代表 float ,但是至少目前我打算採用。
h handle, height 如果用過 handle 這種抽象型態的人,應該知道特地定出來是有其必要的,當然,如果沒用過,就別理它了;另外在不會搞混的情況下,代表高度的變數用 h 開頭也不錯。
i index, int 通常都用來當做索引變數,或是整數變數,雖然我比較喜歡前者,但是整數實在是太常用了,所以在我的程式碼中還是蠻常採用後者。
l long 長整數。
n number 通常用來代表量的變數,配合 i 使用不錯,例如 for (iFoo = 0; iFoo < nFoo; ++i) 。
p pointer 代表某種型態的指標,通常還會配合其他的型態。
sz string end of zero 以 NULL 結尾的字串型態,通常是 char * ,至於為什麼要叫 sz ,則是學別人的,也有人用 str (因為 string ),當然,也有人只有 s 開頭的(因為沒有別的型態衝突)。
t time_t 不一定是 time_t ,代表時間的型態應該都可以使用 t 開頭的變數。
u unsigned 無號數,通常會配合其他的型態一起使用。
w width 代表寬度的變數,通常會和 h 開頭一起用。
Variable Naming
變數命名
由於除了型態和前置字元之外,剩下部分的命名就跟英文沒什麼差別了,所以也無法一一列出,在這邊只會列出一些大方向,以及建議,沒有一定,重點有兩個,首先,自己要看得懂,用起來覺得方便(簡潔),再來,就是希望別人也能一眼就看出來,不然就失去了定標準的意義了。
最簡單的,像是 i, j, x, y 還有 tmp 之類的變數,不用增加多餘的字元了。
一定要使用之前的提的前置字元和型態。
還有一套專門給 Windows Programming 的型態命名法,像是 wnd, bmp 之類的,可能有空再整理出來。
對於不在上面所列的型態(前置字元應該不會有例外才對),取縮寫的方式如下
刪母音,例如 region 可以縮成 rgn (這例子是學 MFC 的), table 可以縮成 tbl 。
取前面數個字元,例如 prefix 可以縮成 pre , binary可以縮成 bin 。
上面兩種,取意義比較明顯的那一個,像是 prefix 只取母音的話變成 prfx ?而 region 取前三個字元的話變成 reg ,太廣泛了,要想到 region 很難,我猜很多人會想到 register 吧?
有時可以多取幾個字元,像是 function 縮成 fun 或許不怎麼樣,但是縮成 func 就不錯(也有人縮成 fn 就是了)。
若是懶得想,或是都沒什麼意義,建議還是採用刪母音的方法。
最後,能短就短,不過有時為了意義要表達清楚,最後整個單字都用上了也無可厚非,看個人喜好,在這邊是建議越簡潔越好。
一個整數陣列要取成 aiFoo 還是 iaFoo 呢?我的習慣是前者,我覺得知道這個變數是一個 array 比知道每個元素是 int 要來得重要;它是一個陣列,而不是一個整數。
同理 piFoo 和 ipFoo 我也是喜歡 piFoo ,因為說到底, piFoo 是一個指標,不是一個整數。
那 paiFoo 跟 apiFoo 有什麼不同呢?前者代表一個指向(整數)陣列變數的指標;後者則是代表一個陣列變數,其中每個元素都是一個(整數)指標。這樣又有什麼不同?邏輯上不同罷了,程式碼都是 int * * ,不過在使用上會有差, (*paiFoo)[i] 跟 *(apiFoo[i]) 才是有意義的,而 *(paiFoo[i]) 跟 (*apiFoo)[i] 可能會使程式當掉。
其他的部分,就把整個變數的意義直接用英文打出來即可;取縮寫的技巧可以參考上面提的。
例如一個依據原子密度來排序的陣列,其中第 i 個元素表示第 i 個原子的密度是在所有原中子的名次,這個名次,我想用 int 就可以了,那麼這個陣列變數我會命名成 aiAtmDnstyRnk ;其中 Atm 代表原子( atom ),Dnsty 代表密度( density ),而 Rnk 代表排名 (Rank) ,至於順序則是用語言的習慣,"原子密度的排名",最後一個詞最為重要,通常在語法上是名詞,有人說英文是 rank of atom-density (rank of density of atom) ,這就真的看個人了,我喜歡把代表性的名詞放在最後,也可以放在最前,其他的順序,就真的不重要了,甚至去掉變成 aiRnk 也無妨(在不會混淆的情況下)。
再強調一次,能短就短,有時取太長,還不如在宣告的地方加個註解來得清楚。
Function Prefixes
函式前置字元
Prefix Meaning Description
i inline inline functions, which are after "inline" keyword (in C++). Because inline functions are more efficient so I create the prefix character. Then whenever I want to call some functions, I could find inline functions first for efficiency.
擁有 inline 這個關鍵字的函式,這是只有在 C++ 中才有的, C 語言並沒有。另外,使用這個函式並沒有什麼特別,我當初定的原因只是因為 inline function 執行起來比較有效率,加上這個前置字元時,我會知道呼叫這個函式會比較有效率罷了。
m module, member You could think them as module functions or member functions. But I like conceptual explanation more personally. So whenever I name an function, not only class member functions will be prefixed by m_. Even some public class member functions, I wouldn't use m as their prefixes. Only pretected and private class member functions are prefixed by _m_. Besides, some functions in a library, although they are not class member functions, if that library doesn't provide a interface to access these functions (so-called module function), then I would use _m_ as their prefixes.
模組和成員函式,這兩種解釋都通,但因為我個人比較喜歡概念上的解釋,所以通常在使用上,不是只有在物件中(物件才有成員函式)才會用到 m 開頭的變數,事實上,在物件中若是 public 的成員函式,我依然不會加上 m 的前置字元,只有受保護的成員函式( protected, private )我才會用;而在某些函式庫中的函式,就算不是一個物件的成員函式,但是若是這個函式庫沒有提供此函式的介面給外界呼叫,如同 m 的變數一樣,我稱之為模組函式,應以 m 開頭。
s static In principle, I will use s_ on those functions which are specified by static keyword (in C/C++).
靜態函式,原則上,使用 static 這個關鍵字(在 C/C++ 語言中)的函式,我就會使用 s 開頭。
other There is usually no local functions. So global (so-called "other") functions are the most common. I list a identical function in four representations: _i_foo(), _m_foo(), _s_foo(), and foo().
通常函式是不分全域還是區域的,所以這邊所謂的其他,就是一般的全域函式。這邊列出同一個變數,用四種表示法分別為 _i_foo(), _m_foo(), _s_foo(), foo() 。
函式的前置字元應該是我自己定的,至少,我沒有參考過別人的文件;至於之所以變數的前置字元是 m_ 開頭,而函式則由 _m_ 開頭,這多一個底線的原因,主要是因為排序的關係,我希望同類的函式能排在一起,而是沒多這個底線的話,那麼所有模組函式可能會和一個 m 開頭的一般函式排在一起,我覺得很醜,所以才這樣定。
Function Naming
函式命名
函式命名和變數命名大同小異,除了函式不要求型態之外(沒看過有人要求,我目前也覺得還好),還有我自訂的函式前置字元,應該沒什麼特別的,但是下面還是列出一些在函式命名和變數命名上的差別。
通常在 C 中,大家喜歡全小寫的函式名,中間用底線分開;例如 get_car_speed() 。
通常在 C++ 中,大家喜歡用大寫的字來分隔單字;例如 GetCarSpeed() 。
通常在 JAVA 中,大家喜歡用小寫開頭,但是又用大寫的字來分隔單字;例如 getCarSpeed() 。
函式通常最重要的意義在動詞,放在最前面,像上面的例子"取得車子的速度",用這個順序幾乎沒有人會有意見。
函式取縮寫的習慣似乎不怎麼普遍,完全不縮寫也蠻常見的,不過還是可以取,像是 rgb2hsv() (原本應該是 convert_red_green_blue_format_to_hue_saturation_value_format() 才對);其中 red 等縮成 r 蠻直覺的,而用 2 取代 to 更是常見;然後利用 to 的意義,進而省略 convert 也蠻直覺的。
上面的例子,雖然很特別又有點極端,但是又說明了一次,能短就短,何況函式的註解相當重要,所以與其取一個長到懶得打的函式名,還不如在旁邊寫一個詳細的註解。
Indent
縮排
使用跳格 (Tab) 字元當作最基本的單位。
跳格建議設為 8 個空白,很多人會不習慣,但是空白越多,在視覺上越輕鬆,用一用就會習慣了。
函式的左大括號,必須換行,例如
void foo() // here need a new-line
{
...;
...;
...; // here need a new-line, too
}
迴圈 (for, while) 以及條件 (if, switch) 的左大括號,皆不用換行,例如
for (...) { // watch here, only one new-line
...;
...; // here need a new-line, too
}
while (...) { // watch here, only one new-line
...;
...; // here need a new-line, too
}
if (...) { // watch here, only one new-line
...;
...; // here need a new-line, too
}
if (...) { // watch here, only one new-line
...;
...; // here need a new-line, too
} else { // watch here, only one new-line
...;
...; // here need a new-line, too
}
switch (...) { // watch here, only one new-line
case ...: // no any word after colon
...; // here need a tab
break; // here need a new-line, too
default:
...; // here need a new-line
}
結構 (struct) 宣告的左大括號,必須換行,例如
struct // here need a new-line
{ // here need a new-line, too
double d;
int i; // here need a new-line
};
下面是我常用的程式碼,順便提一下 typedef 應該如何使用
typedef struct _DOUBLEandINDEX // the struct name is a suggestion
{
double d;
int i;
} DOUBLEandINDEX, * LPDOUBLEandINDEX; // here are two types
上面有提到結構的命名,通常跟其變數或是函式命名的原則差不多,但是如果要用來當一種型態的話(使用 typedef 定義過後),我建議全部用大寫;至於上面名稱中使用小寫的 and ,是為了分隔前後兩個單字,這樣可以一目了然這個結構倒底長什麼樣子;記得在 struct 後面的名稱中加個底線(也有人喜歡加 tag 這個單字,小寫),這樣後面才能使用。
物件 (class) 宣告的左大括號,必須換行,例如
class Car // here need a new-line
{ // here need a new-line, too
protected: // no tab, need a new-line
BOOL m_fDoorClosed;
int m_iSpeed;
public:
void CloseDoor();
void OpenDoor();
void SlowDown(int iDiff);
void SpeedUp(int iDiff); // here need a new-line
}
除了縮排外,上面提到物件的命名,跟結構不同,我建議首字大寫,其餘字母小寫,分隔時也使用大寫,例如 class MyCar ;中間的程式碼我沒有省略,主要是因為我想提醒一下之前的命名法,實際上使用大概就像這樣。
我要提一個自己訂的名詞,單行縮排(英文就先用 inline indent 好了,所以也可以叫行內縮排),因為我雖然有看過別人這樣縮,但是沒看過文件提起過,下面用實例來說明比較方便
double * adDnsty = NULL; // density of each atom, need to free
int i; // iteration variable
int iMax = -1; // index of maximum rank
int iMin = -1; // index of minimum rank
double * adDnsty = NULL; // density of each atom, need to free
int i; // iteration variable
int iMax = -1; // index of maximum rank
int iMin = -1; // index of minimum rank
看得出上面兩塊的差別嗎?我在每行中,都加入了不等的跳格鍵,為了什麼?只是為了方便閱讀而已!通常一個變數的宣告,習慣好的話,會有四個部分,型態,名稱,初始值,以及註解;上面第二塊的程式碼,就有分別對這四塊部分做縮排,現在我把跳格鍵畫出來再看一次
double *^t adDnsty = NULL; // density of each atom, need to free
int^t ^t i;^t ^t // iteration variable
int^t ^t iMax^t = -1;^t // index of maximum rank
int^t ^t iMin^t = -1;^t // index of minimum rank
上面有底線的部分,就是跳格鍵,不過有些地方是連續兩個跳格鍵,所以我會加上 ^t 的記號;而那些沒有底線的空格,就是一個空白鍵而已。不難看出來,我只對四個部分做縮排(所以一行有至少有三個跳鍵)。
而像 double * ,雖然中間有空白,但我認為整個(包括星號)才算是型態,所以就用空白;或是 = NULL ,因為大家都有 = 這個字元,所以只要前後都用跳格鍵,那這邊就算用空白也會很整齊,何必讓整行又變得更長?
另外像是 int i 那行,沒有初始值,或是 double * 比其他型態都多了一格跳格,這時就會發現 ^t 的數目不太一樣,調整這跳格字元的數目就是我所謂的單行縮排,通常在變數宣告的地方使用,例如結構宣告,物件宣告,在函式開頭做區域變數的宣告等,有時可以一群一群相關的變數才對齊,否則相當費時且如果有個變數更動,全部都得更著改,反正,只要自己看起來覺得整齊就可以了。
詳見
源起
I have developed a lot of programs, so alought there is no one formal description, I already have one set of naming rules. Recently, I took apart in several group-developing projects. These exprements make me feel that: something such as naming is unnecessary (even awkward) if it is hardness; but is important to list them if you need a general direction.
雖然不能稱得上非常多,但是我個人開發過的程式還算不少,所以雖然沒有很正式的規定,但是已經有自己的一套命名規則;加上最近參加過幾次團體開發的經驗,覺得這種東西,硬性規定的確沒有必要,或者說,還蠻鳥的,不過提些大方向,尤其是條列出來,還蠻重要的。
This document will list several basic naming rules, maybe a few concepts about source code writing. In addition, I will suggest some minor issues, such as indenting. But just like many other documents on Internet, do that as a natural sequence is most important.
這份文件打算條列出一些基本的命名規則,或許還會寫寫一些關於原始碼的想法,什麼地方該怎麼寫,什麼地方不該怎麼寫;還有些更無關緊要的,像是縮排要幾格?我會提些建議,但是就像其他網路上文件提過的,自己習慣還是最重要的。
Variable Prefixes
變數前置字元
Prefix Meaning Description
g global Always used on global variables. But some global variable such as those in a library but that library doesn't provide any interface to access them, because they are global only in their own library, conceptually they are local in that module. So I will use m_ as a prefix on these variables.
通常使用在全域變數上,但是有些全域變數,像是一個函式庫的全域變數,因為它只在那個函式庫中全域,在概念上,我覺得反而比較像是那個模組裡的區域變數,所以這時我會選用 m 開頭,而不是使用 g 。
m module, member You could think them as module variables or member variables. But I like conceptual explanation more personally. So whenever I name an variable, not only class member variables will be prefixed by m_. Above situation is a example. Basically, only variables which span two or more modules will be prefixed by g_.
模組和成員變數,這兩種解釋都通,但因為我個人比較喜歡概念上的解釋,所以通常在使用上,不是只有在物件中(物件才有成員變數)才會用到 m 開頭的變數,上面提的例子就是一個,基本上,會超越模組(跨模組)使用的變數我才會以 g 開頭。
s static In principle, I will use s_ on those variables which are specified by static keyword (in C/C++). Of course, this kind of variables is rare. If you have a lot of s_ varialbes, there are two possible reasons: 1. your program is very special, or 2. you make a mistake! (maybe you confuse the concept of static variable.) Besides, some people like use st_ to be a prefix of static variables. Maybe st_ comes from static, but since one character will not confuse with other prefix characters, why we use two characters?
靜態變數,原則上,使用 static 這個關鍵字(在 C/C++ 語言中)的變數,我就會使用 s 開頭,當然,這在程式中是很少使用的,靜態變數多有兩種可能,一個是程式特殊,另一個就是你寫錯了!或是搞錯靜態變數的概念,基本上應該是不常用到才對;另外也有人喜歡用 st 開頭,取自 static 吧,不過既然一個字元就不會重複了,沒什麼必要用兩個字元。
local There is usually no any prefix before local variable. Here "local" means usually the area between two braces of functions. I list a identical variable in four representations: g_foo, m_foo, s_foo, and foo.
區域變數,通常前面是不會有任何前置字元的,而這邊所謂的區域,通常在函式的兩個大括號中間。這邊列出同一個變數,用四種表示法分別為 g_foo, m_foo, s_foo, foo 。
Variables Type
變數型態
Type Meaning Description
a array 老樣子,我還是喜歡邏輯上的意義,所以同樣是 int * 的型態,如果變數是代表著一個整數陣列,就用 a 開頭,若是代表著一個整數指標,則用 p 開頭。
ch char 字元型態,我不知道有沒有人只有 c 開頭的就是了。
d double 就目前來講,我希望所有浮點數都是倍精確度,所以只有定義 d 開頭的代表 double ,而沒有指定 float 所使用的縮寫。
f flag 其實應該就是布林代數,不過 C/C++ 語言中並沒有這個型態,我個人習慣使用 BOOL 來代表這個抽象型態;其實還有另一種命名法,就是使用 b 開頭代表 boolean ,然後 f 就可以用來代表 float ,但是至少目前我打算採用。
h handle, height 如果用過 handle 這種抽象型態的人,應該知道特地定出來是有其必要的,當然,如果沒用過,就別理它了;另外在不會搞混的情況下,代表高度的變數用 h 開頭也不錯。
i index, int 通常都用來當做索引變數,或是整數變數,雖然我比較喜歡前者,但是整數實在是太常用了,所以在我的程式碼中還是蠻常採用後者。
l long 長整數。
n number 通常用來代表量的變數,配合 i 使用不錯,例如 for (iFoo = 0; iFoo < nFoo; ++i) 。
p pointer 代表某種型態的指標,通常還會配合其他的型態。
sz string end of zero 以 NULL 結尾的字串型態,通常是 char * ,至於為什麼要叫 sz ,則是學別人的,也有人用 str (因為 string ),當然,也有人只有 s 開頭的(因為沒有別的型態衝突)。
t time_t 不一定是 time_t ,代表時間的型態應該都可以使用 t 開頭的變數。
u unsigned 無號數,通常會配合其他的型態一起使用。
w width 代表寬度的變數,通常會和 h 開頭一起用。
Variable Naming
變數命名
由於除了型態和前置字元之外,剩下部分的命名就跟英文沒什麼差別了,所以也無法一一列出,在這邊只會列出一些大方向,以及建議,沒有一定,重點有兩個,首先,自己要看得懂,用起來覺得方便(簡潔),再來,就是希望別人也能一眼就看出來,不然就失去了定標準的意義了。
最簡單的,像是 i, j, x, y 還有 tmp 之類的變數,不用增加多餘的字元了。
一定要使用之前的提的前置字元和型態。
還有一套專門給 Windows Programming 的型態命名法,像是 wnd, bmp 之類的,可能有空再整理出來。
對於不在上面所列的型態(前置字元應該不會有例外才對),取縮寫的方式如下
刪母音,例如 region 可以縮成 rgn (這例子是學 MFC 的), table 可以縮成 tbl 。
取前面數個字元,例如 prefix 可以縮成 pre , binary可以縮成 bin 。
上面兩種,取意義比較明顯的那一個,像是 prefix 只取母音的話變成 prfx ?而 region 取前三個字元的話變成 reg ,太廣泛了,要想到 region 很難,我猜很多人會想到 register 吧?
有時可以多取幾個字元,像是 function 縮成 fun 或許不怎麼樣,但是縮成 func 就不錯(也有人縮成 fn 就是了)。
若是懶得想,或是都沒什麼意義,建議還是採用刪母音的方法。
最後,能短就短,不過有時為了意義要表達清楚,最後整個單字都用上了也無可厚非,看個人喜好,在這邊是建議越簡潔越好。
一個整數陣列要取成 aiFoo 還是 iaFoo 呢?我的習慣是前者,我覺得知道這個變數是一個 array 比知道每個元素是 int 要來得重要;它是一個陣列,而不是一個整數。
同理 piFoo 和 ipFoo 我也是喜歡 piFoo ,因為說到底, piFoo 是一個指標,不是一個整數。
那 paiFoo 跟 apiFoo 有什麼不同呢?前者代表一個指向(整數)陣列變數的指標;後者則是代表一個陣列變數,其中每個元素都是一個(整數)指標。這樣又有什麼不同?邏輯上不同罷了,程式碼都是 int * * ,不過在使用上會有差, (*paiFoo)[i] 跟 *(apiFoo[i]) 才是有意義的,而 *(paiFoo[i]) 跟 (*apiFoo)[i] 可能會使程式當掉。
其他的部分,就把整個變數的意義直接用英文打出來即可;取縮寫的技巧可以參考上面提的。
例如一個依據原子密度來排序的陣列,其中第 i 個元素表示第 i 個原子的密度是在所有原中子的名次,這個名次,我想用 int 就可以了,那麼這個陣列變數我會命名成 aiAtmDnstyRnk ;其中 Atm 代表原子( atom ),Dnsty 代表密度( density ),而 Rnk 代表排名 (Rank) ,至於順序則是用語言的習慣,"原子密度的排名",最後一個詞最為重要,通常在語法上是名詞,有人說英文是 rank of atom-density (rank of density of atom) ,這就真的看個人了,我喜歡把代表性的名詞放在最後,也可以放在最前,其他的順序,就真的不重要了,甚至去掉變成 aiRnk 也無妨(在不會混淆的情況下)。
再強調一次,能短就短,有時取太長,還不如在宣告的地方加個註解來得清楚。
Function Prefixes
函式前置字元
Prefix Meaning Description
i inline inline functions, which are after "inline" keyword (in C++). Because inline functions are more efficient so I create the prefix character. Then whenever I want to call some functions, I could find inline functions first for efficiency.
擁有 inline 這個關鍵字的函式,這是只有在 C++ 中才有的, C 語言並沒有。另外,使用這個函式並沒有什麼特別,我當初定的原因只是因為 inline function 執行起來比較有效率,加上這個前置字元時,我會知道呼叫這個函式會比較有效率罷了。
m module, member You could think them as module functions or member functions. But I like conceptual explanation more personally. So whenever I name an function, not only class member functions will be prefixed by m_. Even some public class member functions, I wouldn't use m as their prefixes. Only pretected and private class member functions are prefixed by _m_. Besides, some functions in a library, although they are not class member functions, if that library doesn't provide a interface to access these functions (so-called module function), then I would use _m_ as their prefixes.
模組和成員函式,這兩種解釋都通,但因為我個人比較喜歡概念上的解釋,所以通常在使用上,不是只有在物件中(物件才有成員函式)才會用到 m 開頭的變數,事實上,在物件中若是 public 的成員函式,我依然不會加上 m 的前置字元,只有受保護的成員函式( protected, private )我才會用;而在某些函式庫中的函式,就算不是一個物件的成員函式,但是若是這個函式庫沒有提供此函式的介面給外界呼叫,如同 m 的變數一樣,我稱之為模組函式,應以 m 開頭。
s static In principle, I will use s_ on those functions which are specified by static keyword (in C/C++).
靜態函式,原則上,使用 static 這個關鍵字(在 C/C++ 語言中)的函式,我就會使用 s 開頭。
other There is usually no local functions. So global (so-called "other") functions are the most common. I list a identical function in four representations: _i_foo(), _m_foo(), _s_foo(), and foo().
通常函式是不分全域還是區域的,所以這邊所謂的其他,就是一般的全域函式。這邊列出同一個變數,用四種表示法分別為 _i_foo(), _m_foo(), _s_foo(), foo() 。
函式的前置字元應該是我自己定的,至少,我沒有參考過別人的文件;至於之所以變數的前置字元是 m_ 開頭,而函式則由 _m_ 開頭,這多一個底線的原因,主要是因為排序的關係,我希望同類的函式能排在一起,而是沒多這個底線的話,那麼所有模組函式可能會和一個 m 開頭的一般函式排在一起,我覺得很醜,所以才這樣定。
Function Naming
函式命名
函式命名和變數命名大同小異,除了函式不要求型態之外(沒看過有人要求,我目前也覺得還好),還有我自訂的函式前置字元,應該沒什麼特別的,但是下面還是列出一些在函式命名和變數命名上的差別。
通常在 C 中,大家喜歡全小寫的函式名,中間用底線分開;例如 get_car_speed() 。
通常在 C++ 中,大家喜歡用大寫的字來分隔單字;例如 GetCarSpeed() 。
通常在 JAVA 中,大家喜歡用小寫開頭,但是又用大寫的字來分隔單字;例如 getCarSpeed() 。
函式通常最重要的意義在動詞,放在最前面,像上面的例子"取得車子的速度",用這個順序幾乎沒有人會有意見。
函式取縮寫的習慣似乎不怎麼普遍,完全不縮寫也蠻常見的,不過還是可以取,像是 rgb2hsv() (原本應該是 convert_red_green_blue_format_to_hue_saturation_value_format() 才對);其中 red 等縮成 r 蠻直覺的,而用 2 取代 to 更是常見;然後利用 to 的意義,進而省略 convert 也蠻直覺的。
上面的例子,雖然很特別又有點極端,但是又說明了一次,能短就短,何況函式的註解相當重要,所以與其取一個長到懶得打的函式名,還不如在旁邊寫一個詳細的註解。
Indent
縮排
使用跳格 (Tab) 字元當作最基本的單位。
跳格建議設為 8 個空白,很多人會不習慣,但是空白越多,在視覺上越輕鬆,用一用就會習慣了。
函式的左大括號,必須換行,例如
void foo() // here need a new-line
{
...;
...;
...; // here need a new-line, too
}
迴圈 (for, while) 以及條件 (if, switch) 的左大括號,皆不用換行,例如
for (...) { // watch here, only one new-line
...;
...; // here need a new-line, too
}
while (...) { // watch here, only one new-line
...;
...; // here need a new-line, too
}
if (...) { // watch here, only one new-line
...;
...; // here need a new-line, too
}
if (...) { // watch here, only one new-line
...;
...; // here need a new-line, too
} else { // watch here, only one new-line
...;
...; // here need a new-line, too
}
switch (...) { // watch here, only one new-line
case ...: // no any word after colon
...; // here need a tab
break; // here need a new-line, too
default:
...; // here need a new-line
}
結構 (struct) 宣告的左大括號,必須換行,例如
struct // here need a new-line
{ // here need a new-line, too
double d;
int i; // here need a new-line
};
下面是我常用的程式碼,順便提一下 typedef 應該如何使用
typedef struct _DOUBLEandINDEX // the struct name is a suggestion
{
double d;
int i;
} DOUBLEandINDEX, * LPDOUBLEandINDEX; // here are two types
上面有提到結構的命名,通常跟其變數或是函式命名的原則差不多,但是如果要用來當一種型態的話(使用 typedef 定義過後),我建議全部用大寫;至於上面名稱中使用小寫的 and ,是為了分隔前後兩個單字,這樣可以一目了然這個結構倒底長什麼樣子;記得在 struct 後面的名稱中加個底線(也有人喜歡加 tag 這個單字,小寫),這樣後面才能使用。
物件 (class) 宣告的左大括號,必須換行,例如
class Car // here need a new-line
{ // here need a new-line, too
protected: // no tab, need a new-line
BOOL m_fDoorClosed;
int m_iSpeed;
public:
void CloseDoor();
void OpenDoor();
void SlowDown(int iDiff);
void SpeedUp(int iDiff); // here need a new-line
}
除了縮排外,上面提到物件的命名,跟結構不同,我建議首字大寫,其餘字母小寫,分隔時也使用大寫,例如 class MyCar ;中間的程式碼我沒有省略,主要是因為我想提醒一下之前的命名法,實際上使用大概就像這樣。
我要提一個自己訂的名詞,單行縮排(英文就先用 inline indent 好了,所以也可以叫行內縮排),因為我雖然有看過別人這樣縮,但是沒看過文件提起過,下面用實例來說明比較方便
double * adDnsty = NULL; // density of each atom, need to free
int i; // iteration variable
int iMax = -1; // index of maximum rank
int iMin = -1; // index of minimum rank
double * adDnsty = NULL; // density of each atom, need to free
int i; // iteration variable
int iMax = -1; // index of maximum rank
int iMin = -1; // index of minimum rank
看得出上面兩塊的差別嗎?我在每行中,都加入了不等的跳格鍵,為了什麼?只是為了方便閱讀而已!通常一個變數的宣告,習慣好的話,會有四個部分,型態,名稱,初始值,以及註解;上面第二塊的程式碼,就有分別對這四塊部分做縮排,現在我把跳格鍵畫出來再看一次
double *^t adDnsty = NULL; // density of each atom, need to free
int^t ^t i;^t ^t // iteration variable
int^t ^t iMax^t = -1;^t // index of maximum rank
int^t ^t iMin^t = -1;^t // index of minimum rank
上面有底線的部分,就是跳格鍵,不過有些地方是連續兩個跳格鍵,所以我會加上 ^t 的記號;而那些沒有底線的空格,就是一個空白鍵而已。不難看出來,我只對四個部分做縮排(所以一行有至少有三個跳鍵)。
而像 double * ,雖然中間有空白,但我認為整個(包括星號)才算是型態,所以就用空白;或是 = NULL ,因為大家都有 = 這個字元,所以只要前後都用跳格鍵,那這邊就算用空白也會很整齊,何必讓整行又變得更長?
另外像是 int i 那行,沒有初始值,或是 double * 比其他型態都多了一格跳格,這時就會發現 ^t 的數目不太一樣,調整這跳格字元的數目就是我所謂的單行縮排,通常在變數宣告的地方使用,例如結構宣告,物件宣告,在函式開頭做區域變數的宣告等,有時可以一群一群相關的變數才對齊,否則相當費時且如果有個變數更動,全部都得更著改,反正,只要自己看起來覺得整齊就可以了。
詳見
Java Programming Style Guide
Introduction
The Java language gives you all the room you need to write code that would be very difficult for others to understand. Java also permits you to write code that is very easy to understand. Most development teams would prefer the latter.
A style guide provides provides a map so that the code generated by a group of programmers will be consistent and, therefore, easier to read and maintain. Many people do not care for the style guide offered by Sun. This document is one alternative.
This document covers most areas where there could be confusion or difference of opinion. Areas that have never been a problem in our experience are undocumented.
詳見
The Java language gives you all the room you need to write code that would be very difficult for others to understand. Java also permits you to write code that is very easy to understand. Most development teams would prefer the latter.
A style guide provides provides a map so that the code generated by a group of programmers will be consistent and, therefore, easier to read and maintain. Many people do not care for the style guide offered by Sun. This document is one alternative.
This document covers most areas where there could be confusion or difference of opinion. Areas that have never been a problem in our experience are undocumented.
詳見
如何開啟 Eclipse 的行號
在使用 Eclipse 編輯 Android 程式碼時,預設是不顯示行號的,這對於程式碼維護是很不方便的。如何開啟編輯區的行號呢?請依照下述步驟操作:
由功能表選取 Windows -> Perferences。
在對話方塊中選取 General -> Editors -> Text Editors,核選 Show line numbers,最後按 OK 鈕即可。
http://blog.e-happy.com.tw/?p=750
由功能表選取 Windows -> Perferences。
在對話方塊中選取 General -> Editors -> Text Editors,核選 Show line numbers,最後按 OK 鈕即可。
http://blog.e-happy.com.tw/?p=750
開啟main.xml看不到Graphical Layout !!
如果匯入以前做的專案,在開啟main.xml版面配置檔時,只會出現 Design 及 Source 二個編輯模式,找不到過去的 Graphical Layout 及 main.xml 標籤了!
為什麼會這樣?
這個問題的原因是因為,Eclipse 沒有正確的判讀出這個檔案是版面配置檔,而將它視為一般的 XML,所以就直接以 xml 編輯器去開啟。
怎麼解決?
所以解決的方法很簡單,請選取要開啟的 main.xml 檔後按下右鍵,在快顯功能表選按 Open With > Android Layout Editor 即可,如此又會正常將 main.xml 版面配置檔開啟在有 Graphical Layout 的編輯模式下。
http://blog.e-happy.com.tw/?p=1196#more-1196
為什麼會這樣?
這個問題的原因是因為,Eclipse 沒有正確的判讀出這個檔案是版面配置檔,而將它視為一般的 XML,所以就直接以 xml 編輯器去開啟。
怎麼解決?
所以解決的方法很簡單,請選取要開啟的 main.xml 檔後按下右鍵,在快顯功能表選按 Open With > Android Layout Editor 即可,如此又會正常將 main.xml 版面配置檔開啟在有 Graphical Layout 的編輯模式下。
http://blog.e-happy.com.tw/?p=1196#more-1196
2011年11月29日 星期二
102個常見問題收集整理(FLASH初學者參考)
說明:該部分整體為一些基本的常見問題的收集,不一定做到完整,盡力為初學者解決必要的常見問題,至於錯誤的地方請提出以便修改.該整理貼版權歸閃吧論壇所有,在此表示感謝
1,FLASH是什麼?
FLASH電影是專為網頁服務的畫像或動畫(當然,也可用於其他用途)。主要含有向量圖形,但是也可以包含導入的點陣圖和音效,還可以把流覽者輸入的資訊同交互性聯繫起來,從而產生交互效果,也可以生成非線性電影動畫。該動畫可以同其他的WEB程式產生交互作用。網頁設計師可以利用FLASH來創建瀏覽控制器、動態LOGOS、含有同步音效的長篇動畫、甚至可以產生完整的、富於敏感性的網頁。
2,怎樣做一個簡單地FLASH動畫?
首先,打開你的FLASH軟體,繪製一個圓形(左面地圓形工具可以直接繪製),然後按F8添加為一個Symbol,再圖層第十影格地位置按F6鍵添加一個關鍵影格,並適當移動該Symbol的位置,最後在第一影格位置點滑鼠右鍵選擇Motion就行了.
3,什麼叫向量圖?
向量圖可以任意縮放而不影響Flash的畫質,點陣圖圖像一般只作為靜態元素或背景圖,Flash並不擅長處理點陣圖圖像的動作,應避免點陣圖圖像元素的動畫。
4,如何迅速地對齊不同Frame中的物件?
用 Inspector “Ctrl+Alt+I” 直接輸入座標。
或是工具欄〉〉視窗〉〉面板〉〉排列“Ctrl+K” 調出排列面板來。圖例
5,怎樣調節一個Symbol/MC地透明度?
選中Symbol/MC,選項欄找到Modify(修改) 〉〉 Instance (實例)〉〉Color effect (效果)〉〉 Alpha(透明度) 調整就可以了
6,做好地Flash放在html上面以後,它老是迴圈,怎麼能夠讓它不進行迴圈?
最後一個影格地Action設置成Stop(停止)
7,怎樣給我的FLASH做一個預載入地LOADING?
用Action語法地if frame is loaded來實現,新建一層,這層專門放Action,
第一影格,
ifFrameLoaded ("場景", frame) {//假如場景中地影格數已經載入
goto and play() //跳至並播放某某影格(自己設定)
}
第二影格,
goto and play("場景1", 1)//跳至並播放第一影格迴圈
再加上一個load地MC迴圈播放在這兩影格的中間,就OK了。
什麼?你要非常詳細地LOADING?那就當這個源碼吧,夠詳細了.
源始碼碼下載
8,怎樣點擊一個按鈕打開一個頁面html而不是一個影格.
製作一個按鈕,上面地AS直接寫:
on (release) {
[$nbsp][$nbsp][$nbsp][$nbsp]getURL ("***.html");
}
這裏地***.html就是你要打開地頁面檔案名,當然也可以是某某URL位址
9,在按鈕地OVER禎放置了一個很大地MC,為什麼要沒有點擊到按鈕滑鼠就變成了手地狀態?
按鈕真正啟動區是在HIT(按下) 影格地位置,如果想控制按鈕的位置為一定值,可以在HIT影格繪製一個透明地圖形來判斷.
10,如果遮罩滑鼠右鍵?FS命令都是什麼意思?
fscommand ("fullscreen", "true/false");(全螢幕設置,TRUE開,FALSE關)
fscommand ("showmenu", "true/false");(右鍵功能表設置,TRUE顯示,FALSE不顯示)
fscommand ("allowscale", "true/false");(縮放設置,TRUE自由縮放,FALSE調整畫面不影響影片本身的尺寸)
fscommand ("trapallkeys", "true/false");(快捷鍵設置,TRUE快捷鍵開,FALSE快捷鍵關)
fscommand ("exec");(EXE程式調用)
fscommand ("quit");(退出關閉窗口)
11,在FLASH中的字體總是很模糊,用變清晰地辦法嗎?
寫好文本以後CTRL+T打開文本設置面板,在最後地文本框選項那裏框選使用設計字體就行了.(注意最好使用宋體,尺寸為12或者8,這樣比較工整)
12,我想做一個MTV,怎麼導入聲音呀?
很簡單,CTRL+R導入你地音效檔案就行了.
13,我製作地MTV聲音和歌詞總是不同步.
CTRL+F打開禎控制面板,右邊找到聲音選項卡,調整聲音地同步效果為STREM(音訊資料流程)模式就行了.
14,FLASH地發佈設置都有些什麼?透明背景怎樣設置?
圖解圖1圖2圖3
15,怎樣可以做出很漂亮地字體特效?
用第三方軟體Swish和Swfx.
16,我在ACTION面板地高級模式為什麼字體總是很小?
17,如何載入一個SWF檔
loadMovieNum地技巧
添加一個空地MC。實體名為ok,ACTION:
loadMovie ("dr/test.swf", "_root.ok");
控制這個MC的位置,大小等相對屬性(Property)就會影響調入SWF的位置和大小。
setProperty ("mc", _xscale, "****");
setProperty ("mc", _yscale, "****");
setProperty ("mc", _x, "****");
setProperty ("mc", _y, "****");
setProperty ("mc", _Alpha, "****"); ............
18,如何導入一個背景透明度效果比較好地點陣圖?
推薦使用PNG格式(FIREWORK),FLASH對PNG點陣圖地融合透明效果支持相當好。
http://nncho.pixnet.net/blog/post/27623656
本文章來自於神魂顛倒論壇 http://bbs.flash2u.com.tw
原文網址:http://bbs.flash2u.com.tw/dispbbs_180_9813_1_1.html
說明:該部分整體為一些基本的常見問題的收集,不一定做到完整,盡力為初學者解決必要的常見問題,至於錯誤的地方請提出以便修改.該整理貼版權歸閃吧論壇所有,在此表示感謝
1,FLASH是什麼?
FLASH電影是專為網頁服務的畫像或動畫(當然,也可用於其他用途)。主要含有向量圖形,但是也可以包含導入的點陣圖和音效,還可以把流覽者輸入的資訊同交互性聯繫起來,從而產生交互效果,也可以生成非線性電影動畫。該動畫可以同其他的WEB程式產生交互作用。網頁設計師可以利用FLASH來創建瀏覽控制器、動態LOGOS、含有同步音效的長篇動畫、甚至可以產生完整的、富於敏感性的網頁。
2,怎樣做一個簡單地FLASH動畫?
首先,打開你的FLASH軟體,繪製一個圓形(左面地圓形工具可以直接繪製),然後按F8添加為一個Symbol,再圖層第十影格地位置按F6鍵添加一個關鍵影格,並適當移動該Symbol的位置,最後在第一影格位置點滑鼠右鍵選擇Motion就行了.
3,什麼叫向量圖?
向量圖可以任意縮放而不影響Flash的畫質,點陣圖圖像一般只作為靜態元素或背景圖,Flash並不擅長處理點陣圖圖像的動作,應避免點陣圖圖像元素的動畫。
4,如何迅速地對齊不同Frame中的物件?
用 Inspector “Ctrl+Alt+I” 直接輸入座標。
或是工具欄〉〉視窗〉〉面板〉〉排列“Ctrl+K” 調出排列面板來。圖例
5,怎樣調節一個Symbol/MC地透明度?
選中Symbol/MC,選項欄找到Modify(修改) 〉〉 Instance (實例)〉〉Color effect (效果)〉〉 Alpha(透明度) 調整就可以了
6,做好地Flash放在html上面以後,它老是迴圈,怎麼能夠讓它不進行迴圈?
最後一個影格地Action設置成Stop(停止)
7,怎樣給我的FLASH做一個預載入地LOADING?
用Action語法地if frame is loaded來實現,新建一層,這層專門放Action,
第一影格,
ifFrameLoaded ("場景", frame) {//假如場景中地影格數已經載入
goto and play() //跳至並播放某某影格(自己設定)
}
第二影格,
goto and play("場景1", 1)//跳至並播放第一影格迴圈
再加上一個load地MC迴圈播放在這兩影格的中間,就OK了。
什麼?你要非常詳細地LOADING?那就當這個源碼吧,夠詳細了.
源始碼碼下載
8,怎樣點擊一個按鈕打開一個頁面html而不是一個影格.
製作一個按鈕,上面地AS直接寫:
on (release) {
[$nbsp][$nbsp][$nbsp][$nbsp]getURL ("***.html");
}
這裏地***.html就是你要打開地頁面檔案名,當然也可以是某某URL位址
9,在按鈕地OVER禎放置了一個很大地MC,為什麼要沒有點擊到按鈕滑鼠就變成了手地狀態?
按鈕真正啟動區是在HIT(按下) 影格地位置,如果想控制按鈕的位置為一定值,可以在HIT影格繪製一個透明地圖形來判斷.
10,如果遮罩滑鼠右鍵?FS命令都是什麼意思?
fscommand ("fullscreen", "true/false");(全螢幕設置,TRUE開,FALSE關)
fscommand ("showmenu", "true/false");(右鍵功能表設置,TRUE顯示,FALSE不顯示)
fscommand ("allowscale", "true/false");(縮放設置,TRUE自由縮放,FALSE調整畫面不影響影片本身的尺寸)
fscommand ("trapallkeys", "true/false");(快捷鍵設置,TRUE快捷鍵開,FALSE快捷鍵關)
fscommand ("exec");(EXE程式調用)
fscommand ("quit");(退出關閉窗口)
11,在FLASH中的字體總是很模糊,用變清晰地辦法嗎?
寫好文本以後CTRL+T打開文本設置面板,在最後地文本框選項那裏框選使用設計字體就行了.(注意最好使用宋體,尺寸為12或者8,這樣比較工整)
12,我想做一個MTV,怎麼導入聲音呀?
很簡單,CTRL+R導入你地音效檔案就行了.
13,我製作地MTV聲音和歌詞總是不同步.
CTRL+F打開禎控制面板,右邊找到聲音選項卡,調整聲音地同步效果為STREM(音訊資料流程)模式就行了.
14,FLASH地發佈設置都有些什麼?透明背景怎樣設置?
圖解圖1圖2圖3
15,怎樣可以做出很漂亮地字體特效?
用第三方軟體Swish和Swfx.
16,我在ACTION面板地高級模式為什麼字體總是很小?
17,如何載入一個SWF檔
loadMovieNum地技巧
添加一個空地MC。實體名為ok,ACTION:
loadMovie ("dr/test.swf", "_root.ok");
控制這個MC的位置,大小等相對屬性(Property)就會影響調入SWF的位置和大小。
setProperty ("mc", _xscale, "****");
setProperty ("mc", _yscale, "****");
setProperty ("mc", _x, "****");
setProperty ("mc", _y, "****");
setProperty ("mc", _Alpha, "****"); ............
18,如何導入一個背景透明度效果比較好地點陣圖?
推薦使用PNG格式(FIREWORK),FLASH對PNG點陣圖地融合透明效果支持相當好。
http://nncho.pixnet.net/blog/post/27623656
本文章來自於神魂顛倒論壇 http://bbs.flash2u.com.tw
原文網址:http://bbs.flash2u.com.tw/dispbbs_180_9813_1_1.html
說明:該部分整體為一些基本的常見問題的收集,不一定做到完整,盡力為初學者解決必要的常見問題,至於錯誤的地方請提出以便修改.該整理貼版權歸閃吧論壇所有,在此表示感謝
2011年11月27日 星期日
Adobe擁抱HTML5? 「Wallaby」工具可將Flash轉成HTML5
T.S./ 編譯 – 2011/03/09
Adobe推出實驗性軟體,可供開發人員將Flash轉換為非專屬性之網頁內容,但這目前仍在持續發展當中,未來還有一段路要走。
2010年,Adobe技術長Kevin Lynch批評蘋果(Apple),其拒絕讓搭載iOS的平台裝置支援Flash的做法,是一種違反公平競爭的行為。
該公司並且信誓誓旦旦地表示,將設計一套軟體,允許開發人員採用HTML5格式來編寫網頁內容。HTML是一種新興網頁開發語言,蘋果甚至向Adobe喊話,應該放開心胸來接納。
即使是蘋果這樣的大廠,面對來自監理機關與開發商的壓力,該公司也只能改變做法,不再堅持原本的限制,甚至允許採用Adobe的Flash Package,將Flash應用程式轉換為iOS平台能夠支援之內容。但儘管如此,Adobe仍持續加強其產品對HTML5的支援。
最新的進展,是本週二(3月8日)時Adobe宣佈,推出名為「袋鼠」(Wallaby)的軟體,這套軟體是Adobe實驗室所提供之實驗性測試產品,做為Flash轉換成HTML5的工具。
透過這套軟體,使用者可以把Flash Professional檔案轉換為HTML5編碼格式,之後還可以使用任何文字編輯器,或諸如Dreamwaver之類的創作開發工具進行編寫。
Adobe產品經理John Nack表示,該公司避免陷入與蘋果公司的意氣之爭,那已經變成一種糾結不清的辯論:一方是免費、開放工具的擁護者,另一方則是認定應該要採取收費、獨佔模式支持者。
但是,對Adobe來說,該公司的工作是協助客戶解決問題,而不是成為政治角力的競技場。
John Nack在部落格中貼文指出,長期以來,已有數百萬人透過Flash來磨鍊他們的網頁動畫製作能力,這些都是Adobe的客戶,而這些人現在需要的,是希望讓自己製作的網頁內容能夠在任何裝置上呈現,即使該裝置本身並不支援Flash。
不過,「Wallaby」目前仍有一些限制。許多Flash功能,像是動態遮罩、3D轉換、濾鏡與圖層混合等功能,這套軟體就無法支援。最主要的原因,在於目前和HTML5格式尚未能完全對應。
其中,捨棄Flash的ActionScript編碼,而非轉譯為JavaScript,這也就意味著必須創建一個新的編程邏輯。
而對於動畫的編譯,將會採用CSS語法,而非JavaScript或其它類似的跨瀏覽器框架,但這套語法適用於Chrome或Safari瀏覽器,但在微軟的IE瀏覽器卻無法使用。
另外,圖形部分,也是會轉換成SVG向量圖形或JPEG位元圖形,而不是轉成HTML5的Canvas格式。Canvas是另一種SDVG格式,Google和Mozilla均已在推廣HTML5的遊戲。
Adobe推出實驗性軟體,可供開發人員將Flash轉換為非專屬性之網頁內容,但這目前仍在持續發展當中,未來還有一段路要走。
2010年,Adobe技術長Kevin Lynch批評蘋果(Apple),其拒絕讓搭載iOS的平台裝置支援Flash的做法,是一種違反公平競爭的行為。
該公司並且信誓誓旦旦地表示,將設計一套軟體,允許開發人員採用HTML5格式來編寫網頁內容。HTML是一種新興網頁開發語言,蘋果甚至向Adobe喊話,應該放開心胸來接納。
即使是蘋果這樣的大廠,面對來自監理機關與開發商的壓力,該公司也只能改變做法,不再堅持原本的限制,甚至允許採用Adobe的Flash Package,將Flash應用程式轉換為iOS平台能夠支援之內容。但儘管如此,Adobe仍持續加強其產品對HTML5的支援。
最新的進展,是本週二(3月8日)時Adobe宣佈,推出名為「袋鼠」(Wallaby)的軟體,這套軟體是Adobe實驗室所提供之實驗性測試產品,做為Flash轉換成HTML5的工具。
透過這套軟體,使用者可以把Flash Professional檔案轉換為HTML5編碼格式,之後還可以使用任何文字編輯器,或諸如Dreamwaver之類的創作開發工具進行編寫。
Adobe產品經理John Nack表示,該公司避免陷入與蘋果公司的意氣之爭,那已經變成一種糾結不清的辯論:一方是免費、開放工具的擁護者,另一方則是認定應該要採取收費、獨佔模式支持者。
但是,對Adobe來說,該公司的工作是協助客戶解決問題,而不是成為政治角力的競技場。
John Nack在部落格中貼文指出,長期以來,已有數百萬人透過Flash來磨鍊他們的網頁動畫製作能力,這些都是Adobe的客戶,而這些人現在需要的,是希望讓自己製作的網頁內容能夠在任何裝置上呈現,即使該裝置本身並不支援Flash。
不過,「Wallaby」目前仍有一些限制。許多Flash功能,像是動態遮罩、3D轉換、濾鏡與圖層混合等功能,這套軟體就無法支援。最主要的原因,在於目前和HTML5格式尚未能完全對應。
其中,捨棄Flash的ActionScript編碼,而非轉譯為JavaScript,這也就意味著必須創建一個新的編程邏輯。
而對於動畫的編譯,將會採用CSS語法,而非JavaScript或其它類似的跨瀏覽器框架,但這套語法適用於Chrome或Safari瀏覽器,但在微軟的IE瀏覽器卻無法使用。
另外,圖形部分,也是會轉換成SVG向量圖形或JPEG位元圖形,而不是轉成HTML5的Canvas格式。Canvas是另一種SDVG格式,Google和Mozilla均已在推廣HTML5的遊戲。
Google Swiffy 讓你的 Flash 投入 HTML5 懷抱
由 Bin Chen 於 5 days 之前發表
文章分類: 網際網路
FLASH 已經慢慢離開舞台,但是 Flash 還是有精彩的地方,是時候讓他們繼續發揮餘熱。在今年 6 月份的時候,Google Swiffy 就可以將用戶的 SWF 文件轉換為 HTML5 ,並且支援大多數的 ActionScript 交互型Flash。這次 Google Swiffy 再接再厲,發布了一個 Flash Plugin,可以配合你的 Flash Professional 軟件直接使用,你可以在 Commands 選單裡一鍵將你的 Flash 文件快速轉換為 HTML 5 。所以你如果正在玩 Flash CS4 以上的版本,那麼可以到引用來源裡下載這個應用,讓你的 FLASH 投入到 HTML5 的懷抱中去吧。是的,HTML5 相對於 FLASH ,現在就如同冬天裡的一把火,很暖和。
http://chinese.engadget.com/2011/11/21/google-swiffy-extension-exports-flash-to-html5-actionscript-fan/
文章分類: 網際網路
FLASH 已經慢慢離開舞台,但是 Flash 還是有精彩的地方,是時候讓他們繼續發揮餘熱。在今年 6 月份的時候,Google Swiffy 就可以將用戶的 SWF 文件轉換為 HTML5 ,並且支援大多數的 ActionScript 交互型Flash。這次 Google Swiffy 再接再厲,發布了一個 Flash Plugin,可以配合你的 Flash Professional 軟件直接使用,你可以在 Commands 選單裡一鍵將你的 Flash 文件快速轉換為 HTML 5 。所以你如果正在玩 Flash CS4 以上的版本,那麼可以到引用來源裡下載這個應用,讓你的 FLASH 投入到 HTML5 的懷抱中去吧。是的,HTML5 相對於 FLASH ,現在就如同冬天裡的一把火,很暖和。
http://chinese.engadget.com/2011/11/21/google-swiffy-extension-exports-flash-to-html5-actionscript-fan/
HTML5火力展示!九個讓你驚奇的HTML5應用
筆者在近日寫了數篇文章談論HTML5在影片播放的優勢、以及其對於Flash所產生的威脅,但對於大多數的讀者來講仍然感受不到 HTML5的威力,在這一篇文章中,筆者將介紹十個精選的HTML5應用,請各位讀者一同體驗HTML5的魅力!
瀏覽器需求
目前IE的HTML5支援仍然相當有限,無論是6/7/8均只提供了有限的HTML5及CSS3支援。而對於其他的瀏覽器而言,各家目前的實做進度不一,因此若是讀者有興趣試玩以下介紹的網站,還請安裝Google Chrome或是Mozilla Firefox等對新的網頁標準支援較佳的瀏覽器,並且根據網站上的建議瀏覽器進行瀏覽,這樣才能確保得到完整的效果。
Sketchpad
Sketchpad是一個完全建構在HTML5的canvas功能上的線上繪圖軟體,雖然與一般桌面上的Photoshop等繪圖軟體還具備一定程度的差異,但是與使用Flash的Photoshop線上版比起來,執行時明顯順暢很多。
另外值得注意的一點是,在最後儲存的時候也是使用canvas中的toDataUrl()函式,即時的將畫面在瀏覽器即時轉換成為一般可以下載的png檔。
http://www.inside.com.tw/2010/05/06/9-amazing-html5-applications
瀏覽器需求
目前IE的HTML5支援仍然相當有限,無論是6/7/8均只提供了有限的HTML5及CSS3支援。而對於其他的瀏覽器而言,各家目前的實做進度不一,因此若是讀者有興趣試玩以下介紹的網站,還請安裝Google Chrome或是Mozilla Firefox等對新的網頁標準支援較佳的瀏覽器,並且根據網站上的建議瀏覽器進行瀏覽,這樣才能確保得到完整的效果。
Sketchpad
Sketchpad是一個完全建構在HTML5的canvas功能上的線上繪圖軟體,雖然與一般桌面上的Photoshop等繪圖軟體還具備一定程度的差異,但是與使用Flash的Photoshop線上版比起來,執行時明顯順暢很多。
另外值得注意的一點是,在最後儲存的時候也是使用canvas中的toDataUrl()函式,即時的將畫面在瀏覽器即時轉換成為一般可以下載的png檔。
http://www.inside.com.tw/2010/05/06/9-amazing-html5-applications
I'm Coolman: 漫談Flash 與 HTML5
I'm Coolman: 漫談Flash 與 HTML5: 戰火的緣由 最近由於 Apple iPhone/iPad/iPod 等熱賣產品始終不願意支援Flash , Jobs 甚至放話 Flash是舊時代的產物 , HTML5才是未來, 雖然 Adobe CEO 努力的解釋正在持續改善Flash的效能 ,但Jobs 的回應是,請 ...
2011年11月15日 星期二
flash加入到我的最愛
今天學生問了這個問題
發現Yahoo知識有解答
覺得很實用
所以貼出來推薦給各位
步驟一.先在使用flash的網頁html裡加入下方語法在前
步驟二.在flash按鈕加入動作
on (release) {
getURL("javascript:bookmark()");
}
▓修改說明
修改步驟一藍色部分的網站名稱
參考資料 http://www.hsiu28.net
http://tw.knowledge.yahoo.com/question/question?qid=1507040800370
發現Yahoo知識有解答
覺得很實用
所以貼出來推薦給各位
步驟一.先在使用flash的網頁html裡加入下方語法在前
步驟二.在flash按鈕加入動作
on (release) {
getURL("javascript:bookmark()");
}
▓修改說明
修改步驟一藍色部分的網站名稱
參考資料 http://www.hsiu28.net
http://tw.knowledge.yahoo.com/question/question?qid=1507040800370
精品中的精品!2009國外獲獎Flash網站
看了這篇文章
看了這些網站
實在有震撼
推薦給各位做為未來努力的目標
http://pcedu.pconline.com.cn/sj/wz/flash/1001/2022749.html
看了這些網站
實在有震撼
推薦給各位做為未來努力的目標
http://pcedu.pconline.com.cn/sj/wz/flash/1001/2022749.html
2011年10月26日 星期三
2011年9月18日 星期日
我看賽德克巴萊的觀後感
今天好不容易趁著愛兒去上學的空檔,夫妻兩才有著機會去看電影。坦白說,這已經好幾年未進戲院看電影了,即使當初海角七號當紅時,我也沒去看,最後是在電腦前看的。
上週我姨爹的小孩去看說很無聊,今天去看也與排骨兄的女兒坐一起,她似乎也無法完全融入這電影的情節。思考一下原因,我想現在新一代的小朋友對於過去歷史的了解還停留在片段的知識。還記得當年所念的歷史,對於莫拉魯道的介紹其實很簡單。相較現在而言,可以看到的補充資料就多很多。
例如
1.http://zh.wikipedia.org/zh-hant/%E9%9C%A7%E7%A4%BE%E4%BA%8B%E4%BB%B6
2.http://www.puli.com.tw/wushi/
3.http://www.taiwanus.net/history/4/43.htm
經過這段時間陸續我也看得不少報導,看的電影後,對這段歷史就有更多的感觸。
如果,這部片是由賽德克族人來拍,我想這會更具意義。
然而,這卻是由來自台南的魏德聖導演所拍那就更令人動容。
怎麼說呢
魏導是先接受阿榮片廠老闆的建議,先拍海角七號來籌資,最後才拍這齣史詩鉅片。
還記得當初海角七號的動畫一看就知道這艘船就是假的
但是,這次我看橫濱丸號應該是動畫,但已經不易辨識。了不起...
此外,導演先將1895的這段歷史作為鋪陳,在介紹人止關一役後日軍的勢力正式進入霧社。日本對於台灣這殖民地其實應該不是以殖民地來看待,而應該是領土的延伸,所以,其實有對台灣的治理花了一番功夫。
然而,為何還是爆發的這霧社事件的嚴重衝突,死傷慘重。
我從電影有體驗到
今天如果我是莫拉魯道,那會掀起這場事件嗎?
我想這應該還是會的
為什麼??
上有政策下有對策,也就是上情不能下達。這些第一線面對原住民的警察平時就是欺壓原住民,壓榨原住民,對於原住民的文化沒有深入了解,將其Gaya的精神適當轉換。不可否認,獵人頭坦白說還是一件不文明的作法,但是如果獵動物的頭應該就沒問題。今天原住民好心請客,結果卻遭受拒絕而爆發衝突。登門道歉卻又被拒絕,讓這位如英雄般的頭目十分窩儾,新仇加舊恨,終於爆發不可收拾的後果。
想想,這件事才具今天也不過八十年,許多黨年曾經參與的人現在都還健在
八十年過去了
生長在這片土地的我們,看看執政當局對於原住民做了些什麼??
人口增加了
獵場變少了
那他們該如何安置
我相信,目前原住民部落生活遠比八十年前要好很多
但是,在平地的原住民其實還是弱勢族群
還留在部落的老的老小的小,不單是人口老化,可以獲得的資源與照顧相對少。如何讓原住民們可以發揮所長,改善生活,讓他們可以過得富裕一些,這樣社會問題可能可以獲得改善。
我曾經去過地利村-布農族部落上過電腦課
我到部落其實很辛苦,中午只能吃乾麵。每位來上課的學員都渴望有厲害的電腦老師可以讓他們可以很快學會電腦的技術。跟他們的互動真得不錯,但是我的往返成本實在不低。因為所可以有的補助實在有限呀...
上週我姨爹的小孩去看說很無聊,今天去看也與排骨兄的女兒坐一起,她似乎也無法完全融入這電影的情節。思考一下原因,我想現在新一代的小朋友對於過去歷史的了解還停留在片段的知識。還記得當年所念的歷史,對於莫拉魯道的介紹其實很簡單。相較現在而言,可以看到的補充資料就多很多。
例如
1.http://zh.wikipedia.org/zh-hant/%E9%9C%A7%E7%A4%BE%E4%BA%8B%E4%BB%B6
2.http://www.puli.com.tw/wushi/
3.http://www.taiwanus.net/history/4/43.htm
經過這段時間陸續我也看得不少報導,看的電影後,對這段歷史就有更多的感觸。
如果,這部片是由賽德克族人來拍,我想這會更具意義。
然而,這卻是由來自台南的魏德聖導演所拍那就更令人動容。
怎麼說呢
魏導是先接受阿榮片廠老闆的建議,先拍海角七號來籌資,最後才拍這齣史詩鉅片。
還記得當初海角七號的動畫一看就知道這艘船就是假的
但是,這次我看橫濱丸號應該是動畫,但已經不易辨識。了不起...
此外,導演先將1895的這段歷史作為鋪陳,在介紹人止關一役後日軍的勢力正式進入霧社。日本對於台灣這殖民地其實應該不是以殖民地來看待,而應該是領土的延伸,所以,其實有對台灣的治理花了一番功夫。
然而,為何還是爆發的這霧社事件的嚴重衝突,死傷慘重。
我從電影有體驗到
今天如果我是莫拉魯道,那會掀起這場事件嗎?
我想這應該還是會的
為什麼??
上有政策下有對策,也就是上情不能下達。這些第一線面對原住民的警察平時就是欺壓原住民,壓榨原住民,對於原住民的文化沒有深入了解,將其Gaya的精神適當轉換。不可否認,獵人頭坦白說還是一件不文明的作法,但是如果獵動物的頭應該就沒問題。今天原住民好心請客,結果卻遭受拒絕而爆發衝突。登門道歉卻又被拒絕,讓這位如英雄般的頭目十分窩儾,新仇加舊恨,終於爆發不可收拾的後果。
想想,這件事才具今天也不過八十年,許多黨年曾經參與的人現在都還健在
八十年過去了
生長在這片土地的我們,看看執政當局對於原住民做了些什麼??
人口增加了
獵場變少了
那他們該如何安置
我相信,目前原住民部落生活遠比八十年前要好很多
但是,在平地的原住民其實還是弱勢族群
還留在部落的老的老小的小,不單是人口老化,可以獲得的資源與照顧相對少。如何讓原住民們可以發揮所長,改善生活,讓他們可以過得富裕一些,這樣社會問題可能可以獲得改善。
我曾經去過地利村-布農族部落上過電腦課
我到部落其實很辛苦,中午只能吃乾麵。每位來上課的學員都渴望有厲害的電腦老師可以讓他們可以很快學會電腦的技術。跟他們的互動真得不錯,但是我的往返成本實在不低。因為所可以有的補助實在有限呀...
2011年8月9日 星期二
2011年8月3日 星期三
2011年7月11日 星期一
Server驚魂記
不知道最近是怎麼了
我的三台Linux主機在這一個月內紛紛掛點
前兩台是以Web Server為主
所幸有備份資料
幾乎在很短了時間內就完成系統重灌,資料復原。
但唯獨這台mail server差點搞掛我
這些天努力k 書,網路找資料
最後
我放棄原本的Fedroa 6的系統,改投效CentOS 5.6
經過星期六一天先期模擬
今天一天的安裝與設定
終於
皇天不負苦心人
讓我給裝好了
看到OpenWebmail 裝好測試成功
看到Outlook順利將信完成收發
此時心中一顆石頭終於可以放下
我的三台Linux主機在這一個月內紛紛掛點
前兩台是以Web Server為主
所幸有備份資料
幾乎在很短了時間內就完成系統重灌,資料復原。
但唯獨這台mail server差點搞掛我
這些天努力k 書,網路找資料
最後
我放棄原本的Fedroa 6的系統,改投效CentOS 5.6
經過星期六一天先期模擬
今天一天的安裝與設定
終於
皇天不負苦心人
讓我給裝好了
看到OpenWebmail 裝好測試成功
看到Outlook順利將信完成收發
此時心中一顆石頭終於可以放下
標籤:
CentOS,
linux,
mail server,
openwebmail,
postifx,
web server
2011年7月6日 星期三
2011年6月18日 星期六
2011年6月17日 星期五
2011年6月13日 星期一
是誰埋葬了北洋水師?
深愛歷史的我
多次在媒體與書籍上看到關於這則訊息
就過去我所看到的教科書
對照最近所看到的史料
好像
這是一個值得深入研究的問題
大都會文化‧時事歷史報,針對北洋艦隊陸續有三篇
第一篇 是誰埋葬了北洋水師?
http://epaper.pchome.com.tw/archive/last.htm?s_date=old&s_dir=20101216&s_code=0684&s_cat=#c693637
第二篇 北洋水師是腐敗和糜爛的軍隊?
http://epaper.pchome.com.tw/archive/last.htm?s_date=old&s_dir=20101223&s_code=0684&s_cat=#c693638
第三篇 北洋海軍的命運──縱有匹夫之勇,終究無力回天
http://epaper.pchome.com.tw/archive/last.htm?s_date=old&s_dir=20101230&s_code=0684&s_cat=#c693639
看歷史可以知興替
北洋水師的失敗,決定甲午戰爭。
甲午戰爭決定的台灣的命運
失敗其實並不可恥
最怕的是不知道錯哪裡
而一錯再錯
那麼最後即使是神仙也難救呀..
多次在媒體與書籍上看到關於這則訊息
就過去我所看到的教科書
對照最近所看到的史料
好像
這是一個值得深入研究的問題
大都會文化‧時事歷史報,針對北洋艦隊陸續有三篇
第一篇 是誰埋葬了北洋水師?
http://epaper.pchome.com.tw/archive/last.htm?s_date=old&s_dir=20101216&s_code=0684&s_cat=#c693637
第二篇 北洋水師是腐敗和糜爛的軍隊?
http://epaper.pchome.com.tw/archive/last.htm?s_date=old&s_dir=20101223&s_code=0684&s_cat=#c693638
第三篇 北洋海軍的命運──縱有匹夫之勇,終究無力回天
http://epaper.pchome.com.tw/archive/last.htm?s_date=old&s_dir=20101230&s_code=0684&s_cat=#c693639
看歷史可以知興替
北洋水師的失敗,決定甲午戰爭。
甲午戰爭決定的台灣的命運
失敗其實並不可恥
最怕的是不知道錯哪裡
而一錯再錯
那麼最後即使是神仙也難救呀..
2011年6月10日 星期五
ERP 與 CRM 合而為一 -- Dolibarr ERP & CRM
在進入資訊化時代之後,過去採用人工處理或以紙本進行控管的事務,都慢慢轉向電子化流程。因應這些需求也產生各類不同用途的軟體系統,甚至專門設計開發這些軟體系統的公司也因應而生。受限於人力與物力最佳化的原則,大多數的公司或組織可能無力自行開發相關的系統,因此常見的運作模式,是採用市面上現成的產品,或是委請軟體開發商代為設計合適的系統。事實上,有許多此類免費軟體可以線上下載使用,而且大多數都是採用開放原始碼的方式進行散佈。這些軟體系統即使內建功能一開始不敷需求,亦可自行修改程式以加入新功能。甚至有部份系統設計採用外掛模組的方式,學有專精的程式設計師或熱心人士得以自行開發模組,使用者可以決定是否安裝這些外掛模組以便擴充功能。如此一來,不僅不需擔心功能太少無法滿足使用需求,也不必擔心為了新增功能到系統之中,必須自行培育相關的技術人員。以本文所介紹的 Dolibarr ERP & CRM 為例,便是一套採用開放式原始碼、提供外掛模組支援功能的線上輔助系統。
http://www.openfoundry.org/tw/foss-programs/8287-erp-crm-dolibarr-erp-a-crm
http://www.openfoundry.org/tw/foss-programs/8287-erp-crm-dolibarr-erp-a-crm
2011年5月19日 星期四
令人討厭的病毒-HTML/Iframe.B.Gen
這病毒是我在5/7究發現了
5/11進行大規模掃蕩
可是還是有問題
在病毒的清理上基本來說不是很難
以下是簡單的範例
5/11進行大規模掃蕩
可是還是有問題
在病毒的清理上基本來說不是很難
以下是簡單的範例
處理的方式
將以下這些刪除即可
不過
因為這次影響到主機為XOOPS
還好我有備份程式
不然
template_c這資料夾慘遭淪陷
刪除又會造成系統掛掉
所幸
有備份
不然可就糟糕了
經過5/18一晚的努力
終於破解問題
讓網站恢復
訂閱:
文章 (Atom)