Code makes the world a better place

我與女友相遇的故事

現代人不聯誼了,以前抽鑰匙如今改抽卡,我與現任女友是在交友軟體上認識的,說說去年夏天以來的故事。

命運非常奇妙,當你越認為這個人和你的人生沒關係,你們彼此的牽絆就越強烈。一開始,我從來沒想過這女生會變成我女友。

Continue reading

簡明 CGI 原理與實作

CGI 介紹

Common Gateway Interface, CGI 讓伺服器(Server)將路由(Route)轉給轉外部程式(CGI 程式),使外部程式可以直接和客戶端(通常為瀏覽器) 互動。在 WEB 剛興起的時候,主要還是處於靜態伺服階段,單純傳送檔案或文字資訊而已。如果想要有表單之類的互動,也就是動態網站的話,就要靠呼叫外部程式來幫忙。隨著網路科技的發達,CGI 至今仁廣泛使用,像是 PHP 搭配 Apache。不過同時也有其他架構興起,例如以 Python、NodeJS、PHP、Java 等語言為基礎的網頁框架,像是 Flask 或 Express,抑或著實現前後端分離的 RESTful API 架構。

Continue reading

簡明 Shell 原理與實作

Shell 介紹

不管使用本地端 Unix、Windows 或是連線到伺服器,我們都會打開終端機(Terminal),而連線等入進去的起使畫面會是 Shell,然後開發者可以輸入指令來跑程式。某方面來說,當我們在講「使用終端機」就等同「使用 Shell」,即便他們原本代表意思其實不一樣。關於 Shell 的詳細介紹可以參考「C Sehll」英文維基。

Continue reading

[論文] 好像沒有那麼快:WebAssembly vs. Native Code 程式碼效能分析

Paper: Not So Fast: Analyzing the Performance of WebAssembly vs. Native Code
Author: Abhinav Jangda, Bobby Powers, Emery D. Berger, and Arjun Guha, University of Massachusetts Amherst
Source: USENIX ATC 2019


簡介

作者們先前開發了 BROWSIX,可以讓 Unix 程式直接轉成 JavaScript 並跑在瀏覽器。BROWSIX 基本上就是把程式碼轉成 JavaScript 並且用 Browser API 來模擬 Unix System Call。此篇作者更進一步,開發 BROWSIX-WASM(fork 自 Emscripten)將程式碼轉成 WebAssembly,一來解決原本 JavaScript 效能不佳問題,同時也能可以拿來和 Native Code 在 SPEC CPU suite of Benchmark 上做效能比較。實驗結果 WebAssembly 在現代瀏覽器(Chrome & Firefox)上慢 Native Code 大約 50%,並深入探討為什麼會這樣。

整體來說我覺得是很有趣的一篇論文,整理了重點並加入一些我個人的見解。

Continue reading

我對資工的興趣產生

我正在念交大資工所,我決定要走資工是一個漫長的過程,這篇故事想從最早開始講起,描述過往我對資工的興趣如何慢慢建立。每個人的故事都是獨一無二,但我的故事希望可以給別人一些靈感和借鏡。

Continue reading

紅黑樹(Red Black Tree)介紹

紅黑樹是一種特別的資料結構,他具有跟 AVL Tree 一樣可以自動平衡的功能。

一個紅黑樹具有一下特性:

  • 每個 node 只有黑與紅
  • Root 必須是黑
  • 每個葉子(leaf)是 NIL 且為黑
  • 如果一個 node 是紅,那他的 child 都會是黑
  • 每一條從 root 到 leaf 的路徑所包含的黑色 node 數量都一樣

遵循這樣的規則,可以確保在增加和刪除節點時,保持著樹的平衡狀態。紅黑數保證當 node 數量是 n 時,他的高度最多不會超過 2log(n+1)

在現實生活中,常常用來實作 set 和 dictionary,C++ 中的 std::setstd::map 背後正是紅黑樹。

Continue reading

Example of Signals by `sigaction` in Unix

Unix 中 processes 之間溝通有很多種,本篇介紹 signal 的簡易使用。可以先閱讀 Beej 的介紹。顧名思義,signal 就是程序發送和接受訊號,例如我們在使用 Shell 的時候,之所以 Ctrl-C 可以中斷程式執行,就是因為 Shell 捕捉到 Ctrl-C 發送的 SIGINT 訊號,知道有一個 interrupt signal,所以將程式中斷。

