2017年4月20日星期四

Visual Studio Code - MSSQL Extensions

因為在看 MSSQL Server 2017 CTP 2.0 Release Note 才發現這個 Extension.


雖然只是 Version 0.3 但都幾好用, 又有 IntelliSense.

還可以 Refresh IntelliSense Cache.



Hyper-V 之你要記憶體我無理由不給你.

今天開始試玩 MSSQL-Server 2017 CTP 2.0 (Docker Version). 因為昨天發佈了一堆新功能, 不得不去試, Graph Query, Python, Azure Data Lake.... 等等.

如常地用 VM 試 Docker 試 MSSQL.

因為近期裝緊 Slackware Hyper-V Guest 順手就係度試埋 Docker 17.04. 因為好常用 Dynamic Memory, 所以都調到好少 Ram. 跟住問題就來了.


MSSQL-Server-Linux 會 Detect 要 3.25GB Ram 才運行, 但我設定是 Min. 2GB Ram, 所以就不運行. 但其實是有充足的記憶體的. 但 Linux 沒有 Memory Demand, 所以 Hyper-V 就沒有給 Ram.

這時就想起 周星馳..."做咩呀?你愛呀?你愛要出聲先得架,你愛我俾你,你唔愛我當然唔會俾你啦!無理由你話愛我唔俾你,你唔愛我俾你架嘛!大家講道理嘛!拿,我數三聲,你話愛唔愛喇喎?"

好像都未遇過這個問題, 未 Google 一下, 可以能有程序可以加 Ram. 唯有加大 Min. Ram 先.


這次開多幾個 MSSQL 就可以成功加到 Ram.

2016年2月20日星期六

初試 U-SQL

近期見到 U-SQL 好似幾好玩, 所以就 Download 個 Tools 返來實行人試我又試.

1. 先準備數據.

我今次用的是 Google Place 的地點數據.


主要係玩個 types. 因為是用 "|" 來分隔.

今次想計不同類型的地點 Count.

