分類
記事

噪音

無盡的噪音在周圍出現,在疲憊的時候令人憤怒。把它們紀錄下來,或許可以舒緩下我的心情。

此刻,還算稍稍安靜一點,窗外從遠處傳來隔壁小區間斷的裝修噪音和拆路的噪音。一個是鋸東西的聲音,一個是咚咚咚的把水泥路敲碎的聲音。但是因為有一段距離,所以尚能忍受。而且這兩種聲音已經有點像是背景音一樣持續存在,所以只能接受它。

大概二十分鐘前,有一個低頻的嗡嗡聲,從洗手間房間傳來,不知道是什麼,響了十幾分鐘後停了。像這樣的噪音會出現在除了後半夜的任何時段。

昨天和大前天晚上,天氣越來越熱,不知道是哪家開了空調,空調室外機非常響。好在昨晚十一點的時候就關閉了。這個噪音是目前最大的困擾。這個小區的建築,施工質量非常差,根據我附近幾個樓層所在的物業群裡的報修信息,從走廊到陽台,到處都可能出問題。從大家去年搬進來,就不斷地在維修,我們這幾層樓幾乎每一家的洗手間都敲開重新做了防水。施工方和驗收方甚至把他們埋在樓角的刻著他們企業名字的小石碑都刨走了。

四月份本地疫情緩和後,隔壁小區的臨界商鋪中的那家燒烤店開業了。燒烤店營業到後半夜,吃燒烤的一群人喝了酒,大呼小叫,在我家裏關了窗戶都能聽到。第一次聽到時,Emanon 還以為是防疫人員在我們樓下安排做核酸,等下就要挨家挨戶來敲門了,就像一月份的某天半夜一樣。後來又有幾天晚上也是如此,吃燒烤的人中似乎有一個特別搞笑,總是不斷地逗得同坐的所有人爆發出一陣陣笑聲。我之前對與東北,東北人,東北的文化都很有好感,對東北現在的處境也保抱有很大同情,現在燒烤店吵得我睡不著為只蒙上了一絲陰影。

在我家窗戶右前方的路對面,是隔別小區的售樓中心。那裏現在已經關閉,成爲大家取(外賣送來的)菜的地方。疫情解封後,出現了一個年輕女性跳廣場舞。那個地方雖然小,但是玻璃門可以成爲一面鏡子。她帶著一個有燈的帽子,步伐滑稽誇張,音樂聲浪很大,詞曲聽了讓人汗顏。大概過了兩周,她收穫了一些學員。自從她有了學員,她就沒有跳超過十點了,估計學員要回家操持家務。所以除了被她用垃圾歌曲洗腦幾十分鐘,不影響晚上睡覺。

我家住在三樓,之前進了小區裡面是不用再刷卡進樓的。後來小區裡啟用了帶有人臉識別、指紋和刷卡功能的門禁,識別成功後鐵門會自動打開和關閉。就是這個鐵門,每次關閉的時候,劣質的電磁閥吸力很大,沒有緩衝,嘣的一聲還帶回音的。關了窗戶,躺在床上都能聽得到。剛開始的一週非常受不了,跟物業反映了,他們也解決不了。除了我之外也沒見別人再反映過這個問題,但二樓肯定聽的更加清楚。我只能訓練自己,心平氣和不要生氣,心平氣和不要生氣……現在過了這麼久,居然適應了,真的不生氣了。

上次疫情爆發前,我的樓上住的是兩位在建築工地上班的人,需要兩班倒。他們很豪放,半夜兩點回到家霹靂撲棱往地上丟東西,噠噠噠走去,用洗衣機洗衣服,然後上廁所,沖水,沖涼,在我家都聽得清清楚楚。有時候還會喝醉後在陽台上大聲在電話裏罵人。忍受了一段時間後寫了個紙條,請他們不要在半夜洗衣服,以及注意下往地板上丟東西樓下很像響,後來似乎是有所收斂。在然後就是疫情爆發,規定所有建築工地要閉環,他們就都搬走了。前幾日臨睡前,我們去陽台上吹吹風,無意間往樓上看,發現樓上陽台燈亮著,心想糟糕。後來發現他們還沒搬回來,陽台燈和廚房燈(客廳擋著窗簾不知道是不是也開著)就這麼一直這麼亮了這麼多天。我們去給物業說了這件事,想讓物業把他家電先斷了,但物業只是說會聯繫樓上。後來我去試了下把他家電斷了。既然說道了深夜洗衣,我要感謝下我樓下的鄰居,她買了一臺質量很差的洗衣機,每次洗衣服都像飛機要起飛。但是我在羣裏抱怨深夜洗衣擾民後,她就再沒在半夜洗過衣服,而是改到了早上或者晚上八九點的時候。既然說道鄰居,那麼同樓層的以爲酷愛拍手養生的大嬸也必須提一下,她是如此的熱愛拍手,白天拍晚上拍,經常在安靜的樓道里聽到啪啪啪的聲音。

附近有個學校,學生可以在這裡唸完小學初初中九年書,所以樓下有不少培訓機構。由於政策限制,原來的補習和英語鋪已經關了,現在都是美術音樂書法和武術。距離我家窗戶最近的那個藝術中心,教唱歌和打架子鼓。打鼓一直是同一首情歌,合唱則是一些幼稚的兒歌和紅歌。但是小孩太小了,根本記不住我和我的阻隔,所以有時候他們直接唱喵喵喵喵喵喵。

剛搬進來的時候,還有一個噪音是大概六七層樓的樓上滴水,水從高處打在我家窗戶上,啪啪想響,然後滴到二樓的一個平台(平台下就是此樓入口),在平台上形成了一個小水池。為了減少水滴砸窗的聲音,我只能找了一條毛巾,固定在窗戶的上沿。後來大概過了兩周,漏水修復了,水池一點點被太陽曬干了。說道這個平臺,那還有一件恐怖的事情就是就是高空拋物,半夜往下仍什麼都有,至少目前還無法杜絕。

小區裡另一個噪音是除草和消殺的聲音。我們剛搬過來的時候,物業有一個充電式便攜剪草機,沒有甚麼聲音,功率小,只能剪剪最弱的草本植物,灌木應該不行。後來他們採購了燒汽油的背在身上的割草機,功率強勁,聲音巨大。電工笨拙地用它把草坪剪的斑斑駁駁露出黃土,牆腳的野草也都剪死了。消殺是用一種有毒的白色噴霧逐個往地下管網裡噴,也是汽油動力的。每次消殺白煙滾滾非常可怕,但卻是一些住戶要求和喜聞樂見的,他們愚蠢地以為這樣就沒有蟑螂蚊子了。小區不遠有條小河,河邊有鬱鬱蔥蔥的植物,它們也不能免於綠化,隔一段時間,大概就是花花草草長得最好開花結果的時候,就會有一羣綠化公司的人用機器把它們剪掉,留下兩釐米高的合法草坪。它們管剪下來的花草和枝條叫「綠化垃圾」,會先用蛇皮塑料布包起來(市區財政預算足,用的是黑色或藍色的一次性大塑料),然後運到一處未知的綠化垃圾基地。

還有一個噪音,影響比較小,就是村裡的大喇叭。普通的情況下中午十二點和下午五點會播報一次,有疫情的時候會增加播報次數。播報的內容卻是很無聊,比如過馬路不要闖紅燈,機動車要禮讓行人。天氣炎熱,注意森林防火。打疫苗做核酸。喇叭的聲音在幾棟高樓間迴盪,實際上很難分辨出講的是什麼,上面這些都是我在戶外的時候才聽清的,在屋裡就只有嗡嗡聲。不知道是喜歡了以至於聽不到了,還是最近確實播放頻率有所降低,總之不太受到它的影響了。經過克服後已經可以無視的噪音還有附近快遞點點貨時手持掃描儀的滴滴聲,隔壁小區打開門時的滴滴聲……

這裏的電動車當然也叫,各種花樣的高頻報警,但是響度和密度不及市區裏,所以我暫且偷着樂。

分類
RIP

210207

今天早上,電鋸聲大作,十幾棵大樹被截斷肢體等待移除。

分類
記事

210206

早上下樓發現圖書館在擴建停車場。原來的自行車棚已經移除,車棚邊上的大樹正在被截肢,稍後應該也會移除。

附近的樹上掛了很多象徵喜慶的成串的燈籠。掛燈籠的人跟地上的工頭說,樹枝擋住燈籠了,工頭說把樹枝折斷就行了。樹枝就被折斷了。這裏的二三十棵小樹,本來已經相當悲慘,腳下只有一個直徑約一米的圓孔可以呼吸,方圓五百米盡是混凝土硬化的地面。

