Categories
程式開發

架構週報:周鴻禕回應發“免裁券”:自編黑段子,純屬開玩笑;蘋果要求開發者驗證身份,中國區要自拍;誤刪…


本期架構視點: 蘋果要求開發者驗證身份,中國區要求自拍;使用WebAssembly 的網站中有50% 將其用於惡意目的;SpaceX 成為世界最大的私人衛星運營商;C 語言獲評年度編程語言獎項;陌陌給員工發頂配iPhone11 作新年禮品;周鴻禕回應發放“免裁券”:自編黑段子純屬開玩笑;誤刪庫刪表後的挽救措施。

萬萬沒想到

周鴻禕回應發放“免裁券”:自編黑段子 純屬開玩笑

架構週報:周鴻禕回應發“免裁券”:自編黑段子,純屬開玩笑;蘋果要求開發者驗證身份,中國區要自拍;誤刪... 1

1 月 8 日晚間消息,360 董事長兼 CEO 周鴻禕今日在朋友圈透露,今年 360 年會設置特等獎為“免裁券”,獲此券的員工可“抵消一次裁員”。有網友認為,此舉預示著 360 將進行裁員。周鴻禕當晚解釋稱:這是我編的自黑段子,純屬開玩笑,大過年的讓大家開心一笑,大家有點幽默感行嗎,還有很多人當真了,煞有介事的報導評論。此前,360 集團回應稱,沒有裁員計劃,今天的是幽默,實際上是為了鼓勵創新,大膽試錯。

蘋果要求開發者驗證身份,中國區要求自拍

蘋果開始要求開發者驗證身份,中國區要求自拍,而其他地區則要求拍攝駕照或政府簽發的照片 ID 的照片。蘋果對中國區的要求是,“為了驗證您的身份,系統會要求您進行自拍:確保您的臉部清楚地顯示在取景框內,然後輕點“拍攝”。查看您的自拍照以確保照片清晰,然後輕點“確認”。”其它地區是“To verify your identity, you'll be asked to capture your driver's license or government-issued photo ID”。

使用 WebAssembly 的網站中有 50% 將其用於惡意目的

學術研究報告顯示,排名前 100 萬個網站中,只有 1639 個網站使用 WebAssembly,而其中大約有 50% 將其用於惡意目的。 WebAssembly 是一種低級的類彙編語言,具有緊湊的二進制格式,能以接近原生的性能運行,並為諸如 C / C ++ 等語言提供一個編譯目標,以便它們能在 Web 上運行。同時,它也被設計為可以與 JavaScript 共存,允許兩者一起工作。主要有兩類代碼用於惡意目的:

  • 用於加密貨幣挖掘的 WebAssembly 代碼。這種類型的 Wasm 模塊通常會在被黑客入侵的網站上發現,這是所謂的 Cryptojacking 攻擊的一部分;
  • 涉及打包在混淆的 Wasm 模塊中的 WebAssembly 代碼,這些模塊有意隱藏其內容。研究團隊稱,這些模塊是惡意廣告活動的一部分。

華納兄弟嘗試用 AI 幫助電影拍攝決策

華納兄弟成為最新一個採用 Cinelytic 公司 AI 項目管理系統的電影工作室。華納將在是否批准開拍電影的階段利用 AI 系統指導決策。 AI 未必能預測哪一部電影將會大爆 10 億美元的票房,但能減少在低價值重複性任務中投入的時間。利用其全面的數據,它能在數秒內評估電影計劃或明星價值,而人類做同樣的工作可能需要數天時間。它無法做創意性的決策,這項工作仍然依靠人類。

SpaceX 成為世界最大的私人衛星運營商

本週一,SpaceX 使用 Falcon 9 火箭完成了它在 2020 年的首次發射,將 60 顆 Starlink 互聯網衛星送入軌道。 SpaceX 至今已完成三次 Starlink 衛星發射,將約 180 顆衛星送入地球低軌道,這使它同時成為世界最大的私人衛星運營商以及世界最活躍的私人火箭發射公司。此次發射使用的Falcon 9 火箭第一級已經是第四次使用,它被稱為Core B1049.4,其中B 代表booster,1049 是序列號,4 是第四次,前三次是2018 年9 月執行Telstar 18 VANTAGE 發射任務,2019 年1 月執行Iridium-8 任務,2019 年5 月執行Starlink 1 任務。火箭第一級在發射之後成功著陸在大西洋上的無人駁船 Of Course I Still Love You 上。

