object(WP_Post)#2818 (24) {
  ["ID"]=>
  int(1421)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-10-17 17:17:57"
  ["post_date_gmt"]=>
  string(19) "2024-10-17 17:17:57"
  ["post_content"]=>
  string(978) "








" ["post_title"]=> string(28) "Leetcode訓練營 - Lesson 3" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(17) "leetcode-lesson-3" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-10-17 21:15:03" ["post_modified_gmt"]=> string(19) "2024-10-17 21:15:03" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(51) "https://www.hkprog.org/2024/10/leetcode-lesson-2-2/" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Leetcode訓練營 - Lesson 3

			object(WP_Post)#3065 (24) {
  ["ID"]=>
  int(1403)
  ["post_author"]=>
  string(3) "175"
  ["post_date"]=>
  string(19) "2024-10-14 03:30:15"
  ["post_date_gmt"]=>
  string(19) "2024-10-14 03:30:15"
  ["post_content"]=>
  string(27629) "

https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/142835734?spm=1000.2115.3001.5926

現在該做什麼? ”

這個問題在我的科學研究和教學生涯中不斷出現。每位科學家、學者、作家、藝術家……每天都會面臨這樣一個問題:今天該做些什麼。

大多數人會選擇繼續昨天的工作,無論是延續某個研究方向、完成一些測量或是推進故事的情節發展。但如果被迫在更深層次上,或者是在一個長期項目中問自己“現在該做什麼”,大多數人會盡量避免改變他們一直以來樂在其中的研究領域。

而我,選擇去尋找一個真正的「難題」(A PROBLEM),而不是小問題(a problem)……對我來說,心智如何從大腦中湧現是最深層的問題,絕對是一道難題。

譯丨王啟隆

出品丨AI 科技大本營(ID:rgznai100)

約翰‧霍普菲爾德(John Hopfield)是普林斯頓大學教授,他的研究生涯橫跨生物學、化學、神經科學和物理學等多個領域,成就斐然。尤其重要的是,他以物理學家敏銳的目光審視了生物學這一複雜的領域。他最著名的貢獻之一是提出了聯想神經網絡,即現在的Hopfield 網絡,這是推動現代深度學習領域發展的早期思想之一。

隨著2024 年的諾貝爾物理學獎授予霍普菲爾德教授與“AI 教父”杰弗裡·辛頓(Geoffery Hinton)教授,關於兩位先驅者的深邃思想再次走進公共視野。

辛頓教授作為圖靈獎和諾貝爾獎雙料得主,許多人熱衷於挖掘他和「ChatGPT 幕後英雄」伊爾亞·蘇茨克維(Ilya Sutskever)之間的師徒關係感到好奇,同時也對「人工智慧專家是否該獲得物理學獎」感到質疑。

但事實上,霍普菲爾德教授和物理學卻有著相當深厚的連結。他的父親是「霍普菲爾德帶」(氧氣的光譜帶)的發現者與「萊曼-伯奇-霍普菲爾德帶」(氮氣的光譜帶)的共同發現者,母親也是一位物理學家。從小在學術環境中耳濡目染的霍普菲爾德,在長大後獲得了物理學博士學位,隨即前往了知名的“貝爾實驗室”,在理論組工作了兩年。

離開實驗室後,霍普菲爾德教授開始了漫長且「橫跨多學科」的研究生涯。一覽他的職教經歷,會發現他曾在加州大學柏克萊分校教過物理學,在普林斯頓大學教過物理學,在加州理工學院教過化學和生物學,隨後又回到普林斯頓大學教分子生物學。而至今的16 年來,他一直擔任物理學教授,並在普林斯頓神經科學研究所的建立中發揮了關鍵作用。

正如霍普菲爾德教授在2018 年發表的文章《現在該做什麼?》(
Now What?)中所說,他的許多成就都是通過不斷地問自己“
現在該做什麼? ”並在很多時候通過改變研究方向來實現的。以下是這篇經典文章的翻譯,力求引領讀者們走近這位驅動了人工智慧發展的物理學家。

引言

《現在該做什麼? 》 ( Now What? ) [1]

John J. Hopfield,普林斯頓大學,2018 年10 月

我的第一份全職工作是在新澤西州默里山的貝爾實驗室,這個地方在1948 年發明了晶體管。實驗室的六人理論物理小組聘用了我,擔任技術員職位。我已經在康乃爾大學完成了博士論文的撰寫和答辯,並滿足了其他所有博士畢業的要求,於1958 年3 月初正式報到。

入職的第一天上午,我忙於處理各種行政程序。中午,我和幾位同事在食堂共進午餐,然後前往我的新辦公室。整理了一些書籍和期刊,花了大約一個小時。接著,我去五樓的倉庫領了一些筆記本、鉛筆和一支可攜式的削筆器。於是,我把幾支鉛筆削好。隨即腦海中蹦出了一個問題:

