Browsed by
Category: 技術

SSMS匯出指令碼以UTF16LE編碼問題

SSMS匯出指令碼以UTF16LE編碼問題

前文說到,最近在進行一些SQL Server資料庫轉移工作,而有些資料庫是以SQL script方式進行移轉,其中有些資料庫因資料量巨大,匯出的SQL script奇大無比,高達數十GB。在第一次轉移時,使用sqlcmd發生不明原因導致作業中斷,懷疑是SQL script太大導致,因此打算進行檔案切割。

Read More Read More

Microsoft SQL Server語言定序問題

Microsoft SQL Server語言定序問題

近日進行SQL Server資料庫轉移,由公司自有的雲環境搬遷到Azure混合雲中,沒想到一直以來都在繁體中文環境工作導致踩了個大雷。由於某些緣故,某資料庫在評估後,決定使用SQL script方式進行移轉,沒想到該資料庫內有許多資料表的欄位使用VARCHAR型態、而非NVARCHAR型態來儲存中文資料,這導致許多中文資料不管是SSMS或是在實際上線的Web應用程式中都成了問號(?),原訂停機1天完成資料移轉,只得持續延長。

Read More Read More

mosquitto-go-auth編譯與使用

mosquitto-go-auth編譯與使用

mosquitto是一個受歡迎的輕量MQTT broker,雖然本身具備了pwfile、aclfile等使用者驗證機制,但使用者數增加、或是使用情境較複雜一點的時候,用起來就沒有那麼彈性了,而且修改完pwfile、aclfile還需要重啟服務,如果服務不適合中斷,那可就尷尬了。

為了做更有彈性的使用者驗證管理,有些人會考慮自行修改mosquitto原始碼(畢竟mosquitto是開源軟體),或者是另外撰寫mosquitto plug-in來處理驗證這一塊(是的!mosquitto有plug-in interface),例如jpmens的mosquitto-auth-plugin,就是一個廣受觀迎的mosquitto驗證plug-in,在Github上的fork數甚至達到487!不過這有一部份原因應該是原作者在2018年底就不再繼續維護此專案,大家有issue或是新需求就fork出來各自努力。😥

不過別難過得太早,早在2017年開始,iegomez便開始了一個新的mosquitto驗證plug-in專案,稱為mosquitto-go-auth,也就是本文要介紹的軟體。

Read More Read More

Microsoft Edge修復記

Microsoft Edge修復記

前幾天家人求救,說Microsoft Edge無法開啟。家人的使用習慣每天都只是上網看影片或玩一些小遊戲,近期也沒有安裝軟體、或對Windows 10做特別的異動、安裝設定檔重設,吃著火鍋,唱著歌,Edge突然就無法開啟了。

做了一下實驗,觀察到以下癥狀:

  • 啟動Edge標準模式時,出現一個白色視窗,數秒後視窗消失(閃退)
  • 啟動Edge InPrivate模式時,可以正常啟動,但是點擊功能表中的設定、關於Edge等項目,似乎會另外建立一個新Edge視窗,但這會造成Edge crash
  • 事件檢視器可看到有MicorsoftEdgeUpdate.exe錯誤

Read More Read More

apt upgrade因/boot空間不足導致更新失敗問題

apt upgrade因/boot空間不足導致更新失敗問題

近期在為幾台運行Ubuntu的機器使用apt upgrade進行套件更新時,遇到了/boot空間不足,導致更新失敗的問題,折騰了一下子,總算是將問題解決了,在此做個筆記。

問題

我們使用基本apt工具進行更新:

apt update
apt upgrade

若更新的套件包含linux-image-x.x.x.x-generic,且/boot(通常為獨立的分割區)空間不足,將無法完成更新。

Read More Read More

apt更換mirror站台後遭遇GPG NO_PUBKEY問題

apt更換mirror站台後遭遇GPG NO_PUBKEY問題

前一陣子購入了一批Raspberry Pi Desktop Kit,隨附的記憶卡中已經預先裝載好Raspbian,沒想到近日在更新套件時,頻頻遇到某某套件無法更新的問題,apt錯誤訊息建議使用–fix-missing參數,實際執行完全無法解決問題。重新下了apt-get upgrade觀察了一下,發現更新失敗幾乎都是連不上某台伺服器(所以無法下載套件)造成的,於是心生一計──修改apt source list裡的URL,改為指向mirror site試試。

Read More Read More

Raspberry Pi Headless Setup

Raspberry Pi Headless Setup

最近又把 Raspberry Pi 3B 拿出來鼓搗一番,但是為了 Video & Ethernet 接線實在太麻煩,請教 Google 大神後,沒想到有所謂的「Headless Setup」途徑,可以預先啟用 SSH 連線以及設定 Wi-Fi 連線,我的方法如下。

  1. 先以工具(如:Rufus)將 Raspberry Pi OS (Raspbian) 映像燒入 SD card 中
  2. 在電腦讀取此張 SD card
  3. 在根目錄置入名為 “ssh” 的空白檔案,即可啟用 openssh-server
  4. 在根目錄置入名為 “wpa_supplicant.conf” 的檔案,檔案內容參考如下:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=TW

network={
    scan_ssid=1
    ssid="MYSSID"
    psk="MYPASSWORD"
}

Have fun!

[ASP.NET] Web Service (.asmx) 遇到404問題

[ASP.NET] Web Service (.asmx) 遇到404問題

昨天在傳統Web Service (.asmx)上遇到直接存取.asmx頁面正常,可秀出Documentation說明(如果Web.Config沒有將Documentation remove掉的話),但POST/GET過去IIS會回應404 Not Found的問題。

查了老半天,才發現是專案類型為ASP.NET MVC專案導致的,會將:

http://{site}/Foo.asmx/Bar

這類的URL,以MVC的路由來處理,因為找不到對應的Controller,自然就得到404。

解決方法是在 RouteConfig.cs 新增 .asmx 檔的處理規則:

    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.IgnoreRoute("{resource}.asmx/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }