2017年5月5日 星期五

Google Cloud Platform 探索經驗 (1) - 專案建立

1.當然要先有一個 GOOGLE 帳號,然後登入 Google Cloud Platform 首頁
2.點選網頁左上方"請選取專案"來建立或選擇專案

     如果都沒建立過任一專案,則會出現以下畫面,然後點選畫面右方的"+"來建立新專案
建立新專案 / 選擇專案

輸入專案名稱與專案ID
       專案新專案會需要一段時間,待右上方出現訊息時,表示建立完成
建立專案中

專案建立完成
3.完成後再點擊一次左上角的 ≡ 符號,可看到目前的資訊主頁




Windows 下安裝 MySQL Client

1.到MySQL 官網下載安裝檔
2.安裝過程中選擇 Client Only 選項即可
3.安裝過程中會檢查必要安裝,
      若缺少 Visual Studio Tools For Office 2010,則到微軟官網下載
      若缺少 Python 3.4,則到 Python官網下載(for Windows 版本),或參考這篇文章
       先把 Visual Studio For Office 2010 和 Python 3.4 安裝起來

4.安裝完之後,可以選擇畫面中的單選鈕後,按下下方的"Check"鈕後,即可往下一步安裝
5.按下Execute,後即完成安裝,過程中可能會有些東西要手動按下 "try again",其中 "MySQL for Visual Studio 1.2.7" 會安裝比較久

       全部安裝完成,即可按下下一步
6.這邊會顯示接下來會做哪些東西的設定
 7.MySQL Router 的設定:如果要設定,可以勾選之後,就會可以編輯相關的連線資訊,或者之後再設定,則把勾勾拿掉,直接按下一步




2017年3月29日 星期三

發佈網站時 IIS 的預設文件(自訂首頁)都會被清掉

每次在 Visual Studio 按下發行到網站時,自訂的首頁都會被重置,
















需要手動再加一遍,此時可以在 Web.Config 檔案裡加入以下幾行即可排除。

<configuration>
  <system.webServer>  
    <defaultDocument>
      <files>
        <add value="MyLoginPage.aspx"/> ←MyLoginPage.aspx 是自訂的首頁
      </files>
    </defaultDocument>
  </system.webServer>
</configuration>

2017年3月15日 星期三

出現找不到 icsharpcode.sharpziplib ..的錯誤時

如題,在config檔中加上
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-0.86.0.518" newVersion="0.86.0.518" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

2017年3月13日 星期一

INSERT 後取回最新的 ID

假設有一 [TABLE1],其下欄位為 ID、COLUMN_1 和 COLUMN_2
欄位 ID 設為自動增長

在下了 INSERT 後要取得剛才新增的 ID 時,可以這麼做:
INSERT INTO [TABLE1] (COLUMN_1, COLUMN_2) OUTPUT INSERTED.ID VALUES (DATA1, DATA2)

其中 INSERTED 為 SQL 在建立新資料列時,會暫存的位置,
所以 INSERTED 會找到 [TABLE1] 中的相關資料

同樣的,上述語法也可以用在 UPDATE 上
UPDATE [TABLE1] SET COLUMN_1 = @DATA1, COLUMN_2 = @DATA2 OUTPUT DELETED.ID WHERE ID = 'SomeData'
此時可以取得 UPDATE 是否有影響預期中的資料筆數,可得知是否有更新資料,進而處理下一步(比方:若沒有任何更新表示查詢的資料不存在)
而不需要先查詢有沒有存在,再判斷動作

2017年3月1日 星期三

網頁另開視窗回傳值

【父網頁】

<javascript>

