我的新書AI 職場超神助手:ChatGPT 與生成式 AI 一鍵搞定工作難題的教材投影片已製作完成
歡迎各位有需要的教師和博碩文化索取教材

軟體開發

  • Intro to Artificial Intelligence

    課程網址:https://www.udacity.com/course/viewer#!/c-cs271 什麼是Intelligent Agent 人工智能代理(Agent)根據環境的感知器(下圖的Sensors)傳入的資料,經過一連串的映設函數(紅箭頭部份),藉由效應器對環境做影響(下圖Actuators)。在裡面紅色箭頭部份是最重要的課題,這稱為代理控制策略。 如上圖這樣的一個決策過程會重覆進行很多次,從環境將資訊透過Sensors傳給Agent,經過代理做出決定,然後用Actuators影響環境,這樣的一個周期稱為perception action cycle。 AI應用範疇 財務金融:應用環境可以在股票市場、債卷市場或期貨市場,感知到一些東西的資訊和相關新聞,決策則是買入和賣出。 機器人學:這個是研究時間最長的一門ai領域,他的Sensors及Actuators都是與物理環境交互,而更為特殊。 遊戲:分兩種,一種是與人類對戰,像是象棋對戰,對Agent來說玩家是環境,它必需觀察玩家的動作,目的是戰勝玩家。另一種是遊戲情境模擬,為了要讓遊戲更自然,讓玩家感覺遊戲世界像真實世界般。 醫藥學:可以用在終身醫療上,輸入過去病史,讓它可以幫助判斷未來可能出現的疾病。 WEB應用:像智能搜索,對語意進行判定,然後幫助找出可能更符合使用者想要的搜尋結果。 術語介紹 完全可觀察的環境 vs 部份可觀察的環境(partially) 完全可觀察:例如一些牌類遊戲,當所有牌都已被掀開在桌子上,我們可以看到所有的資訊,可以算出最佳解答。 部份可觀察:像另一些紙牌遊戲,有些牌是掀開的,有些則是未被掀開的。這時就要去觀察並記憶過去曾有的牌型紀錄,和桌上現有的牌,來推算可能是最有利的出牌方式。越多的歷史紀錄可以幫助Agent去做出更正確的推斷。這個循環稱為馬爾可夫模型(Markov Model),我們會廣泛的討論要如何具有下面的這種結構: 確定性環境 vs 隨機性環境(stochastic) 確定性環境:Agent所做的結果會產生的影響是否確定。例如像在象棋遊戲中,移動一個棋子的效果是完全可預見的。 隨機性環境:像是大富翁的擲骰子遊戲,雖然所做的決定會影響結果,但是我們無法預期骰子會擲出多少,因此無法完全預見所做決策會影響到的效果。…

  • Git版本控管學習筆記(1)

    我過去一直都是使用SVN來做專案的版本控管的工作, 最近突然很頻繁的聽到圈內的人都用git這個東西,強調他分散式、適合分散式開發等等的優點。 再加上最近有看到保哥的30天精通Git版本控管的教學文, 就決定好好的來學習一下這個新的版本控管系統。 在過去,較有名的檔案管理系統有SVN、CVS、Visual SourceSafe、VSTS, 不過,這些版本管理系統大都採用集中式控制, 也就是一定要連上Server才可以commit資料。 而Git則強調分散式管理,他可以在本機就先commit資料,當連到網路之後,才去與server上的系統做合併。 這樣有一個很大的好處,就是即使今天人在國外,無法連上網路而需要繼續工作, 或公司的svn是使用區網去連接,但我們卻無法連接至公司網路時, 也可以commit程式的變更,這個特性在分散式的開發上十分的方便。 決定要學GIT後,第一個就是要選擇工具 CloudHsu推薦下面兩款: mac系統上使用SourceTree 在windows上使用gitextensions 上面這兩款都是圖形化GUI介面的操作軟體。 不過保哥在文章裡面有提到,最終在使用上,因為操作方便性以及使用方便性,還是會選擇使用GUI介面的操作工具。 但是,在剛開始學習時,由於對整個GIT概念的了解,他還是建議從下指令碼開始學習,以下是節錄他的學習建議: * 先擁有 Git 基礎觀念,透過下指令的方式學習是最快的方式,不要跳過這一段 * 找多一點人跟你一起學…

  • 利用ant 構建和部署專案

    Ant 可以代替使用 javac 、 java 和 jar 等命令來執行 java 操作,從而達到輕松的構建和部署 JAVA 項目的目的。 1. 利用ant 的javac命令來編譯JAVA程式 Ant 的javac命令用於實現編譯JAVA 程式的功能。下面來看一個簡單的例子:首先我們建立名為 JAVATestPro的JAVA項目,建立src目錄為源代碼目錄,在src目錄下建立HelloWorld.java這個類檔。該類檔的內容如下: 同時在JAVATestPro項目的根目錄下建立build.xml 檔,在該檔中編譯sr 目錄下的JAVA檔,並將編譯後的class檔放入build/classes 目錄中,整個項目的目錄結構如下: |JAVATestPro |src…

  • ANT常用命令

    1. copy 命令 copy主要用來對檔和目錄的複製功能。舉例如下: eg1. 複製單個檔: eg2. 對檔目錄進行複製: eg3. 將檔案複製到另外的目錄: 2. delete 命令 對檔或目錄進行刪除,舉例如下: eg1. 刪除某個檔: eg2. 刪除某個目錄: eg3. 刪除所有的備份目錄或空目錄: 3. mkdir 命令 創建目錄。 eg…

  • ant 腳本編寫 – 關鍵元素

    1. project元素 project 元素是 Ant 構件檔的根項目, Ant 構件檔至少應該包含一個 project 元素,否則會發生錯誤。在每個 project 元素下,可包含多個 target 元素。接下來向讀者展示一下 project 元素的各屬性。 name 屬性 用於指定 project 元素的名稱。 default 屬性 用於指定 project…

  • 沒有銀彈 – 軟體工程的本質性與附屬性工作

    在人月神話裡,花了兩章的篇幅說明在軟體開發上, 不會有類似銀彈這種,可以快速解決開發時程延誤或發生重大錯誤的捷徑 他們提出了三個原因: (1) 複雜性: 軟體開發的複雜度與規模大小並非線性的關係,整個複雜度增加情況也會遠遠超過線性預估的結果。也因為結構上的複雜性,當軟體在擴充新功能時,難保不會產生新的副作用。程式裡的狀態難以一一列舉,也更加難以明瞭整個產品也會變的更不可靠。另外因為複雜性關係,開發時也容易遇到溝通困難、時程落後、成本超支的困難。 (2) 配合性: 軟體必須配合其他的領域,例如電腦、不同語言、不同介面等等….。 (3) 易變性: 1. 時常面臨修改,因為軟體是純思考的產物,有無限延展性,修改容易,也因此特別容易面臨修改 2. 成功的軟體生命周期會比硬體來的長,因此時常會需要配合硬體環境上去修改。 (4) 隱匿性:過於抽象、難以理解。 在這邊他們也提出了幾項過去曾讓軟體界有所突破的重大發展,但這些突破都是屬於附屬性的,沒辦法突破軟體工程本質上的複雜性: (1) 高階語言:高階語言的發行的確是最強而有力的一次突破,對生產力而言至少有五倍以上的提升。並伴隨得到可靠度、簡潔性、理解力上的增益。它把和程式內涵一點關係都沒有的那一整層複雜性給去除了。 (2) 分時技術:分時技術對於程式設計師的生產力及產品品質有了重大的提升。因為分時確保了即時性,使我們得以持續保持住腦子裡對複雜的概觀。但緩慢的回復時間是附屬難題。 ps: 分時系統:作夜系統依中央處理器排程(CPU Scheduling),將中央處理器的時間切割為極小的時間片段(Time…

  • 人月神話讀後筆記

    花了很多天終於看完了著名的專案管理聖經─『人月神話』在此整理一下大致的重點 1. 開發一個軟體系統產品要付出的代價是一般組件程式的九倍。因為產品化是一般組件程式的三倍時間,設計整合測試又是三倍時間,這兩方面的成本計算基本上是獨立的。 2. 以成本會計為基礎的時程預估方式,使我們誤把工作量和專案進度混為一談,人月是一個危險並容易遭到誤解的迷思,因為他假設人力和工時可以互換。 在此本書裡面,提到,專案管理人員不應該把人/月這樣的標準來做為專案規劃的標準,因為當人員多起來後,整個專案的運行會需要花更多的時間在溝通、管理、協調上,人月之間的關係並非線性關係。 並且勿忽略掉新的程式師要學習上手的開發時間,以及要耗費掉的老手的教育時間。因此,在一個已經延遲的專案中增加人手,只會讓它更加的落後,這邊較建議的方式是重新安排時程、或者刪減工作。 在這一章裡,也提出建議的專案軟體時程安排方法 1/3 規劃 1/6寫程式 1/4組件測試和早期系統測試 1/4系統測試和完成所有的組件 3. 從第三章到第七章,都是在討論保有『整體概念性』的重要。 一個專案的規劃必需出由同一人之手,也就是說,一個專案不應該有兩個領導者。我們必須選出一個能力強的人,來帶領整個專案的開發及方向,我們寧可忽略掉一些可能新奇、或很棒的想法,也必須讓整個專案都能呈現同一個設計理念。此一概念便是這本書所一直提及的整體概念性。 在第三章裡,此本書提出了一個外科手術團隊的做法,來解釋該如何去達到這個整體概念性的目的。 (1) 首席程式設計師:也就是整體概念性裡所提到的做決策的主腦。負責定義功能、設計程式、測試程式並撰寫文件。ps: 此本書也提到,真正優秀的專案管理人員,也應該要寫程式,沒有真正去撰寫一些程式的PM,是無法做好專案管理的工作的。 (2) 副手:外科醫生的分身,可以做所有首席設計師所做的事,或提出想法,但是首席設計師不一定要接納他的想法。 (3) 行政助理:幫忙處理首席程式設計師的所有庶務。一位行政助理可同時處理兩個以上團隊的工作。 (4)…

  • ,

    在eclipse裡用ant編檔案

    1. 要如何把ant-contrib裝進去 window=>preferences=>ant=>runtime=>global entries 選擇ant-contrib的jar檔 2. 遇到java.lang.OutOfMemoryError: Java heap spac的異常錯誤 window->preferences->java->installed jres->(選擇執行的jdk)edit… 把default vm arguments 的參數設為-Xms64m -Xmx512m 不過我使用的方法是 點檔案右鍵=>properties=>run/DEBUG SETTING 然後按edit 選jre那頁 把vm arguments設為: -Xms64m…

  • , , ,

    ResourceManager動態載入多國語系的實現

    事前準備工作 1.[撰寫Ant編譯時所使用的XML檔] 依照原有的XML去設定自己的SDK的位置,並且寫入要載入的語言檔 2.[設定Ant環境] (a)Help->Software Updates更新flash builder的Ant編輯程式 (b)Windows->Show View->Other->Ant->Ant把視窗叫出來 (c)按Ant編譯視窗最左邊的Add Buildfiles,選擇剛剛寫的xml (d)RUN他 3.[設定要產出的flex專案檔的編譯locale參數] 如果是要中文+英文則為-locale en_US zh_TW,如果少了這個動作在變語言時會發生缺少核心語言CORE檔案的問題。 4. locale檔副檔名是.properties ==================================== 1. flex版本的實現及範例下載 http://www.nbilyk.com/flex-localization-example 2. 為flash builder安裝ant…


17年資歷女工程師,專精於動畫、影像辨識以及即時串流程式開發。經常組織活動,邀請優秀的女性分享她們的技術專長,並在眾多場合分享自己的技術知識,也活躍於非營利組織,辦理活動來支持特殊兒及其家庭。期待用技術改變世界。

如果你認同我或想支持我的努力,歡迎請我喝一杯咖啡!讓我更有動力分享知識!