福島農夫的七種土質實測:土壤輻射污染越高,作物污染越嚴重

文:宋瑞文(媽媽監督核電廠聯盟特約撰述)

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

日本群馬縣養豬場爆發豬瘟 將撲殺5400頭豬隻

摘錄自2020年09月27日中央通訊社日本報導

日本農林水產省26日宣布,群馬縣高崎市一座養豬場發現豬隻感染家畜傳染病豬瘟(CSF),縣當局將依法撲殺養豬場內全部約5400頭豬隻。

時事通信社報導,這座養豬場為預防感染豬瘟,曾為豬隻接種疫苗,但確診感染的小豬並未接種疫苗。

這是時隔約半年,日本國內養豬場再度爆發豬瘟疫情,也是自2018年日本國內睽違26年首度爆發豬瘟疫情以來,群馬縣內養豬場首度確認感染。

群馬縣當局於發現野生野豬感染豬瘟後,從去年10月起,著手為養豬場接種疫苗。

生物多樣性
循環經濟
國際新聞
日本
豬瘟
經濟動物

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※台北網頁設計公司全省服務真心推薦

※想知道最厲害的網頁設計公司"嚨底家"!

※推薦評價好的iphone維修中心

食腦變形蟲入侵美德州水源 當局急籲勿用自來水

摘錄自2020年09月27日中央通訊社美國報導

美國德州雷克傑克森市(Lake Jackson)當局呼籲居民不要使用自來水,因為水中可能含有致命的食腦微生物福氏內格里蟲(Naegleria fowleri)。

德州環境品質委員會(Texas Commission on Environmental Quality)表示,在「自來水系統獲得充分沖刷,且採檢樣本顯示水質已安全無虞可供使用」以前,雷克傑克森居民應該持續避免使用自來水。

福氏內格里蟲蹤跡遍及世界各地。美國疾病管制暨預防中心(CDC)表示,美國境內多數感染案例都出現在南方各州,福氏內格里蟲透過受污染的淡水感染人類,經由鼻腔進入人體使人致病。若遭感染,致死率相當高。感染者會出現發燒、噁心、嘔吐,以及頸部僵硬和頭痛等症狀,多數感染者會在1週內喪命。這類病例在美國境內相當罕見,2009年到2018年間僅傳出34起案例。

污染治理
國際新聞
德州
自來水
CDC
水污染

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

花15萬買了輛看起來值50萬的國產車?

VV5的儲物格的數量不算特別多,擋把前方的儲物格並不能固定打開不知道是否是個例,除了常規的杯架等儲物空間以外,再也沒有其他的儲物格,隨身的物品需要合理安置。後備箱空間規整,兩側有網兜可以放一下容易滾動的物品。

很多人的心裏認為:自主品牌就是低廉,就是low的體現,買自主品牌車就是傻。其實,我們不應該人云亦云,雖然自主品牌的技術沉澱沒有外國傳統汽車大廠深厚,但我們也不應該一味地貶低,自主品牌需要我們的鼓勵和支持。

就像我們今天試駕的WEY VV5一樣,不熟悉WEY的朋友不用着急,簡單來說WEY是長城汽車旗下的子品牌,主打高端市場。WEY這個品牌在上市之初就受到質疑:自主品牌到底能不能打造豪華車?那麼到底中國的豪華車應該是怎樣的?帶你一一揭曉。

第一眼看到VV5的時候,有種熟悉又陌生的感覺,整體來看VV5跟大哥VV7相似度很高,如果不把兩輛車停在一起,很難分辨清楚到底是大哥還是小弟。VV5的車身尺寸都比VV7小一圈,也是更加符合VV5的定位。轎跑的造型動感十足,短小的尾部個人認為不太協調,沒有了轎跑車優雅流暢的尾部線條。LED大燈是VV5的標配,並且全車多處WEY車標演變過來的元素,例如豎條狀的LED日間行車燈,豎條狀的鑰匙等,無處不強調WEY的家族基因。20寸的大輪轂是頂配車型專屬,視覺效果滿分,尾部四齣的排氣也相當唬人。

走進車內,國人喜歡的豪華感統統奉上,例如真皮座椅,懸浮式中央显示屏,全景天窗等“高大上”的配置全部具備,中控台除了懸浮的中央显示屏以外,其餘的裝飾幾乎為零,層次感也不足,好在軟塑料的質感不錯。平底的方向盤給人一絲運動感,不過對於一台SUV來說,裝飾作用>實際效果,並且手很容易誤觸到多功能按鍵。中央多媒體系統依靠擋把后的旋鈕+按鈕控制,兩側則是行車輔助功能控制區域,例如車道保持,盲區監測,自動泊車等。全液晶儀錶很有科技感,能夠切換3種不同的主題,显示內容也不錯,日常使用的信息均有显示。