「現在該做什麼? 」(Now What? 

這個問題在我的科學研究和教學生涯中不斷出現。每位科學家、學者、作家、藝術家……每天都會面臨這樣一個問題:今天該做些什麼。

大多數人會選擇繼續昨天的工作,無論是延續某個研究方向、完成一些測量或是推進故事的情節發展。但如果被迫在更深層次上,或者是在一個長期項目中問自己“現在該做什麼”,大多數人會盡量避免改變他們一直以來樂在其中的研究領域。

我获得 2019 年富兰克林物理学奖[2],是“因将理论物理学的概念应用于提供对多个领域(包括遗传学和神经科学)中的重要生物学问题的新见解,并对计算机科学领域中的机器学习产生了显著影响。” 这些成就的取得是因为我经常通过改变研究方向来回应“现在该做什么?”的问题。而富兰克林奖项的一个更为科学的引用指出,我的两篇研究论文才是我获得提名的关键。

本文將講述我如何偶然遇到這些論文所解決或澄清的研究問題的歷史。我對「現在該做什麼」的回答是,「這是一個不同尋常的、可能重要的、新穎的研究問題,我可以提出並可能因為我的物理學背景而解決」。這種情況不會被那些背景比我更相關的人員輕易辨識為一個問題。

選擇研究問題是科學領域中個人成就的主要決定因素。我在科學問題上通常注意力持續時間較短(注意博學者與淺嚐輒止者之間的細微差別,我常常處於後者的位置)。因此,我一直在尋找更有趣的問題,而這要么是在我目前的問題得到解決時,要么是在我根據自己的特殊才能判斷它們無法解決時。

物理學是什麼?

我在一個父母都是物理學家的家庭中長大,因此對我來說,物理學不僅僅是一門學科。原子、對流層、原子核、一塊玻璃、洗衣機、我的腳踏車、留聲機、磁鐵──這些都是偶然的課題。

我核心的理念是:世界是可以理解的,你應該能夠拆解任何東西,理解其組成部分之間的關係,進行實驗,並在此基礎上能夠發展出對其行為的定量理解。因此,物理學是一種哲學上的觀點(point of view),即我們周圍的這個世界,透過努力、創新和適當的資源,可以以預測和合理定量的方式被理解。

成為物理學家,便意味著致力於這種理解。

廣義的教育

我正在拆解事物、了解它們是如何工作的、修理自行車、在廚房(或更好的是在地下室)探索化學、建造飛行模型飛機、晶體收音機和簡單無線電、玩電池和電線圈並學會用手思考和操作實物的過程中長大。

我最早的記憶之一是一把小螺絲起子,它被放在母親使用的腳踏縫紉機抽屜裡。它是用來微調縫紉機的,但允許我用它拆解家裡的任何東西——只要我把它放回抽屜裡。如果我偶爾無法重新組裝我拆開的東西,我父親會在晚上耐心地幫我重新組裝。

然而,成為物理學家對年輕時期的我來說是一個較為神秘的想法,即在更抽象的層面上進行這種遊戲般的探索。

在我父親那一代,物理學並不會帶來豐厚的報酬。我父親在1929 年憑藉古根漢獎學金去了柏林,計劃在1930 年返回美國接受學術工作。 1929 年的華爾街崩盤幹預了,取消了所有大學的招募。相反,他接受了幾個臨時職位,包括在1933 年芝加哥世博會設立實體展覽——我就是在那裡出生。

成為物理學家在經濟上並不理想,所以我還是短暫地考慮過其他職業。我的高中化學老師非常出色,而我的高中物理老師(事後看來)甚至缺乏對基本力學和電學的理解。受此影響,在填寫大學申請時,我列出了「物理或化學」作為可能的專業。

來到斯沃斯莫爾學院(Swarthmore)後,我的導師是威廉「比爾」艾爾莫爾(William “Bill” Elmore)。比爾了解我的父親和我的背景。我仍然記得第一次走進他的辦公室時的情景,他拿起描述著我的興趣和學習方向的卡片,拿出一支筆,劃掉了兩個詞,並說道:「我認為我們不需要考慮化學

美國實驗物理學家,曾參與研發原子彈的曼哈頓計劃,是三位一體核試(Trinity)的目擊者。

但我還是必須選擇一個具體的研究方向。因此,在斯沃斯莫爾學院學習的後期,我開始關注物理研究生院,著眼於我可能會專攻的方向。我的成長經驗特別集中在對周圍世界的物理學的興趣上,而不是原子核或宇宙的物理學,而是日常世界及其技術的物理學。

最後我選擇了去康乃爾大學而不是普林斯頓大學攻讀研究生,因為在1954 年,康乃爾大學似乎有一個部門對固體物理學領域感興趣。它由幾門帶有固體字樣的課程、一個固體物理研討會、兩位在這個領域進行理論研究的教師和大約四個實驗方向定義。那個部門當時進行的實驗問題包括低溫熱導率、鹼金屬鹵化物中的色心、絕緣體的紫外光譜和X 射線吸收。我還記得部門裡有個人在研究氦-4 的超流動性系,但那肯定不屬於當時定義的固態物理學範疇。剛從伊利諾大學來的唐納德·霍爾科姆擁有一台瓦里安核磁共振儀,並且他的研究處於主流之外。系裡其他的主流研究方向則包括核物理與粒子物理學、X射線以及宇宙學和天文物理學。

在康乃爾大學的第二年末期,我找到了理論物理學家艾伯特‧奧弗豪澤(Albert W. Overhauser),問他是否願意指導我的論文並幫我找到一個論文題目。透過課程和解決問題,我迅速掌握了理論物理學的工具,但我仍然不知道如何找到一個合適的研究問題。找到好的問題並不是(即使在今天也不是)在課堂或研討會上討論的主題。

阿爾伯特·奧弗豪澤

物理學家,美國國家科學院院士,因提出核磁共振中的奧弗豪瑟效應理論而聞名。

幸運的是,我可以去解決奧弗豪澤懸而未決的一系列有趣謎題。這些謎題通常是形式上的悖論,例如:「固體物理學中某一現象的初步理論分析得出結果A,而實驗卻給出了完全不同的結果B」。還有個例子,奧弗豪澤作為作者引用最多的論文的前兩句是:

「簡單的經典理論對離子晶體的介電常數和壓縮性的描述導致了兩個關係,其中任意參數已被消除,稱為Szigeti關係。這兩者都不符合實驗數據,表明這些簡單理論存在不足。

這篇總結了奧弗豪澤第二位學生蓋爾·迪克博士論文的文章,描述了一個能消除理論與實驗結果之間差異的更好模型。

在奧弗豪澤列出的悖論中,大多數情況下他自己也不知道是什麼導致了理論分析與實驗結果之間的矛盾。於是,我選擇了一個關於晶體中激子輻射壽命的問題,因為這個問題在理論上有矛盾。簡單的理論根據應用方式得出零或無窮的結果,這都不合乎情理。這個問題成了我的研究焦點,而奧弗豪澤並沒有在這方面的研究。

每次我去見他時,他都作為傾聽者和批評者給予了極大的支持,但尋找研究方向和解決技術理論問題完全是我的責任。他給我的最大禮物是對有趣問題的所有權,以及對研究和進展的全部責任。有一天,他告訴我最好開始整理我的研究成果,這標誌著我博士研究的結束。為了消除這個悖論,我們發明了極化激元,這是一種新的固體物理「粒子」。從我的論文中寫成的單篇論文(和單一作者)至今仍被高度引用,這得益於雷射、極化激元凝聚態和現代光子學。謝謝你,奧弗豪澤,我已經盡力透過培養新一代獨立的學生來回報你。

第一份真正的工作

手握理論固態物理論文,我踏入了就業市場。是選擇學術界還是工業界?從我聽過的固態物理學研討會演講者那裡,答案已經很明確了。 AT&T 的貝爾實驗室通用電氣在固態物理學領域有著比任何大學都更廣泛、更有活力的研究計畫。從這些實驗室回來後,我對工業界所追求的這一領域以及這兩個實驗室相對自由的研究氛圍感到非常興奮。

最終,我選擇了貝爾實驗室,主要是因為它的實驗室管理結構。他們重組了結構,使得有一個小型的理論物理組,不直接隸屬於磁性或半導體等子領域。相較之下,通用電氣在每個固態物理主題子群中都有幾個理論學家。當然,加入貝爾實驗室的固態理論組,就像在那個時代加入洋基隊(知名職棒隊)成為投手一樣。

理論學家們都在研究奧弗豪澤那種謎語般的課題。

菲利普. 安德森(Philip W. Anderson)彼時寫完了他那篇關於「某些隨機晶格中缺乏擴散」的論文。這篇論文將成為他後來獲得諾貝爾獎的基礎,其動機是為了解釋費厄(Feher)在摻雜矽實驗中觀察到的一些悖論性的電子自旋弛豫結果。梅爾文·拉克斯(Melvin Lax)試圖以不違反熱力學第二定律的方式來闡述半導體二極體中的雜訊問題。因為在一個簡單的二極體-電阻電路中,很難寫出一個理論,使得二極體的整流特性導致電容器上的平均電荷為零。康耶斯·赫林(Conyers Herring)發明了聲子拖曳(Phonon Drag)來解釋摻雜半導體中異常巨大的熱電位。格雷戈里·萬尼爾(Gregory Wannier)當時在研究斯塔克效應(Stark effect)及其在高電場下的可能觀測。

現在回顧整個事業,讓我印象深刻的是,研究主題都是固態物理學的普遍問題。理論工作常常是基於詳細的實驗,但並不專門由AT&T 的材料科學和裝置需求所驅動。當然,貝爾實驗室的大部分工作都集中在後一類問題上,但理論組卻不同。

赫林閱讀了所有固態物理學文獻,甚至親自翻譯了一些蘇聯文獻。他主持每月一次的期刊俱樂部,從他的閱讀中選擇最有趣的內容,指派相關的實驗室科學家進行演講。很少有人拒絕這樣做。這些充滿爭論的會議對我的延伸教育和作為介紹貝爾實驗室極其多樣化的社會環境都是極好的。

赫林也是理論組的負責人,他看到我在努力尋找下一個研究問題。他建議我去拜訪實驗學家,以獲得對有趣謎題所在的自己的感覺,我仍然記得許多這樣的拜訪。阿瑟·肖洛(Arthur Schawlow)向我解釋了1958 年湯斯-肖洛(Townes-Schawlow)關於「光學雷射」可能性的理論論文。然後,他從桌子抽屜裡拿出一根大約三英寸長的粉紅色棒子,描述了使Al2O3 成為紅寶石的Cr3+雜質的奇妙光譜細節。他結束演講時說,不幸的是,R1 和R2 光譜線完全不適合製造光學雷射。但兩年後,在西奧多·梅曼(Theodore Maiman)展示了閃光燈泵浦紅寶石的雷射作用後,這種晶體被用於製造貝爾實驗室的第一台光學雷射。可見製造脈衝雷射的重要性並未被肖洛意識到。

比爾·博伊爾(Bill [Willard] Boyle)當時在測量半金屬鉍的低溫磁熱性質。喬治·費厄(George Feher)使用他開發的ENDOR 技術(電子-核雙共振)繪製了矽中磷施主的電子波函數圖。伯恩德·馬蒂亞斯(Bernd Matthias)則告訴在場所有願意聽的人,超導性不可能真的是BCS 型的,因為在某些材料中沒有同位素效應。羅伯特·科林斯(Robert J. Collins)倒是向我介紹了CdS 中的“邊緣發射”發光,這為我的第二篇論文提供了主題。

拜訪吉姆·蘭德(Jim Lander)的子部門讓我成功認識了戴維·托馬斯(David G. Thomas),我們隨後的合作為我未來幾年提供了必要的「謎題」。貝爾實驗室黃金時代的神秘感以及其管理者和科學家的卓越遠見使我想講述這個團隊的背景故事。這個部門完全致力於氧化鋅(ZnO)研究,而在1960 年之前,真空管是所有電話電子設備中的基本擴大機。真空管需要來自熱陰極的電子發射,但為了延長使用壽命和降低功耗,溫度需要盡可能低。氧化鋇(BaO)塗層陰極在這方面表現良好,因此貝爾實驗室成立了一個研究氧化鋇的團隊。

到20 世紀50 年代中期,很明顯真空管時代即將結束。儘管如此,1956 年第一條承載電話會話的跨大西洋電纜仍然每43 英里就有一個真空管放大器。 (這條電纜在使用22 年後因技術過時而停止使用,所有真空管仍在正常工作!)由於氧化鋇不再是AT&T 未來技術感興趣的材料,而且該小組在氧化物材料方面有經驗基礎,他們這才將研究重點轉向了氧化鋅。氧化鋅被認為是一種半導體,因此可能與電子技術有關,而且氧化鋅晶體相對容易生長。因此,蘭登的小組能夠透過設計一個看似合理的替代理由來保存自己,並在貝爾實驗室的結構中發展。

我在工作前十年對「現在該做什麼?」的回答

總而言之,我遇到化學家戴維·托馬斯,並與他建立了一個理論與實驗相結合的工作聯盟,這個聯盟最終涉及了許多不同的化合物半導體。它為我提供了多年來未預見的問題和悖論,為AT&T 提供了化合物半導體和半導體光學的重要知識基礎,並在1969 年為我們贏得了美國物理學會頒發的“奧利弗·E·巴克利凝聚態物質獎(Oliver E. Buckley Condensed Matter Prize,通常簡稱巴克利獎)」。

但在當時,沒有人會猜到光和化合物半導體會有現在這麼大的技術前景。

離開舒適圈

1968 年,我發現在凝聚態物理學中已經找不到適合我特殊才能的問題了。我獲得了一個古根漢獎學金(Guggenheim Fellowship,美國著名的學術資助計畫),前往劍橋大學的卡文迪許實驗室待了半年,希望找到新的有趣方向,但幾乎一無所獲。

從劍橋大學回到普林斯頓大學後,在貝爾實驗室半導體組的諮詢工作中,我遇到了羅伯特·舒爾曼(Robert G. Shulman),一位正在對血紅蛋白進行高分辨率核磁共振實驗的化學家。

羅伯特舒爾曼

他是美國國家科學院院士和美國國家醫學研究所院士。他後來放棄了生物分子結構研究,轉而研究體內路徑。

舒爾曼向我介紹了血紅蛋白中四個鐵原子在廣泛分離的血紅素組中心的協同氧結合。令人驚訝的是,各種物理學技術都被用來研究這個分子。核磁共振(NMR)、電子順磁共振(EPR)、光譜學、共振拉曼散射、X 射線結構研究、中子散射、穆斯堡爾光譜學——所有這些固態物理學的巧妙實驗技術似乎都與血紅蛋白密切相關。有一段時間,血紅蛋白成為物理學家理解蛋白質如何運作的「氫原子」。

舒爾曼希望有理論方面的夥伴來幫助解釋他的核磁共振結果,透過這些結果,他希望理解生理上重要的協同氧結合的物理基礎。他知道我透過與貝爾實驗室的實驗化學家戴維·托馬斯的合作所產生的影響。因此,他努力讓我對血紅蛋白問題產生興趣,並讓我認識到這種研究有可能使生物學成為一門「硬」科學。

" ["post_title"]=> string(116) "走近諾獎得主霍普菲爾德:“我當時尋找的是一道真正的'難題',而不是一個小問題”..." ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(189) "%e8%b5%b0%e8%bf%91%e8%ab%be%e7%8d%8e%e5%be%97%e4%b8%bb%e9%9c%8d%e6%99%ae%e8%8f%b2%e7%88%be%e5%be%b7%ef%bc%9a%e6%88%91%e7%95%b6%e6%99%82%e5%b0%8b%e6%89%be%e7%9a%84%e6%98%af%e4%b8%80%e9%81%93" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-10-14 03:30:15" ["post_modified_gmt"]=> string(19) "2024-10-14 03:30:15" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1403" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
走近諾獎得主霍普菲爾德:“我當時尋找的是一道真正的'難題',而不是一個小問題”...
https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/142835734?spm=1000.2115.3001.5926 “現在該做什麼? ” 這個問題在我的科學研究和教學生涯中不斷出現。每位科學家、學者、作家、藝術家……每天都會面臨這樣一個問題:今天該做些什麼。 大多數人會選擇繼續昨天的工作,無論是延續某個研究方向、完成一些測量或是推進故事的情節發展。但如果被迫在更深層次上,或者是在一個長期項目中問自己“現在該做什麼”,大多數人會盡量避免改變他們一直以來樂在其中的研究領域。 而我,選擇去尋找一個真正的「難題」(A PROBLEM),而不是小問題(a problem)……對我來說,心智如何從大腦中湧現是最深層的問題,絕對是一道難題。 譯丨王啟隆 出品丨AI 科技大本營(ID:rgznai100) 約翰‧霍普菲爾德(John Hopfield)是普林斯頓大學教授,他的研究生涯橫跨生物學、化學、神經科學和物理學等多個領域,成就斐然。尤其重要的是,他以物理學家敏銳的目光審視了生物學這一複雜的領域。他最著名的貢獻之一是提出了聯想神經網絡,即現在的Hopfield 網絡,這是推動現代深度學習領域發展的早期思想之一。 隨著2024 年的諾貝爾物理學獎授予霍普菲爾德教授與“AI 教父”杰弗裡·辛頓(Geoffery Hinton)教授,關於兩位先驅者的深邃思想再次走進公共視野。 辛頓教授作為圖靈獎和諾貝爾獎雙料得主,許多人熱衷於挖掘他和「ChatGPT 幕後英雄」伊爾亞·蘇茨克維(Ilya Sutskever)之間的師徒關係感到好奇,同時也對「人工智慧專家是否該獲得物理學獎」感到質疑。 但事實上,霍普菲爾德教授和物理學卻有著相當深厚的連結。他的父親是「霍普菲爾德帶」(氧氣的光譜帶)的發現者與「萊曼-伯奇-霍普菲爾德帶」(氮氣的光譜帶)的共同發現者,母親也是一位物理學家。從小在學術環境中耳濡目染的霍普菲爾德,在長大後獲得了物理學博士學位,隨即前往了知名的“貝爾實驗室”,在理論組工作了兩年。 離開實驗室後,霍普菲爾德教授開始了漫長且「橫跨多學科」的研究生涯。一覽他的職教經歷,會發現他曾在加州大學柏克萊分校教過物理學,在普林斯頓大學教過物理學,在加州理工學院教過化學和生物學,隨後又回到普林斯頓大學教分子生物學。而至今的16 年來,他一直擔任物理學教授,並在普林斯頓神經科學研究所的建立中發揮了關鍵作用。 正如霍普菲爾德教授在2018 年發表的文章《現在該做什麼?》(Now What?)中所說,他的許多成就都是通過不斷地問自己“現在該做什麼? ”並在很多時候通過改變研究方向來實現的。以下是這篇經典文章的翻譯,力求引領讀者們走近這位驅動了人工智慧發展的物理學家。 引言 《現在該做什麼? 》 ( Now What? ) [1] John J. Hopfield,普林斯頓大學,2018 年10 月 我的第一份全職工作是在新澤西州默里山的貝爾實驗室,這個地方在1948 年發明了晶體管。實驗室的六人理論物理小組聘用了我,擔任技術員職位。我已經在康乃爾大學完成了博士論文的撰寫和答辯,並滿足了其他所有博士畢業的要求,於1958 年3 月初正式報到。 入職的第一天上午,我忙於處理各種行政程序。中午,我和幾位同事在食堂共進午餐,然後前往我的新辦公室。整理了一些書籍和期刊,花了大約一個小時。接著,我去五樓的倉庫領了一些筆記本、鉛筆和一支可攜式的削筆器。於是,我把幾支鉛筆削好。隨即腦海中蹦出了一個問題: 「現在該做什麼? 」(Now What? ) 這個問題在我的科學研究和教學生涯中不斷出現。每位科學家、學者、作家、藝術家……每天都會面臨這樣一個問題:今天該做些什麼。 大多數人會選擇繼續昨天的工作,無論是延續某個研究方向、完成一些測量或是推進故事的情節發展。但如果被迫在更深層次上,或者是在一個長期項目中問自己“現在該做什麼”,大多數人會盡量避免改變他們一直以來樂在其中的研究領域。 我获得 2019 年富兰克林物理学奖[2],是“因将理论物理学的概念应用于提供对多个领域(包括遗传学和神经科学)中的重要生物学问题的新见解,并对计算机科学领域中的机器学习产生了显著影响。” 这些成就的取得是因为我经常通过改变研究方向来回应“现在该做什么?”的问题。而富兰克林奖项的一个更为科学的引用指出,我的两篇研究论文才是我获得提名的关键。 本文將講述我如何偶然遇到這些論文所解決或澄清的研究問題的歷史。我對「現在該做什麼」的回答是,「這是一個不同尋常的、可能重要的、新穎的研究問題,我可以提出並可能因為我的物理學背景而解決」。這種情況不會被那些背景比我更相關的人員輕易辨識為一個問題。 選擇研究問題是科學領域中個人成就的主要決定因素。我在科學問題上通常注意力持續時間較短(注意博學者與淺嚐輒止者之間的細微差別,我常常處於後者的位置)。因此,我一直在尋找更有趣的問題,而這要么是在我目前的問題得到解決時,要么是在我根據自己的特殊才能判斷它們無法解決時。 物理學是什麼? 我在一個父母都是物理學家的家庭中長大,因此對我來說,物理學不僅僅是一門學科。原子、對流層、原子核、一塊玻璃、洗衣機、我的腳踏車、留聲機、磁鐵──這些都是偶然的課題。 […]

https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/142835734?spm=1000.2115.3001.5926

現在該做什麼? ”

這個問題在我的科學研究和教學生涯中不斷出現。每位科學家、學者、作家、藝術家……每天都會面臨這樣一個問題:今天該做些什麼。

大多數人會選擇繼續昨天的工作,無論是延續某個研究方向、完成一些測量或是推進故事的情節發展。但如果被迫在更深層次上,或者是在一個長期項目中問自己“現在該做什麼”,大多數人會盡量避免改變他們一直以來樂在其中的研究領域。

而我,選擇去尋找一個真正的「難題」(A PROBLEM),而不是小問題(a problem)……對我來說,心智如何從大腦中湧現是最深層的問題,絕對是一道難題。

譯丨王啟隆

出品丨AI 科技大本營(ID:rgznai100)

約翰‧霍普菲爾德(John Hopfield)是普林斯頓大學教授,他的研究生涯橫跨生物學、化學、神經科學和物理學等多個領域,成就斐然。尤其重要的是,他以物理學家敏銳的目光審視了生物學這一複雜的領域。他最著名的貢獻之一是提出了聯想神經網絡,即現在的Hopfield 網絡,這是推動現代深度學習領域發展的早期思想之一。

隨著2024 年的諾貝爾物理學獎授予霍普菲爾德教授與“AI 教父”杰弗裡·辛頓(Geoffery Hinton)教授,關於兩位先驅者的深邃思想再次走進公共視野。

辛頓教授作為圖靈獎和諾貝爾獎雙料得主,許多人熱衷於挖掘他和「ChatGPT 幕後英雄」伊爾亞·蘇茨克維(Ilya Sutskever)之間的師徒關係感到好奇,同時也對「人工智慧專家是否該獲得物理學獎」感到質疑。

但事實上,霍普菲爾德教授和物理學卻有著相當深厚的連結。他的父親是「霍普菲爾德帶」(氧氣的光譜帶)的發現者與「萊曼-伯奇-霍普菲爾德帶」(氮氣的光譜帶)的共同發現者,母親也是一位物理學家。從小在學術環境中耳濡目染的霍普菲爾德,在長大後獲得了物理學博士學位,隨即前往了知名的“貝爾實驗室”,在理論組工作了兩年。

離開實驗室後,霍普菲爾德教授開始了漫長且「橫跨多學科」的研究生涯。一覽他的職教經歷,會發現他曾在加州大學柏克萊分校教過物理學,在普林斯頓大學教過物理學,在加州理工學院教過化學和生物學,隨後又回到普林斯頓大學教分子生物學。而至今的16 年來,他一直擔任物理學教授,並在普林斯頓神經科學研究所的建立中發揮了關鍵作用。

正如霍普菲爾德教授在2018 年發表的文章《現在該做什麼?》(
Now What?)中所說,他的許多成就都是通過不斷地問自己“
現在該做什麼? ”並在很多時候通過改變研究方向來實現的。以下是這篇經典文章的翻譯,力求引領讀者們走近這位驅動了人工智慧發展的物理學家。

引言

《現在該做什麼? 》 ( Now What? ) [1]

John J. Hopfield,普林斯頓大學,2018 年10 月

我的第一份全職工作是在新澤西州默里山的貝爾實驗室,這個地方在1948 年發明了晶體管。實驗室的六人理論物理小組聘用了我,擔任技術員職位。我已經在康乃爾大學完成了博士論文的撰寫和答辯,並滿足了其他所有博士畢業的要求,於1958 年3 月初正式報到。

入職的第一天上午,我忙於處理各種行政程序。中午,我和幾位同事在食堂共進午餐,然後前往我的新辦公室。整理了一些書籍和期刊,花了大約一個小時。接著,我去五樓的倉庫領了一些筆記本、鉛筆和一支可攜式的削筆器。於是,我把幾支鉛筆削好。隨即腦海中蹦出了一個問題:

「現在該做什麼? 」(Now What? 

這個問題在我的科學研究和教學生涯中不斷出現。每位科學家、學者、作家、藝術家……每天都會面臨這樣一個問題:今天該做些什麼。

大多數人會選擇繼續昨天的工作,無論是延續某個研究方向、完成一些測量或是推進故事的情節發展。但如果被迫在更深層次上,或者是在一個長期項目中問自己“現在該做什麼”,大多數人會盡量避免改變他們一直以來樂在其中的研究領域。

我获得 2019 年富兰克林物理学奖[2],是“因将理论物理学的概念应用于提供对多个领域(包括遗传学和神经科学)中的重要生物学问题的新见解,并对计算机科学领域中的机器学习产生了显著影响。” 这些成就的取得是因为我经常通过改变研究方向来回应“现在该做什么?”的问题。而富兰克林奖项的一个更为科学的引用指出,我的两篇研究论文才是我获得提名的关键。

本文將講述我如何偶然遇到這些論文所解決或澄清的研究問題的歷史。我對「現在該做什麼」的回答是,「這是一個不同尋常的、可能重要的、新穎的研究問題,我可以提出並可能因為我的物理學背景而解決」。這種情況不會被那些背景比我更相關的人員輕易辨識為一個問題。

選擇研究問題是科學領域中個人成就的主要決定因素。我在科學問題上通常注意力持續時間較短(注意博學者與淺嚐輒止者之間的細微差別,我常常處於後者的位置)。因此,我一直在尋找更有趣的問題,而這要么是在我目前的問題得到解決時,要么是在我根據自己的特殊才能判斷它們無法解決時。

物理學是什麼?

我在一個父母都是物理學家的家庭中長大,因此對我來說,物理學不僅僅是一門學科。原子、對流層、原子核、一塊玻璃、洗衣機、我的腳踏車、留聲機、磁鐵──這些都是偶然的課題。

我核心的理念是:世界是可以理解的,你應該能夠拆解任何東西,理解其組成部分之間的關係,進行實驗,並在此基礎上能夠發展出對其行為的定量理解。因此,物理學是一種哲學上的觀點(point of view),即我們周圍的這個世界,透過努力、創新和適當的資源,可以以預測和合理定量的方式被理解。

成為物理學家,便意味著致力於這種理解。

廣義的教育

我正在拆解事物、了解它們是如何工作的、修理自行車、在廚房(或更好的是在地下室)探索化學、建造飛行模型飛機、晶體收音機和簡單無線電、玩電池和電線圈並學會用手思考和操作實物的過程中長大。

我最早的記憶之一是一把小螺絲起子,它被放在母親使用的腳踏縫紉機抽屜裡。它是用來微調縫紉機的,但允許我用它拆解家裡的任何東西——只要我把它放回抽屜裡。如果我偶爾無法重新組裝我拆開的東西,我父親會在晚上耐心地幫我重新組裝。

然而,成為物理學家對年輕時期的我來說是一個較為神秘的想法,即在更抽象的層面上進行這種遊戲般的探索。

在我父親那一代,物理學並不會帶來豐厚的報酬。我父親在1929 年憑藉古根漢獎學金去了柏林,計劃在1930 年返回美國接受學術工作。 1929 年的華爾街崩盤幹預了,取消了所有大學的招募。相反,他接受了幾個臨時職位,包括在1933 年芝加哥世博會設立實體展覽——我就是在那裡出生。

成為物理學家在經濟上並不理想,所以我還是短暫地考慮過其他職業。我的高中化學老師非常出色,而我的高中物理老師(事後看來)甚至缺乏對基本力學和電學的理解。受此影響,在填寫大學申請時,我列出了「物理或化學」作為可能的專業。

來到斯沃斯莫爾學院(Swarthmore)後,我的導師是威廉「比爾」艾爾莫爾(William “Bill” Elmore)。比爾了解我的父親和我的背景。我仍然記得第一次走進他的辦公室時的情景,他拿起描述著我的興趣和學習方向的卡片,拿出一支筆,劃掉了兩個詞,並說道:「我認為我們不需要考慮化學

美國實驗物理學家,曾參與研發原子彈的曼哈頓計劃,是三位一體核試(Trinity)的目擊者。

但我還是必須選擇一個具體的研究方向。因此,在斯沃斯莫爾學院學習的後期,我開始關注物理研究生院,著眼於我可能會專攻的方向。我的成長經驗特別集中在對周圍世界的物理學的興趣上,而不是原子核或宇宙的物理學,而是日常世界及其技術的物理學。

最後我選擇了去康乃爾大學而不是普林斯頓大學攻讀研究生,因為在1954 年,康乃爾大學似乎有一個部門對固體物理學領域感興趣。它由幾門帶有固體字樣的課程、一個固體物理研討會、兩位在這個領域進行理論研究的教師和大約四個實驗方向定義。那個部門當時進行的實驗問題包括低溫熱導率、鹼金屬鹵化物中的色心、絕緣體的紫外光譜和X 射線吸收。我還記得部門裡有個人在研究氦-4 的超流動性系,但那肯定不屬於當時定義的固態物理學範疇。剛從伊利諾大學來的唐納德·霍爾科姆擁有一台瓦里安核磁共振儀,並且他的研究處於主流之外。系裡其他的主流研究方向則包括核物理與粒子物理學、X射線以及宇宙學和天文物理學。

在康乃爾大學的第二年末期,我找到了理論物理學家艾伯特‧奧弗豪澤(Albert W. Overhauser),問他是否願意指導我的論文並幫我找到一個論文題目。透過課程和解決問題,我迅速掌握了理論物理學的工具,但我仍然不知道如何找到一個合適的研究問題。找到好的問題並不是(即使在今天也不是)在課堂或研討會上討論的主題。

阿爾伯特·奧弗豪澤

物理學家,美國國家科學院院士,因提出核磁共振中的奧弗豪瑟效應理論而聞名。

幸運的是,我可以去解決奧弗豪澤懸而未決的一系列有趣謎題。這些謎題通常是形式上的悖論,例如:「固體物理學中某一現象的初步理論分析得出結果A,而實驗卻給出了完全不同的結果B」。還有個例子,奧弗豪澤作為作者引用最多的論文的前兩句是:

「簡單的經典理論對離子晶體的介電常數和壓縮性的描述導致了兩個關係,其中任意參數已被消除,稱為Szigeti關係。這兩者都不符合實驗數據,表明這些簡單理論存在不足。

這篇總結了奧弗豪澤第二位學生蓋爾·迪克博士論文的文章,描述了一個能消除理論與實驗結果之間差異的更好模型。

在奧弗豪澤列出的悖論中,大多數情況下他自己也不知道是什麼導致了理論分析與實驗結果之間的矛盾。於是,我選擇了一個關於晶體中激子輻射壽命的問題,因為這個問題在理論上有矛盾。簡單的理論根據應用方式得出零或無窮的結果,這都不合乎情理。這個問題成了我的研究焦點,而奧弗豪澤並沒有在這方面的研究。

每次我去見他時,他都作為傾聽者和批評者給予了極大的支持,但尋找研究方向和解決技術理論問題完全是我的責任。他給我的最大禮物是對有趣問題的所有權,以及對研究和進展的全部責任。有一天,他告訴我最好開始整理我的研究成果,這標誌著我博士研究的結束。為了消除這個悖論,我們發明了極化激元,這是一種新的固體物理「粒子」。從我的論文中寫成的單篇論文(和單一作者)至今仍被高度引用,這得益於雷射、極化激元凝聚態和現代光子學。謝謝你,奧弗豪澤,我已經盡力透過培養新一代獨立的學生來回報你。

第一份真正的工作

手握理論固態物理論文,我踏入了就業市場。是選擇學術界還是工業界?從我聽過的固態物理學研討會演講者那裡,答案已經很明確了。 AT&T 的貝爾實驗室通用電氣在固態物理學領域有著比任何大學都更廣泛、更有活力的研究計畫。從這些實驗室回來後,我對工業界所追求的這一領域以及這兩個實驗室相對自由的研究氛圍感到非常興奮。

最終,我選擇了貝爾實驗室,主要是因為它的實驗室管理結構。他們重組了結構,使得有一個小型的理論物理組,不直接隸屬於磁性或半導體等子領域。相較之下,通用電氣在每個固態物理主題子群中都有幾個理論學家。當然,加入貝爾實驗室的固態理論組,就像在那個時代加入洋基隊(知名職棒隊)成為投手一樣。

理論學家們都在研究奧弗豪澤那種謎語般的課題。

菲利普. 安德森(Philip W. Anderson)彼時寫完了他那篇關於「某些隨機晶格中缺乏擴散」的論文。這篇論文將成為他後來獲得諾貝爾獎的基礎,其動機是為了解釋費厄(Feher)在摻雜矽實驗中觀察到的一些悖論性的電子自旋弛豫結果。梅爾文·拉克斯(Melvin Lax)試圖以不違反熱力學第二定律的方式來闡述半導體二極體中的雜訊問題。因為在一個簡單的二極體-電阻電路中,很難寫出一個理論,使得二極體的整流特性導致電容器上的平均電荷為零。康耶斯·赫林(Conyers Herring)發明了聲子拖曳(Phonon Drag)來解釋摻雜半導體中異常巨大的熱電位。格雷戈里·萬尼爾(Gregory Wannier)當時在研究斯塔克效應(Stark effect)及其在高電場下的可能觀測。

現在回顧整個事業,讓我印象深刻的是,研究主題都是固態物理學的普遍問題。理論工作常常是基於詳細的實驗,但並不專門由AT&T 的材料科學和裝置需求所驅動。當然,貝爾實驗室的大部分工作都集中在後一類問題上,但理論組卻不同。

赫林閱讀了所有固態物理學文獻,甚至親自翻譯了一些蘇聯文獻。他主持每月一次的期刊俱樂部,從他的閱讀中選擇最有趣的內容,指派相關的實驗室科學家進行演講。很少有人拒絕這樣做。這些充滿爭論的會議對我的延伸教育和作為介紹貝爾實驗室極其多樣化的社會環境都是極好的。

赫林也是理論組的負責人,他看到我在努力尋找下一個研究問題。他建議我去拜訪實驗學家,以獲得對有趣謎題所在的自己的感覺,我仍然記得許多這樣的拜訪。阿瑟·肖洛(Arthur Schawlow)向我解釋了1958 年湯斯-肖洛(Townes-Schawlow)關於「光學雷射」可能性的理論論文。然後,他從桌子抽屜裡拿出一根大約三英寸長的粉紅色棒子,描述了使Al2O3 成為紅寶石的Cr3+雜質的奇妙光譜細節。他結束演講時說,不幸的是,R1 和R2 光譜線完全不適合製造光學雷射。但兩年後,在西奧多·梅曼(Theodore Maiman)展示了閃光燈泵浦紅寶石的雷射作用後,這種晶體被用於製造貝爾實驗室的第一台光學雷射。可見製造脈衝雷射的重要性並未被肖洛意識到。

比爾·博伊爾(Bill [Willard] Boyle)當時在測量半金屬鉍的低溫磁熱性質。喬治·費厄(George Feher)使用他開發的ENDOR 技術(電子-核雙共振)繪製了矽中磷施主的電子波函數圖。伯恩德·馬蒂亞斯(Bernd Matthias)則告訴在場所有願意聽的人,超導性不可能真的是BCS 型的,因為在某些材料中沒有同位素效應。羅伯特·科林斯(Robert J. Collins)倒是向我介紹了CdS 中的“邊緣發射”發光,這為我的第二篇論文提供了主題。

拜訪吉姆·蘭德(Jim Lander)的子部門讓我成功認識了戴維·托馬斯(David G. Thomas),我們隨後的合作為我未來幾年提供了必要的「謎題」。貝爾實驗室黃金時代的神秘感以及其管理者和科學家的卓越遠見使我想講述這個團隊的背景故事。這個部門完全致力於氧化鋅(ZnO)研究,而在1960 年之前,真空管是所有電話電子設備中的基本擴大機。真空管需要來自熱陰極的電子發射,但為了延長使用壽命和降低功耗,溫度需要盡可能低。氧化鋇(BaO)塗層陰極在這方面表現良好,因此貝爾實驗室成立了一個研究氧化鋇的團隊。

到20 世紀50 年代中期,很明顯真空管時代即將結束。儘管如此,1956 年第一條承載電話會話的跨大西洋電纜仍然每43 英里就有一個真空管放大器。 (這條電纜在使用22 年後因技術過時而停止使用,所有真空管仍在正常工作!)由於氧化鋇不再是AT&T 未來技術感興趣的材料,而且該小組在氧化物材料方面有經驗基礎,他們這才將研究重點轉向了氧化鋅。氧化鋅被認為是一種半導體,因此可能與電子技術有關,而且氧化鋅晶體相對容易生長。因此,蘭登的小組能夠透過設計一個看似合理的替代理由來保存自己,並在貝爾實驗室的結構中發展。

我在工作前十年對「現在該做什麼?」的回答

總而言之,我遇到化學家戴維·托馬斯,並與他建立了一個理論與實驗相結合的工作聯盟,這個聯盟最終涉及了許多不同的化合物半導體。它為我提供了多年來未預見的問題和悖論,為AT&T 提供了化合物半導體和半導體光學的重要知識基礎,並在1969 年為我們贏得了美國物理學會頒發的“奧利弗·E·巴克利凝聚態物質獎(Oliver E. Buckley Condensed Matter Prize,通常簡稱巴克利獎)」。

但在當時,沒有人會猜到光和化合物半導體會有現在這麼大的技術前景。

離開舒適圈

1968 年,我發現在凝聚態物理學中已經找不到適合我特殊才能的問題了。我獲得了一個古根漢獎學金(Guggenheim Fellowship,美國著名的學術資助計畫),前往劍橋大學的卡文迪許實驗室待了半年,希望找到新的有趣方向,但幾乎一無所獲。

從劍橋大學回到普林斯頓大學後,在貝爾實驗室半導體組的諮詢工作中,我遇到了羅伯特·舒爾曼(Robert G. Shulman),一位正在對血紅蛋白進行高分辨率核磁共振實驗的化學家。

羅伯特舒爾曼

他是美國國家科學院院士和美國國家醫學研究所院士。他後來放棄了生物分子結構研究,轉而研究體內路徑。

舒爾曼向我介紹了血紅蛋白中四個鐵原子在廣泛分離的血紅素組中心的協同氧結合。令人驚訝的是,各種物理學技術都被用來研究這個分子。核磁共振(NMR)、電子順磁共振(EPR)、光譜學、共振拉曼散射、X 射線結構研究、中子散射、穆斯堡爾光譜學——所有這些固態物理學的巧妙實驗技術似乎都與血紅蛋白密切相關。有一段時間,血紅蛋白成為物理學家理解蛋白質如何運作的「氫原子」。

舒爾曼希望有理論方面的夥伴來幫助解釋他的核磁共振結果,透過這些結果,他希望理解生理上重要的協同氧結合的物理基礎。他知道我透過與貝爾實驗室的實驗化學家戴維·托馬斯的合作所產生的影響。因此,他努力讓我對血紅蛋白問題產生興趣,並讓我認識到這種研究有可能使生物學成為一門「硬」科學。

			object(WP_Post)#3069 (24) {
  ["ID"]=>
  int(1380)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-10-11 14:08:00"
  ["post_date_gmt"]=>
  string(19) "2024-10-11 14:08:00"
  ["post_content"]=>
  string(684) "




" ["post_title"]=> string(46) "Java第20堂: Extends JLabel and JToggleButton" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(14) "java-lesson-20" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-10-11 14:08:17" ["post_modified_gmt"]=> string(19) "2024-10-11 14:08:17" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(48) "https://www.hkprog.org/2024/10/java-lesson-19-3/" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Java第20堂: Extends JLabel and JToggleButton
			object(WP_Post)#2815 (24) {
  ["ID"]=>
  int(1355)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-10-10 04:57:52"
  ["post_date_gmt"]=>
  string(19) "2024-10-10 04:57:52"
  ["post_content"]=>
  string(6541) "

在2024年的3月23日,香港千禧獅子會和香港編程學會合辦了一個全港編程大賽,這項比賽在THEi(香港高等教育科技學院)舉行。這個比賽是一個跨學科的競賽,吸引了來自小學生、中學生和公開組別的IT業界人士。

在這場比賽中,一群熱愛編程的學生決定組成一個團隊,他們來自綠色工程與可持續發展學科和時裝設計 (時裝管理) 學科。儘管他們的專業領域看似不相關,但他們都認識到IT和編程在他們的學科中的重要性,並且懷有熱情。

綠色工程學科的學生們一直致力於應用他們的專業知識來解決環境問題。他們正在開發一個能夠監測和優化能源使用的系統 (AI Platform), 以提高能源效率並減少浪費。與此同時,時裝設計 (時裝管理) 學科的學生們利用他們對市場趨勢和消費者行為的了解,可以根據個人的風格和喜好為用戶提供時尚建議和進行國際時裝貿易預測。

團隊成員開始展開合作。在THEi的綠色工程與可持續發展學科和時裝設計 (時裝管理) 學科的課程主任 曾志榮博士工程師 和 陳敏軒博士指導下,他們利用彼此的專業知識和編程技能,進行了近一個月的編程集訓。在比賽當天,經過三小時的激烈競爭,他們最終獲得了公開組季軍的榮譽。儘管他們沒有贏得冠軍,但這對他們來說已經是一個巨大的成功。他們的合作和努力證明了IT和編程在綠色工程和時管理中的重要性和價值。

這個故事強調了綠色工程與可持續發展學科和時裝設計 (時裝管理)的學生如何運用編程技能和IT知識,充分發揮他們專業領域的潛力。他們的熱情和創造力成為跨學科合作的例子,利用應用科學來解決現實世界的問題帶來了新的可能性。這個故事也傳達了一個重要的信息:不同學科的結合和跨領域合作可以產生令人驚喜的結果,並為社會帶來更多的創新和進步。無論我們的專業背景是什麼,編程和IT都可以成為我們強大的工具,幫助我們實現應用科學的目標,創造更美好的未來。

季軍:

跨學科團隊:

LYU Zheng Lin 吕政霖 (230348105) – BSc(Hons) Green Engineering and Sustainability Programme

KWONG Ka Nam, Madison 鄺迦南(220481139) - BA(Hons) Fashion Design (Fashion Management Stream) 時裝管理

優異獎:

綠色工程一年級團隊: He Chun Kit 何俊傑, Yu Wing Sze 余咏詩, Lin Li 林立

綠色工程三年級團隊:Yan Yujie 闫煜杰, Wu Ri Hui伍日輝, TAM Tsz Kin 譚子健, Liu Yu 刘渔

集訓

競技

綠色工程與可持續發展學科和時裝設計 (時裝管理) 學科同學獲獎

" ["post_title"]=> string(25) "全港編程大賽 - THEi" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(28) "coding-competition-2024-thei" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-10-10 05:55:06" ["post_modified_gmt"]=> string(19) "2024-10-10 05:55:06" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1355" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
全港編程大賽 - THEi
在2024年的3月23日,香港千禧獅子會和香港編程學會合辦了一個全港編程大賽,這項比賽在THEi(香港高等教育科技學院)舉行。這個比賽是一個跨學科的競賽,吸引了來自小學生、中學生和公開組別的IT業界人士。 在這場比賽中,一群熱愛編程的學生決定組成一個團隊,他們來自綠色工程與可持續發展學科和時裝設計 (時裝管理) 學科。儘管他們的專業領域看似不相關,但他們都認識到IT和編程在他們的學科中的重要性,並且懷有熱情。 綠色工程學科的學生們一直致力於應用他們的專業知識來解決環境問題。他們正在開發一個能夠監測和優化能源使用的系統 (AI Platform), 以提高能源效率並減少浪費。與此同時,時裝設計 (時裝管理) 學科的學生們利用他們對市場趨勢和消費者行為的了解,可以根據個人的風格和喜好為用戶提供時尚建議和進行國際時裝貿易預測。 團隊成員開始展開合作。在THEi的綠色工程與可持續發展學科和時裝設計 (時裝管理) 學科的課程主任 曾志榮博士工程師 和 陳敏軒博士指導下,他們利用彼此的專業知識和編程技能,進行了近一個月的編程集訓。在比賽當天,經過三小時的激烈競爭,他們最終獲得了公開組季軍的榮譽。儘管他們沒有贏得冠軍,但這對他們來說已經是一個巨大的成功。他們的合作和努力證明了IT和編程在綠色工程和時管理中的重要性和價值。 這個故事強調了綠色工程與可持續發展學科和時裝設計 (時裝管理)的學生如何運用編程技能和IT知識,充分發揮他們專業領域的潛力。他們的熱情和創造力成為跨學科合作的例子,利用應用科學來解決現實世界的問題帶來了新的可能性。這個故事也傳達了一個重要的信息:不同學科的結合和跨領域合作可以產生令人驚喜的結果,並為社會帶來更多的創新和進步。無論我們的專業背景是什麼,編程和IT都可以成為我們強大的工具,幫助我們實現應用科學的目標,創造更美好的未來。 季軍: 跨學科團隊: LYU Zheng Lin 吕政霖 (230348105) – BSc(Hons) Green Engineering and Sustainability Programme KWONG Ka Nam, Madison 鄺迦南(220481139) – BA(Hons) Fashion Design (Fashion Management Stream) 時裝管理 優異獎: 綠色工程一年級團隊: He Chun Kit 何俊傑, Yu Wing Sze 余咏詩, […]

在2024年的3月23日,香港千禧獅子會和香港編程學會合辦了一個全港編程大賽,這項比賽在THEi(香港高等教育科技學院)舉行。這個比賽是一個跨學科的競賽,吸引了來自小學生、中學生和公開組別的IT業界人士。

在這場比賽中,一群熱愛編程的學生決定組成一個團隊,他們來自綠色工程與可持續發展學科和時裝設計 (時裝管理) 學科。儘管他們的專業領域看似不相關,但他們都認識到IT和編程在他們的學科中的重要性,並且懷有熱情。

綠色工程學科的學生們一直致力於應用他們的專業知識來解決環境問題。他們正在開發一個能夠監測和優化能源使用的系統 (AI Platform), 以提高能源效率並減少浪費。與此同時,時裝設計 (時裝管理) 學科的學生們利用他們對市場趨勢和消費者行為的了解,可以根據個人的風格和喜好為用戶提供時尚建議和進行國際時裝貿易預測。

團隊成員開始展開合作。在THEi的綠色工程與可持續發展學科和時裝設計 (時裝管理) 學科的課程主任 曾志榮博士工程師 和 陳敏軒博士指導下,他們利用彼此的專業知識和編程技能,進行了近一個月的編程集訓。在比賽當天,經過三小時的激烈競爭,他們最終獲得了公開組季軍的榮譽。儘管他們沒有贏得冠軍,但這對他們來說已經是一個巨大的成功。他們的合作和努力證明了IT和編程在綠色工程和時管理中的重要性和價值。

這個故事強調了綠色工程與可持續發展學科和時裝設計 (時裝管理)的學生如何運用編程技能和IT知識,充分發揮他們專業領域的潛力。他們的熱情和創造力成為跨學科合作的例子,利用應用科學來解決現實世界的問題帶來了新的可能性。這個故事也傳達了一個重要的信息:不同學科的結合和跨領域合作可以產生令人驚喜的結果,並為社會帶來更多的創新和進步。無論我們的專業背景是什麼,編程和IT都可以成為我們強大的工具,幫助我們實現應用科學的目標,創造更美好的未來。

季軍:

跨學科團隊:

LYU Zheng Lin 吕政霖 (230348105) – BSc(Hons) Green Engineering and Sustainability Programme

KWONG Ka Nam, Madison 鄺迦南(220481139) - BA(Hons) Fashion Design (Fashion Management Stream) 時裝管理

優異獎:

綠色工程一年級團隊: He Chun Kit 何俊傑, Yu Wing Sze 余咏詩, Lin Li 林立

綠色工程三年級團隊:Yan Yujie 闫煜杰, Wu Ri Hui伍日輝, TAM Tsz Kin 譚子健, Liu Yu 刘渔

集訓

競技

綠色工程與可持續發展學科和時裝設計 (時裝管理) 學科同學獲獎

			object(WP_Post)#3067 (24) {
  ["ID"]=>
  int(1339)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-10-09 17:17:57"
  ["post_date_gmt"]=>
  string(19) "2024-10-09 17:17:57"
  ["post_content"]=>
  string(1145) "








Source code : https://github.com/quantrpeter/leetcode-lesson-2

" ["post_title"]=> string(28) "Leetcode訓練營 - Lesson 2" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(17) "leetcode-lesson-2" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-10-09 17:21:35" ["post_modified_gmt"]=> string(19) "2024-10-09 17:21:35" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1339" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Leetcode訓練營 - Lesson 2
Source code : https://github.com/quantrpeter/leetcode-lesson-2

Source code : https://github.com/quantrpeter/leetcode-lesson-2

			object(WP_Post)#3070 (24) {
  ["ID"]=>
  int(1379)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-10-04 14:21:17"
  ["post_date_gmt"]=>
  string(19) "2024-10-04 14:21:17"
  ["post_content"]=>
  string(1306) "




這裏下載Icon

https://github.com/legacy-icons/famfamfam-silk

https://icons8.com/app/windows

" ["post_title"]=> string(24) "Java第19堂: Outlook UI" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(16) "java-lesson-19-2" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-10-11 14:03:06" ["post_modified_gmt"]=> string(19) "2024-10-11 14:03:06" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(48) "https://www.hkprog.org/2024/10/java-lesson-19-2/" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Java第19堂: Outlook UI
這裏下載Icon https://github.com/legacy-icons/famfamfam-silk https://icons8.com/app/windows

這裏下載Icon

https://github.com/legacy-icons/famfamfam-silk

https://icons8.com/app/windows

			object(WP_Post)#3071 (24) {
  ["ID"]=>
  int(1320)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-10-04 14:21:17"
  ["post_date_gmt"]=>
  string(19) "2024-10-04 14:21:17"
  ["post_content"]=>
  string(1306) "




這裏下載Icon

https://github.com/legacy-icons/famfamfam-silk

https://icons8.com/app/windows

" ["post_title"]=> string(24) "Java第19堂: Outlook UI" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(14) "java-lesson-19" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-10-04 14:21:47" ["post_modified_gmt"]=> string(19) "2024-10-04 14:21:47" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1320" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Java第19堂: Outlook UI
這裏下載Icon https://github.com/legacy-icons/famfamfam-silk https://icons8.com/app/windows

這裏下載Icon

https://github.com/legacy-icons/famfamfam-silk

https://icons8.com/app/windows

			object(WP_Post)#3072 (24) {
  ["ID"]=>
  int(1301)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-09-27 15:41:45"
  ["post_date_gmt"]=>
  string(19) "2024-09-27 15:41:45"
  ["post_content"]=>
  string(604) "




Example project: https://github.com/quantrpeter/antlr-maven-project-setup

" ["post_title"]=> string(30) "Antlr第2堂: Maven with Antlr" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(14) "antlr-lesson-2" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-09-27 15:42:28" ["post_modified_gmt"]=> string(19) "2024-09-27 15:42:28" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1301" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Antlr第2堂: Maven with Antlr
Example project: https://github.com/quantrpeter/antlr-maven-project-setup

Example project: https://github.com/quantrpeter/antlr-maven-project-setup

			object(WP_Post)#3073 (24) {
  ["ID"]=>
  int(1297)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-09-27 15:38:23"
  ["post_date_gmt"]=>
  string(19) "2024-09-27 15:38:23"
  ["post_content"]=>
  string(904) "





"
  ["post_title"]=>
  string(31) "Java第18堂: TableCellRenderer"
  ["post_excerpt"]=>
  string(0) ""
  ["post_status"]=>
  string(7) "publish"
  ["comment_status"]=>
  string(4) "open"
  ["ping_status"]=>
  string(4) "open"
  ["post_password"]=>
  string(0) ""
  ["post_name"]=>
  string(14) "java-lesson-18"
  ["to_ping"]=>
  string(0) ""
  ["pinged"]=>
  string(0) ""
  ["post_modified"]=>
  string(19) "2024-09-27 15:38:23"
  ["post_modified_gmt"]=>
  string(19) "2024-09-27 15:38:23"
  ["post_content_filtered"]=>
  string(0) ""
  ["post_parent"]=>
  int(0)
  ["guid"]=>
  string(30) "https://www.hkprog.org/?p=1297"
  ["menu_order"]=>
  int(0)
  ["post_type"]=>
  string(4) "post"
  ["post_mime_type"]=>
  string(0) ""
  ["comment_count"]=>
  string(1) "0"
  ["filter"]=>
  string(3) "raw"
}
		
Java第18堂: TableCellRenderer
			object(WP_Post)#3074 (24) {
  ["ID"]=>
  int(1293)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-09-25 13:30:36"
  ["post_date_gmt"]=>
  string(19) "2024-09-25 13:30:36"
  ["post_content"]=>
  string(924) "





"
  ["post_title"]=>
  string(74) "Leetcode訓練營 – Lesson 1: LinkedList + Queue + Stack + Binary Search"
  ["post_excerpt"]=>
  string(0) ""
  ["post_status"]=>
  string(7) "publish"
  ["comment_status"]=>
  string(4) "open"
  ["ping_status"]=>
  string(4) "open"
  ["post_password"]=>
  string(0) ""
  ["post_name"]=>
  string(17) "leetcode-lesson-1"
  ["to_ping"]=>
  string(0) ""
  ["pinged"]=>
  string(0) ""
  ["post_modified"]=>
  string(19) "2024-10-09 17:21:13"
  ["post_modified_gmt"]=>
  string(19) "2024-10-09 17:21:13"
  ["post_content_filtered"]=>
  string(0) ""
  ["post_parent"]=>
  int(0)
  ["guid"]=>
  string(30) "https://www.hkprog.org/?p=1293"
  ["menu_order"]=>
  int(0)
  ["post_type"]=>
  string(4) "post"
  ["post_mime_type"]=>
  string(0) ""
  ["comment_count"]=>
  string(1) "0"
  ["filter"]=>
  string(3) "raw"
}
		
Leetcode訓練營 – Lesson 1: LinkedList + Queue + Stack + Binary Search
			object(WP_Post)#3075 (24) {
  ["ID"]=>
  int(1289)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-09-25 13:29:01"
  ["post_date_gmt"]=>
  string(19) "2024-09-25 13:29:01"
  ["post_content"]=>
  string(970) "








" ["post_title"]=> string(29) "Antlr第1堂: Install and run" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(14) "antlr-lesson-1" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-09-25 13:29:02" ["post_modified_gmt"]=> string(19) "2024-09-25 13:29:02" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1289" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Antlr第1堂: Install and run

			object(WP_Post)#3076 (24) {
  ["ID"]=>
  int(1283)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-09-25 13:26:44"
  ["post_date_gmt"]=>
  string(19) "2024-09-25 13:26:44"
  ["post_content"]=>
  string(958) "








" ["post_title"]=> string(20) "Java第17堂: JTable" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(14) "java-lesson-17" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-09-25 13:26:57" ["post_modified_gmt"]=> string(19) "2024-09-25 13:26:57" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1283" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Java第17堂: JTable

			object(WP_Post)#3077 (24) {
  ["ID"]=>
  int(1277)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-09-13 15:17:57"
  ["post_date_gmt"]=>
  string(19) "2024-09-13 15:17:57"
  ["post_content"]=>
  string(958) "








