2018年6月26日 星期二

[JQuary][C#]使用jQuary實作form action post參數

網頁轉址一般分為 1.直接導向Url 2.夾帶Get參數在Url後面

如果要使用Post的方式要如何跳轉呢?

Ans:使用Form Action 設定Method='Post'

範例前端程式
------------------------------------------------------
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <title></title>
</head>
<body>
    <form id="form1" method="post" runat="server">
        <div>
            <asp:HiddenField ID="hidENG_ID" runat="server" ClientIDMode="Static" />
            <asp:HiddenField ID="hidToken" runat="server" ClientIDMode="Static" />
        </div>
    </form>

    <form id="form2" method="post">
        <div>
            <input id="Token" name="Token" type="text" value="" />
            <input id="GetLoadRRFP" type="submit" value="Submit" />
        </div>
    </form>

    <script>
        function GetLoadRRFP() {
            //$.post($("#hidENG_ID").val(), { "Token" : $("#hidToken").val()});
            $("#Token").val($("#hidToken").val());
            $('#form2').attr('action', $("#hidENG_ID").val());

            $("form2").submit(function (event) {
                event.preventDefault();
            });
        }

        $(document).ready(function () {
            GetLoadRRFP();
            $('#form2').submit();
        });
    </script>
</body>
</html>
------------------------------------------------------

範例後端程式
------------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
        hidENG_ID.Value = "http://xxx.xxx.xxx.xxx/";
        hidToken.Value = "TokenValues";
}
------------------------------------------------------

開啟新頁面在PageLoad事件中將數值設定至前端物件,並將參數設置至要Post的Form中,完成後觸發Submit事件即可達成目的


2018年6月6日 星期三

[GIS][MS-SQL]匯入ShapeFile檔案資料到MS-SQL

1.到網站下載Shape2SQL->網站

2.使用QGIS開啟ShapeFile檔案

3.查看檔案 > 右鍵 > Properties > Source > 編碼[UTF-8]

4.轉座標格式 [EX:W84:3857]

5.開啟Shape2SQL執行檔 > Shape2Sql.exe

6.Shapefile選擇檔案位置 > Server選擇要更新資料庫 > Table Name輸入資料表名稱 > 勾選想要的欄位

7.點擊Upload to Database > 完成

2018年6月3日 星期日

[C#, Windows]Excel讀取出現['Microsoft.ACE.OLEDB.12.0' 提供者並未登錄於本機電腦上]錯誤,解決方法

使用C#讀取Excel
讀取範例程式碼
---------------------------------------------------------------------------------------------------
 string tableName = "[" + sheet + "$]";//在頁簽名稱後加$,再用中括號[]包起來
 string sql = "SELECT * FROM " + tableName;//SQL查詢
 OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data   Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;Readonly=0'");
 OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);
 DataTable dt = new DataTable();

  try
  {
      da.Fill(dt);//第一行為標頭
   }
   catch (Exception ex)
   {}
   finally
   {
      conn.Close();
   }
----------------------------------------------------------------------------------------------------
解決方法
原因:Office版本太新,需要使用舊版本的連線元件,下載網址如下
2007 Office system 驅動程式:資料連線元件

2018年5月10日 星期四

[Python]使用VisualStudio執行Python Word2Vec範例

Step1、取得GitHub程式

Step2、取得維基百科中文字庫(.bz2檔案)

Step3、安裝套件[gensim] Python3.6 模擬器 > 右鍵 > 安裝Python套件 >查詢[gensim]並下載

Step4、執行wiki_to_txt.py檔案 > Python3.6 模擬器 > 右鍵 >開啟命令提示字元> python wiki_to_txt.py xxxxxxxxxx.bz2 > 生成wiki_texts.txt檔案

Step5、下載OpenCC軟體 > 下載[opencc-1.0.1-win64.7z]

Step6、執行OpenCC軟體轉繁體中文 > 開啟 opencc.exe > 執行語法 > 生成wiki_zh_tw.txt檔案
執行語法:opencc -i wiki_texts.txt -o wiki_zh_tw.txt -c s2tw.json

Step7、執行segment.py > 生成wiki_seg.txt檔案

