又一個 Wifi AP 問題

由於老闆做興趣的公司多元化發展,所以跑去外地開了間旅館,一切都完工開張之後,就開始是我們的夢魘了,說是夢魘也算一半是自己造的業,當初在幫忙審弱電規格時,想說只是間不大的旅館,看到兩家廠商都提出用 DrayTek 的 Fat AP + 中央控管解決方案後,就覺得這東西可能還可以,也傻傻的以為負責統包的「廠商」會用心的幫忙解決一切的問題,結果… 廠商也就只是裝好而已,其它的也是能推就推,加上我們自己也不熟悉這個廠牌,中間的過程這邊就不抱怨了,在一步一步的試錯之後,我們今天又遇到一個麻煩事。

老闆說:那個那個 908 號房的訊號很差,無線網路還是很不好啊,到底解決了沒有?

幸好今天我們的小銳同事今天有過去開會,趕緊拿起電話急扣:快幫我去 908 號房試試,其實也幸好那房間現在沒住人,小銳同事開了門就跑進去看訊號強度。

報告報告,訊號看起來都還不錯哩,我手機上看來都有 3 格 (其實我不太確定他是拿什麼軟體看的,我腦補滿格是 5 格)。

小銳這個人其實在技術上也是挺細心的,一下子用 LINE 打給我做走動測試,一下子跑 SpeedTest,終於給了我一個 AHA :我知道哪裡有問題了!就是這個角落,小銳說他一走到這,和我的 LINE 通話就會斷斷續續。靠,這種土炮測試竟然比那些什麼 Wifi 強度 App 要來得快速有效還自帶團隊合作感,趕快繼續土炮下去,ㄟㄟㄟ,那個小銳你就一邊重複念 1~10,一邊走動,我一有聽不到的的時候就叫你停,然後看是在幾號…

AP1

測著測著小銳就想到幾週前,由於飯店在遠方,我們靠飯店那些非 IT 專業的工作人員蒐集到的問題描述又很亂:有人說連不上網路,也有人說網路速度慢,所以我們便在不同的樓層上對 AP 做上不同的設定,希望下次再來時可以藉由這些實驗組對照出還剩下的問題。

小銳說,這個樓層就是有做 2.4G + 5G 的雙頻設定,而且開了所謂的 Band Steering 功能,AP 上對這個功能的描述是:當 5G 訊號夠強時,AP 會強迫客戶端從 2.4G 跳到 5G 去。

只是沒想到,這個 5G 訊號的穿透能力看來不甚好,既使「訊號上」看起來還可以,但實際上的傳輸就是會出問題,嗯… 至少我們打 LINE 電話就出問題了。有了這個假設之後,我們就趕緊把這層樓的 5G 實驗組給拿掉,讓他只跑 2.4G 訊號,接著再讓小銳出動進行走動式土炮 LINE 通話測試,果不其然,一切就順順利利,趕快和老闆回報問題解決。

說實在的,對於 Wifi 問題我還真的沒啥辦法,又不是程式、系統或資料庫可以去翻出來看,訊號的這東西我是完全沒輒,你去問所謂的專家嘛,感覺就是叫你買 Cisco, Aruba 好像一切就解決了,你一叫他保證時他也不敢掛保證。這次大概是我處理各種 Wifi 問題以來「相對」的最有科學根據的一次吧,希望這樣子的運氣可以持續下去啊,不然三不五時的要開車跑遠地去處理也是既費時又費力。

Unifi AP 的升級

先開宗明義來說,其實不是什麼很難的東西,大致上來說,對於這類 ThinAP 的管理上,你得要注意 Controller 和 AP 之間誰負責什麼東西,才會比較容易知道問題出在哪。

1

以我今天遇到的問題來說,其實就只單純的是看到 Controller 的 GUI 上顯示了有 firmware 可以升級,按下升級鍵之後,這個 Controller 的 GUI 也是煞有其事的在那裡跑了很久,最後… 版本號碼還是顯示一樣,這問題與其說是今天發現的,倒不如說是已經發現很久了,只是之前一直沒有動機去升級它,今天是因為看到有幾位 user 反應有 Wifi 的連線問題,想說目前的版號距離上一次也已經快一年了,看 Change log 裡也滿滿的都是我看不懂的 bug fix,所以選日不如撞日,就試著解解看吧。