" ["post_title"]=> string(60) "Java第16堂: Abstract Factory Pattern & ExecutorService" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(14) "java-lesson-16" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-09-25 13:27:04" ["post_modified_gmt"]=> string(19) "2024-09-25 13:27:04" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1277" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Java第16堂: Abstract Factory Pattern & ExecutorService

			object(WP_Post)#3078 (24) {
  ["ID"]=>
  int(1269)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-09-10 19:07:55"
  ["post_date_gmt"]=>
  string(19) "2024-09-10 19:07:55"
  ["post_content"]=>
  string(1244) "

在pom.xml加上<developer>, <email>為你的hkprog登入電郵

然後登入hkprog.org,上載你的頭像

" ["post_title"]=> string(52) "如何在編程學會Maven Repo加上開發者訊息" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(136) "%e5%a6%82%e4%bd%95%e5%9c%a8%e7%b7%a8%e7%a8%8b%e5%ad%b8%e6%9c%83maven-repo%e5%8a%a0%e4%b8%8a%e9%96%8b%e7%99%bc%e8%80%85%e8%a8%8a%e6%81%af" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-09-10 19:09:30" ["post_modified_gmt"]=> string(19) "2024-09-10 19:09:30" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1269" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
如何在編程學會Maven Repo加上開發者訊息
在pom.xml加上<developer>, <email>為你的hkprog登入電郵 然後登入hkprog.org,上載你的頭像

