現有命名方法彙整及比較

命名規則是為了增加識別和可讀性,沒有強制的規定,但一旦選擇其中一種,會建議編寫時統一格式;而化學、天文、生物也有其慣用的命名方法;大部分的程式語言也有對此進行建議,以統一風格。

在程式設計的命名上,當變數、函式及類別等名稱由兩個以上的單字組合,就可以使用現有的命名方法,增加識別和可讀性。目前已經出現的命名方法,可以分為Underscore(底線式)、Camel-case(駝峰式)及Hungarian notation(匈牙利命名法)三大類。此文進行彙整,並以個人經驗,探討其優缺點。


一、Underscore(底線式):

單字之間使用底線分隔,GNU/Linux環境中最常見,例如:string_name。

優點:

使用底線取代空格,閱讀上比較直覺易懂。

缺點:

比起Camel-case使用字首大寫取代空格,底線比較少在日常輸入,因此需要適應。


二、Camel-case(駝峰式):

單字之間使用大寫分隔,又可以分為Lower Camel-case(小駝峰式),或Upper
Camel-case(大駝峰式),而後者又稱為Pascal-case(帕斯卡式)。

Lower Camel-case(小駝峰式):
第一個字母用小寫,此變化常用在變數名稱上,例如stringName。

Upper Camel-case(大駝峰式):
第一個字母用大寫,此變化常用在函數、類別、屬性及命名空間上,例如StringName。

優點:

  • 可以利用名稱前綴的大小寫,區分變數,以及函數、類別等其他型別。
  • 單字之間使用大寫取代底線,能夠減少名稱的長度,減少程式碼超出視窗被遮擋的情況。

缺點:

  • 比起Underscore使用底線取代空格,閱讀上較不直覺易懂。

三、Hungarian notation(匈牙利命名法)

在Camel-case(駝峰式)的基礎上,在名稱前綴添加預先約定好的縮寫,例如約定如下:

b       boolean
c       character
str     C++ String
si      short integer
i       integer
li      long integer
f       floating point
d       double-precision floating point
ld      long double-precision floating point
sz      Old-Style Null Terminated String
if      Input File Stream
is      Input Stream
of      Output File Stream
os      Output Stream
S       declaring a struct
C       declaring a class

Source: http://web.mst.edu/~cpp/common/hungarian.html

根據縮寫用途的不同,又可分為Systems Hungarian,以及Apps Hungarian。

Systems Hungarian
名稱前前綴代表的是實際的資料型別,例如:strName。

Apps Hungarian
名稱前綴代表的是目的或其他提示,例如:usName,其中us代表unsafe,為了避免Code injection或XSS,之後必須進行過濾處理。

優點:

  • 不需要IDE支援,就能夠從名稱能看出型別。
  • 制定好的編碼規則,能夠在搜尋時更加統一易找。
  • 制定好的編碼規則,能夠在命名及輸入上更快。

缺點:

  • 需要另外學習編碼規則。
  • 現代IDE已經可以輕易的區分型別,在資料型別上,此方法稍嫌多餘。
  • 變數型別修改時,名稱也必須修正維護。
  • 採用縮寫來命名,對新手較不友善,例如szName,不如stringZeroName。
  • 也更容易造成歧義,例如szName,更容易被誤讀成其他意思,也難以透過猜測關鍵字搜尋。

Rolex百事圈與藍黑圈搜尋趨勢分析

最近一直在百事可樂與蝙蝠俠間猶豫不決,因此產生了一個疑問,鋼版百事圈和藍黑圈倒底誰比較紅?以及雜誌上的說法到底有沒有根據?


從Chrono24上可以發現新版藍黑圈平均售價63.4萬,比百事圈60.1萬還要來得高;但又觀察到台灣市場,百事圈售價略高藍黑圈約1萬,因此發揮科男的精神,特別做了一下調查。


從Google Trends可以發現,2018年3月鋼板百事圈發布以後,馬上爆款,之後逐步與舊版三板帶藍黑圈打平;而2019年3月新版藍黑圈發布以後,一併拉抬了舊版的聲勢,甚至高過新版。而在近兩個月內,全球新版藍黑圈詢問度52%略高於百事圈48%,但若加上舊版藍黑圈,則藍黑圈整體詢問度70%遠高於百事圈30%。


