本篇在講什麼:
ABC紙張比例的由來,黃金比例與費氏數列的性質。希望以圖像化的方式,讓讀者具體的了解一些「特殊比例」的性質。
前言、為什麼寫這篇文章
小時候常常在想,是否存在一種矩形,將它對折後,長和寬仍然是相同的比例。最早想到這個問題,是在畫圖的時候,因為覺得畫紙太大所以將它折半,但竟然發現,折半後的畫紙長寬比例跟原本的十分相似。這還滿神奇的,我們一般看到的矩形,你將它長邊對折後,長寬比例不會相同,例如2:1的矩形,將長邊對折後變成了1:1的正方形,跟原先的比例不同。我也想過2:3,3:4,但是試來試去都找不出心目中「完美」的那個比例,直至國中二上學了解一元二次式,才終於解出這個神秘的比例。
希望能藉由筆者計算的心路歷程,讓讀者了解A4紙張的比例、黃金比例的意義,並利用圖像的方式讓大家了解費氏數列與黃金比例的關係。
Cat Lan 發表在
痞客邦
留言(0)
人氣()
在開始前先聲明,我並沒有受過正規的三角函數教學,我對它的認識都是出於實做的練習還有自行的理解而來,因此可能有不正確的地方,敬請指教。
我很喜歡寫遊戲,從一開始用scratch,到後來用python,寫遊戲一直都是我的興趣之一。在python寫遊戲沒有scratch內建的一些功能,例如 移動X步、到XX的距離、碰撞檢測等等,所以這些都是我自行設計的,而像是移動,假如說要往某個方向移動,就必須使用三角函數,這就是我最初使用的原因。以移動來說,只要用sin和cos分別對應y和x就可以了。寫起來會像是這樣:
x = cos(angle)
y = sin(angle)
這部份沒什麼特別的,但如果是殭屍,要不停等速向玩家移動,該怎麼做呢?我們擁有的資訊有殭屍和玩家的座標,唯一缺乏的就是殭屍與玩家的角度。角度?如果沒有角度,那就算有上面那個移動算式那又如何,還是沒辦法往正確的方向移動啊!但是要怎麼從座標轉換成角度?
Cat Lan 發表在
痞客邦
留言(0)
人氣()
加分程式是我為了班上所做的一個計分軟體,視窗中有數字鍵盤,鍵入號碼就可以加分,主要是看在老師常使用電腦,但卻仍然依靠小老師計分數,手癢做出來的小品。
這是最新版本的運行畫面(裡面的數據是亂輸的)。
先丟網址:https://github.com/lancatlin/AddPoint/
歡迎下載!!
我的加分程式主要是為我班導設計,由於上課通常是1分1分慢慢加,所以我的程式是設計輸入號碼,再按加扣分。比較厲害的功能是還有分組計分功能,不過其實它只是將一組的所有成員分數加總,你並不能把分數直接加在「組」上,(所以才說是為班導設計)。歷史紀錄會儲存最近的五十筆,也有返回功能,但是只要重新啟動程式後的紀錄就不能返回(可以用扣回去的)。還有多班級功能,一個程式下方會有很多個班級的檔案資料夾,所以科任老師可以將程式放於隨身碟,到班上電腦執行,這樣在統計時也可以在自己的電腦處理。最後,還有一個(很沒意義的)加密功能,嗯…真的很沒意義,誰會去想篡改這種資料? 不過我就是做了,老師可以設定一組密碼,在每次打開的時候輸入才能進去程式,不過密碼本身也得找地方存吧? 所以你還得「加密」密碼,然後在加密加密密碼的密碼……好沒這回事,加密密碼的密碼就藏在程式碼中了,文章的下一篇將會詳細說明我的加密方法。(程式要被駭了!!!)
Cat Lan 發表在
痞客邦
留言(0)
人氣()
我的P2P聊天程式到目前,已經可以讓互相知道外網IP的兩人互相連結。但對於一般使用者來說,要曉得自己的IP已不容易,還要知道對方的!變成還是得要經由其他聊天軟體先交換IP,使用上不方便。於是接下來P2P程式的目標,就是做出能夠自動依據使用者輸入的聊天室名稱,來配對使用者。
構想是這樣的,A B兩人要聊天,A先打開了程式,設定聊天室名稱為「room」,程式會去訪問網路上紀錄各個聊天室的試算表,去得知聊天室『room』是否存在。當聊天室『room』不存在,A的程式便會以A的電腦作為聊天室『room』的伺服器。再來,B也開啟了程式並連結到『room』,程式一樣到網路上的試算表去尋找『room』,發現已經有人開啟了,再來就會根據在試算表上的IP來連結到A的電腦。
因此,要能夠自動配對,一定要有個穩定的伺服器,並提供存取資料的服務。說到這裡,大家應該都會想到雲端硬碟,沒錯,Google、dropbox等雲端硬碟服務,都有提供API供開發者使用,只要去申請一個項目(多半不用錢),就可以讓程式透過API去控制這些雲端硬碟。舉個例子,如果想要製作一個幫使用者清空雲端硬碟垃圾桶的程式(好沒意義),就去裝Google drive的API,然後申請個專案,就可以使用Google drive的服務。
而我這個程式有個不一樣之處,我的程式並不是存取「使用者」的資料,而是存取我在雲端的一個文件,所以申請專案後,還須辦一個機器人帳號(service account),這樣程式存取的就是這個機器人帳戶的文件,假如我金鑰被盜,頂多也就機器人帳號的資料被存取,我本帳的資料都活得好好的。
1.與Pydrive的苦戰
Cat Lan 發表在
痞客邦
留言(0)
人氣()
開始寫程式之後,常常聽到「韋軟垃圾」這個詞,Linux的大名,也漸漸傳入我耳中。一方面也覺得好玩,就想來換個系統玩玩看!
圖片網址:https://images.techhive.com/images/article/2016/12/nww_linux_predictions_2017_ubuntu_4-100696927-large.3x2.jpg
Linux是一個作業系統,就像windows、ios,但他特別的是,它是開源的,什麼是開源?就是開放編寫的程式碼,意思是你可以自己去修改,去做出屬於你獨一無二的系統(阿當然你要有那個本事,不然只會把你系統搞爛),如果你不想自己來,網路上也有很多linux的發行版,發行版就是別的公司做好的,免費或付費給你用。Linux本身的環境是沒有圖形化介面的,所以你看到它就是黑底白字的命令列,這樣系統是很省資源沒錯,但我們這種市井小民根本不會用啊!!所以大部分的發行版,都有帶著圖形化介面,像是我現在用的Ubuntu,重灌完就把日常生活所需的軟體都放在裡面了,而且外觀精美,很像在用ios的介面 (畢竟都是unix like)。
圖片網址:http://2.bp.blogspot.com/-AIiqkaSoG38/U0-cPpVxrBI/AAAAAAAASRc/8xNSKDyedt0/s1600/ubuntu14.04-unity-search.png
說了這麼多,還是沒講到重點,Linux是免費的!免費的!的!!(回音)
Cat Lan 發表在
痞客邦
留言(0)
人氣()
這兩周科研社上課的主題是機關王。機關王這個比賽我已經參加兩次了,對於它實在是又愛又恨。
什麼是機關王?
機關王是一個創造力的比賽,參賽者使用智高公司的積木或著自製零件,組出一個個機關,並使其順暢運作。這是一個非常有趣味性的比賽,從設計、製作、修正,慢慢從生疏變熟練,把一個空白的底板建築出華麗的關卡,看著一顆彈珠在軌道中運作,可以說是我從小的夢想。
國中關卡照片:
當初設計草稿
Cat Lan 發表在
痞客邦
留言(0)
人氣()
第一次在部落格寫科研筆記,其實加入學校科研社也已經一年了,之前一年級偷懶都沒寫,二年級打算來補償一下,剛好之前寫了一次放到FB社團,有學長姐很希望藉此回溫科研生活,於是我突然得到"報導者"這個工作了。
這一系列文章將會跟程式無關,單純寫福科科研社的上課內容,還有筆者自己的心得。
1.上課內容摘要
這次上的是福科科研傳統─咱糧學堂(傳送門:https://www.facebook.com/grainsschool/),咱糧學堂是一個鼓勵在學校種植農作物的運動,從兩屆前福科科研社就開始參與,之前也有一些不錯的收穫,(不過上學期因為暑假疏於照顧所以死了很多),種的作物很多樣,第一年有種小麥、黃豆、蕎麥等等,第二年加入了紅藜和馬鈴薯、芝麻、薏仁,而今年種了小麥、黃豆、蕎麥、紅藜、台灣百合。
我們今年和去年一樣,把作物種在菜盆裡,並擺在中庭,第一年曾經種在學校外圍的土地上,但是大肚山是紅土,所以難以耕種,作物也長得不太好,從去年開始改成種在菜盆裡,使用學校落葉堆肥的土和買的培養土,並且也有幾盆紅土當對照組,發現紅土真的長得很差,於是今年就不實驗了,全部用培養土。
Cat Lan 發表在
痞客邦
留言(2)
人氣()
當初開始學python,是在國中一下快學期末的時候。自從玩scratch,就一直想學個真正的程式語言,一開始是一上的時候要學Java,因為有名,那時沒考慮好不好學就開始了,到了金石堂找書,買了「深入淺出Java」,寒假便每天努力的研讀,當時急著想學會更多,沒有做裡面的習題,於是都沒有打好根基,學的哩哩啦啦,對於陌生的程式概念,總是無法理解。像是class、object、繼承這些概念,那時候看了很久才有一點概念。當時Java沒有做下去,是由於語法太複雜,像是宣告個變數,需要加上型別,用個Array list還需要import套件,現在想想真令人崩潰。
當時一度想要純粹研究圖形化編程,去找了像是Stencyl之類的環境,但都沒有堅持下去,就繼續做了scratch一個學期,到了學期末再次把Java搬出來,找了不同的教學資源,寫了一個擅長的題材「因數大師」,這個題材我Java、python、scratch都做過,當時有個做scratch的朋友,那時候邀他一起學Java,但他因為家裡有本python的書所以打算學python,我第一次對python有了認識。
後來有天做Java很挫折,心血來潮上網去看python得教程,找到了一個非常好的網站http://djangogirlstaipei.herokuapp.com/tutorials/python/?os=windows,從安裝各個套件到基礎語法教學都寫得很仔細,當時被python的簡潔所震撼,而且我非常喜歡python的互動介面
這是互動介面的模樣,python 就像是一個機器人,你問它問題他就回答你,你叫它做事它就照著做。
這個互動環境可以方便使用者做快速測試,對於初學者也可以經由操作理解語法。當時看到這個感到的快哭了!一個晚上,從安裝到基本語法,這是從來沒有的,之前一樣的入門,用Java 我學了一個月,而python 竟然只花一個晚上。
Cat Lan 發表在
痞客邦
留言(0)
人氣()
有天晚上,平常幫忙測試的那個朋友有上線,想想沒事就請他幫忙測一下。
為了簡化測試內容,我改了一下指令,設定連線ip為讀取一個文件的內容,這樣每次開就不用重新輸入(從此可見我有多懶 XD)。
稍微教他一下操作方式,馬上就開始連線了,我大概可以預知結果是如何,因為我的NAT有開轉發功能(請看上一篇),所以我會被他的測試訊息洗板。他傳來了他的IP,我打開文件,輸入,存檔,再來Shift+F12執行,小黑窗再次出現在我眼前,
「正在連接...」
我向後仰,等著視窗被洗板,突然...
Cat Lan 發表在
痞客邦
留言(0)
人氣()
自從打開設定了NAT,我對於P2P又有新的見解,"要能夠成功一定得要打開NAT",當時還滿沮喪的,因為如果真是這樣,我要嘛就得寫出能控制NAT的程式,要嘛就需要使用者自己設定,但根據這些年我對使用者的理解,後者大概是做不到的,前者由於使用者不一定有權限,基本上也難以執行,結果又從頭來過,繼續爬文,發現很多P2P的文章都提到了一個叫做STUN的套件,我認為這是新的轉機,於是開始大量爬文。
http://www.cs.nccu.edu.tw/~lien/Writing/NGN/firewall.htm
當初就是這篇文,給我很多新的想法,主要對於STUN也有了大致的理解:STUN是一個固定的伺服器,當使用者連上它,就可以返回使用者自己的外網IP,目前網路上有滿多提供STUN服務的網站,「就是這個了!」,用電腦的時候我總是會不自覺大叫,朋友在旁邊打LOL,趁回城來看一下又有什麼發現。
「怎麼了啊?」
「我好像找到一個可以解決的套件了!」
Cat Lan 發表在
痞客邦
留言(0)
人氣()
要進入外網,真的不容易。
因為外網就變成間接連接,不像內網是直接傳進電腦裡,說個話還得看NAT臉色,有時龜毛的防火牆還會把你擋下來(嗯...怎麼好像在說現實)。
當初內網程式搬到外網失敗後,我就開始找尋原因,那時候打開家裡NAT的設定,發現有很多「感覺有關係」的設定。
那時候看到"通訊協定 TCP",還沒看仔細就自以為只能用TCP,結果大改前面的程式,搞了一小時,做出TCP版本,而且更糟的是,開啟時使用者還必須選擇是Server或User,其實就變得跟那種分開來寫的程式一樣了。
#TCP.py
Cat Lan 發表在
痞客邦
留言(0)
人氣()
裝了socket之後,馬上如火如荼的開始編程,照著範例寫了個Server和User文件,拿筆電和桌機測試,順順的就通過了。
注意:在#號後面的是註解,寫給其他人看的
#Server.py
import socket #匯入套件
s = socket.socket() #創造一個socket物件
Cat Lan 發表在
痞客邦
留言(0)
人氣()