在pom.xml加上<developer>, <email>為你的hkprog登入電郵

然後登入hkprog.org,上載你的頭像

			object(WP_Post)#3079 (24) {
  ["ID"]=>
  int(1265)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-09-06 16:26:48"
  ["post_date_gmt"]=>
  string(19) "2024-09-06 16:26:48"
  ["post_content"]=>
  string(904) "





"
  ["post_title"]=>
  string(38) "Java第15堂: Design Pattern Singleton"
  ["post_excerpt"]=>
  string(0) ""
  ["post_status"]=>
  string(7) "publish"
  ["comment_status"]=>
  string(4) "open"
  ["ping_status"]=>
  string(4) "open"
  ["post_password"]=>
  string(0) ""
  ["post_name"]=>
  string(14) "java-lesson-15"
  ["to_ping"]=>
  string(0) ""
  ["pinged"]=>
  string(0) ""
  ["post_modified"]=>
  string(19) "2024-09-06 16:27:06"
  ["post_modified_gmt"]=>
  string(19) "2024-09-06 16:27:06"
  ["post_content_filtered"]=>
  string(0) ""
  ["post_parent"]=>
  int(0)
  ["guid"]=>
  string(30) "https://www.hkprog.org/?p=1265"
  ["menu_order"]=>
  int(0)
  ["post_type"]=>
  string(4) "post"
  ["post_mime_type"]=>
  string(0) ""
  ["comment_count"]=>
  string(1) "0"
  ["filter"]=>
  string(3) "raw"
}
		
Java第15堂: Design Pattern Singleton
			object(WP_Post)#3080 (24) {
  ["ID"]=>
  int(1185)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-08-23 10:30:55"
  ["post_date_gmt"]=>
  string(19) "2024-08-23 10:30:55"
  ["post_content"]=>
  string(18981) "

舉辦了十四堂Java網課之後正式舉辦第一堂實體堂,感謝生產力局大力支持提供場地令課程得以進行,本堂教導大家使用Git,特別是小學生掌握Git和Maven之後初步具備協作能力,可以合作寫一些更大的軟件,是教育重要的一步。本次亦講解了學生教育理念,見下面PowerPoint

" ["post_title"]=> string(22) "第一堂Java實體堂" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(22) "java-physical-lesson-1" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-08-23 14:02:31" ["post_modified_gmt"]=> string(19) "2024-08-23 14:02:31" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1185" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
第一堂Java實體堂
舉辦了十四堂Java網課之後正式舉辦第一堂實體堂,感謝生產力局大力支持提供場地令課程得以進行,本堂教導大家使用Git,特別是小學生掌握Git和Maven之後初步具備協作能力,可以合作寫一些更大的軟件,是教育重要的一步。本次亦講解了學生教育理念,見下面PowerPoint

舉辦了十四堂Java網課之後正式舉辦第一堂實體堂,感謝生產力局大力支持提供場地令課程得以進行,本堂教導大家使用Git,特別是小學生掌握Git和Maven之後初步具備協作能力,可以合作寫一些更大的軟件,是教育重要的一步。本次亦講解了學生教育理念,見下面PowerPoint

			object(WP_Post)#3081 (24) {
  ["ID"]=>
  int(1178)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-08-18 18:22:52"
  ["post_date_gmt"]=>
  string(19) "2024-08-18 18:22:52"
  ["post_content"]=>
  string(893) "

在Netbeans裏可以看到編程學會的Maven Repo上面有沒有你submit的jar

" ["post_title"]=> string(22) "編程學會Maven Repo" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(46) "%e7%b7%a8%e7%a8%8b%e5%ad%b8%e6%9c%83maven-repo" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-08-18 18:22:52" ["post_modified_gmt"]=> string(19) "2024-08-18 18:22:52" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1178" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
編程學會Maven Repo
在Netbeans裏可以看到編程學會的Maven Repo上面有沒有你submit的jar

在Netbeans裏可以看到編程學會的Maven Repo上面有沒有你submit的jar

			object(WP_Post)#3082 (24) {
  ["ID"]=>
  int(1165)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-08-16 13:53:44"
  ["post_date_gmt"]=>
  string(19) "2024-08-16 13:53:44"
  ["post_content"]=>
  string(2376) "








Executable Jar

Submit左個jar上編程學會,其它project想用,可以咁樣揾返個dependency

如果我想知你地寫咩function, 我click呢個制就會睇到

" ["post_title"]=> string(45) "Java第14堂: Maven Repo & Executable Jar" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(34) "java-lesson-14-maven-repo-exec-jar" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-08-18 09:34:37" ["post_modified_gmt"]=> string(19) "2024-08-18 09:34:37" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1165" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Java第14堂: Maven Repo & Executable Jar
Executable Jar Submit左個jar上編程學會,其它project想用,可以咁樣揾返個dependency 如果我想知你地寫咩function, 我click呢個制就會睇到

Executable Jar

Submit左個jar上編程學會,其它project想用,可以咁樣揾返個dependency

如果我想知你地寫咩function, 我click呢個制就會睇到

			object(WP_Post)#3083 (24) {
  ["ID"]=>
  int(1154)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-08-12 16:13:47"
  ["post_date_gmt"]=>
  string(19) "2024-08-12 16:13:47"
  ["post_content"]=>
  string(3232) "

計劃名稱:為香港出力

口號 : 唔好講嘢,實際開發

計劃詳情

     香港編程學會為社會提供義務教育,吸引到一大批對編程有濃厚興趣之年青人,編程學會透過一系列課程,真接拉高他們之技術,令他們從小就擁有實際的軟件開發能力。現在是時候貢獻香港了,我們將會發起號召及組織,團結業界學界及年青人,貢獻一己的力量,開發一系列的開源工具,提升香港生產力及香港Programmer之榮譽感。

計劃為什麼重要

     香港IT界一直以來給人的印象就是說話多,實際輸出少。 香港人過去二十年在軟件開發上連一個回憶都沒有。計劃作出三方面大膽嘗試

  • 嘗試團結眾人參與軟件開發
  • 嘗試以實際開發,拉高全民開發力
  • 嘗試動員以住沒有想過的對象:年青人, 萬人成功, 我們就可擁有巨力動力

計劃分工:

  • 香港編程學會 : 提供教育及技術支持
  • 生產力局 : 提供場地,宣傳及動員的支持 (傾談中)
  • 創科局 : 提供資金支持 (傾談中)

分階段實行

     第一階段:動員十名編程資優生參與開源小工具開發。圍繞住Microsoft世界開發一些補完功能型的工具,再投放給香港各NGO使用

     第二階段:動員一百名編程資優生,參與完整Full Stack開發,務求建立香港編程文化

     第三階段:動員一千名編程資優生,向軟件界核心領域例如OS/Compiler等推進

" ["post_title"]=> string(8) "We serve" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(8) "we-serve" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-08-12 16:16:04" ["post_modified_gmt"]=> string(19) "2024-08-12 16:16:04" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1154" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
We serve
計劃名稱:為香港出力 口號 : 唔好講嘢,實際開發 計劃詳情      香港編程學會為社會提供義務教育,吸引到一大批對編程有濃厚興趣之年青人,編程學會透過一系列課程,真接拉高他們之技術,令他們從小就擁有實際的軟件開發能力。現在是時候貢獻香港了,我們將會發起號召及組織,團結業界學界及年青人,貢獻一己的力量,開發一系列的開源工具,提升香港生產力及香港Programmer之榮譽感。 計劃為什麼重要      香港IT界一直以來給人的印象就是說話多,實際輸出少。 香港人過去二十年在軟件開發上連一個回憶都沒有。計劃作出三方面大膽嘗試 計劃分工: 分階段實行      第一階段:動員十名編程資優生參與開源小工具開發。圍繞住Microsoft世界開發一些補完功能型的工具,再投放給香港各NGO使用      第二階段:動員一百名編程資優生,參與完整Full Stack開發,務求建立香港編程文化      第三階段:動員一千名編程資優生,向軟件界核心領域例如OS/Compiler等推進

計劃名稱:為香港出力

口號 : 唔好講嘢,實際開發

計劃詳情

     香港編程學會為社會提供義務教育,吸引到一大批對編程有濃厚興趣之年青人,編程學會透過一系列課程,真接拉高他們之技術,令他們從小就擁有實際的軟件開發能力。現在是時候貢獻香港了,我們將會發起號召及組織,團結業界學界及年青人,貢獻一己的力量,開發一系列的開源工具,提升香港生產力及香港Programmer之榮譽感。

計劃為什麼重要

     香港IT界一直以來給人的印象就是說話多,實際輸出少。 香港人過去二十年在軟件開發上連一個回憶都沒有。計劃作出三方面大膽嘗試

  • 嘗試團結眾人參與軟件開發
  • 嘗試以實際開發,拉高全民開發力
  • 嘗試動員以住沒有想過的對象:年青人, 萬人成功, 我們就可擁有巨力動力

計劃分工:

  • 香港編程學會 : 提供教育及技術支持
  • 生產力局 : 提供場地,宣傳及動員的支持 (傾談中)
  • 創科局 : 提供資金支持 (傾談中)

分階段實行

     第一階段:動員十名編程資優生參與開源小工具開發。圍繞住Microsoft世界開發一些補完功能型的工具,再投放給香港各NGO使用

     第二階段:動員一百名編程資優生,參與完整Full Stack開發,務求建立香港編程文化

     第三階段:動員一千名編程資優生,向軟件界核心領域例如OS/Compiler等推進

			object(WP_Post)#3084 (24) {
  ["ID"]=>
  int(1143)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-08-09 13:49:09"
  ["post_date_gmt"]=>
  string(19) "2024-08-09 13:49:09"
  ["post_content"]=>
  string(904) "





"
  ["post_title"]=>
  string(33) "Java第13堂: XPath & XStream"
  ["post_excerpt"]=>
  string(0) ""
  ["post_status"]=>
  string(7) "publish"
  ["comment_status"]=>
  string(4) "open"
  ["ping_status"]=>
  string(4) "open"
  ["post_password"]=>
  string(0) ""
  ["post_name"]=>
  string(38) "java%e7%ac%ac13%e5%a0%82-xpath-xstream"
  ["to_ping"]=>
  string(0) ""
  ["pinged"]=>
  string(0) ""
  ["post_modified"]=>
  string(19) "2024-08-09 13:49:33"
  ["post_modified_gmt"]=>
  string(19) "2024-08-09 13:49:33"
  ["post_content_filtered"]=>
  string(0) ""
  ["post_parent"]=>
  int(0)
  ["guid"]=>
  string(30) "https://www.hkprog.org/?p=1143"
  ["menu_order"]=>
  int(0)
  ["post_type"]=>
  string(4) "post"
  ["post_mime_type"]=>
  string(0) ""
  ["comment_count"]=>
  string(1) "0"
  ["filter"]=>
  string(3) "raw"
}
		
Java第13堂: XPath & XStream
			object(WP_Post)#3085 (24) {
  ["ID"]=>
  int(1134)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-08-06 03:58:21"
  ["post_date_gmt"]=>
  string(19) "2024-08-06 03:58:21"
  ["post_content"]=>
  string(1290) "




