2018年8月27日 星期一

VS2017 - 無法擷取此要求的資料。無法連接到伺服器(local)


安裝了 VS2017 之後要修改某個專案,
在 DB 增加了一個 table 要拉到 DataSet 的時候跳出了一個訊息



找到了某個網誌是說功能沒裝全?
[研究] [Bug?] 從 Visual Studio 2017 IDE 連線資料庫成功,但 "資料表" 無法顯示 (1)

看了一下我之前安裝的內容,難道是 Azure Data Lake 的關係?



重新勾選安裝之後還真的就沒有問題了....
這是甚麼可怕的相依性啊!!!
覺得好像回到了那個微軟強推 IE 的年代,
不管你要安裝什麼,都要裝 IE ,沒裝就跑不起來的日子~~~

如果你也遇到相同的問題,可能前面 6 個都勾選之後再視看看吧!

2018年8月24日 星期五

樹梅派 - Raspbian 小筆記(整理中)

SSH:Raspbian ssh 預設為關閉;剛裝好時,需要在記憶卡根目錄下擺放一個名為 ssh 的空檔,開機的時候就會強制打開

電腦名稱: raspberrypi
登入帳號:pi
登入密碼:raspberry

Raspberry Pi IP
在命令模式下:ping raspberrypi.local

同步時間與時區調整
sudo timedatectl set-ntp true
sudo dpkg-reconfigure tzdata

強制變更時間
sudo date -s"2019-08-30 15:30:00"

更新套件來源
sudo nano /etc/apt/sources.list   #修改APT源設定文件

更換成台灣 NCHC 鏡像
deb http://free.nchc.org.tw/raspbian/raspbian/ buster main contrib non-free rpi   #例如NCHC源
####CTRL+o保存  CTRL+x離開

sudo apt-get clean all ###清除快取
sudo apt update   ###會出現新APT源的網址

更換 debian 來源
sudo nano /etc/apt/sources.list.d/raspi.list

更換成大陸的鏡像
deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ buster main   #例如NCHC源
####CTRL+o保存  CTRL+x離開

******************************************
1. Raspberry Pi預設帳號為pi:raspberry,如要啟用root帳號,需要執行下列命令
pi@raspberrypi: $ sudo passwd root
Enter new UNIX password: raspberry
Retype new UNIX password: raspberry
passwd: password updated successfully
2. 解鎖root帳號
pi@raspberrypi: $ sudo passwd --unlock root
3. 登入root帳號
pi@raspberrypi: $ su
Password: raspberry

root@raspberrypi:

指令整理***********************************

更新 Raspberry Pi 韌體:sudo rpi-update

設定指令:raspi-config (需要切換到 root ,所以可以下 sudo raspi-config)

更新套件庫資訊:sudo apt-get update

更新已安裝的套件:sudo apt-get -y upgrade

強制更新已安裝的套件(相關套件自動安裝/移除):sudo apt-get -y dist-upgrade

修正壞掉的套件相依:sudo apt --fix-broken install

查詢可安裝的套件:sudo apt-cache search [套件部分名稱]

安裝套件指令:sudo apt-get install [套件名稱]

ex:sudo apt-get install xlmusic

xlmusic 播放軟體

移除套件指令:sudo apt-get remove [套件名稱]
移除沒有用的相依套件:sudo apt-get autoremove

看磁碟空間:df -h

查詢版本:
lsb_release -a
uname -a
cat /etc/os-release

列出網路節點:traceroute -n tw.yahoo.com

套件整理*****************************************
安裝可以撥放 m4a 的播放軟體
sudo apt-get install audacious

youtube 下載:sudo apt-get install youtube-dl

網路芳鄰:sudo apt-get install samba==================================

# sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup ( 備分設定檔 )
# sudo nano /etc/samba/smb.conf

在 conf 檔加入以下設定
-------------------------------------------------------------------------------
[pi] ( 網路芳鄰會看見的名稱 )
comment = pifolder
read only = no
path = /home/pi ( 分享的資料路徑 )
guest ok = no ( 需要帳號密碼 )
force user = pi
writeable = yes
create mask = 0760
directory mask = 0760
-------------------------------------------------------------------------------

# sudo pdbedit –a pi ( 設定 samba 使用的帳號、密碼 )
# sudo /etc/init.d/samba restart ( 重啟 samba )

===============================================================

安裝 Anaconda

指令:
# wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-armv7l.sh
# md5sum Miniconda3-latest-Linux-armv7l.sh
# bash Miniconda3-latest-Linux-armv7l.sh


2017年11月15日 星期三

C# - 列舉的 if 寫法


從 Delphi 以來都有用列舉的習慣,
在 Delphi 有 in 可以用,就像 SQL 中的 in 的用法一樣;

但是在 C# 中沒有 in 可以用,只能在 if 中寫的落落長的東西,例如:

if (currentCar == Cars.Taxi || currentCar == Cars.Bus || currentCar = MRT)

如果要判斷很多 if 就會很長很長又很長....

