AS3 Class Enumeration 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 Amo Wu 11月 06, 2012 筆記筆記.. 一般在 AS3 要列舉 Object 的 properties 時,通常會用下面這種寫法: 不過在處理 VO (Value Object) 時則會出問題,因為它是 Class,後來在這篇文章找到解法: 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 留言
如何發送 redux-observable 的 catch error 至 Sentry Amo Wu 6月 24, 2017 我們團隊目前使用 Sentry 這個服務作 error tracking,JavaScript 或 React 的基本安裝方法在 官方文件 都可以找到,這裡就不贅述。 同時我們也有在使用 redux-observable 這個 RxJS middleware 來處理帶有副作用的 Redux action。 根據 redux-observable 這篇 Error Handling 文件的介紹,一般處理 async 錯誤的寫法大概會是: import { createAction } from 'redux-actions'; import { Observable } from 'rxjs/Observable'; const fetchUserEpic = action$ => action$.ofType(FETCH_USER) .mergeMap(action => Observable.fromPromise(fetch(`/api/users/${action.payload}`)) .map(response => createAction('FETCH_USER_FULFILLED')(response)) .catch(error => Observable.of(createAction('FETCH_USER_REJECTED')(error.message))) ); 但是因為這裡並非正規的錯誤拋出方式,導致 Sentry 無法攔截到。 所以根據 Sentry 的這篇 Rich Error Reports with Redux Middleware 文件介紹,我們需要另外為它寫一個 Redux middleware 來處理。 策略是利用 redux-actions 的 Flux Standard Action 特性,將錯誤用 JavaScript 的 Error object 封裝至 action payload: ... .catch(error => Observable.of(createAction('FETCH_USER_RE... 閱讀完整內容
Serverless! 使用 AWS 開發 Slack Slash Commands Amo Wu 12月 28, 2015 本文介紹如何使用 AWS Lambda & AWS API Gateway 搭建一個不需要伺服器的環境,提供 Slack Slash Commands 查詢豆瓣電影。 2016-01-24 Update: New – Slack Integration Blueprints for AWS Lambda 在 Slack 輸入 /movie 絕地救援,會顯示相關的電影資料。 這篇文章使用到的技術: Slack Slash Commands AWS Lambda AWS API Gateway 豆瓣電影 API 閱讀這篇文章需要具備什麼能力: Node.js 的基本能力 Amazon Web Services 的基本操作 接下來我會逐步講解這些東西: Slack Slash Commands 的運作機制 建立一個簡單的 AWS Lambda function 建立一個簡單的 AWS API Gateway 執行 Lambda function 使用 Lambda 呼叫豆瓣電影 API 測試 AWS API Gateway 將 API Gateway endpoint 加入至 Slack Slash Command Slack Slash Commands 的運作機制 當你在 Slack channel 輸入 /movie 權力的遊戲 ,Slack 會發出一個 content-type Header 設為 application/x-www-form-urlencoded 的 HTTP POST 請求,格式如下: token=YOUR_SLASH_COMMAND_TOKEN team_id=YOUR_TEAM_ID team_domain=YOUR_TEAM_DOMAIN channel_id=YOUR_CHANNEL_ID channel_name=YOUR_CHANNEL_NAME user_id=YOUR_USER_ID user_name=YOUR_USER_NAME command=/movie text=權力的遊戲 response_url=YOUR_HOOK_URL 然後 Slack 需要收到的 JSON 回應格式如下(詳見 Attachments): { ... 閱讀完整內容
Use getPixelRatio for HTML5 on retina Amo Wu 3月 04, 2012 如果用 HTML5 配 WebView 來作 App 的話, 在 iPhone4 跟一些 Android 手機會碰到的解析度問題 , iPhone4 的 Retina 是 960 x 640, 但是在 WebView 底下會以 480 x 320 來顯示, 所以須要利用到 javascript 的 getPixelRatio() 來作調整, /** * Return current device resolution pixel ratio, Default is 1. * @return {number} */ function getDevicePixelRatio() { if (window.devicePixelRatio === undefined) { return 1; } return window.devicePixelRatio; } 這裡寫一支 function 來取得裝置的 PixelRatio,一般通常都 return 1, 解析度較大的手機才會回傳其他數值,例如 iPhone4 則回傳 2, 最後寫一支 initDeviceViewport 的 function 來塞值給 viewport metadata tag, 例如這裡 iPhone4 會將 viewport 的 scale 全部縮放為 0.5 倍。 /** * Initialize device viewport meta tag to full screen size. * @author http://jsway.se/?p=150 */ function initDeviceViewport() { var scale = 1; var ratio = getDevicePixelRatio(); if (ratio !== 1) { scale = 1 / ratio; scale = scale.toFixed(1); } var viewport = document.getElementById("viewport"); ... 閱讀完整內容
留言
張貼留言