發送 signal 可以用 sigaction()signal(),不過建議使用 sigaction 因為比較新,詳細差別可以看 Stack Overflow 這篇 「What is the difference between sigaction and signal?」。

如果想觸發 signal,可以用 kill()sigqueue(),差別在於後者僅限 Linux,但後者可以藉由傳送 siginfo 加一些資訊在 signal 中。此外一些 system call 本身也會觸發 signal,例如如果嘗試 send() 到不存在的 socket,就會觸發 SIGPIPE

Continue reading

Use `mmap` to create shared objects

當我們有很多 processes 時,並想用實現 shared memory 處理共用資料時,就可以使用 shared memory,來實作。建立 shared memory 可以使用 mmap 或是 System V shmget,但根據 Stack Overflow 「How to use shared memory with Linux in C」回答,shmget 已經有點過時,mmap 則比較新和彈性。

Shared memory 讓我們可以建立一塊共用的記憶體空間,mmap 會回傳一塊記憶體空間的指標,型別是 void *,如果我們想要放資料進去,可以用 memcpy 將物件、字串或任何東西拷貝進去。我們也可以直接將 void * 轉型成物件指標,這樣就建立 shared object,不同 process 可以直接對 process 存取物件。

Continue reading

Review of “Everything in Rust” of COSCUP 2019

Review of “Everything in Rust” of COSCUP 2019

My experience with Rust Taiwan community in COSCUP 2019

Sunshine, blue sky, and sprinkles of rain — such diverse weather on August 16th-17th echoed the lively atmosphere at NTUST in Taipei, where the COSCUP was held. Participating in the conference, Rust Taiwan community hosted the “Everything in Rust” track with 11 talks, which were relevant to Rust. Speakers came from all over the world, including India, Netherlands, China, Hong Kong, and Taiwan, representing for some of the top influencers in the global Rust community. With more than one thousand attendees in COSCUP, it was the first time for these hundreds of people encountered the efflorescence of the Rust programming language.

Continue reading

台大觀察與心得(九):大四下&登出


這是我在台大的第八個學期,也是最後一個學期了。大四下對多數人而言是輕鬆寫意,學分已經修完沒有畢業壓力,但因為我轉系且一直跑去外系修課,導致自己學分到大四下還沒修滿,為此大四下還有 12 學分要修,幾乎每天都還是要去學校。

整體而言大四下對我來說滿荒誕的,好像什麼事情都沒做好,沒什麼值得驕傲的事情,有幾件值得開心的事,還有幾件比較有印象的挫折。
Continue reading

Localize the Rust Website to Traditional Chinese

Localize the Rust Website to Traditional Chinese

Record Rust Taiwan community’s work of translating the Rust website


TL;DR
I am glad to announce that the Traditional Chinese (正體中文) version of the Rust official website has been launched. Thanks to all contributors in the community. This article records our experience to achieve the work.

Continue reading

巨匠的剪影——張大千特展之心得

2019 年,適逢我國上個世紀偉大國畫家張大千先生 (1899-1983) 一百二十歲誕辰,台北故宮博物院特別開設「巨匠的剪影——張大千特展」。張大千一生充滿傳奇,生平走訪世界各地,各種書畫種類無一不臻妙境。

<墨荷四聯屏>
Continue reading

動畫<風起>心得隨筆

<風起>是日本知名動畫導演宮崎駿生平最後一部作品,內容以零式艦上戰鬥機設計者堀越二郎的生平作為主軸,穿插小說家堀辰雄的兩篇小說作品《風吹了》和《菜穗子》的劇情。 Continue reading

菜鳥程式設計師的精進之路

菜鳥程式設計師的精進之路

The Clean Coder 心得、摘要與補充


前陣子把 《The Clean Coder》(中譯: 無瑕的程式碼 番外篇-專業程式設計師的生存之道) 看完,剛好可以回答一個網路上最常看到的問題之一:

菜鳥工程師與資深工程師的差別是甚麼?

菜鳥工程師與資深工程師的差別是甚麼?

Continue reading