" ["post_title"]=> string(23) "RISC-V Day -16 Feb 2024" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(22) "risc-v-day-16-feb-2024" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-08-06 03:58:35" ["post_modified_gmt"]=> string(19) "2024-08-06 03:58:35" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1134" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
RISC-V Day -16 Feb 2024
			object(WP_Post)#3086 (24) {
  ["ID"]=>
  int(1124)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-08-02 14:29:20"
  ["post_date_gmt"]=>
  string(19) "2024-08-02 14:29:20"
  ["post_content"]=>
  string(904) "





"
  ["post_title"]=>
  string(37) "Java第12堂: Swing Layouts & XML"
  ["post_excerpt"]=>
  string(0) ""
  ["post_status"]=>
  string(7) "publish"
  ["comment_status"]=>
  string(4) "open"
  ["ping_status"]=>
  string(4) "open"
  ["post_password"]=>
  string(0) ""
  ["post_name"]=>
  string(15) "java-lession-12"
  ["to_ping"]=>
  string(0) ""
  ["pinged"]=>
  string(0) ""
  ["post_modified"]=>
  string(19) "2024-08-02 14:30:38"
  ["post_modified_gmt"]=>
  string(19) "2024-08-02 14:30:38"
  ["post_content_filtered"]=>
  string(0) ""
  ["post_parent"]=>
  int(0)
  ["guid"]=>
  string(30) "https://www.hkprog.org/?p=1124"
  ["menu_order"]=>
  int(0)
  ["post_type"]=>
  string(4) "post"
  ["post_mime_type"]=>
  string(0) ""
  ["comment_count"]=>
  string(1) "0"
  ["filter"]=>
  string(3) "raw"
}
		
Java第12堂: Swing Layouts & XML
			object(WP_Post)#3087 (24) {
  ["ID"]=>
  int(1086)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-08-01 03:27:46"
  ["post_date_gmt"]=>
  string(19) "2024-08-01 03:27:46"
  ["post_content"]=>
  string(8417) "

七月份,香港編程學會舉辦了一場別開生面的聚會及生日會,展示了學會成員之間的團結和友誼。這次活動在一個溫馨的BBQ場地舉行,吸引了眾多成員參加。

活動開始時,學會主席致辭,回顧了過去一年的成就,並展望未來的計劃。隨後,成員們分享了各自的編程經驗和心得,討論了最新的技術趨勢和項目進展。這些交流不僅增進了彼此的了解,也激發了新的創意和合作機會。

在生日會環節,學會特別為七月份生日的成員準備了精美的蛋糕。大家一起唱生日歌,分享甜點,氣氛溫馨而愉快。這一刻,不僅讓壽星們感受到來自學會的關愛,也讓所有成員感受到集體的溫暖。

整個活動充滿了歡聲笑語,成員們在輕鬆愉快的氛圍中加深了彼此的友誼。這次聚會不僅展示了香港編程學會的團結一面,也為未來的合作奠定了堅實的基礎。

希望未來的每一次聚會,都能像這次一樣,充滿歡樂和溫暖,讓學會成員們在共同學習和成長的道路上,攜手並進。

" ["post_title"]=> string(39) "七月份編程學會眾會及生日會" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(9) "202407bbq" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-09-05 05:26:43" ["post_modified_gmt"]=> string(19) "2024-09-05 05:26:43" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1086" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
七月份編程學會眾會及生日會
七月份,香港編程學會舉辦了一場別開生面的聚會及生日會,展示了學會成員之間的團結和友誼。這次活動在一個溫馨的BBQ場地舉行,吸引了眾多成員參加。 活動開始時,學會主席致辭,回顧了過去一年的成就,並展望未來的計劃。隨後,成員們分享了各自的編程經驗和心得,討論了最新的技術趨勢和項目進展。這些交流不僅增進了彼此的了解,也激發了新的創意和合作機會。 在生日會環節,學會特別為七月份生日的成員準備了精美的蛋糕。大家一起唱生日歌,分享甜點,氣氛溫馨而愉快。這一刻,不僅讓壽星們感受到來自學會的關愛,也讓所有成員感受到集體的溫暖。 整個活動充滿了歡聲笑語,成員們在輕鬆愉快的氛圍中加深了彼此的友誼。這次聚會不僅展示了香港編程學會的團結一面,也為未來的合作奠定了堅實的基礎。 希望未來的每一次聚會,都能像這次一樣,充滿歡樂和溫暖,讓學會成員們在共同學習和成長的道路上,攜手並進。

七月份,香港編程學會舉辦了一場別開生面的聚會及生日會,展示了學會成員之間的團結和友誼。這次活動在一個溫馨的BBQ場地舉行,吸引了眾多成員參加。

活動開始時,學會主席致辭,回顧了過去一年的成就,並展望未來的計劃。隨後,成員們分享了各自的編程經驗和心得,討論了最新的技術趨勢和項目進展。這些交流不僅增進了彼此的了解,也激發了新的創意和合作機會。

在生日會環節,學會特別為七月份生日的成員準備了精美的蛋糕。大家一起唱生日歌,分享甜點,氣氛溫馨而愉快。這一刻,不僅讓壽星們感受到來自學會的關愛,也讓所有成員感受到集體的溫暖。

整個活動充滿了歡聲笑語,成員們在輕鬆愉快的氛圍中加深了彼此的友誼。這次聚會不僅展示了香港編程學會的團結一面,也為未來的合作奠定了堅實的基礎。

希望未來的每一次聚會,都能像這次一樣,充滿歡樂和溫暖,讓學會成員們在共同學習和成長的道路上,攜手並進。

			object(WP_Post)#3088 (24) {
  ["ID"]=>
  int(1046)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-07-20 08:38:38"
  ["post_date_gmt"]=>
  string(19) "2024-07-20 08:38:38"
  ["post_content"]=>
  string(3051) "

今次教導了幾名青少年開始學習編程,教授了一些編程的基礎技術。我們生活在一個數字化的世界,編程已經成為我們日常生活中不可或缺的一部分。無論是手機應用程序,還是我們使用的各種網站,都是由編程語言創建的。學習編程可以開啟一扇通往創新和創造力的大門,讓我們有能力去創建和控制自己的數字世界。

義教編程是一種強大的力量,可以幫助青少年開始這個旅程。感謝仁濟醫院兒童發展基金提供了一個友好和支持的環境,讓你們可以在專業的指導下學習編程。這些義工老師都是經驗豐富的編程專家,他們熱衷於分享他們的知識和經驗,幫助你們建立堅實的編程基礎。 2024 Jul 20

" ["post_title"]=> string(47) "編程義敎 : 仁濟醫院兒童發展基金" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(14) "20240720_ychss" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-07-20 09:29:54" ["post_modified_gmt"]=> string(19) "2024-07-20 09:29:54" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1046" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
編程義敎 : 仁濟醫院兒童發展基金
今次教導了幾名青少年開始學習編程,教授了一些編程的基礎技術。我們生活在一個數字化的世界,編程已經成為我們日常生活中不可或缺的一部分。無論是手機應用程序,還是我們使用的各種網站,都是由編程語言創建的。學習編程可以開啟一扇通往創新和創造力的大門,讓我們有能力去創建和控制自己的數字世界。 義教編程是一種強大的力量,可以幫助青少年開始這個旅程。感謝仁濟醫院兒童發展基金提供了一個友好和支持的環境,讓你們可以在專業的指導下學習編程。這些義工老師都是經驗豐富的編程專家,他們熱衷於分享他們的知識和經驗,幫助你們建立堅實的編程基礎。 2024 Jul 20

今次教導了幾名青少年開始學習編程,教授了一些編程的基礎技術。我們生活在一個數字化的世界,編程已經成為我們日常生活中不可或缺的一部分。無論是手機應用程序,還是我們使用的各種網站,都是由編程語言創建的。學習編程可以開啟一扇通往創新和創造力的大門,讓我們有能力去創建和控制自己的數字世界。

義教編程是一種強大的力量,可以幫助青少年開始這個旅程。感謝仁濟醫院兒童發展基金提供了一個友好和支持的環境,讓你們可以在專業的指導下學習編程。這些義工老師都是經驗豐富的編程專家,他們熱衷於分享他們的知識和經驗,幫助你們建立堅實的編程基礎。 2024 Jul 20

			object(WP_Post)#3089 (24) {
  ["ID"]=>
  int(1040)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-07-20 03:05:38"
  ["post_date_gmt"]=>
  string(19) "2024-07-20 03:05:38"
  ["post_content"]=>
  string(904) "





"
  ["post_title"]=>
  string(37) "Java第11堂: Generics & Netbeans"
  ["post_excerpt"]=>
  string(0) ""
  ["post_status"]=>
  string(7) "publish"
  ["comment_status"]=>
  string(4) "open"
  ["ping_status"]=>
  string(4) "open"
  ["post_password"]=>
  string(0) ""
  ["post_name"]=>
  string(14) "java-lesson-11"
  ["to_ping"]=>
  string(0) ""
  ["pinged"]=>
  string(0) ""
  ["post_modified"]=>
  string(19) "2024-07-20 03:07:40"
  ["post_modified_gmt"]=>
  string(19) "2024-07-20 03:07:40"
  ["post_content_filtered"]=>
  string(0) ""
  ["post_parent"]=>
  int(0)
  ["guid"]=>
  string(30) "https://www.hkprog.org/?p=1040"
  ["menu_order"]=>
  int(0)
  ["post_type"]=>
  string(4) "post"
  ["post_mime_type"]=>
  string(0) ""
  ["comment_count"]=>
  string(1) "0"
  ["filter"]=>
  string(3) "raw"
}
		
Java第11堂: Generics & Netbeans
			object(WP_Post)#3090 (24) {
  ["ID"]=>
  int(1031)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-07-20 02:51:33"
  ["post_date_gmt"]=>
  string(19) "2024-07-20 02:51:33"
  ["post_content"]=>
  string(4583) "












範例代碼

a.asm:

bits 16
%define ONE    1

org 0x7c00
	mov ax, 0xb800
	mov es, ax
	mov byte [es:0], 'P'
	mov byte [es:1], 4
	mov byte [es:2], 'e'
	mov byte [es:3], 3

loop1:
	jmp loop1

	times   512-($-$$)-2    db      0
	signature       dw      0xaa55

bochsrcSDL.bxrc:

###############################################################
# bochsrc.txt file for DLX Linux disk image.
###############################################################

# how much memory the emulated machine will have
megs: 16

# hard disk
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="hd.img", mode=flat, cylinders=40, heads=16, spt=63

# choose the boot disk.
boot: c

#display_library: term
# other choices: win32 sdl wx carbon amigaos beos macintosh nogui rfb term svga
display_library: sdl2

# where do we send log messages?
log: bochsout.txt

# disable the mouse, since DLX is text only
mouse: enabled=0

magic_break: enabled=1

#debug: action=report
info: action=report
error: action=report
panic: action=report

insertData.sh:

#!/bin/bash

