發表文章

ASP.NET-javascript點擊顯示收起內容(Show and hide details on click of a divison javascript)

圖片
介紹一個方法,可以利用javascript做到內容顯示與隱藏的功能,效果如下圖。 展開後 再點擊又收回 不囉嗦直接看程式碼 <span id="show" class="">     <a href="#" style="font-size: 30px; text-decoration: none">         <asp:Label ID="lbl_easy" runat="server" Text=""></asp:Label>     </a> </span> <div id="info" style="display: none; margin-left: 1em">     <asp:Literal ID="lbr_easy" runat="server" Text=""></asp:Literal> </div> 紅色的是標題一開始要顯示的字 橘色是內文中的字 要用啥元件可以看應用,這邊label與literal的值會去跟後端串接。 <script type="text/javascript">         $('#show').click(function () {             $('#info').toggle();             var visible = $('#info').is(":visible");             var value = document.getElementById("<%=lbl_easy.ClientID%>").value;             if (visi...

ASP.NET-Web Service(API)接收參數並回傳json格式

圖片
這篇要介紹一個ASP.NET的專案,要如何建一個Web Service並可以接收別人給的參數,經過處理後回傳一json格式的Web API。 Step 1.新增asmx檔 Step 2.在App_Code資料夾找到取名一樣的.cs,因為要回傳json所以要定義一個類別,到時再用工具把這類別產生的物件轉成json,這次我想回傳的是一個json陣列。 宣告類別  public class Test {     public List<string> testList     {         get;         set;      }  } 再來你會在程式內看到[WebMethod]就是要你把處理的動作寫在這,如果有多個就自己新增[WebMethod]。 因此我就寫了一個method需要傳一個string參數,這個method與參數到時候會跟你打過去的API有關係。 在這邊我用的Json工具是Newtonsoft.Json所以別忘了在開頭using using Newtonsoft.Json; public void testMethod(string content) {      //宣告物件      Test test = new Test();      //宣告個list等等給物件的list接值      List<string> word = new List<string>();      word.Add(content);      test.testList = word;      Context.Response.Write(JsonConvert.SerializeObject(test)); } OK到這裡應該會有下圖的東西了。 Step 3...

ASP.NET-後端將值傳給javascript

這邊介紹兩個基礎但很常會用到的技巧。 首先要如後將後端的值傳給前端的javascript。 首先在前端(aspx)設一個HiddenField物件 <asp:HiddenField ID="hf_time" runat="server" /> 後端(aspx.cs)給值 hf_time.Value = "TEST"; 前端(aspx)javascript取值         <script type="text/javascript">             function getValue {                 var value = document.getElementById("<%=hf_time.ClientID%>").value;             }         </script> 再來是進階應用,按鈕點擊呼叫jquery的blockUI並且顯示特定值。 上個階段有的東西這邊都要另外再拉一個button的物件。 <asp:Button ID="btn_test" class="genbtn" runat="server" Text="測試" OnClick="btn_test_Click" OnClientClick="markpage1();" /> 可以看到在按下按鈕時前端會去呼叫markpage1()這個function,接下來就是在javascript寫這個function。         <script type="text/javascript" src="../js/jquery.blockUI.js"></script>         <script type="text/javascript"> ...

字串、段落、文章相似度比對(Levenshtein distance)

之前介紹過文章相似度比對,今天要來介紹一個舉凡是兩個字串(string)都可以拿來算相似度的方法,且運算速度還比較快。 Levenshtein distance(萊文斯坦距離),其核心概念很簡單就是A字串要變的跟B字串一模一樣需要增加、刪除幾個字元,若增修的字元越少表示兩個字串越相似。 舉例:1234變成123編輯距離就是1。 相關的source code網路上資源有很多,隨意貼一個C#版本。 public static int LevenshteinDistance(string s, string t)     {         int n = s.Length;         int m = t.Length;         int[,] d = new int[n + 1, m + 1];         if (n == 0)         {             return m;         }         if (m == 0)         {             return n;         }         for (int i = 0; i <= n; d[i, 0] = i++)         {         }         for (int j = 0; j <= m; d[0, j] = j++)         {   ...

英文拼字檢查(spellcheck)

這篇簡單介紹英文拼字檢查的實作邏輯,最常看到拼字檢查不外乎一些文書處理工具,可以檢查拼錯的英文字,再給予建議的候選字。 處理邏輯可以簡單這樣分 1.過濾 2.比對 3.給予建議 過濾不外乎就是把一些中文字、符號等過濾掉,再來用空白切字,下面提供C#過濾寫法。         Regex rgx = new Regex("[^a-zA-Z]");         string englishContent = rgx.Replace(content, " ");         List<char> parameters = new List<char>();         parameters.Add(' ');         string[] wordList = englishContent.Split(parameters.ToArray());         wordList = wordList.Where(c => c != "" && c.Length>1).ToArray();         return wordList; 再來是比對,需要一個字典,字典上的字確定是對的,網路很多開源的字典可以參考,再來就把剛剛切好的字去跟字典比對,若有在字典出現,系統則認為是對的字,若沒有進入下一步驟。 給予建議字,因為找不到一樣的字,這時就用編輯距離(Edit Distance)來去算跟他最相似的字,給予候選建議字。 後面兩個步驟在實作上建議可以用Trie的樹狀結構來做。

文章切斷落功能C#(paragraph segmentation using C#)

圖片
Hi大家好,好久沒寫網誌分享東西,可能是年初很多會議跟需求要談,沒啥時間來分享,其實最近也研究一些Docker的東西,有空再來分享。 今天想簡單講一下文檔切斷落的功能,你現在有一份Word或PDF等文字檔,你想把它以段落來切可以怎麼做?  切完段落便可做後續的應用,整段落的相似抄襲比對等等的 。 程式如下非常簡單 主要用\r\n(即0D0A)做切割,要注意除了段行符號外,最好前面還有句點,因為PDF再用工具解析成string時,他一行字會自動\r\n,前面兩行在做一下過濾的處理,句點取代是針對英文文章的置換,空白取代是有時候句點後面有空格才有換行符號,做完這處理差不多就大功告成了,最後再用一段的長度篩選一下,避免過短的句子也拿來當段落。 content = content.Replace(".", "。"); content = content.Replace(" ", ""); string[] resultString = Regex.Split(content, "。\r\n", RegexOptions.IgnoreCase); var paragraphs = resultString.Where(x => x.Length >= 30); 注意你必須先用解析工具把word或PDF解析成txt格式,可用Aspone等等工具,大致這樣,下次見。

Azure RMS檔案加密(4)-用Task Scheduler來執行Script

圖片
嗨大家好 這篇要介紹如何運用Windows的工作排程器(task scheduler)來執行Script。 工作排程器長這樣 Step 1打開工作排程器→建立工作 Step 2 建立工作名稱、勾選"不論使用者登入是否都執行" Step 3設定你要多久執行一次、幾點執行等等 Step 4 這邊最重要可參考下圖,新增動作選啟動程式,程式那欄輸"Powershell.exe",新增引數輸-File "script.ps1的路徑" 這樣就OK了,剩下的一堆小設定,大家自己設就好,只要這個設對,他就會進工作排程,定期執行。 好啦,介紹到這邊,蠻少看到Azure RMS的中文技術文章,也幾乎沒看過用PowerShell來用RMS服務做加密的中文介紹,分享給大家,謝謝。