公園門口和很長一段圍欄,原來長滿了灌木,從裏面往不見外面的車流。現在灌木遭到移除,種上了草皮。

灌木遭到大批的移除,不只是原來景觀般存在的深南大道中間的灌木,還有北環大道、沙河西路路邊原生的灌木,都已「綠化」的名義換成了草坪。

分類
記事

本站 ping 測試

本站使用 Cloudflare CDN。

#2020.07.27 電信寬帶
--- ft.wupo.info ping statistics ---
100 packets transmitted, 87 received, 13% packet loss, time 99702ms
rtt min/avg/max/mdev = 166.320/169.025/215.651/5.270 ms
打開本站與V2EX都非常艱難,CloudFlare在國內估計要完
#2020.04.25 天威寬帶
--- ft.wupo.info ping statistics ---
100 packets transmitted, 100 received, 0% packet loss, time 99204ms
rtt min/avg/max/mdev = 26.391/39.281/122.939/12.868 ms
#2020.04.23 移動2G
--- ft.wupo.info ping statistics ---
100 packets transmitted, 100 received, 0% packet loss, time 99166ms
rtt min/avg/max/mdev = 415.581/741.601/1729.881/317.519 ms, pipe 2
#2020.04.21 天威寬帶
--- ft.wupo.info ping statistics ---
100 packets transmitted, 97 received, 3% packet loss, time 99321ms
rtt min/avg/max/mdev = 214.101/296.534/1009.363/87.242 ms, pipe 2
#2020.04.18 天威寬帶
--- ft.wupo.info ping statistics ---
100 packets transmitted, 61 received, 39% packet loss, time 100369ms
rtt min/avg/max/mdev = 1742.669/1791.945/1827.158/20.692 ms, pipe 2

本文更新於 2020/07/27。

分類
其它

451岌岌可危

requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
curl: (56) OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104

連線已逾時

連線到 ft.wupo.info 時發生錯誤。PR_IO_TIMEOUT_ERROR (20200817)

伺服器 ft.wupo.info 花了太久時間還是無回應。

連線到 dnsleaktest.com 時發生錯誤。PR_IO_TIMEOUT_ERROR

安全連線失敗

連線到 raw.githubusercontent.com 時發生錯誤。PR_END_OF_FILE_ERROR

本文更新於 2020/08/17。

分類
其它

使網站更節能的17種方法

原文由 Tom 在2019年10月23日發布與 Wholegrain Digital 原文鏈接:17 ways to make your website more energy efficient




關於網站的碳足跡,在過去的幾年中我們已經討論了很多。 互聯網的碳影響主要是由用電引起的。 現在的問題是:

作為網絡專家,我們可以讓互聯網更節能一些嗎?

本文旨在回答這個問題,提供一些方便的清單,通過這些方法您可以最大程度地減少能源浪費,並幫您確保您所創建的互聯網產品盡量節能。

而且,這裡列出的幾乎所有內容不僅可以幫助提高網站的能效,還可以改善網站的性能和用戶體驗!

網站能耗的一些背景

如果您不熟悉此主題,那麼簡短的說就是——互聯網,包括數據中心、電信網絡和終端用戶設備(如電話和筆記本電腦)會消耗大量電能。 實際上,如果將它們消耗的電量全部加在一起,互聯網所消耗的電量與英國(世界上最大的經濟體之一)消耗的電量大致相同。

數據中心 <---> 電信網絡 <---> 終端用戶設備

隨著我們在日常生活中不斷消耗越來越多的互聯網數據,互聯網消耗的電量也迅速增長。 它可能不容易被我們看到或想到,但互聯網的這種巨大功耗卻實實在在地產生了巨大的碳足跡,而這是我們需要解決的問題。

對於我們從事網頁設計和開發的人們來說,下面這些是我們可以做到的:

設計與內容

當我們談論網站的能源效率時,很容易就認為這只是一個純技術性話題。不是的,我們甚至可以在建立網站之前就提高能源效率。設計和內容對能效有很大的影響,以下是需要考慮的關鍵領域。

1. SEO(搜索引擎優化)