從外觀上看,VV5的漆面以及做工及格,同一塊鈑上下的厚度差別有點大,整體在97-115μm之間,縫隙還算不錯,除了尾門稍有點大以外,其餘的都在正常水平之內。

本次試駕的VV5使用了紅內飾,在運動感的營造上不錯,但可能不能滿足大部分人的需求。六向電動調節的座椅包裹性一般,坐起來適中,可能為了長途乘車不會太累而設計。

VV5的儲物格的數量不算特別多,擋把前方的儲物格並不能固定打開不知道是否是個例,除了常規的杯架等儲物空間以外,再也沒有其他的儲物格,隨身的物品需要合理安置。後備箱空間規整,兩側有網兜可以放一下容易滾動的物品。

VV5全系只有一種動力總成,2.0T+7速雙離合變速箱的組合,最大馬力197ps,最大扭矩355N*m,看起來參數不錯,發動機艙用塑料板封起來,看起來比較整潔,但不利於機艙的散熱。

雙離合變速箱也是偏向舒適調校,換擋動作不快,換來的是平順性。在中段加速的時候,變速箱不願降擋,而且降擋速度很慢,給下動力請求后需要等待一會才會降擋。總體來說變速箱表現一般。

VV5的百公里加速時間為9.5S,制動距離為37.8米,表現優秀。

開起來發動機的渦輪遲滯明顯,號稱2000rpm就能達到峰值扭矩,但開起並沒有什麼爆發感,整體動力輸出偏平順,日常使用還好,激烈一點駕駛就有點不盡人意了。

VV5的轉向手感有3種模式可調,總體來說普通模式會稍微適合日常駕駛,方向盤隔絕掉所有的路感,盡量做到舒適。

底盤的厚實感VV5的確做得不錯,懸挂的表現則不盡人意,前段硬後段軟,快速過彎支撐性一般,走過連續顛簸,車廂會有一定的晃動。

VV5的隔音在同級別來說是前列水平,整體的隔音降噪都不錯,發動機噪音是VV5主要的噪音源,其餘的風噪路噪都隔絕得很好。

VV5全系只有兩款車型,超豪型和旗艦型,售價分別為15.00萬和16.30萬,兩者之間配置差距不大,如果預算充足可以選擇旗艦型,無論是20寸輪轂還是全液晶儀錶盤都是比較彰顯科技感,而車道保持系統會讓你在巡航的時候更安全。

總的來講,VV5的表現可以用“第一眼美女”來形容,第一眼看過去,轎跑的造型,大輪轂,全景天窗,真皮內飾,全液晶儀錶盤通通配備,給足你認為豪華的東西,所有東西看上去都很好,但真正開起來,VV5的不足就開始出現,變速箱表現不盡人意,懸挂動作不夠乾脆等都是VV5的不足之處。如果你僅僅是在市區行駛,需要有一台拉風的座駕,VV5可以滿足你的要求,15萬你還能要求這麼嚴格嗎?

本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

比昂科威貴不了幾萬,都20多萬了為啥不看看奔馳寶馬?

奔馳GLA的發動機動力表現不錯,低扭頗為強勁。但是它搭載的7DCT變速箱在調校方面離完美還差一些,它的低速有一些頓挫。其整體傳動效率較高,動力和油耗表現都不錯。寶馬X1的車身尺寸、車內空間比起同場的奔馳GLA、奧迪Q3要更富有優勢。

您是否看見滿大街跑的途觀L、昂科威、冠道等車型后,覺得有些千人一面、審美疲勞?其實差不多的價位,已經有不少豪華品牌的入門SUV車型供我們選擇!下面咱們就來看看這些車型是否具備良好表現!

奧迪Q3的車身設計“德味”很重,它造型飽滿、大氣,尾部的設計精緻感強。但屬於產品生命末期的它,內飾設計保守,而做工的精緻度頗高、用料也不錯。

奧迪Q3日常開起來能讓人感到“零壓力”,它的轉向和油門很輕盈,在市區中穿行尤為輕鬆。它的動力匹配程度高,降擋速度很快捷,用戶想要稍為激烈駕駛,它也能給出很好的配合!

作為廣汽謳歌推出的首款車型,謳歌CDX肩負着打開市場的重任。它的造型極其前衛,而且看到實車時你就會能感受到其設計的精緻感!而內飾造型層次感突出,還採用了大面積的軟性材質和皮革包裹,質感不錯。

謳歌CDX的1.5T發動機採用了缸內直噴技術,與之匹配的是一副8擋雙離合變速箱。該雙離合變速箱帶有液力變矩器,這讓它換擋平順,降擋的速度也相當快,動力系統匹配是高效的。這讓它的油耗較低,兩驅車型也能在8.35秒內破百,表現良好。

奔馳GLA的車身設計除了動感、柔美以外,還富有性感氣質!最喜歡的是它的側面輪廓緊湊,動感氣息濃厚!而且它的內飾帶有較高的豪華氣息,也富有動感!當然,它的配置方面有待提高,起步價也不算低。