不看舊版藍黑圈的話,近兩個月在美國,藍黑圈詢問度52%百事圈48%;在日本,藍黑圈
47%百事圈53%。台灣數據過少無法判斷。


結論:
近期數據顯示,若只看新款,兩者持平;其中美國偏愛蝙蝠俠,歐洲持平,亞洲偏愛百事可樂。若納入舊款,蝙蝠俠整體熱門程度高於百事可樂,且舊款詢問度更高。

流言終結者:
Q: 百事圈更紅?
A: 2018年百事圈的聲勢,其實與2013年舊版藍黑圈相當;2019年新版藍黑圈走勢則有待觀察。
Q: 百事圈帶動藍黑圈銷量?
A: 舊版藍黑圈2013至2018年的搜尋量相當穩定,2018年3月百事圈的發布,並未明顯拉抬舊版藍黑圈的詢問度。
Q: 新版藍黑圈帶動舊版的銷量?
A: 2019年3月新版藍黑圈的出現,明顯拉抬了舊版的聲勢,但詢問度仍是舊版比較高,可能是因為五珠鍊接受度不如三板帶。

未來趨勢:
GMT Master II百事圈與藍黑圈等雙色陶瓷圈,在銷售上一直有相乘效應,在今年新版藍黑圈的宣傳推動下,估計已停產的舊版藍黑圈,還會在二手市場熱個幾年。

參考:
2012至2019年的搜尋概況 – Rolex GMT MasterII 鋼版 雙色陶瓷圈 相關型號

Oculus Quest使用心得與對比

我在對VR產生興趣後,依序體驗過下列裝置:

  • Acer AH101 + GTX970 (自行購入)
  • HTC Vive (展場試玩)
  • PS VR (展場試玩)
  • Samsung Odyssey + GTX1080Ti (自行購入)
  • Oculus Go (自行購入)

根據上述經驗,以及對技術的好奇心,入手Oculus Quest三日後,得到了一些使用心得,在此跟大家分享。日後有買新遊戲,也會新增一些感想。

硬體:

  • 定位已足夠精準,又可以追蹤環境,可見四鏡頭inside-out tracking會變主流;但使用Tilt Brush等應用,手把太靠近頭部時,會無法定位,故outside-in在特定場景無法取代。
  • 每眼1440*1600 AMOLED 72Hz,解析度比HTC Vive及PS VR好很多,顯示器與Go差異不大,受益於處理晶片提升,遊戲畫質比Go更好,而且紗窗效應比同樣是AMOLED的三星Odyssey輕微。
  • 採用Fresnel lens黑底白字時,眩光比較嚴重。
  • 由於Oculus未公布FOV,個人目測跟其他設備差不多,約為110度;但有來自Reddit網友CodeF53的分享,顯示其約90度,如下圖。
    Comparison of the Horizontal FOV of different headsets
  • IPD可調範圍為58-72mm
  • Headset和手把,外觀都很精緻,重量很輕。
  • 手把握感舒適,但震動很弱,回饋感差。
  • Quest控制器比WMR省電很多;都是依賴光源追蹤,但前者採用紅外線LED,後者採用一般白光LED。
  • 揚聲器音質比Go好,音量更大;但是另外接中高階耳機,可以給你更好的臨場感。
  • 不知道為什麼左右各有一個耳機孔,有點多餘。
  • 越界時可直接看到黑白的外界影像,除了防止碰撞外,移動也不用取下headset。
  • 不用高端PC顯卡和接一堆線,真的很方便。
  • 附帶的超長usb type-c很實用,但有磁吸會更好。
  • 有機會跟game console競爭,畫質接近switch。
  • Go訂製的近視鏡片,因模具不符,無法用在Quest。
  • 2019年底預覽的手勢追蹤(Hand Tracking),玩遊戲不用手持控制器,其使用深度學習技術進行手勢追蹤與辨識。本人透過刷韌體提前體驗了,發現其已達到可用的程度;缺陷是四鏡頭inside-out tracking時,手掌擋到手指時就無法使用了,且目前幾乎找不到遊戲支援,待官方正式發表。

