本雜誌開源,歡迎投稿。另有《誰在招人》服務,釋出程式設計師招聘資訊。合作請郵件聯絡([email protected])。
封面圖
南京城北永珍匯商場,與紅山動物園合作,架設了一個38米高的長頸鹿。(via)
你可能是一個 NPC
最近,美國發生了一起轟動的大案,一家醫療保險公司的 CEO 當街被人擊殺。
嫌疑人很快抓到了,是一個26歲的青年,名為路易吉·曼吉奧內(Luigi Mangione)。
媒體紛紛挖掘這個青年的背景,發現他是一個作家的粉絲。
就在幾個月前,他向作家打賞200美元,並進行了多次視訊通話。
媒體就去採訪作家,詢問兩人在通話中說了什麼。
作家詳細地回憶了他們的通話內容。其中有一段,我覺得很有意思,分享給大家。
曼吉奧內對作家說,他很喜歡作家的一篇文章《你可能是一個 NPC》。
NPC 指的是電子遊戲的"非玩家角色",比如路人、門衛、警察等等,用來模擬現實環境,由程式控制,一舉一動都是設計好的,沒有自主意識。
作家的那篇文章提出,人類越來越像機器人,彷佛 NPC 那樣,行為邏輯都是預設好的。
曼吉奧內高度認同這個觀點。他前不久去日本旅行,認為日本充滿了 NPC。他說了一件親身見聞。
一天早上,他在街上看到一名男子癲癇發作,倒在地上。他跑到最近的警察局求助,警察就跟著他去現場。
路上遇到了紅燈,警察立刻就停下來,堅持要等綠燈再過馬路,即使那時馬路上根本沒有汽車。
曼吉奧內很不理解,病人正在發病,神智不清,可能有生命危險,警察卻堅持遵守交通規則。救人難道不是更重要的事情嗎?
他由此認為,日本人"缺乏自由意志",規則怎麼說就怎麼做,不會自主行事,就是活著的 NPC。
他還觀察到,日本存在一種"隱蔽族"(hikikomori),他們不出門,一個人整天待在臥室裡,用電子遊戲、上網、影片來消磨時間。
曼吉奧內認為,這些人也是 NPC,他們失去了對生活的控制,無法參與社會生活,就選擇放棄,等於喪失了生活的自主權。
他觀察到,這種現象不僅存在於日本,正在向全世界蔓延,世界各地越來越多的人正在成為 NPC。他們要麼無法自主的生活,要麼無法選擇自己的行為,而是根據規則和指令來行事,就像被程式控制一樣。
科技公司推動和加劇了這種趨勢,網際網路使得人們越來越分心,把時間都花在網上膚淺的娛樂,不再集中注意力於自己的生活,把生活都交給程式,無法形成自主的意識和行為。
以上就是曼吉奧內的觀點,我認為是很真實的觀察。一方面,人工智慧使得機器人越來越像人類,另一方面,人類的自主性在消退,越來越像機器人。現實與遊戲、人類與機器人,越來越難以區分了。
AI 程式設計挑戰賽,即將報名截止
這幾期的週刊一直在介紹,正在舉行的全國 AI 程式設計挑戰賽。
它的報名馬上就要截止了。
(1)應用賽道的作品提交,到1月5日截止。如果你有好的創意,能用 AI 做出可執行的作品,就可以報名參加。
(2)如果你善於刷題,可以報名參加演算法賽道,用 AI 來解演算法題。
我是鼓勵大家參加。大賽有豐厚獎品,設了20萬的獎金池,獲獎者還有機會拿到崗位 offer。就算沒得獎,也是一個很好的鍛鍊,能夠動手程式設計、熟悉 AI。
大賽由豆包 MarsCode 和稀土掘金技術社群共同主辦。詳細介紹和報名方法,請看前兩期的週刊,或者點選這裡。
科技動態
1、觀鳥神器
一個美國女子發明了一種觀鳥神器,在網上引起了轟動。
她在墨鏡上掛了一個托盤,上面灑了鳥食。小鳥就會停在上面,完全沒有意識到,就停在她的鼻子前面。
這種觀鳥神器,簡單又體驗獨特,怎麼以前沒人想到。
2、自豪版本規範
一個開發者提出自豪版本規範(pride versioning),對軟體版本進行編號。
如果你對新功能感到非常自豪,就發一個大版本(遞增第一個版本號),否則就發一個小版本(遞增第二個版本號)。
如果你對某個地方感到尷尬和羞恥,就發一個補丁版本進行改正(遞增第三個版本號)。
3、能量收集電子賀卡
一位國外的程式設計師,製作了一張可以收集能量的電子賀卡。
這張賀卡就是信用卡大小,上面有電路,但是不帶電池,透過收集周圍環境的能量,LED 燈會閃爍。
最簡單的方式,就是放在燈光下,它會收集光能。
你也可以用 USB 供電。
它甚至可以放在路由器或微波爐旁邊,吸收 WIFI 和微波的能量。
4、糖印表機
你想過用糖來 3D 列印嗎?有人就真的做出了一臺糖印表機。
它用熱風槍,將白砂糖吹塑成型,列印出各種形狀。
下面是它列印的一顆釘子。
它可以列印出很複雜的形狀。
這些東西都可以食用,因此這種機器在食品行業應該很有用,在夜市可能也會很轟動。
文章
1、我的幾何人生(中文)
著名華人數學家丘成桐,回顧自己的成長道路。
2、程式設計十年的感悟(中文)
"程式碼寫多了才意識到,程式設計師的競爭力並不是寫程式碼,也並不是哪門語言或者框架, 其核心競爭力是透過技術解決問題的能力"。(@ramsayleung 投稿)
3、我給部落格新增 dark mode(中文)
作者介紹他為部落格新增 dark mode 的處理方法和注意事項。(@Spike-Leung 投稿)
4、七個最佳的生產力 Docker 映象(英文)
本文介紹七個可以自己用 Docker 映象架設的生產力服務。
5、不可變 Linux 發行版(英文)
越來越多的開發者開始使用不可變的 Linux 發行版(immutable Linux distro),即系統檔案在執行期間不可更改。這樣會讓系統更穩定,也更容易遷移和回滾。
6、macOS 命令列內建的工具程式(英文)
本文介紹 macOS 內建的一些命令列工具程式,比如 security、open、pbcopy、pbpaste 等。
工具
1、YunoHost
一款虛擬機器軟體,內建了常見的雲服務,可以一鍵啟用,省去了安裝雲服務的麻煩,參見介紹文章。
2、MarkItDown
微軟官方推出的工具,將各種格式的檔案(主要是 Office 檔案)轉成 Markdown 格式。標題是 GitHub 倉庫連結,下面是線上體驗。
3、愛幕
線上字幕編輯器,支援音訊提取和字幕翻譯,免費使用,自己部署需付費。(@zhw2590582 投稿)
4、Beautify Screenshots
截圖美化工具。(@cxhello 投稿)
5、單詞收藏助手
Chrome 外掛 + 微信小程式,在網頁上收藏單詞,建立自己的詞庫,然後透過小程式加強記憶。(@yuuk 投稿)
6、Free Open Graph Image Generator
根據模版製作"網頁分享圖"(open graph)的線上工具。(@javayhu 投稿)
7、Kyanos
一個命令列的網路流量採集和分析工具,具有較強的資料過濾和分析能力。(@hengyoush 投稿)
8、線上 Excel 協同編輯器
一個開源的類 Excel 電子表格網頁應用,支援多人協同編輯。(@nusr 投稿)
9、紅楓雲盤(maple-file)
一個多協議雲端檔案儲存的客戶端,支援安卓和 macOS,基於 Flutter + Go 開發。(@honmaple 投稿)
10、GitHub Cards
將 GitHub 使用者個人資料轉換成卡片圖。(@iAmCorey 投稿)
AI 相關
1、GCOP
基於 AI 的 Git 提交訊息生成和工作流程最佳化工具。(@Undertone0809 投稿)
2、github-assistant
該網站可以對 GitHub 程式碼庫提問,由 AI 來回答,比如"過去30天誰的提交次數最多"。
3、Liubai
開源的微信機器人,在微信裡面同時呼叫三個 AI 模型,完成各種任務。(@yenche123 投稿)
4、AI OCR
線上免費 AI OCR(圖片文字識別)工具,所使用的前端程式碼和 AI 提示詞見這裡,靈感來自 llama-ocr。(@ringcrl 投稿)
5、Smart Alt Text Generator Generator
上傳圖片,生成 SEO 友好的 alt 描述,支援多種語言。(@wang1309 投稿)
6、AI 調色盤生成器
該網站可以根據輸入的關鍵詞,生成對應的色彩組合。
資源
1、WebSpy.Site
網站流量分析平臺,根據域名查詢網站流量情況。(@wincatcher 投稿)
2、PNGFree.ai
免費的百萬級 PNG 圖片庫。(@shawnlee000 投稿)
圖片
1、無頭雞
1945年,一個美國科羅拉多州的農民殺雞時,砍掉了一隻五個半月大的雞的大部分頭部。
但是沒有砍到頸靜脈,並且一隻耳朵和大部分腦幹完好無損。因此,這隻雞雖然沒有腦袋了,仍然可以保持平衡並笨拙地行走。
農民發現這隻雞沒有死,就決定繼續養它,用滴管給它餵食。
後來,這隻雞被巡迴展出,門票是25美分,每月為主人帶來4,500美元收入。
1947年3月,它死於巡迴展出途中。
2、Windows 3.1 時鐘
市場上出現了 Windows 3.1 時鐘,鐘面就是 Windows 3.1 的桌面,看上去很有懷舊感。
注意,上圖的鐘面不是液晶屏,而是印刷上去的。它是石英鐘,使用一節五號電池。
文摘
1、長期軟體開發
有些領域的軟體會持續執行幾十年,比如發電廠、起搏器、飛機、橋樑、重型機械的軟體。它們可能幾年都不會改動,然後推出一個新的大版本。
如果一個軟體的開發週期長達幾十年,需要長期維護,那麼最好做到下面幾點。
(1)儘量減少依賴。
軟體的依賴項越多,長期越難以維護。依賴包括開發時依賴和執行時依賴,都是越少越好。
現在,很多軟體在執行時會呼叫雲服務,這也不利於長期維護。
(2)完備的測試用例。
測試對於重構、刪除/新增功能,會提供極大的幫助。當你中斷3年後,重新開始開發,測試也會讓你快速瞭解系統。
(3)減少複雜性。
複雜性是軟體開發的頭號敵人,會讓最好的程式設計師和團隊都鎩羽而歸。
由於熵增定律和人類行為,除非你有意識地遏制,否則複雜性總是會增加。
因此,你需要養成嚴格的開發習慣:儘早和頻繁地重構,刪除不必要的或重複的程式碼,花時間簡化。
(4)編寫簡單無趣的程式碼。
程式碼越簡單越好,重點是程式碼的執行邏輯要顯而易見。你永遠不會後悔編寫了簡單的程式碼。
那些看上去很聰明、很高深的程式碼,會讓後期的除錯和理解變得複雜。特別注意那些高效能程式碼,只有當你正確理解它們時,它們才有效。
另外,那些眼下時髦、被熱炒的明星技術,如果沒有得到充分驗證,也需要規避。
你最好只使用至少有10年曆史的可靠技術。有一條規則是,某項技術的壽命與它們當前的年齡成正比,即存在越久的東西越可能繼續存在。
(5)日誌、遙測和文件
如果軟體不是持續更新,開發者的注意力就會轉到其他地方,不會立即跟進,所以需要有日誌和遙測,能把執行過程記錄下來。
文件則可以幫助我們理解幾年前、甚至十幾年前,編寫原始程式碼時的想法。可能的話,記錄所有事物,不僅僅是程式碼,還有理念、想法和為什麼。
(6)團隊
團隊人員變化是很常見的。在許多地方,在一個團隊呆三年,就已經很久了。雖然你可以用良好的文件和出色的測試,來抵消這種人員變化,但這很困難。
軟體長壽的最簡單辦法之一,就是讓開發成員長期穩定,保持工作十年。這意味著,你必須給你的程式設計師提供良好待遇,否則人們會離開。
在某些地方,軟體是外包公司或諮詢顧問寫的,他們將程式碼丟到你的系統中後離開。對於長期執行的軟體,這是非常糟糕的安排。
(7)開源
讓你的程式碼暴露在外界的眼光,是保持程式碼可靠的好方法。一個有趣的事實是,只有質量良好的程式碼,人們才願意對外分享,也就是說,如果不開源,人們會願意在組織內部接受質量更差的程式碼。
開原始碼有更高的標準、更多的測試,這是讓程式碼不過時的絕佳機制。
言論
1、
銀行的 API 特別難用,設計得也很奇怪。我在為銀行工作時,發現了原因。
API 不是銀行通訊的方式,檔案才是。銀行執行的指令,不是透過我們習慣的 API 傳送,而是透過檔案接收。
-- 《為什麼軟體工程師與銀行整合如此痛苦?》
2、
美國有很多問題,絕非理想的社會,但是第三世界國家的很多人,尤其是低收入人群,儘管對美國的真實情況一無所知,依然非常向往。
在他們心目中,美國有財富、空間、自由、人性化管理等等。這不是真實的美國,而是美國在他們心目中的投影,他們嚮往的其實是自己想象中的生活方式。
這是美國的一個很大的優勢,儘管自身的諸多問題,依然能夠對其他國家的人民產生吸引力。
-- 《美國比歐洲好嗎?》
3、
產品經理的職責就是三件事:(1)瞭解使用者需求;(2)提出解決方案;(3)安排任務執行。
-- 《產品經理的 AI》
4、
一個生物學家說過:"每個細菌的夢想都是變成兩個。" 這是生活的基本真理:你經歷的一切只是使自己更加重要的一種手段。
-- Sean Carroll,進化生物學家
5、
我喜歡科學的一點是,無論你喜不喜歡,它都會讓你相信。
-- 肖恩·卡羅爾,物理學家
往年回顧
YouTube 有多少個影片?(2023 #284)
AI 聊天有多強?(2022 #234)
政府的儲存需求有多大?(2021 #184)
未來的遊戲業比現在大100倍(2020 #134)
(完)