我在大學期間犯下最畢生難忘的錯

我在大學期間犯下最畢生難忘的錯

錯誤不可恥,可恥的是再犯同樣的錯


其實我認為我大學期間,除了課業失敗的一蹋糊塗之外,其他方面還算優秀。不得不稱讚台大是一個很棒的舞台,讓我的立足點更高,使我有機會跟各式各樣的人接觸,參加各種有趣的活動,到不同的地方工作。在這環境下,我覺得過得還算是順遂。即便如此,仍有些事件是難以忘懷的失敗,給我很大的教訓和反省,但其中一個最難忘的故事莫過於我接下來要說的。

Continue reading

Chaos

Chaos implies a disorder or complex non-linear system. It manifests any little changes could probably result in a massive transformation of the system, such as a butterfly flapping in Brazil could cause a hurricane in Texas, which is well known as the butterfly effect. The traits of chaos are in many fields, including math, physics, atmospheric science, fluid dynamics, ect., which leads Chaos to a vital research topic.

Continue reading

Browsing Websites

Browsing Websites

The technology around us affects us profoundly - emotionally, behaviorally, and cognitively. We could easily spend an enormous span not only to watch videos online but also browse websites on the internet every day. However, have you ever thought about how the sites work and what the mechanism is inside the box?

Continue reading

Revision Control

It’s a late night, and the man is still at the office, being in deep water over the crashed program. Everything goes wrong. He doesn’t even know why the code cannot run as usual. Unfortunately, he has forgotten what he had changed, regardless of the changes, which must be of paramount importance to the incident.

Continue reading

台大觀察與心得(八):大四上

在台大的日子已經進入第四年,不知不覺留在校園的日子只剩一年,讓人十分的不捨。從高中進入台大,到快要從台大畢業,這段日子我的變化很大,像是從一個物理學家變成軟體工程師,喜歡的運動從游泳變打網球。經歷了很多事情,多到我自己都常常忘記原來我曾經歷過,像是集思論壇、綠領農學市集、好幾家公司實習、參加的各種演講等等。
Continue reading

軟體工程師必修的三門課

何謂工程師?為什麼所有軟體工程師都該學資料結構與演算法、計算機架構、作業系統?


大資工時代,所有人都一窩蜂轉行、跨行進資工領域,尤其是這陣子人工智慧話題被炒起來,好像人人都該懂機器學習、深度學習。市面上產品好像都該有個「智慧」當作前墜,智慧手環、智慧眼鏡、智慧監控系統等等。而幾年前則是雲端技術很紅,所有東西都該加個雲。區塊鏈也被當作明日之星,各種公有鏈、私有鏈的新創如雨後春筍。再加上網頁前端、後端、手機 APP等人才需求本來就大,可以說資工領域的市場需求已經被捧到了極高點。

因為市場需求大,前景看好,所以很多人半路出家改當軟體工程師,這邊廣義包含各種程式開發的人才。國民教育都把資訊科學列為必修了,代表已經是全民皆碼農的時代。連非工程職位的業務、PM、顧問好像都必須會寫個 Python 才夠生存。

Continue reading

半路出家申請國內資工研究所

申請交大資工丙正取、台大網媒備取的歷程與省思


終於都放榜了,所以可以來寫心得。如副標題,推甄上108學年度交大資工所丙組,然後台大網媒所只有備取 10。

我承認標題與某專頁有點似曾相似(半路出家的軟體工程師:咦?),內容也有點老生常談,不過還是不寫不快,所以決定來分享一下整個過程。

Continue reading

30 天 Javascript 從入門到進階:條件判斷

Gitbook 連結: https://tigercosmos.github.io/master-js-in-30-days/

條件判斷

接下來介紹控制程式的方式之一,也就是條件判斷。

條件判斷顧名思義就是針對不同的條件來判斷要做出怎樣的結果。舉例來說,現在要採收水果,但我們只要取下已經成熟的水果,還沒熟的我們要讓他繼續成熟。

或是我們有更多條件,例如大於 500 公克的蘋果放到 A 籃子,介於 200 到 500 公克的蘋果放到 B 籃子,小於 200 公克的蘋果不要摘下來。