奔馳GLA的發動機動力表現不錯,低扭頗為強勁。但是它搭載的7DCT變速箱在調校方面離完美還差一些,它的低速有一些頓挫。其整體傳動效率較高,動力和油耗表現都不錯。

寶馬X1的車身尺寸、車內空間比起同場的奔馳GLA、奧迪Q3要更富有優勢。它2780mm的軸距,4565mm的車身長度要更符合緊湊型SUV的定位!車身設計富有力量感,氣勢較強。

寶馬X1入門車型採用的1.5T發動機,動力參數略顯保守,而匹配的6AT變速箱平順性挺好,換擋邏輯中規中矩。中高配車型採用的2.0T+8AT動力總成表現頗為出眾!因此更推薦大家提高預算選擇2.0T車型。

雷克薩斯NX的設計相當前衛,犀利的紡錘型中網富有氣勢,車身線條硬朗,燈組造型獨特。而且內飾精緻感強,用料較好。

而雷克薩斯NX提供了豐富的動力組合,其300h全驅鋒致版車型上搭載的電機總扭矩達409牛米,官方破百時間9.2秒,百公里綜合油耗為6.1L,更側重於低能耗的調校讓它油耗很低,續航里程頗高。

寫在最後:這6款豪華SUV車型,具備良好的實用性,設計也大多前衛、個性,年輕人駕駛起來相當合適。當然它們之中部分車型優惠較大,喜歡的朋友可以去了解一下!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※台北網頁設計公司全省服務真心推薦

※想知道最厲害的網頁設計公司"嚨底家"!

※推薦評價好的iphone維修中心

A800/580/途安L/奇駿/奧德賽/銳界,7座車大亂斗!

4T+7速雙離合真的難逢敵手,有動力,又夠快速,還平順,頓挫。不好意思,我們大眾的雙離合真的沒有,你說用幾年之後就會有。那是之後的事情。而且,大眾紮實的底盤質感在途安L上也得到體現,這也是很多人喜歡大眾車的其中一個原因。

在SUV市場繼續高歌猛進的同時,有兩股勢力正隱隱膨脹——旅行車和7座車,一個是人們為情懷買單,一個是解決了實際需求。只不過誰都還是不願意只做一個7座車(MpV或微面),都還是想抓住SUV市場,於是很多7座SUV進入了各個級別區間。今天,我們找來了6台不同級別的7座車,他們分別是10萬級的東風風光580、長安歐尚A800,20萬級的日產奇駿、大眾途安L,30萬級的福特銳界、本田奧德賽。一起來探討一下,到底誰的空間大,誰的駕乘表現好,而你,又該選誰?請看視頻/文章……

10萬級風光580vs歐尚A800

風光580 7.29-12.30萬,A800 5.99-11.99萬

風光580的銷量還是挺不錯的,我猶記得它上市發布會那100個網紅,咳咳,它的火熱,主要是因為在這個價位很難找到像它這樣質感相對較好的7座SUV車型。

設計方面我就不多聊了,個人覺得車頭和車側的部分線條神似本田繽智,外觀方面還挺Nice,但內飾老氣了一些。

有人說,這車就是一個“日系”車,因為是逆向研發出來的。我不去評判這個說法,我只想說,這車駕駛起來還真有這麼回事。動力比較疲軟,配合CVT變速箱,基本上就是落入“舒適、平順”(肉)的範疇。懸挂方面也是偏軟了一些,舒適性倒是沒有太多問題,不過確實沒有太好的駕駛感受。NVH也如此,各方面的噪音空間都是中等水平。

机械性倒是沒有什麼問題,例如不會有明顯鬆散的感覺、不會有過多的抖動或者異響,每個月這麼多人購買它,說明還是可以接受的(看在價格份上)。

這台車的行駛質感比上面說的580要好,畢竟是新車,且長安的造車水平自然更勝一籌。你會覺得這台車的机械質感更加緊緻,低速時候的噪音控制是意外的好,動力輸出會多了一股衝勁,主要是因為它是偏低扭輸出一些,且用的是手動變速箱。

當然,它也有問題,一來畢竟是較長的MpV車型,懸挂的後段支撐不算很到位,所以稍微快一點的操作它是應對不過來的。另一方面的問題出在濾振上,有種拉不住彈簧的感覺,整台車左右多餘晃動比較多。噪音也是,在速度起來之後有點控制不住。

223布局的座椅,在長車身、長軸距下換來不錯的乘坐空間,三排座位都能夠坐人,且也有一些配置照顧到第三排的乘客,倘若平時真的很經常多人出行,那麼我覺得這種MpV會是更好的選擇。

20萬級奇駿vs途安L

奇駿17.98-26.88萬,途安L15.58-19.98萬