SEO似乎與網站效率沒有任何關係,但實際上,SEO的目標與降低能耗的目標在本質上是一致的。在針對搜索引擎排名優化網站時,我們正在幫助人們快速,輕鬆地找到他們想要的信息。如果搜索引擎優化的好,人們可以減少在網絡上查找信息和瀏覽不滿足其需求的頁面的時間。這意味著消耗的能量更少,用戶消耗的能量用到了實處。

2. 文案撰寫

與搜索引擎優化類似,文案撰寫會影響網站效率,因為它會影響人們花在瀏覽網站上的時間。 有時,我們希望人們在網站上花費大量時間,使自己沉浸在我們的內容中。我們不希望人們把時間浪費在只有很少價值或根本沒有價值的內容上。因此,清晰有效的文案寫作可以幫助減少用戶在互聯網上的浪費時間,進而減少浪費的能源。

3. 用戶體驗(UX)

良好的用戶體驗的核心要素之一是減少用戶使用過程中的摩擦。我們希望人們能夠找到想要的東西,並以儘可能簡化的方式來操作。良好的用戶體驗使每個人都可以更輕鬆而愉快地使用網絡,這再次減少了浪費精力導航到不正確的頁面上,或是盯著網頁推測下一步該點哪裡。

4. 減少或縮小圖像

在大多數網站上,圖像是頁面文件大小的最大貢獻者。您使用的圖像越多,這些圖像文件越大,則需要傳輸的數據就越多,所消耗的能量也就越多。無論技術上如何優化,設計人員和內容創建者都應仔細考慮其圖像使用方式。

  • 圖像是否真的為用戶增加了價值?
  • 它傳達有用的信息嗎?
  • 如果圖像較小,是否可以達到相同的效果?
  • 我們能否減少用戶看不見的圖像,例如輪播中的圖像?
  • 我們可以使用矢量圖形(甚至 CSS 樣式)代替照片來達到相同的效果嗎?

在不影響用戶體驗的情況下思考這些問題並將圖像保持在最低限度將有助於降低能耗。

5. 減少視頻

儘管視頻的使用頻率低於圖像,但視頻作為網上的一種內容格式正變得越來越流行,並且它是迄今為止數據強度和處理強度最高的內容形式。與圖像一樣,問下自己是否真的需要視頻。如果是這樣,請查看是否可以通過禁用視頻自動播放並保持視頻內容簡短來減少視頻產生的網絡流量量。就頁面大小而言,具有視頻播放功能的網站可能比沒有視頻的網站大一個甚至兩個數量級,並給用戶的CPU帶來更高的負載,從而導致能源消耗大大增加。

6. 仔細選擇字體

網絡字體可以增強網站的視覺吸引力,但也大大增加了使用它們的網站文件大小。單個字體文件可能多達250kb,這還只是標準粗細。如果要加粗,需要再多250kb!

為了幫助減少自定義網絡字體的影響,設計人員應考慮以下選項:

        
  • 盡可能使用系統字體。它們並不總是那麼漂亮,但是可以使用諸如 Arial 和 Times New Roman 這樣的字體,而根本不加載任何字體文件,因為它們已經在用戶設備上了。
  •     
  • 使用較少的字體變化。您可能會覺得確實有必要使用自定義網絡字體,但是在選擇的字體數量和每種字體使用的不同粗細數量方面要節儉。

開發

開發人員對他們創建和維護的網站的能源效率有很大的影響。儘管設計師和內容編輯做出的某些決定不在開發人員手中,但是在某些領域中,開發人員可以完全控制,在這些領域中,他們可以優化所提供的內容和設計。

7. 編寫整潔的代碼

整潔,精簡的代碼本來說是一件好事。保持代碼簡潔明了,避免重複代碼並編寫高效的查詢語句。幕後的代碼看上去應該像是一台保養良好的精緻機器。

請記住,這不僅適用於您編寫的代碼,而且還適用於您借來的代碼。如果您使用的是現有的框架和庫,請確保它們也得到了完善和調試,以有效地提供所需的功能,並且您沒有在用高射炮打蚊子。如果您使用的是 WordPress 之類的內容管理系統,請避免使用不必要的插件。這些插件會增加負擔,請盡量選擇服務器負載較小並且不會在前端增加不必要的文件大小的插件。我們的格蘭諾拉入門主題旨在幫助您做到這一點。