現實生活中我們都在做各種判斷,而我們當然可以把這種判斷的工作交給電腦來做,接著讓我們來了解電腦怎樣做判斷的。

Continue reading

30 天 Javascript 從入門到進階:條件判斷

Gitbook 連結: https://tigercosmos.github.io/master-js-in-30-days/

條件判斷

接下來介紹控制程式的方式之一,也就是條件判斷。

條件判斷顧名思義就是針對不同的條件來判斷要做出怎樣的結果。舉例來說,現在要採收水果,但我們只要取下已經成熟的水果,還沒熟的我們要讓他繼續成熟。

或是我們有更多條件,例如大於 500 公克的蘋果放到 A 籃子,介於 200 到 500 公克的蘋果放到 B 籃子,小於 200 公克的蘋果不要摘下來。

現實生活中我們都在做各種判斷,而我們當然可以把這種判斷的工作交給電腦來做,接著讓我們來了解電腦怎樣做判斷的。

Continue reading

30 天 Javascript 從入門到進階:檔案讀寫

Gitbook 連結: https://tigercosmos.github.io/master-js-in-30-days/

檔案讀寫

電腦科學中資料讀寫包含存取(input, I)和輸出(output, O),這也是為什麼常常看到 I/O 這個術語的原因。在電腦科學術語中中,廣義的 I/O 包含直接對檔案(file)、緩存(Buffer)以及數據流(stream)做操作。檔案就是已經存放在儲存裝置中的文件,緩存是還在記憶體中的資料,數據流則是一串序列化的抽象資料,這再晚點會深入介紹。

資料傳輸在寫程式的時候,不管是你想要從文件中讀取資料,或是資料從網路上傳輸,亦或是資料在程式與程式之間傳送,都常常會用到。事實上我們寫程式通常也就是為了處理資料,如果沒有資料的話,還真的不曉得程式能做什麼事情!(有啦,算算質數之類的 XD)

本篇會將 NodeJS 上會用到數據型態作介紹,當作先備知識。接著只會著重在檔案讀寫講解範例,其餘像是數據流的操作、緩存的處理,待日後的進階文章才會詳細介紹。

Continue reading

30 天 Javascript 從入門到進階:函式

Gitbook 連結: https://tigercosmos.github.io/master-js-in-30-days/

函式

我們知道程式碼可以幫我們做很多事情,例如睡不著要數羊的時候,就讓程式跑個迴圈,一下就幾百幾千萬隻羊了。但是目前為止,所以工作都是被放在一起的,並且只能被執行一次。也就是說,假設我有三件工作,寫成程式碼可能會長這樣:

Continue reading

30 天 Javascript 從入門到進階:物件

Gitbook 連結: https://tigercosmos.github.io/master-js-in-30-days/

物件

這個世界由各種不同的東西(Things)組成,我們身處的宇宙、太陽系、每天繞地球的月球,山海與花花草草。

有一部電影〈The Theory of Everything〉描述一位已逝的偉大物理學家——霍金,年輕時候的愛情故事。霍金一生為追求宇宙的真理而努力,物理學家堅信世界應該是由一個可以統合並解釋所有物理現象的理論所支配,亦即萬物的理論。

在 JS 的世界中,萬物的理論就是 object 這個物件型別,這個物件型別包含各種形形色色的玩意,讓我娓娓道來。

Continue reading

30 天 Javascript 從入門到進階:環境建設與執行第一個程式

Gitbook 連結: https://tigercosmos.github.io/master-js-in-30-days/

環境建設與執行第一個程式

JS 可以當作獨立的程式直接運行,也可以跑在網頁上。本篇先介紹如何直接運行 JS 就好,因為要跑在網頁上,我們必須寫一份網頁出來,其中概念不只 JS,還必須懂 HTML,但這邊我們先了解 JS 就好,所以跑在網站上的方式待晚點再作介紹。

Continue reading

How the Puffin Browser Works

Puffin is wicked fast. Let’s dig deeper into it.


This summer, I have been a software engineering intern at CloudMosa, Inc., a company which develops Puffin Browser.

During two months of the summer, I have participated in some features development and fixed some bugs. Meanwhile, I have a look at the whole picture of Puffin Browser.

Continue reading

這個暑假我在 CloudMosa 所見所聞

這個暑假我在 CloudMosa 所見所聞

What I saw and heard at CloudMosa in this summer.

大約在一年前,因緣際會我開始接觸瀏覽器開發,一開始是貢獻 Mozilla 的 Servo Brower Engine 專案,後來覺得還是不夠了解瀏覽器,就想說就由寫文章來強迫自己學習。ITHome 的鐵人賽剛好給了我一個行動的契機,於是就開始寫了有關於瀏覽器的系列文章。

Continue reading

Programming Servo--The Debug Way

Programming Servo: The Debug Way

Debug Servo and Rust in a modern way


Servo is a huge project. I have counted the lines of code for you. There are almost a hundred thousand lines of code in the Servo project. To develop such a big project, knowing how to debug in a right way is very important, since you would like to find the bottleneck in a fast and efficient way.

In this article, I will teach you some tips to use GDB developing and debugging your Rust code in the Servo project.

Continue reading

台大觀察與心得(七):大三寒假與大三下

在台大的日子已經過完三年整了,本篇記錄從大三寒假到大三下在生機系的生活。故事線大概可以分三條,研究篇、課業篇、課外篇,不過雖然我念生機系,但大部分都不是在生機系的故事就是了。

Continue reading

第一次 Probot 開發 Github App 就上手

第一次 Probot 開發 Github App 就上手

The First Time Developing Github App via Probot


前言

最近在開發氣象機器人的時候,為了要促進工作流程的效率,不得不加入 bot(機器人) 進來工作流程。所以就邊研究邊實做了一個,在此記下開發心得。

Continue reading

來寫個氣象機器人吧!

來寫個氣象機器人吧!

Let’s build a weather bot!


簡介

沒有人會懷疑了解天氣的重要性,我們總是看氣象預報或查天氣來決定等下外出時要不要帶傘,衣服要穿多厚是否需要帶件外套,或是需不需要先擦防曬油戴一副墨鏡出門等等。

想查天氣的時候我想大部分人可能就是 Google 一下、上中央氣象局網站、使用 APP、看新聞。或是有種很潮的做法是問 Siri,不過效果可能不太好 ⋯⋯。

Continue reading

你的第一份大型開源專案--Servo 瀏覽器

你的第一份大型開源專案: Servo 瀏覽器

Your First Big OSS Project: Servo Browser


前言

開放原始碼軟體,又稱開源軟體(Open Source Software),顧名思義是將軟體的原始碼公開。詳細介紹可以看維基百科介紹以及什麼是開源一文。

身為軟體開發者,我們常常會需要很多工具來幫助我們更簡單完成工作,而且我們都知道沒事不要自己造輪子,這時候就會看看網路上有沒有現成的工具。例如想要開發機器學習可能就會用 Tensorflow,想要開發網頁前端可能會使用 Angular,想要開發 Android App 可能會用 Kotlin,平常用的 gcc 或 clang,甚至 Linux 作業系統通通都是開源軟體。

Continue reading

台大觀察與心得(六):大三上

不知不覺,大學生活已經到後半段了,來到大三上。這學期我修了19學分,但我把他壓在三天內,另外兩天排去公司實習。關於課業沒啥好談,基本上我已經確定我要往軟體工程發展,生機系的必修我都只想混及格而已,雖然上課大部分都有聽,但我也沒花心思,我也不在乎成績。時間我都拿去研究、精進軟體開發上。
Continue reading

我都怎麼發 PR?

我都怎麼發 PR?

開源專案中,如何找出問題,並解決他?


開源專案的流程很簡單,看 issue 有甚麼,然後改 code,接著發 pull request,順利的話就會被 merge,成為一個 commit。開源,就是一直重複這些步驟。

發 issue 很簡單,你哪邊看不爽,不管是 bug、feature、doc、style,就可以發個 issue。當然發 PR 也很簡單,但能被 merge 的 PR 就不簡單。所以如何寫點新東西或是修正 bug,然後發 PR 最後被 merge 進去?

Continue reading

Angular 5 是啥玩意?

Angular 5 是啥玩意?


Angular 5即將在近期發布,讓我們來看看有啥特別的呢?

沒用過 Angular 也聽過 Angular,沒聽過 Angular 總之你現在看過了 XD
Angular 5即將發布,本文將介紹什麼是 Angular 以及新版本有啥有趣的東西。本文為了友善初學者,會從最基礎的東西講起,如果想直接看版本 5 的新功能可以直接跳到後面。

Continue reading

踏入 Mozilla Servo 兩個月的心得

踏入 Mozilla Servo 兩個月的心得

開發 Servo 有感而發寫下的紀錄


不知不覺,兩個月下來已經在 Mozilla 的 Servo8 次 commits。 Servo 為新一代 Firefox 的基石,所以做起來非常有成就感,也對瀏覽器本身開始有極大興趣。而且這個社群非常友善,開發過程讓人覺得很快樂,看著兩個月以來的紀錄,有感而發寫下這篇文章。

Continue reading

How I & how a newbie to become a member of open source community?

How I & how a newbie to become a member of open source community?

A long story goes through my coding life and hope guide people in contributing to open source projects


What is this article?

I know there are many people want to join the open source community whether they are already a coder or a newbie to writing codes. I was once a guy who want to contribute to open-source projects, and I did not know how to do it. Now I am a contributor to many open-source projects.

I thought many people would have the same question which is how to commit to open source, so I write this article to record my experience and guide you to find the way. If you just want to read open-source parts, skip the previous paragraphs and jump to the rear.

Continue reading

使用 Tensorflow 開發花朵種類辨識 App

前言

最近機器學習、人工智慧、深度學習等等名詞非常夯,本篇用深度學習簡單實作一個可以辨識不同種類花朵的 Android App。第一部分是訓練圖片的模型,這時已經可以在電腦上作辨識了。第二部分是將第一部份訓練的模型放進 Android 裡面,實作手機辨識的部分。

Continue reading

台大觀察與心得(五):大二下 & 生機系第二學期

這學期只修 19 學分,全部都是生機系必修,17學分包含大一的靜力學、機電整合一:微處理器,大二的機動學、工程數學、電子學、材料力學,以及2學分專題研究。學分那麼少是因為把禮拜五空出來,固定那天去公司上班。雖然學分少卻念得不輕鬆,大部分課我都沒興趣,要不翹課要不睡覺,這學期全都是混及格而已。最後這學期 GPA 只有 2.99。這學期我也不斷思索是不是真的要念書,休學的想法不斷縈繞於腦海,跟爸媽還有老師談了好多,最後還是沒勇氣休學。
Continue reading

紀錄面試經驗──Cepave

紀錄一下每次的面試心得,主要是寫當下我的狀況和心得,閱讀起來可能會覺得有點零散。介紹一下這家公司,以下為官網簡介:Cepave 2015 年成立,是一家新型態網路科技公司,專注於開發大規模的網路應用系統。以直覺、人性化的操作介面來管理網路設備,提供智慧平台分析網路趨勢。這家公司人數 22 人,算是小間新創。
Continue reading

紀錄面試經驗──Tymphany

簡單介紹一下這家公司 Tymphany,主要是做音響的,目前主要還是一個代工品牌,幫各家音響大廠製作。我面試的職務是工程助理實習,是韌體部門單位的職缺。一開始在 104 上工作描述是 「Create SW management system / database」要求會的技能為 「ASPJavaPHPRuby」所以我以為我是申請一個寫後端軟體的部門。投了履歷之後,收到回信看了一下職稱竟然是 Firmware Team,有點意外,不過反正我對韌體開發也有興趣,覺得進一步談應該會蠻有趣的。

台大觀察與心得(四):生機系第一學期-課外活動篇

高中以前,我夢想當個物理學家。大學之後,我對世界有嶄新的認識。大一時多方聽演講,以及修了外系的課,我對其他領域的興趣慢慢浮現,我自己也有感覺,比起學術之路,我更適合走工程。總之,我轉系了,轉去生物產業機電工程,簡稱生機。

Continue reading

台大觀察與心得(三):大一暑假

這篇主要是描述大一下學期到暑假期間的心路歷程。

約莫大一下學期,我還在大氣系,寒假時有當志工,幫林博雄教授做觀測。期間認識石恩,石恩學物理的,聊得挺投機。後來林博雄需要找學生幫忙寫軟體,石恩那時在教授那邊工作,於是石恩介紹我給教授,我一直都有在接觸程式,那時的我程度真的只是比一般人好一點。不過不管,勇於接受挑戰才能更上一層樓。那時候稍微覺得對程式編寫沒問題。這又要往回說。
Continue reading

台大觀察與心得(二):大氣系第二學期

在台大念書兩學期,對大學生活更加了解,卻也不像一開始那麼起勁。這學期修課變化比較大,上學期只有22學分,這學期修到24學分,時間感覺過的也比較快,期中考一周一科就這樣考了一個月,期中結束之後不久是一堆期末報告,之後馬上就接者期末考了,一學期也匆匆過去了。雖然感覺沒做甚麼特別的事,但還是有一些這學期課程心得和故事可以分享。
Continue reading

我成績不好,該放棄科學嗎?

關於成績這件事情,我想可能很多人在中學時期也會有相同煩惱,因此就寫了這篇。這篇文章以科學為例子,但套用到任何領域都是一樣的。在學習路途中,我們適合做甚麼,似乎很刻板的根據成績來決定,高中數學是強項,所以大學填志願時偏向數學、經濟等等,或是英文特別好,他可能就會考慮去念外文系。本文即是探討怎樣才是比較好的選擇方式。

Continue reading

馬可夫鍊模擬 Markov Chain Simulation

        馬可夫鏈 (Markov chain) 或稱馬可夫過程 (Markov process)是一種隨機過程,在數學上只要這傳遞矩陣有一些好的性質,就可以證明經由這馬可夫鏈抽樣的分佈會收斂到想要的機率分佈。
這邊我簡單模擬有一群人,分為AB兩種狀態,並且一開始兩種狀態人數相同,而每回合 中的每個人會有 aRate 機率變 B中的每個人會有 bRate 的機率變 A。如此進行多回合。(這是 Agent-Based 而不是直接矩陣運算)

3分鐘搞懂科學班在幹嘛

簡介
        教育部有鑑於高三學生拚了命準備學測和指考實在是虛度光陰,特別開設科學班讓數理資質優良的學生在這沒意義的一年可以到合作的大學修課。為了達到高三可以去大學上課,將三年課程濃縮成兩年,就好比私校的升學班。其他方面跟數理資優班都差不多,有科展、有競賽、有專題、有海外交流。

台大觀察與心得(一):大氣系第一學期

       以前還是高中生時,總是好奇大學到底在幹嘛,上網爬文、問老師、問學長姐,各種經驗像拼圖一般慢慢拼湊出我對大學的想像,而如今我在台大念了一學期,這幅畫也變得越來越清楚。現在雖然大學了,但我仍持續探索,感覺沒有完全了解所有事的那天。這篇文章希望給高中生更明確的資訊,對升學、對台大以及對未來。

高中科展(二):傳染病之數學模型與個體導向模擬

        學測考完之後,有差不多一個月的寒假,很早就有想做第二個科展的想法,因此就決定開始動工。一開始野心很大,報名了學校的物理科跟應用科學科,後來發現時間會不夠,而且物理挑的光學題目困難度比較高,牽涉到比較深的數學,因此就只做應用科學。在一期<科學人>雜誌中曾閱讀到一篇《虛擬城市:天花來了》,文中藉由科學模擬來進行流行病預測與防治,此外也閱讀到多篇流行病相關的文章,因此基於好奇與樂趣,想完成一個由建立在科學模擬與流行病模型的流行病研究。
Continue reading

高中科展(一):布朗運動與擴散

        當初進入科學班,最期待的事情之一,就是可以去大學實驗室做專題。聽起來似乎很帥很厲害,但是否真的能有一翻成就還是要看人。當初附中有個很爛的規定,直接分發師大教授給我們選,還強迫要3個人一組,無奈之下我選了師大一個做STM的實驗室,組員也不是對物理有興趣的。不過後來我和實驗室交情很好,組員雖然對物理沒熱忱,但卻很負責任,他們戲稱自己是我們組的廉價勞工。經過我一翻體悟,認為教授應該要自己找,校務評鑑時我也有反應,後來制度就改了。之後,我的專研礙於實驗儀器,我跑去求助中研院物理所,深深覺得中研院的高檔設備果然還是比較好。
Continue reading