追著谷歌打 API 官司的甲骨文被發現了拷貝亞馬遜 API

美國最高法院將就 Google Android 系統拷貝甲骨文 Java API 一案舉行聽證會,裁決 API 在版權法下的法律地位。此案的結果將對 Google 等公司產生深遠影響。 API 本質上是指示計算機如何操作的語言,包含了一個與語法結構相關的命名命令表。 Google 的 Android 設計兼容 Java,因此熟悉 Java 的程序員可以將經驗和知識帶到新的移動設備平台。為此 Android 必須拷貝相關的 Java API 命令和語法結構,甲骨文認為這種 Java API “重新實現”相當於寫未經授權的哈利波特小說,侵犯了其版權。然而拷貝 API 在軟件行業是十分常見的做法,而甲骨文自己也被發現拷貝了競爭對手亞馬遜雲服務 S3 的 API。

Linus Torvalds 禮貌地批評一位開發者的博文

2018 年,Linux 作者 Linus Torvalds 在因語言禮貌問題備受非議之後宣布反省一段時間,接受禮貌訓練的 Torvalds 之後其言論不再咄咄逼人,而是變得非常紳士。在一位 C++ 開發者 Malte Skarupke 聲稱 Linux 存在調度器問題,影響了開發者為 Google 的雲平台 Google Stadia 提供 Linux 遊戲之後,Linus Torvalds 回應稱他的博文純粹胡扯,根本不懂調度器。他的回應聽起來苛刻,但其實還是非常的有禮貌,沒有進行任何可能的人身攻擊,而是很有耐心的講述這篇有關調度器的博文究竟錯在什麼地方。

Windows 95 的 UI 設計比 Windows 10 好?

Reddit 網友 UX 愛好者 Tuomas Salo 發布推文表達了他對於 Windows 95 在 UI 與 UX 設計上的讚賞,並稱今天我們在這一方面反而把 95 的這些精華給丟掉了。

架構週報:周鴻禕回應發“免裁券”:自編黑段子,純屬開玩笑;蘋果要求開發者驗證身份,中國區要自拍;誤刪... 2

如給出的圖片所標註的,Tuomas 具體說明了 Windows 95 幾個設計上的要點:

  • 帶下劃線的字母表示鍵盤快捷鍵,很方便。
  • 設計清楚地表明“我們是按鈕”,可以很容易找到想要的按鈕。
  • 列標題看起來像按鈕,因為它們就是按鈕。
  • 分隔欄類似於窗框,一看就知道它可以調整大小。
  • 始終可見的滾動條會立即反饋用戶關於內容和數量的信息。
  • 省略號提示此按鈕將打開一個對話框,而不是立即執行操作。
  • 手柄讓用戶知道該窗口可以調整大小。

該話題下最高讚的評論是對Windows 10 的吐槽,用戶覺得Windows 10 設置菜單十分混亂,“我發誓,每當我想更改某些東西時,就像感覺我必須在某種迷宮中導航一樣” 。他還表示,較舊的UI 盡了最大的努力讓其操作可預測,並且用戶只需要了解它的工作方式即可,但是現代UI 更像是UI 在試圖預測,或者去了解用戶,這與前者完全相反。

C 語言獲評年度編程語言獎項

TIOBE 發布了 2020 年最新一期的編程語言排行榜,老牌 C 語言擊敗 Python、Java、C# 獲評年度編程語言。 TIOBE 認為 C 語言年增長率(2.4%)擊敗火熱的 Python(1.41%)趨勢背後的主要驅動力是物聯網(IoT)和當今發布的大量小型智能設備。當將 C 應用於對性能至關重要的小型設備時,它的表現會十分出色。另外,C 語言也比較容易學習,並且每個處理器都有一個 C 編譯器。

陌陌給員工發頂配 iPhone11 作新年禮品

1 月 10 號上午消息,有陌陌員工曬出內部郵件,郵件顯示,公司為 2019 年 12 月 31 日前在職的正式員工每人準備了一份禮品,禮品為 iPhone 11 256G,顏色隨機。據悉,在每年的互聯網公司年底福利盤點中,陌陌都是最土豪之一,曾在年會發放了高達數千萬元獎金,僅陽光普照大獎就每個人 25000 現金。陌陌上市已有五年,此前最新的 2019 年 Q3 季度財報顯示,陌陌營收同比增長 22% ,淨利潤 10.9 億元 , 同比增長 40.1% 。