奇駿嚴格意義來說算不上7座車,不過既然它有7座就逃不過我們的“魔爪”,5座的奇駿賣得好這點沒有人懷疑,我們還是來看看7座的表現吧。

2.5L+CVT的奇駿並不是人們印象中日系車或者日產車那種中庸中庸的調校,甚至低速時還有股蠻勁,平順和動力之間取得了不錯的平衡。底盤也如此,雖然是“沙發廠”,但不是一味的軟,濾振有高級感,懸挂有韌勁,操控方面也可圈可點。而且,也沒有一貫日系車那種單薄的感覺,噪音、震動都有一定的抑制。

相對大尺寸的奇駿在緊湊型SUV里算是大個子了,所以也有了不錯的第二排空間,不過同樣地,5座設計的它加入了2個第三排座椅,表現自然有限,還好7座車只有兩個配置,看來只是滿足一下部分特殊消費者的需求。

途安L則是一台典型的大眾車,我這麼說你真的很難反駁,通用化的零件、一樣的動力搭配,甚至差不多的前臉和中控設計,簡單想想都大概知道它的駕駛感受。不過我還是要稱讚一下大眾,這套1.4T+7速雙離合真的難逢敵手,有動力,又夠快速,還平順,頓挫?不好意思,我們大眾的雙離合真的沒有,你說用幾年之後就會有?那是之後的事情。

而且,大眾紮實的底盤質感在途安L上也得到體現,這也是很多人喜歡大眾車的其中一個原因。

途安L的第二排算是一個亮點,3個座位都是獨立的,雖然犧牲了一些寬度,但這樣卻優化了中間那位乘客的體驗,不用被隆起的座椅擱屁股。進入第三排很方便,一鍵放倒毫不拖泥帶水。第三排的座椅礙於車身尺寸,一樣是比較有限,只適合坐身材“好”的人或者小朋友。

30萬級銳界vs奧德賽

銳界22.98-42.98萬,奧德賽22.98-35.48萬

提及7座SUV,應該大部分人會想到銳界或者漢蘭達,這兩台車價格雖然不低,但也都挺火的,畢竟到了這個價位7座車就沒有什麼好選的了。

福特把運動刻在基因里,銳界的運動感自然也不在話下,2.0T用在這個尺寸和重量的車上百公里加速時間只能說還行,但實際的感受卻不一樣,它很樂意停留在高轉速,讓提速來得很狂野,只是油耗就有些難保障了。操控感也是一流的,反應很快,支撐很足。銳界的NVH是對得起其價格的,底盤有高級感,不過路感會清晰一些。

尺寸足夠大的銳界二排空間沒有毛病,但可惜了,第三排的座椅依然是“小板凳”,空間也一樣需要第二排給它騰,甚至腳掌也一樣不能放平。有些遺憾。高配的銳界第三排、第二排座椅都支持一鍵放倒,這是銳界的一個亮點。

奧德賽和GL8是目前這個價位MpV的典型,我覺得奧德賽還是會更舒適一點。

奧德賽用的是2.4L自然吸氣發動機加CVT變速箱,然而你卻不能少看它——本田發動機廠的調校可不是蓋的,動力輸出很順暢,肉感會有一點,但你會發現這個動力很懂你,能否滿足你的精準操作。只不過,它還是比不上競品們的2.0T來得猛烈。

駕控方面也讓人有些出乎意料之外,不會過分軟,不會過分輕盈,開起來還是很稱手的。略感可惜的是,噪音控制還是不太到位,這一點會讓它的商務性、甚至家用性都扣上點分。

奧德賽的大空間真的就毋庸置疑了,第二排還有頭等艙座椅,有多向調節、腳拖等,讓你坐得舒舒服服,左右兩個座椅的距離也可以調整,這點還是很巧妙的。

第三排座椅雖然也不見得是多完整,但起碼空間、坐姿沒有太大問題。可以說,如果你認為奧德賽的7座都不及格的話,真的沒有多少台車ok了。

所以到底怎麼選?

總的來說,MpV在空間和功能性上面都是優於SUV的,SUV就算是銳界這種中型SUV,7座也都是有些許勉強。不過我也可以告訴你,確實SUV的駕駛感受可能會更好一些,畢竟它需要應對更多不同的路況,對懸挂和濾振的要求會更高些,且坐姿高、視野也都更好,整體風格會更加的多種多樣,而MpV在這方面會調校得更加的“無趣”一些,大多隻能談舒適。

最後再認真的說一句,其實不同品牌在設計車型或者調校水平上面是有差別的,例如途安L的質感就很好且座椅的布局、功能都很好,而像580,彷彿就沒有考慮太多。因此,在物色7座車的你,還是要去全方位的體驗一下各種關於空間和乘坐的細節會更好一些!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

巴西網購郵包夾帶不明種子 當局展開調查

摘錄自2020年9月30日中央社報導

巴西農業部29日指出,接獲8州36起民眾收到從國外寄來、未經訂購的不明種子郵包的投訴案例,已展開調查。

