在上一篇文章《關係型SQL的全文搜尋 FullText 方案先行探究分析》中我簡單的介紹了一下現行常見的几種全文搜尋的方案。在其中我提到過這個由日本人開發的Mroonga全文搜尋引擎,由於此引擎在網路中鮮有資料能詢,索性我自己來寫一篇關於此引擎的用法,同時也會向大家説明此引擎在使用過程中如何避免踩坑。

阅读全文


近段時間一直在對全文搜尋引擎的方案進行調查,核心問題就是現行使用的Select...Like%$1%的模糊搜尋語句在高並行的場景下性能與效能非常差,雖然我已經做了相應的調優,但無奈終究不是長久之計。

實際上在Web領域經歷了15年的發展,PHP從版本4時代的龜速發展到現在的PHP7的高效,再加上其他語言例如Go與Rust之類的高效語言的出現,在Web開發領域中的瓶頸已經從以前的Web程式變爲SQL。當然在15年前非常有意思的一個現象是,因爲當時InnoDB還未出生並無事務(Transaction)這麽一説,且因當時的Web程式碼效能普遍低於SQL,所以當時很多程式開發都濫用了存儲過程來幫助Web程式提高效能。但這都是15年前的事情了,現在SQL早已成爲效能瓶頸,就別再給SQL增加負擔了。

雖然現在已經有很多的NoSQL非關係型SQL的問世,無奈關係型SQL還是在如今占據大半江山。然而在15年中關係型SQL并未有多大的改進,關係型SQL的理論已經發展到頂,很難再有非常大的改觀。

阅读全文


【WebShellQuickScanner】 一個在Linux伺服器上檢查是否有PHP WebShell和使用了高危函數的PHP文件的快檢腳本,同時能把檢查結果推送至Telegram。

其實早在17年Typecho出了個0Day被人駭了插了一句話shell之後我就已經想寫這東西了。放飛機放了兩年之後這0day都已經成為114514day了我終於把這腳本給摸出來了。

這篇文章將作為此腳本的繁體中文説明檔案。

阅读全文


雖然Microsoft沒有明説,但在17年之後Microsoft貌似就已經放棄了VB.Net與C#的同步更新功能的做法。導致在現在的VS2019中如果我們要使用.NET Framework 4.5來進行程式碼編寫,一些新機能與寫法已經出現了C#無法轉換為VB.Net的情況。

這是我前些天碰到的一個專案中需要加入的機能,使用WebClient關閉SSL金鑰校驗。

一般以前我都是直接在網路上搜尋C#的程式碼然後再次轉換爲VB.Net的程式碼進行使用。

然而此功能的C#程式碼在轉換過程中卻被告知轉換失敗:

public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
    return true;
}

ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications); //添加至你的WebClient構造Function中進行使用

這段C#的程式碼ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);無法轉換成為VB.Net的程式碼。

那在VB.Net中要如何使用呢?

我們需要使用以下寫法:

Public Function AcceptAllCertifications(ByVal sender As Object, ByVal certification As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal chain As System.Security.Cryptography.X509Certificates.X509Chain, ByVal sslPolicyErrors As System.Net.Security.SslPolicyErrors) As Boolean
    Return True
End Function

ServicePointManager.ServerCertificateValidationCallback = AddressOf AcceptAllCertifications '添加至你的WebClient構造Function中進行使用

相比於C#,我本人是更喜歡VB.Net的語法。因爲VB.Net的語法我本人認爲更加優雅。

但現實是,Microsoft已經放棄了對VB.Net的更新,以後類似的情況只會多不會少。

如果可能的話,可以盡量選擇C#來進行新的專案開發。

但這種狀況對我來説,是挺可惜的。