Posts
PL/SQL amp; SQL CODING GUIDELINE 8 - Try to use anchored declarations for variables
條款八,使用 anchored declarations。
像是下面這樣的程式:
DECLARE v_empName VARCHAR2(10); BEGIN … END; 預期要帶入的是 emp table 的 ename,這在 emp table 的 schema 中是其實是已經定義好的。如果像上面這樣另行宣告可能會不小心設錯,或是 schema 修改時會很麻煩。
若是使用 anchored declarations,型態會直接參照 schema 的定義,免去像這樣的困擾。
DECLARE v_empName emp.ename%TYPE; BEGIN … END;
read morePosts
TypeScript - Function Types
用 JavaScript 撰寫 Function,要馬是使用 Named function,要馬就是使用 Anonymous function。
//Named function function add(x, y) { return x+y; } //Anonymous function var myAdd = function(x, y) { return x+y; }; 因為 JavaScript 不具型態的關係,Function 有時候會被傳入不如預期的資料,回傳不預期的結果。像是上述的例子可能預期是用做數值的加總,但因為不具型態的關係就有可能被傳入字串,做為字串的串接使用。
TypeScript 可以在定義方法時設定參數與回傳值的型態,像是下面這樣:
function functionName(param1: Type1, [param2: Type2, ...]): Type {...} 所以上述的程式透過 TypeScript 改寫成像下面這樣,就不會碰到本來面臨的問題了。
function add(x: number, y: number): number { return x+y; } var myAdd = function(x: number, y: number): number { return x+y; }; Link Handbook - Welcome to TypeScript
read morePosts
TypeScript - Basic Types
TypeScript 內可用的型態有 Boolean、Number、String、Array、Any、Void、Enum 這幾種。
{% img /images/posts/TypeScriptBasicTypes/1.png %}
其中 Boolean、Number、String、Array、Any、Enum 的宣告方式如下:
var variableName: Type; 所以宣告起來會像下面這樣:
var booleanVariable: boolean; var numberVariable: number; var stringVariable: string; var arrayVariable1: number[]; var arrayVariable2: Array<number>; var anyVariable: any; var enumVariable: enumName; 宣告指定的型態後,該變數就只能賦予相同型態的值,像是 Boolean 型態就只能賦予 true/false、Number 型態只能賦予數值、String 型態只能賦予字串值。若真的有需要讓變數支援賦予多種不同型態的值,只要將變數宣告成 Any 型態即可。
陣列的宣告比較特殊,支援兩種宣告方式。可以直接用型態後面接中括弧表示,也可以用 Array 的泛型的寫法。
列舉型態的宣告跟 C# 類似:
enum enumName{element1 = 1, element2, element3, ...}; 列舉參數的宣告與列舉的操作如下:
var enumValue: enumName = enumName. element1; var enumName: enumName = enumName[2]; Void 型態則是用以指定方法無回傳值時使用:
read morePosts
RazorCandle - Render a razor template and save it to a file from command line
RazorCandle 是一命令列程式,能讓我們透過命令列進行 Razor 的轉換。
該程式未有 Release 的版本,所以需要自己下載原始碼下來編譯。
命令列使用的方式如下:
RazorCandle.exe source [destination] [/M] [/V] source Specifies the source razor file. [destination] Specify the output file. By default is the same name as the source with the html extension. [/?] Show Help [/M] Json model as string to the model. [/V] Verbose mode. Show result in the output. 簡單說就只要在命令列後面帶入來源檔案、輸出的檔案 (若不帶則預設為同名的 html 檔),如果轉換需要參數可以使用 /M 後面接 Json 帶入。
舉個例子來說,假設今天我們有個 cshtml,裡面的 Model 有 FirstName 與 LastName。
read morePosts
Oracle SQL Developer - PL/SQL Syntax Colors
Oracle SQL Developer 預設的的 Syntax Color 若不習慣,我們可以開啟 Perferences 對話框,在 [Code Editor | PL/SQL Syntax Colors] 下做些修改,將之調成我們習慣的樣式。
不太會調整的也可以直接換用 Scheme。
{% img /images/posts/OracleSQLDeveloperSyntaxColors/1.png %}
要注意的是,若這邊換用的是 Twilight Scheme,由於底色太暗,會看不到當前輸入的游標,因此要在切到 [Code Editor | Caret Behavior] 下設定 Caret Color,將輸入游標調成淺色系。
{% img /images/posts/OracleSQLDeveloperSyntaxColors/2.png %}
read morePosts
Oracle SQL Developer - Show query result in new tabs
Oracle SQL Developer 預設 Query 出來的結果會在同一個 Query Result 視窗,若要讓每次 Query 都在個別的視窗,我們可以開啟 Perferences 對話框,在 [Database | Worksheet] 下勾選 Show query results in new tabs 選項。
{% img /images/posts/OracleSQLDeveloperQueryResultInNewTabs/1.png %}
這樣每次 Query 結果就會在獨立的 Query Result 視窗中。
{% img /images/posts/OracleSQLDeveloperQueryResultInNewTabs/2.png %}
read morePosts
Vagrant - Global Status
Vagrant box 一多,常常會 Vagrant up 後就忘 Vagrant halt,虛擬機就在背後持續運行。
這時我們可以呼叫 global-status 命令查詢當前使用者所有 Vagrant 虛擬機的使用狀況。
Vagrant globl-status {% img /images/posts/VagrantGlobalStatus/1.png %}
會顯示 id、name、provider、status、directory 這些資訊,藉此我們可以找到正在運行的 Vagrant box 所在目錄,切換過去將之關閉.
Link vagrant global-status - Command-Line Interface - Vagrant Documentation
read morePosts
DNVM - The .NET Version Manager
DNVM 是一命令列工具,允許我們透過命令去管理 .NET CLR/CoreCLR SDK 與運行的環境(DNX)。
可透過命令提示字元進行安裝
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "&{$Branch='dev';iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}" 或是透過 Powershell 安裝
&{$Branch='dev';$wc=New-Object System.Net.WebClient;$wc.Proxy=[System.Net.WebRequest]::DefaultWebProxy;$wc.Proxy.Credentials=[System.Net.CredentialCache]::DefaultNetworkCredentials;Invoke-Expression ($wc.DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))} 安裝完後輸入 DNVM 即可看到詳細的使用說明。
{% img /images/posts/DNVM/1.png %}
主要會用到的命令有 list、 upgrade、 install、 use、 alias。
list 命令是用來列出本機有哪些 DNX 可供使用。
dnvm list {% img /images/posts/DNVM/2.png %}
可以看到 DNX 的 Version、 Runtime、 Architeure、 Location、 Alias,以及目前在用的是哪一個。
upgrade 命令可用以更新 DNX,會自動安裝最新版的 clr DNX,將之設為 default alias,並將指定使用最新版的 DNX。
dnvm upgrade {% img /images/posts/DNVM/3.png %}
跟加帶 -r clr 的效果是一樣的。
read morePosts
Vagrant - File Provisioning
File Provisioning 可以讓我們自動在 Vagrant 啟動時將檔案傳遞至虛擬機中。
使用上主要是透過 Vagrantfile 將 config.vm.provision 設為 file,並利用支援的參數與方法做些對應的設定。
支援的參數有 source、 destination。source 參數指定的是本機上的來源檔案位置,destination 參數指定的是虛擬機上的目標檔案位置。
像是這邊,若要將本地的 shell script 帶入到虛擬機中。
{% img /images/posts/VagrantFileProvisioning/1.png %}
Provisioning 運行後虛擬機就會將指定的檔案帶到指定的位置。
{% img /images/posts/VagrantFileProvisioning/2.png %}
Link File Uploads - Provisioning - Vagrant Documentation
read morePosts
Vagrant - Docker Provisioning
Docker Provisioning 可以自動在 Vagrant 啟動時幫我們進行 Docker 的安裝,容器的下載,與容器的設定。
使用上主要是透過 Vagrantfile 將 config.vm.provision 設為 docker,並利用支援的參數與方法做些對應的設定。
支援的參數有 images、version。images 用以指定所要拉下來的 Docker 映像檔,跟 pull_images 方法類似。version 則是指定要裝的 docker 版本,若未指定預設是使用最新版本。
支援的方法有 build_image、pull_images、run。build_images 方法可以讓我們把 dockerfile 建立成映像檔。pull_images 方法可以將指定容器下載下來。run 方法可以啟動指定容器。
像是下面這個例子,筆者使用 boot2docker 的 vagrant box,結合 docker provision 拉下 oracle-xe-11g 容器,以守護容器方式啟動,將 1521 port 導出,並掛上 data volume。
Vagrant.configure(2) do |config| config.vm.box = "blinkreaction/boot2docker" config.vm.box_check_update = false config.vm.synced_folder "Data", "/home/docker/data", create: true config.vm.network "forwarded_port", guest: 1521, host: 1521 config.vm.provision "docker", images:["wnameless/oracle-xe-11g:latest"] do |d| d.
read more