Step8、執行train.py檔案 > 生成word2vec.model檔案
訓練可調整參數
class gensim.models.word2vec.Word2Vec(sentences=None, size=100, alpha=0.025, window=5, min_count=5, max_vocab_size=None, sample=0.001, seed=1, workers=3, min_alpha=0.0001, sg=0, hs=0, negative=5, cbow_mean=1, hashfxn=<built-in function hash>, iter=5, null_word=0, trim_rule=None, sorted_vocab=1, batch_words=10000)

Step9、執行demo.py檔案

參考網頁:Training Word2Vec Model on English Wikipedia by Gensim

2018年4月16日 星期一

[MS-SQL]資料庫組態管理員 發生[0x800706be]錯誤

步驟一、開始 > Microsoft SQL Server 2008 R2 > [SQL Server 組態管理員]

步驟二、下載Microsoft SQL Server 2008 SP3 > 更新

步驟三、檢查[事件檢視器]錯誤



步驟四、 [SQL Server 組態管理員] > SQL Server > 右鍵 > 內容 > 內建帳戶 > 本機服務 > 啟動











步驟五、重新開機後即可正常運作





2018年4月12日 星期四

[Windows]Outlook轉o365匯入pst檔案

步驟一、編輯登入檔案 2013、2016 範例,執行已下登入檔案
office2013_outlook.reg
-----------------------------------------------------
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\AutoDiscover]
"ExcludeScpLookup"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\AutoDiscover\RedirectServers]
"autodiscover-s.outlook.com"=hex(0):
"autodiscover.hotmail.com"=hex(0):
-----------------------------------------------------
office2016_outlook.reg
-----------------------------------------------------
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\AutoDiscover]
"ExcludeScpLookup"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\AutoDiscover\RedirectServers]
"autodiscover-s.outlook.com"=hex(0):
"autodiscover.hotmail.com"=hex(0):
-----------------------------------------------------

步驟二、匯出舊Outlook檔案(backup.pst)

步驟三、控制台 > 郵件 > 顯示設定檔














步驟四、新增帳號o365並驗證登入



















步驟五、設定[選擇提示使用的設定檔]



步驟六、重新登入outlook 以新增的帳號登入 > 選項 > 進階 > 匯出 > 選擇[從其他程式或檔案匯入] > 選擇檔案並匯入 > 完成

2018年4月11日 星期三

