快轉到主要內容

文章

2015


Entity Framework FakeDbSet

·1 分鐘

為了單元測試,需要作假資料,如果用資料庫來做,就需要考慮測試資料的建立以及 Transaction 的問題,因為建立測試資料後還得刪除。

所以可以使用 Mock 的方式,把 IDbSet 改成使用 InMemory

目前 Nuget.org 就有一個套件,可以幫忙你實作 InMemorySet 我目前是安裝 AnotherFakeDbSet,Source 在 Github-AnotherFakeDbSet

這個 Source 的原始版本是 FakeDbSet 不過我也覺得 AnotherFakeDbSet 改的不錯,而且因為陸續有推出新版本,所以我自己也是採用這個 Nuget Package

log4net Action Log 設定

·4 分鐘

我之前設定網站執行的 Action Log 的一個記錄,有些東西都是拼拼湊湊出來的,並不見得是最佳版本

log4net 設定檔

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <root>
        <level value="DEBUG" />
        <appender-ref ref="stdout" />
        <appender-ref ref="ActionLogRollingFile" />
    </root>
    <appender name="ActionLogRollingFile" type="log4net.Appender.RollingFileAppender">
        <file type="log4net.Util.PatternString" value="action.log" />
        <appendToFile value="true" />
        <encoding value="utf-8" />
        <maxSizeRollBackups value="30" />
        <rollingStyle value="Date" />
        <datePattern value="'.'yyyy-MM-dd" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="(%date{HH:mm:ss,fff}) [%t] - %u %5property{Duration} %property{StatusCode} %6property{Method} %property{Uri} %m%n " />
        </layout>
        <filter type="log4net.Filter.LoggerMatchFilter">
            <acceptOnMatch value="true" />
            <LoggerToMatch value="Sample.Web.Filters.WebApiActionFilter" />
        </filter>

        <filter type="log4net.Filter.DenyAllFilter" />
    </appender>
</log4net>

其中要注意的是

  • log4net.Filter.LoggerMatchFilter: 用來設定特定的 class 記錄才使用這個 Appender
    • acceptOnMatch: 這個設定有點像是 blacklist/whitelist,true 表示有 match 才是,相當於 whitelist
    • LoggerToMatch: 設定要篩選的類別名稱
  • log4net.Filter.DenyAllFilter: 篩選掉其他的 Log,不會在這個 Appender 裡面記錄

JWT

·2 分鐘

OAuth2 現在已經很多的網站都有實作了,像是 Twitter, Google, Facebook, Github 等網站本身都有支援 OAuth2 的驗證與授權機制

最近因為專案需求,特地去研究了一下有關 Web API 做驗證授權的機制,看到網路上有很多的範例,在講解 AngularJS SPA 的登入作法,想說可以把類似的機制放到 RESTful Service 的驗證上面

2014


Docker service behind proxy - Ubuntu

·1 分鐘

編輯 /etc/default/docker
把以下 export http_proxy 的那一行 unmark, 然後改成你的 proxy 設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Docker Upstart and SysVinit configuration file

# Customize location of Docker binary (especially for development testing).
#DOCKER="/usr/local/bin/docker"

# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"

# If you need Docker to use an HTTP proxy, it can also be specified here.
export http_proxy="http://127.0.0.1:3128/"

# This is also a handy place to tweak where Docker's temporary files go.
#export TMPDIR="/mnt/bigdrive/docker-tmp"

重新啟動 docker service — service docker restart