Skip to Content

電腦

Google雲端硬碟更改檔名變成上傳的陷阱

最近在 Google 串流版的雲端硬碟進行更名時,發現一個奇怪的現象,寫出來給大家參考,免得日後踩到同樣的地雷 。 :)

假設我有五個檔案。

 

121-0001.jpg

121-0002.jpg

121-0003.jpg

121-0004.jpg

121-0005.jpg

 

我想把它們改名,也就是把最後一個數字減一,理論上我只要寫這個批次檔就可以了,注意順序不可以錯誤。

 

ren 121-0001.jpg 121-0000.jpg

ren 121-0002.jpg 121-0001.jpg

ren 121-0003.jpg 121-0002.jpg

ren 121-0004.jpg 121-0003.jpg

ren 121-0005.jpg 121-0004.jpg

 

不過在實際執行後,檔案的確立刻改好了,但發現雲端硬碟程式在大量工作,一查才發現它在上傳檔案。

 

 

C# WinForm 取得傳入的參數

C# WinForm 程式要取得使用者傳入的參數,可以使用

 

Environment.GetCommandLineArgs();

 

所取得的第一個元素就是執行檔的檔案名稱。

 

 

public MainForm()

{

    InitializeComponent();

    string[] args = Environment.GetCommandLineArgs();

    foreach(string s in args) {

        MessageBox.Show(s);

    }

}

 

另一種在網路上常看到的方法,就是手動在 Main 主程式的參數中加上 string[] args。

這個方式取得的參數,並不包含執行檔的檔案名稱,這是和上面方法不同的地方,在使用上要注意。

 

[STAThread]

static void Main(string[] args)

{

    foreach(string s in args) {

        MessageBox.Show(s);

    }

    Application.EnableVisualStyles();

    Application.SetCompatibleTextRenderingDefault(false);

    Application.Run(new MainForm());

}

 

 

C# 單元測試

C# 單元測試

參考:

https://docs.microsoft.com/zh-tw/visualstudio/test/getting-started-with-unit-testing?view=vs-2019&tabs=mstest

 

建立測試程式

先建立測試程式

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace UnitTest {

    public class Sample {

 

        int a = 0;

        int b = 0;

 

        public Sample(int x, int y) {

            a = x;

            b = y;

        }

 

        public int Add() {

            return a + b;

        }

 

        public int Add2() {

            return a * 2 + b * 2;

        }

 

        public int AddAnother (int x) {

            return a + b + x;

        }

    }

}

 

建立測試單元

在程式視窗中按滑鼠右鍵,選擇「建立單元測試」

 

在 Visual Studio 上使用 GitHub 進行版本控制

本文簡單示範 Visual Studio 建立 C# 專案並使用 GitHub 基本功能。

雖然 Windows 的 TortoiseGit 很好用,但如果可以直接在 Visual Studio 上直接操作,那還是比較方便。

建立專案

 

HTML 標記 li 底下 span 指定文字格式的奇怪問題

有人發現一個 CSS 排版的問題,後來我發現,只要是這樣 

<ul><li><span class="abc">一堆文字....一堆文字....<a>一堆文字</a>....</span>

在 css 中指定 li 底下 span 的文字大小, 例如

.abc {font-size: 30px; }

而那一堆文字中若有一些標記,不只是 <a>, 我試過 <b> 甚至 <c>,標起來的文字都會上移,不過要夠長,捲到第二行之後才會看到。

底下是測試截圖,我加了下底線。

Chrome 和 Edge 都會如此,IE 則不會。

找了一些類似的資料,還不知真正的原因,但 css 這樣設定就可以解決

li span { display:block; }

結果截圖如下:

不過會不會有什麼副作用就不清楚了。

Swift 連結 Swift、Objective-C、C++

本篇在說明 Swift 連結其他專案的 Swift、Objective-C、C++ 的方法與注意事項。

 

Swift 連結其他 Swift

 

假設有一個目錄 testClass,底下有三個程式 

 

main.swift

person.swift

year.swift

 

其中 person.swift 會使用 year.swift 的內容,現在新的專案需要用到 person.swift 與 year.swift。

 

要加入檔案或目錄時,要選擇 Xcode 功能表的

 

File -> Add Files to "myProject"...

 

此時有這些選擇,通常我都不選 Copy ites if needed,以免被引用的專案後來有更新時,引用的專案還是用已經複製進來的舊版資料。當然,這功能我也不清楚,也許未來真的有需要使用的機會。

 

將 CheckBox 嵌入 TableView 中使用

在看此篇之前,一些基本的重點要先參考「Mac Cocoa NSTableView 程式與綁定
 
這一段是記錄把 CheckBox 放在 TableView 中使用所遇到的一些狀況。

這是一個標準的 Column 設計。

首先把紅色的部份移除,換成 CheckBox,如下圖。

註:其實還有一種方法,就是不移除 Table Cell View,只移除 Table View Cell,然後用 CheckBox 取代 Table View Cell。底下程式也會需要修改。

然後設定 CheckBox 的 Identifier,本例為 tableCheck。

Xcode 單元測試 (Unit Test 和 UI Test)

單元測試也是寫程式重要的一環,雖然我之前寫程式也沒有完全做到,但基本上的測試總是要有的,所以還是了解了一下 Xcode 上的單元測試。

我的環境是 macOS Catalina 10.15 + Xcode 11.1

建置專案

首先,在建立專案是要記得勾選「Include Unit Tests」和「Include UI Tests」。

如果一開始沒有加,也可以在主選單用 File -> New -> File... 加上去。

建好的專案就會像下圖一般,有 Unit Tests 和 UI Tests 二個區塊。

Swift 使用 XMLDocument 處理 XML

Swift 有二種處理 XML 的方法,一種是 SAX,一種是 DOM。SAX 是使用 XMLParser,功能比較單純,早期就是用這個方法處理 XML 經文,這種方法不易處理複雜的資料。DOM 則是用 XMLDocument,比較能依前後文的不同來處理資料,本文是介紹後者的功能。

基本功能介紹

 

載入整個 XML 檔案

let doc = try? XMLDocument(contentsOf: file)

取出 root

let root = doc?.rootElement()

取出指定元素

let node = root?.elements(forName: "body")[0]

取出元素名稱

let name = node.name

取出元素全部屬性

let attribs = node.attributes
if attribs != nil {
    for att in attribs!  {
        ......
    }
}

Mac Cocoa NSTableView 程式與綁定

經過這兩篇「NSOutlineView 使用程式呈現樹狀資料」、「Mac Cocoa NSOutlineView 資料綁定」的練習,這次直接處理 NSTableView,果然駕輕就熟,稍為查一些資料,很快就做出成果了,畢竟它比 NSOutlineView 簡單,基本架構都差不多。

這篇就不談太多細節,只把重點記錄下來。

資料綁定

先由資料綁定做起。

準備資料

TableView 是表格狀的資料,所以就用藏經目錄的結構來處理,底下只有三個欄位,ID、經名與作譯者。

宣告 catalog 變數,它是 Catalog 物件的陣列,底下建立了三筆資料。

訂閱文章


about seo