Asp.Net Core入門之自定義中間件

什麼是中間件?

這裏引用官方解釋:

       中間件是用於組成應用程序管道來處理請求和響應的組件。管道內的每一個組件都可以選擇是否將請求交給下一個組件、並在管道中調用下一個組件之前和之後執行某些操作。請求委託被用來建立請求管道,請求委託處理每一個 HTTP 請求。

       請求委託通過使用 IApplicationBuilder 類型的 Run、Map 以及 Use 擴展方法來配置,並在 Startup 類中傳給 Configure 方法 。每個單獨的請求委託都可以被指定為一個內嵌匿名方法,或其定義在一個可重用的類中。這些可重用的類被稱作 中間件 或 中間件組件。每個位於請求管道內的中間件組件負責調用管道中下一個組件,或適時短路調用鏈。

       ASP.NET 請求管道由一系列的請求委託所構成,它們一個接着一個被調用,如圖所示(該執行線程按黑色箭頭的順序執行):

 

ASP.Net Core內置很多中間件,如:靜態文件,身份驗證,MVC等。

這裏需要注意的是,中間件添加的順序非常重要,這會影響他們處理請求的順序。如果順序添加不對,很可能其中某个中間件會造成管道短路,不能觸發下一個請求委託,造成系統異常。

自定義中間件

1.自定義中間件處理邏輯。

 

 1     public class MyMiddleWare
 2     {
 3         private readonly ILogger logger;
 4         private readonly RequestDelegate next;
 5         /// <summary>
 6         /// 通過構造函數 注入Logger日誌和Http請求委託
 7         /// </summary>
 8         /// <param name="_logger"></param>
 9         /// <param name="_next"></param>
10         public MyMiddleWare(ILogger<MyMiddleWare> _logger, RequestDelegate _next)
11         {
12             logger = _logger;
13             next = _next;
14         }
15 
16         /// <summary>
17         /// 在調用下一個組件之前和之後執行某些操作
18         /// </summary>
19         /// <param name="context"></param>
20         /// <returns></returns>
21         public async Task Invoke(HttpContext context)
22         {
23             logger.LogInformation("自定義中間件,開始" + DateTime.Now);
24             await next.Invoke(context);
25             logger.LogInformation("自定義中間件,結束" + DateTime.Now);
26         }
27     }

 

2.使用IApplicationBuilder嚮應用程序的請求管道添加中間件

1     public static class ServiceExtensions
2     {
3         public static IApplicationBuilder UserMyMiddleWare(this IApplicationBuilder app)
4         {
5             return app.UseMiddleware<MyMiddleWare>();
6         }
7     }

3.通過Configure方法添加自定義中間件。

Configure 方法用於指定 ASP.NET 應用程序將如何響應每一個 HTTP 請求。中間件需要最終在這裏添加。

 1         public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 2         {
 3             if (env.IsDevelopment())
 4             {
 5                 app.UseDeveloperExceptionPage();
 6             }
 7             //wwroot目錄下靜態文件
 8             app.UseStaticFiles();
 9             //添加自定義中間件
10             app.UserMyMiddleWare();
11         }

 

當然大家也可以在Configure 方法中直接使用 app.UseMiddleware<MyMiddleWare>()進行添加,我這裡是單獨做了一個派生類,方便管理吧。

 

好了,然後我們啟動程序,大家會發現我們剛才添加的中間件處理請求信息:

 

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

【其他文章推薦】

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

※別再煩惱如何寫文案,掌握八大原則!

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

※超省錢租車方案

FB行銷專家,教你從零開始的技巧

代碼之間為什麼要加空格?

據我觀察,大多數人寫代碼喜歡在符號兩側加空格,而且還會嘲諷不加空格的人。這些支持者認為,加空格可以讓代碼美觀,增強代碼的可讀性。但是我不喜歡加空格,因為這麼寫對代碼含義沒有影響,浪費空間還很麻煩。我不認為多幾個空格就能讓原本凌亂的代碼清晰起來,反而會讓代碼看起來很鬆散,影響閱讀。

以上,是我在知乎上看到的一個題目,感覺蠻清新的,說得似乎有理有據。就好像在說,據我觀察,大多數人喜歡早晚刷牙,而且還會嘲笑不刷牙的人。這些支持者認為,刷牙有益於牙齒健康,空腔清新。但我不喜歡刷牙,因為我牙齒沒壞,吃嘛嘛香。我不認為刷牙能保護牙齒健康,反而很浪費時間。

對吧?我敢保證,這世界上有不少人不刷牙。說出來不怕大家笑話,我上初中之前真沒刷過牙,就算是到現在,很多農村的孩子仍然沒有刷牙的習慣。

在我寫代碼的前一兩年裡,寫代碼也不習慣加空格,覺得很麻煩,並且加不加空格,真的不影響代碼的運行效果。

// 加空格的寫法
int a = 5;
int b = 3;
a = a + b;

// 不加空格的寫法
int a=5;
int b=3;
a=a+b;

想知道為什麼後來我開始刷牙了呢?

記得小學五年級的時候,牙齒疼過一次,真的是喪心病狂地疼,什麼東西也吃不了。那時候,哪有看牙科的,完全沒有,至少在我那時候的成長環境下。