蘋果滯銷的另一種解決方式?

輕鬆長知識

誤刪庫刪表後的挽救措施

雖然我們之前遇到的大多數的數據被刪,都是運維同學或者 DBA 背鍋的。但實際上,只要有數據操作權限的同學,都有可能踩到誤刪數據這條線。今天我們就來聊聊誤刪數據前後,我們可以做些什麼,減少誤刪數據的風險,和由誤刪數據帶來的損失。

在誤刪庫 / 表情況下,要想恢復數據,需要使用全量備份,加增量日誌的方式。這個方案要求線上有定期的全量備份,並且實時備份 binlog。

在這兩個條件都具備的情況下,假如有人中午 12 點誤刪了一個庫,恢復數據的流程如下:

  1. 取最近一次全量備份,假設這個庫是一天一備,上次備份是當天 0 點;
  2. 用備份恢復出一個臨時庫;
  3. 從日誌備份裡面,取出凌晨 0 點之後的日誌;
  4. 把這些日誌,除了誤刪除數據的語句外,全部應用到臨時庫。

這個流程的示意圖如下所示:

架構週報:周鴻禕回應發“免裁券”:自編黑段子,純屬開玩笑;蘋果要求開發者驗證身份,中國區要自拍;誤刪... 3

圖 1 數據恢復流程 -mysqlbinlog 方法

需要說明的是:

為了加速數據恢復,如果這個臨時庫上有多個數據庫,你可以在使用 mysqlbinlog 命令時,加上一個 –database 參數,用來指定誤刪表所在的庫。這樣,就避免了在恢復數據時還要應用其他庫日誌的情況。

在應用日誌的時候,需要跳過 12 點誤操作的那個語句的 binlog:

  • 如果原實例沒有使用GTID 模式,只能在應用到包含12 點的binlog 文件的時候,先用–stop-position 參數執行到誤操作之前的日誌,然後再用–start-position 從誤操作之後的日誌繼續執行;
  • 如果實例使用了 GTID 模式,就方便多了。假設誤操作命令的GTID 是gtid1,那麼只需要執行set gtid_next=gtid1;begin;commit; 先把這個GTID 加到臨時實例的GTID 集合,之後按順序執行binlog 的時候,就會自動跳過誤操作的語句。

不過,即使這樣,使用 mysqlbinlog 方法恢復數據還是不夠快,主要原因有兩個:

  1. 如果是誤刪表,最好就是只恢復出這張表,也就是只重放這張表的操作,但是 mysqlbinlog 工具並不能指定只解析一個表的日誌;
  2. 用 mysqlbinlog 解析出日誌應用,應用日誌的過程就只能是單線程。我們在第 26 篇文章中介紹的那些並行複制的方法,在這裡都用不上。

一種加速的方法是,在用備份恢復出臨時實例之後,將這個臨時實例設置成線上備庫的從庫,這樣:

  • 在 start slave 之前,先通過執行 change replication filter replicate_do_table = (tbl_name) 命令,就可以讓臨時庫只同步誤操作的表;
  • 這樣做也可以用上並行複制技術,來加速整個數據恢復過程。

這個過程的示意圖如下所示:

架構週報:周鴻禕回應發“免裁券”:自編黑段子,純屬開玩笑;蘋果要求開發者驗證身份,中國區要自拍;誤刪... 4

圖 2 數據恢復流程 -master-slave 方法

不論是把mysqlbinlog 工具解析出的binlog 文件應用到臨時庫,還是把臨時庫接到備庫上,這兩個方案的共同點是:誤刪庫或者表後,恢復數據的思路主要就是通過備份,再加上應用binlog 的方式。

也就是說,這兩個方案都要求備份系統定期備份全量日誌,而且需要確保 binlog 在被從本地刪除之前已經做了備份。

但是,一個系統不可能備份無限的日誌,你還需要根據成本和磁盤空間資源,設定一個日誌保留的天數。如果你的 DBA 團隊告訴你,可以保證把某個實例恢復到半個月內的任意時間點,這就表示備份系統保留的日誌時間就至少是半個月。

不論使用上述哪種方式,都要把這個數據恢復功能做成自動化工具,並且經常拿出來演練。

本部分內容出自極客時間《MySQL實戰45講》專題,作者丁奇。