網頁內嵌JSON建立JS物件之日期轉換問題
題目讀來有點不知所云,用實例講解才會清楚。在ASP.NET MVC Controller端建立的物件,想在輸出View的同時轉成JavaScript端物件,最直覺的做法是將物件轉為JSON字串,再以Razor語法內嵌一段var dataItem = { "num_prop": 1234, "str_prop": "ABCD", "bool_prop": true };...
View Article跨平台一大步,.NET Core 1.0正式登場!
這幾天在我FB洗版的大消息,莫過於.NET Core 1.0跟ASP.NET Core 1.0(原先命名為ASP.NET 5)已正式發佈!Scott Hanselman說,他加入微軟多年一直致力.NET與Open Source推廣,在15年後.NET Core 1.0推出的這一刻,終於攀上巔峰。.NET Core讓C#走出Windows,正式登陸Mac、RedHat Enterprise...
View ArticleCoding4Fun-也來IoT好了,Raspberry Pi 冰箱散熱溫度監測系統
故事要從家裡服役十七年的老冰箱掛點講起,老冰箱這兩年百病纏身,冷度不足,門框磁膠條密合不佳,冰箱兩側散熱區溫度偏高… 加上老機型耗電,早有換新念頭,逛賣場也常在冰箱區留連,但換冰箱茲事體大令人不想面對,總缺少臨門一腳。上週起冰箱兩側忽然熱到燙手,然後,它就死掉了......
View Article在JavaScript模擬C# Dictionary、LINQ Where、Select與OrderBy
一週內被兩位同事問到幾乎相同的問題,這一定是天意!趕緊寫篇FAQ以免天公伯不開心~【問題】用JavaScript要怎麼實現Dictionary<string, T>? JavaScript有沒有類似LINQ Where()、Select()、OrderBy()的東西? 回答第一個問題,JavaScript物件本身就具備Dictionary<string,...
View Article【茶包筆記】jQuery AJAX呼叫在IE有問題
同事報案,某網頁使用jQuery.ajax()發出四個OData查詢,在Chrome執行正常,在IE時兩個AJAX呼叫正常,有兩個查不到資料。使用F12觀察,發現有問題的AJAX呼叫URL參數包含中文但未使用encodeURIComponent()編碼,Chrome正確地自動做了轉換,IE也自動做了轉換,但轉換結果出現亂碼。URL未用encodeURIComponent()編碼要承擔敗戰責任無庸置疑...
View Article【茶包射手日記】程式當掉時Oracle Transaction未自動Rollback
同事報案,稍早發生Oracle錯誤導致有一批排程作業失敗,很快找到錯誤,修正後重新執行排程卻出現更新資料庫發生Timeout,而Oracle錯誤後才新増的項目則可順利執行無誤。由以上線索,推測最可能的原因是「出問題的資料被鎖定了」。檢查程式碼,啟動Transaction但未使用try…catch主動於出錯時Rollback。依據過去經驗,Oracle的Transaction在Client...
View Article【茶包速記】從排程程式呼叫Word發生錯誤
同事報案,有支背後操控Office Word處理文的主控台應用程式(Console Application)以排程(Scheduled Task)方式執行,移機後無法執行。觀察現象為程式出錯終止,其啟動的Word程序殘留,要重複執行則因前次啟動Word仍鎖定特定文件檔出錯,錯誤Log則發現"There is insufficient memory. Save the document...
View Article垃圾郵件出新招?由Apple官方親自寄送的垃圾信
Gmail信箱收到一封怪信,內容如下:信件來自id.apple.com,第一行明顯是垃圾郵件廣告或是釣魚詐騙,但後方緊接著標準Apple ID救援帳號驗證碼通知,其中Apple ID帳號頁面URL也是連到真的Apple ID網站無誤。經驗裡,Gmail的垃圾信檢核能力強大,鮮少有人破關,若這封信發信來源是偽造的卻闖關成功,其中使用技巧令人好奇。檢查信件的SMTP...
View Article【笨問題】JavaScript取字串split()結果最後一段
困擾我很久的一個問題:寫程式時常遇到用Split切字串再取最後一節的情境,例如:「DomainName\Account」取Account、「Oracle.ManagedDataAccess.Client.OracleConnection」取OracleConnection。這類需求用C#寫,當然二話不說,Split()加LINQ...
View ArticleNuGet Package部署測試小技巧-清除Cache
聲明,本文介紹的技巧主要針對使用NuGet Package Explorer或Visual Stuio NuGet Packager套件自製NuGet Package且上傳到NuGet私服的場合,如果你只是純粹的NuGet Package使用者,記個書籤或留個印象就好,未來有需要再回來。先說說我遭遇的困擾,先前曾提過重複發行NuGet...
View Article筆記:int?(Nullable)運算與??運算子優先順序
同事回報某段C#程式發現Bug:int lastQty = 100; int? soldQty = null; int leaveQty = lastQty - soldQty ?? 0;soldQty 由其他系統傳入可能為 null,原本我的想法是遇到 soldQty==null 就視為0,此時 leaveQty 應等於 lastQty,但以上程式執行結果與預期不同,leaveQty ==...
View ArticleDapper小技巧:以資料表保存集合物件JSON
專案常遇到的需求:為指定資料保留修改歷程,以備稽核檢查或追查責任之用,使用機率不高且無統計或隨興查詢需求,不值得另開資料表。此時我偏好的做法是定義成List<HistoryRecord>,在資料表開一個NVARCHAR(MAX)保存其JSON內容,調閱時讀取JSON反序列化還原內容,足以滿足規格所需。用個實例說明,假設資料物件定義如下:publicclass...
View ArticleDapper筆記:列舉轉VARCHAR研究
一個用資料表保存C# Model的常見問題,列舉型別屬性該怎麼處理?例如有個BlogUser資料物件,包含Id、Name及Role三個屬性,其中Role是列舉,包含Admin、Editor、Blogger、Reader等項目。保存BlogUser的資料表設計如下,Role欄位定義為VARCHAR(8),目標為直接保存"Admin"、"Blogger"等字串內容,以期在SQL可使用WHERE Role...
View Article使用Oracle資料表保存GUID屬性
大家都知道我隸屬GUID PK幫 .NET分舵,最近寫了個小模組,Model理所當然地使用GUID當作Primary Key,由於想同時支援SQL Server跟Oracle,第一次挑戰SQL跟Oracle共用Model。先前的GUID...
View Article【茶包筆記】 Visual Studio遇web.config鎖定無法覆寫
最近遇到兩次,特筆記備忘。在Windows 8.1使用Visual Studio 2015偵錯ASP.NET網站,修改web.config後存檔,出現被其他程序佔用無法存取錯誤。The process cannot access the file '…web.config' because it is being used by another process. 無法存取檔案...
View Article小技巧:在web.config加入多筆式設定
跟同事聊到如何在web.config加入多筆式設定。所謂多筆式設定,是指同性質設定可能有1到n筆並存,我常遇到的例子是偵錯用途或排除例外的對應設定,例如:將Windows登入帳號A對應成帳號B,部門C對應成部門D…...
View ArticleEntity Framework筆記:使用Oracle Synonym
遇到EF使用Oracle Synonym問題,查了資料做了實驗,整理筆記如後。先說我們在Oracle使用Synonym(別名,有人翻成「同義詞」,我覺得別名順口)的情境:例如人事系統使用"HR"帳號登入Oracle並在自己的HR Schema建立資料表並擁有HR Schema所有資料表的讀寫權限。之後ERP系統要讀存HR...
View ArticleNG筆記28-Checkbox清單進化版
很久以前就寫過Angular版的Checkbox清單,不過當時的版本有點簡陋,只能以字串陣列作為來源。我心目中的理想Checkbox清單元件,應該要像ng-options能用物件陣列當作資料來源,最好還可以切換單選模式(我知道改用Radio就能單選,但規格書不時出現註明要單選的Checkbox清單),沒找到前人寫好的現成作品,那就自己刻一個吧! (「花更多時間去找元件」 vs...
View ArticleNG筆記29-下拉選單連動
跟同事討論到下拉選單連動(最常見的經典應用是縣市、行政區下拉選單連動,選取縣市後自動換成該縣市的行政區清單),這才發現針對這門必修課,我只寫過KO版範例,沒寫過NG版,趕緊補上。我寫了一個三層式下拉選單連動範例,在ViewModel中安排Level1、Level2、Level3三個屬性保存下拉選單選取結果,另外用L1Options、L2Options、L3Options分別存放Level1-3的下拉...
View Article