科技愛好者週刊#329:示意圖利器D2

這裡記錄每週值得分享的科技內容,週五釋出。
本雜誌開源[1],歡迎投稿[2]。另有《誰在招人》[3]服務,釋出程式設計師招聘資訊。合作請郵件聯絡[4][email protected][5])。

封面圖

哈爾濱冰雪大世界即將開園,工人正在松花江上採冰,每天需要開採近萬塊大冰塊。(via[6]

示意圖利器 D2

製作示意圖的工具有很多。
我喜歡使用基於文字程式碼的作圖工具,來繪製線框圖,比如 Mermaid、Plantuml、Graphviz。
它們都能根據程式碼,生成圖片,非常適合放入程式碼倉庫,進行版本管理。
最近,我又發現了一個更易用的同類工具 D2[7],簡答直觀,功能強大,下面介紹給大家。
D2 可以命令列使用,也可以瀏覽器使用。假定你有一個圖片程式碼檔案example.d2,那麼生成圖片的命令如下。
$ d2 example.d2
大部分時候,我都透過瀏覽器使用它。它有一個線上生成器 play.d2lang.com[8](下圖),把程式碼貼進去,按下“compile”按鈕,馬上生成圖片。
想要 A 節點(節點的名稱為 A),直接輸入 A 就可以了。
A
A 只是節點名稱,如果要定製節點的內容,就像下面這樣寫。
A: 甲
接著,新增一個節點。
A: 甲 
B: 乙
把它們連起來。
A: 甲 
B: 乙 
A -> B
連線可以用正箭頭(->)、也可以用反箭頭(<-),甚至雙向箭頭(<->)。如果不需要箭頭,就直接連線(--)。
箭頭上還能新增文字。
A: 甲 
B: 乙 
A -> B: 連線
節點之間可以有多根連線。
A: 甲 
B: 乙 
A -> B: 請求 
A <- B: 響應
節點的連線也可以寫在一行。
甲 -> 丙 <- 乙: 連線
階段一 -> 階段二 -> 階段三 -> 階段四 
階段四 -> 階段一: 反饋
這些語法就夠畫出基本的線框圖了,是不是挺簡單。
D2 可以繪製非常複雜的圖,更多語法參考文件[9]
最後提一下,如果想修改節點形狀,方框改成圓形,就像下面這樣寫。
A: 甲 
A.shape: circle
形狀甚至可以改成一朵雲,表示雲服務。
A: 甲 
A.shape: cloud
線條顏色也可以改。
A: 甲 
A.style.stroke: red

[活動] AI 程式設計挑戰賽

程式設計師同學看過來,全國性的 AI 程式設計大賽[10]來了。
只要你善用 AI 程式設計,在 AI 的幫助之下,做出創新應用,或者快速解出演算法題,就能參賽。
參賽不僅鍛鍊 AI 程式設計能力,還能豐富自己的經歷,如果得獎,就能在簡歷上寫一筆,幫助就業。
(1)比賽總獎池20萬,一等獎的獎金4萬元。學生和非學生分開評獎,獲獎者還有 offer 機會,可以直通終面(包含實習崗與正式崗)。
(2)比賽分為演算法和應用兩個賽道,可以提交自己的創新應用,也可以選擇完成演算法題。
(3)大賽現在已經開始報名。創新應用在12月16日開放作品提交,演算法比賽現在可以參加線上常規賽,決賽是線下舉行的駭客馬拉松。
(4)兩個賽道的決賽階段,都要求使用豆包 MarsCode 的 AI 程式設計能力,作為輔助工具。
本次 AI 程式設計巔峰挑戰賽,由豆包MarsCode 和稀土掘金社群共同發起,面向全國程式設計師。大賽規則和報名入口,詳見活動官網[11],也可掃描上方海報二維碼,祝願大家得獎。

科技動態

1、深湖冷卻[12]
加拿大最大城市多倫多,就在安大略湖旁邊。安大略湖是一個很深的湖,最深處達到244米。
多倫多市正在建設一個非常酷的專案,使用安大略湖底的冷水,為城市提供冷卻系統。
安大略湖底部的水溫是很低的,該專案從水底85米處取水,即使盛夏,水溫也只有4攝氏度。
這些水經過40公里的管道,進入市中心的熱交換站,為城市帶來天然的冷氣。
2、自走桌[13]
一位國外工程師,製作了一張會自己行走的桌子。
這張木頭桌子有12條腿,每次可以同時移動三條腿,每條腿都用電機驅動。
桌子內部有無線接收器,用來接收遙控訊號。遠端計算機發出遙控命令,並計算出移動哪幾條腿,每條腿移動的角度和幅度。
3、癱瘓網路的機器狗[14]
很多犯罪分子都在屋外裝了攝像頭,監控室外的風吹草動。
美國國土安全部研發了一款機器狗,它的唯一作用就是癱瘓無線攝像頭的通訊。
這個機器狗配備了一個天線陣列,接近目標後,會偵測周圍無線訊號的頻率和通道,然後傳送大量干擾訊號,使得網路堵塞,無法通訊。
所有無線通訊的智慧家居裝置,都會因此失效,包括攝像頭。所以,重要地點的攝像頭必須是有線的。
4、無豆咖啡[15]
一些西方公司最近推出“無豆咖啡”,就是不使用咖啡豆製作的咖啡。
它採用廢棄的棗子或果核,提取生物質,然後新增提取自茶葉的咖啡因,使其具有咖啡的味道。
因此,它比較環保,可以減少食物垃圾,也不必破壞森林種植咖啡樹。
據說,它的味道非常接近優質咖啡,普通人喝不出差異。只是成本不便宜,略高於傳統的優質咖啡豆。

文章

1、CSS 重置(2024版)[16](英文)
作者提出,最新的 CSS 重置(CSS reset,即更改瀏覽器預設樣式)只需要9條規則,每一條都詳細解釋。
2、Monokai 的歷史[17](英文)
本文介紹流行的程式碼編輯器配色方案 Monokai 的誕生歷史。
3、併發執行(Concurrency)和並行執行(Parallelism):以 JavaScript 為例[18](英文)
本文解釋併發和並行的區別,然後給出 JavaScript 的示例。
4、直接連結網頁的某段文字[19](英文)
瀏覽器現在支援,URL 直接連結到網頁的某個文字片段(text fragment)(上圖的高亮部分),本文介紹如何使用。
5、瞭解多重 DNS[20](英文)
多重 DNS 就是同一個域名有多個 DNS 解析記錄,可用來均衡負載。作者就測試了,均衡負載是否真能生效。
6、感知器是什麼[21](英文)
本文解釋神經網路的基礎概念“感知器”(Perceptron)。

工具

1、EasyTransfer[22]
開源的檔案傳輸工具,匿名加密,只需訪問網頁,即可連線到其他裝置,基於 webRTC 和 Vue.js,訪問試用網址[23]。(@ch3ny4ng[24] 投稿)
2、Screen Sharing[25]
從瀏覽器分享你的螢幕給其他人,適合用來演示。(@markliuyuxiang[26] 投稿)
3、PMAtron[27]
將 phpMyAdmin 用 Electron 封裝成跨平臺桌面軟體。(@MaskerPRC[28] 投稿)
4、FastExcel[29]
基於 Java 語言的 Excel 檔案解析工具,可以用來提取資料。(@JerryFan626[30] 投稿)
5、Readest[31]
一款開源電子書閱讀器,跨平臺桌面應用,基於 Next.js 15和 Tauri v2。(@chrox[32] 投稿)
6、IMG2AVIF[33]
一個網頁工具,將各種格式的圖片轉成 AVIF 格式。(@malagebidi[34] 投稿)
7、YT Pics[35]
一個 Web 應用,輸入 YouTube 網址和指定時間,它會自動擷取該時間的截圖。
8、Web2pdf[36]
一個命令列工具,將網頁儲存成 PDF 檔案,有很多增強功能(自定義樣式、生成目錄等)。
9、CheerpJ[37]
瀏覽器裡面的 JVM 編譯器,讓 Java 程式可以在瀏覽器執行。
10、fuzzy-search[38]
一個前端的模糊搜尋庫,支援東亞語言。

AI 相關

1、BabelDuck[39]
基於 AI 的口語對話練習應用。(@Orenoid[40] 投稿)
2、AIGIF[41]
GIF 動圖搜尋,可對圖片人物進行換臉。(@markliuyuxiang[42] 投稿)
3、Imagenie[43]
跨平臺的桌面應用,使用 AI 在本地處理圖片,比如人像修復、超解析度放大、背景移除。(@zhongweili[44] 投稿)

資源

1、啟動過程:Android 與 Linux[45]
這篇文章記錄了 Linux 和 Android 各自的系統啟動順序。
2、深入高可用系統原理與設計[46]
開源的中文電子書,梳理網路、雲、容器、叢集等知識。(@isno[47] 投稿)
3、English News in Levels[48]
英語新聞分級閱讀網站,即時更新新聞,分為三種難度,有重點詞彙、理解測試和朗讀音訊。(@meterscao[49] 投稿)
4、GitHub Weekly[50]
這個網站將週刊討論區的投稿,轉成新聞卡片形式呈現。(@inshub[51] 投稿)

圖片

1、密室照片[52]
2010年,美國網際網路上流傳一組密室照片,看上去非常空曠神秘。
它們沒有任何說明,不知道是在哪裡拍的,也不知道是誰拍的。
這樣反而激起了網友的興趣:昏黃的燈光,陳舊潮溼的地毯,黃色的熒光燈和牆壁,無限的空房間,沒有任何窗戶,你被困在裡面。
經過不斷轉發,這些照片逐漸成為美國網際網路經久不衰的一個神話,成為了很多電影和遊戲的靈感,比如《命運規劃局》、《黑暗城市》、《異次元殺陣》。
最近,透過網際網路檔案館(archive.org)的努力,現在終於查明,這組照片是一家傢俱店的二樓,當時正在進行翻新,一間間的小房間正是傢俱的陳列室。

文摘

1、大眾審美[53]
人們眼中的美和醜,其實都是受到社會的影響,很少有人擁有自己獨立的審美標準。
1990年代初期,兩位俄羅斯藝術家委託一家美國市場研究公司,進行市場調查,向1001位美國人詢問下面的問題。
你最喜歡的顏色是什麼?你喜歡銳利的曲線還是柔和的曲線?你喜歡光滑的筆觸還是厚重的筆觸?你喜歡裸體還是穿著衣服的人物?你喜歡休閒的人物還是工作的人物?你喜歡室內場景還是室外場景?你喜歡什麼樣的風景?
調查完成後,兩位藝術家根據大多數人的偏好,繪製一幅畫。理論上,這幅畫應該受到最多社會大眾的喜愛。
後來,他們又在其他國家做這個調查,得到一個驚人的結果:每個國家的調查結果(即大眾偏好),幾乎都是一致的。
“人們想要的都是風景畫,周圍有幾個人物,前景是動物,主要色調是藍色。”
他們根據11個不同國家的調查結果,畫出來的11幅畫看上去幾乎一樣。
這證明了,全世界的大眾審美正在趨同。從電影到時尚,從建築到廣告,全世界的人們喜歡差不多的東西,各國審美越來越接近,獨特性越來越少。
舉例來說,AirBnB 上面的公寓,不管是哪個國家,裝潢風格很多都是雷同的,可以稱為 AirBnB 美學:白牆、原木、膠囊咖啡機、扶手椅、裸磚、木擱板、燈泡。
這種 AirBnB 美學既有工業主義的粗獷原始,又有古典主義的優雅極簡。
這種風格還影響到了咖啡店。
世界各地的咖啡店(包括餐廳),也慢慢變得相似:粗糙的木桌、寬大的窗戶、樸素的吊燈。
總之,隨著網際網路連線全球,全世界正在形成統一的大眾審美。以後,無論去到哪個國家,旅館和咖啡店可能都是一樣的裝修。

言論

1、
我生活中一切順利的事情都遵循相同的過程:
(1)我關注自己喜歡的事情。
(2)我找到多做這些事情的方法。
(3)我讓有趣的人很容易發現我在做這些事情。
(4)我和他們一起出去玩,一起做專案。
— 亨裡克·卡爾森[54]
2、
偉大的科學家是想法大膽的人,但是對自己的想法同時持有高度批判的態度。接受自己的猜想之前,他們首先會嚴厲嘗試反駁它。
只有發現很難反駁成功時,他們才相信自己的想法是對的。
— 卡爾·波普爾[55],科學哲學家
3、
作為一個至少用過十幾種語言進行過商業開發的程式設計師,我完全不同意有人說,一種語言的程式設計速度優於另一種語言。
語言的程式設計速度因人而異,符合程式設計師的個人經歷和思維習慣的語言,寫起來最快。
— Hacker News 讀者[56]
4、
我長期以來一直認為地球是一個“水星球”,存在著大量的水覆蓋星球。
直到我做了數學計算,才意識到地球實際上是太空中的一塊溼岩石,更像是用噴霧器噴了十幾次的保齡球。
— Hacker News 讀者[57]

往年回顧

新人優惠的風險(2021 #182)
快能力和慢能力(2020 #132)
(完)

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://app.xinhuanet.com/news/article.html?articleId=451916149ce4dde7e6035e935eb5a37f
[7]

 D2: 

https://d2lang.com
[8]

 play.d2lang.com: 

https://play.d2lang.com/
[9]

 文件: 

https://d2lang.com/tour/intro
[10]

 AI 程式設計大賽: 

https://zjsms.com/iUNhdBEk/
[11]

 活動官網: 

https://zjsms.com/iUNhdBEk/
[12]

 深湖冷卻: 

https://www.theglobeandmail.com/business/industry-news/property-report/article-the-worlds-largest-deep-lake-water-cooling-project-just-got-bigger/
[13]

 自走桌: 

https://www.decarpentier.nl/carpentopod
[14]

 癱瘓網路的機器狗: 

https://www.tomshardware.com/tech-industry/big-tech/dog-like-robot-jams-home-networks-and-disables-devices-during-police-raids-dhs-develops-neo-robot-for-walking-denial-of-service-attacks
[15]

 無豆咖啡: 

https://www.bbc.com/news/articles/c4gv0rvx0dvo
[16]

 CSS 重置(2024版): 

https://www.joshwcomeau.com/css/custom-css-reset/
[17]

 Monokai 的歷史: 

https://monokai.pro/history
[18]

 併發執行(Concurrency)和並行執行(Parallelism):以 JavaScript 為例: 

https://www.rugu.dev/en/blog/concurrency-and-parallelism/
[19]

 直接連結網頁的某段文字: 

https://alfy.blog/2024/10/19/linking-directly-to-web-page-content.html
[20]

 瞭解多重 DNS: 

https://blog.hyperknot.com/p/understanding-round-robin-dns
[21]

 感知器是什麼: 

https://medium.com/@vincentlambert0/it-all-started-with-a-perceptron-86bd0fb80b96
[22]

 EasyTransfer: 

https://github.com/WCY-dt/EasyTransfer
[23]

 試用網址: 

https://file.ch3nyang.top
[24]

 @ch3ny4ng: 

https://github.com/ruanyf/weekly/issues/5653
[25]

 Screen Sharing: 

https://screensharing.net
[26]

 @markliuyuxiang: 

https://github.com/ruanyf/weekly/issues/5657
[27]

 PMAtron: 

https://github.com/maskerprc/pmatron
[28]

 @MaskerPRC: 

https://github.com/ruanyf/weekly/issues/5666
[29]

 FastExcel: 

https://github.com/CodePhiliaX/fastexcel
[30]

 @JerryFan626: 

https://github.com/ruanyf/weekly/issues/5671
[31]

 Readest: 

https://github.com/chrox/readest
[32]

 @chrox: 

https://github.com/ruanyf/weekly/issues/5663
[33]

 IMG2AVIF: 

https://img2avif.com
[34]

 @malagebidi: 

https://github.com/ruanyf/weekly/issues/5678
[35]

 YT Pics: 

https://www.ytpics.com/
[36]

 Web2pdf: 

https://github.com/dvcoolarun/web2pdf
[37]

 CheerpJ: 

https://labs.leaningtech.com/blog/cheerpj-3.0
[38]

 fuzzy-search: 

https://github.com/m31coding/fuzzy-search
[39]

 BabelDuck: 

https://github.com/Orenoid/BabelDuck
[40]

 @Orenoid: 

https://github.com/ruanyf/weekly/issues/5669
[41]

 AIGIF: 

https://aigif.net
[42]

 @markliuyuxiang: 

https://github.com/ruanyf/weekly/issues/5682
[43]

 Imagenie: 

https://github.com/zhongweili/imagenie
[44]

 @zhongweili: 

https://github.com/ruanyf/weekly/issues/5688
[45]

 啟動過程:Android 與 Linux: 

https://xdaforums.com/t/info-boot-process-android-vs-linux.3785254/
[46]

 深入高可用系統原理與設計: 

https://www.thebyte.com.cn
[47]

 @isno: 

https://github.com/ruanyf/weekly/issues/5683
[48]

 English News in Levels: 

https://englishnewsinlevels.com
[49]

 @meterscao: 

https://github.com/ruanyf/weekly/issues/5699
[50]

 GitHub Weekly: 

https://iohub.inshub.cn
[51]

 @inshub: 

https://github.com/ruanyf/weekly/issues/5701
[52]

 密室照片: 

https://blog.archive.org/2024/06/01/the-backrooms-of-the-internet-archive/
[53]

 大眾審美: 

https://www.alexmurrell.co.uk/articles/the-age-of-average
[54]

 亨裡克·卡爾森: 

https://www.henrikkarlsson.xyz/p/unfolding
[55]

 卡爾·波普爾: 

https://igorpak.wordpress.com/2020/12/10/what-if-they-are-all-wrong/
[56]

 Hacker News 讀者: 

https://news.ycombinator.com/item?id=41616851
[57]

 Hacker News 讀者: 

https://news.ycombinator.com/item?id=41238102


相關文章