軟體:

  • 由於控制器不同,Go和Rift買的內容不能在Quest用;此做法方便官方管理,但對使用者來說不太合理。
  • 遊玩不超過2小時的應用或遊戲,可在14天內退款,每月限退5單。
  • 新手教學First StepsFirst Contact超美,體驗超棒,女生會很喜歡。4顆星
  • Rec Room體驗與PC相同,是個免費下載的小遊戲社交平台,但提供遊戲內付費內容,目前最強的社交遊戲,新手入門首選。5顆星
  • 名作Beat Saber體驗與PC相同,是款音樂節奏遊戲,特點是使用光劍跟隨節奏劈砍磚塊。4.5顆星
  • 名作Superhot體驗與PC相同,是款慢動作的射擊遊戲,有許多精心設計的關卡,值得一玩。5顆星
  • Sports Scramble擁有網球、保齡球與棒球三種遊戲,是我目前玩過最好玩的VR sport。5顆星
  • Drop Dead是款使用手槍打僵屍的遊戲,最早是在Go接觸的,當時控制器僅有三軸感測,體驗已經相當不錯,Quest版本因受益於顯示晶片、頭部與手部追蹤技術的提升,使其畫質及體驗有大幅提升。4顆星
  • Vader Immortal畫質比想像中好,體驗很棒,但玩法與內容有限,只推薦給電影粉絲 。4顆星
  • 名作Robo Recall受限於硬體性能,畫質不如PC,但玩法依舊,有大作的風範,是槍戰遊戲的一時之選。4.5顆星
  • Dance Central是一款跳舞遊戲,我最初是在Xbox Kinect接觸到,改成VR版以後,畫質差,玩法差,體驗差;像是廉價外包的遊戲,千萬別買。2顆星
  • National Geographic Explore VR是一款探險遊戲,有南極和祕魯馬丘比丘兩個場景,畫面夢幻,體驗好。4顆星。
  • Journey of the Gods是一款動作RPG遊戲,畫面夢幻,有點像是VR版的薩爾達傳說。4顆星
  • Gadgeteer是款排骨牌的益智遊戲,適合喜歡慢步調的玩家;可惜玩法稍嫌單調。3.5顆星
  • Drunkn Bar Fight是一款酒吧大亂鬥遊戲,可以撿各種武器打人,蠻紓壓的,但玩法過於簡單,而且只有三個關卡,內容過於匱乏。3.5顆星
  • Pistol Whip是一款節奏槍戰遊戲,風格宛如Superhot,但非慢動作的玩法,使其節奏更加緊湊,是我目前玩過最好玩的VR槍戰。 5顆星

包裝:

  • 包裝盒厚實堅固且精美,可重複用於日常收納。
  • 另外加購的Travel case很輕巧,獨特設計專為收納及攜帶Quest。

產業:

  • Facebook Oculus這次從成本、整合及生態上,把VR進入門檻大幅拉低;本來VR PC及headset一組至少要1000美金,現在standalone只需要400美金,而且不用經過繁瑣的設置,有助於吸引更多人入手。
  • Windows MR standalone入手成本也很低,但硬體、整合和內容上還不如Oculus。
  • HTC硬體走高端,但成本、整合和生態全輸,快看不到Oculus的車尾燈了。
實際遊玩照片(可不接任何纜線)

獅子評分

評分:4 分,滿分為 5。

主流通訊協定介紹(RPC、SOAP、REST)

Remote Procedure Call (RPC)

起源於1976年,允許Client遠端呼叫Server的子程式,然後將執行結果返回給Client;當時的傳輸資料常使用二進制格式,為了統一資料傳輸格式,隨後出現了XML-RPC, XML作為資料交換語言的RPC機制。

Simple Object Access Protocol (SOAP)

起源於1998年,由於RPC經常被Firewall及Proxy Server阻擋,為解決兼容及安全性問題,採用HTTP(起源於1989)是更好的方法,SOAP還提供了一套標準方法讓程式間可以互相通信。可以簡單把SOAP當作RPC+XML+HTTP(POST only)+有狀態的通信方法。

Representational State Transfer (REST/RESTful)

起源於2000年,由於SOAP過於複雜且依賴狀態,REST提倡使用標準的HTTP中的四種動作GET、PUT、POST及DELETE,以及Uniform Resource Identifier (URI)來指定資源,降低開發的複雜性。可以簡單把REST當作PRC+XML+HTTP(GET,PUT,POST,DELETE)+URI+無狀態的通信方法。

