2020年12月15日

我的vim設定 PART 2

又來了,他進化了,現在長成這樣 … 

set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'Valloric/YouCompleteMe'
call vundle#end()
filetype plugin indent on

" YouCompleteMe
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py'
let g:ycm_confirm_extra_conf=0
let g:ycm_python_binary_path='/usr/bin/python3'
let g:ycm_autoclose_preview_window_after_completion=1

set term=screen-256color-s
colorscheme burnttoast256

set autoindent
set expandtab
set tabstop=4
set softtabstop=4
set shiftwidth=4
set textwidth=79

set showmatch

set number
set relativenumber
set ic
set cindent
set confirm
set wrap

set encoding=utf-8

set guioptions-=r
set guioptions-=L
set guioptions-=b

set guifont=Monaco:h13

syntax on
set ignorecase
set incsearch
set hlsearch
set cursorline
set cursorcolumn

.net 字串比較


故事先來一下:

DB存的是str1,使用者輸入的是str2,程式說這兩個字串不一樣,我一眼就看出 ... 看出這個問題我要找很久 …

其實也還好,馬上想到是字串比對StringComparison的問題

原本用的是OrdinalIgnoreCase,但這串奇怪語言,我猜應該是要包含點什麼文化特性,試的結果如下:

str1 = "HÀ HỮU TUYÊN";
str2 = "HÀ HỮU TUYÊN";

 

 

https://docs.microsoft.com/zh-tw/dotnet/standard/base-types/best-practices-strings

官方建議,大概總結一下
  1. 沒有文化特性(只有英文、符號)的比較可以用Ordinal,OrdinalIgnoreCase(效能也比較好)
  2. 有文化特性的(多語系)請用CurrentCulture
  3. 沒事不要用InvariantCulture
  4. 用string.Equals 最好指定 StringComparison,給明確的規則
  5. string.Compare,string.CompareTo不要拿來檢查是否相等(官方寫的沒給理由,有空或有心人再找)

2019年3月5日

mysql docker初始table設定

這個是Dockerfile的內容

FROM mysql

ENV MYSQL_DATABASE some_service_schema

COPY *.sql /docker-entrypoint-initdb.d/

第二行是給定預設schema
第三行的sql script就會在預設的schema上執行


2019年1月24日

vscode .net core test explorer

VSCode上的Test Explorer看不到.net core的test function列表,需要另外裝.NET Core Test Explorer,
但是在Windows上裝了以後還是看不到,Linux上又沒問題,找了半天(幹,真的花了半天時間),發現dotnet的語言要改成英文的才可以,本來是設了一個環境變數DOTNET_CLI_UI_LANGUAGE設為en-US,這樣console輸入dotnet -h的時候是英文的輸出,可是發現還是不行,用了dotnet test xxx.csproj輸出的語言還是中文 …

最後又找到一篇文章,原來要去sdk安裝資料夾把zh-*的語言資料夾刪掉(zh-Hans,zh-Hant),這兩個資料夾刪掉後.net test explorer中test function 列表就出來了。

我刪的資料夾 位於C:\Program Files\dotnet\sdk\2.2.103\zh-*

要刪的時候還要看dotnet的版本,要去對應的版本的資料夾刪,我用的是2.2.1所以是上面的資料夾

2019年1月15日

我的vim設定

set t_Co=256
colorscheme burnttoast256

set expandtab
set tabstop=4
set softtabstop=4

set number
set ignorecase
set cindent
set confirm
set wrap

set encoding=utf-8

2019年1月3日

Docker中的IP

有個程式記Log時要取得IP,當做一個記錄的欄位,那個程式是.net core掛在docker裡面,結果docker 預設的網路模式是bridge,預設給的IP也是相同網段,不同台電腦的docker裡面的IP是一樣的 …造成分不出這個程式是掛在那一台電腦上的



最後用docker network create指令去create一個新的網段,在docker run的時候再加上--net去指定用到新create出來的網段,搞定。

2017年8月8日

Asp.net Web client使用excel元件發生錯誤

擷取元件 (CLSID {00024500-0000-0000-C000-000000000046}) COM Class Factory 失敗
擷取元件 (CLSID  {00024500-0000-0000-C000-000000000046})  COM Class Factory失敗,因為發生下列錯誤: 80040154 類別未登錄 (發生例外狀況於 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
描述在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。 

例外狀況詳細資訊System.Runtime.InteropServices.COMException: 擷取元件 (CLSID  {00024500-0000-0000-C000-000000000046})  COM Class Factory 失敗,因為發生下列錯誤: 80040154 類別未登錄 (發生例外狀況於 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
以下嘗試的解決方式:

1. Start->run->regedit 
Find 00024500-0000-0000-C000-000000000046 ->資料夾按右鍵內容,安全性加入NETWORK SERVICE給予權限,找遍所有00024500-0000-0000-C000-000000000046相關的機碼全部設了Network service 與 IIS_IUSRS完全控制的權限,結果失敗
2. Start -> run -> DCOMCNFG
來想照著以上說明去「元件服務」設定DCOM元件,竟然沒有Microsoft Excel Application。因為Excel32位元,64位元的作業系統看不到該元件,結果失敗
3.在web.config 加入
帳號密碼請先使用本機administrator帳號試比較沒問題
若是 Server 2008 x64 請建立下述資料夾
C:\Windows\SysWOW64\config\systemprofile\Desktop
若是 Server 2008 x86 請建立下述資料夾
C:\Windows\System32\config\systemprofile\Desktop
以上的設定。結果成功
4. Start -> run -> mmc comexp.msc /32
元件服務 -> 電腦 ->我的電腦 ->DCOM設定 ->Microsoft Excel Application ->安全性->啟動和啟用權限&存取權限->自訂權限加入Network serviceIIS_IUSRS完全控制權限, 識別身份用互動式使用者。結果成功

參考:http://tsaiyuchi.blogspot.tw/2011/02/excel-manipulate.html#more



存著用,現在用不到,這抄別人的 …