Mac 顯示所有隱藏檔案

在 Terminal 中輸入以下指令以顯示所有隱藏文件:

1
defaults write com.apple.finder AppleShowAllFiles -bool true

然後,在 Terminal 中輸入以下指令以重新啟動 Finder:

1
killall Finder

這樣就可以顯示所有隱藏文件了。

Eclipse 在開啟時卡在Maven build的解決方法

如果開啟Eclipse時,發現會卡住,打不開,而關閉Eclipse時,顯示Maven build的訊息,卡住Eclipse,如圖:

以下是處理步驟:

  1. 先將Eclipse關閉,如果關不掉,使用強制關閉的方式關閉。
  2. 然後移動到程式碼放置的位置,找到.metadata資料夾,把它移走,放到別的地方,(或者是直接刪除)
  3. 之後再開啟Eclipse,然後在重新import專案。
  4. 這時Eclipse會自動重新建立專案。

Mac 截取螢幕圖片

  • 同時按下這三個按鍵:Shift+Command+4,就可以讓你使用滑鼠選擇擷取螢幕某個部分的圖片,

    • Windows中則是按下windows+Shift+s
  • 同時按下這三個按鍵:Shift+Command+3則是擷取整張桌面的圖。

DELETE與TRUNCATE的區別

DELETE與TRUNCATE的區別

  • DELETE
    • 是DML語句,可以ROLLBACK,
    • 可以有條件的刪除
    • 如果刪除較大量的資料,DELETE效率較差
  • TRUNCATE
    • 是DDL語句,立即生效,無法ROLLBACK
    • TRUNCATE將TABLE中的資料全部刪除

如果刪除較大量的資料TRUNCATE效率較好

在Chrome中抓取整個網頁截圖

打開 DevTools,在右邊找到 Run command

點擊之後,輸入Capture full size screenshot
就可以抓取該網頁的截圖了

Hexo 加入自訂的 HTML頁面

有時候想要記錄一些javascript特效或是小工具時,在Hexo會需要自訂自己的HTML頁面,以下是操作步驟

  1. 在Hexo專案下面找到 source 資料夾,新建一個要放自訂HTML的資料夾。
    我這邊是放html/tools/html_encode

  2. 在配置檔案_config.yml中,設定跳過渲染

    1. 單個檔案
      1
      2
      skip_render:
      - 'html/***.html'
    2. 跳過該資料夾下的所有檔案
      1
      2
      skip_render:
      - 'html/*'
    3. 跳過該資料夾下所有檔案以及子資料夾
      1
      2
      skip_render:
      - 'html/**'
  3. 之後使用指令清除暫存並開始Server

    1
    2
    3
    hexo clean
    hexo g
    hexo s
  4. 訪問網址驗證成果,它會以你資料夾的結構去建立URL,例如我的資料夾結構是html/tools/html_encode,因此在訪問時,就是訪問:
    http://localhost:4000/html/tools/html_encode/index.html

  5. 如果想要在原先的blog中加入這個自訂的HTML頁面,並使用Tag的話,推薦使用 iframe 的方式

    1
    2
    <iframe  src='/html/tools/html_encode/index.html' scrolling="no" frameborder="0" width='100%' height='800px' style='margin-top:12px'>
    </iframe>

    結果如下:

Unity架構分層

將專案分為四層

  1. 表現層:為ViewController 或是 MonoBehaviour腳本,在這一層主要與顯示相關
  2. 表現邏輯:指的是當Model資料變更之後,View顯示更新之後的資料,即Model -> View;可以使用呼叫方法,委託,事件三種方式完成。
  3. 交互邏輯:為接收使用者輸入之後改變Model資料,即View -> Model;可以使用Command pattern減輕Controller的負擔,注意:command是沒有狀態的,他類似一個方法,呼叫之後就不用了
  4. Model層:管理資料,提供資料的增刪改查
  5. Utility層:工具層,提供一些共用的工具,如資料儲存、網路連接、藍芽、序列化與反序列化等
  6. System層:系統層,提供API且有狀態的物件,例如藍芽服務,計時器服務,網路服務等

這四層的交互

  • 表現層改變Model層System層的狀態會使用Command,
  • System層Model層通知表現層使用事件或是委託,
  • 表現層查詢狀態時可以直接獲取System層Model層
  • 一般,表現層不會訪問到Utility層Utility層也不會通知表現層

C# 明確方式實作介面

明確方式實作介面(Explicit Interface Implementation)

如果一個class去實作兩個有相同方法的interface,會發生什麼事?
程式如下,分別有兩個interface IControlIAction都含有Move()方法,其中ExampleClass去實作這兩個Interface。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public interface IControl
{
void Move();
}
public interface IAction
{
void Move();
}
public class ExampleClass : IControl, IAction
{
// Both IAction.Move and IControl.Move call this method.
public void Move()
{
Console.WriteLine("Move method in ExampleClass");
}
}

執行

1
2
3
4
5
6
7
8
9
10
11
12
13
ExampleClass example = new ExampleClass();
IControl control = example;
IAction action = example;

// The following lines all call the same method.
example.Move();
control.Move();
action.Move();

// Output:
// Move method in ExampleClass
// Move method in ExampleClass
// Move method in ExampleClass

結果是都會呼叫同一個實作。


但是你可能希望個自Interface執行不同的實作,這時就可以使用Explicit Interface Implementation如下:

1
2
3
4
5
6
7
8
9
10
11
public class ExampleClass2 : IControl, IAction
{
void IControl.Move()
{
System.Console.WriteLine("IControl.Move");
}
void IAction.Move()
{
System.Console.WriteLine("IAction.Move");
}
}

執行

1
2
3
4
5
6
7
8
9
10
11
12
ExampleClass2 example2 = new ExampleClass2();
IControl control = example2;
IAction action = example2;

// The following lines all call the same method.
//example2.Move(); // Compiler error.
control.Move(); // Calls IControl.Move on ExampleClass2.
action.Move(); // Calls IAction.Move on ExampleClass2.

// Output:
// IControl.Move
// ISurface.Move

此時,不可以直接透過實作class的物件去直接呼叫,會出現編譯錯誤,必須要把該物件轉換為對應的interface,例如如果你想呼叫IControl的Move方法,那麼就把它轉換為IControl。

注意:Explicit Interface Implementation是沒有存取修飾詞的,因為它無法當做其定義類型的成員來存取。它只有在透過interface的執行個體呼叫時才能存取。

參考:https://learn.microsoft.com/zh-tw/dotnet/csharp/programming-guide/interfaces/explicit-interface-implementation

使用Hexo Admin

透過 hexo-admin 這套插件,就能透過GUI介面進行後台管理,如新增或編輯markdown文件,簡化了發布文章的流程。

  1. 安裝套件
  2. 使用終端機,並移動到Hexo專案位置下,之後執行以下指令
    1
    $ npm install --save hexo-admin 

安裝完成之後,啟動本地端Server就可以進入後台管理,如下

  1. bash $ hexo server -d
  2. 進入 http://localhost:4000/admin 可進入後台管理

注意: Hexo Admin已經不維護了