慣性聚合 高效追蹤和閱讀你感興趣的部落格、新聞、科技資訊
閱讀原文 在慣性聚合中打開

推薦訂閱源

博客园 - 司徒正美
V
V2EX
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
月光博客
月光博客
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
V
Visual Studio Blog
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI

阮一峰的网络日志

科技爱好者周刊(第 396 期):互联网通信的替代方案 科技爱好者周刊(第 396 期):互联网通信的替代方案 - 阮一峰的网络日志 科技爱好者周刊(第 395 期):软件开发的第三种方式 科技爱好者周刊(第 395 期):软件开发的第三种方式 - 阮一峰的网络日志 科技爱好者周刊(第 393 期):脑腐状态 科技爱好者周刊(第 392 期):axios 投毒与好莱坞式骗术 科技爱好者周刊(第 391 期):AI 的贫富分化 科技爱好者周刊(第 390 期):没有语料,大模型就是智障 套壳中国大模型撑起500亿美元估值?扒一扒 Cursor 的"套壳"疑云 科技爱好者周刊(第 389 期):未来如何招聘程序员 科技爱好者周刊(第 388 期):测试是新的护城河 零安装的"云养虾":ArkClaw 使用指南 科技爱好者周刊(第 387 期):你是领先的 科技爱好者周刊(第 386 期):当外卖员接入 AI 字节全家桶 Seed 2.0 + TRAE 玩转 Skill 科技爱好者周刊(第 385 期):马斯克害怕中国车企吗? 智谱旗舰 GLM-5 实测:对比 Opus 4.6 和 GPT-5.3-Codex 科技爱好者周刊(第 384 期):为什么软件股下跌 科技爱好者周刊(第 383 期):你是第几级 AI 编程 Kimi 的一体化,Manus 的分层 科技爱好者周刊(第 382 期):独立软件的黄昏 AI native Workspace 也许是智能体的下一阶段 科技爱好者周刊(第 381 期):中国 AI 大模型领导者在想什么 科技爱好者周刊(第 380 期):为什么人们拥抱"不对称收益" 科技爱好者周刊(第 379 期):《硅谷钢铁侠》摘录 我如何用 AI 处理历史遗留代码:MiniMax M2.1 升级体验 科技爱好者周刊(第 378 期):预测是新的互联网热点 科技爱好者周刊(第 377 期):14万美元的贫困线 科技爱好者周刊(第 376 期):太空数据中心的争议 科技爱好者周刊(第 375 期):一扇门的 Bug 终于有人做了 Subagent,TRAE 国内版 SOLO 模式来了 科技爱好者周刊(第 374 期):6GHz 的问题 VS Code 使用国产大模型 MiniMax M2 教程 科技爱好者周刊(第 373 期):数据模型是新产品的核心 国产大模型接入 Claude Code 教程:以 Doubao-Seed-Code 为例 科技爱好者周刊(第 372 期):软件界面如何设计 大模型比拼:MiniMax M2 vs GLM 4.6 vs Claude Sonnet 4.5 科技爱好者周刊(第 371 期):一个乐观主义者的专访 科技爱好者周刊(第 370 期):正确的代码高亮 错误处理:异常好于状态码 科技爱好者周刊(第 369 期):Tim 与罗永浩的对谈 科技爱好者周刊(第 368 期):不要这样管理软件团队 一天之内,智谱和 Anthropic 都发了最强编程模型 科技爱好者周刊(第 367 期):Nano Banana 的几个妙用 科技爱好者周刊(第 366 期):旧金山疯狂的 AI 广告 科技爱好者周刊(第 365 期):流量变现正在崩塌 科技爱好者周刊(第 364 期):最难还原的魔方 科技爱好者周刊(第 363 期):最好懂的神经网络解释 科技爱好者周刊(第 362 期):GitHub 工程师谈系统设计 科技爱好者周刊(第 361 期):暗网 Tor 安全吗?
科技愛好者週刊(第 210 期):為什麼軟件變得複雜
阮一峰 · 2022-06-17 · via 阮一峰的网络日志

