本雜誌開源(GitHub: ruanyf/weekly),歡迎提交 issue,投稿或推薦科技內容。
週刊討論區的帖子《誰在招人?》,提供大量程式設計師就業資訊,歡迎訪問或釋出工作/實習崗位。
封面圖
2021 世界機器人大會在北京舉行,一家公司展出了"愛因斯坦"人形機器人,使用中文向學生"授課"。(via)
本週話題:中國法院承認 GPL 嗎?
開源軟體通常帶有許可證。大家一直很想知道,如果國內使用者不遵守許可證,可以去法院告他嗎?
上週有一條新聞,深圳市中級人民法院一審判決,被告違反了 GPL 許可證,賠償侵權費50萬元。
很多程式設計師很興奮,認為這代表 GPL 許可證得到中國法院的認可。
我仔細讀了判決書,覺得跟大家想的不一樣,這個案件很複雜,得不出法院認可 GPL 的結論。
我簡單說一下案情。
濟寧市羅盒網路科技有限公司(以下簡稱"羅盒科技")在 GitHub 開源了軟體 VirtualApp,使用了 GPL 許可證。但是,他同時又宣告,不得用於商業用途,除非購買商業授權。
大家覺得,這個宣告有問題嗎? 可以既採用 GPL 許可證,又不許用於商業用途嗎?
回答是,這個宣告有很大問題。GPL 許可證允許商用,只要你用了這個許可證,別人就可以把你的程式碼用於商業用途。
如果想禁止商用,就不能使用 Copyleft 許可證(比如 GPL),而是要新增一個自己的許可宣告,比如"原始碼只供個人學習,不得商用,除非購買商業許可證"。
因此,羅盒科技一開始的許可證選擇,就有問題,後來果然出了問題。
有一個叫做"點心桌面"的商業 App,使用了 VirtualApp。羅盒科技就控告開發商福建風靈公司侵權,要求賠償2000萬元。
羅盒科技起訴的理由,不是對方違反 GPL,沒有開源"點心桌面",而是對方沒有付款,就將程式碼用於商業用途。
所以,準確的說,這個案件跟 GPL 許可證沒有直接關係,只跟風靈公司沒有獲得商業授權有關。法院最後判決被告敗訴,也是這個原因。
但是前面說了,GPL 許可證允許商業用途,風靈公司就抓住了這一點,為自己辯護,宣稱自己使用的是專案的 GPL 版本,不是商業版本,因此可以商用。
他們沒想到的是,GPL 許可證的第八條明確寫明,如果使用者不開源自己的程式碼,GPL 授權失效。
法院因此認為,風靈公司不符合條件,不能使用 GPL 為自己的商業行為辯護。所以,這個案件不是法院認可了 GPL,而是法院認為被告不適用 GPL 許可證。
假如風靈公司遵守了 GPL,公開了"點心桌面"的原始碼,那還構成侵權嗎?我的個人看法是,那樣就不侵權。
總之,GPL 在國內維權還是很困難。它是按照美國法律寫的,所有中文版都是網友翻譯的,有沒有準確表達含義都很難說。 中國法院就算認可 GPL,也是作為程式碼作者與使用者之間的合同看待。
這意味著兩點。
(1)只有程式碼作者才能提起侵權訴訟,其他人沒法控告違反 GPL 的行為。
(2)就算勝訴,最多就是對方軟體下架或者賠償損失,很難強制開原始碼,因為中國合同法沒有這種先例,而且法律允許對方拒絕繼續履行合同。
使用 Node.js 開發一個 CLI 工具
Node.js 誕生已經超過10年了。因為它,前端開發出現了翻天覆地的變化。
直到今天,你要學習前端的主流技術,首先就要掌握 Node.js,因為所有開發都要在它下面完成。
很多同學都想知道,怎麼才能掌握 Node.js?
對於新人來說,其實只要掌握兩個知識點,就能上手了:一個是 CommonJS 模組格式,另一個就是命令列環境 (command line,簡寫為 CLI)。其餘部分就是普通的 JavaScript 語法。
上面兩個知識點之中,CommonJS 比較簡單,命令列有點難,因為內容多,需要了解作業系統,以及 Node.js 提供的各種系統介面,最常用的就是檔案系統介面。
這一週介紹的課程,就是 《教你使用 Node.js 開發一個 CLI 工具》,教大家快速入門命令列開發。
這是一門影片課,手把手帶你從零開始寫一個 JS 指令碼,把它做成命令列工具,併發布到 NPM 上面,可以給其它人下載使用。
它不同於那些直接講述技術點的課程,不是生硬的文件解讀,而是從具體的問題出發,帶出知識點,立足於教會學習者,解決現實場景中的實際問題,屬於"實務導向"。
課程的主講老師崔效瑞,有豐富的前端開發經驗,是 Vue 3 的程式碼貢獻者,也是 Element3 技術負責人、mini-vue 作者。
微信掃描上方二維碼報名,就可以領取這門影片課,並瞭解課程的詳細情況。課程推廣期間,不收取任何費用,保證沒有套路。
科技動態
1、二氧化碳捕捉工廠
世界目前最大的二氧化碳捕捉工廠,最近在冰島建成了。它透過風扇吸入空氣,過濾出二氧化碳,然後再將二氧化碳液化,注入地下1,000米深處的礦洞儲存。
二氧化碳的過度排放,是氣候變暖的主要原因,目前沒有好的方法吸收二氧化碳。該工廠每年只能吸收4000噸二氧化碳,只相當於800多輛汽車的排放量,而全世界2015年的二氧化碳排放量是360億噸。(@emac 投稿)
2、搞笑諾貝爾獎
哈佛大學每年評選(似乎)無意義的研究,頒給搞笑諾貝爾獎。今年,日本學者(上圖)獲得了其中的動力學獎,他透過馬路實驗(下圖)得到結論:
這已經是日本學者連續15年獲得搞笑諾貝爾獎了。日本網民也在議論,日本的學者是不是太多了,找不到有意義的研究題目了?
3、違規跑鞋
9月12日的維也納馬拉松賽上,衣索比亞選手以2小時09分22秒的成績獲得冠軍,但是隨後就被取消成績,理由是他的跑鞋違反了最新規定。
按照規定,跑鞋的鞋底厚度不能超過40毫米,但是該選手的鞋底厚達50毫米,多出整整一釐米。更厚的鞋底可以提供更好的彈力,幫助選手節省體力。
4、遊戲廳的衰落
日本的電子遊戲廳曾經盛極一時,各種街機玲琅滿目,但是,現在已經盛況不再。根據警方的統計,1986年日本全國曾經有 26,573 家遊戲廳,到了2019年只剩下 4,022 家,疫情爆發以後,數目更是繼續銳減,可能不到最高峰時的十分之一。
網際網路和手機遊戲的興起,是遊戲廳衰落的主要原因。目前,遊戲廳的最大顧客來源是傳統遊戲愛好者,以及老年人。一位65歲的老人說,他把遊樂廳當作社交場所,可以結交很多朋友。
一些人認為,遊戲廳最終會消失。另一些人則認為,遊戲廳值得保留下來,街機有其獨特的樂趣。南夢宮、Square Enix、世嘉等街機公司,呼籲日本政府採取措施,促進街機行業的發展。
5、漂浮式光伏電站
山東德州最近建成了,世界最大的單體水上漂浮式光伏電站。在水庫的水面上,漂浮著面積2200畝的太陽能光伏板,設計總容量為320兆瓦,第一期建成了200兆瓦。
漂浮式光伏電站的好處是,對水體沒有破壞性,比較環保,節省地基成本,施工週期短,還可以減少水庫的水量蒸發、遮擋陽光抑制藻類生長。另一方面,光伏板放在水裡,可以有效降溫,顯著提高發電效率。
6、果蠅獨居的後果
科學家已經知道,果蠅是一種社會化動物,所以常常用它做實驗,研究人類社會。
《自然》雜誌最近報導,科學家將果蠅單獨隔離,與群居的果蠅進行對比。結果發現,獨居的果蠅有更少的睡眠、更多的進食。
這個實驗如果可以引申到人類,就表示長期獨居對健康不利,群居、與他人的日常互動對健康更有利。
文章
1、WebOS 死亡十週年紀念(中文)
多年前,Palm 公司曾經發布過一個手機系統 WebOS,有很多令人難忘的特性,非常易用。2011年8月11日,該系統被宣佈放棄。本文回顧了這個系統。
2、消滅後視鏡(中文)
越來越多的小汽車使用攝像頭取代後視鏡,有的甚至連突出的門把手都隱藏了,本文討論這樣做的原因。
3、如何免費搭建一個 VS Code 網頁版(中文)
VS Code 編輯器有網頁版,本文教你怎麼把它部署在免費伺服器上,可以用來寫筆記,或者偶爾遠端編輯程式碼。(@DoctorLai 投稿)
4、你所不知道的 ASML(英文)
全世界最先進的晶片工廠,都依賴一家公司生產的 EUV(極紫外光刻)晶片製造機,這家公司就是荷蘭的 ASML(阿斯麥)公司。它一年生產50臺 EUV,每臺售價1.5億美元起。
5、12 張視覺錯覺圖片(英文)
本文收集了 12 張著名的視覺錯誤圖片。比如,上面這兩張圖片,看上去是不同角度拍攝的同一條街道,但是實際上,它們是同一張圖片並排放在一起。
6、絕對值的計算並不簡單(英文)
絕對值的演算法似乎是一個微不足道的問題:判斷一個數是否為負數,如果是的,就去掉它的負號。如果你採用這樣的演算法,那你就錯了。
7、React usePrevious 鉤子(英文)
本文介紹如何使用 useEffect 和 useRef 的官方鉤子,寫一個自己的 usePrevious 鉤子,返回元件上一次渲染時的 props 引數。
8、瀏覽器的"包匯入地圖"(英文)
Chrome 89 開始支援 ES 模組的"包匯入地圖"功能(package import maps),可以為匯入模組指定別名。
工具
1、Ventoy
一個 U 盤的啟動盤製作工具,直接把系統映象檔案複製到 U 盤即可。它支援電腦啟動時,從多個系統映象檔案裡面選擇一個啟動。
2、WebDen
專供手機瀏覽器使用的網頁程式碼編輯環境,提供 HTML、CSS、JS 的開發和除錯。
3、View Source
一個 Web 小工具,輸入網址,就可以高亮顯示該網址的原始碼,非常好用。
4、fishdraw
一個 JS 指令碼,可以自動生成魚的圖形。這裡還有一個可以自動畫樹的庫。
5、MDvideo
一個桌面軟體,自動將 Markdown 文件轉成一段影片。文件裡面的影片、音訊、圖片網址,都會抓取後插入影片,還可以根據文字生成人工語音的旁白朗讀。
它非常適合快速生成產品的介紹影片。(@linqian02 投稿)
6、group-by-repo-on-github
油猴指令碼,用來處理 GitHub 的網頁搜尋結果,可以根據倉庫分類,並自動獲取分頁結果,即不用點選"下一頁"了。(@foamzou 投稿)
7、iDraw.js
一個簡單的 JS 庫,用來使用指令碼進行網頁繪圖。它基於 Canvas,可以繪製文字、矩形、圓形、圖片、HTML 片段和 SVG 檔案。(@chenshenhai 投稿)
8、PikaScript
這個專案用來為微控制器提供 Python 支援,讓你可以透過 Python 指令碼操作微控制器。(@pikasTech 投稿)
9、mini-stores
小程式狀態管理庫,方便管理頁面狀態,支援各公司的小程式。(@linjc 投稿)
10、Neumorphism
一個網頁工具,用來生成照明陰影效果的 Flutter 程式碼。這裡還有 CSS 版。(@xrr2016 投稿)
資源
1、Samantha Ming 個人網站
Samantha Ming 是一名加拿大前端工程師,她在個人網站上分享了很多前端程式碼的技巧,內容質量很高,製作精美。(@wxyudl 投稿)
2、糖尿病教育網站
加州大學舊金山分校主辦的網站,全部使用中文,提供糖尿病、健康、運動、飲食知識,內容很不錯。(@Stupid-Human 投稿)
3、程式設計師的數學導論
一本英文的數學教材,專門寫給沒有數學基礎的程式設計師,主要介紹微積分和線性代數,並且結合程式設計例項(比如加密和神經網路)進行講解。全書可以0元購買。
4、 SQL Bolt
一個互動式的英文線上教程,一共19課,從零開始講授 SQL 知識,以及如何查詢資料庫。
5、國際資料管理手冊
該網站提供全世界各國的各種資料格式,比如地址、電話、郵政編碼、貨幣、車牌等的格式。
圖片
1、手機學習網頁開發
一個尼泊爾老師在網上貼出照片,他的學生沒有膝上型電腦,只能透過手機架設開發環境,學習網頁開發。
經過兩個月,這個學生已經初步掌握 HTML、CSS 和 JS。
2、世界上最長的鋼琴
鋼琴的音質與琴絃的長度有關。琴絃越長,振動越慢,就能發出越低頻的聲音,所以高階的三角鋼琴,體積都很大,長度都不短於2.3米。
一個紐西蘭青年阿德里安不禁突發奇想,如果製造一個特別長的鋼琴,不就可以發出非常低的音訊嗎?
他決定自己來造一個,從圖書館找到資料,在鋼琴師傅的指導下,開始動手建造。
最後,他造出了世界上最長的鋼琴,長度接近10米。
他說,本想造得更長,但是他家的車庫放不下了。
果然,這架鋼琴的音質相當好,吸引了很多專業音樂家專程來演奏,還灌製了唱片。
文摘
1、賈伯斯的白板事件
摘自沃爾特·艾薩克森的《賈伯斯傳》。
1985年,30歲的賈伯斯被趕出了蘋果公司。
他隨即創立了 NeXT 公司,繼續開發符合他理想的下一代個人電腦。
1986年,一家叫做 Pixar 的圖形硬體公司找到了賈伯斯。那家公司瀕臨破產,急需資金。賈伯斯經過思考,同意給錢,成為這家公司的最大投資者。
最初,這只是一筆單純的風險投資。但是後來幾年,Pixar 還是不斷虧損,賈伯斯不得不追加投資,最後索性成了公司的董事長,直接介入公司管理。
那時,賈伯斯每週有一兩天去 Pixar 公司辦公,剩下的時間就去 NeXT 公司辦公。
進入九十年代以後,NeXT 公司和 Pixar 公司的業務都不見起色,看上去兩家公司都會失敗。這是賈伯斯一生中的最低潮,他的壓力很大。
有一天,Pixar 公司開會,賈伯斯對 Pixar 創始人史密斯和其他高管破口大罵。因為他們一直拖延,沒有按時拿出下一代影像電腦的電路設計。
那個時候,NeXT 的新產品也沒有按時完成。史密斯就反唇相譏:"嘿,你的 NeXT 電路板做完了嗎?不要光盯著我們。"
賈伯斯聽了勃然大怒。史密斯後來回憶:"他氣到失去理智。" 史密斯說話有西南部口音,賈伯斯就學他的口音,冷嘲熱諷。史密斯說:"他欺人太甚,太過分了。我也氣炸了,什麼話都罵出口。於是我們幾乎貼著對方的面,大約只隔一個巴掌寬,互相對罵。"
賈伯斯開會時,一定要把白板據為己有,不輕易讓別人使用。史密斯利用自己的大塊頭,一把推開他,逕自走到白板前,邊寫邊解釋。賈伯斯吼道:"你給我住手!"
"咦?"史密斯回擊:"白板是你的嗎?我不能寫嗎?簡直是胡扯。"賈伯斯氣得當場離席。
這場會議以後不久,史密斯就辭職離開了 Pixar,自己創業開了一件軟體公司,專攻電腦繪圖和影像編輯。
他很幸運,微軟後來買下了他的公司。他可能是歷史上唯一一位,創立了兩家公司,一家賣給了賈伯斯,另一家賣給了比爾·蓋茨。
言論
1、
如果你走得足夠遠,其實就再也沒辦法回去了。當你回到故鄉,原來的一切都已經消失了。
不過,這也不算什麼,歸根結底,旅程才是你的故事中最重要的部分。
-- 《如果有無盡的推動力,宇宙飛船可以飛多遠?》
2、
二戰開始後,德國轟炸倫敦。倫敦市區每天晚上都有炸彈落下,郊區的炸彈比較少,可能每週一次。
戰後的調查發現,在這段時期,市區居民的胃潰瘍發病率顯著增加,奇怪的是,郊區居民的胃潰瘍發病率,增加得比市區還要大得多。這說明壓力的不確定性比壓力本身傷害更大。
--《學會減少不確定性》
3、
Dropbox 這個軟體給人的感覺是,很早就達到了頂峰,然後隨著開發團隊嘗試新增越來越多的功能,而逐漸變得糟糕。
-- Hacker News 讀者
4、
賺到一百萬美元以後,再往前走的動力都來自你的熱情。
-- Joel Spolsky
5、
幸福的秘訣就是永遠抱有低期望值。(the secret to happiness is low expectations.)
-- Hacker News 讀者
歷史上的本週
2020年(第 125 期):數字人民幣要取代誰
2019年(第 73 期):資料統計的威力
2018年(第 22 期):猴子自拍,版權歸誰
訂閱
這個週刊每週五發布,同步更新在阮一峰的網路日誌和微信公眾號。
微信搜尋"阮一峰的網路日誌"或者掃描二維碼,即可訂閱。
(完)