8. 減少使用 JavaScript

JavaScript 通過兩種方式影響網站效率:通過增加文件大小到網頁上以及增加用戶設備所需的處理量。其中的第二點比其他類型的文件更明顯。

由 JavaScript 驅動的功能在用戶的電腦或手機上處理,並增加了CPU使用率,從而增加了設備的能耗。聽到筆記本電腦上的那些呼呼響的散熱風扇聲了嗎?那正是能源被浪費掉的聲音。

尋找使用更有效的技術(例如 CSS )來實現前端交互、功能和動畫,或者至少有效地使用 JavaScript 。此處應特別提及跟踪和廣告腳本,這些腳本很少為用戶提供價值,但卻會增加文件的大小,導致大量的CPU運算,降低網站速度並可能侵犯用戶隱私。 Webtest.app 是一個衡量廣告腳本的性能、數據和能源消耗影響的出色工具。

Safari 中新的網絡檢查器提供了一個有用的工具,可幫助評估網頁對最終用戶設備的能源消耗影響,蘋果 Webkit 開發者的這篇文章 提供了一些詳細的使用建議。

9. 優化圖像

如上所述,圖像是大多數網頁上傳輸數據量最大的貢獻者之一。除了設計者和內容作者能對圖像使用做出決定外,還有一些技術決定會嚴重影響頁面上顯示的圖像文件大小。這些包括:

  • 以正確的比例加載圖像,而不是依靠CSS來調整它們的大小,從而避免加載比其顯示比例大的圖像。
  • 使用 TinyPNGShortPixel 之類的工具壓縮圖像文件而不會造成質量損失。我們在這裡記錄了我們最喜歡的圖像壓縮工具
  • 對每個圖像使用最有效的文件格式,例如 WebP 而不是 JPEG 。

遵循這些步驟後,可以顯著減小圖像文件的大小,從而減少能耗並縮短加載時間,而不會給網站訪問者帶來不利影響。

10. 優化字體

有一些技術方法可用於減少網站上的字體大小,即使使用自定義字體,它也可以使文件大小減少97%之多。嘗試以下方法以減小字體文件的大小:

  • 堅持使用 WOFF 和 WOFF2 之類的現代網絡字體文件格式,與 TTF、OFT 和 SVG 文件格式相比,它們使用更高的壓縮方法。
  • 子集字體僅包含網站上所需的字符。

有關優化網絡字體的性能和大小的更多信息,請參閱 Josh 的這篇文章

11. 使用加速移動頁面(AMP)

加速移動頁面旨在通過去除不必要的代碼和文件大小來簡化移動設備上的內容加載,並提供原始網頁的簡潔版本。從理論上講,如果網站效率高,諸如加速移動頁面之類的技術實際上並不會有多大幫助。但是在原始網頁不夠理想的情況下,加速移動頁面可以成為一種有用的工具。它可以快速地生成出提供面向移動用戶的更輕便,更節能的版本。

還應注意,谷歌尤其優先考慮移動搜索結果中與新聞相關主題的加速移動頁面內容,因此它可以幫助提高網站內容的曝光量。缺點是您的內容可能會在谷歌產品上提供,而加速移動頁面刪除的某些內容可能是您認為重要的內容。這是一個功能強大的工具,但要謹慎使用。

12. 建立靜態網頁

內容管理系統支持的網站對網站數據庫進行查詢並動態生成頁面。簡單來說,這意味著網絡服務器必須進行處理,考慮每次有人嘗試加載頁面時要向用戶發送哪些信息,這將導致服務器消耗更多的能量。一種解決方案(下面列出來)是使用服務器緩存技術,但是在某些情況下,可能完全不用數據庫就可以簡單地對靜態網頁進行服務器處理。

這可以通過將網頁直接編寫為 HTML、CSS 和 JS 等靜態文件,或者使用靜態網站生成器或專業的靜態網站託管服務商將由內容管理系統生成的網站轉換為靜態文件來實現。

13.使用漸進式網絡應用技術(PWA)

漸進式網絡應用技術使網站能夠利用通常只有本地應用程序中才能看到的功能。就像克里斯最近寫道,漸進式網絡應用技術的核心功能之一是能夠在用戶設備上緩存文件,這意味著在重複訪問時無需重新加載內容和資料。這可以顯著減少重複訪問者加載的數據量,尤其是在移動設備上,其數據傳輸比有線連接的能耗更高。想其他那些方法一樣,它也可以幫助縮短加載時間和用戶體驗,而沒有任何實際缺點。