沒辦法,疼了大概有一周的時間,終於打聽到鄰村有一個老先生,他那有秘方,父母就帶我去了。還真的見效,某一種秘制的液體滴在牙齒上,超級冰涼的那種,感覺整個牙齒完全失去了知覺。

有了這段痛苦的記憶,上初中后,看到很多同學都刷牙,於是我也就買了牙刷。初中的條件還是很差勁的,冬天,沒有熱水,洗臉的水和刷牙的水,都是前一天下午飯缸里接的水,放在課桌里。第二天早上到了教室,同學們就互幫互助,端着對方的飯缸倒水洗臉,臉沒凍壞,牙沒凍壞就是萬幸啊。

我在代碼里加空格,和開始刷牙有相似的經歷。

Thisisavarofthings=yourfuckingtype+otherdamnedresult*me;
oh=mygodblessedsweetheart-thesaintangel/cursedcorpsehere;

哦,老天,上面這段代碼里就完全沒有空格,看起來密密麻麻,可讀性差到你感覺自己的雙眼受到了侮辱。

當符號兩側的單詞很簡單的時候,簡單到只有 a 和 b 的時候,的確,不加空格好像看起來更緊湊一些。但考慮到實際的編碼中,命名要有意義,長度都不會太短,這時候,如果沒有空格的輔助,代碼就真的不堪入目了。

Thisisavarofthings = yourfuckingtype + otherdamnedresult * me;
oh = mygodblessedsweetheart - thesaintangel / cursedcorpsehere;

OK,現在加了空格,是不是觀感上就完全不一樣了。單詞與單詞之間,很清楚,很協調,不拖泥帶水。

一般的 IDE 都有自動格式化代碼的快捷鍵,寫完代碼來那麼一下,立馬就會把該有的空格給加上。我現在已經完全習慣手敲空格了,感覺自己很優雅,甚至有點大師範的感覺,畢竟程序員還是要有點追求的,對吧?

說到這,不得不替古人感慨一下,由於紙張稀缺,所以大師們寫出來的文章都是沒有標點符號的,要是沒點文化水平,密密麻麻一團的字擠在一起,真不一定能讀的懂,況且漢語是這麼博大精深。

我們算是幸運的,讀到的文言文都經過了加工,編輯們幫我們加了標點符號,所以看起來不至於那麼吃力。但我就特別討厭一些題目,讓加標點符號斷句的那些,很無聊。

所以,別任性,該加空格就加空格,你寫的代碼可不只是給你一個人看的,負責任點。

換句話說,我也可以寫文章不換行,對吧?寫一行兩行文字真沒必要換行。但段落多了,還不換行,我保證你看不下去。

不過,需要注意一點的是,我看有些視頻課里,有些講課人習慣什麼地方都加空格,我也是有點受不了的,比如說方法名和小括號之間——public void print (),這就有點不合時宜了。

按照規約來說,方法名和小括號之間是不需要空格的,因為沒有空格看起來更自然,更像一個方法,而不是割裂的關鍵字和小括號。

寫代碼不是鑽牛角尖,就像有些人喜歡在 if 語句里使用 == false 一樣——if (isFlase == false) {},他覺得這樣的代碼更具有可讀性,這不是出來搞笑的嗎?

最次,你應該寫成下面這樣子:

if (isTrue) {

else {

}

這都比在 if 條件中使用 == false 來得讓人舒服。

做程序員嘛,總得有個程序員的樣子,想優雅點的話,把非“!”用上——if (!isFlase),搞那些無病呻吟的代碼,真的很掉檔次。

無規矩不成方圓,你如果不想遵守代碼規約的話,不想團隊協作的話,請隨意處置你的代碼,誰也拿你沒辦法。逃逃逃)

如果覺得文章對你有點幫助,請微信搜索「 沉默王二 」第一時間閱讀。

本文已收錄 GitHub,傳送門~ ,裏面更有大廠面試完整考點,歡迎 Star。

我是沉默王二,一枚有顏值卻靠才華苟且的程序員。關注即可提升學習效率,別忘了三連啊,點贊、收藏、留言,我不挑,嘻嘻

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

【其他文章推薦】

※別再煩惱如何寫文案,掌握八大原則!

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

※超省錢租車方案

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

網頁設計最專業,超強功能平台可客製化

Dotnet core基於ML.net的銷售數據預測實踐

ML.net已經進到了1.5版本。作為Microsoft官方的機器學習模型,你不打算用用?

一、前言

ML.net可以讓我們很容易地在各種應用場景中將機器學習加入到應用程序中。這是這個框架很重要的一點。

通過ML.net,我們可以使用手中的可用數據,進行預測、分析、檢測,而不需要進行過於複雜的編程。

ML.net的核心,同樣是機器學習模型。它採用同樣的步驟,通過指定算法來訓練模型,將輸入數據轉換為所需的預測數據。

更重要的是,ML.net基於.NET Core,這讓它可以非常簡單地跨平台,在Windows、Linux、MacOS上運行,並成為我們服務端的一部分內容。

回到今天的主題。

我們用實際的例子,完成一個通過歷史銷售數據進行單變量時序分析(單譜分析),以預測未來銷量的需求。

    為了防止不提供原網址的轉載,特在這裏加上原文鏈接:https://www.cnblogs.com/tiger-wang/p/13150021.html

二、開發環境&基礎工程

這個Demo的開發環境是:Mac + VS Code + Dotnet Core 3.1.2。

$ dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   3.1.201
 Commit:    b1768b4ae7

