這裡記錄每週值得分享的科技內容,週五釋出。
封面圖
南京城北永珍匯商場,與紅山動物園合作,架設了一個38米高的長頸鹿。(via[6])
你可能是一個 NPC
最近,美國發生了一起轟動的大案,一家醫療保險公司的 CEO 當街被人擊殺[7]。
嫌疑人很快抓到了,是一個26歲的青年,名為路易吉·曼吉奧內(Luigi Mangione)。
媒體紛紛挖掘這個青年的背景,發現他是一個作家[8]的粉絲。
就在幾個月前,他向作家打賞200美元,並進行了多次視訊通話。
媒體就去採訪作家,詢問兩人在通話中說了什麼。
作家詳細地回憶了他們的通話內容。其中有一段,我覺得很有意思,分享給大家。
曼吉奧內對作家說,他很喜歡作家的一篇文章《你可能是一個 NPC》[9]。
NPC 指的是電子遊戲的“非玩家角色”,比如路人、門衛、警察等等,用來模擬現實環境,由程式控制,一舉一動都是設計好的,沒有自主意識。
作家的那篇文章提出,人類越來越像機器人,彷佛 NPC 那樣,行為邏輯都是預設好的。
曼吉奧內高度認同這個觀點。他前不久去日本旅行,認為日本充滿了 NPC。他說了一件親身見聞。
一天早上,他在街上看到一名男子癲癇發作,倒在地上。他跑到最近的警察局求助,警察就跟著他去現場。
路上遇到了紅燈,警察立刻就停下來,堅持要等綠燈再過馬路,即使那時馬路上根本沒有汽車。
曼吉奧內很不理解,病人正在發病,神智不清,可能有生命危險,警察卻堅持遵守交通規則。救人難道不是更重要的事情嗎?
他由此認為,日本人“缺乏自由意志”,規則怎麼說就怎麼做,不會自主行事,就是活著的 NPC。
他還觀察到,日本存在一種“隱蔽族”(hikikomori),他們不出門,一個人整天待在臥室裡,用電子遊戲、上網、影片來消磨時間。
曼吉奧內認為,這些人也是 NPC,他們失去了對生活的控制,無法參與社會生活,就選擇放棄,等於喪失了生活的自主權。
他觀察到,這種現象不僅存在於日本,正在向全世界蔓延,世界各地越來越多的人正在成為 NPC。他們要麼無法自主的生活,要麼無法選擇自己的行為,而是根據規則和指令來行事,就像被程式控制一樣。
科技公司推動和加劇了這種趨勢,網際網路使得人們越來越分心,把時間都花在網上膚淺的娛樂,不再集中注意力於自己的生活,把生活都交給程式,無法形成自主的意識和行為。
以上就是曼吉奧內的觀點,我認為是很真實的觀察。一方面,人工智慧使得機器人越來越像人類,另一方面,人類的自主性在消退,越來越像機器人。現實與遊戲、人類與機器人,越來越難以區分了。
AI 程式設計挑戰賽,即將報名截止
這幾期的週刊一直在介紹,正在舉行的全國 AI 程式設計挑戰賽。
它的報名馬上就要截止了。
(1)應用賽道的作品提交,到1月5日截止。如果你有好的創意,能用 AI 做出可執行的作品,就可以報名參加。
(2)如果你善於刷題,可以報名參加演算法賽道,用 AI 來解演算法題。
我是鼓勵大家參加。大賽有豐厚獎品,設了20萬的獎金池,獲獎者還有機會拿到崗位 offer。就算沒得獎,也是一個很好的鍛鍊,能夠動手程式設計、熟悉 AI。
大賽由豆包 MarsCode 和稀土掘金技術社群共同主辦。詳細介紹和報名方法,請看前兩期的週刊[10],或者點選這裡[11]。
科技動態
1、觀鳥神器[12]
一個美國女子發明了一種觀鳥神器,在網上引起了轟動。
她在墨鏡上掛了一個托盤,上面灑了鳥食。小鳥就會停在上面,完全沒有意識到,就停在她的鼻子前面。
這種觀鳥神器,簡單又體驗獨特,怎麼以前沒人想到。
2、自豪版本規範[13]
一個開發者提出自豪版本規範(pride versioning),對軟體版本進行編號。
如果你對新功能感到非常自豪,就發一個大版本(遞增第一個版本號),否則就發一個小版本(遞增第二個版本號)。
如果你對某個地方感到尷尬和羞恥,就發一個補丁版本進行改正(遞增第三個版本號)。
3、能量收集電子賀卡[14]
一位國外的程式設計師,製作了一張可以收集能量的電子賀卡。
這張賀卡就是信用卡大小,上面有電路,但是不帶電池,透過收集周圍環境的能量,LED 燈會閃爍。
最簡單的方式,就是放在燈光下,它會收集光能。
你也可以用 USB 供電。
它甚至可以放在路由器或微波爐旁邊,吸收 WIFI 和微波的能量。
4、糖印表機[15]
你想過用糖來 3D 列印嗎?有人就真的做出了一臺糖印表機。
它用熱風槍,將白砂糖吹塑成型,打印出各種形狀。
下面是它列印的一顆釘子。
它可以打印出很複雜的形狀。
這些東西都可以食用,因此這種機器在食品行業應該很有用,在夜市可能也會很轟動。
文章
1、我的幾何人生[16](中文)
著名華人數學家丘成桐,回顧自己的成長道路。
2、程式設計十年的感悟[17](中文)
“程式碼寫多了才意識到,程式設計師的競爭力並不是寫程式碼,也並不是哪門語言或者框架, 其核心競爭力是透過技術解決問題的能力”。(@ramsayleung[18] 投稿)
3、我給部落格新增 dark mode[19](中文)
作者介紹他為部落格新增 dark mode 的處理方法和注意事項。(@Spike-Leung[20] 投稿)
4、七個最佳的生產力 Docker 映象[21](英文)
本文介紹七個可以自己用 Docker 映象架設的生產力服務。
5、不可變 Linux 發行版[22](英文)
越來越多的開發者開始使用不可變的 Linux 發行版(immutable Linux distro),即系統檔案在執行期間不可更改。這樣會讓系統更穩定,也更容易遷移和回滾。
6、macOS 命令列內建的工具程式[23](英文)
本文介紹 macOS 內建的一些命令列工具程式,比如 security、open、pbcopy、pbpaste 等。
工具
1、YunoHost[24]
一款虛擬機器軟體,內建了常見的雲服務,可以一鍵啟用,省去了安裝雲服務的麻煩,參見介紹文章[25]。
2、MarkItDown[26]
微軟官方推出的工具,將各種格式的檔案(主要是 Office 檔案)轉成 Markdown 格式。標題是 GitHub 倉庫連結,下面是線上體驗[27]。
3、愛幕[28]
線上字幕編輯器,支援音訊提取和字幕翻譯,免費使用,自己部署需付費。(@zhw2590582[29] 投稿)
4、Beautify Screenshots[30]
截圖美化工具。(@cxhello[31] 投稿)
5、單詞收藏助手[32]
Chrome 外掛 + 微信小程式,在網頁上收藏單詞,建立自己的詞庫,然後透過小程式加強記憶。(@yuuk[33] 投稿)
6、Free Open Graph Image Generator[34]
根據模版製作“網頁分享圖”(open graph)的線上工具。(@javayhu[35] 投稿)
7、Kyanos[36]
一個命令列的網路流量採集和分析工具,具有較強的資料過濾和分析能力。(@hengyoush[37] 投稿)
8、線上 Excel 協同編輯器[38]
一個開源的類 Excel 電子表格網頁應用,支援多人協同編輯。(@nusr[39] 投稿)
9、紅楓雲盤[40](maple-file)
一個多協議雲端檔案儲存的客戶端,支援安卓和 macOS,基於 Flutter + Go 開發。(@honmaple[41] 投稿)
10、GitHub Cards[42]
將 GitHub 使用者個人資料轉換成卡片圖。(@iAmCorey[43] 投稿)
AI 相關
1、GCOP[44]
基於 AI 的 Git 提交訊息生成和工作流程最佳化工具。(@Undertone0809[45] 投稿)
2、github-assistant[46]
該網站可以對 GitHub 程式碼庫提問,由 AI 來回答,比如“過去30天誰的提交次數最多”。
3、Liubai[47]
開源的微信機器人,在微信裡面同時呼叫三個 AI 模型,完成各種任務。(@yenche123[48] 投稿)
4、AI OCR[49]
線上免費 AI OCR(圖片文字識別)工具,所使用的前端程式碼和 AI 提示詞見這裡[50],靈感來自 llama-ocr[51]。(@ringcrl[52] 投稿)
5、Smart Alt Text Generator Generator[53]
上傳圖片,生成 SEO 友好的 alt 描述,支援多種語言。(@wang1309[54] 投稿)
6、AI 調色盤生成器[55]
該網站可以根據輸入的關鍵詞,生成對應的色彩組合。
資源
1、WebSpy.Site[56]
網站流量分析平臺,根據域名查詢網站流量情況。(@wincatcher[57] 投稿)
2、PNGFree.ai[58]
免費的百萬級 PNG 圖片庫。(@shawnlee000[59] 投稿)
圖片
1、無頭雞[60]
1945年,一個美國科羅拉多州的農民殺雞時,砍掉了一隻五個半月大的雞的大部分頭部。
但是沒有砍到頸靜脈,並且一隻耳朵和大部分腦幹完好無損。因此,這隻雞雖然沒有腦袋了,仍然可以保持平衡並笨拙地行走。
農民發現這隻雞沒有死,就決定繼續養它,用滴管給它餵食。
後來,這隻雞被巡迴展出,門票是25美分,每月為主人帶來4,500美元收入。
1947年3月,它死於巡迴展出途中。
2、Windows 3.1 時鐘[61]
市場上出現了 Windows 3.1 時鐘,鐘面就是 Windows 3.1 的桌面,看上去很有懷舊感。
注意,上圖的鐘面不是液晶屏,而是印刷上去的。它是石英鐘,使用一節五號電池。
文摘
1、長期軟體開發[62]
有些領域的軟體會持續執行幾十年,比如發電廠、起搏器、飛機、橋樑、重型機械的軟體。它們可能幾年都不會改動,然後推出一個新的大版本。
如果一個軟體的開發週期長達幾十年,需要長期維護,那麼最好做到下面幾點。
(1)儘量減少依賴。
軟體的依賴項越多,長期越難以維護。依賴包括開發時依賴和執行時依賴,都是越少越好。
現在,很多軟體在執行時會呼叫雲服務,這也不利於長期維護。
(2)完備的測試用例。
測試對於重構、刪除/新增功能,會提供極大的幫助。當你中斷3年後,重新開始開發,測試也會讓你快速瞭解系統。
(3)減少複雜性。
複雜性是軟體開發的頭號敵人,會讓最好的程式設計師和團隊都鎩羽而歸。
由於熵增定律和人類行為,除非你有意識地遏制,否則複雜性總是會增加。
因此,你需要養成嚴格的開發習慣:儘早和頻繁地重構,刪除不必要的或重複的程式碼,花時間簡化。
(4)編寫簡單無趣的程式碼。
程式碼越簡單越好,重點是程式碼的執行邏輯要顯而易見。你永遠不會後悔編寫了簡單的程式碼。
那些看上去很聰明、很高深的程式碼,會讓後期的除錯和理解變得複雜。特別注意那些高效能程式碼,只有當你正確理解它們時,它們才有效。
另外,那些眼下時髦、被熱炒的明星技術,如果沒有得到充分驗證,也需要規避。
你最好只使用至少有10年曆史的可靠技術。有一條規則是,某項技術的壽命與它們當前的年齡成正比,即存在越久的東西越可能繼續存在。
(5)日誌、遙測和文件
如果軟體不是持續更新,開發者的注意力就會轉到其他地方,不會立即跟進,所以需要有日誌和遙測,能把執行過程記錄下來。
文件則可以幫助我們理解幾年前、甚至十幾年前,編寫原始程式碼時的想法。可能的話,記錄所有事物,不僅僅是程式碼,還有理念、想法和為什麼。
(6)團隊
團隊人員變化是很常見的。在許多地方,在一個團隊呆三年,就已經很久了。雖然你可以用良好的文件和出色的測試,來抵消這種人員變化,但這很困難。
軟體長壽的最簡單辦法之一,就是讓開發成員長期穩定,保持工作十年。這意味著,你必須給你的程式設計師提供良好待遇,否則人們會離開。
在某些地方,軟體是外包公司或諮詢顧問寫的,他們將程式碼丟到你的系統中後離開。對於長期執行的軟體,這是非常糟糕的安排。
(7)開源
讓你的程式碼暴露在外界的眼光,是保持程式碼可靠的好方法。一個有趣的事實是,只有質量良好的程式碼,人們才願意對外分享,也就是說,如果不開源,人們會願意在組織內部接受質量更差的程式碼。
開原始碼有更高的標準、更多的測試,這是讓程式碼不過時的絕佳機制。
言論
1、
銀行的 API 特別難用,設計得也很奇怪。我在為銀行工作時,發現了原因。
API 不是銀行通訊的方式,檔案才是。銀行執行的指令,不是透過我們習慣的 API 傳送,而是透過檔案接收。
— 《為什麼軟體工程師與銀行整合如此痛苦?》[63]
2、
美國有很多問題,絕非理想的社會,但是第三世界國家的很多人,尤其是低收入人群,儘管對美國的真實情況一無所知,依然非常向往。
在他們心目中,美國有財富、空間、自由、人性化管理等等。這不是真實的美國,而是美國在他們心目中的投影,他們嚮往的其實是自己想象中的生活方式。
這是美國的一個很大的優勢,儘管自身的諸多問題,依然能夠對其他國家的人民產生吸引力。
— 《美國比歐洲好嗎?》[64]
3、
產品經理的職責就是三件事:(1)瞭解使用者需求;(2)提出解決方案;(3)安排任務執行。
— 《產品經理的 AI》[65]
4、
一個生物學家說過:“每個細菌的夢想都是變成兩個。” 這是生活的基本真理:你經歷的一切只是使自己更加重要的一種手段。
— Sean Carroll[66],進化生物學家
5、
我喜歡科學的一點是,無論你喜不喜歡,它都會讓你相信。
— 肖恩·卡羅爾[67],物理學家
往年回顧
(完)
References
[1]
開源:
https://github.com/ruanyf/weekly
[2]
投稿:
https://github.com/ruanyf/weekly/issues
[3]
《誰在招人》:
https://github.com/ruanyf/weekly/issues/5610
[4]
郵件聯絡:
mailto:[email protected]
[5]
mailto:[email protected]
[6]
via:
https://k.sina.cn/article_2645833223_p9db4360702701st94.html
[7]
被人擊殺:
https://finance.sina.com.cn/stock/usstock/c/2024-12-11/doc-inczawih7483083.shtml
[8]
一個作家:
https://www.gurwinder.blog/p/the-riddle-of-luigi-mangione
[9]
《你可能是一個 NPC》:
https://www.gurwinder.blog/p/why-you-are-probably-an-npc
[10]
週刊:
https://www.ruanyifeng.com/blog/2024/12/weekly-issue-329.html
[11]
點選這裡:
http://zjsms.com/iUNhdBEk/
[12]
觀鳥神器:
https://www.newsweek.com/woman-creates-wearable-contraption-watch-birds-close-1998391
[13]
自豪版本規範:
https://mastodon.online/@nikitonsky/113691789641950263
[14]
能量收集電子賀卡:
https://www.keacher.com/xmas24/
[15]
糖印表機:
https://candyfab.org
[16]
我的幾何人生:
http://paper.people.com.cn/rmrb/pc/content/202412/21/content_30047414.html
[17]
程式設計十年的感悟:
https://ramsayleung.github.io/zh/post/2024/程式設計十年的感悟/
[18]
@ramsayleung:
https://github.com/ruanyf/weekly/issues/5765
[19]
我給部落格新增 dark mode:
https://taxodium.ink/setup-blog-color-scheme.html
[20]
@Spike-Leung:
https://github.com/ruanyf/weekly/issues/5766
[21]
七個最佳的生產力 Docker 映象:
https://www.xda-developers.com/best-docker-containers-productivity/
[22]
不可變 Linux 發行版:
https://linuxblog.io/immutable-linux-distros-are-they-right-for-you-take-the-test/
[23]
macOS 命令列內建的工具程式:
https://weiyen.net/articles/useful-macos-cmd-line-utilities
[24]
YunoHost:
https://yunohost.org
[25]
介紹文章:
https://www.xda-developers.com/yunohost-guide/
[26]
MarkItDown:
https://github.com/microsoft/markitdown
[27]
線上體驗:
https://markitdown.pro
[28]
愛幕:
https://aimu.app
[29]
@zhw2590582:
https://github.com/ruanyf/weekly/issues/5759
[30]
Beautify Screenshots:
https://postspark.app
[31]
@cxhello:
https://github.com/ruanyf/weekly/issues/5752
[32]
單詞收藏助手:
https://chromewebstore.google.com/detail/單詞收藏助手-劃詞翻譯-收藏單詞/hlchmmedadpbeefeikleobfgjdieclho
[33]
@yuuk:
https://github.com/ruanyf/weekly/issues/5744
[34]
Free Open Graph Image Generator:
https://og.indiehub.best
[35]
@javayhu:
https://github.com/ruanyf/weekly/issues/5771
[36]
Kyanos:
https://github.com/hengyoush/kyanos/blob/main/README_CN.md
[37]
@hengyoush:
https://github.com/ruanyf/weekly/issues/5773
[38]
線上 Excel 協同編輯器:
https://github.com/nusr/excel
[39]
@nusr:
https://github.com/ruanyf/weekly/issues/5775
[40]
紅楓雲盤:
https://github.com/honmaple/maple-file
[41]
@honmaple:
https://github.com/ruanyf/weekly/issues/5781
[42]
GitHub Cards:
https://github.cards
[43]
@iAmCorey:
https://github.com/ruanyf/weekly/issues/5750
[44]
GCOP:
https://github.com/Undertone0809/gcop
[45]
@Undertone0809:
https://github.com/ruanyf/weekly/issues/5754
[46]
github-assistant:
https://github-assistant.com
[47]
Liubai:
https://github.com/yenche123/liubai
[48]
@yenche123:
https://github.com/ruanyf/weekly/issues/5761
[49]
AI OCR:
https://functions-ocr.edgeone.app
[50]
這裡:
https://github.com/TencentEdgeOne/pages-templates/blob/main/examples/functions-ocr/functions/ocr/index.js
[51]
llama-ocr:
https://github.com/Nutlope/llama-ocr
[52]
@ringcrl:
https://github.com/ruanyf/weekly/issues/5769
[53]
Smart Alt Text Generator Generator:
https://ai-alttext.com/
[54]
@wang1309:
https://github.com/ruanyf/weekly/issues/5762
[55]
AI 調色盤生成器:
https://colorify.rocks
[56]
WebSpy.Site:
https://webspy.site
[57]
@wincatcher:
https://github.com/ruanyf/weekly/issues/5757
[58]
PNGFree.ai:
https://pngfree.ai
[59]
@shawnlee000:
https://github.com/ruanyf/weekly/issues/5770
[60]
無頭雞:
https://en.wikipedia.org/wiki/Mike_the_Headless_Chicken
[61]
Windows 3.1 時鐘:
https://rmcretro.store/products/windows-3-1-style-clock
[62]
長期軟體開發:
https://berthub.eu/articles/posts/on-long-term-software-development/
[63]
《為什麼軟體工程師與銀行整合如此痛苦?》:
https://blog.svapnil.com/p/where-bank-apis-fall-short
[64]
《美國比歐洲好嗎?》:
https://walkingtheworld.substack.com/p/us-is-better-than-europe
[65]
《產品經理的 AI》:
https://productme.org/posts/ai-for-product-managers
[66]
Sean Carroll:
https://nautil.us/the-sean-carrolls-explain-the-universe-1171296/
[67]
肖恩·卡羅爾:
https://nautil.us/the-sean-carrolls-explain-the-universe-1171296/