2017年1月3日 星期二

SA、SD、PG

本文將會討論這三個職位在我們團隊中各扮演什麼樣的角色

SA-系統分析師(System Analyst)

跟客戶做需求訪談,利用詢問到的需求做產品的設計分析,由於做需求訪談的對象較多是直接操作系統的使用者,所以對於需求的產生是建立在功能使用情境及介面操作上,因為會需要跟專業領域的使用者訪談,也需要對產品的Domain Knowledge有一定程度的認識,所以SA就是將情境說明及介面的操作設計搭配系統的專業領域知識寫出SRS(Software requirements specification),其中產出包括以下幾點:

  • 業務流程圖:整個模組的流程圖
  • 基本資料:功能代號、名稱、概述、需要編號、使用單位、角色
  • 前置作業:使用此功能前須要做的事情,像是要建的資料、要在哪個狀態才可以使用此功能
  • 使用案例說明:情境描述、操作行為、注意事項、功能間的交互關係
  • 使用案例畫面:介面的呈現與設計
  • 欄位定義:介面上每個欄位的名稱、種類(下拉選單、文字、日期…)、資料來源(系統代碼…)、是否必填
SRS為需求導向,做的是軟體的分析,比較著重在邏輯跟順序的設計,也因為SRS跟特定的程式語言其實沒有很大的關係,所以SRS可以用不同的程式語言所實作

SD-系統設計師(System Designer)

SD會依照SA撰寫的SRS去做更細部的規格設計,也就是技術規格,SD通常會是有系統開發經驗的人擔任,必須要了解系統的運作方式及程式語言,把由SRS上得到的使用情境及介面操作寫成程式的實作方式、設計資料的存放方式及測試案例的設計,SD會寫出SDD(Software Design Description),會產出以下幾點:
  • 欄位定義:詳細的欄位定義,像是由那張資料表取得、取得的方式、條件(JoinExists),要實做的控制項(Drop Down ListDate PickerText Box)
  • 細部說明:實作方式,特殊需求
  • 參考檔案:與此功能相似做法的參考,取得資料要使用的UDFSP
  • Service MethodService設計,傳入的參數、命名
  • 單元測試注意事項:單元測試需要注意的地方,測試資料設計,畫面測試情境設計
  • Table Schema設計:DB資料表設計(參數名、型態、預設)
SDD為技術導向,會跟其系統架構及程式語言緊密結合,著重在以某種語言實作出可執行的程式

 

PG-程式設計師(Programer)

PG的職責為撰寫程式碼,拿到SDD後依照上面所述的規格寫程式

參考連結

2017年1月2日 星期一

ASP.NET Web API

本文將建立一個基本的Web API,使用Postman做Demo

Overview

此文章將會建立一個Web API

創建專案

1. File->New->Project…

2. Create ASP.NET Web Application
3. 選擇Empty,勾選Web API
4. Controller資料夾按右鍵->Add->New Item…,新增Web API Controller Class,檔名是ValuesController.cs
點開ValuesController.cs可以看到已經幫我們寫要Web API的框架了,我們現在來看一下路由的設置

可以看到routeTemplate被設置為
"api/{controller}/{id}"
{controller}:要呼叫的controller name(此例子即為Values)
{id}:參數資料

建置專案

按下F5啟動偵錯
會跑出HTTP Error 403.14 - Forbidden的錯誤是因為我們沒有建立頁面,可是Web API的功能還是正常的,現在開啟PostmanHTTP動詞是GET,在URL上輸入http://localhost:{Port Number}/api/values,按下Send

我們可以看由Get Action所傳回來的陣列
如果改為http://localhost:{Port Number}/api/values/5會因為路由機制會導至第一個符合條件,所以會由有id參數的Get所處理
就會看到單一的value

總結

這次已經完成一個簡單的Web API,透過強大的Visual Studio的模板功能,沒有動到程式碼就可以完成一個Web API的框架

參考連結

2016年4月3日 星期日

在SQL Server 2012安裝Northwind資料庫

Northwind是微軟提供的範例資料庫,我們可以利用這個資料庫來練習資料庫或程式語言相關的技術,但這個資料庫是SQL Server 2000的範例,安裝在SQL Server 2012可能會碰到一些問題,這篇文章是我自己在安裝時所碰到的問題紀錄。

下載

可以在微軟網站中下載:

安裝

照下面圖示操作即可:




上述步驟完成後在C:\SQL Server 2000 Sample Databases中找到需要的檔案。

問題及解決

現在有兩個方法可以安裝Northwind,一個是Attach Database,另一個是直接執行.sql,我先嘗試了Attach的方式。

Attach Database

在SSMS中對Database按右鍵>Attach
Add>NORTHWIND.MDF>OK

問題1

出現錯誤,點Databases to attach的Message連結,出現錯誤訊息:
Operating System error 5

解決

SSMS要以系統管理員身分執行

問題2

its non-release version(539)is not supported by this version of SQL Server

為何發生