[C#]HttpWebRequest爬蟲


步驟一、Default.aspx頁面中建立lbtnSend按鈕
步驟二、建立AccountInfo.cs 檔案與SetHttpWebRequest.cs 檔案
步驟三、設定要抓取的網站網址
----------------------------------------------------------------------------------------------------------------
Default.aspx 預設目錄
----------------------------------------------------------------------------------------------------------------
        protected void lbtnSend_Click(object sender, EventArgs e)
        {
            AccountInfo accountInfo = new AccountInfo("123", "456");

            string url, postData, html;
            url = "http://rrfp.swcb.gov.tw/";
            postData = string.Format("hidLoginType=A&hidRadio=SSO&LoginType=SSO&LOGIN_TYPE=A&ID_NO=&USER_ID={0}&USER_PWD={1}", accountInfo.Account, accountInfo.Password);
            html = SetHttpWebRequest.SetLoginHttpWebRequest("POST", url, postData, accountInfo, 0);

            url = "http://rrfp.swcb.gov.tw/Home/Index";
            html = SetHttpWebRequest.SetLoginHttpWebRequest("GET", url, null, accountInfo, 0);

            url = "http://rrfp.swcb.gov.tw/DES_Analys/Home_Analys_Index";
            html = SetHttpWebRequest.SetLoginHttpWebRequest("GET", url, null, accountInfo, 0);
        }

----------------------------------------------------------------------------------------------------------------
AccountInfo.cs 帳號型態
----------------------------------------------------------------------------------------------------------------
public class AccountInfo
{
    /// <summary>
    /// 帳號
    /// </summary>
    public string Account { get; set; }
    /// <summary>
    /// 密碼
    /// </summary>
    public string Password { get; set; }
    /// <summary>
    /// 跳轉網址
    /// </summary>
    public string RedirectUrl { get; set; }
    /// <summary>
    /// 登入狀態
    /// </summary>
    public bool LoginedStatus { get; set; }
    /// <summary>
    /// 登入金鑰
    /// </summary>
    public string Uid { get; set; }
    /// <summary>
    /// 存放來源Cookie
    /// </summary>
    public CookieCollection CookieCollection { get; set; }
    /// <summary>
    /// 登入失敗
    /// </summary>
    public bool IsFailure { get; set; }
    /// <summary>
    /// 連續服務器錯誤計數
    /// </summary>
    public int WebExCount { get; set; }

    /// <summary>
    /// 建構子 設定帳密
    /// </summary>
    /// <param name="account">帳號</param>
    /// <param name="password">密碼</param>
    public AccountInfo(string account, string password)
    {
        Account = account;
        Password = password;
        CookieCollection = new CookieCollection();
    }
}


----------------------------------------------------------------------------------------------------------------
SetHttpWebRequest.cs POST/GET方法
----------------------------------------------------------------------------------------------------------------
 public class SetHttpWebRequest
    {
        //設定登入要求器
        public static string SetLoginHttpWebRequest(string method, string url, string postData, AccountInfo accountInfo, int proxyIndex)
        {
            //協定
            HttpWebRequest request;
            request = WebRequest.CreateHttp(url);
            request.Method = method;
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36";
            request.Accept = "*/*";
            request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
            request.AllowAutoRedirect = false;
            request.KeepAlive = true;
            request.Referer = "http://rrfp.swcb.gov.tw/";
            request.Timeout = 10000;
            request.ReadWriteTimeout = 10000;
            request.CookieContainer = new CookieContainer();
            request.CookieContainer.Add(accountInfo.CookieCollection);

            //傳送資料
            if (postData != null)
            {
                byte[] postByte = Encoding.UTF8.GetBytes(postData);
                request.ContentLength = postByte.Length;
                Stream stream = request.GetRequestStream();
                stream.Write(postByte, 0, postByte.Length);
                stream.Close();
            }

            //接收回應
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            string html = string.Empty;

            if (response != null)
            {
                StreamReader reader;

                if (string.Equals("gzip", response.ContentEncoding, StringComparison.CurrentCultureIgnoreCase))
                {
                    reader = new StreamReader(new GZipStream(response.GetResponseStream(), CompressionMode.Decompress), Encoding.UTF8);
                }
                else
                {
                    reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                }

                html = reader.ReadToEnd();
                reader.Close();

                foreach (Cookie cookie in response.Cookies)
                {
                    accountInfo.CookieCollection.Add(cookie);
                }
            }

            response.Close();
            request.Abort();

            return html;
        }
    }
----------------------------------------------------------------------------------------------------------------

2018年4月10日 星期二

[Katalon]自動化測試

步驟一、開啟Google瀏覽器 > 開啟Chrome線上應用程式商店 > 查詢Katalon Recorder > 掛載Katalon Recorder (Selenium IDE for Chrome)

步驟二、開啟掛在套件,點擊Record即可開始錄製步驟





































備註:javascript生成動作或無指定ID物件可能會有錯誤或無反應的情況

2018年4月8日 星期日

[Google]Google Hacking 淺談

使用Google Search與指令進行深度網頁查詢

步驟一、了解基本語法 [Basic Search Command]

  • intitle
  • inurl
  • intext
  • site
  • filetype
  • "...."
  • +
  • -
  • |
  • AND
  • OR
步驟二、指令應用 [經常使用查詢Google會記錄,請小心使用]
  1. AND 與 OR 語法需大寫
  2. "...." 內可使用正則語句,如"t?name"則會找到t-time 或 it time等網頁內容
  3. +號與-號則是進行條件篩選,過濾網頁包含字串
  4. filetype為指定收尋檔案類型,如xls、pdf、txt等檔案
步驟三、參考網路查詢資源
  • Google Hacking Database
  • Google Hacking Dork List





2018年4月3日 星期二

[Google]G-Mail申請機械登入碼

步驟一、[Google我的帳戶] > [登入] >[登入和安全性]

 步驟二、[應用程式與密碼] > 設定[郵件-其他]

 步驟三、[應用程式機器碼命名] > [產生機器碼]



[MS-SQL]卸載與掛載資料庫

步驟一、[資料庫] > [右鍵] > [工作] > [卸離]



步驟二、[資料夾] > [右鍵] > [內容] > [安全性] > [加入權限]


步驟三、[資料庫] > [附加] > [選擇檔案]


















[JQuary][C#]使用jQuary實作form action post參數

網頁轉址一般分為 1.直接導向Url 2.夾帶Get參數在Url後面 如果要使用Post的方式要如何跳轉呢? Ans:使用Form Action 設定Method='Post' 範例前端程式 -----------------------------...