爬了一些論壇文章,症狀雖然都是升級不上去,但是有人教你用 GUI 上的自定義升級,有人教你 ssh 進 AP 自己下指令去 Controller 抓 firmware 下來,我甚至還跑到 AP 裡頭去看 log,但是都沒用,連 log 都沒看到任何錯誤。最後我是看到有個人提醒說要在 AP 上校時,這時候心血來朝,試著去 AP 上 ping ping 看隨便一個網址… Bingo!

原來是因為我們的 AP 由於是跑單純的 bridge mode,Controller 與 AP 之間的溝通也是透過 IP 而非 Domain name,所以當初設定的同事並沒有在 AP 上設定 DNS resolver,動手加進去之後,就可以順利由 GUI 上簡單的升級了。

2

在這個案例中,有趣的是由於 Controller 上一直顯示著可以升級 firmware,以致於我從沒想過實際的升級程序是 Controller 叫 AP 自己去抓 firmware 下來升級,加上這個 Controller 的 GUI 上也沒有正確 capture 這個錯誤出來,所以自己卡關了很久。這個升級雖然只是個不起眼的小事,卻解決了我心中卡很久的一口痰,還是覺得爽。

比威而鋼還威的 TCP BBR

前一陣子從 iThome 看到了 Google 要把 TCP BBR 應用在 Google Cloud Platform 的新聞, 才發現原來這東西這麼神,2700 倍的傳輸率,佇列延遲減少 25 倍,隨手翻了下網路上的部落格,沒想到有那麼浮誇的說法證明:下載從 84K/s 變成 3.9M/s,這立刻引起我的好奇心,找到了 Google 自己的部落格說明,原來是長久以來使用的 TCP 壅塞控制演算法有點笨,遇到有 packet loss 的狀況時,就會以比較保守的方式來傳遞接下來的封包,而新的 TCP BBR 則用了比較聰明的方法來處理 packet loss 的問題,整個示意圖就如下所示:


* Source

文中也特別拿了幾個國家為例子,說明在應用了 TCP BBR 之後,YouTube 的表現情形,不看還好,一看之下,沒想到 Google 也這麼浮誇寫實,YouTube 到 ID 的 Max Round-Trip time 竟然可以改善到 50% 以上,這讓我突然想到以前公司在進行某個網路直播專案時,那個爛 4G 網路讓我們驗收時吃了很多苦頭,所以我也來做個浮誇的測試好了。不過因為一來我很懶,二來也沒那個預算搭建回當初專案的原始架構,所以以下浮誇的測試只在我的本機上實驗。

  • 實驗環境 (都在同一台機器裡):
NB: OBS Studio 19.0.3 --> NB: clumsy-0.2 --> VM: SRS 2.0.242 + CentOS 6.9 --> NB: flv.js in Chrome
  • 實驗方法:
  1. 先以 Kernel 2.6.32-696.6.3 直接測試,擷取螢幕看直播視訊延遲
  2. 以 clumsy 加上 inbound & outbound 各 50ms 的延遲,並隨機 drop 10% 的封包
  3. 等個幾秒,擷取螢幕看直播視訊延遲
  4. 停止 clumsy,等個幾秒,擷取螢幕看直播視訊延遲
  5. 升級 Kernel 為 4.13.0-0.rc1,重複步驟 1~4
    * 我拿了一個 Firefox 開時鐘來讓 OBS 擷取螢幕畫面,所以測試畫面中會看到 Firefox
  • 實驗結果:
  1. 沒 TCP BBR,不啟用 clumsy,延遲大概 3 秒
    Without BBR - normal network
  2. 沒 TCP BBR,啟用 clumsy,稍等一下,延遲變為 13 秒,實測時這個延遲會迅速擴大,最差的狀況是影像會停掉
    Without BBR - bad network
  3. 沒 TCP BBR,把 clumsy 關掉,稍等一下,延遲回到 5 秒左右
    Without BBR - normal network again
  4. 有 TCP BBR ,不啟用 clumsy,延遲大概 2-3 秒,其實和沒 BBR 時差不多,這畫面看起來延遲只有 2 秒應該只是個測試誤差
    With BBR - normal network
  5. 有 TCP BBR,啟用 clumsy,稍等一下,延遲變為 4 秒
    With BBR - bad network
  6. 不信邪,再等一等,有 TCP BBR,啟用 clumsy,延遲還是維持 4 秒左右
    With BBR - bad network-2
  7. 恢復原狀,有 TCP BBR,不啟用 clumsy,延遲還是維持 4 秒不動
    With BBR - normal network again

總結來看,這個 TCP BBR 還真的神,在高延遲且掉包的網路上,在我的測試環境 1 個 client 對 1 個 server 的情境下就能有這麼好的表現,安裝的方法我就不特別提了,網路上隨便 google 都一堆,不過還是要提醒大家一下,再好的東西還是得先測試才能上正式環境,免得哪個不小心你就踩了坑了都不知道。

BBR Summary

一個很糟糕的 gmail 問題終於被修正了

認識我的人都知道,我在 gmail 一開始 beta 時就有幸拿到了邀請函,並且申請了一個和我英文名字一模一樣的 gmail 帳號,而我老婆的 gmail 帳號稍微差一點,有帶她的中文姓氏,我記得是因為當時 gmail 註冊的規則是不允許 5 個字以下 (含 5 個字) 的帳號名稱,且不能是常見的美國名字 (或單字,我猜),而我的英文名字剛好是歐洲系的,所以一直以來我都對於能擁有這個帳號是爽在心理,偶而還拿出來炫耀一下。

但是事情總是不會那麼幸福美滿的,不知道從哪一天開始,我的 gmail 就充斥著一堆的垃圾信,講到這裡大家可能會覺得很怪,gmail 檔垃圾信不是出名的嗎?就算是我的 gmail 有個好名字,也沒有什麼關連性吧?

是的,gmail 的確是檔垃圾信檔得很好,但是,不是垃圾信的垃圾信呢?

啥,你在共啥小?! 什麼叫不是垃圾信的垃圾信?

其實就是那種別人拿你的 gmail 帳號去註冊某個網路服務,之後那個服務就一直狂發信給你的一種狀況,根據我看了那麼多不是垃圾信的垃圾信的經驗得知,這種狀況一般可以歸類成兩種

  1. 真的是不小心寫錯 email 地址的:不管他是記姓不好的三寶、少根筋而打錯字還是管他阿媽什麼挖貴原因的,反正就是寫錯了,為啥我會知道是寫錯的呢?因為我有收到各種各國的 EC 網站送貨通知,而且錢都已經付了,在這裡還是要歌頌一下 Google,幸好他 gmail 內建有翻譯功能,不然我還真看不懂這些垃圾信
  2. 故意寫錯的:從這幾年收些垃圾信的經驗裡,還真的有很多網路服務是不驗證 email 信箱是不是你的 (請注意我現在已經是以全球性的世界觀來講這件事),也就是你申請註冊之後,他就當你註冊成功了,所以有可能是有人亂用我的 gmail 帳號註冊,也不排除這是一種另類的廣告信手法。其實我猜 email 要認證這件事情應該是這幾年才有的,因為我的 Apple ID 其實早就被人申請好了,幾年前的某一天當我要申請 Apple ID 時,我做的事情其實是去按 forget password,而不是新申請一個,這類事情我至少經歷了三四次有吧,都是別人在多年前不流行 email 驗證時先幫我申請好的帳號,然後我再去用 forget password 給拿回來。而目前呢?剛剛翻了一下,我的信箱收件夾裡還躺著 4 封 Instagram 的申請確認信,其中 3 封是英文的,1 封是印尼文,當然我是個還沒用 Instagram 的土包子,這四封驗證信都不是我自己申請的。

那上面這些講了落落長,都不是 gmail 的糟糕問題啊?你到底在講啥?!

其實是 gmail 有個功能叫「備用信箱」,每個帳號都可以設定一個備用信箱,一旦你忘記自己信箱的密碼時,又沒有設定手機門耗時,就可以記封忘記密碼的信到你設定的備用信箱來進行重置密碼的動作。但是… gmail 這功能以前可是不需要驗證的,所以你設定了就是設定了,他也不會管你是不是有打錯字還是記錯了,所以我長久以來,就是會收到各國語言的「密碼重置信」,這時候我就得記得去按「請把我的 gmail 信箱從那傢伙的備用信箱移除」,非常的惱人,一直到今天,gmail 終於做出了一個劃時代的更新(對我而言啦):