Google發現有人也有同樣的問題:
SQL Server可以還原資料庫的版本只有前面的兩到三個版本,例如我現在用的是2012,那我可以還原的最舊版本就是2005的,所以當然2012沒辦法還原2000的資料庫。

那我們就來看一下執行.sql的方法可不可行好了。

Execute SQL

問題

把instnwnd.sql直接用SSMS執行,會發生下面的錯誤:
Could not  find store procedure 'sp_dboption'
再次請教Google大神:
發現到原來sp_dboption已經被棄用了,要改用ALTER DATABASE。
所以代表我們要把sp_dboption的指令轉乘ALTER DATABASE。
於是我們去查[trunc. log on chkpt.]及[select into/bulkcopy],很幸運的我們在同一個頁面找到:
發現原來這兩行的是在設定復原模式的而且也知道他們要設定的數值,那我們就把這兩行替換成:
ALTER DATABASE Northwind SET RECOVERY SIMPLE
ALTER DATABASE Northwind SET RECOVERY BULK_LOGGED
之後再執行一次SQL就好了。

2014年11月7日 星期五

jekyll使用sass(scss)

目錄結構

.
|-_sass
    |-default.sass
|-css
    |-main.sass

  • 將.sass(.scss)放於_sass資料夾中。
  • 將主css放於css資料夾中。


在main.sass中加入:

---
---
@import "default"

  • 需要加---是因為此檔案是要可以被jekyll所解析的,所以要符合jekyll格式。
  • @import的路徑只要是檔案名就可以了。

在.html中引用的路徑是css/main.css

  • jekyll會將.sass解析為.css所以後面寫.css即可。

PS:


想要變更_sass資料夾位置或名稱,在_config.yml中加入:

sass:
    sass_dir: 路徑

想要將css壓縮,在_config.yml中加入:

sass:
    style: :compressed

參考

將footer element固定於網頁最下方

這篇是看完CSS-TRICKS的Sticky Footer(要看程式碼請參考此連結)之後所理解出來的原理解釋。

步驟


1. 將網頁分為兩個部份:


  1. 網頁主體(page-wrap)
  2. 頁腳區塊(site-footer)

2. 因為是對於margin所作的效果,所以先將其設為0。


3. 將html及body的height設為100%是為了要將網頁設成視窗大小(如果小於視窗大小的話)。


4. 將網頁主體min-height設為100%以符合html大小,而將margin-bottom設為你要的大小的負數,這裡將邊界往內凹,讓頁腳區塊也可以在100%的高度中,但這樣會產生一個問題,當你的網頁長度(height)超過視窗-頁腳區塊的大小時,網頁主體的內容會跟頁腳區塊重疊,為解決這問題,我們需要設置:after。


5. 將網頁主體設定一個:after的區塊,這個after區塊要跟footer一樣大,after區塊會緊跟在page-wrap的內容之後(在page-wrap中),當然他也算在page-wrap的長度裡,這樣子我們就會給page-wrap一個跟site-footer一樣大小的block,也就是利用這個沒有內容(透明)的block去填補原本凹進去的地方,這樣子page-wrap的內容就不會跟site-footer重疊了。

2014年11月5日 星期三

裝設vim-airline font

在安裝vim-airline時有遇到幾個問題,在這裡做個整理。

1. 在terminal中沒有跑出顏色

解決:

在~/.vimrc中寫入下面的程式碼
if $COLORTERM == 'gnome-terminal'
set t_Co=256
endif

參考:

http://askubuntu.com/a/126

2. 安裝之後沒有出現airline

解決:

在~/.vimrc中寫入下面的程式碼
set laststatus=2

參考:

https://github.com/bling/vim-airline#configuration

3.在安裝之後無法完整顯示

解決:

照著https://powerline.readthedocs.org/en/master/installation/linux.html#fonts-installation所給的指示做。

注意:

A. ~/.fonts如果沒有此目錄的話,自己新增(mkdir ~/.fonts)
B. ~/.config/fontconfig/conf.d/如果沒有此目錄的話,新增(mkdir -p ~/.config/fontconfig/conf.d/

2014年11月3日 星期一

Jekyll問題排除

這裡列出幾個在使用Jekyll的時候所遇到的問題,供日後參考。


問題一:在gem install jekyll時遇到ERROR: Failed to build gem native extension.

解決:安裝ruby 1.9.1(sudo apt-get install ruby1.9.1-dev)

參考:
http://hire.chrisjlee.net/node/229
http://jekyllrb.com/docs/troubleshooting/#installation-problems

問題二:在gem install jekyll時遇到ERROR: While executing gem ... (NoMethodError) undefined method `name' for #<RDoc::RubyToken::TkLPAREN:...>

解決:安裝rdoc(gem install rdoc

參考:
https://github.com/jekyll/jekyll/issues/1560

問題三:在執行jekyll時遇到Could not find a JavaScript runtime.

解決:安裝nodejs(sudo apt-get install nodejs)

參考:
http://jekyllrb.com/docs/troubleshooting/#could-not-find-a-javascript-runtime-execjsruntimeunavailable
http://stackoverflow.com/a/9333316