if [ $# != 4 ]; then
	echo "Usage : insertData.sh source dest <source skip position> <dest seek position>"
	exit;
fi

source_size=$(ls -l $1 | awk {'print $5'})
#dest_size=$(ls -l $2 | awk {'print $5'})
total_seek_size=$((source_size + $4))
#dd if=$2 of=insertData_temp skip=$total_seek_size ibs=1 obs=1MB > /dev/null
if [ $4 = 0 ]; then
	rm -fr first
	touch first
else
	echo "dd if=$2 of=first bs=$4 count=1";
	dd if=$2 of=first bs=$4 count=1
fi

#### back #####
echo "dd if=$2 of=back skip=1 bs=$total_seek_size";
dd if=$2 of=back skip=1 bs=$total_seek_size

cat first $1 back > $2

rm -fr first back

編譯指令

nasm a.asm -l a.lst
./insertData.sh a hd.img 0 0
bochs -f bochsrcSDL.bxrc
" ["post_title"]=> string(14) "x86 ASM第2堂" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(16) "x86-asm-lesson-2" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-07-20 03:06:30" ["post_modified_gmt"]=> string(19) "2024-07-20 03:06:30" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(30) "https://www.hkprog.org/?p=1031" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
x86 ASM第2堂
注意,在bochsrcSDL.bxrc不需要這兩句,否則就會做成video framebuffer 0xb8000不能使用 範例代碼 a.asm: bochsrcSDL.bxrc: insertData.sh: 編譯指令

範例代碼

a.asm:

bits 16
%define ONE    1

org 0x7c00
	mov ax, 0xb800
	mov es, ax
	mov byte [es:0], 'P'
	mov byte [es:1], 4
	mov byte [es:2], 'e'
	mov byte [es:3], 3

loop1:
	jmp loop1

	times   512-($-$$)-2    db      0
	signature       dw      0xaa55

bochsrcSDL.bxrc:

###############################################################
# bochsrc.txt file for DLX Linux disk image.
###############################################################

# how much memory the emulated machine will have
megs: 16

# hard disk
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="hd.img", mode=flat, cylinders=40, heads=16, spt=63

# choose the boot disk.
boot: c

#display_library: term
# other choices: win32 sdl wx carbon amigaos beos macintosh nogui rfb term svga
display_library: sdl2

# where do we send log messages?
log: bochsout.txt

# disable the mouse, since DLX is text only
mouse: enabled=0

magic_break: enabled=1

#debug: action=report
info: action=report
error: action=report
panic: action=report

insertData.sh:

#!/bin/bash

if [ $# != 4 ]; then
	echo "Usage : insertData.sh source dest <source skip position> <dest seek position>"
	exit;
fi

source_size=$(ls -l $1 | awk {'print $5'})
#dest_size=$(ls -l $2 | awk {'print $5'})
total_seek_size=$((source_size + $4))
#dd if=$2 of=insertData_temp skip=$total_seek_size ibs=1 obs=1MB > /dev/null
if [ $4 = 0 ]; then
	rm -fr first
	touch first
else
	echo "dd if=$2 of=first bs=$4 count=1";
	dd if=$2 of=first bs=$4 count=1
fi

#### back #####
echo "dd if=$2 of=back skip=1 bs=$total_seek_size";
dd if=$2 of=back skip=1 bs=$total_seek_size

cat first $1 back > $2

rm -fr first back

編譯指令

nasm a.asm -l a.lst
./insertData.sh a hd.img 0 0
bochs -f bochsrcSDL.bxrc
			object(WP_Post)#3091 (24) {
  ["ID"]=>
  int(997)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-07-12 09:44:45"
  ["post_date_gmt"]=>
  string(19) "2024-07-12 09:44:45"
  ["post_content"]=>
  string(904) "





"
  ["post_title"]=>
  string(31) "Java第10堂: Inheritance again"
  ["post_excerpt"]=>
  string(0) ""
  ["post_status"]=>
  string(7) "publish"
  ["comment_status"]=>
  string(4) "open"
  ["ping_status"]=>
  string(4) "open"
  ["post_password"]=>
  string(0) ""
  ["post_name"]=>
  string(14) "java-lesson-10"
  ["to_ping"]=>
  string(0) ""
  ["pinged"]=>
  string(0) ""
  ["post_modified"]=>
  string(19) "2024-07-13 01:27:54"
  ["post_modified_gmt"]=>
  string(19) "2024-07-13 01:27:54"
  ["post_content_filtered"]=>
  string(0) ""
  ["post_parent"]=>
  int(0)
  ["guid"]=>
  string(29) "https://www.hkprog.org/?p=997"
  ["menu_order"]=>
  int(0)
  ["post_type"]=>
  string(4) "post"
  ["post_mime_type"]=>
  string(0) ""
  ["comment_count"]=>
  string(1) "0"
  ["filter"]=>
  string(3) "raw"
}
		
Java第10堂: Inheritance again
			object(WP_Post)#3092 (24) {
  ["ID"]=>
  int(951)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-07-10 15:55:46"
  ["post_date_gmt"]=>
  string(19) "2024-07-10 15:55:46"
  ["post_content"]=>
  string(5680) "








下載nasm https://www.nasm.us/

下載bochs https://bochs.sourceforge.io/ , 如果在linux或mac,可以試下自己build

./configure --enable-debugger --enable-debugger-gui --with-sdl2 --with-nogui --with-term
make -j
make install

Asm例子

a.asm:

org 0x7c00
	mov	ax,1
	mov	bx,2
	add ax, bx   ; ax = ax + bx
	inc ax
	sub ax, bx	 ; ax = ax - bx

	mov ah, byte [ds:bx]

	xor ch,ch    ; set zero
	mov byte [ds:bx], ch
	
loop1:
	jmp loop1

	times   512-($-$$)-2    db      0
	signature       dw      0xaa55

bochsrcSDL.bxrc:

###############################################################
# bochsrc.txt file for DLX Linux disk image.
###############################################################

# how much memory the emulated machine will have
megs: 16

# filename of ROM images
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest

# what disk images will be used
#floppya: 1_44=../bootimage, status=inserted
#floppyb: 1_44=floppyb.img, status=inserted

# hard disk
#ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
#ata0-master: type=disk, path="hd10meg.img", cylinders=306, heads=4, spt=17
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
#ata0-master: type=disk, path="10mb.img", mode=flat, cylinders=20, heads=16, spt=63
ata0-master: type=disk, path="hd.img", mode=flat, cylinders=40, heads=16, spt=63
#ata0-master: type=disk, path="../hd.img", mode=flat, cylinders=203, heads=16, spt=63	# 100MB
#ata0-master: type=disk, path="../harddisk", mode=flat, cylinders=2080, heads=16, spt=63   # 1GB

# choose the boot disk.
boot: c

#display_library: term
# other choices: win32 sdl wx carbon amigaos beos macintosh nogui rfb term svga
display_library: sdl2

# where do we send log messages?
log: bochsout.txt

# disable the mouse, since DLX is text only
mouse: enabled=0

# enable key mapping, using US layout as default.
#
# NOTE: In Bochs 1.4, keyboard mapping is only 100% implemented on X windows.
# However, the key mapping tables are used in the paste function, so
# in the DLX Linux example I'm enabling keyboard_mapping so that paste
# will work.  Cut&Paste is currently implemented on win32 and X windows only.

#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-us.map
#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-fr.map
#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-de.map
#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-es.map

magic_break: enabled=1

#debug: action=report
info: action=report
error: action=report
panic: action=report

insertData.sh:

#!/bin/bash

if [ $# != 4 ]; then
	echo "Usage : insertData.sh source dest <source skip position> <dest seek position>"
	exit;
fi

source_size=$(ls -l $1 | awk {'print $5'})
#dest_size=$(ls -l $2 | awk {'print $5'})
total_seek_size=$((source_size + $4))
#dd if=$2 of=insertData_temp skip=$total_seek_size ibs=1 obs=1MB > /dev/null
if [ $4 = 0 ]; then
	rm -fr first
	touch first
else
	echo "dd if=$2 of=first bs=$4 count=1";
	dd if=$2 of=first bs=$4 count=1
fi

#### back #####
echo "dd if=$2 of=back skip=1 bs=$total_seek_size";
dd if=$2 of=back skip=1 bs=$total_seek_size

cat first $1 back > $2

rm -fr first back

Compile指令:

nasm a.asm -l a.lst
dd if=/dev/zero of=hd.img count=3072 bs=10240
./insertData.sh a hd.img 0 0
bochs -q -f bochsrcSDL.bxrc
" ["post_title"]=> string(14) "x86 ASM第1堂" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(16) "x86-asm-lesson-1" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-07-10 16:48:01" ["post_modified_gmt"]=> string(19) "2024-07-10 16:48:01" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(29) "https://www.hkprog.org/?p=951" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
x86 ASM第1堂
下載nasm https://www.nasm.us/ 下載bochs https://bochs.sourceforge.io/ , 如果在linux或mac,可以試下自己build Asm例子 a.asm: bochsrcSDL.bxrc: insertData.sh: Compile指令:

下載nasm https://www.nasm.us/

下載bochs https://bochs.sourceforge.io/ , 如果在linux或mac,可以試下自己build

./configure --enable-debugger --enable-debugger-gui --with-sdl2 --with-nogui --with-term
make -j
make install

Asm例子

a.asm:

org 0x7c00
	mov	ax,1
	mov	bx,2
	add ax, bx   ; ax = ax + bx
	inc ax
	sub ax, bx	 ; ax = ax - bx

	mov ah, byte [ds:bx]

	xor ch,ch    ; set zero
	mov byte [ds:bx], ch
	
loop1:
	jmp loop1

	times   512-($-$$)-2    db      0
	signature       dw      0xaa55

bochsrcSDL.bxrc:

###############################################################
# bochsrc.txt file for DLX Linux disk image.
###############################################################

# how much memory the emulated machine will have
megs: 16

# filename of ROM images
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest

# what disk images will be used
#floppya: 1_44=../bootimage, status=inserted
#floppyb: 1_44=floppyb.img, status=inserted

# hard disk
#ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
#ata0-master: type=disk, path="hd10meg.img", cylinders=306, heads=4, spt=17
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
#ata0-master: type=disk, path="10mb.img", mode=flat, cylinders=20, heads=16, spt=63
ata0-master: type=disk, path="hd.img", mode=flat, cylinders=40, heads=16, spt=63
#ata0-master: type=disk, path="../hd.img", mode=flat, cylinders=203, heads=16, spt=63	# 100MB
#ata0-master: type=disk, path="../harddisk", mode=flat, cylinders=2080, heads=16, spt=63   # 1GB

# choose the boot disk.
boot: c

#display_library: term
# other choices: win32 sdl wx carbon amigaos beos macintosh nogui rfb term svga
display_library: sdl2

# where do we send log messages?
log: bochsout.txt

# disable the mouse, since DLX is text only
mouse: enabled=0

# enable key mapping, using US layout as default.
#
# NOTE: In Bochs 1.4, keyboard mapping is only 100% implemented on X windows.
# However, the key mapping tables are used in the paste function, so
# in the DLX Linux example I'm enabling keyboard_mapping so that paste
# will work.  Cut&Paste is currently implemented on win32 and X windows only.

#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-us.map
#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-fr.map
#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-de.map
#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-es.map

magic_break: enabled=1

#debug: action=report
info: action=report
error: action=report
panic: action=report

insertData.sh:

#!/bin/bash

if [ $# != 4 ]; then
	echo "Usage : insertData.sh source dest <source skip position> <dest seek position>"
	exit;
fi

source_size=$(ls -l $1 | awk {'print $5'})
#dest_size=$(ls -l $2 | awk {'print $5'})
total_seek_size=$((source_size + $4))
#dd if=$2 of=insertData_temp skip=$total_seek_size ibs=1 obs=1MB > /dev/null
if [ $4 = 0 ]; then
	rm -fr first
	touch first
else
	echo "dd if=$2 of=first bs=$4 count=1";
	dd if=$2 of=first bs=$4 count=1
fi

#### back #####
echo "dd if=$2 of=back skip=1 bs=$total_seek_size";
dd if=$2 of=back skip=1 bs=$total_seek_size

cat first $1 back > $2

rm -fr first back

Compile指令:

nasm a.asm -l a.lst
dd if=/dev/zero of=hd.img count=3072 bs=10240
./insertData.sh a hd.img 0 0
bochs -q -f bochsrcSDL.bxrc
			object(WP_Post)#3093 (24) {
  ["ID"]=>
  int(895)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-07-07 04:37:14"
  ["post_date_gmt"]=>
  string(19) "2024-07-07 04:37:14"
  ["post_content"]=>
  string(2786) "

Thank you HKOSCON, their Chairman Mr Sammy, and all members for the chance to present there

" ["post_title"]=> string(12) "HKOSCON 2024" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(12) "hkoscon-2024" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-07-07 04:38:35" ["post_modified_gmt"]=> string(19) "2024-07-07 04:38:35" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(29) "https://www.hkprog.org/?p=895" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
HKOSCON 2024
Thank you HKOSCON, their Chairman Mr Sammy, and all members for the chance to present there

Thank you HKOSCON, their Chairman Mr Sammy, and all members for the chance to present there

			object(WP_Post)#3094 (24) {
  ["ID"]=>
  int(855)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-07-05 14:05:30"
  ["post_date_gmt"]=>
  string(19) "2024-07-05 14:05:30"
  ["post_content"]=>
  string(902) "





"
  ["post_title"]=>
  string(38) "Java第9堂: Constructor & Multithread"
  ["post_excerpt"]=>
  string(0) ""
  ["post_status"]=>
  string(7) "publish"
  ["comment_status"]=>
  string(4) "open"
  ["ping_status"]=>
  string(4) "open"
  ["post_password"]=>
  string(0) ""
  ["post_name"]=>
  string(13) "java-lesson-9"
  ["to_ping"]=>
  string(0) ""
  ["pinged"]=>
  string(0) ""
  ["post_modified"]=>
  string(19) "2024-07-05 15:31:42"
  ["post_modified_gmt"]=>
  string(19) "2024-07-05 15:31:42"
  ["post_content_filtered"]=>
  string(0) ""
  ["post_parent"]=>
  int(0)
  ["guid"]=>
  string(29) "https://www.hkprog.org/?p=855"
  ["menu_order"]=>
  int(0)
  ["post_type"]=>
  string(4) "post"
  ["post_mime_type"]=>
  string(0) ""
  ["comment_count"]=>
  string(1) "0"
  ["filter"]=>
  string(3) "raw"
}
		
Java第9堂: Constructor & Multithread
			object(WP_Post)#3095 (24) {
  ["ID"]=>
  int(844)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-07-03 13:39:41"
  ["post_date_gmt"]=>
  string(19) "2024-07-03 13:39:41"
  ["post_content"]=>
  string(2029) "

終於找到一位有心人Charles Ng先生帶領大家成立Embedded System Special Interest Group,本會和吳先生承諾呢個SIG會last for最少一年,吳先生會搞兩次workshop,會長亦都會一對一搞另多兩次workshop以作支持。吳先生是業界從事嵌入式開發超過幾十年之專業人士,佢自己實作左塊PCB可以mount raspberry pi cm上去,佢會舉辦workshop教一教大家點做,請大家支持。

吳先生作品

" ["post_title"]=> string(50) "Embedded System Special Interest Group宣布成立" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(38) "embedded-system-special-interest-group" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-07-03 15:23:05" ["post_modified_gmt"]=> string(19) "2024-07-03 15:23:05" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(29) "https://www.hkprog.org/?p=844" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Embedded System Special Interest Group宣布成立
終於找到一位有心人Charles Ng先生帶領大家成立Embedded System Special Interest Group,本會和吳先生承諾呢個SIG會last for最少一年,吳先生會搞兩次workshop,會長亦都會一對一搞另多兩次workshop以作支持。吳先生是業界從事嵌入式開發超過幾十年之專業人士,佢自己實作左塊PCB可以mount raspberry pi cm上去,佢會舉辦workshop教一教大家點做,請大家支持。 吳先生作品

終於找到一位有心人Charles Ng先生帶領大家成立Embedded System Special Interest Group,本會和吳先生承諾呢個SIG會last for最少一年,吳先生會搞兩次workshop,會長亦都會一對一搞另多兩次workshop以作支持。吳先生是業界從事嵌入式開發超過幾十年之專業人士,佢自己實作左塊PCB可以mount raspberry pi cm上去,佢會舉辦workshop教一教大家點做,請大家支持。

吳先生作品

			object(WP_Post)#3096 (24) {
  ["ID"]=>
  int(773)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-06-30 06:38:05"
  ["post_date_gmt"]=>
  string(19) "2024-06-30 06:38:05"
  ["post_content"]=>
  string(25143) "





















"
  ["post_title"]=>
  string(33) "Azure User Group聚會 2024/06/29"
  ["post_excerpt"]=>
  string(0) ""
  ["post_status"]=>
  string(7) "publish"
  ["comment_status"]=>
  string(4) "open"
  ["ping_status"]=>
  string(4) "open"
  ["post_password"]=>
  string(0) ""
  ["post_name"]=>
  string(33) "azure-user-group-meetup2024-06-29"
  ["to_ping"]=>
  string(0) ""
  ["pinged"]=>
  string(0) ""
  ["post_modified"]=>
  string(19) "2024-06-30 06:41:15"
  ["post_modified_gmt"]=>
  string(19) "2024-06-30 06:41:15"
  ["post_content_filtered"]=>
  string(0) ""
  ["post_parent"]=>
  int(0)
  ["guid"]=>
  string(29) "https://www.hkprog.org/?p=773"
  ["menu_order"]=>
  int(0)
  ["post_type"]=>
  string(4) "post"
  ["post_mime_type"]=>
  string(0) ""
  ["comment_count"]=>
  string(1) "0"
  ["filter"]=>
  string(3) "raw"
}
		
Azure User Group聚會 2024/06/29
			object(WP_Post)#3097 (24) {
  ["ID"]=>
  int(766)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-06-28 08:06:53"
  ["post_date_gmt"]=>
  string(19) "2024-06-28 08:06:53"
  ["post_content"]=>
  string(899) "





"
  ["post_title"]=>
  string(41) "Java第8堂: Overriding & Static func"
  ["post_excerpt"]=>
  string(0) ""
  ["post_status"]=>
  string(7) "publish"
  ["comment_status"]=>
  string(4) "open"
  ["ping_status"]=>
  string(4) "open"
  ["post_password"]=>
  string(0) ""
  ["post_name"]=>
  string(13) "java-lesson-8"
  ["to_ping"]=>
  string(0) ""
  ["pinged"]=>
  string(0) ""
  ["post_modified"]=>
  string(19) "2024-06-28 14:14:04"
  ["post_modified_gmt"]=>
  string(19) "2024-06-28 14:14:04"
  ["post_content_filtered"]=>
  string(0) ""
  ["post_parent"]=>
  int(0)
  ["guid"]=>
  string(29) "https://www.hkprog.org/?p=766"
  ["menu_order"]=>
  int(0)
  ["post_type"]=>
  string(4) "post"
  ["post_mime_type"]=>
  string(0) ""
  ["comment_count"]=>
  string(1) "0"
  ["filter"]=>
  string(3) "raw"
}
		