2017-07-28_010342

靠你終於改了啊,雖然我的帳號還是常收到不明來由的垃圾信,但連 google 都發垃圾信給我我就很不爽,雖然我的 gmail 因容量還沒到上限沒付過錢,但我可是 Android 的愛好者,GCE 也付了幾次小錢,平常也讓你抓我的 GPS 資訊讓你偵測車流量,終於,這次你解決了我的一個困擾。

其實我猜測有類似問題的人應該也不少,例如我公司的 email 並不好記,但偶而也是有類似的垃圾信出現,我會猜測是一種另類的廣告信手法,真是希望那些垃圾信名單機構可以增加一種黑名單,就是當你這個網站拿 email 註冊而不需驗證時,提出證明就可以列入這個黑名單內,然後不管是 gmail 或自己管理的 email server 就可以設定拒絕這類網站寄出的信件,才能杜絕這些惱人的垃圾信。

 

玩一下 Google Compute Engine 要花很多錢嗎?

雖然身為一個 IT 人,也知道這一行要與時俱進不然就被淘汰的道理,但是我個人對於「在雲端上花錢」這件事情的態度算是偏向保守的那一派,像是 LINE Pay 已經出來半年了,我是為了貪那繳稅的回饋金才去辦卡且綁定了我的 LINE 帳號,Google Play 上就算有需要綁定過信用卡,也是用完之後就移掉,不然我自己會想像被他亂收錢。

這次之所以會想要在 GCE 上花錢,是因為看了某個對岸網友的文章,發現 Google 竟然直接在他的 GCE 上提供 Anycast IP + Global Load Balancer + CDN 的服務,因為這實在是太狂了,所以我忍不住就打破了自己的的風險規則,跑去把我的信用卡放上去。

我測試的東西也就是 Anycast IP –> With CDN –> Load Balancer –> 一台台灣 VM + 一台新加坡 VM 這樣子的架構,測試之前先在我自己電腦上的 VM 跑了一次,並且把安裝與設定步驟記錄了下來,所以去 Google 上開機器時,除了幾個 Google 自己的設定需要實驗多花了點時間之外,大致上可以說是沒幾個小時就做完相關的設定工作,然後就開始測試了。之後就放那邊放了兩天,端午節之前把 Anycast IP, CDN, Load Balancer 及新加坡機器關掉,只留下台灣這台 VM 給同事測試用 (對,我實際上的需求並沒有一定得要用 Anycast IP,只是拿來試試看功能而已),這樣子我一共花了多少錢呢? 才 US$1.96

1

而且 Google 也提供了一個預算管制的功能,當所花的錢超過你設定的預算時,就會發警示信出來。因為我拿來玩 GCE 的帳號就是我平常在用的 Google 帳號,也綁了我的 Android 手機,所以這功能讓我很安心的繼續用下去。

2

前一陣子不知道是哪位臉書上的心得,說是微軟 Azure 要和 Amazon AWS 或 Google GCE 對打還是走得很辛苦的。對照一下這幾年來看到 Google 在做的事情:Google 自建海纜、GCE、Anycast IP on GCE、Google CDN (如果 Google 要把他們在世界各個 ISP 放的 Google Global Cache 也拿來做 CDN 加速的話,那就更恐怖了),可以看到 Google 要做而且已經快做到的是「世界」的 IT Infrastructure – 全世界的中華電信、全世界的 Hinet,這意思是什麼呢?如果你今天只想做台灣的網站也就算了,如果你是想搞跨國的網路應用(電子商務、遊戲、社群、直播…),以後你也不用多想了,就直接放 Google 上就好了,如同幾年前的台灣一樣,大家想搞網路、搞遊戲,機房鐵定要選中華電信、專線一定得拉 Hinet,因為全台灣的使用者幾乎都是用 Hinet,想不接 Hinet 線路就是要讓使用者 lag 爆。這種事情以後就會反過來,大家要在全球佈局的話首選就會是 Google,因為最簡單速度又最快。

所以,學學這些 Public Cloud 的使用經驗看來就是未來 IT 人的必備技能,而且搞不好還比去學什麼 Server 安裝或 Cisco 設備操作要來得基本且必要,要練習這些東西很花錢嗎?你要練 Server 安裝、系統管理之類的可能要去買台機器或借個環境才能操作,想練網路我看很多人會花個幾千塊去網路上買二手設備來練習,但是想練 Google Public Cloud? 以我這次的例子來說,只要 1.96 鎂就好,可能比很多人一天的通勤費用還便宜些,好東西,不買嗎?