網絡主機託管

數據中心中的網站以及與數據中心之間的數據傳輸都消耗大量能量。因此,精心選擇網絡託管服務可能會對能源效率和網頁速度產生重大影響。以下是要考慮的要點。

14. 使用服務器緩存

對於使用內容管理系統的網站(例如 WordPress 或 Drupal ),每次有人訪問網頁時都會動態生成頁面。這是非常低效的,因為它需要針對每個單個頁面進行服務器處理,從而增加了網絡服務器的能耗。

諸如 Varnish 之類的緩存技術可以預先生成每個頁面的靜態版本,從而為大多數訪問者顯著地減少服務器開銷,不僅降低了服務器的能耗還對大大優化了頁面加載時間。

雖然設置起來可能很複雜,但是許多主機(例如 KinstaWP Engine )現在都提供此選項作為現成的功能,這意味著您只需付出很少的精力就可以提高網站的能效和網絡性能。

15. 選擇具有較高電源使用效率(PUE)等級的主機

PUE 也就是「電源使用效率」是通常被用來對數據中心進行能源效率評估的指標。通過將進入數據中心的能量除以用於運行其中的計算機的能量來確定電源使用效率。然後,這突出顯示了在非計算活動(例如冷卻)上浪費的能量數量。數據中心的典型電源使用效率約為1.67,這意味著進入數據中心的每1.67瓦電中,只有1瓦電用於為計算系統供電。由谷歌運營的高效數據中心的電源使用效率可以高達1.11

16. 使用靠近用戶的數據中心

互聯網使用的大量能量用於通過電信網絡傳輸數據。毋庸置疑,信息傳播的越遠,其旅行所消耗的能量就越多。因此,選擇靠近目標受眾的數據中心將有助於減少能耗。例如,您可能會從美國的託管公司那裡找到便宜的網絡託管套餐,但是如果目標訪問者在英國或德國,則將浪費能源在整個大西洋上傳輸數據。而且,這種額外的距離也可能導致頁面加載時間的延遲,因此將您的網站放置在靠近主要受眾的數據中心內將對用戶體驗和地球都有好處。

17.使用 CDN(內容分發網絡)

將數據中心放置在與主要受眾群體接近的地方非常好,但是如果您的受眾分佈在世界各地,那就沒那麼容易了。內容分發網絡( CDN )為此提供了一個很好的解決方案,可以為來自全球數據中心網絡的資料(例如圖像文件)提供服務。這意味著在大多數情況下,將從用戶自己區域中的 CDN 位置加載最大的文件,從而減少了每次加載頁面時數據傳輸的距離。於是,能源效率得以提高,頁面加載時間得以縮短。

總結

至關重要的是,我們減少了網絡行業內的能源浪費。我們很難甚至不可能準確地測算網站的能源消耗(儘管有諸如 Website Carbon 和 Safari 網絡檢查器之類的工具提供幫助),但是我們可以做很多事情來消除浪費並提高效率。這些操作大多數都不是不可能完成的任務,它們只需要在設計,內容創建,開發和託管的各個方面都注重細節並仔細思考。

而且,我們這些有助於提高網站能效的方法,同時也帶來了多方面的好處,無論是更好的 SEO ,更好的網絡性能還是更好的用戶體驗。一個高效的網站從根本上說是一個更好的網站。

如果您有減少網站能耗的技巧,請聯繫並告知我們

另外,如果您有興趣創建更綠色的網絡空間,請閱讀並簽署《可持續網絡宣言》

彩蛋小撇步!

自從發布此文以來,我們還就如何減少網站的能耗提出了一些其他建議。

18. 阻止爬蟲

BlogVault 的 Akshat Choudhary 建議,阻止網絡爬蟲可以降低能耗。他說:「網絡爬蟲通常會佔用處理和帶寬等資源的50%。」

19. 深色模式

Hazel Ho 建議減少空白空間並採用深色模式。深色的網站是許多年前在網站上普及的節能技術之一,並且隨著液晶屏幕的出現而逐漸消失,液晶屏幕不同於 CRT 屏幕具有永久背光,無論屏幕上實際可見的顏色如何,都使用相同的能量。但是,隨著 OLED 屏幕分別點亮每個像素的出現,使用較暗的顏色再次成為減少終端用戶設備能耗的可行技術。

