2014年10月2日

json轉 GUID字串檢核格式不嚴謹

foreach (object obj in args)
{
    if (obj == null)//需過濾參數=null
    {
        continue;
    }
    else if (obj.ToString().Length == 38 && obj.ToString().IndexOf("-", 0, 10) == 9)
    {
        activityId = JsonConvert.DeserializeObject<guid>(obj.ToString());
        break;
    }
    else if (obj.ToString().Length == 36 && obj.ToString().IndexOf("-", 0, 10) == 8)
    {
        activityId = Guid.Parse(obj.ToString());
        break;
    }
}

然後人家輸入一個剛好長度 38的字串,第一個 - 又剛好在第十個字元 就死了


原本我是想到用 regular expression做檢核
想了一串的 regex
Regex regGuid = new Regex("[{(]?[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[]{12}[})]?");

後來看到別人提供的做法
foreach (object obj in args)
{
    if (obj == null)
    {
        continue;
    }
    else if (Guid.TryParse(obj.ToString(), out activityId))
    {
        break;
    }
}

只是要注意 tryparse失敗的話 guid會被填成 Guid.Empty

2014年9月1日

[VS] 加入網域後 專案 load failed (沒有在 IIS建立虛擬目錄的權限)


控制台 => 使用者帳戶 => 讓其他使用者可以存取這部電腦
新增使用者(網域帳戶) 群組設為系統管理員
重新開機

打開 IIS檢查

2014年7月15日

解決 Visual Studio載入時發生錯誤 您必須在使用系統管理員帳戶的環境中執行Visual Studio,才能 ... blahblah

因為 Url已經在 IIS被綁定
所以需要移除 binding

開啟 powershell執行以下程式碼(或以記事本存成 .ps1檔案後執行)


$appCmd = "C:\Program Files (x86)\IIS Express\appcmd.exe" 

$result = Invoke-Command -Command {& $appCmd 'list' 'sites' '/text:SITE.NAME' } 
for ($i=0; $i -lt $result.length; $i++) 
{ 
    Invoke-Command -Command {& $appCmd 'delete' 'site'  $result[$i] } 

}
如果有註冊表問題,依照提示訊息至 regedit修改

2014年3月3日

jqGrid Reload

jQuery("#list2").jqGrid('setGridParam',{data: json_History}).trigger("reloadGrid");

jQuery("#list2").jqGrid('setGridParam',{url:"server.php?q=2"}).trigger("reloadGrid");
reference
    jqGrid: Reload Local Data or Url Data

2014年1月14日

開發注意事項

Log裡面個資是否為明碼

text Log => Web、AP Server => 都應該依子系統(大分類)分資料夾

找回 密碼  http://my.oschina.net/zhengyun/blog/192693

(管) 確認每個功能會用到的 API  當 API有修改時,通知所有會用到的功能的負責工程師

難字 post AllowHtml

2014年1月9日

null.Equals(string) v.s. string.Equals(null)

errorMessage.Equals("系統錯誤")
比較好的方式:
"系統錯誤".Equals(errorMessage)

可以預防 errorMessage為 null時出 exception

看到問題了 以後怎麼預防

Terry Chien
    看到遠通 web server被駭
    mail詢問怎麼預防

Jonathon
    通行費 errorMessage null 
    佈版流程
    以後怎麼預防
    Jerry: check-in > 上 uat > user 測試 > 上 prod
             緊急佈版  要先跟 user講沒有測

2014年1月8日

讀取檔案 中文字處理

最近在處理文字檔的時候  遇到比對每一行的長度時  如果該行中有中文字存在  長度取得就會出錯
用 Substring取字串時也會取錯位子

需要在讀檔時指定用 BIG5編碼
處理字串的時候要加用 GetBytes().ToString

File.ReadAllLines(filePath, Encoding.GetEncoding("BIG5"))
...
...
...
byte[] sContentByte = Encoding.Default.GetBytes(line);

string tmp = Encoding.Default.GetString(sContentByte, 11, 22)

2013年10月8日

jqGrid 展開 subGrid by other columns

ondblClickRow: function (rowid, iRow, iCol, e) {
    alert("rowid: " + rowid + ", iRow: " + iRow + ", iCol: " + iCol);
    if (iCol == 2) {
        $(this).jqGrid("toggleSubGridRow", rowid);
    }
},
onCellSelect: function (rowid, iCol, cellcontent, e) {
    alert("rowid: " + rowid + ", iCol: " + iCol + ", cellcontent" + cellcontent);
    if (iCol == 2) {
        $(this).jqGrid("toggleSubGridRow", rowid);
    }
},

2013年9月13日

WebService Test soapUI

http://sourceforge.net/projects/soapui/files/

host/WebService.asmx?WSDL

<soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:body>
    <etagservice xmlns="http://tempuri.org/">
      <strtx>
         xml string
      </strtx>
    </etagservice>
  </soap:body>
</soap:envelope>

2013年8月14日

執行錯誤的選擇

時程不會因為你下了錯誤的決定並執行而往後延
除了這次補救回來
以後必須避免錯誤的判斷

如同昨天在測試 css設定是否只在 IE7會有問題
堅持使用自己修改瀏覽器模式的 IE7去找問題
後來請他人開 VM用 IE7測就沒問題
等於做白工 ... 

2013年8月13日

jQuery v.s. IE9 相同性

IE預設在 intranet的時候會使用 Document mode =IE 7的相容性
這樣會造成許多不可預期的 js錯誤

目前CSS使用的解法是在 master page head的部份加上以下 meta data使得他強迫使用ie10的文件模式(實測ie9也是ok)

    <meta http-equiv="Content-Type;" content="IE=10" />

如果本來就有資料的話可以用分號加上IE=10即可

jqGrid 換頁後, formatter失效

http://stackoverflow.com/questions/3807623/jqgrid-paging-question

$("#list").setGridParam({page:1}).trigger('reloadGrid');
$("#list").trigger("reloadGrid", [{page:1}]);
$("#list").trigger("reloadGrid", [{current:true}]);
使用無效?


用 bind綁定 click事件
$('td[id$=_pager]').click(function () {
    $('.buttonDownload').bind('click', Download);
});

function downloadButton(cellvalue, options, rowObject) {
    return "<input type='button' class='buttonDownload' value='列印' data-formTypeId='" +@Model.formTypeId +"' data-formNumber='" + cellvalue + "' />";
}

function Download() {
    var formTypeId = $(this).attr('data-formTypeId');
    var formNumber = $(this).attr('data-formNumber');
}
或 ...
function downloadButton(cellvalue, options, rowObject) {
    return "<input type='button' class='buttonDownload' onclick='javascript:Download(" + @Model.formTypeId + ", " + cellvalue + ");' value='列印' data-formTypeId='" +@Model.formTypeId +"' data-formNumber='" + cellvalue + "' />";
}