發展趨勢

REST風格相比XML-RPC及SOAP更加簡潔易用,而JSON資料交換語言相較XML更加輕量,目前大多數的Web Service都採用REST+JSON作為傳輸方法。

2019上半年中國AI產業研究筆記

●2018年中國AI領域融資1311億,增長超過100%
●2020年中國AI產業規模將超1500億元
●2013至2018年全球AI論文共30.5萬篇,美國發表5.2萬篇,中國發表7.4萬篇
●2030年中國無人駕駛汽車銷量預計將達190萬輛,出行AI備受關注
●中國自動駕駛技術正朝”L4級高度自動化”努力,世界尚未有人能夠達到”L5全部自動化”
●中國CV市場中68%都用於安防
●當前AI的商業化主要是基於CV,語音,NLP等技術
●中國AI產業目前處於各自為營的狀態,但有產業鏈分工的發展趨勢
●易於使用的自動化ML工具逐漸成為主流,例如AutoML
●隨著5G即將商用,無線通訊效率提升,有助於AI應用升級


Source: https://report.iimedia.cn/report.jsp?reportId=38874

CI/CD筆記

流程

  • 持續整合(Continuous Integration)
    • Code Repository
    • Version Control
    • Build
    • Integration
  • 持續交付(Continuous Delivery)
    • Release
    • Delivery
  • 持續佈署(Continuous Deployment)
    • Production

評比指標

  • 佈署頻率(Deployment Frequency)
  • 變更前置時間(Change Lead Time)
  • 服務恢復時間(MTTR)
  • 變更失敗比率(Change Fail Rate)

常用工具

  • CI / CD
    • Jenkins
    • Gitlab CI
    • Travis CI
    • Circle CI
    • Drone
  • Version control
    • Bitbucket
    • GitHub
  • POM
    • Maven
  • Code Quality and Security
    • SonarQube
  • Unit Test
    • TestNG
  • Test Automation
    • Selenium
    • Appium

我的遊戲開發筆記

Industry

General

Design

Art

Scene/Level

Story

UI/UX

Programming

Testing

Project Management

Marketing

參考資料

  • 數位遊戲設計達人講座
  • 深入淺出設計模式(Head First Design Patterns)
  • 專案管理知識體系指南(A Guide to the Project Management Body of Knowledge)
  • 維基百科(Wikipedia)
  • 其他(不知出處,查到再補上)

遊戲的商業模式探討

常見商業模式

  • 代工製作(Work for Hire)
  • 先期簽約(Earlier Stage Development)
  • 履約完工保證(Completion Bond)
  • 挑選成品(Pick up Deal)

影響產業獲利的因素

  • 新競爭者進入門檻
  • 現存競爭者之間的競爭強度
    • 創新遊戲開發技術
    • 使用複合式銷售(Bricks and Clicks)擴大覆蓋層面
    • 宣傳攻勢
  • 替代產品或服務的威脅
    • 玩家喜新厭舊的習性
    • 價格對於替代產品的優勢
    • 玩家替換遊戲的成本
    • 同類產品在市場上的選擇數量
  • 買方的議價能力
  • 供應商的議價能力
  • 互補結盟

授權發行

開發商的權益

  • 姓名標示(Attribution)
  • 頭款與利潤分成
  • 擁有權
  • 週邊發行權(Ancillary Rights)

市場(Marketing)

銷售工具(Sales kit)

  • 1~2頁的遊戲簡介
  • 10~15頁的遊戲說明
  • 概念草圖或螢幕截圖
  • 關鍵遊戲樂趣試玩

遊戲銷售

銷售管道

  • 傳統通路
    • 首發
    • 資料片或加強版
    • 促銷降價
    • 合集
    • 平價包
  • 網路商店
    • 首發
    • 更新版

行銷手法

  • 焦點經濟
  • 市場炒作
    • 結合新聞性議題
    • 運用網路搜尋關鍵字
  • 透過社群網路推展遊戲
    • 金字塔人際網路
    • 透過好友動態
    • 人質行銷(Hostage Situation)
  • 與遊戲網站合作
  • 提供試玩
    • 精簡版內容
    • 使用時間限制