20. 使用最新的 PHP 版本

這是來自 Kinsta 的 Katalin Juhasz 提出的建議,我們還應該考慮服務器上運行的技術,以確保我們使用最有效的版本。她特別提到,較新版本的 PHP 不僅速度更快,而且使用的服務器資源更少,因此能耗也更少。 Kinsta 撰寫了有關更新 PHP 版本的好處以及對性能的影響的文章。毫無疑問,這也將適用於其他非 PHP 的方案。




如果我們不能保護地球,我們就也不能保護我們自己。環保不是送給瀕危野生動物的禮物,而是在實實在在地保護我們自己。少點一次外賣,不要浪費食物,循環利用塑料袋,使用公交卡而非二維碼搭乘公共交通,減少網上衝浪的時間用來思考,這些都是有用的。

分類
程序

python查詢aqicn的空氣質量數據

#!/data/data/com.termux/files/usr/bin/python
# -*- coding: utf8 -*-

#aqicn空氣質量 #https://aqicn.org/api/
#v2 同時指定多個監測站,已防止單個站點很久不更新數據
import json,requests,sys,time

#token從https://aqicn.org/data-platform/token/獲取,只需郵箱即可
token = 'YourToken'
#預設為當前IP位置,可自行指定基站,幫助 --help
stationList = ["@5851","@5855","@5860"]

def getAqi(station):    
    aqiUrl = "https://api.waqi.info/feed/"+station+"/?token="+token
    try:
        res = requests.get(aqiUrl)
        a = res.json()
        if a['status']=="ok":            
            if time.time() - a['data']['time']['v'] < 86400:
                return a
            else:
                return {"status":a['data']['city']['name']+"的數據已過期。"}
        else:
            res = requests.get(aqiUrl)
            a = res.json()
            return a
    except:
        return {"status":"net error"}

def searchStation(keyword):
    searchUrl = "https://api.waqi.info/search/?token="+token+"&keyword="+keyword
    try:
        res = requests.get(searchUrl)
        a = res.json()
        res = []
        if a['status']=="ok":
            for s in a['data']:
                resT={}
                resT['uid']=s['uid']
                resT['name']=s['station']['name']
                resT['aqi']=s['aqi']+" ("+s['time']['stime']+")"
                res.append(resT)
            return res
        else:
            return a
    except:
        return {"status":"net error"}
def processAqi(aqiJson):
    s=aqiJson
#     print(json.dumps(s, indent=4))
    res={}
    if s['status']=="ok":
        res['cityName']=s['data']['city']['name']
        res['time']=s['data']['time']['s']
        res['aqi']=s['data']['aqi']
        try:
            res['pm25']=s['data']['iaqi']['pm25']['v']
        except:
            res['pm25']="N/A"
        try:
            res['pm10']=s['data']['iaqi']['pm10']['v']
        except:
            res['pm10']="N/A"
        try:
            res['temp']=s['data']['iaqi']['t']['v']
        except:
            res['temp']="N/A"
        try:
            res['humidity']=s['data']['iaqi']['h']['v']
        except:
            res['humidity']="N/A"
        try:
            res['wind']=s['data']['iaqi']['w']['v']
        except:
            res['wind']="N/A"
    else:
        res=s
    return res

def main():
    global station
    if len(sys.argv)==1:
        for station in stationList:
            res = processAqi(getAqi(station))
            print(json.dumps(res, indent=2, ensure_ascii=False))
    elif len(sys.argv)==2:
        station = str(sys.argv[1])
        if station == "--help":
            res={"@5851":"根據觀測點編號查詢","Nanyang":"根據城市名稱查詢",
                 "here":"根據IP查詢","s shenzhen":"查詢深圳觀測點",}
        else:
            res = processAqi(getAqi(station))
        print(json.dumps(res, indent=2, ensure_ascii=False))
    elif len(sys.argv)==3:
        res = searchStation(str(sys.argv[2]))
        print(json.dumps(res, indent=2, ensure_ascii=False))
    
if __name__ == '__main__':
    main()

前天迎來如秋後的第一場中度霧霾。

本文更新於 2018/11/08。