這裡記錄每週值得分享的科技內容,週五發佈。

本雜誌開源(GitHub: ruanyf/weekly),歡迎提交 issue,投稿或推薦科技內容。

週刊討論區的帖子《誰在招人?》,提供大量程序員就業信息,歡迎訪問或發佈工作/實習崗位。

封面圖

中國科學家繪製的世界首幅、最詳細的1:250萬月球全月地質圖發佈,統計出月球包含12341個撞擊坑、17種岩石、14類地質構造。(via

本週話題:為什麼軟件變得複雜

我一直認為,軟件開發的最大關注點,就是避免複雜性。軟件設計越簡單越好,太多的程序員以構建複雜的解決方案為榮。

但是,本週有一篇文章讓我反思,我的想法是不現實的:軟件肯定會越變越複雜。

(一)

這篇文章的作者是 Saleforce 公司的前端工程師諾拉·勞森(Nolan Lawson),題目就叫做《複雜軟件的崩潰》(下圖)。

大家可能知道,Salesforce 是一家世界級軟件公司,專門開發企業軟件,以產品複雜而聞名。

所以,這件事情很諷刺。一家出產複雜軟件的公司,自家的著名程序員公開說,複雜軟件會崩潰。

當然,他在文章裡面沒提 Salesforce 的名字,但是怎麼讀都像在寫親身經歷。下面摘錄一段他的原文和配圖,大家品味一下。

"任何在科技行業工作足夠長的人,尤其是在大公司工作的人,都曾見過下面的場景。

有一個遺留系統,很大很複雜,沒有人完全理解它是如何工作的。

架構師被要求"修復"系統,他們找來一塊大的白板,把這個大系統分解成很多方框和箭頭。對於遇到的問題,他們的解決方案就是......添加更多方框和箭頭。沒有任何一個可以從系統中消去,每個人都只是加上自己的那部分。

這一段是不是寫得很形象,就像是日常場景的描述。

根據他的文章,我整理了一下,Saleforce 內部的情況大概是這樣的。

  1. 客戶的需求非常複雜。為了滿足這些需求,大型軟件不可避免變得複雜。
  2. 軟件公司的管理者真正在意的不是系統的複雜性,而是利潤。只要軟件能賺錢,高層並不在意軟件變得複雜。
  3. 軟件複雜性都落到少數架構師和高級程序員的頭上。每個人加上自己的解決方案(方框和箭頭),讓軟件越來越複雜,然後不可避免地,他們就會在一段時間後離開公司。
  4. 複雜系統最終變得難以理解和維護,唯一的解決方法就是放棄舊系統,從頭開始寫一個新系統。

所以,諾拉·勞森的結論很悲觀:怎麼解決軟件的複雜性?解決不了。最後就是你走人,公司把軟件推倒重來。

這就是一個大廠高級程序員的真實想法。國內的情況其實差不多,上面的描述完全適用於 BAT 內部的複雜系統。

(二)

諾拉·勞森還說了一個觀點。大家通常認為,複雜系統往往會在經濟繁榮的時候崩潰,因為業務太多,支撐不過來,但他認為不是這樣的,系統崩潰往往發生在經濟收縮期。

經濟繁榮時期,軟件公司會大量僱傭新員工,投入更多的財力和人力,支撐複雜系統。等到經濟收縮期,公司開始減少投入、凍結招聘或裁員,複雜系統可能就會在這個時候出問題,變得難以維護。

現在就是經濟收縮期,那麼接下來,會不會就是軟件故障的高發期,我們將看到很多複雜系統的崩潰?

前端高頻面試題(2022版)

這兩年,客觀地說,前端開發的熱度有所下降。主要原因是前端技術逐步穩定,以及智能手機的普及度見頂了。

但是,前端依然是 IT 行業中最活躍的分支。一年一度的 GitHub 調查中,JavaScript 多年來一直穩居第一,TypeScript 更是快速上升到今年的第四位,僅次於 Python 和 Java。

技術穩定帶來的一個後果,就是新框架、新工具少了,大家更關注已有框架/工具的改進和功能增加。

大廠的前端團隊也轉向了精細化探索,注重如何做得更細、更好,垂直化的技術領域(比如可視化、工程化等)得到了更多的關注。企業的用人要求也越來越高,從能夠上手工作就可以要人,變成了要求深入某個領域。

總的來說,現在的前端開發處在下圖右側的那個橢圓,比前一個階段的難度上升了

如果你已經有一定的前端開發基礎,近期打算應聘前端崗位,這裡有一份有用的資料,可以幫助大家準備面試。

這份資料就是 《前端大廠的高頻面試題(2022版)》,一共有174頁,收集了最新的面試題,由國內著名的程序員培訓平臺"極客時間"聯繫國內大廠製作。

所有的題目都分門別類,由淺入深排列,每道題都附有答案詳解,方便大家知識梳理、準備面試。

此外,還會額外贈送 《三位資深程序員的面試跳槽經驗分享》,分享技術之外的跳槽準備、簡歷準備、面試應對......這些值得借鑑的前人經驗。

微信掃描上方二維碼,就可以 免費領取 這份前端面試資料。添加客服後,請耐心等待,後臺是手動通過的。

最後提醒一下,這份資料不適合剛剛學習前端的學生,更適合有前端開發基礎和編程經驗的從業人員。

科技動態

1、虛擬接吻

卡內基梅隆大學開發了一種新技術,讓 VR 頭盔的佩戴者可以感受到虛擬接吻。具體做法是,頭盔向嘴唇發射超聲波,裡面包含了一些微小顆粒,讓嘴唇、牙齒甚至舌頭產生觸感。

上圖可以看到,VR 頭盔的下方安裝了一排超聲波發生器,對準紅點的位置發射。科學家開玩笑,可以用它開發"接吻機"。

除了產生嘴唇的觸感,這種技術還可以在遊戲中,讓用戶感受到風拂過臉部、蜘蛛網碰到臉,甚至食物和飲料進入嘴裡的虛擬感受。

上圖是一隻巨大的虛擬蜘蛛將大量毒藥傾瀉到用戶身上,用戶可以感覺到毒藥濺到嘴唇上。

2、LED 籃球場

5月30日,國際籃聯正式宣佈,允許籃球世界盃等大賽啟用 LED 籃球場。

傳統的籃球場都是木地板,木頭具有彈性,可以吸收震動,保護球員。現在,最新的 LED 玻璃也已經能夠提供足夠的彈性。

LED 球場有很多好處,省去了劃線的麻煩,能夠快速切換成籃球場、手球場、排球場、羽毛球場。

並且,它自身能發光,可以作為顯示屏,實時顯示比賽數據,並且配合球場活動,營造氣氛。在黑暗中,界線依然保持醒目。

3、樹皮字體

五年前,一個丹麥藝術家將字體刻在一棵樹上,想看看隨著樹木的成長,字體會變成什麼樣,也就是大自然會怎樣呈現字體。

下面是字母 a 和 o 在五年中的變化。

這些字體應用到印刷品,就是下面的樣子。

他發現,這些字母主要是橫向成長,變得更寬更粗,高度反而變化不大。這說明,樹木成形後,樹幹高度就基本不再變化了,開始不斷長粗。

4、禁止白熾燈泡

拜登政府宣佈,美國將禁止銷售每瓦產生低於45流明的燈泡。這實際上禁掉了白熾燈泡。

這個決定是為了提高照明的能量效率。一般來說,白熾燈泡每瓦的發光量在10流明左右,LED 燈泡則可以達到每瓦100流明以上。

文章

1、我為什麼與中國遊戲發行商簽約又分手(中文)

這是一篇日本獨立遊戲開發者的文章,被譯成了中文。作者以親身經歷,解釋了目前的獨立遊戲的發行制度和現狀。

2、Intel 4 工藝宣佈(中文)

上週,英特爾公司正式宣佈了 Intel 4 工藝。這是英特爾公司第一次將 EUV 技術用於 CPU 的生產,實現了7納米的製程,開始追趕臺積電。本文介紹該工藝的一些情況。

3、我如何搭建家用 NAS(中文)

本文詳細記錄了作者選購硬件、安裝軟件,搭建一臺 22TB 的家用 NAS (網絡存儲)服務器的過程,可以當作自己架設 NAS 的參考。這裡是中文翻譯,另有英文原文。(@yangchuansheng 投稿)

4、最簡單的任務管理系統(英文)

本文介紹作者自己發明的最簡單任務管理系統,就是把每天的任務寫在卡片上,用一個架子放在眼前,做完一件就劃掉一件。

5、使用 Cloudflare + Backblaze B2 打造一個免費的圖像 CDN(英文)

本文是一篇詳細的教程,教你怎麼把圖片託管在 Backblaze B2 對象存儲,然後連接到 Cloudflare 的 CDN 服務。兩者都有免費額度,對於小網站來說,不用花錢就解決了圖片的存儲和帶寬問題。

6、如何用 iOS 快捷指令防止沉迷?(英文)

作者發現自己在社交媒體上,浪費了大量時間。他想出了一個辦法,製作了一個 iOS 快捷指令(shortcuts),只要一打開社交 App,就會跳出提示"請專心工作"。

7、我的免費攝影軟件工作流(英文)

作者是一個專業的攝影師,完全採用免費軟件處理數碼照片。本文介紹他的解決方案。

8、我在單個服務器上託管幾十個網站(英文)

作者詳細介紹,他如何在一個服務器上託管幾十個網站,大部分是 API 調用。這裡最大的難題還不是把服務架起來,而是如何同時維護和管理它們。

9、如何估算流入加密貨幣的資金(英文)

多少資金流入了加密貨幣市場?這顯然是無法準確計算的,作者想到了一個辦法,可以間接估算。那就是看穩定幣每月增長的發行量,上圖是過去兩年穩定幣每個月的增長百分比。

工具

1、CloudMP3.cc

一個雲服務,可以將 SoundCloud 上面的音頻,轉成 mp3 下載。

2、ToolJet

一個低代碼框架,用來開發內部工具。部署到服務器後,它有一個 Web 界面,通過拖拽,就可以連接各種數據源,生成各種應用或管理面板。

3、i 微信讀書

Chrome 瀏覽器插件,配合網頁版微信讀書使用,支持劃線摘抄句子、劃線生成分享圖片、一鍵導出筆記等功能。(@secreter 投稿)

4、Sogou C++ Workflow

搜狗公司開源的 C++ 服務器引擎,支撐搜狗幾乎所有後端 C++ 在線服務,提供了大量異步服務的功能。(@Barenboim 投稿)

5、FastGit

GitHub 有時在國內不容易打開,這裡有一個服務是 GitHub 的鏡像加速器。提醒一下,如果要登陸 GitHub,使用這種服務會有安全顧慮,大家自己權衡。(@dllen 投稿)

6、Go-Ldap-Admin

一個國產軟件,基於 Go+Vue 實現的 openLDAP 管理後臺,可以作為打通 IM(釘釘、企業微信、飛書)與支持 ldap 認證的應用的橋樑。(@eryajf 投稿)

7、Japa

一個 Node.js 的測試框架,簡單快速,功能也很多,而且可以直接運行測試腳本,不必通過測試框架來運行。

8、@xata.io/screenshot

這個網頁腳本可以生成當前頁面的截圖。

9、GitLens

一個 VSCode 的插件,大大增強了 Git 集成,可以在編輯器裡面執行很多 Git 操作,特別適合多人合作的項目。

Deno 框架

Deno 是 JavaScript 語言的服務器運行環境,跟 Node.js 是競爭關係。

Deno 本身的開發已經接近穩定了,下一步只要有一個好用的框架,就能推廣了。

1、Fresh 框架

上週,基於 Deno 的 Fresh 框架發佈了預覽。

該框架直接使用 TypeScript 腳本,號稱零配置、零構建,頁面由服務端渲染,客戶端不需要 JS 生成內容,也沒有多餘的 JS 腳本,追求小而快,值得關注。

2、Aleph.js

Aleph.js 是另一個基於 Deno 的全棧框架,類似於 Next.js,目前處於早期開發階段,也可以關注。

3、Express

順便提一下,老牌的 Node.js 框架 Express,最近要發佈5.0版了。這是一件大事,因為4.0版是八年前發佈的。這篇文章介紹了5.0版的新特性

可視化作品

1、全球海底光纜

這個網頁提供了一個互動式的地球,上面有全世界海底光纜和骨幹機房的位置。

2、極光

這個網頁構造了一個極地的背景,讓你手繪動態的極光效果。

3、波斯波利斯

波斯波利斯是古代波斯帝國的首都,位於現在的伊朗,已經是一片廢墟了。這個頁面還原了這座雄偉的帝國都城,重建了 3D 街景,讓你在其中漫遊。

圖片

1、鹹海

哈薩克斯坦曾經有一個巨大的湖泊,叫做鹹海,面積68000平方公里,相當於兩個海南島,是世界第四大湖泊。

但是,從1960年代開始,前蘇聯建造了很多灌溉工程,從鹹海大量引水,又沒有補充,導致鹹海快速乾涸,目前已經接近消失了。

1985年的鹹海。

1997年的鹹海。

2014年的鹹海。

2、住宅牆

加拿大有一個小鎮,靠近北極,終年颳著強勁的北風。

為了擋風,當地修建了高50米,長1.3公里的擋風牆,同時這堵牆裡面還是住宅、商業和教育設置,裡面可以住人。

因為有了這堵住宅牆,小鎮居民就擁有了一個無風的、溫暖的小氣候。

文摘

1、如何增加牙膏的銷量

1950年代,一家國外的牙膏公司,向公眾徵求能夠大幅提高銷售額的點子。

幾天之後,有一個人來應徵,聲稱他有辦法讓銷售額快速增長40%,而且實施起來不需要很大成本。他要價10萬美元。

公司管理層猶豫了數週,最後還是同意了給錢。

等到法律手續和付款流程完成後,這個人給出裝有一張小紙條的信封,小紙條上只有四個英文單詞:

"Make The Hole Bigger"

這句話翻譯成中文,就是"讓牙膏開口更大一點"。

此前,管狀牙膏的開口一般是5毫米直徑。稍加計算就可以知道,當直徑從5毫米增加到6毫米時,假設擠出的牙膏長度不變,擠出量會增加44%。

原先顧客用一管牙膏的時間,現在要1.4管牙膏才能滿足需求。看似很小的改變,卻刷新了這家公司的銷售記錄,創造了歷史。

言論

1、

一件事最可怕的時刻,總是在你開始做之前。

-- 斯蒂芬·金

2、

對於那些沒有想象力的人來說,保持常態就是他們的理想。

-- 榮格

3、

IT 行業與傳統制造業有一個重要區別,就是 IT 行業有著嚴重的壟斷。

全世界的智能手機有70億部,比汽車多出5倍(14億輛)。但是,智能手機制造商比汽車製造商少了好幾個數量級。搜索引擎、社交網絡、操作系統都是這樣,幾個巨頭就壟斷了整個市場。

-- Hacker News 讀者

4、

電動汽車雖然售價高,但是每公里的行駛成本低,因此用得越久越划算。這就要求汽車廠商製造耐用的電動汽車。

-- Hacker News 讀者

5、

2021年只有兩種人在寫博客,一種是試圖建立受眾並從中獲利的人,另一種是隻想寫出想法、而沒有任何目標的人。

這兩種人的行為都非常好。選擇做你喜歡的事,堅持下去,它們最終都可以對他人產生價值。

-- 《我從博客中學到的東西》

歷史上的本週

2021年(第 162 期):生活就像《吃豆人》遊戲

2020年(第 111 期):智能電視的誤區

2019年(第 60 期):一本介紹人類起源的學術自傳

2018年(第 9 期):身份證可以植入人體

訂閱

這個週刊每週五發布,同步更新在阮一峰的網絡日誌微信公眾號

微信搜索"阮一峰的網絡日誌"或者掃描二維碼,即可訂閱。

(完)