Runtime Environment:
 OS Name:     Mac OS X
 OS Version:  10.15
 OS Platform: Darwin
 RID:         osx.10.15-x64
 Base Path:   /usr/local/share/dotnet/sdk/3.1.201/

Host (useful for support):
  Version: 3.1.3
  Commit:  4a9f85e9f8

.NET Core SDKs installed:
  3.1.201 [/usr/local/share/dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.App 3.1.3 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 3.1.3 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

首先,在這個環境下建立工程:

  1. 創建Solution
% dotnet new sln -o demo
The template "Solution File" was created successfully.
  1. 這次,我們用Console創建工程
cd demo
% dotnet new console -o demo
The template "Console Application" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on demo/demo.csproj...
  Determining projects to restore...
  Restored demo/demo.csproj (in 143 ms).

Restore succeeded.
  1. 把工程加到Solution中
% dotnet sln add demo/demo.csproj

基礎工程搭建完成。

三、引入ML.net庫

為了使用ML.net,我們需要引入Microsoft.ML庫:

cd demo
% dotnet add package Microsoft.ML

除此之外,本文是基於時序的預測,還需要引入時序庫Microsoft.ML.TimeSeries

% dotnet add package Microsoft.ML.TimeSeries

我們今天用到的算法是單譜分析(SSA)。SSA會將時序分解為一組主要成分, 並將這些成分解釋為信號,對應於趨勢、噪音、季節性及許多其他的因素,然後重新構建這些成分,用來預測未來某個時間的值。

四、準備數據

為了這個DEMO,我準備了一個包含全年365天實際銷售金額的數據。

其中這個數據又分為了兩部分,第一部分是前11個月的數據,用來做訓練,第二部分是12月一個月的數據,用來評估模型。

兩部分數據的鏈接如下:訓練數據,評估數據

兩個數據文件均為CSV文件,數據結構完全相同,下面是一段內容範例:

2018-12-21,17959.0
2018-12-22,19537.03
2018-12-23,20068.0
2018-12-24,20013.0
2018-12-25,21005.0
2018-12-26,16876.0
2018-12-27,15150.0
2018-12-28,15669.0
2018-12-29,25048.0
2018-12-30,25236.0

五、代碼開發

  1. 準備一個輸入模型ModelInput
public class ModelInput
{

    [LoadColumn(0)]
    public DateTime action_time { get; set; }
    [LoadColumn(1)]
    public float count { get; set; }
}

這個模型對應數據文件的結構,分兩個字段,第一個是日期,第二個是對應的銷售金額。

  1. 準備另一個輸出模型ModelOutput
public class ModelOutput
{

    public float[] forecasted_count { get; set; }
    public float[] lower_count { get; set; }
    public float[] upper_count { get; set; }
}

這個模型跟隨預測結果的輸出,其中:

  • forecasted_count – 預測時間段內的預測值
  • lower_count – 預測時間段內預測值的下限
  • upper_count – 預測時間段內預測值的上限

  1. 初始化機器學習的實例
MLContext mlContext = new MLContext();

執行所有 ML.NET 操作都是從MLContext類開始,初始化 MLContext將創建一個新的 ML.net 環境,並在模型創建工作流對象之間共享該環境。

  1. 加載數據

ML.net有多種數據的加載方式,可以通過文件、數據庫、JSON/XML、內存中加載數據,甚至可以用自定義的數據庫連接加載數據。

本文的DEMO中,數據在CSV文件中,所以,我們採用下面的方式加載:

static readonly string _data1Path = Path.Combine(Environment.CurrentDirectory, "data1.csv");
static readonly string _data2Path = Path.Combine(Environment.CurrentDirectory, "data2.csv");

static void Main(string[] args)
{
    MLContext mlContext = new MLContext();

    IDataView data1View = mlContext.Data.LoadFromTextFile<ModelInput>(_data1Path, separatorChar: ',', hasHeader: false);
    IDataView data2View = mlContext.Data.LoadFromTextFile<ModelInput>(_data2Path, separatorChar: ',', hasHeader: false);
}

IDataView是數據的承載空間。

  1. 定義時序分析管道
var forecastingPipeline = mlContext.Forecasting.ForecastBySsa(
    outputColumnName: "forecasted_count",
    inputColumnName: "count",
    windowSize: 7,
    seriesLength: 30,
    trainSize: 334,
    horizon: 7,
    confidenceLevel: 0.95f,
    confidenceLowerBoundColumn: "lower_count",
    confidenceUpperBoundColumn: "upper_count");

前面有說過,我們採用單譜分析,所以代碼中我們選擇了mlContext.Forecasting.ForecastBySsa

解釋一下這裏面的幾個參數:

  • trainSize – 數據樣本的數量,也就是訓練數據的行數(在這個文件中,一行是一個數據樣本,共334行)
  • seriesLength – 從數據樣本按時序採樣時的間隔,這裡是30天
  • windowSize – 樣本周期的天數,這裡是7天
  • horizon – 預測結果的天數
  • confidenceLevel – 上下限的可信度。預測屬於合理猜測,不總是完全準確。
  • 其它幾個參數,對應輸入輸出模型的字段名

  1. 訓練模型

管道定義完成,數據加載完成,下面要進行數據訓練。

SsaForecastingTransformer forecaster = forecastingPipeline.Fit(data1View);

跟隨上一節,管道是單譜管道,所以訓練也是單譜訓練SsaForecastingTransformer

程序執行到這裏,數據訓練完成。

  1. 模型評估

模型評估不是必須環節。

模型評估的意義在於:通過評估模型的性能,來調整管道的參數,以達到最佳的預測效果。

模型評估也有多種方式。在這裏,我們採用平均絕對誤差均方根誤差來做評估依據。

static void Evaluate(IDataView testData, ITransformer model, MLContext mlContext)
{
    IDataView predictions = model.Transform(testData);

    IEnumerable<float> actual =
        mlContext.Data.CreateEnumerable<ModelInput>(testData, true)
            .Select(p => p.count);

    IEnumerable<float> forecast =
        mlContext.Data.CreateEnumerable<ModelOutput>(predictions, true)
            .Select(p => p.forecasted_count[0]);

    var metrics = actual.Zip(forecast, (actualValue, forecastValue) => actualValue - forecastValue);

    var MAE = metrics.Average(error => Math.Abs(error));
    var RMSE = Math.Sqrt(metrics.Average(error => Math.Pow(error, 2)));

    Console.WriteLine("評估結果");
    Console.WriteLine("---------------------");
    Console.WriteLine($"平均絕對誤差: {MAE:F3}");
    Console.WriteLine($"均方根誤差: {RMSE:F3}\n");
}

在這個方法中,我們取評估數據的實際值actual和通過訓練數據生成的預測值forecast,計算兩個誤差並輸出。

Main中調用此方法:

static void Main(string[] args)
{
        /* 這兒是前邊訓練的代碼,略過 */

        Evaluate(data2View, forecaster, mlContext);
}
static void Evaluate(IDataView testData, ITransformer model, MLContext mlContext)
{
      /* 這兒是評估模型的方法,上面有,略過 */
}

輸出結果類似於以下內容:

評估結果
---------------------
平均絕對誤差: 23.442
均方根誤差: 174.236

兩個指標:

  • 平均絕對誤差 – 度量預測與實際值之間的接近程度。 此值介於 0 到無限大之間。 越接近 0,模型的質量越好。
  • 均方根誤差 – 匯總模型中的錯誤。 此值介於 0 到無限大之間。 越接近 0,模型的質量越好。

  1. 預測

訓練模型調整到滿意后,即可開始預測的工作:

var forecastEngine = forecaster.CreateTimeSeriesEngine<ModelInput, ModelOutput>(mlContext);
ModelOutput forecast = forecastEngine.Predict();

這兩行代碼,在內存中加載前邊訓練好的模型,並進行預測操作。預測數據的結果放在forecast中。

對應於分析管道定義中的horizon,預測數據包含7天的預測結果。

  1. 預測結果輸出

放在forecast中的數據,對應模型ModelOutput,可以用在任何地方。

在本文中,我們直接显示到Console

IEnumerable<string> forecastOutput =
    mlContext.Data.CreateEnumerable<ModelInput>(data2View, reuseRowObject: false)
        .Take(7)
        .Select((ModelInput data, int index) =>
        {
            string action_date = data.action_time.ToString("yyyy-MM-dd");
            float actual_count = data.count;
            float lowerEstimate = Math.Max(0, forecast.lower_count[index]);
            float estimate = forecast.forecasted_count[index];
            float upperEstimate = forecast.upper_count[index];
            return $"日期: {action_date}\n" +
            $"實際值: {actual_count}\n" +
            $"預測下限估值: {lowerEstimate}\n" +
            $"預測估值: {estimate}\n" +
            $"預測上限估值: {upperEstimate}\n";
        });

Console.WriteLine("預測結果");
Console.WriteLine("---------------------");
foreach (var prediction in forecastOutput)
{
    Console.WriteLine(prediction);
}

運行結果類似於以下內容:

預測結果
---------------------
日期: 2018-12-01
實際值: 24566.08
預測下限估值: 16791.379
預測估值: 20394.115
預測上限估值: 23996.852

完成!

六、延伸內容

ML.net包含了很多機器學習的內容。其中,我自己認為時序預測是用途很廣的一個部分,可以用在

  • 銷售預測
  • 庫存預警
  • 活動策劃輔助

以及其它諸如天氣、股票、人口等諸多內容上,依靠過去和現在的數據,分析兩者之間的關係,然後利用得到的這個關係去預測未來的數據。

因此,在這個分類中,我的第一篇文章就寫了時序預測。

機器學習,核心是各種算法,而算法的基礎是一類數學。這是一個很高的坎。刷算法,線性的部分還好,一旦到了冪次或矩陣,沒有正統的學習,是很難有突破的。而即便刷通了,也只是皮毛性的理解,距離創造算法的大神,還有很長的距離。

所以,退而求其次,對很多人而言,與其花大功夫去研究算法,不如多研究下如何能把現有的算法或工具用好。

還有,在應用中,你能用機器學習來預測銷量、預測庫存,有沒有很自豪?是不是很高大上?

(全文完)

本文的對應代碼,在https://github.com/humornif/Demo-Code/tree/master/0013/demo

 

 

微信公眾號:老王Plus

掃描二維碼,關注個人公眾號,可以第一時間得到最新的個人文章和內容推送

本文版權歸作者所有,轉載請保留此聲明和原文鏈接

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

【其他文章推薦】

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

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

※回頭車貨運收費標準

※別再煩惱如何寫文案,掌握八大原則!

※超省錢租車方案

※產品缺大量曝光嗎?你需要的是一流包裝設計!

Hexo快速構建個人小站-Hexo初始化和將項目託管在Github(一)

 

背景交代

    相信每個程序員都有自己做過個人網站,博客之類的項目了,但是現在還在維護嗎?反正我前前後后做過2到3個了,維護一段時間后因為一些不可逆的原因(主要是懶)都沒有維護了,購買的一些域名和服務器信息也都過期了,最近玩了一下hexo,發現這個東西挺方便的,基本半個小時就可以搞完,並且如果 完全託管在github上基本就是0成本,用作學習記錄輸出是夠了。

 

1.依賴於nodejs安裝,安裝nodejs和npm

下載地址,可以對照電腦系統版本進行下載安裝:https://nodejs.org/en/download/
現在nodejs的安裝包內置了npm,所以下載安裝完成之後,nodejs和npm都會安裝好

檢查安裝是否成功

安裝成後會显示出對應的版本信息,由於我電腦之前就安裝過了,所以應該不是最新的版本

2.安裝hexo

安裝命令:

sudo npm i -g hexo

直接一步就安裝完成了,然後可以通過hexo -v查看是否安裝成,成功安裝的話,會打印出上面截圖中的一些版本信息

3.hexo初始化博客項目

命令:

hexo init

 

初始化完成之後,看看hexo在文件夾給我生成了哪些文件

 

如果你是一名前端或者nodejs開發者,相信對這些文件再熟悉不過了,還是對上述幾個文件簡單解釋一下:

  • node_modules:存放依賴包信息

  • public:存放生成的頁面

  • scaffolds:存放生成文章的一些模板

  • source:存放用命令創建的各種文章

  • themes:存放博客使用的主題

  • _config.yml:存放整個博客的配置

  • db.json:存放source解析所得到的

  • package.json:存放項目所需模塊項目的配置信息

 

4.將生成的博客項目跑起來

1、清除
hexo clean
2、生成
hexo g
3、啟動服務
hexo server

 

啟動完成后就可以按照提示,打開 http://localhost:4000 來訪問我們在本地初始化好的博客項目了

可以看到我們的項目已經成功跑起來了,成功的邁出了第一步,先暫且按耐住激動的心情,我們繼續!

 

5.在GitHub上創建倉庫用於託管博客項目

打開Github:https://github.com/PeyShine,新建一個倉庫,如圖

倉庫名稱需要配置為:個人名字.github.io,倉庫設置為公開,然後點擊創建就可以

 

6.配置_config.yml

deploy:
   type: git
   repository: https://github.com/PeyShine/PeyShine.github.io.git
   branch: master

  

7.上傳項目 

在此之前請先安裝一個插件

npm install hexo-deployer-git --save

  

部署(上傳到GitHub) 

hexo d 或者 hexo deploy

上傳過程中輸入了用戶名和密碼,如果提前配置好ssh也可以不用輸入

到Github上看一下,是否上傳成功

可以看到文件都已經上傳成功了

8.成功訪問

通過域名“https://peyshine.github.io” 來訪問

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

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

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

FB行銷專家,教你從零開始的技巧

警訊! 氣候暖化 美病媒蚊疾病13年增兩倍

環境資訊中心外電;姜唯 翻譯;林大利 審校;稿源:ENS

天氣越來越熱,美國各大城市的蚊蟲也變多了。美國政府統計,在過去13年(2004-2016)間,蚊子、蜱蟲和跳蚤傳染病增加了兩倍,出現超過64萬2600例病例。根據美國疾病預防管制中心(CDC)最新的《生命徵象》(vital signs)報告,同一時期由蚊子和蜱蟲引入的傳播新病原體就多達九種。

埃及斑蚊,
Aedes aegypti。圖片來源:美國農業部 USDA-ARS

「茲卡、西尼羅熱、萊姆病和屈公熱,近年蚊子、蜱蟲或跳蚤傳染病越來越多,我們不知道接下來還有什麼病會進入美國。」CDC主任瑞德菲爾醫師(Robert Redfield)說。

此外,紐澤西倡議團體氣候中心(Climate Central)研究發現,隨著氣溫上升,全美大部分地區病媒蚊活躍期逐漸延長,蚊子傳播疾病的風險更大。為了研究溫度對蚊子傳播疾病的作用,該中心分析了各年春季、夏季和秋季平均溫度介於16.1°C(61°F)和33.9°C(93°F)之間的天數。這是黑斑蚊傳染疾病的溫度範圍。

244個城市中,有94%的城市氣溫介於16.1°C和33.9°C的天數增加,顯示疾病傳播的風險增加,即病媒蚊活躍期。

埃及斑紋和白線斑蚊兩種黑斑蚊都會傳播西尼羅熱。自1999年進入美國後,48州都有病例。黑斑蚊還會傳染其他危險疾病,如登革熱、茲卡、屈公熱和黃熱病。

要傳播疾病,蚊子必須叮咬兩次,第一次被傳染,第二次傳染給別人。華氏75度時,發生兩次叮咬的蚊子數量最多。

病媒蚊活躍期最長的前10名城市中,加州佔了三名,其他城市包括新墨西哥州拉斯克魯塞斯、德州埃爾帕索市和亞利桑那州圖森市。這些城市的氣溫都很適合病媒蚊生存跟傳染疾病。

夏天前往美國阿拉斯加森林得必備防蚊頭套。圖片來源: (CC BY-NC 2.0)

氣候中心的分析顯示,自20世紀70年代以來,由於氣溫升高,這些城市的疾病傳播風險一直在增加。部分北方城市則是活躍日延長幅度最大,包括蒙大拿州海倫娜和賓州伊利市。

氣候變遷也可能使某些地方溫度過高,以至於不適合病媒蚊生存。例如,1970年以來鳳凰城的病媒蚊活躍日數減少,因為當地35°C(95°F)以上的天數也增加了,而這已經超出傳染範圍。

244個城市中,只有12個城市疾病活躍天數減少。

Mosquito ‘Danger Days’ Multiply as Climate Warms PRINCETON, New Jersey, August 14, 2018 (ENS)

Sicknesses from mosquito, tick, and flea bites have tripled in the United States, with just over 642,600 cases reported during the 13 years from 2004 through 2016. Nine new germs spread by mosquitoes and ticks were discovered or introduced into the United States during this time, according to the latest “Vital Signs” report by the Centers for Disease Control and Prevention, CDC.

“Zika, West Nile, Lyme, and chikungunya – a growing list of diseases caused by the bite of an infected mosquito, tick, or flea – have confronted the U.S. in recent years, making a lot of people sick. And we don’t know what will threaten Americans next,” said CDC Director Robert Redfield, M.D

In addition, the number of mosquito “disease danger days” is increasing across much of the country as temperatures rise, representing a greater risk for transmission of mosquito-borne diseases, finds new research by the New Jersey-based science and advocacy group Climate Central.

To examine the role temperature is playing in disease transmission from mosquitoes, Climate Central analyzed the number of days each year in the spring, summer, and fall with an average temperature between 61 degrees and 93 degrees Fahrenheit. This is the range for transmission of diseases spread by mosquitoes of the Aedes type.

Of the 244 cities analyzed, 94 percent are seeing an increase in the number of days with temps between 61 and 93, indicating a heightened risk for disease transmission, or “disease danger days.”

Both types of mosquitoes transmit West Nile virus, with cases in all 48 continental states since its introduction to the United States in 1999. Aedes mosquitoes carry other dangerous diseases such as dengue, Zika, chikungunya, and yellow fever.

In order to transmit disease, a mosquito must bite twice – once to acquire the disease and a second time to pass it on. The largest number of these twice-biting mosquitoes are produced at 75 degrees Fahrenheit.

Three California cities rank numbers two, three, and nine on the list of biggest increases in disease danger days. Other cities in the top 10 list include southern and southwestern cities like Las Cruces, New Mexico, El Paso, Texas and Tucson, Arizona, where temperatures are suitable for mosquito survival and some disease transmission already occurs.

The Climate Central analysis suggests that since the 1970s, the risk of disease transmission in these cities has been increasing due to rising temperatures.

A few northern cities also make this list of greatest increases in disease danger days, including Helena, Montana, and Erie, Pennsylvania. 

Climate change may make some locations too hot for mosquito survival and disease transmission. For example, there are fewer disease danger days in Phoenix since 1970. This is likely because the number of days above 95 degrees Fahrenheit in Phoenix is also going up, and 95 degrees is beyond the range of disease transmission.

Out of the 244 cities in the analysis, only 12 are seeing a decrease in the number of disease danger days during this time period.

※ 全文及圖片詳見:

作者

如果有一件事是重要的,如果能為孩子實現一個願望,那就是人類與大自然和諧共存。

於特有生物研究保育中心服務,小鳥和棲地是主要的研究對象。是龜毛的讀者,認為龜毛是探索世界的美德。

延伸閱讀

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

【其他文章推薦】

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

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

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

※超省錢租車方案

利比亞炸藥捕魚猖獗 破壞海洋生態又擾安寧

摘錄自2018年8月20日中央社報導

利比亞首都的黎波里地中海岸的居民週末經常被爆炸巨響嚇醒,許多漁民為增加漁獲量使用炸藥,破壞海洋生態也毫不在意。

利比亞自從2011年爆發動亂造成武器和炸藥泛濫後,炸藥捕魚(或稱「爆破捕魚」)盛行,且免受懲罰。

利比亞自此陷入混亂、暴力充斥,2大敵對陣營爭奪政權,各路民兵搶奪石油財富控制權。專家與官員表示,政府因此未將維護魚類資源和環境列為優先。

根據規定,未經許可進行炸藥捕魚以及使用炸藥都是違法行為,但炸魚的漁民似乎免於受罰。

這些漁民甚至拍攝畫面上傳到網路,顯示爆炸時海水噴濺到半空中,水面浮出許多被炸暈或炸死的魚。

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

【其他文章推薦】

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

※別再煩惱如何寫文案,掌握八大原則!

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

※超省錢租車方案

FB行銷專家,教你從零開始的技巧

校工噴灑年年春致癌 孟山都遭判賠2.89億

環境資訊中心外電;姜唯 翻譯;林大利 審校;稿源:ENS

美國舊金山一陪審團17日認定,農化大廠孟山都公司需為校工暴露於年年春(Roundup)除草劑後罹癌負責,並支付2.89億美元的賠償金。陪審團認為,孟山都明明知道年年春的主成分嘉磷塞(glyphosate)可致癌,卻沒有警告消費者。

年年春。圖片來源:Mike Mozart(CC BY 2.0)

校工受災  公園、學校廣泛使用嘉磷塞

受害者是舊金山灣區一位校工強森(Dewayne “Lee” Johnson)。強森的律師威斯納(Brent Wisner)說,強森用接在卡車後的大型水箱噴灑地面。風會將農藥吹到他臉上,或是萬一水管破裂,這位校工全身都會暴露於有毒物質。

威斯納解釋,強森在皮疹爆發後聯繫了孟山都公司,但從未接收到年年春可能致癌的警告。 2014年,當時42歲的強森確診非何杰金氏淋巴瘤(non-Hodgkin’s lymphoma)。

在聽審中。

孟山都否認是年年春導致強森罹癌症。

嘉磷塞  最受歡迎農藥

嘉磷塞的作用機制是抑制EPSP合酶作用,阻止植物和細菌製造氨基酸。嘉磷塞的化學結構類似甘氨酸,與ESPS合酶的活性位置結合。植物必須合成生產蛋白質所需的所有氨基酸,因此嘉磷塞抑制EPSP合酶,能使植物細胞缺乏氨基酸,導致植物死亡。

1971年,孟山都公司的法蘭茲博士(John Franz)發現嘉磷塞,1974年嘉磷塞上市。1983年,年年春成為世界上第一個銷售額超過10億美元的農藥,至今仍是農藥界霸主。年年春並不是唯一以嘉磷塞為主成分的農藥。截至2010年,市場上已有750多種嘉磷塞產品。

儘管如此,年年春仍是全世界最常用的除草劑,而這僅是第一個案例,後續還有數千人試圖讓孟山都對年年春的健康影響負責。

世界衛生組織(WHO)三年前就將嘉磷塞歸類為可能的人類致癌物,但年年春仍被廣泛使用,於學校和公園附近噴灑。

拜耳併孟山都 5200人因孟山都產品受害提告

加州陪審團認為,孟山都的年年春和「Ranger Pro」產品對消費者健康具「重大危險」性,孟山都知道或應該要知道潛在的風險。

此案僅是數起類似投訴中的第一起,這些案件後續都可能進入司法程序,對拜耳來說相當棘手。

拜耳在經過兩年的談判後於6月7日以600億美元收購了孟山都公司。總部位於聖路易斯的孟山都,股票再也不在紐約證券交易所上市交易,拜耳現在是孟山都的唯一持有者。孟山都的股東每股收益為128美元。

孟山都表示,截至2月份,其各種產品索賠金額總額高達2.54億美元,並且已知有5200名原告聲稱因接觸嘉磷塞產品而受害。

該公司先前曾表示無法估計訴訟損失。合併後的公司將放棄孟山都公司名,以免受孟山都品牌的法律和公共關係問題影響。

Monsanto Must Pay $289 Million to Roundup Cancer Victim SAN FRANCISCO, California, August 15, 2018 (ENS)

A San Francisco jury has found Monsanto liable for causing a school groundskeeper’s cancer through his exposure to the Monsanto product Roundup and ordered the agricultural giant to pay US$289.2 million in damages.

On Friday the jury found that Monsanto knew glyphosate, the primary ingredient in the company’s signature herbicide Roundup, could cause cancer but failed to warn consumers.

Dewayne “Lee” Johnson, a Bay Area school district groundskeeper, sprayed the grounds from a large tank attached for a truck, said his lawyer Brent Wisner. Wind gusts would blow the herbicide in his face, and when a hose broke, he got the toxic substance all over his body.

Johnson contacted Monsanto after he broke out in a rash, but he was never warned the herbicide could cause cancer, Wisner explained. In 2014, at age 42, Johnson received a diagnosis of non-Hodgkin’s lymphoma.

Monsanto rejected Johnson’s claim that Roundup caused his cancer.

Glyphosate works by inhibiting an enzyme that plants and bacteria use to make amino acids called EPSP synthase. Structurally, glyphosate resembles the chemical structure of the amino acid glycine. Because of its structural similarity to glycine, glyphosate binds the active site of the ESPS synthase enzyme that is critical for the production of aromatic amino acids.

Since plants must synthesize all the amino acids they need for protein production, inhibition of EPSP synthase by glyphosate makes the plant cells to starve for amino acids, causing the plants to die.

Glyphosate was discovered by Dr. John Franz of Monsanto in 1971 and released commercially in 1974. In 1983, RoundUp became the first pesticide with world-wide sales of over $1 billion, a position it has maintained since then.

Today, Monsanto’s Roundup is not the only glyphosate-based product available. Other glyphosate formulations are sold under brand names that include: Bronco, Glifonox, KleenUp, Ranger Pro, Rodeo and Weedoff. As of 2010, more than 750 glyphosate products were on the market.

Still, Roundup is the most commonly used herbicide in the world, and this case is the first of thousands seeking to hold Monsanto responsible for the health impacts of Roundup.

It has been three years since the World Health Organization classified glyphosate as a probable human carcinogen, but Roundup is still used widely and is sprayed near schools and parks.

The California jury’s ruling found that Monsanto’s Roundup and Ranger Pro products posed a “substantial danger” to consumers, and that Monsanto knew, or ought to have known, of the potential risks.

The case is the first of several similar complaints that could go to trial and represents a troublesome issue for Bayer, which closed its US$60 billion acquisition of Monsanto on June 7 after two years of negotiating.

Shares in the St. Louis-based Monsanto are no longer traded on the New York Stock Exchange, with Bayer now the sole owner of Monsanto Company. Monsanto shareholders are being paid US128 per share.

Monsanto said that as of February it had a recorded liability of $254 million relating to various product claims and that it is aware of 5,200 plaintiffs who claim to have been injured by exposure to glyphospate-based products.

The company has previously said it could not estimate losses from the litigation.

The combined company will drop the name Monsanto to avoid identification with the legal and public relations troubles that encumber the Monsanto brand.

※ 全文及圖片詳見:

※ 本文與 行政院農業委員會 林務局  合作刊登

作者

如果有一件事是重要的,如果能為孩子實現一個願望,那就是人類與大自然和諧共存。

於特有生物研究保育中心服務,小鳥和棲地是主要的研究對象。是龜毛的讀者,認為龜毛是探索世界的美德。

延伸閱讀

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

【其他文章推薦】

※別再煩惱如何寫文案,掌握八大原則!

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

※超省錢租車方案

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

網頁設計最專業,超強功能平台可客製化

川普開倒車? 各州可自訂碳排標準

摘錄自2018年8月20日自由時報報導

美國總統川普近日將宣布一項新方案,授權各州自行決定如何與是否遏制燃煤發電廠的碳排放,大幅翻轉前朝歐巴馬政府的「潔淨電力計畫」(Clean Power Plan)。然而,根據美國環保署就未來十年溫室氣體排放量的推估,落實川普新措施後的排放量,將是歐巴馬乾淨能源政策的至少12倍。

新計畫將授權各州自行對火力發電廠制定標準較低的法規,還允許各州退出電廠排放法規,將對全美各地許多老舊燃煤發電廠帶來重大影響,恐導致曾一度減少的溫室氣體排放再度升高。

新措施將影響超過300座發電廠,鼓勵業者讓這些火力發電廠繼續運轉,而非以更乾淨的天然氣或再生能源發電取而代之。

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

【其他文章推薦】

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

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

※回頭車貨運收費標準

※別再煩惱如何寫文案,掌握八大原則!

※超省錢租車方案

※產品缺大量曝光嗎?你需要的是一流包裝設計!

印度雨季洪災逾410死 超過百萬人流離失所

摘錄自2018年8月21日中央報導

印度官員今天(21日)表示,西南部克勒拉省奪走410多人性命的毀滅性雨季洪災,造成超過100萬人流離失所,湧入各地避難中心棲身。

根據克勒拉省(Kerala)一名議員,約有5萬棟民宅遭摧毀,民眾紛紛湧入避難中心,而洪水消退顯露出破壞的規模。軍隊表示,城鎮上有數千人仍待淹水的住家中,10天傾盆大雨已重創克勒拉省。

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

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

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

FB行銷專家,教你從零開始的技巧

欣欣客運採華德動能方案,台北市首條純電動巴士聯營路線上路

台北市首條純電動聯營巴士,動物園經信義快速道路來回松山車站的 66 路公車,29 日正式營運!這條由台北市政府規劃、欣欣客運公司經營,採用華德動能電動巴士解決方案的全電動巴士路線,將自 29 日開始,進行為期 3 天的免費試乘活動後,正式成為繼捷運之外台北市木柵地區往來松山車站的第 2 條環保大眾交通路線。

29 日通車典禮由台北市長柯文哲親自致詞。他表示,台北市的大眾交通工具將並持著節能、環保、e 化以及安全的方向進行。未來,還將會擴大辦理全電動巴士的營運。而根據欣欣客運公司的說法,這次 66 路全電動巴士路線的營運,其中不只包括 12 輛全電動巴士的運作而已,包含場站、行控中心的建置等,都是採用全環保的概念建置。

在全電動巴士的部分,這次 66 路全電動巴士是採用上市公司車王電旗下子公司華德動能與日本住友商事所提出的解決方案來打造。除了具備 12 公尺長大型電動巴士中重量最輕、爬坡力最強、時速最高以及續航力最久的優點之外。在關鍵零組件上,華德動能自製比例超過 50% 以上,期望未來能藉此能提升國內的電動產業。

而除了電動巴士本身之外,欣欣客運還在位於木柵動物園附近的場站中,建置全套電動巴士營運架構。除了充電樁、儲能設備之外,還有利用行車紀錄與大數據作業方式的行控中心,以了解行車狀況之外,還掌控車輛耗能、能源轉換率、充電效率等,加以提升營運及駕駛安全。

另外,欣欣客運還在場站的車棚上,架設 302 平方公尺的單晶矽太陽能板。每天藉由太陽能板約能發出 150 度電,在 100 度電提供給行控中心使用之外,其他多餘的電儲存下來後,每隔幾天就能充飽一台巴士 250 度的儲電量,達到環保綠能的目的。

根據規劃,欣欣客運預計在 2018 年年底前將把全電動巴士的數量擴增到 30 部。而且在場站的綠能發電上,還考慮加入風力發電的部分,利用當地冬天風大的優勢,提升綠能電力的發電效益。之後,在逐步擴展到其他的路線上。

(合作媒體:。首圖來源:)

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

【其他文章推薦】

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

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

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

※超省錢租車方案