<script>
// 以Post的方式傳值
// url: 開的視窗網址
// name: 開的視窗名稱(可有可無)
// targetid: 回傳後要顯示在哪個元件上
// keys、values: 均以 ['key1','key2']、['value1','value2'] 成對表示
function openWindowWithPost(url, name, targetid, keys, values) {
           
            _targetid = targetid;
            var newWindow = window.open(url, name, "width=" + 600 + "px,height=" + 400 + "px,left=" + 0 + ",top=" + 0);
            //同时将焦点事件绑定,目的是,当点击父窗口时,如果子窗口尚未关闭,那依然回到子窗口,做到类似模式窗口的效果
            window.onfocus = function () { if (newWindow.closed == false) { newWindow.focus(); }; };

            var html = "";
            html += "<html><head></head><body><form id='formid' method='post' action='" + url + "'>";
            if (keys && values && (keys.length == values.length)) {
                for (var i = 0; i < keys.length; i++) {
                    html += "<input type='hidden' name='" + keys[i] + "' value='" + values[i] + "'/>";
                }
            }
            html += "</form><script type='text/javascript'>document.getElementById(\"formid\").submit()<\/script></body></html>";
            newWindow.document.write(html);
            return newWindow;
        }

// 子網頁回傳回來的值在這邊處理
function handleReturnValue(val) {          
            $("#" + _targetid)[0].value = val.join();          
        }
</script>

<html>

<input type="text" id="returnData" >
<input type="button" value="開子視窗" onclick="openWindowWithPost('子視窗的網頁','NewWindowName','returnData',['memberID'],['mem1','mem2'])" />



【子網頁】

<javascript>

<script type="text/javascript">
        // 判斷瀏覽器種類
        function getBrowserType() {
            var Sys = {};
            var ua = navigator.userAgent.toLowerCase();
            if (window.ActiveXObject)
                Sys.ie = ua.match(/msie ([\d.]+)/)[1]
            else if (document.getBoxObjectFor)
                Sys.firefox = ua.match(/firefox\/([\d.]+)/)[1]
            else if (window.MessageEvent && !document.getBoxObjectFor)
                Sys.chrome = ua.match(/chrome\/([\d.]+)/)[1]
            else if (window.opera)
                Sys.opera = ua.match(/opera.([\d.]+)/)[1]
            else if (window.openDatabase)
                Sys.safari = ua.match(/version\/([\d.]+)/)[1];

            if (Sys.ie) return "IE";
            if (Sys.chrome) return 'Chrome';
            if (Sys.firefox) return "Firefox";
            if (Sys.opera) return "Opera";
            if (Sys.safari) return "Safari";

            return "IE";
        }

        // 當關閉子網頁後,要做的動作
        function closeWindow() {    
            // val: 為要回傳給父網頁的物件(或值)    
            var val = $("#cbxMembers input:checked").map(function(){
                return $(this).val();
            }).get();  // 回傳父視窗的值          
           
            if ("IE" == getBrowserType())
                self.returnValue = val;   //IE:直接回傳
            else
                window.opener.handleReturnValue(val); //非IE,調用父視窗的函數來回傳值
            self.close();
        }
    </script>

<html>

<input type="button" value="確定"<input type="button" name="button1" value="確定" onclick="closeWindow();" />


參考:
http://www.weibo.com/p/230418671432cf0102v6rf?pids=Pl_Official_CardMixFeed__4&feed_filter=1

http://www.blogjava.net/kait/archive/2011/05/27/351138.html

2017年1月16日 星期一

Excel 巨集 - 開啟檔案→修正

Sub 巨集1()
'
' 巨集1 巨集
'

'
    For i = 1 To 11
        n = Right(String(2, "0") & i, 3)
        Workbooks.Open Filename:="C:\Users\Min\Downloads\TEMP\TEST_" & n & ".csv"
        Range("B1").Select
        ActiveCell.FormulaR1C1 = "新欄位名稱1"
        Range("D1").Select
        ActiveCell.FormulaR1C1 = "新欄位名稱2"
        Range("F1").Select
        ActiveCell.FormulaR1C1 = "新欄位名稱3"
        Range("F2").Select
        Cells.Replace What:="=-不分區", Replacement:="000-不分區", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        ChDir "C:\Users\Min\Downloads\TEMP"
        ActiveWorkbook.SaveAs Filename:= _
            "C:\Users\Min\Downloads\TEMP\TEST_" & n & ".xlsx", FileFormat:= _
            xlOpenXMLWorkbook, CreateBackup:=False
    Next i
End Sub