根據巴西新聞網站G1報導,這些神秘的種子通常裝在塑膠袋裡,夾帶在透過網路、網站或應用程式購買的產品一起寄給消費者。包裹來源都是中國、馬來西亞和香港等亞洲國家。

所有可疑種子包裹將由戈恩尼亞(Goiânia)聯邦農業防禦實驗室進行分析。巴西農業部要求民眾小心謹慎,無論來源國是哪裡,都不要打開未經訂購的不明種子郵包或直接丟棄,避免種子與土壤接觸,否則可能破壞環境和農業地區。這些種子應交給農業部在各州的辦事處或農業防禦單位。

污染治理
國際新聞
巴西
網購
種子

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※台北網頁設計公司全省服務真心推薦

※想知道最厲害的網頁設計公司"嚨底家"!

※推薦評價好的iphone維修中心

中華鳥會遭除名 英國慈善委員會將調查

摘錄自2020年9月30日中央社報導

路透社報導,掌管慈善團體的英國慈善委員會(Charity Commission)29日發表聲明,國際鳥盟已提交事件報告,委員會將檢視所有提交資訊進行調查,以決定下一步動作。

中華鳥會自1996年成為全球最大的鳥類保育組織「國際鳥盟」(BirdLife International)會員。但國際鳥盟全球理事會2週前決議,由於中華鳥會的中文名稱「中華民國野鳥學會」對國際鳥盟的夥伴關係造成經營上的「風險」,因此將中華鳥會自正式夥伴關係中移除。

儘管國際鳥盟將中華鳥會除名,但許多組織仍表示將繼續與中華鳥會合作,包括國際鳥盟的重要夥伴英國皇家鳥類保護協會(Royal Society for the Protection of Birds)。

國際鳥盟禁止員工就此事發表評論,並未立即回應。

生物多樣性
國際新聞
英國
鳥會
政治因素

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

CocosCreator實現微信排行榜

1. 概述

不管是在現實生活還是當今遊戲中,各式各樣的排名層出不窮。如果我們做好一款遊戲,卻沒有實現排行榜,一定是不完美的。排行榜不僅是玩家了解自己實力的途徑,也是遊戲運營刺激用戶留存的一種途徑。在微信小遊戲中普遍存以下兩種排名

  • 好友關係排名
  • 世界排名

其中好友的排名,需要通過微信子域實現。在子域上下文中,只能調用微信提供相關的api,且數據傳輸只能進不能出。即使在子域中調用雲函數也不行。這個對數據很嚴格,開發略為複雜。但好處也很明顯

  • 無需用戶確認授權就可實現排名
  • 排名信息均為自己好友,刺激效果更明顯

儘管這樣,我們還是先實現世界排行。世界排行需要用戶授權。早期只需要調用wx.authorize就可以實現,現在很不穩定(好像廢棄了)。所以不得不通過生成一個授權按鈕來實現

2. 微信雲開發

微信小遊戲為開發者提供了一部分免費的雲環境。可以實現文件存儲,數據存儲以及通過雲函數實現服務端接口。開通方式也很簡單,這裏不做說明。既然要實現排名,優先選用雲函數來實現對應的api。要實現雲函數,需要在project.config.json文件中通過屬性cloudfunctionRoot指定雲函數目錄。由於,是通過cocoscretor開發,每次構建發布都會清空輸出內容。為了解決人肉複製粘貼,我們需要通過定製小遊戲構建模板實現微信小遊戲所有代碼的管理。小遊戲地心俠士構建模板如下

從圖中,可以看到獲取openid、獲取世界排名、保存用戶授權信息等雲函數都放在cocoscreator代碼環境中。這樣在開發完成后,通過cocoscreator構建發布,對應的雲函數也會一起打包過去

3. 實現世界排行

3.1 獲取玩家openid

首先在構建模板的cloud-functions文件件中,使用npm初始一個名為getOpenId的node項目。初始好以後,運行npm install wx-server-sdk@latest --save。這樣就建立好了一個雲函數的基本框架。

我們在index.js文件,輸入以下代碼

// author:herbert 464884492
// project:地心俠士  獲取用戶openid
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}

 

調用雲函數時,上下文中便可以得到玩家openid和uninid。玩家進入遊戲就先調用此函數,得到玩家的openid用於後邊更新玩家數據和獲取世界排行的條件。

小遊戲端調用雲函數前,需要初始雲環境。因為採用定製構建模板,所以我們直接在模板的game.js文件末尾初始我的雲環境

// author:herbert 464884492
// 地心俠士 初始雲環境
....
wxDownloader.init();
window.boot();

//初始化雲調用
this.wx.cloud.init({
    traceUser: true,
    env: 'dxxs-dxxs'
});
...

  

後續調用雲函數中,第一步都是要獲取openid,這裏定義一個全局變量將其保存起來,調用方法如下

