2012-10-07

網頁除錯: IE7 和 IE8

客戶反應網站使用 IE 瀏覽時, 發生若干問題。雖然對 IE 反感到了一個極致, 但問題還是得處理。安裝了測試環境 IE Tester , 預設提供 5.5 ~ 9 的版本, 是很方便的工具 (分頁有時很容易當掉)。
大致上是兩個因素造成問題:

  1. IE7 沒有提供 JSON 類別
  2. IE 的 event 可能不會從事件處理器丟出 (依版本而異)


2012-09-22

使用 console.log 測試 JavaScript 時

開發網頁 JavaScript, 我個人偏好使用 Google Chrome 的 console.log() 來除錯。但發佈時若沒有把 console.log() 註解掉, 在 IE 上就會發生悲劇, 產生 Error (使用的是 IE9)。離奇的是, 在 IE 使用開發者工具, console.log() 不會發生錯誤, 但切回一般模式就 GG 了... WTF。

2012-09-15

Microsoft HTTPAPI/2.0 佔用 80 port

安裝 SQL Server 2008 後, WAMP server 的 Apache 就無法啟用, 測試了一下發現是「Microsoft HTTPAPI/2.0」佔用的 port 80。Google 說是 SQL Server Reporting Services 佔用了, 只要把它停掉就可以放出 80 port。
在「控制台」→「系統管理工具」→「服務」裡停止「SQL Server Reporting Services」。

2012-09-14

MSSQL *.trc 追蹤檔處理

在這裡使用 SQL Server 2008 R2 評估版

使用 SQL Server Profiler 開啟第一個追蹤檔, 接著使用
「檔案」>「另存新檔」>「追蹤資料表」
連結 DB 之後輸入資料表名稱即可。

2012-09-02

測試 AIR 的 LoaderInfo.parentSandboxBridge 用法

最近遇到一個狀況, AIR App 要載入放在 applicationDirectory 以外的 swf 檔。某些 swf 運作正常, 但少部份無法正常執行。後來在官網找到了解決方式: AIR security / Scripting between content in different domains

2012-08-26

Adobe AIR 快速儲存 JPEG 或 PNG 圖檔


Flash 以往將點陣圖資料轉換為 JPEG 或 PNG 格式都是透過 as3corlib 裡的 API, 當點陣圖資料較大時, 轉換的速度明顯變慢。好消息是現在可以使用原生的轉換功能, 速度快許多。

請先參考 Flash CS6 新增 AIR SDK , 將 AIR SDK 新增 3.3 以上。

Flash Player 11.3, AIR 3.3 之後的版本, 在 BitmapData 類別新增了 encode() 方法。分別搭配 JPEGEncoderOptions, JPEGXREncoderOptions, PNGEncoderOptions 設定就可以快速將陣圖資料轉存為 JPEG 或 PNG 檔。

SQL 語法片段小記

個人使用的 SQL 語法幾乎都是最基本的, 以下記錄幾個最近使用 ActionScript 時用到的片段:

1. 如果某筆記錄已經存在, 則更新該記錄
var sql_xml:XML = <s>
 UPDATE "{TABLE_NAME}"
 SET {type}='{path}'
 WHERE sid=(
  SELECT sid FROM "{TABLE_NAME}"
  WHERE "year"={year} AND "month"={month} 
  AND "date"={date} AND "page"={page}
 );
 </s>;
2. 如果某筆記錄不存在, 則新增記錄
var sql_xml:XML = <s>
 INSERT INTO "{TABLE_NAME}" (year, month, date, page, {type})
 SELECT {year}, {month}, {date}, {page}, '{path}'
 WHERE NOT EXISTS (
  SELECT * FROM "{TABLE_NAME}" 
  WHERE "year"={year} AND "month"={month}
  AND "date"={date} AND "page"={page}
 );
 </s>;
2. 兩張表 "content" 和 "content_usage" 是以 INNER JOIN 的方式查詢。在變更 "content_usage" 而需要 "content" 的條件時
var sql_xml:XML = <s>
 UPDATE "content_usage"
 SET "open"=0, "open_date"=NULL
 WHERE EXISTS (
  SELECT * FROM "content"
  WHERE "cid"="content_usage"."cid" AND "lv" &gt;= {level}
 );
 </s>;

2012-08-23

Adobe AIR 的 SQLite 之 DATETIME 類型

一般 SQLite 的工具 (例如: Firefox plugin - SQLite Manager) 對其 DATETIME 資料類型, 裡面還是使用 TEXT 的方式處理, 以字串表示。

AIR 的 SQLite 引擎則是使用浮點數的表示方式, 貼心的地方是在讀取時會是 Date 物件。但是, 若以 AIR 去讀 DATETIME 類型 "2012-08-23 18:18:18" 這樣的文字格式, 將會無法顯示正確的日期; 若 SQLite Manager 去讀取 AIR 寫入的 DATETIME 類型 將會顯示浮點數。相互之間無法讀取。

解決的方式:

  1. 不使用 SQLite Manager, 使用 Lita 之類 AIR 寫成的工具。
  2. 若和其它程式語言合作開發時, 第一種方式就不方便了。可以將日期欄位設定為 TEXT 而不要使用 DATETIME, 如此一來以字串來處理就可以了。

2012-08-14

Flash Player 11 開始支援原生的 JSON

Flash Player 11.0 / AIR 3.0 開始支援原生的 JSON

屬預設套件 (default package) 的 JSON 類別, 方法同 JavaScript 的用法, 靜態方法使用 stringify() 和 parse()。注意: 在此並不是用 encode() 和 decode()。

2012-08-10

Sublime Text 2 設定 ActionScript 3 開發環境

Sublime 預設的 ActionScript 是支援 2.0。AS2 個人幾乎沒在寫了,以下的步驟是改成 AS3 的開發環境:

先在 Sublime Text 2 上安裝 Package Control

利用 Package Control 安裝 ActionScript 3 plugin。

  • 在 Mac 上按 command + shift + p
  • 輸入 "install", 選擇 "Package Control: install package"
  • 然後選 ActionScript 3 安裝

點選 Preferences > Browse Packages..., 開啟檔案管理員。

將 ActionScript 目錄裡的檔案移除 (或變更名稱)。

將 ActionScript 3 目錄裡的檔案拷貝到 ActionScript 目錄。

在 ActionScript 目錄, "ActionScript 3.tmLanguage" 改名為 "ActionScript.tmLanguage"。

利用 Package Control 移除 ActionScript 3 plugin。

  • 在 Mac 上按 command + shift + p
  • 輸入 "install", 選擇 "Package Control: remove package"
  • 然後選 ActionScript 3 移除

最後,依據原有的 .sublime-snippet 檔格式,去新增自己的 snippet。




FB 留言