I'm a mother of two precious kids and a professional programmer.
我的新書AI 職場超神助手:ChatGPT 與生成式 AI 一鍵搞定工作難題的教材投影片已製作完成
歡迎各位有需要的教師和博碩文化索取教材
課程網址: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所做的結果會產生的影響是否確定。例如像在象棋遊戲中,移動一個棋子的效果是完全可預見的。 隨機性環境:像是大富翁的擲骰子遊戲,雖然所做的決定會影響結果,但是我們無法預期骰子會擲出多少,因此無法完全預見所做決策會影響到的效果。…
我過去一直都是使用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 可以代替使用 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…
1. copy 命令 copy主要用來對檔和目錄的複製功能。舉例如下: eg1. 複製單個檔: eg2. 對檔目錄進行複製: eg3. 將檔案複製到另外的目錄: 2. delete 命令 對檔或目錄進行刪除,舉例如下: eg1. 刪除某個檔: eg2. 刪除某個目錄: eg3. 刪除所有的備份目錄或空目錄: 3. mkdir 命令 創建目錄。 eg…
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)…
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…
事前準備工作 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年資歷女工程師,專精於動畫、影像辨識以及即時串流程式開發。經常組織活動,邀請優秀的女性分享她們的技術專長,並在眾多場合分享自己的技術知識,也活躍於非營利組織,辦理活動來支持特殊兒及其家庭。期待用技術改變世界。
如果你認同我或想支持我的努力,歡迎請我喝一杯咖啡!讓我更有動力分享知識!