Browse by Tags

【茶包射手日記】JS Bin的無窮迴圈保護機制
同事報案,用 JS Bin 跑迴圈計算從1加到n測試效能,發現 for 迴圈次數增加到100萬後加總結果不對,每次執行會得到小於正確值(499999500000)的隨機數字;但若不用for改用 lodash _.times() ,跑再多次結果也是正確的。 為了調查,先將程式碼簡化到可重現問題的最精簡內容: var count = 1000000; var sum = 0; for ( var i=0;i<count;i++) sum += i; console.log( "Inline...
Posted 27 April 2016 07:41 AMJeffrey | 1 comment(s) 3,699
Filed under:
【茶包射手日記】Java內嵌IE網頁疑案
接獲報案:某支Java開發的程式以內嵌IE方式顯示特定網頁,在特定機器執行時網頁出現異常。 初步蒐集情報如下: 於問題機器單獨使用IE或Chrome可正常顯示該網頁 問題機器之IE版本為IE11 問題僅出現在特定機器,同一Java程式於其他機器執行正常 於異常網頁按右鍵檢視HTML原始碼完整,異常部分推測為JavaScript出錯導致 IE在內嵌模式下無法使用F12開發者工具,偵錯困難 沒有F12可用,改用 Fiddler 側錄往來封包,找出後半段Request未發送證據,推測最大可能是JavaScript程式在某階段中止執行...
Posted 19 March 2016 12:27 AMJeffrey | with no comments 4,275
Filed under: ,
C# TypeScript雙頻式View Model型別程式產生器範例
NG筆記3-使用TypeScript 一文曾提及「另建程式碼產生器專案,將ViewModel規格轉成JavaScript(或TypeScript)、C#類別」的做法,方便Client及Server端共享一致的強型別ViewModel,規格如有更動,重跑程式產生器就能同步更新。 日前網友Ark詢問,有無上述做法的實際範例可供參考。先前其他專案也曾有類似程式產生器需求,手邊有運行多時的實例,但綁死過多專屬邏輯,複雜度過高難以抽離重用,算一算手邊的確缺少一組能獨立運行的淺顯範例,索性另起一套簡單的概念驗證...
偵測JavaScript物件屬性異動時機
由Knockout跨到Angular半年,對於NG的Dirty Check機制卻始終 沒好感 ,老覺得它髒,為了偷懶不宣告Observable跟少寫一些訂閱連動,卻無法預期程式觸發次數與時機,讓我很沒安全感。如果可以選擇,我寧可乖乖多寫一些Code,100%掌控程式運作,避免陷入程式 一旦複雜就可能失控的擔憂。(註:我想Angular RD也認同這點,在2.0將另推Observable。 參考 :… One approach is to replace the dirty checking that...
Posted 06 February 2015 06:12 AMJeffrey | with no comments 5,976
Filed under: ,
【茶包射手日記】IE CORS跨網域存取的特殊規則
同事報案,安裝SPA專案在localhost,跨網域發出AJAX請求到ServerA時出現存取被拒訊息,而該情況獨獨出現於IE11,Chrome與Firefox並無問題。 排除Web API端的CORS配套機制的問題(由Chrome及Firefox具名擔保,延伸閱讀: CORS OPTIONS Preflight Request與IIS設定 ),且更玄的是問題只發生在同事的IE11,在我的IE11測試本機localhost SPA專案發送同樣的AJAX需求到ServerA,一切正常。 經過一番診察...
Posted 15 January 2015 11:12 PMJeffrey | with no comments 10,285
Filed under: ,
自製jQuery waitFor函式:等待條件成立執行作業
在寫JavaScript程式時,常有協調非同步作業的需求,像是作業B必須等待作業A完成後再進行,傳統做法多使用Callback函式,例如: function doJobA(callback) { //do something callback(); } function doJobB() { //do another thing } doJobA(doJobB); 學會jQuery.Deferred後,我幾乎都改用Deferred處理非同步作業,不管串接多個作業循序執行[ 參考 ]或等待多項作業完成再進行...
Posted 28 December 2014 06:55 PMJeffrey | with no comments 8,641
Filed under: ,
【茶包射手日記】Chrome偵錯導致Window.Open失敗
使用 Chrome 偵錯網頁時,意外出現 window.open 失效的狀況。吊詭的是-偵錯是為了抓其他問題,與 window.open 無關,而該網頁運作已久,若 window.open 有問題,根本無法使用,不可能沒被發現。測試過程,window.open 並不是每次都出錯,出錯後重新啟動 Chrome 就會正常,一度讓我懷疑這是 Chrome 的 Bug。 歷經一番比對推敲,終於搞懂是怎麼一回事! 請看以下示範: 將中斷點設在 window.open(),按 F5 繼續執行可以過關。但如果在中斷點按...
杜絕ASP.NET網站JavaScript註解外露
ASP.NET MVC的 壓縮打包 能有效縮小CSS與JS檔案體積,減少HTTP往返次數,進而提升網站效能。JavaScript經壓縮可讀性雖然已大幅下降,但"保護程式邏輯不外洩"的效果仍然有限,不必過度期望。只是壓縮對我還有另一層重大意義: "JavaScript中的註解會被一併移除!" 我很愛在程式裡寫 故事 註解,把程式邏輯修正的來龍去脈交待清楚,例如: //2012-04-01 Bug Fix: VIP級使用者呼叫MehtodA前需呼叫MethodB以校正狀態...
【茶包射手日記】純JavaScript DOCX套版元件Debug
網友ping 留言 問了JS DOCX套版元件問題,由其所提供下載位置( https://github.com/djpate/docxgen )的Readme文件,判斷是PHP所開發,直覺地認為所謂JS套版是JavaScript呼叫PHP完成。但ping後續補充: 真的是純JavaScript,並提供可執行的程式包,我這才驚覺: 啥咪!! 真有神人用純JavaScript寫出DOCX套版元件? DOCX的本質是ZIP壓縮打包的一堆XML檔案,理論上只要能解壓ZIP、解析及操作XML,就能完成文件修改...
Posted 13 March 2014 12:00 AMJeffrey | 19 comment(s) 15,564
Filed under:
VS2012 JavaScript IntelliSense會忽略底線起首的屬性
我寫了一個CRUD輔助程式庫,內建自動抓取ViewModel進行JSON序列化的功能,其中有條"序列化時排除ViewModel中名稱為底線開頭屬性"的慣例(Convension)。前陣子接到同事回報,配合此慣例宣告ViewModel,卻發現底線起首的屬性會被Visual Studio 2012的JavaScript IntelliSense無視。 寫一小段程式,馬上獲得驗證: 一直沒留意VS2012的JS IntelliSense有此特性,查詢MSDN文件後獲得 證實 (在Handling...
Posted 07 September 2013 11:06 PMJeffrey | with no comments 4,851
Filed under: ,
【笨問題】IE9的「console未被定義」錯誤
一直以來,有個鬼現象纏著我揮之不去,console.log常因不明原因在IE9出現SCRIPT5009: 'console' is undefined (console未被定義) 錯誤! 我當然知道IE從IE8+才支援console物件,但如上圖所示,網頁明明是IE9標準模式,為什麼IE9卻說console物件不存在? 但進行偵錯,console.log()卻又正常! 笨了好久,今天才解開謎團:   IE8/IE9要先按F12開啟IE Dev Tools才能存取console物件啦...
Posted 05 September 2013 10:17 PMJeffrey | 2 comment(s) 17,294
Filed under: ,
使用PhantomJs產生網頁擷圖
將網頁內容另存圖檔是專案裡三不五時會冒出的需求,但一直沒找到順手好使的兵刃。 不久前介紹過HTML轉PDF的元件 -- Pechkin套件 ,網頁存成PDF已多少有保留擷圖的意義,但文末對本部落格的實測讓人失望,失真嚴重。最近的專案又被逼著設法將現成網頁(由JavaScript動態產生內容)轉存圖檔供其他系統應用,省去另外開發匯出模組的工程。再次Survey解決方案,想起先前流浪小風在 Chutzpath介紹 提過另一個webkit核心的網頁操作引擎 – PhantomJs 。 小試之後驚為天人...
Posted 29 August 2013 10:01 PMJeffrey | 7 comment(s) 24,353
Filed under: ,
JSON日期轉換的時區陷阱
在使用Kendo UI DatePicker時,出現選好日期送至後端卻變成前一天的狀況。 以下程式可重現問題,kendoDatePicker所選日期透過.value()可得到一個JavaScript Date物件,JSON.stringify()後傳至Server端,使用Json.NET還原回DateTime後,以ToString("yyyy-MM-dd HH:mm:ss")方式傳回Client端alert顯示。 <%@ Page Language="C#"...
Posted 25 June 2013 06:24 AMJeffrey | 2 comment(s) 19,463
Filed under: ,
我的JSDC 2013筆記
JSDC 是JavaScript Developer Conference的縮寫,是台灣JavaScript開發者的年度盛會,今年5/18-19兩天舉辦,沒有親自參加,但FB、噗浪上的資訊如潮水般湧入,許多講者幾乎是一講完就把投影片上傳到 Slide Share 跟 Speaker Deck ,然後我開始陷入: "哇! 這個我想看、那個我得了解"的焦躁中,一口氣吞下超量資訊,就像: JSDC的議程很多很廣,聲明一下,筆記偏向我的個人觀點,以自己JS程度能理解駕御及與目前學習方向接近的議題為主...
Posted 20 May 2013 12:14 AMJeffrey | 2 comment(s) 16,238
Filed under:
JavaScript端的JSON日期轉換
討論JSON日期轉換已不是第一次[ 1 2 ],但過去多半聚焦在JavaScript與.NET間的格式轉換。近來戰場移到Knockout MVVM,卻發現即使只在JavaScript端,也有日期轉換的小眉角。 在JavaScript的Date型別,經過JSON.stringify(),會轉成 ISO 8601格式 (yyyy-MM-ddTHH:mm:ss.fffZ);有趣的是,將這個字串用JSON.parse()解析,得到的是字串,而不會還原成當初的Date型別。 將ISO 8601格式還原回Date的需求...
Posted 11 May 2013 07:54 AMJeffrey | 2 comment(s) 13,609
Filed under:
更多文章 « 上一頁 - 下一頁 »

搜尋

Go

<June 2018>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication