您現在的位置是:首頁 > 攝影首頁攝影
我用 1 個 2 手計算器換了 3 臺 MacBook(上)
電腦如何改變照片大小kb
0x0。 網名「野生的碼農」的由來
在開始正文之前,先囉嗦兩句,在我的程式設計生涯中,沒受過什麼科班教育,憑著對計算只因的熱愛,「野路子」比較多。按照百度百科中對「野生」的解釋,我是一名「野生的碼農」:
野生,意思是動植物在野外自然生長而非經人工馴養或培植
我是在安醫大讀了3年多醫學後,覺得不是這塊料,轉頭自學了1年的計算機系課程後,跨考了中科大的計算機系(11系)研究生(學碩),運氣還行,一次就上岸了。中科大就不用介紹了,安醫大可能很多人不知道,只得強行蹭一波名人的熱度了:
安醫,許嵩的本科學校,我和他同屆;著名駭客 tk 教主也是安醫畢業的,他倆都在90週年校慶中被評為了優秀校友
當然,安醫校友中還有更傑出的,尤其是今年,可謂是家喻戶曉、如雷貫耳、炙手可熱、聞者落淚,點到為止,你懂的
3年多前,趁著在騰訊轉崗的間隙,我寫過一篇文章
《醫學跨考計算機研究生10週年》
,介紹了跨專業考研時的心路歷程以及我寫文章時的工作和生活狀態,打算持續更新讀研、工作時的一些趣事。然鵝,自那之後,工作更忙了,2019年底開始管理團隊。2020年初,那啥開始了,生活完全被打亂了。再也沒時間,沒心情寫東西了。
7月底,我結束了整整10年的北漂生活,回到了合肥上班,關於這個抉擇,感興趣的朋友可以看看這篇文章
《北漂10年,有房有車,大廠組長,做了一個違背祖宗的決定》
。相對而言,合肥的工作沒北京那麼忙,所以,從10月底開始,我又開始隨緣更新了。覺得文章有點意思的朋友,不妨點個關注,防止失聯。雖然現在有點空餘時間了,但更新速度不敢保證,跟老婆吵架的頻率大致成反比
先說個最近錯過的發財機會,11月底,在海鮮市場發現了個奇葩的計算器,看上去就很厲害的樣子,69不包郵,入手了1臺。賣家發貨前,我隱約感覺這是個好東西,又追加購買了1臺,最後是兩臺150元包郵,這是我手裡的兩臺:
奇葩計算器
到手後,確實像我猜想的那樣,是
Android
系統,9。0版本。研究了1分鐘,開啟開發者模式,用
adb
安裝
AIDA64
,詳細配置:
全志 A50 CPU,32位,4核1。5GHz;1G RAM,8G ROM;5。4寸螢幕,1280*720 解析度
單聲道揚聲器,光線感測器,WiFi,藍芽,typec 介面,支援OTG,沒有 GPS
據網友拆機,有空餘記憶體和SD卡焊盤,但直接焊上同規格記憶體顆粒不識別,可能跟 MacBook 一樣,擴記憶體時需要同步改電阻
這麼多按鍵,用來玩模擬器遊戲應該不錯,然而
NES。emu
和
GBA。emu
都識別不了按鍵,只有它自帶的計算器能識別。自己寫了個 demo,確實是收不到
onKeyDown
事件。把自帶計算器的 apk 拖出來,反編譯看看,居然是什麼
tty
,需要每個
APP
開啟串列埠
dev/ttyS4
監聽鍵盤輸入,而非 Android 系統標準的
onKeyDown
,淦!
直覺告訴我,這玩意肯定會火,這個造型的安卓機太罕見了,垃圾佬狂喜,學生黨摸魚神器。果不其然,就在我購買的同時,酷安大佬也發現了這貨,不到2天,賣家手裡的1000多臺就賣光了。現在漲到159了,還有網友願意加價100購買我手裡的,當然沒捨得出。
如果我當初直接把賣家手裡的機器都包圓了,每臺加價50出,保守能賺5個w,夠買臺心心念的
本田NSS350
了。可惜我膽子小,沒敢出手(其實是股票和基金虧麻了),不過也可能是好事,至少不會被網暴:
他惡意哄抬物價,靠計算器賺了一套房,這究竟是道德的淪喪,還是人性的扭曲?!
也正是這件事勾起了我對往事的回憶,決定寫點東西,聊聊我是如何在計算器的吸引下,走上了碼農之路,並順便用計算器換了幾臺 MacBook。大多發生在我讀書和工作初期,希望對讀者有所啟發。
宣告下,我不是標題黨,文中的所有事件都是真實發生過的,我對著打了骨折的工資條承諾:
本文內容,貴在真實,如有虛構,(工資)折上加折
0x1。 接近完美的 MacBook Air
9月底的時候,合肥日常氣溫還在30度以上,為了避免電腦散熱導致全球變暖,我斥巨資0。00013億,全款購買了一臺頂配 24GB 記憶體的 M2 款深空灰 MacBook Air。這臺機器除了螢幕小了點,音響效果垃圾外,其他地方堪稱完美了,重量輕,續航長,效能好。剛買完不久,就聽說明年春季要釋出15。5寸的 MBA,看來跟股票一樣,又沒把握好出手的時機。
這些年,花了不少錢購買蘋果產品,我不是果粉,只是覺得蘋果的生態不錯,用起來省心,質量也過得去,同價位找不到體驗更好的產品了。算下來,這是我購買的第3臺蘋果筆記本了,另外兩臺是2014年時購買的頂配港版15寸 MBP 和2015年時給老婆購買的丐版13寸 MBA,分別耗資 1。5w 和 0。6w。
但是,你敢信,這些 MacBook 竟然是用1臺價值10元的二手計算器換來的。計算器長下面這個樣子:
科學計算器
注意看,這個寶貝叫小帥,它是所有故事的起點,不過即使帥氣如小帥,也只能屈尊男二號,男一號當然是我了。本文會按照時間順序,介紹小帥如何在我的英明帶領下,一路披荊斬棘,身價暴漲數千倍,從計算器逆襲成多臺 MacBook 的。
0x3。 如何用計算器換 MacBook
相信大家都看過「如何把大象裝進冰箱」的段子,如下圖所示分為3步:
把大象裝進冰箱
同理,用計算器換 MacBook 也是3步:
挑選 MacBook
物物交換
潤!
全文完,祝您幸福,可獄不可囚的新生活就在閻前了。哈哈哈哈,有沒有上當的趕腳?褲子都脫了,你就給我看這?
雖然上面只是個段子,但其實整體步驟是差不多的,只不過第2步需要補充億點點細節,請試試看:
算術入門
好了,不開玩笑了,因為實際的「物物交換」的過程非常坎坷,時間跨度長達12年,我會分成3篇文章來介紹,內容簡介:
大學前的懵懵懂懂 —— 不堪一擊
本科時的誤打誤撞 —— 初學乍練
讀研時的不務正業 —— 略知一二
每篇文章中,都會分享一些真實發生的小故事。不是為了水文章數量,擔心文章太長,讀者看了一半就跑路了
0x4。 人生的第一臺科學計算器
初二(2000年)左右,數學書上有了科學計算器的介紹,貌似是用來計算三角函式的,記不清了。因為我家是農村的,周圍買不到這種「高階」的科學計算器。於是,託同學幫我買一臺,印象中是18塊錢,他說直接買他的好了,沒用幾天,只要10塊錢,成交!於是,他擁有了10塊錢私房錢,我擁有了人生的第一臺科學計算器,就是本文開頭圖片的那款,帶時間顯示的。
那個年代,沒啥玩的東西,計算器也成了電子玩具之一。連蹲坑都拿在手上,閒著沒事我就一通亂按,看看能算出個啥。很快啊,我就熟練到了爐火純青的地步,對所有功能都瞭然於胸,包括階乘、隨機數、二進位制等。除了「->rθ」和「CPLX」,這是極座標、複數相關的,初中水平有限,不知道是做什麼用的。
因為熟悉,還用它搞過惡作劇,把同學的計算器改成16進位制,此時,只有「加減乘除」基本功能可用,
sin
、
cos
等函式都失效了。再輸入一些字母,即使重新開機也依然停留在16進位制,類似下面這種顯示:
16進位制顯示
同學以為計算器壞了,找我賠,場面一度十分和諧
當然,作為計算器,它更多的時間還是用來計算的,雖然是因為數學課買的,但數學課幾乎沒有過,印象中計算過統計中的方差和線性迴歸。主要用途還是物理和化學,用來計算浮力、做功、分子量、方程式啥的,節約了很多無聊的人肉計算時間。
讓我感興趣的是,這貨是如何算的這麼快的,高斯雖然能口算 1~100 的和,但他肯定口算不了 1~69 的積。為什麼是69,而不是100?沒用的知識:
一般的科學計算器只能計算到69的階乘,因為69! = 1。7112245
*
10^98,70! = 1。1978572
*
10^100
而計算器使用科學計數法時,其指數部分最多顯示兩位數,所以,最大隻能計算69!
補充兩個當時發現的無聊的例子,只看結果的前幾位數字,很完美,但後面「跑偏」了:
a。 1234567890*8 = 9876543120
b。 1111111111/9 = 123456790。1
如同我們的人生一樣,並不會總是按照自己設想的路線圖發展的:①。 你可能多年以後才能獲得曾經夢寐以求的東西,像
a
中的
2
出現在了
1
之後 ②。 更有可能的是,你永遠也得不到想要的東西,就像
b
中的
8
一樣。我現在真的覺得,這些都是命,強求不得,要坦然接受生命中的不如意。
扯遠了,為了探尋科學的真理,中考後的一個夜黑風高的大白天,我舉起了39米的大刀,溫柔地劃開了它的胸膛,得到了若干電阻電容晶振以及一塊看不懂的電路板,電路板上有塊圓形的牛屎晶片。就這樣,我人生中的第一臺科學計算器走完了它光輝的一生,享年2歲。
0x5。 早逝的超級函式計算器
上高中後,又花20塊錢買了台山寨的夏普科學計算器,比之前那臺少了時間功能,其他功能一毛一樣。節省流量,圖片就不放了。
每次逛書店和城隍廟,都會去賣計算器的櫃檯轉轉,看看有沒有更高階的計算器。即使買不起,看著密密麻麻的按鍵,也是一種享受。遺憾的是,它們除了外觀略有不同,功能上和我手裡那臺沒有任何區別,實在是無趣。直到高三下學期的某天,午飯吃飽後,不想在教室裡吃狗糧,去城隍廟透透氣,意外發現了一款看上去就很高階的計算器,螢幕是點陣的,按鈕非常多,還能輸入26個英文字母,如下圖:
超級函式計算器
這貨的中文名字十分很霸氣,叫「超級函式計算器」,印在 A 面的外殼上,拍照時已經遺失。老闆娘開價80,我是學生,抹個零,8塊。你是畜生也不行,滾!最後貌似是38還是48買來的,簡單研究了下,相比我手裡那臺山寨夏普,這傢伙確實配得上「超級」的名頭。它內建了很多物理和化學的公式及常數,也可以自定義公式,輸入各變數的值,直接輸出公式的值。例如:
E=mc^2
,輸入
m
的取值後,
E
會自動計算出來,
c
是內建的常量之一。
臨近高考,沒時間再研究其他更復雜的功能了,高考後,就把它給我妹了。然而,沒多久,它就被我妹摔駕崩了,享年1歲。上面的照片貌似是05年用同學的手機拍的,它那會已經薨了大半年了,相當於拍的是「屍體」了。我後來拆開看過,電路板很漂亮,裡面有好幾塊十分工整的方形牛屎晶片。抱歉,看不懂硬體,只能這麼蒼白的表達了。
因為它的早逝,一直沒能搞清楚它到底有哪些功能,我現在還時常在網上搜索這款機器,希望能能再買一臺。可惜一無所獲,可能是保有量極少吧,甚至連資料都找不到。罷了,隨緣吧,讓往事隨風。
0x6。 碼農之路的啟蒙老師
在每個人的成長道路上,都有一位帶領自己入門的啟蒙老師,我也不例外,我的啟蒙老師是下面這位:
武藤蘭
呃,不好意思,放錯圖了,這是另一個領域的啟蒙老師,比程式設計啟蒙要晚上好幾年。
相信絕大多數程式設計師的啟蒙老師都是凡人,而我的程式設計啟蒙老師是位神仙 —— 文曲星:
文曲星 PC1000a
遺憾的是,文曲星老師已經遺失在歲月的長河裡了,圖中的老師是我最近花了130大洋買的,還是比臺版文曲星「哈電族」更常罕見的港版。賣家可能是怕我到手刀,反覆叮囑我港版安裝程式會有亂碼,建議我買國行的
CC800
。我說亂碼無所謂,買回來回憶下青春,主要是為了情懷,能用就行,還讓賣家順便幫我裝了幾個程式。
高一,花400多買了臺支援數碼錄音的
文曲星 PC1000
,沒多久機器出問題了,換成了剛出不久的
PC1000a
,不支援數碼錄音,但外觀更小巧,配色更舒服,看上去就像是一臺迷你膝上型電腦。讓人費解的是,我用它玩了兩年多俄羅斯方塊,詞彙量居然沒有絲毫進步,足以證明文曲星並不能提高英語成績。
文曲星也自帶了很多計算器的功能,有
科學計算
、
公式計算
、
統計計算
等等,兩個沒用的知識:
1。 文曲星能計算的最大階乘數是 3208! = 8。6168014*10^9856
2。 文曲星能顯示的時間範圍是1932年1月1日 ~ 2031年12月31日
高三的某天,開啟文曲星準備算點什麼,不小心進入了「計算/換算」裡的
GVBASIC
,只有一個游標在閃動。雖然之前也進來過,但一直不知道是做什麼用的,所以每次都是立刻就退出來了。那天可能是無聊,本著來都來了的精神,亦或是大意了,沒有閃,我按下了「求助」按鈕,閱讀起了機器自帶的幫助,裡面有
IF
、
FOR
、
GOTO
、
ASCII
等內容的介紹,隱約地感覺是程式設計相關的功能。
高一的微機課結束後,除了偶爾去網咖衝浪,就沒機會接觸到電腦了。而且微機課也只是教了點打字和微軟三件套等皮毛,最後一課時,微機老師簡單演示了
Visual Basic
程式設計,看上去很厲害的樣子,不過,我是真沒看懂他在搞毛。難道文曲星也能像電腦一樣程式設計?
當時,恰逢數學剛學完橢圓不久,發現幫助裡有個
ELLIPSE
的指令,可以用來畫橢圓,幫助內容如下:
ELLIPSE 畫橢圓
用法:
ELLIPSE X0,YO,A,B,FILL,TYPE
*FILL=1 填充
*FILL=0 不填充
*TYPE=1 畫橢圓
*TYPE=0 清橢圓
如:
]10 GRAPH
]30 ELLIPSE 80,40,60,30,1
把示例程式碼輸入文曲星後,按下
RUN
執行,立刻顯示了個實心的橢圓,嘗試把程式碼中的1改成0,橢圓就沒有填充了:
文曲星繪製橢圓
臥槽,好神奇,後來還嘗試了
CIRCLE
畫圓、
LINE
畫直線等內建指令,繪製出的圖形完美符合數學中的相關定義。靠著閱讀幫助,我在文曲星上學會了賦值、條件、迴圈等程式設計中最基礎的知識。所以,正是文曲星教會了我程式設計,是指引我走上碼農之路的啟蒙老師。但也僅限於入門了,
PC1000a
的程式碼編輯體驗實在太糟糕了,在沒有電腦的情況下,很難開發超過10行的程式。
當時,數學正在學習極限、導數的內容,如果能把函式影象繪製出來,不少函式的極值能一眼看出來了,但可惜的是,絕大多數函式影象是很難透過手工畫出來的的。高一的時候,看過數學老師用電腦軟體演示過任意函式影象的繪製,感覺真 TMD 牛逼。
於是,我就想,能否透過程式設計,讓文曲星也能繪製任意函式的影象呢?然鵝,心有餘而力不足,我也只能是想想了,畢竟剛學會
1+1=2
,就想計算微積分,屬實是痴人說夢了。後來,班裡的一位電腦高手給我傳了個程式,號稱能在文曲星上繪製任意函式的影象,例如繪製
y(x)=x*sin(x)
的函式影象:
文曲星繪製函式影象
據高手說,這是他自己開發的,應該是真的吧,因為他還給喜歡的女孩開發了個類似
flash
的小動畫,程式設計能力槓槓的。那時他在開發中國象棋和任意函式求導的程式,據他說很複雜,應該是沒能在高中畢業前完成。
雖然我當時不知道他是如何做到繪製任意函式影象的,但是我用的很歡樂,晚上做題做累了,開啟程式,編輯個非常複雜的函式,看看影象長什麼樣子,也算是為數不多的消遣了。小鎮做題家的快樂,就是這麼樸實無華且枯燥
然鵝,沒多久,這種簡單的快樂就被下面的妖豔賤貨給取代了:
黃金英雄壇說
這是當年文曲星上非常火爆的《黃金英雄壇說》,也是我第一次接觸
RPG
遊戲,比較上癮,玩壞了兩個鍵盤,廢了幾十個5號電池。
三年前,為了再體驗一把當年的快樂,特意買了個橫版
MiYoo
開源遊戲機,自帶文曲星
CC800
模擬器並內建了《黃金英雄壇說》,上手5分鐘後放棄,操作太繁瑣了;也在 iPhone 上裝過《英雄壇說》,同樣是玩了5分鐘棄療了;即使是最近買的文曲星
PC1000a
上,也只玩了10分鐘就退出了。
並非是遊戲不好玩,遊戲還是那個遊戲,但我已經不是那個我了:
高中,雖然家境貧寒,但也能吃飽穿暖,學習成績也不錯,基本沒有需要我操心的事
現在,上有老下有小,每天睜開眼就要面對生活、工作上的瑣事,何以解憂,唯有搞錢
如我和賣家的溝通一樣,我是因為「回憶青春」才買的這臺文曲星,開啟文曲星的瞬間,似乎又回到了無憂憂慮的少年時代,得以片刻的喘息。
其實,我現在是個不折不扣的的「垃圾佬」,買了挺多類似的二手老物件,以手機居多,以後有機會再找個主題分享給大家。
0x7。 冰火兩重天的體驗
高考前幾天,最後的一次模擬考試,年級第10名,是我高中時代最好的排名,科大,等我。高考,大概班級第30名左右,而平時都是在前3名徘徊的,是我整個高中最差的一次了,只比二本線高了40來分,科大,再見了。除了語文,所有科都考的很爛,媽的,我也不知道為啥,明明題目簡單的一匹,可能是過於輕敵了吧。
高考的滑鐵盧,著實讓我 emo 了好久,整日以淚洗面,不願踏出閨房半步。短短几天,從頂點跌入谷底,沒去東莞,也體驗了一把冰火兩重天。本想著復讀一年,圓了中科大的夢想,但是父母看到我的狀態,根本不敢讓我復讀,萬一來年又沒考好,你丫豈不是要玉玉到自掛東南枝了?
最後,在家人的勸說和化學老師的建議下,報了與中科大僅一字之差、一街之隔的醫科大:
中科大與安醫大
我在安醫和科大都聽過類似的故事:
某某因為學習壓力大,轉學到馬路對面了,那裡壓力小不少,從此杳無音信
地圖裡的科大中區,當年還是合肥學院,那麼安醫、安大、科大、合肥學院,誰是壓力較小的「馬路對面」呢?都不是,「馬路對面」是指中間的「第四人民醫院」,這是一所精神病醫院
不過,我在那片區域流竄了9年,還真不知道「四院」具體在哪,也就沒見過它的真容了。沒想到,多年以後,我們一家三口走進了北京的一所精神病醫院:某年暑假,老婆來北京慰問我,自檢兩道槓。為了儘快確認一下是否真的陽了,我帶著她騎上我心愛的 N(>=3) 手電驢,以 25km/h 的速度飛奔向最近的一所大醫院 —— 回龍觀醫院。
當醫生得知我們要抽血檢查 HCG 時,用一種難以置信的語氣跟我說:
小夥子,你應該是來錯地方了,我們這是一所精神病醫院
臥槽,哈哈哈哈,醫生也忍不住笑了起來。啊,不好意思,再見了,您嘞!至今,老婆還會時不時地拿這事嘲諷一下我
言歸正傳,再說回高考。其實,在填志願之前,我從未考慮過學醫,我甚至都不知道安醫在合肥,我一直以為的安醫是蕪湖的皖南醫學院。我感興趣的是電子或化學類專業,象徵性地報了鄭大提前批的計算機系和安師大的化學系,曾經根本看不上的學校,如今也高攀不起了。學醫,將來哪怕是找不到工作,當個赤腳醫生也能混的不錯。聽上去也還行?那就從了吧。
決定認命之後,為了找點事做,避免胡思亂想導致又玉玉了,花100買了個小霸王學習機,又花35買了個 RPG 遊戲卡帶 ——《封神榜》。購買《封神榜》,也是受《英雄壇說》影響,那裡面的劇情和對話都很好玩,以為所有 RPG 遊戲都是這樣,就找老闆隨便買了個 RPG 卡帶。事後,我才發現,我並不喜歡玩遊戲,尤其不喜歡這種練級類的遊戲,一來沒有耐心,二來打怪升級,實在是太無聊了。我只跟同學一起玩了前1/5劇情,剩下的都是他一個人玩通關的。
聽說小霸王上有個學習卡,支援
BASIC
程式設計,為了一睹她的芳容,我頂著40度的烈日,跑了好幾家店都沒找到,只能作罷。直到多年以後,我才用 PC 模擬器看到了學習卡的真面目:
小霸王學習卡
如果當年找到了學習卡,會因為更早地學會了程式設計,影響我後來的發展軌跡嗎?我想大抵是不會的,橫豎都是不可能,因為即使是現在,面對黑乎乎的
F-BASIC
視窗,除了
,我也實在想不起再輸入點啥了,何況當年小白的我。而且就在那個暑假,我還把表姐家的電腦借過來了1個多月,乾的最多的事就是在《搶灘登陸》和《雷電》裡打飛機。電腦技能方面,除了學會了安裝和解除安裝軟體,連打字的指法都沒嘗試去學,更別說學會程式設計了,這波是葉公好龍了,屬於是。
0x8。 未完待續 & 彩蛋
至此,花了好幾個晚上和兩個週末,碼了近7000字,終於把大學前的程式設計啟蒙階段寫完了。剩下的兩篇文章,也在準備素材了,爭取春節前更新完畢。因為現在毒圈已經縮小到公司同樓層了,如果我沒有按時交卷,除了在跟老婆友好地交換意見外,更大的可能就是我加入圈了,請知悉。
在寫了
其實,上面文曲星繪製的
y(x)=x*sin(x)
的影象是錯誤的,有細心的讀者發現嗎?這個程式是鹹魚賣家給我安裝的,估計是計算 y 座標的地方手抖了,多輸入了個負號,當年我同學給的那個是沒問題的。
前面提到,為了搞清楚按鍵事件監聽,我反編譯了奇葩計算器的 apk,發現了這樣一段程式碼:
package
xx
。
oo
;
public
class
SerialPortHelper
{
private
static
Context
mContext
;
private
static
SerialPortHelper
mInstance
;
public
SerialPortHelper
() {
foo
();
bar
();
}
public
static
synchronized
SerialPortHelper
getInstance
(
Context
context
) {
SerialPortHelper
serialPortHelper
;
synchronized
(
SerialPortHelper
。
class
) {
mContext
=
context
;
if
(
mInstance
==
null
) {
synchronized
(
SerialPortHelper
。
class
) {
if
(
mInstance
==
null
) {
mInstance
=
new
SerialPortHelper
();
}
}
}
serialPortHelper
=
mInstance
;
}
return
serialPortHelper
;
}
}
請
Java
和
Android
攻城獅幫忙 Review 一下,上面有幾處錯誤?