2. 寫 U-SQL. (主要參考 Tutorial 的寫法.



都是用 SQL.ARRAY<> 將 types 的內容轉成 Array. 再用 Cross Apply Explode. 最後就 Group.

3. 推到 Data Lake 運行.


4. 睇結果.


2016年1月11日星期一

試用 Apache HTTPD 2.4 做 ReverseProxy 試 WebSocket

此摘要無法顯示。請 按一下這裡以查看文章。

用 Synology 的 Docker 運行 ASP.NET 5 試行 Simple WebSocket.

在家都有隻 Synology 的 NAS. 知道 DSM 可運行 Docker 就當然要試一下.

輕鬆地從 Package Manager 找 Docker 就可以.



安裝後就可以從 Docker Hub 找 "aspnet" 就找到 Microsoft/aspnet


安裝時選擇所需的版本. 我選用了 1.0.0-rc1-update1.

當下載後, 就可以係 Image 中找到已下載的 Image.



這裡可以選 Launch with Wizard.


Step 1: Container Name 同加一個 Port. 主要將 NAS 的 Port 指到 Container 的 Port.


Step 2: Default 就可以.


Step 3: 這裡需要 Advanced Settings 主要將一個 Folder 指入 Container. 用作將要放的 ASP.NET Web 放到 Container 中, 如下.


完成後就可以開始這個 Container.

進入 Home Folder (我將 Project Files 指到 Home)

運行一次 dnu restore (Restore 所需的套件)後, 就可以 dnx web 去運行.

但我沒有加入相關的 config. 這裡直接加入 Options.

dnx web --server.urls http://0.0.0.0:5000 預設是 localhost:5000. 外部不能連入. 所以改成 0.0.0.0:5000



這樣就可以直接連入 NAS 的 50080 Port. 之前 Step 1 指定的. 同樣可以運行這個簡單的 WebSocket.









2016年1月10日星期日

簡單試作 ASP.NET 5 RC1 WebSocket

基本上都己經更新了 Visual Studio 2015, 更新到最新 Stable 版的 DNX.


新開一個 ASP.NET 5 Project. 

主要用的的套件是:  "Microsoft.AspNet.WebSockets.Server": "1.0.0-rc1-final"


當加入 Microsoft.AspNet.WebSockets.Server 就可以在 Startup.cs 用 app.UseWebSockets();


因為只是單純測試 WebSocket 所以都在 Startup 直接制作一個 Echo WebSocket.

以上的 Simple 沒有處理多個封包的合併, 同時也沒有處理回應的實際應有的長度, 所以回應會是 1024 Bytes.

 加入頁面用作 WebSocket Client 測試.


簡單幾句 new WebSocket(); Handle "onmessage". 再用 websocket.send("Message") 就可以.

再用 Debugger 就可以看到來回的訊息.


從此可以見 Browser 送出的 5 Bytes Message, 回來因沒有正確 Create ArraySegment 所以看到 1024 Bytes.

加入正確的 ArraySegment Size 如下, 在回覆前創建一個新的 ArraySegment.


再從 Debugger 查看.


可以看見來回都是 5 Bytes.








2015年11月5日星期四

Copy-VMFile (Copy file from Host to Virtual Machine)


剛剛在 Compile 緊 Linux Kernel 4.3 才發現原來 HyperV Tools 已經有 hv_fcopy_daemon. 這個 Daemon 就是可以支援由 Host 找 File 到 Guest. 當然都要 Enable Guest Services.

簡單一句 PowerShell

Copy-VMFile "VM NAME" -SourcePath "[FILE PATH]" -DestinationPath "[DEST PATH]" -FileSource Host

這樣比以前方便許多, 以往都只是用 FTP / SFTP 等方法抄去 VM.

2015年10月2日星期五

DNX Core 5 由 Beta8 轉成 RC1 (Dev/Unstable)

今日如常試用 DNXCore 做開發, 剛剛 Update 一下就見到 RC1. 感覺得好像已經進入直路, 就快正式, 但還有很多新的開發未學識. 努力中.


2015年9月12日星期六

繼續試玩 OpenSCAD, 試做 SJCAM Panorama 架

今次想試下做個架, 放四部 ActionCam, 因為一部 ActionCAM 都有超過 90度的 FOV, 所以四部應該能夠影一個圈. 所以有了以下的設計.

OpenSCAD - SJCAM Panorama
未知效果. 希望無劃錯. 因為要印兩日.

2015年8月27日星期四

初試用 OpenSCAD 劃 ActionCam 3D 架.

之前劃 3D Model 去印都係用 Sketchup 劃, 近兩日才認識這個 OpenSCAD  http://www.openscad.org/ 加上想做個 ActionCAM 立體拍片架, 所以就小試牛刀.

相比用 Sketchup. 寫 Script 對我來說相對容易同好玩.


OpenSCAD Model




這種做法是參考網上的 GoPro 3D.

OpenSCAD File:


module sjcambase() {
    difference() {
        cube([70,52,30]);

        translate([5,5,5]) {
            linear_extrude(26) {
                square([60,42]);
            }
        }
        
        translate([10+11,15+5+11,-1]) {
            linear_extrude(7) {
                circle(d=22);
            }
        }
        
        
        translate([6+5+43,6+5+23,-1]) {
            linear_extrude(7) {
                circle(d=12);
            }    
        }
        
        translate([8 + 5 + 40,5+42+5+1,8+5 + 6]) {
            rotate([90,0,0]) {
                linear_extrude(7) {
                    circle(d=16);
                }
            }
        }
        
        translate([5+60-1,5,5+13]) {
            cube([3,42, 8]);
        }
    }
}


difference() {
    union() {
        translate([70,52+(42-15-11-5-1),0]) {
            rotate([0,0,180]) {    
                sjcambase();
            }
        }
        
        translate([65,0,0]) {
            sjcambase();
        }
    }
    
    translate([65-1,11+4,5]) {
        cube([7,42-10, 26]);
    }
}

以上謹對應我手上的 ActionCAM. 別的 Action CAM 有需要修改大少及按鈕位置.