無意中參加到的即興表演課程

這次因為公司走敏捷開發的緣故,跑去上海參加了一場很特別的「技術大會 – AHA 2017」,在出發之前,問了去年去過的同事之後,還是搞不太懂那是個什麼樣的會議,一直到了最後一天,早上,還是搞不懂那場大會的主題,不過在大會第三天的下午,我跑去其中一個「即興劇:團隊共創力工作坊」的議程,讓我終於在議程將要結尾時找到了我的 AHA Moment。

說起來所謂的即興表演課程似乎也不是只有大陸那邊才有,即興劇的英文叫做 Improvisational Theatre,隨便 Google 了一下台灣這邊也有好幾個,例如這間勇氣即興劇場從 2004 年開始就引進了即興劇,我們新加坡的同事在那參加的培訓課程在台灣這邊也開課過。只是台灣的即興劇團和企業之間的連結多半聚焦在創意領域,和敏捷圈的關係挺小,當然也可能是台灣敏捷圈的愛好者相對太少,還在集中力量在敏捷或 SCRUM 上,以致於很多周邊領域的知識圈並不像國外那樣子連結的很好。

2017-04-15 13.12.58

這個課程算是一個體驗式的活動吧,大概 3 個小時左右,這邊也順便幫講師們打個廣告,如果你有興趣而且人在上海的話,可以去找他們上課,也不講什麼高大尚的東西,光即興表演這樣子的內容也是夠有趣的,就算當成抒壓的活動也是值得推薦。

根據這個即興表演工作坊 -「飛來即興」的說法,即興表演有三個重要的因素,分別是:

1. Yes, AND
2. Don’t think
3. All about your group

而我們最終的作業是要演一段這樣子的即興表演出來:

即興表演-拍手叫停

說實在的,一開始看到這麼有趣的影片時,在場的所有人包括我,直覺的就是那麼一句話:不~ 可~ 能~ ,由於 AHA 的參加人員主要都是 IT的開發者或相關人員,簡單說就是大家的宅屬性都非常的高,要讓我們這些宅男宅女們演戲,真的就是要叫大家去符合 AHA 的口號 – 不要臉。

不過負責領課的兩位老師:正一 和 奮鬥 算是準備充分了,這三個小時的時間並不是叫大家一開始就上台演出這種高難度的戲,而是讓大家漸漸地放下心防循序漸進的帶領,慢慢的讓大家進入狀況。

從講話開始練習

一開始我們就從「講話」開始演,演什麼呢?既然是即興表演,用台灣的方法說就是話虎爛,我們從 No~~~, because 這個 pattern 開始演,再來是演 Yes~~~, but 這個樣版,最後才走到核心的 Yes~~~, and。舉個例子來說,

場景:Hi,Paul,晚上去看個電影好嗎?
No, because 的回答:沒辦法耶,因為我晚上得去補英文
Yes, but 的回答:哇,那部片我想看很久了,但是,我晚上得去補英文耶
Yes, and 的回答:太好了,我也想看那個電影,看完後我們還可以一起去旁邊夜市吃個宵夜

這樣子的設計也真的妙,講師這時候會讓大家想想看,在平常的團隊合作裡,大家的溝通是不是就是這幾種 pattern? 你喜歡的是哪一種的感覺? 大家是不是都比較不喜歡被拒絕的感覺?

心得:即興表演的第一要素和好的團隊合作一樣:Yes, And

肢體訓練

2017-04-15 15.06.40

講話講完了,接著就是練習肢體語言了,一開始講師給的指令是:讓你的隊友擺出一個你喜歡的姿勢,沒想到的是,當大家的姿勢擺完了之後,接著就是要讓你來解釋這個姿勢代表的意義,我看這時我們大家都有點措手不及,雖然還是有講得好的同學,但我自己就對我臨時掰出來的台詞很不滿意,我猜想這種練習是延續之前的講話訓練,進一步的加上你對隊友的觀察而得的結果。