// author:herbert 464884492
// 地心俠士 玩家openid
private static openId: string = null;
private static initenv() {
  return new Promise((resolve, reject) => {
      if (!this.wx) reject();
      //直接使用本地緩存
      if (this.openId != null) resolve();
      // 調用雲函數獲取
      this.wx.cloud.callFunction({
          name: 'getOpenId',
          complete: res => {
              this.openId = res.result.openid;
              resolve();
          }
      });
  });
}

 

3.2 動態生成授權按鈕

先看下地心俠士布局界面

上圖中可以看到,地心俠士虛擬了一個遊戲操作區域。玩家聚焦到世界排行時,需要渲染一個授權按鈕在確定的位置。需求很簡單,可考慮到移動端多分辨率,這個操作就變得複雜了。需要做屏幕適配。地心俠士採用自適應寬度的適配策略,配置如下圖

遊戲運行時獲取實際分辨率的寬度與設計的寬度相除,變可知道當前寬度變化比列,鍵盤容器九宮格使用了主鍵widget底部111px,高度161px。確定按鈕寬度105px

微信小遊戲以左上角為原點,通過topleft確定位置。然而,cocoscreator以左下角為原點,所以在計算top值時需要用屏幕寬度 – box上邊緣y坐標。適配代碼如下

// author:herbert 464884492
// 地心俠士 動態生成透明授權按鈕
 initUserInfoButton() {
  // 獲取設計尺寸
  let desingSize: cc.Size = cc.view.getDesignResolutionSize();
  //  獲取實際屏幕尺寸
  let screenSize: cc.Size = cc.view.getFrameSize();
  // 獲取寬度倍率
  let widthRate = screenSize.width / desingSize.width;
  // 獲取當前倍率下九宮格鍵盤實際高度
  let halfKcHeight = 161 * widthRate / 2;
  // 獲取當前倍率下確定按鈕實際寬度
  let btnwidth = this.btnKeySuer.width * widthRate;
  WxCloudFun.createUserinfoButton("", 
  // 確定按鈕中心點對應小遊戲left值 (屏幕寬度-確定按鈕實際寬度)/2
  // 定義實際授權按鈕size為105*40,所以還必須加上對應的偏差值
  // 以下代碼中left體現整體適配過程,不考慮中間過程可以直接使用
  // (屏幕寬度-授權按鈕)/2 即可得到left值
  screenSize.width / 2 - 52.5 * widthRate + (btnwidth - 105) / 2, 
  // Canvas 適配策略是 Fit Width,所以Canvas下邊沿不一定就是屏幕邊緣
  // 通過111*widthRate得到具體下沿值,在加上虛擬鍵盤一半高度,可得到中心位置
  // 由於微信原點在左上角,需要保持按鈕處於中心位置,坐標還需要上移一半按鈕高度
  screenSize.height - (111 * widthRate + halfKcHeight + 20),
 () => {
      this.keyCode = cc.macro.KEY.r;
      this.scheduleOnce(async () => {
          this.dlgRank.active = true;
          // 獲取排名數據
          await this.getRankInfo();
      }, 0);
  });
}

 

3.3 獲取用戶頭像昵稱信息

經過上一步驟的適配操作,只要玩家聚焦到【世界排行】,地心俠士虛擬鍵盤的確定按鈕正上方會覆蓋一個透明的userInfoButton,玩家點擊確定就會喚起授權對話框,然後在對應的回調函數就可以完成用戶數據保存操作

// author:herbert 464884492
// 地心俠士 獲取玩家基本信息
 public static createUserinfoButton(text: string, left: number, top: number, cb: Function) {
   this.userInfoButton = this.wx.createUserInfoButton({
      type: 'text',
      text: text,
      style: {
          left: left,
          top: top,
          height: 40,
          width: 105,
          lineHeight: 40,
          textAlign: 'center',
          fontSize: 16,
          backgroundColor: '#ff000000',// 透明
          color: '#ffffff',
      }
   });
   this.userInfoButton.hide();
   this.userInfoButton.onTap((res) => {
     // 將獲取到的用戶數據提交到雲端
      this.wx.cloud.callFunction({
          name: 'putUserinfo',
          data: { ...res.userInfo, openid: this.openId }
      });
      this.hideUserInfoButton();
      cb.call();
   });
   }

 

在代碼中,除了傳入玩家微信信息外。我還額外傳遞進入遊戲時就獲取的openid。正常情況下不需要的,因為,雲函數中天然會告訴你openid。不過,我們在後端使用了got獲取玩家頭像保存到雲端文件存儲中。引入此包后,後端就獲取不到openid了,相當奇怪。對應雲平台雲函數代碼如下

// author:herbert 464884492
// 地心俠士 雲函數保存玩家基本信息
const cloud = require('wx-server-sdk')
const got = require('got')
cloud.init()
// 雲函數入口函數
exports.main = async(event, context) => {
  const {
    nickName,
    avatarUrl,
    gender,
    openid
  } = event;
  let wxContext = cloud.getWXContext();
  // 如果後端拿不到openid就採用前端傳入的openid
  wxContext.OPENID = wxContext.OPENID || openid;
  const log = cloud.logger()
  log.info({
    tip: `正在請求頭像地址[${avatarUrl}]`
  })
  // 獲取頭像數據流
  const stream = await got.stream(avatarUrl);
  let chunks = [];
  let size = 0;
  const body = await (async() => {
    return new Promise((res, reg) => {
      stream.on('data', chunk => {
        chunks.push(chunk)
        size += chunk.length
        log.info({
          tip: `正在讀取圖片流信息:[${chunk.length}]`
        })
      })
      stream.on('end', async() => {
        const body = Buffer.concat(chunks, size)
        log.info({
          tip: `正在保存頭像文件:[${size}]`
        })
        res(body)
      })
    })
  })()
  //保存頭像到雲存儲
  const {
    fileID
  } = await cloud.uploadFile({
    cloudPath: `avatars/${wxContext.OPENID}.jpg`,
    fileContent: body
  })
  // 添加或更新玩家信息到數據庫
  const db = cloud.database()
  const {
    data
  } = await db.collection("dxxs").where({
    _openid: wxContext.OPENID
  }).get()
  const updateData = {
    fileId: fileID,
    nickName: nickName,
    sex: gender == 1 ? '男' : '女',
    avatarUrl: avatarUrl
  }
  if (data.length > 0) {
    log.info({
      tip: `正在修改數據庫信息:[${size}]`
    })
    await db.collection("dxxs").doc(data[0]._id).update({
      data: updateData
    })
  } else {
    log.info({
      tip: `正在添加數據庫信息:[${size}]`
    })
    await db.collection("dxxs").add({
      data: { ...updateData,
        _openid: openid
      }
    })
  }

  return {
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID
  }
}

 

3.4 獲取排行數據

保存完用戶數據后,通過一個回調函數,實現了玩家排名數據獲取。細心的朋友可以在前邊授權按鈕適配的章節看到await this.getRankInfo();這句代碼。後端雲函數就是一個簡單數據查詢。效果圖如下

從上圖可以看到,我實現了三個維度排名,需要在前端需要傳入排名字段。對應代碼如下

// author:herbert 464884492
// 地心俠士 獲取排名信息
 public static async getWorldRanking(field: string = "level") {
     const { result } = await this.wx.cloud.callFunction({
         name: 'getWordRanking',
         data: { order: field }
     });
     return result.ranks;
 }

 

雲函數代碼如下

// author:herbert 464884492
// 地心俠士 雲函數返回排名信息
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const db = cloud.database();
  const {
    order = "level"
  } = event;

  const openData = await db.collection("dxxs")
    .orderBy(order, "asc")
    .get()
  const ranks = openData.data.map(item => {
    return {
      openid: item._openid,
      [order]: item[order],
      nickName: item.nickName,
      fileId: item.fileId,
      avatarUrl: item.avatarUrl
    }
  });
  return {
    ranks: ranks,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID
  }
}

 

4. 總結

  • 微信子域數據很嚴格,數據只進不出。調用雲函數也不行
  • 雲函數中使用http請求,可能會得不到openid
  • 屏幕適配知道定位原則,也可以很簡單
  • avatarUrl通過Sprite現實頭像,需要設置安全域名
  • 目前部分華為手機分享截屏出現黑屏使用canvas.toTempFilePath就可以解決

這裡有一個CoscosCreator遊戲開發群,歡迎喜歡聊技術的朋友加入

 

 

歡迎感興趣的朋友關注我的訂閱號“小院不小”,或點擊下方二維碼關注。我將多年開發中遇到的難點,以及一些有意思的功能,體會都會一一發布到我的訂閱號中

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

NASH:基於豐富網絡態射和爬山算法的神經網絡架構搜索 | ICLR 2018

論文提出NASH方法來進行神經網絡結構搜索,核心思想與之前的EAS方法類似,使用網絡態射來生成一系列效果一致且繼承權重的複雜子網,本文的網絡態射更豐富,而且僅需要簡單的爬山算法輔助就可以完成搜索,耗時0.5GPU day

來源:曉飛的算法工程筆記 公眾號

論文: Simple And Efficient Architecture Search for Convolutional Neural Networks

  • 論文地址:https://arxiv.org/pdf/1711.04528.pdf