所以某天想到可以用泛型來處理,程式如下:

        public static bool InValueSet<T>(T compareValue, T[] valueSet)
        {
            foreach (T baseValue in valueSet)
            {
                if (compareValue.Equals(baseValue))
                    return true;
            }

            return false;
        }

所以上面的 if 就可以變成下面這樣的寫法,如下:

if (InValueSet<Cars>(currentCar, new Cars[] {Cars.Taxi, Cars.Bus, Cars.MRT})

然後可以宣告一個集合,如下:

Cars[] MassTransport = new Cars[] {Cars.Taxi, Cars.Bus, Cars.MRT}

然後就可以改成如下寫法:

if (InValueSet<Cars>(currentCar, MassTransport)

這樣就簡潔多了,舒坦............


如何在安裝 Windows Service 時,指定不同名稱

我們的 AP Server 是一個 windows service ,
但是每次遇到客戶需要安裝好幾個環境時,
就會需要 compile 好幾個程式給客戶,
只是因為用 InstallUtil.exe 在安裝 windows service 時無法指定名稱。

總覺得這樣不是辦法,經過一陣估狗之後發現有別的指令可以用,如下:
sc create MyService binPath= "MyService.exe" DisplayName= "MyService"  
sc description MyService "My description"

參考:【以任何方式重写.NET Windows服务名称,而不重新编译?

如何不要讓 Microsoft SQL Server Management Studio 一直跳出中文輸入法

因為每次跳到 Microsoft SQL Server Management Studio 時,
輸入法就自動轉為中文輸入,
這實在是一件很惱人的事情,
後來很努力地找尋,終於在【選項】中找到可以設定的地方



在【國際設定】中,將【語言】改成【與 Microsoft Windows 相同】就可以


不過剛剛發現,在 17.3 版之中還沒有這個選項可以選 T_T


2017年10月31日 星期二

如何新增捷徑到開始畫面


先用檔案總管開啟下列路徑的資料夾

C:\Users\帳號\AppData\Roaming\Microsoft\Windows\Start Menu

然後將要再開始畫面顯示的捷徑建立起來,如下圖的 Local - Frankie


然後就可以在【應用程式】裡面找到剛剛新增的捷徑


這時候就可以用滑鼠右鍵選【釘選到開始畫面(P)】


然後就可以在開始畫面看到所需要的捷徑了


2017年10月2日 星期一

bat & sqlcmd 筆記

會寫 bat 主要是因為每次改完程式之後會需要更新好幾個環境
ex.今天的修改紀錄資料夾、公司環境的資料夾等等
單純的複製到固定名稱的資料夾大致上沒啥問題
比較大的問題是【今天的修改紀錄資料夾】的"今天",
代表的我每天都要複製到不同的日期資料夾去...
估狗了一下,

@set A=%date:/=%
@set B=%A:~0,8%
@set C="\\UPDATE\%B%\DLL\"

假設今天是 2017/10/2 用上面的寫法可以得到
C="\\UPDATE\20171002\DLL\"

可是每次都要先去檢查有沒有件資料夾,所以...

IF NOT EXIST %C%. (MKDIR %C%.)

上面的寫法可以檢查有沒有 \20171002\DLL 的資料夾,
如果沒有,則執行 MKDIR 建立

到了以上,自動複製 dll 的沒有問題了
再來就是 SQL 檔的問題了,每次還又一個一個更新 DB 很煩,
真想請一個小助手來幫忙...
所以又找到了 sqlcmd ,
但是發現 sqlcmd 在每一版的 SQL SERVER 提供的命令、參數,甚至是寫法都不一樣
所以首先就先指定 sqlcmd 的路徑,我是直接設定變數指定

@set SQLPATH="C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\sqlcmd"

然後指定好下面的參數

@set TEST= -S FRANKIE\sql2014 -U sa -P 1234567 -d FRANKIE_TEST -i 
  • -S 指定 SQL SERVER 主機\Instances
  • -U 指定登入的帳號
  • -P 指定登入帳號的密碼
  • -d 指定DB
  • -i 要執行的 SQL 檔案
假設我們要執行的是 AAA.SQL

%SQLPATH%%TEST% AAA.SQL

大概會組合出

C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\sqlcmd -S FRANKIE\sql2014 -U sa -P 1234567 -d FRANKIE_TEST -i AAA.SQL

不過我想執行資料夾下面的所有 SQL 檔,
所以再度估狗一下,最後用 FOR 處理,
直接在 CMD 視窗測試 FOR 的時候都OK,
可是從 BAT 檔執行的時候卻一直跳出錯誤,
原來變數在 CMD 視窗的時候是 %i
但是在 BAT 檔的時候要變成 %%i
最後寫在 BAT 的 FOR 如下:

for %%i in (*.sql) do %SQLPATH%%TEST% %%i

(*.sql) 會幫我把執行所在的資料夾中的 SQL 全部都找出來,
然後執行 do 後面的事情。

寫到這裡,更新資料夾與 DB 對我來說變成只是 double click 了,喔耶~~~

但是事情還是做不完,囧rz