疑~~這動作不是我自己擺的?解釋起來很難嗎?……沒錯,所以接下來的訓練就是:人力分鏡接龍(這是我擅自取的名字),這個階段你就得觀察前一個隊友擺出的姿勢,然後以 ‘Yes, and…’ 的概念承接下去,來去完善這個分鏡的要素,因為在一個即興的舞台上,合作的一群隊友,不是一個個人,在這樣子一個緊湊的環境下,你不但得注意自己的肢體語言,還得時時觀察你的隊友來做出即興反應。

心得:即興表演的第二要素:Don’t think,在表演舞台上想太多就冷場了,例如裡頭有個扮抹布的隊友,他就沒有考慮自己的形象就上了,所以換成在團隊裡頭,反應太慢,考慮太多的人也許就檔到了整個案子的流暢度

實際上場

前面好像講了一些,但其實講師們帶的訓練活動還要更多,為了自己懶不劇透,所以中間就容我草草跳過…………………………………………………………………………………………………………………………………….

最後就是驗收的時刻了,下面的影片中,除了黃色 T-Shirt 的是領課的老師,其他的人都是非專業的演員,也是我先前口中的 IT 相關從業人員,不知道你是不是也覺得這樣子的演出非常有趣呢?

心得:即興表演的第三要素:All about your group,不知道大家有沒有注意到,要完成這樣還算流暢的演出,不但要 1) Yes, … and  的接龍下去,而且還得要 2) Don’t think 用你最直覺的反應來接著演出,最後,所有的一切都是 3) All about your group 讓你團隊的戲變得好看、成功。

經過這三個小時的折騰之後,流了許多汗,但是就像是打了一場很順很漂亮的籃球一樣,隊友們目標一致,互相合作,雖然累,雖然弄花了儀容,但最後身上留下的是爽汗。想想自己在組織裡不也是這樣,當大家目標一致,大家期待的應該也就是在過程中是經歷到努力奮鬥、相互合作的感覺,儘管有時會累、會流汗,老實說也許還會有爭執、有摩擦,但最後達到目標時,就會覺得當初的過程很值得回憶(老頭子模式上身了),希望大家和我自己以後都能常享受到流了爽汗的喜悅,最後幫 J 姐分享一下,這樣子的課程對於不善於人群溝通,害羞、不敢從群眾跳出來的個性也非常有幫助喔。

Dell Dock – WD15 with 130W Adapter

自從上次失手買到沒有 E-Port Dock 的 Latitude E7280 之後,每天到公司插 2 條線 (一條電源線,另一條傳統 USB Dock 的線),然後還要把筆電螢幕打開按個啟動開關的這種生活令人感到越來越不優雅,想找個 Type-C 帶供電的 Dock 又覺得對不起自己的荷包,於是在某個夜深人靜的夜裡,淘著淘著就不小心淘來了一個 RMB 349 的 WD15 進來,加上刷卡手續費和國外交易費算來一千七出頭而已,比 Dell 米國的訂價省了四張多小朋友。

2017-03-15 16.08.14上圖中可以看出這是個二手貨,哥沒錢就不會學人裝逼,二手的能用就好,右下角有個開關,實測在我的 E7280 上可以正常運作,從此我到公司後不用打開電腦螢幕也可以開機,優雅+1。

 

2017-03-15 16.09.10
背面一如其他 Dock 般接了電源、網路、無線滑鼠、鍵盤和 HDMI 之後,全都正常運作無誤。

2017-03-15 16.09.25
我選的是含 130W 電源供應器的套餐,這自然也是二手的,賣家有特別說明的是,要使用 WD15 這個 Dock 時,在原本使用 45W 或 65W 變壓器的 Dell 機種上(eg. New XPS 13, Latitude E7270, E7470),要搭配 130W 變壓器,若原本使用 90W 含以上的變壓器時 (eg. New XPS 15),要買 180W的套餐,若原本的機種用了超過 130W 的變壓器呢 (eg. Precision 15 7000 或 17 7000)?那很抱歉這個 Dock 無法供電。另外非 Dell 設備最大供電只能到 60W,實測我同事的新版 MBP 13 with touchbar 可以使用。

2017-03-15 16.08.29
連接 Dock 部分的 USB 線材是固定的,不能拔開,個人猜測是怕經常的插拔、不小心拉掉的耗損

2017-03-15 16.08.01最後,我上班時終於只要插一條線就好,優雅再+1。