Introduction

  論文目標在於大量減少網絡搜索的計算量並保持結果的高性能,核心思想與EAS算法類似,主要貢獻如下:

  • 提供baseline方法,隨機構造網絡並配合SGDR進行訓練,在CIFAR-10上能達到6%-7%的錯誤率,高於大部分NAS方法。
  • 拓展了EAS在網絡態射(network morphisms)上的研究,能夠提供流行的網絡構造block,比如skip connection和BN。
  • 提出基於爬山算法的神經網絡結構搜索NASH,該方法迭代地進行網絡搜索,在每次迭代中,對當前網絡使用一系列網絡態射得到多個新網絡,然後使用餘弦退火進行快速優化,最終得到性能更好的新網絡。在CIFAR-10上,NASH僅需要單卡12小時就可以達到baseline的準確率。

Network Morphism

  $\mathcal{N}(\mathcal{X})$為$\mathcal{X}\in \mathbb{R}^n$上的一系列網絡,網絡態射(network morphism)為映射$M: \mathcal{N}(\mathcal{X}) \times \mathbb{R}^k \to \mathcal{N}(\mathcal{X}) \times \mathbb{R}^j$,從參數為$w\in \mathbb{R}k$的網絡$fw \in \mathcal{N}(\mathcal{X})$轉換為參數為$\tilde{w} \in \mathbb{R}j$的網絡$g\tilde{w} \in \mathcal{N}(\mathcal{X})$,並且滿足公式1,即對於相同的輸入,網絡的輸出不變。

  下面給出幾種標準網絡結構的網絡態射例子:

Network morphism Type I

  將$f^w$進行公式2的替換,$\tilde{w}=(w_i, C, d)$,為了滿足公式1,設定$A=1$和$b=0$,可用於添加全連接層。

  另外一種複雜點的策略如公式3,$\tilde{w}=(w_i, C, d)$,設定$C=A^{-1}$和$d=-Cb$,可用於表達BN層,其中$A$和$b$表示統計結構,$C$和$d$為可學習的$\gamma$和$\beta$。

Network morphism Type II

  假設$f_i{w_i}$可由任何函數$h$表示,即$f_i{w_i}=Ah^{w_h}(x)+b$

  則可以將$f^w$,$w_i = (w_h, A, b)$配合任意函數$\tilde{h}{w_{\tilde{h}}}(x)$根據公式4替換為$\tilde{f}{\tilde{w}i}$,$\tilde{w}=(w_i, w{\tilde{h}}, \tilde{A})$,設定$\tilde{A}=0$。這個態射可以表示為兩種結構:

  • 增加層寬度,將$h(x)$想象為待拓寬的層,設定$\tilde{h}=h$則可以增加兩倍的層寬度。
  • concatenation型的skip connection,假設$h(x)$本身就是一系列層操作$h(x)=h_n(x) \circ \cdots \circ h_0(x)$,設定$\tilde{h}(x)=x$來實現短路連接。

Network morphism Type III

  任何冪等的函數$f_i^{w_i}$都可以通過公式5進行替換,初始化$\tilde{w}_i=w_i$,公式5在無權重的冪等函數上也成立,比如ReLU。

Network morphism Type IV

  任何層$f_i^{w_i}$都可以配合任意函數$h$進行公式6的替換,初始化$\lambda=1$,可用於結合任意函數,特別是非線性函數,也可以用於加入additive型的skip connection。
  此外,不同的網絡態射組合也可以產生新的態射,比如可以通過公式2、3和5在ReLU層後面插入”Conv-BatchNorm-Relu”的網絡結構。

Architecture Search by Network Morphisms

  NASH方法基於爬山算法,先從小網絡開始,對其進行網絡態射生成更大的子網絡,由於公式1的約束,子網的性能與原網絡是一樣的,後續子網進行簡單的訓練看是否有更好的性能,最後選擇性能優異的子網進行重複的操作。

  圖1可視化了NASH方法的一個step,算法1的ApplyNetMorph(model, n)包含n個網絡態射操作,每個為以下方法的隨機一種:

  • 加深網絡,例如添加Conv-BatchNorm-Relu模塊,插入位置和卷積核大小都是隨機的,channel數量跟最近的卷積操作一致。
  • 加寬網絡,例如使用network morphism type II來加寬輸出的channel,加寬比例隨機。
  • 添加從層$i$到層$j$的skup connection,使用network morphism type II或IV,插入位置均隨機選擇。

  由於使用了網絡態射,子網繼承了原網絡的權重且性能一致,NASH方法優勢在於能夠很快的評估子網的性能,論文使用了簡單的爬山算法,當然也可以選擇其它的優化策略。

Experiments

Baslines

Retraining from Scratch

CIFAR-10

CIFAR-100

CONCLUSION

  論文提出NASH方法來進行神經網絡結構搜索,核心思想與之前的EAS方法類似,使用網絡態射來生成一系列效果一致且繼承權重的複雜子網,本文的網絡態射更豐富,而且僅需要簡單的爬山算法輔助就可以完成搜索,耗時0.5GPU day



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的算法工程筆記】

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※台北網頁設計公司全省服務真心推薦

※想知道最厲害的網頁設計公司"嚨底家"!

※推薦評價好的iphone維修中心