Java第8堂: Overriding & Static func
			object(WP_Post)#3098 (24) {
  ["ID"]=>
  int(755)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-06-21 15:14:46"
  ["post_date_gmt"]=>
  string(19) "2024-06-21 15:14:46"
  ["post_content"]=>
  string(1801) "








功課一

功課二

" ["post_title"]=> string(92) "Java第7堂: Interface接口 & Polymorphism多態 & Exception例外 & Java Swing" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(13) "java-lesson-7" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-06-21 15:15:27" ["post_modified_gmt"]=> string(19) "2024-06-21 15:15:27" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(29) "https://www.hkprog.org/?p=755" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Java第7堂: Interface接口 & Polymorphism多態 & Exception例外 & Java Swing
功課一 功課二

功課一

功課二

			object(WP_Post)#3099 (24) {
  ["ID"]=>
  int(736)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-06-14 11:18:45"
  ["post_date_gmt"]=>
  string(19) "2024-06-14 11:18:45"
  ["post_content"]=>
  string(2733) "








Stack例子:

import java.util.Stack;

public class Example6 {
	public static void main(String args[]) {
		Stack<String> s = new Stack();
		s.add("A");
		s.add("B");
		s.add("C");

		s.remove(1);
		System.out.println(s.size());

		System.out.println(s.pop());
		if (!s.empty()) {
			System.out.println(s.pop());
		}
		System.out.println(s.pop());
		if (!s.empty()) {
			System.out.println(s.pop());
		}
	}
}

LinkedList例子:

import java.util.LinkedList;

public class Example6 {
	public static void main(String args[]) {
		LinkedList<String> list = new LinkedList();
		list.add("Peter 1");
		list.add("Peter 2");
		list.add("Peter 3");

		for (int x = 0; x < list.size(); x++) {
			System.out.println(list.get(x));
		}
	}
}
" ["post_title"]=> string(43) "Java第6堂: Data Structure & OOP again" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(13) "java-lesson-6" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-06-15 17:15:17" ["post_modified_gmt"]=> string(19) "2024-06-15 17:15:17" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(29) "https://www.hkprog.org/?p=736" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Java第6堂: Data Structure & OOP again
Stack例子: LinkedList例子: 注意 : 如果用VSCode打Code,淺灰式e:只是提示不是真正代碼,不用打去你段Code到

Stack例子:

import java.util.Stack;

public class Example6 {
	public static void main(String args[]) {
		Stack<String> s = new Stack();
		s.add("A");
		s.add("B");
		s.add("C");

		s.remove(1);
		System.out.println(s.size());

		System.out.println(s.pop());
		if (!s.empty()) {
			System.out.println(s.pop());
		}
		System.out.println(s.pop());
		if (!s.empty()) {
			System.out.println(s.pop());
		}
	}
}

LinkedList例子:

import java.util.LinkedList;

public class Example6 {
	public static void main(String args[]) {
		LinkedList<String> list = new LinkedList();
		list.add("Peter 1");
		list.add("Peter 2");
		list.add("Peter 3");

		for (int x = 0; x < list.size(); x++) {
			System.out.println(list.get(x));
		}
	}
}
			object(WP_Post)#3100 (24) {
  ["ID"]=>
  int(721)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-06-07 16:20:13"
  ["post_date_gmt"]=>
  string(19) "2024-06-07 16:20:13"
  ["post_content"]=>
  string(1946) "








功課一 : 改下段Bubble Sort Code令到佢唔好Loop咁多次

功課二:將下面張圖轉成Code

" ["post_title"]=> string(45) "Java第5堂: Sorting & OOP(Class, Object)" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(13) "java-lesson-5" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-06-07 16:25:25" ["post_modified_gmt"]=> string(19) "2024-06-07 16:25:25" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(29) "https://www.hkprog.org/?p=721" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Java第5堂: Sorting & OOP(Class, Object)
功課一 : 改下段Bubble Sort Code令到佢唔好Loop咁多次 功課二:將下面張圖轉成Code

功課一 : 改下段Bubble Sort Code令到佢唔好Loop咁多次

功課二:將下面張圖轉成Code

			object(WP_Post)#3101 (24) {
  ["ID"]=>
  int(702)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-05-31 14:59:02"
  ["post_date_gmt"]=>
  string(19) "2024-05-31 14:59:02"
  ["post_content"]=>
  string(899) "





"
  ["post_title"]=>
  string(29) "Java第4堂: Array & Loop"
  ["post_excerpt"]=>
  string(0) ""
  ["post_status"]=>
  string(7) "publish"
  ["comment_status"]=>
  string(4) "open"
  ["ping_status"]=>
  string(4) "open"
  ["post_password"]=>
  string(0) ""
  ["post_name"]=>
  string(34) "java%e7%ac%ac4%e5%a0%82-array-loop"
  ["to_ping"]=>
  string(0) ""
  ["pinged"]=>
  string(0) ""
  ["post_modified"]=>
  string(19) "2024-05-31 15:02:22"
  ["post_modified_gmt"]=>
  string(19) "2024-05-31 15:02:22"
  ["post_content_filtered"]=>
  string(0) ""
  ["post_parent"]=>
  int(0)
  ["guid"]=>
  string(29) "https://www.hkprog.org/?p=702"
  ["menu_order"]=>
  int(0)
  ["post_type"]=>
  string(4) "post"
  ["post_mime_type"]=>
  string(0) ""
  ["comment_count"]=>
  string(1) "0"
  ["filter"]=>
  string(3) "raw"
}
		
Java第4堂: Array & Loop
			object(WP_Post)#3102 (24) {
  ["ID"]=>
  int(688)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-05-24 15:04:17"
  ["post_date_gmt"]=>
  string(19) "2024-05-24 15:04:17"
  ["post_content"]=>
  string(1733) "








功課一

功課二

" ["post_title"]=> string(21) "Java第3堂: For Loop" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(32) "java%e7%ac%ac3%e5%a0%82-for-loop" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-05-24 15:09:02" ["post_modified_gmt"]=> string(19) "2024-05-24 15:09:02" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(29) "https://www.hkprog.org/?p=688" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Java第3堂: For Loop
功課一 功課二

功課一

功課二

			object(WP_Post)#3103 (24) {
  ["ID"]=>
  int(679)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-05-17 17:15:08"
  ["post_date_gmt"]=>
  string(19) "2024-05-17 17:15:08"
  ["post_content"]=>
  string(1446) "








練習

public class Example1{
	public static void main(String args[]){
		int score=55;

		if (score >= 80){
			System.out.println("A");
		}else if (score >= 60){
			System.out.println("B");
		}else if (score >= 40){
			System.out.println("C");
		}else{
			System.out.println("F");
		}

		System.out.println("End");
	}
}
" ["post_title"]=> string(33) "Java第2堂 : Variable & Loop" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(6) "java-2" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-05-18 03:51:14" ["post_modified_gmt"]=> string(19) "2024-05-18 03:51:14" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(29) "https://www.hkprog.org/?p=679" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Java第2堂 : Variable & Loop
練習

練習

public class Example1{
	public static void main(String args[]){
		int score=55;

		if (score >= 80){
			System.out.println("A");
		}else if (score >= 60){
			System.out.println("B");
		}else if (score >= 40){
			System.out.println("C");
		}else{
			System.out.println("F");
		}

		System.out.println("End");
	}
}
			object(WP_Post)#3104 (24) {
  ["ID"]=>
  int(641)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-05-10 16:51:25"
  ["post_date_gmt"]=>
  string(19) "2024-05-10 16:51:25"
  ["post_content"]=>
  string(5935) "




PowerPoint

Notes

  1. 下載Java https://java.sun.com
  1. 以下是HelloWorld代碼
class Example1{
    public static void main(String args[]){
          System.out.println("Hello World");
    }
}

Compile指令

javac Example1.java
java Example1

常見錯誤

錯誤一 : 打錯字

首先打錯字唔洗驚, 睇下個Error Message, 佢會有個箭咀指住大約錯邊個位, 同埋有個行數, 跟住就可以揾到錯邊

錯誤二: Save錯文件名

錯誤張文件名Save做.java.txt, 所有Java文件必需要用.java做尾. 你地係notebook到要簡下面嘅撰項

" ["post_title"]=> string(12) "Java 第1堂" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(6) "java-1" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-05-13 09:00:19" ["post_modified_gmt"]=> string(19) "2024-05-13 09:00:19" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(29) "https://www.hkprog.org/?p=641" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Java 第1堂
PowerPoint Notes Compile指令 javac Example1.javajava Example1 常見錯誤 錯誤一 : 打錯字 首先打錯字唔洗驚, 睇下個Error Message, 佢會有個箭咀指住大約錯邊個位, 同埋有個行數, 跟住就可以揾到錯邊 錯誤二: Save錯文件名 錯誤張文件名Save做.java.txt, 所有Java文件必需要用.java做尾. 你地係notebook到要簡下面嘅撰項

PowerPoint

Notes

  1. 下載Java https://java.sun.com
  1. 以下是HelloWorld代碼
class Example1{
    public static void main(String args[]){
          System.out.println("Hello World");
    }
}

Compile指令

javac Example1.java
java Example1

常見錯誤

錯誤一 : 打錯字

首先打錯字唔洗驚, 睇下個Error Message, 佢會有個箭咀指住大約錯邊個位, 同埋有個行數, 跟住就可以揾到錯邊

錯誤二: Save錯文件名

錯誤張文件名Save做.java.txt, 所有Java文件必需要用.java做尾. 你地係notebook到要簡下面嘅撰項

			object(WP_Post)#3105 (24) {
  ["ID"]=>
  int(629)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-04-09 09:11:48"
  ["post_date_gmt"]=>
  string(19) "2024-04-09 09:11:48"
  ["post_content"]=>
  string(1727) "

Get in HKPS website, you see "Hour Of Code" menu on top

If you are not registered yet, you jump in above page. Two options: register for teen or adult

This is the main screen, since we don't have many courses yet, so no search bar. "On going" means the course still has lessons, you may ask teacher questions. "Done" means the course is ended, no question to teacher.

View course info and video play back

" ["post_title"]=> string(21) "HOC system proposal 1" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(21) "hoc-system-proposal-1" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-04-09 09:17:27" ["post_modified_gmt"]=> string(19) "2024-04-09 09:17:27" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(29) "https://www.hkprog.org/?p=629" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
HOC system proposal 1
Get in HKPS website, you see “Hour Of Code” menu on top If you are not registered yet, you jump in above page. Two options: register for teen or adult This is the main screen, since we don’t have many courses yet, so no search bar. “On going” means the course still has lessons, you […]

Get in HKPS website, you see "Hour Of Code" menu on top

If you are not registered yet, you jump in above page. Two options: register for teen or adult

This is the main screen, since we don't have many courses yet, so no search bar. "On going" means the course still has lessons, you may ask teacher questions. "Done" means the course is ended, no question to teacher.

View course info and video play back

			object(WP_Post)#3106 (24) {
  ["ID"]=>
  int(532)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2024-02-23 16:49:19"
  ["post_date_gmt"]=>
  string(19) "2024-02-23 16:49:19"
  ["post_content"]=>
  string(454) "

Lunch with Thei and Microsoft to discuss the project about the AI platform

" ["post_title"]=> string(29) "Lunch with Thei and Microsoft" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(29) "lunch-with-thei-and-microsoft" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2024-02-23 16:52:18" ["post_modified_gmt"]=> string(19) "2024-02-23 16:52:18" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(29) "https://www.hkprog.org/?p=532" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
Lunch with Thei and Microsoft
Lunch with Thei and Microsoft to discuss the project about the AI platform

Lunch with Thei and Microsoft to discuss the project about the AI platform

			object(WP_Post)#3107 (24) {
  ["ID"]=>
  int(334)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2023-12-13 05:59:38"
  ["post_date_gmt"]=>
  string(19) "2023-12-13 05:59:38"
  ["post_content"]=>
  string(2149) "

McCode is a weekly event for coding enthusiasts who want to share their passion, learn new skills, and enjoy some delicious food. Every week, we meet at a local McDonald’s restaurant and work on different coding projects, challenges, and tutorials. Whether you are a beginner or an expert, you are welcome to join us and have fun with coding. McCode is a great opportunity to network with other coders, get feedback on your work, and discover new tools and resources. Plus, you get to enjoy some tasty burgers, fries, and drinks while you code. What’s not to love? If you are interested in joining McCode, please visit our website and sign up for our newsletter. We hope to see you soon at McCode, the coding event that satisfies your hunger for learning and eating.

" ["post_title"]=> string(6) "McCode" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(6) "mccode" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2023-12-15 07:34:05" ["post_modified_gmt"]=> string(19) "2023-12-15 07:34:05" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(29) "https://www.hkprog.org/?p=334" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
McCode
McCode is a weekly event for coding enthusiasts who want to share their passion, learn new skills, and enjoy some delicious food. Every week, we meet at a local McDonald’s restaurant and work on different coding projects, challenges, and tutorials. Whether you are a beginner or an expert, you are welcome to join us and […]

McCode is a weekly event for coding enthusiasts who want to share their passion, learn new skills, and enjoy some delicious food. Every week, we meet at a local McDonald’s restaurant and work on different coding projects, challenges, and tutorials. Whether you are a beginner or an expert, you are welcome to join us and have fun with coding. McCode is a great opportunity to network with other coders, get feedback on your work, and discover new tools and resources. Plus, you get to enjoy some tasty burgers, fries, and drinks while you code. What’s not to love? If you are interested in joining McCode, please visit our website and sign up for our newsletter. We hope to see you soon at McCode, the coding event that satisfies your hunger for learning and eating.

			object(WP_Post)#2934 (24) {
  ["ID"]=>
  int(311)
  ["post_author"]=>
  string(1) "1"
  ["post_date"]=>
  string(19) "2023-12-01 16:16:42"
  ["post_date_gmt"]=>
  string(19) "2023-12-01 16:16:42"
  ["post_content"]=>
  string(2865) "

Thank you someone for providing us with the venue (we can't disclose his name). The workshop is very hands-on and everyone gets their first feeling to code the FPGA.

" ["post_title"]=> string(24) "FGPA Workshop 2023/12/01" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(24) "fgpa-workshop-2023-12-01" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2023-12-13 05:54:59" ["post_modified_gmt"]=> string(19) "2023-12-13 05:54:59" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(29) "https://www.hkprog.org/?p=311" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
FGPA Workshop 2023/12/01
Thank you someone for providing us with the venue (we can’t disclose his name). The workshop is very hands-on and everyone gets their first feeling to code the FPGA.

Thank you someone for providing us with the venue (we can't disclose his name). The workshop is very hands-on and everyone gets their first feeling to code the FPGA.