Quantcast
Channel: 簡睿隨筆
Viewing all 897 articles
Browse latest View live

使用AutoHotkey快速切換語言鍵盤,和超難用的Ctrl/Alt+Shift說再見!(AHK #9)

$
0
0

Windows 10切換輸入法很麻煩。首先,設定不太好找,在Windows 10版本1803後,鍵盤設定的步驟是:

  1. 〔Win+I〕
  2. 裝置
  3. 輸入
  4. 進階鍵盤設定
  5. 輸入語言快速鍵

變更中英鍵盤或輸入法的按鍵,必須是〔Ctrl+Shift〕或〔Alt+Shift〕這兩種複合鍵,其實不太方便按。

AutoHotkey腳本

我們要設定〔Alt+1〕是英文輸入,〔Alt+2〕是中文輸入,〔Alt+0〕是中英輸入循環切換。

腳本 test9.ahk檔案下載,按右鍵另存新檔:

#SingleInstance Force

!1::
  SetDefaultKeyboard(0x0409)  ;;// 切換為英文輸入
  return

!2::
  SetDefaultKeyboard(0x0404)  ;;// 切換為中文輸入
  return

!0::
  V++
  M := mod(V,2)
  if M=1
    SetDefaultKeyboard(0x0404)  ;;// 切換為中文輸入
  else
    SetDefaultKeyboard(0x0409)  ;;// 切換為英文輸入
  return

// 設定鍵盤的函數,使用Windows API
SetDefaultKeyboard(LocaleID) {
  Global SPI_SETDEFAULTINPUTLANG := 0x005A
  SPIF_SENDWININICHANGE := 2
  Lan := DllCall("LoadKeyboardLayout", "Str", Format("{:08x}", LocaleID), "Int", 0)
  VarSetCapacity(Lan%LocaleID%, 4, 0)
  NumPut(LocaleID, Lan%LocaleID%)
  ;Lan := 0xE0090404
  DllCall("SystemParametersInfo", "UInt", SPI_SETDEFAULTINPUTLANG, "UInt", 0, "UPtr", &Lan%LocaleID%, "UInt", SPIF_SENDWININICHANGE)
  WinGet, windows, List
  Loop %windows% {
    PostMessage 0x50, 0, %Lan%, , % "ahk_id " windows%A_Index%
  }
}

操作說明影片

##

您可能也會有興趣的類似文章


由零開始寫一次關閉多個同名程式的 AutoHotkey腳本(AHK #10)

$
0
0

使用到的指令

  • WinGetTitle: 取得視窗標題
  • InputBox: 輸入字串的對話窗
  • WinExist: 視窗是否存在
  • WinClose: 關閉視窗

AutoHotkey原始碼

#SingleInstance Force
SetTitleMatchMode 2

#n::
  run notepad
  Return

^!f4::
  WinGetTitle sTitle, A
  ;// MsgBox %sTitle%
  ;// InputBox, OutputVar [, Title, Prompt, HIDE, Width, Height, X, Y, Font, Timeout, Default]
  InputBox sTitle, 視窗標題, 請輸入視窗的標題文字, , 300, 150, , , , , %sTitle%
  if (sTitle = "nb") {
      sTitle := "記事本"  ;; 或用 sTitle = 記事本
  } else if (sTitle = "ie") {
      sTitle := "Internet Explorer"
  }
  while WinExist(sTitle)
    WinClose
  Return

參考

  • [[方便工具 WinClose] 一個指令關閉多個視窗](http://jdev.tw/blog/4810/winclose-autohotkey)

說明影片

##

您可能也會有興趣的類似文章

[Windows] IntelliJ IDEA啟動緩慢的解決方法(適用JetBrains各個工具,包含Android Studio)

$
0
0

如果你在啟動IntelliJ IDEA時覺得有點慢的話,可以參考這篇的說明:Slow startup on Windows: splash screen appears in more than 20 seconds – IDEs Support (IntelliJ Platform) | JetBrains,文中提到緩慢的原因是Windows Defender造成的,只要把idea64.exe加入病毒掃描的排除項目就可以解決。

Windows Defender排除項目

加入排除項目的步驟如下:

  1. 按〔Win+I〕開啟Windows設定
  2. 點擊【更新與安全性】
  3. 點擊【Windows安全性】
  4. 點擊【病毒與威脅防護】
  5. 點擊【管理設定】
  6. 點擊【新增或移除排除項目】
  7. 在【新增排除範圍】左側點擊【+】號,選擇【檔案】
  8. 瀏覽到idea64.exe後將之加入

其實IDEA啟動時除了idea64.exe外,還會啟動fsnotifier64.exe,因此建議直接加入IDEA的【安裝資料夾\bin】一勞永逸。

##

您可能也會有興趣的類似文章

「繁化姬」繁簡轉換網路服務

$
0
0

繁化姬提供的功能與OpenCC相同(用OpenCC快速、準確的簡繁互轉 | 簡睿隨筆 | 學習過程的紀錄與備忘),不同處是OpenCC是本地端的執行工具,而繁化姬則是網路服務。

『「繁化姬」是個強大的線上「繁簡轉換」與「本地化」工具,有多個可選的詞語模組,還附帶著轉換前後可編輯的差異比較。』

繁化姬已累積了七年的詞庫,有簡繁轉換需求的朋友們不妨一試。

##

您可能也會有興趣的類似文章

使用IntelliJ IDEA學習Java程式設計 (IDEA #1)

$
0
0

IntelliJ IDEA是一個專注Java的整合開發環境,舉凡Java程式語言的編輯、編譯、執行與除錯等皆提供強大的支援功能,是非常多人使用的開發工具。

IntelliJ IDEA自2001年釋出第一版迄今已18年,其開發公司來自捷克布拉格,公司原名為IntelliJ,後來改名為JetBrains。IntelliJ IDEA是該公司第一個IDE。

IntelliJ平台(IntelliJ Platform)則是以InttliJ IDEA為平台而建立的其他程式語言開發環境,目前平台內有下列幾項:

開發環境 目標程式語言
CLion C、C++
DataGrip SQL
GoLand Go
IntelliJ IDEA Java、Kotlin、Scala等
PhpStorm PHP
PyCharm Python
Rider .NET (C#)
RubyMine Ruby
WebStorm JavaScript

IntelliJ平台的所有工具裡,只有IntelliJ IDEA有提供免費使用的社區版(Community Edition),透過學習IDEA社區版來熟悉IntelliJ平台的操作與適應其使用者介面後,再針對自己需要的程式語言來選擇特定工具,應該能達到更好的學習效果。

Java Development Kit(JDK)下載與安裝

建議安裝OpenJDK,不要使用Oracle JDK,以免日後被要求付費。

建議安裝於 c:\JDK\資料夾,資料夾裡依JDK版本建立不同資料夾,如 C:\JDK\JDK11\、C:\JDK\JDK8等。

IntelliJ IDEA下載與安裝

IntelliJ IDEA版本以版本號命令的最後一版是2015年的15版,2016年開始版本號變更為「西元年度.重大變更版號.更新號」,目前最新的版本號是2019.1.3,2019.2已在EAP(Early Access Program)測試中。若想試驗EAP版,可瀏覽器此網頁:IDEA 2019.1 EAP – IntelliJ IDEA – Confluence

建議下載 JDK 11 .zip檔的版本。

建議安裝於 c:\IDEA-CE\資料夾,資料夾裡依IDEA版本建立不同資料夾,如 C:\IDEA-CE\IDEA2019.1\、C:\IDEA-CE\IDEA2018.1.5\等。

解說影片

  1. IDEA #1

  1. IDEA #2

##

您可能也會有興趣的類似文章

第一次執行IntelliJ IDEA與初始設定(IDEA #2)

$
0
0

  • 啟動:執行 C:\IDEA-CE\IDEA2019.1\bin\idea64.exe
  • 設定為Windows Defenderr的排除項目以加速啟動時間
  • IntelliJ IDEA的執行時系統資料夾與設定預設存放於 C:\Users\帳號.IdeaIC<版本號>,如:C:\Users\jerry.IdeaIC2019.1,資料夾內會有system、config與plugins三個子目錄

初始設定

  • 顯示工具列 Toolbar
  • 設定OpenJDK 11為專案的SDK
  • Settings與Project Structure是兩個最重要的設定選項

解說影片

  1. IDEA #1

  1. IDEA #2

##

您可能也會有興趣的類似文章

IntelliJ IDEA的啟動設定與建議安裝的外掛(IDEA #3)

$
0
0

啟動設定

由功能表設定或按〔Ctrl+Shft+A〕搜尋動作。

設定方式 功用說明
Help → Edit Custom Properties… 設定IDEA的系統資料夾
Help → Edit Custom VM Properties… 設定IDEA的啟動參數

基本設定

設定方法 功用說明
Appearnce → Windows Options → 勾選Show Memory Indicator 顯示VM數值
Editor → Font 變更編輯區字型,預設是Monospaced 12
Editor → Code Style 選用喜好的程式碼樣式
Editor → General → Mouse:
Change font size (Zoom) with Ctrl+Mouse Wheel
Ctrl+滾輪變更編輯區字體大小

建議額外安裝的安掛

市場的外掛 功用說明
Key Promoter X 提示滑鼠選單對應的快捷鍵
Presentation Assistant 教學用快捷鍵提示
Material UI Theme 暗色系主題選擇

Material Theme設定

請見影片。

解說影片

##

您可能也會有興趣的類似文章

用IntelliJ IDEA寫第一支Java程式;程式結構說明;Live Tempate用法

$
0
0

Java程式、類別與物件

Java是物件導向程式語言(Object-Oriented Programming,OOP),程式運行時由多個物件組成,而物件則是以類別來定義的。簡單理解:類別是藍圖(如房屋藍圖),用來建立一個或多個物件(建築多棟房屋)。

寫程式是在寫類別的內容,執行時類別會載入記憶體並形成物件來運行。

建立專案

Create New Project。

Java的檔名就是類別檔名。
Java慣例:

  • 類別為名詞,大寫開頭。檔案建立後可按〔Shift+F6〕重新命名。
  • 方法以動詞小寫開頭

程式結構說明

類別由變數與方法組成,類別、變數與方法皆可指定不同的存取權限供其他類別來使用。

public class Main {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}

說明:

  • 範例中的public分別是類別與方法的存取權限,表示二者皆為可公開使用。
  • Main是類別名,main是方法名。
  • static是靜態之意,屬於類別所有,不需要建立成物件就能使用。
  • 方法名左側必須指定回傳值的資料型態,void表示不回傳。
  • args是參數名,其型態 String[] 是字串陣列。
  • System是Java內建的系統類別,out是static的變數,即系統的標準輸出物件
    (standard output, stdout)

Live Template

程式碼樣板。

樣板 定義
sout System.out.println($END$);
soutm System.out.println("$CLASS_NAME$.$METHOD_NAME$");

建立專屬的即時樣板

System.out.println("@@$FILE$.$METHOD$ #$LINE$:$END$" + $VAR$);

解說影片

##

您可能也會有興趣的類似文章


IntelliJ IDEA Live Template(即時樣板)的使用與範例說明(IDEA #5)

$
0
0

Live Template,有的工具稱為程式碼片段(Code Snippets)-輸入簡短的縮寫關鍵字再按下特定的驅動按鍵而擴展為完整程式碼的功能-可以有效提升程式碼的撰寫效率,隨著樣板的累積,能有厚積薄發的效應。

  • IDEA預設的驅動按鍵是Tab鍵。
  • 完整程式碼裡可插入變數,擴展後不同變數之間按〔Tab〕或〔Shift+Tab〕往前或往後移動。
  • 變數欄位移動的順序以變數在【Edit Variables】裡的位置決定

設定Live Template的方法

  1. 按下〔Ctrl+Shift+A〕再輸入live template,點擊其Settings項目
  2. 按下〔Ctrl+Alt+S〕到【Editor】→【Live Templates】內設定

Live Template的基本設定

  • Abbriviation: 用來擴展內容的縮寫關鍵字
  • Description: 樣板的描述,輸入縮寫部份字串顯示出的視窗會顯示描述
  • Template text: 樣板擴展後的內容,可含有變數的文字,變數使用要點如下:
    • 變數名稱前後為 $: 如$DATE$、$TIME$等
    • 內建變數有兩個:$END$與$SELECTION$,$END$是輸入完所有變數後最後游標停留的位置
    • 變數可使用 Edit Variable 來定義其初始值 (於Expression欄位以下拉選單選用函數或輸入運算式)
      • 如 date() 傳回系統日期
      • time() 傳回系統時間
      • methodName() 傳回當前方法的名稱
    • Define/Change:指定適用的場合

常用內建函數

內建函數 功能說明 範例
className() 取出類別名稱
currentPackage() 取出當前的package名稱
date([sDate]) 取出系統日期,sDate是格式字串 date("yyyy年MM月dd日")
enum(s1,s2,…) 彈出選單 enum("選項",date(),time(),user())
escapeString(s1) 將傳入字串做escape處理
fileName() 取出檔名
fileNameWithoutExtension() 取出檔名(無副檔名)
firstWord(s1) 取出傳入字串的第一個Word firstWord("public class Main")取出public
groovyScript("groovy程式",參數) 取出Groovy程式傳回字串;_1表示第一個參數
jsXXX() JavaScript相關函數 jsMethodName()等
lineNumber() 取出當前行號
methodName() 取出當前方法名稱
methodParameters() 取出當前方法的參數名稱
methodReturnType() 取出當前方法的傳回型態
suggestVariableName() 取出建議的變數名稱
time([sTime]) 取出系統時間
user() 取出使用者帳號
variableOfType("") 以型態傳回變數名稱;
<type>為空字串表示任意型態

範例

1. soutv

  • 功能:顯示變數名稱與值(V1)
  • Template Text:
System.out.println("$EXPR_COPY$ = " + $EXPR$);
  • Edit Variables:
    Name Expression Default value Skip if defined
    EXPR variableOfType("") "expr"
    EXPR_COPY escapeString(EXPR) ✅

2. sop

  • 功能:顯示變數名稱與值(V2)
  • Template Text:
System.out.println("@@$FILE$.$METHOD$ #$LINE$:$EXPR_COPY$=" + $EXPR$);
  • Edit Variables:
    Name Expression Default value Skip if defined
    FILE fileNameWithoutExtension() ✅
    METHOD methodName() ✅
    LINE lineNumber() ✅
    EXPR variableOfType("")
    EXPR_COPY EXPR ✅

3. sopp

  • 功能:顯示方法的參數名稱與值
  • Template Text:
System.out.println("@@$CLASS$.$METHOD$ $END$$PARAMS$);
  • Edit Variables:
    Name Expression Default value Skip if defined
    CLASS className() ✅
    METHOD methodName() ✅
    PARAMS groovyScript() 見下列Groovy程式
groovyScript("
  def result='參數: '; 
  def params="${_1}".replaceAll('[\\[|\\]|\\s]', '').split(',').toList(); 
  for(i = 0; i < params.size(); i++) {
    result += params[i] + '="+' + params[i];
    if (i < params.size()-1) {
      result += '+ ",';
    }
  }; 
  return result", 
  methodParameters())

解說影片

##

您可能也會有興趣的類似文章

IntelliJ IDEA 2019.2 Java 11無法使用JDK 1.5編譯…

$
0
0

最近在更新IntelliJ IDEA最新版本2019.2時,一時興起下載了內含JRE 11的版本(IDEA最近幾個版本都同時提供Java 8和Java 11兩種檔案)。

可惜我們仍然有舊專案還在使用Java 5,用Java 11的IDEA編譯時發出下列錯誤:

Error:java: Source option 5 is no longer supported. Use 6 or later.
Error:java: Target option 1.5 is no longer supported. Use 1.6 or later.

只好使用Java 8的安裝檔重新更新,更新後就正常了。

##

您可能也會有興趣的類似文章

IntelliJ IDEA的專案結構、模組設定與執行時組態設定(IDEA教學 #6)

$
0
0

IntelliJ IDEA的專案結構有兩大項:專案設定與平台設定。專案運行除了專案相關設定外,執行時的組態(Run Configurations)也必須設置。

Project Settings

專案設定通常會存在專案目錄的 .idea 資料夾裡,但也可存為檔案形式。

項目 說明 相關檔案的副檔名
Project 專案相關設定 專案名稱.ipr
Modules 一個專案可設定多個模組,通常
不同的編譯單元會設定成不同的模組
模組名稱.iml
Libraries 模組使用的程式庫設定 資料夾或.jar
Facets 專案使用的框架 框架相關的檔案群
Artifacts 專案建構(Build)後產生的東西,
可視為「產物」
如.jar、.war等

Modules設定

每個模組有Sources、Paths與Dependencies等三個設定。

模組設定 說明
Sources 原始碼設定。重點:標示原始碼資料夾
Paths 模組輸出路徑設定,.class檔的存放位置
Dependencies 模組間的依賴關係設定

執行時組態

功能表【Run】→【Edit Configurations…】設定類別執行時的屬性。

屬性 說明
Main class 主類別名稱
VM Options 額外的JVM參數
use classpath of module 模組的類別路徑(CLASSPATH)
Before launch 執行前要先處理的項目,
「Build」表示要先編譯相關類別

解說影片

##

您可能也會有興趣的類似文章

自炊Kindle電子書-由文字檔到Kindle Mobi檔的完整操作步驟

$
0
0

使用下列工具便能將文字檔產生成Kindle的.Mobi檔案,並自動寄到Kindle信箱供Kindle下載。

操作步驟:

  1. 瀏覽卡提諾論壇或伊莉論壇,複製小說的網址
  2. 用JNovelDownloader下載小說,小說存入 c:kindle_toolsebook 資料夾
  3. 用EmEditor讀入小說文字檔,點擊ee_replace巨集並存檔
  4. 執行m2m開始轉檔並寄檔到你的Kindle信箱

下載安裝包

請由 http://bit.ly/2TDyCt4 下載 kindle_tools-v1.0.zip,解壓縮到 C: (根目錄)。

C:kindle_tools 內容說明如下:

目錄名 說明 主要內容
install 需要安裝的工具 AutoHotkey與EmEditor
JNovelDownloader 小說下載工具 JNovelDownload_v5_1.jar
m2m Markdown轉換為Mobi的工具 m2m.exe,SendMail.ahk

需要額外安裝的工具

  1. JNovelDownloader需要Java Runtime Environment(JRE):若你的電腦沒有JRE的話,請由https://www.java.com/zh_TW/download/下載並安裝
  2. EmEditor文字編輯器:m2m.exe需要Markdown格式的文字檔,文字檔可使用EmEditor的巨集來插入Markdown的標題字元 #
  3. AutoHotkey:m2m.exe產生.mobi檔後會叫用SendMail.ahk直接把.mobi寄到你的Kindle信箱

以上EmEditor與AutoHotkey在C:kindle_toolsinstall 裡已有安裝程式,直接點擊安裝即可。

設定

  1. 執行EmEditor,由功能表【巨集】→【選取…】,加入C:kindle_toolsinstallee_replace.js
  2. JNovelDownloader的設定檔是 C:kindle_toolsJNovelDownloaderoption.ini,可修改第一、二行的路徑
  3. m2m.exe的設定檔是C:kindle_toolsm2mm2m.ini,可自行修改其內的路徑
  4. SendMail.ahk:搜尋 !!!,依說明修改成自己的電子信箱

實際操作影片

##

您可能也會有興趣的類似文章

IntelliJ IDEA逐步除錯的步驟與除錯演練(IDEA #7)

$
0
0

吃燒餅沒有不掉芝麻的,除錯是程式設計人員必備的技能。IntelliJ IDEA的除錯很簡單,步驟如下:

  1. 在要檢查的行號處設置中斷點:〔Ctrl+F8〕或點擊行號右側
  2. 左側邊欄的【Favorites】裡有中斷點可查看
  3. 右鍵功能表→【Debug】或工具列的除錯圖示
  4. 程式執行到中斷點會中斷執行,可將游標移到變數上查看內容
  5. 常用追蹤程式的熱鍵:
    按鍵 功能
    F8 執行一步 (Step over)
    F7 追入此行裡使用的方法 (Step into)
    F9 繼續執行 (Resume)

解說影片


##

您可能也會有興趣的類似文章

[Windows] IntelliJ IDEA自動偵測Windows Defender的排除資料夾設定

$
0
0

把IntelliJ IDEA更新到2019.2.1之後,發現Windows版已經會自動偵測Windows Defender的掃描資料夾排除設定了(前情提要:[Windows] IntelliJ IDEA啟動緩慢的解決方法(適用JetBrains各個工具,包含Android Studio)

▼ IDEA自動偵測多個資料夾,點擊【Fix…】

01

▼ 點擊【Configure Automatically】

02

▼ 資料夾自動加到Windows Defender的掃描排除資料夾

03

##

您可能也會有興趣的類似文章

Java的資料型態與簡單的計算機程式 (IDEA #8)

$
0
0

常用資料型態

Java變數有兩大類資料型態:
* Primitive data types (內建的原始型別):
* 整數:byte, short, int, long
* 浮點數:float, double
* 真假值:boolean
* 字元:char
* Non-Primitive data types
* String
* 陣列
* 類別
* …

Non-primitive data type用new來建立成物件。如:
String message = new String(“Hello World!”);

Primitive data types (內建的原始型別)長度

資料型態 記憶體中的
byte 量
範圍
boolean 1 true, false (只有兩個)
byte 1 整數:-128~127
char 2 ‘\u0000’~’\uffff’ (Unicode 字集)
short 2 整數:-32768~32767
int 4 整數:-2147483648~2147483647
long 8 -9223372036854775808~9223372036854775807
float 4 ±1.4E-45~±3.4028235E+38
double 8 ±4.9E-324~±1.79769313486231570E+308

簡單的計算機程式

  1. 建立新專案,命名為calculator
  2. package的概念

    package

    • 命名空間(Naming Space)
    • 通常是組織的域名倒裝,例如:com.oracle
    • 與目錄名稱對應
    • Java系統內建package: java. 與 javax.
  3. 撰寫Calculator.java

▼ jdev.tw.Calculator

package jdev.tw;

public class Calculator {
  int total = 0;

  public void setTotal(int initialValue) {
    total = initialValue;
  }

  public int getTotal() {
    return total;
  }

  public void add(int value) {
    total = total + value;
  }

  public void substract(int value) {
    total = total - value;
  }
}

▼ jdev.tw.Main.java

package jdev.tw;

public class Main {

    public static void main(String[] args) {
        Calculator calc = new Calculator();
        calc.setTotal(0);
        calc.add(100);
        calc.add(200);
        calc.add(300);
        calc.add(400);
        System.out.println("calc.getTotal() = " + calc.getTotal());
        calc.substract(150);
        System.out.println("calc.getTotal() = " + calc.getTotal());

    }
}

解說影片


##

您可能也會有興趣的類似文章


由Java原始碼產生類別使用文件:產生Javadoc的步驟 (IDEA #9)

$
0
0

Javadoc是什麼?

優良的程式除了易讀、容易維護外,註解同樣扮演重要角色。Java定義一組稱為Javadoc的註解規範,只要遵循這些規範,就能輕鬆將原始碼裡的註解產生成說明的網頁檔案。

Javadoc註解必須放在class、方法或類別變數前面,以/**開頭,以*/結尾,註解裡可使用下列常用標籤(完整清單:Javadoc标签表):

註解標籤 功能
@author 作者姓名
@version 版本資訊
@param 參數說明
@return 傳回值說明

IDEA產生Javadoc步驟

功能表 【Tools】→【Generate JavaDoc…】,在對話窗輸入下列選項:

  • Output directory:產生網頁的存放資料夾
  • Locale:語系,zh_TW、zh_CN、en_US等
  • Other command line auguments:-encoding UTF-8

解說影片


##

您可能也會有興趣的類似文章

使用JUnit5測試程式的操作步驟 (IDEA教學 #10)

$
0
0

寫完考卷總要多次檢查、反覆驗算才能安心交卷。編寫程式完成後,更是要多方測試,以確保程式的運行是符合需求且能正確執行的。Java的環境裡有不少測試框架,今天要操作的是老牌的JUnit。

IDEA建立JUnit 5測試的步驟

  1. 在類別名稱上按〔Alt+Enter〕;游標停留在類別名稱、方法名稱或變數名稱上時,按下〔Alt+Enter〕讓IDEA顯示可供操作的工作項目(Context Actions)
  2. 點擊 【Create Test】:若有找不到JUnit 5 library訊息時按〔Fix〕以下載Junit相關檔案
  3. 檢查【Project Structure】裡Calculator模組的Dependencies列出的Junit5.4的使用範圍(Scope),確認是【Compile】
  4. Compile and test

CalculatorTest

package jdev.tw;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

class CalculatorTest {
  Calculator calc = new Calculator();
  
  // Annotation 註解
  @BeforeEach
  void setUp() {
    System.out.println("@@CalculatorTest.setUp #12: setUp");
    calc.setTotal(0);
  }

  @AfterEach
  void tearDown() {
    System.out.println("@@CalculatorTest.tearDown #19:calc.getTotal()=" + calc.getTotal());
    System.out.println("@@CalculatorTest.tearDown #19: tearDown");
  }

  // Test case
  @Test
  void add() {
    calc.add(100);
    calc.add(200);
    calc.add(300);
    Assertions.assertEquals(500, calc.getTotal());
  }

  @Test
  void subtract() {
    calc.setTotal(1000);
    calc.subtract(100);
    calc.subtract(200);
    Assertions.assertEquals(700, calc.getTotal());
  }
}

解說影片


##

您可能也會有興趣的類似文章

使用Marp以Markdown快速製作簡報,並匯出HTML、PPTX與PDF

$
0
0

Marp的功用

Marp(Markdown Presentation Writer)是一個GitHub的開源專案,用來以Markdown文字格式來製作簡報,文字簡報並能匯出成HTML、PowerPoint的PPTX與PDF檔案。

Marp專案實際上已處於凍結狀態,轉以Marp Next專案為主,因此想要測試Marp的朋友們就不用再下載Marp的App,而應該使用Visual Studio Code的Marp for vscode擴充套件。

Marp for VS Code

安裝Marp vs code擴充套件後,編輯區上方工具列會多出Marp的圖示,有匯出與預視兩個選選項。

Marp基本語法

Marp文字檔最開頭要用YAML的寫法加上檔案屬性定義:


---
marp: true
theme: uncover
paginate: true
---

Marp: true 指定本份檔案是Marp Markdown格式,theme: 提定要使用的樣式主題,預設有 default、gaia與 uncover; paginate: 指定每張幻燈片(Slide)是否要加頁碼。

幻燈片之間以 — 分隔,下面是我最近做的一個簡報範例:

---
marp: true
theme: junit5
paginate: true
---
<!-- _paginate: false -->
<!-- _backgroundColor: lightBlue -->
# 使用JUnit5測試程式的操作步驟
 * 基本的軟體開發流程
 * IDEA產生JUnit 5的測試類別

![bg right 80%](./junit5-logo.png)

---
# 結構化 軟體系統開發流程

*  需求蒐集 
*  :arrow_right: 分析 
*  :arrow_right: 設計 
*  :arrow_right: 編程(程式設計)
*  :arrow_right: 測試 
*  :arrow_right: 部署 
*  :arrow_right: 維運

 ![bg left 80%](./junit5-logo.png)

重點說明如下:

  1. 第一頁是封面不加頁碼,因此用指引<!-- _paginate: false -->抑制頁碼。
  2. <!-- _backgroundClolor: lightBlue -->設定本頁以後的背景色為淡藍色。適用某張幻燈片的指定用底線開頭。
  3. ![bg right 80%](相對文字檔的圖檔目錄/圖檔)設定背景圖片,右靠且以80%大小顯示
  4. 繪文字(Emoji)代碼可參考🎁 Emoji cheat sheet for GitHub, Basecamp, Slack & more,前後用冒號夾住。

匯出HTML檔

點擊VS Code的Marp圖示,【Export slide deck…】再選擇輸出的存檔類型為 *.html 就能產生出簡報的HTML檔,注意簡報使用的外部資源存放位置(上範例中的圖檔和html檔在同一資料夾)。產生完成後會直接用瀏覽器顯示。

html

HTML簡報下方會有換頁控制,最右下角有頁碼。

自訂主題樣式

自訂主題的方法在VS Code的擴充套件說明裡有設置步驟,簡述如下:

  1. 在VS Code的工作區增加markdown.marp.themes設定,新增.css的路徑檔名。
  2. .css檔的第一行是主題名稱:/* @theme 主題名稱 */。
  3. Marp Markdown文字檔最開頭的YAML區域裡指定使用的主題名稱,如:theme: junit5

junit5.css範例:

/* @theme junit5 */

@import 'uncover';

section {
    font-family: 微軟正黑體
}

h1 {
    color: navy;
}

ul {
    list-style: none;
    margin-left: 0;
    padding-left: 0;
  }

  li {
    padding-left: 1em;
    text-indent: -1em;
    align: center
  }

  ul>li:before {
    content: "✅";
    padding-right: 5px;
  }

示範影片


##

您可能也會有興趣的類似文章

讓VS Code存取Dropbox資料夾的步驟

$
0
0

因為Dropbox限制連線個數為3,導致除了Windows桌機、Windows筆電和手機能存取外,我的MacBook Pro就沒辦法直接更新的本機,這樣我存放於Dropbox上的部落格文章,在使用MacBook Pro時就不太容易做內容同步的處理。

最近試了幾個解決方案,似乎瀏覽器的Markdown編輯器比較簡單達到文章的撰寫與內容同步的目標。不過,這兩天又試了用VS Code+Remote Workspace的方法,讓VS Code的檔案總管直接存取Dropbox資料夾與檔案。

以下是測試後彙總的執行步驟。

Dropbox網站操作

建立開發者的App,以取得Access token。

  1. 瀏覽https://www.dropbox.com/developers,點擊右上角的【App Console】
  2. 點擊【Create app】
    1. Choose an API: 選用Dropbox API
    2. Choose the type of access you need: 選Full Dropbox
    3. Name your app: 自訂,例如:FolderFullAccess
    4. 點擊右下方的【Create app】
  3. 在剛剛建立的App網頁上找到Generated access token,點擊Generate
  4. Access token產生後複製到系統剪貼簿

VS Code設定

  1. 安裝Remote Workspace擴充套件
  2. 在特定文件資料夾建立 <自行命名>.code-workspace,例如:blog.code-workspace
  3. 編輯 <自行命名>.code-workspace:
{
    "folders": [{
        "uri": "dropbox://你的Access Token/要存取的路徑",
        "name": "My Dropbox folder"
    }]
}

檔案存取步驟

  1. 功能表 【檔案】→【開啟工作區…】,點選 <自行命名>.code-workspace
  2. VS Code檔案總管的工作區裡就會出現 【My Dropbox folder】

問題

我目前使用的VS Code是目前最新的1.37.1,Remote Workspace也是最新的0.42.0,在開啟工作區時,似乎是瀏覽的資料夾檔案較多時就無法完成存取,Remote Workspace會出現(EntryNotFound (FileSystemError))的錯誤(紀錄檔存放於C:\Users\jerry.vscode-remote-workspace.logs資料夾),發生問題時載入的圓圈圈會一直轉,此時再去選其他資料夾,還是可以載入的。但這個問題令人困擾,希望能盡快解決。

實際操作影片

##

您可能也會有興趣的類似文章

方便的線上Markdown書寫平台:HackMD

$
0
0
Viewing all 897 articles
Browse latest View live