分類
Python

Azure也有Jupyter Notebooks線上跑Python

之前使用 google colab 的 python 線上環境後, 現在 M$ Azure 也有對應的環境了:

https://notebooks.azure.com/

一樣免費線上使用, 把之前的 factorial 程式放上去做個小範例:

https://notebooks.azure.com/timhuang/libraries/myprojects

請自行執行 factorial.ipynb 即可. 這樣在 Google 與 Azure 上都有方便好用的 notebooks 可用了.

分類
懶得分類

中華電信連微軟雲端服務異常

今早同事通知網站異常, 經檢查, 發現走中華電信路由的電路, 無法連上微軟的雲端服務, 走台哥大4G則是正常, 初步研判是中華對微軟雲端問題.

剛好朋友也在問今天 skype 是不是異常, 回覆應該是上面的問題, 中華電路對微軟雲端路由問題, 目前其他家的網路(如台哥大, 遠傳等)沒有異常.

由於是 IP 層就無法連線, 所以許多相關服務也都無法使用, 像是 office 365 / skype / Azure 等, 應該有大量的客訴發生了吧, 相信兩邊也都在積極處理中, 看何時會恢復囉.

這裡有持續性的連線資料MRTG圖, 所以查得斷線時間約在 (2016/6/24) 9:25 左右, 之後若有恢復會再記錄下來, 供各位參考.

歷經兩小時, 終於恢復了, 時間約在11:15起陸續正常了. 這次相信影響的受災戶還不少.

分類
系統技術

在 Azure 上 Media Service的服務功能與應用介紹

剛在 Channel 9 上看到的, 很棒的內容分享介紹, 給大家參考:

互聯網流媒體架構設計模式與實踐 – 如何使用 Azure Media Service 構建端到端的流媒體服務平臺

https://channel9.msdn.com/Events/DevOps-TW/DeveloperDay/A02

微軟的媒體雲端服務, 基本上包含了完整的媒體應用時所需要的所有功能, 包含了 VOD, Live Streaming, DRM, Player 等, 而且也與原來的 Azure Storage 結合, 可以存放大量內容與上傳轉檔等功能, 另外播放器也十分完整, 可以在各不同平台上提供播放功能, 而傳輸的協議上也同時提供了 MPEG-DASH, HLS, Smooth Streaming (影片中提到的 Azure Media Player 連結: https://ampdemo.azureedge.net/).

這篇影音很清楚地介紹許多在開發人員面對要實作 Media service 時的應用情境, 可以讓大家在開發這類的應用服務時, 有更快速方便的工具.

另外開發的程式語言支援了 .NET, JAVA, PHP, NODEJS 等, 基本上在 Azure 的服務上, 就算是不支援的程式語言也可以透過 Restful API 來操作, 更容易讓開發者使用自己熟悉的語言來進行開發.

分類
系統技術

為Azure上的主機或雲端服務設定保留IP

在雲端的主機, 通常IP不一定是一直固定的, 尤其是在重新開機或關機後再打開, 其 IP 位罝會因為資源重新分派而變動 IP.

當然, 變動 IP 在一般的狀況下, 沒有太大的影響, 因為大多數的服務都是以名稱來連接, 走 DNS 的解析來連接到對應的主機, 所以即使變動也沒有太大問題.

不過有時需要固定的 IP, 尤其像是一些限制 IP 存取的服務時, 若是 IP 異動, 對於連接到這些限制 IP 存取的服務時, 就需要提供服務的廠商來進行調整, 若是因此造成一定時間的服務中斷, 就不是太理想了.

Azure 有提供保留 IP 的服務, 一共有兩種, 一種是 VIP, 也就是走 cloud service 出去的 IP, 另一種是直接對主機設定 IP, 稱為 ILPIP, 通常使用上以 VIP 的彈性較大, 也比較容易進行資源部署, 而直接對主機設定公用 IP 時, 有時會少了一些彈性, 不過也相對單純.

先來看一下價格: https://azure.microsoft.com/zh-tw/pricing/details/ip-addresses/, 正常狀況下, 提供了 5個免費的固定 IP, 若超過 5 個, 每個月會收約 92元(台幣, 也就是美金3元). 最多可以保留 20個 IP, 不過也是可以透過聯絡 Azure 服務來提高這個限制. (限制參考這裡: https://azure.microsoft.com/en-us/documentation/articles/azure-subscription-service-limits/#_subscription-limits)

這篇則說明了 ILPIP 與 VIP 的不同: https://azure.microsoft.com/zh-tw/documentation/articles/virtual-networks-instance-level-public-ip/

設定方式可以使用 azure powershell 或 restful api (https://msdn.microsoft.com/library/azure/dn722420.aspx), 若非常在異動, 或只是幾組設定, 可以使用 azure powershell 即可.

安裝 Azure powershell 可以參考這篇: https://azure.microsoft.com/zh-tw/documentation/articles/powershell-install-configure/

接下來就可以開始操作了:

分類
PHP

使用PHP上傳圖片至Azure Storage供圖檔應用

使用 PHP 將圖檔上傳至 Microsoft Azure 雲端空間供圖檔應用, 有以下幾個步驟:

1. 建立 Azure 的 Storage Account , 並取得 key 與建立 container (也可以使用程式建立)

2. 安裝 Azure PHP Client: http://azure.microsoft.com/en-us/documentation/articles/storage-php-how-to-use-blobs/

2-1. 先安裝 Git
2-2. 依說明建立 composer.json 與下載 composer.phar (http://getcomposer.org/composer.phar), 並進行安裝: php composer.phar install
2-3. 完成程式下載

3. 在 php 程式碼中引入對應程式碼, 以上傳圖檔為例, 程式碼如下:

require_once 'vendor/autoload.php';
use WindowsAzure\Common\ServicesBuilder;
use WindowsAzure\Common\ServiceException;
use WindowsAzure\Blob\Models\CreateBlobOptions;

$connectionString = "DefaultEndpointsProtocol=https;AccountName=[storage account name];AccountKey=[storage access key]";

$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString);

$content = fopen("myfile.jpg", "r");
$blob_name = "myfile.jpg";
$createBlobOptions = new CreateBlobOptions();
$createBlobOptions->setBlobContentType("image/jpeg");

try {
    //Upload blob
    $blobRestProxy->createBlockBlob("[container name]", $blob_name, $content, $createBlobOptions);
    echo "ok";
    echo "<img src='http://[storage account name].blob.core.windows.net/[container name]/".$blob_name."' />";
}
catch(ServiceException $e){
    // Handle exception based on error codes and messages.
    // Error codes and messages are here: 
    // http://msdn.microsoft.com/library/azure/dd179439.aspx
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message."<br />";
}

其中範例中的程式, 並沒有指定對應 blob 中的 Content-Type, 會使用預設的 application/octet-stream , 其實在網頁使用並無影響, 但若是直接連結會變成是下載的狀況, 比較不適合, 而且也應該是指定為正確的 Content-Type 較佳.

若有需要使用到 php 上傳圖檔至 Azure storage, 可以參考上面做法進行上傳應用.

相關資料:
Put Blob: https://msdn.microsoft.com/library/azure/dd179451.aspx

使用 ASP.NET 版本參考這篇:
http://blogs.msdn.com/b/ericsk/archive/2013/12/18/php-on-windows-azure-windows-azure-blob-storage.aspx