2012年11月1日 星期四

"share" swc for child.swf


起先我會用swc的原因 也是因為在開發每一項專案的時候

會寫出自己常常用的Library 以方便下一個專案使用

所以開始利用flash builder 或著 FD 外掛 ExportSWC 來製作swc

這兩個製作方式大不同 會相差了20K左右的大小 但都還可以用 (這個未來在研究吧)

http://milkmidi.blogspot.tw/2010/09/flash-part1.html

透過奶綠的介紹過後 其實很合邏輯 也會覺得這樣是對的 ...

其實我在他的sample裡面試驗過 也實際去寫過 都OK

但是....

目前有點問題了 ~~

不知道是不是flash cs6 的問題還是怎麼樣

既然要在main.swf去使用這個套件(Import and using this class)

child.swf 才抓得到 ... 這邊的錯誤解法 搞得頭好痛 只能try and error 去找出

若在main.swf裡面不使用TweenMax的話

即會出現ReferenceError: Error #1065: 變數 com.greensock::TweenMax 未定義。
 at Child_fla::MainTimeline/frame1()

就算使用 放上網站後 也還是會出現Reference Error ......

這種方式很沒sense 所以想了兩天後 真的會覺得以前flex的RSL機制的好用哩

因為這種機制又牽涉到安全性的東西在

使用這種機制下 Customer Event上的處理 也會出現Verify Error : 的問題

(畢竟Event本來就有它的限制 也可能不需要這樣子去分享她 )

跑去探討一下 http://www.senocular.com/flash/tutorials/contentdomains/  安全性的議題

我發現這種事情 能避即避 就像內文說的

If you haven't yet had to bother with the complexities around security domains or application domains, consider yourself lucky.

這樣很幸運吧 ! 或許我們都複雜化所有的套件 才搞到自己會這樣 !

很多事情真的要避開這種安全性的問題才會使用起來不綁手綁腳的

所以要重新去規劃自己Library 內文 ~ 而不是想到甚麼class 就寫進去

2012年8月19日 星期日

3 idiots 觀後感

這部片 一直不想看的原因

就是裡面的人的輪廓太面熟了

所以遲遲不看

最近緯來電視台在撥

就看了一下 先幹ㄍㄧㄠˊ一下 廣告實在太多勒 ~

看完之後

我對藍丘這位大師真的很佩服

假如我們在念書的時候也有這種夥伴 該有多好啊

幾個橋段真的很令人懷念

1.藍丘去找院長商討壓力的問題 然後院長抓他去教書 他在黑板上寫那兩個字的橋段

2.他跟他同伴在喝酒那段所說的話

3.他同伴去面試工作跟改變他老爸想法的那段

........................... 還有好多好多的橋段 ~~

目前腦袋裡只記得這一句話 :

Follow Excellence. Success will chase you.

Chase the excellence, success will follow you.

這句話希望在低潮的時候 都可以引為警惕
謝謝 這真是一部受益良多的片子 ~~

2012年6月20日 星期三

flash builder 4.6發佈ios方法

每次創建就會忘記一次 所以這次就自己做一下筆記 (對常常在使用的人看來 是很簡單的 對我就....)

0.先創建一個 Flex Mobile Project





















接下來就Next Next 到Finish吧(理論上應該沒很有難啦 就是你要做啥就選好 then next)

產生了一個Mobile的基本框架



基本上 Flash builder 會幫你產生這兩個mxml 

ViewNavigatorApplication :主要的載入testIOSHomeView.mxml的框架 (程式Entry Point)

firstView="views.testIOSHomeView" : 引入主要參數設定

在display的實作上是在testIOSHomeView.mxml裡面

所以我就加一個view 去辨識我要放在device裡面秀出來看


我加入一個button來測試

==================

一般我們在發佈的時候
可以利用flash builder 裡面提供的虛擬機(iphone)來實際去看自己所設計的界面如何
如下:


但是這個會有問題 可能在實機中跟虛擬機中顯示的會有些差距
所以我們在開發的過程中都會直接用實機去操作
但是在實機中去使用的話 需要兩個東西
















需要 Certificate Provisioning file 來讓程式發佈成

這兩個每次我都想得很複雜

但是常常使用過後 沒再用了 就會忘記怎麼去要這兩個東西勒

所以我才要做一下筆記 讓自己以後看自己的blog就會知道這兩個是要幹嘛的

===================================題外話
利用window 去發佈成.ipa 可以參考這個
http://ued.sina.com/?p=472
flash IDE 是跨平台的 ~ 要這個認證只是一個依據 ~ 其實沒有一定要mac才可以發佈.ipa啦
===================================

本文是參考http://www.adobe.com/devnet/air/articles/packaging-air-apps-ios.html 來實際去做的
所以內文只是稍微把簡體翻成繁體 再加上一點自己的敘述而已

你需要一個Apple IOS 開發認證(採用P12)和一個配置文件。每個開發認證和配置文件均有開發和發行兩種版本。

開發配置文件包含一组數據信息,它能够將開發人員和設備與經過認可的 iOS 開發團隊綁定在一起,並且能够啟用用於測試的設備。 它包含一组 iOS 開發認證、若干設備 ID 和一个應用程試 ID,並且它必需安裝於你希望運行你的應用程式的每個設備上。

另一方面,發行配置文件可能包含設備數據信息,它依據你是否希望為特定設備的特别發行或通過 Apple App Store 創建應用程式包。Apple 只接受採用 App Store 發行配置文件創建的應用程式,但採用 App Store 配置文件創建的應用程式不能直接安裝到設備上。

0. 到iOS Developer Program中註冊


這個我可能會省略,這是要發佈app的話,你一定要到https://developer.apple.com中去索取和設定應用程式的一些相關資料,所以你一定要申請會員(US 99)才可以進行之後步驟的動作。


1. 登入iOS配置用戶(Provisioning Portal)



iOS 配置用戶(Provisioning Portal)是你創建應用程式 ID、註冊你希望在開發階段部署應用程式的 iOS 設備、上傳簽證簽名請求、批准和下載開發人員憑證以及創建和下載配置文件的地方。 瀏覽到 Apple Developer 網站,然後點擊 Member Center link。 登入到 Member Center,然後點擊 iOS Provisioning Portal 下面的link。

2.點選到APP ID選單



你希望在 iOS 設備上部署的每個應用程式(或應用程式组)必需具有一個 App ID;它是由一個 Bundle Seed ID(也稱為App ID前綴)和一个 Bundle Identifier(也稱為App ID 後綴)组成。 轉到 iOS Provisioning Portal 的 App IDs 頁面,然後點擊 New App ID。 在 Manage 標籤上,輸入你的應用程式(或應用程式组)的描述,生成一個新的 Bundle Seed ID(在下拉選單中選取 Generate New),然後輸入一個 Bundle Identifier(例如,com.adobe.samples.*)。


App ID 是一個 Bundle Seed ID(一個生成的10字符的唯一字符串)和一個 Bundle Identifier 的组合。 推薦的實際方法是在 App ID 的 Bundle Identifier 部分使用一個反向域名式樣(reverse-domain name style)字符串。

你指定的 Bundle Identifier 必需與在 AIR application-descriptor 文件中设置的應用程式ID匹配。 例如,如果你為 samples.testIOS 指定一個 Bundle Identifier,則app.xml 文件的ID也要叫
samples.testIOS

3. 從itunes 獲取ios設備 id


你希望在上面運行或調適應用程式的設備必需在用於對應用程式打包的配置文件中指定;因此你必需在 iOS Provisioning Portal 中對這些設備進行註冊。 為了對設備進行註冊,你需要其唯一的設備ID。
將你的 iOS 設備連接到你的計算機並且打開 iTunes。在 iTunes中,在 Devices 部分選中你的設備,然後瀏覽到 Summary 標籤。 點擊 Serial Number 標籤以便顯示相應的 Identifier 字段和40字符的 UDID。按下 Command/Ctrl+C 將該 UDID 複製到你的剪貼簿上。

4.在 iOS Provisioning Portal 中註冊 iOS 設備。


一旦你擁有 iOS 設備 ID,你可以在 iOS Provisioning Portal 中對他們進行註冊。




返回到 iOS Provisioning Portal,然後瀏覽到 Devices 頁面。點擊 Add Device,輸入一個你以 iTunes 獲得的設備名稱和相應的設備 ID,然後點擊 Submit。

5.創建一個認證簽名請求(certificate signing request (CSR))文件

    下面你需要創建一個開發人員認證(development developer certificate)和一個用於特定開發人員認證、App ID和設備的開發配置文件(development provisioning profile)。 為了獲得一個開發人員認證,你需要在你的電腦中生成一個認證簽名請求(certificate signing request (CSR) )文件,將其上傳到 iOS Provisioning Portal,然後你自己或團隊領導需要批准這一請求。 僅管你可以創建一個能够同時用於 Mac 和 Windows系统電腦的 CSR,但 Mac 系统中的 CSR 更為簡單。 在 Mac OS 中生成一個 CSR ,你可以使用 Keychain Access program 生成一個CSR。
    • 打開位於 Applications > Utilities 中的 Keychain Access。
    • 以一個 Certificate Authority 中選 Keychain Access > Certificate Assistant > Request a Certificate。
    • 在 Certificate Assistant中,輸入你的名字和Email,將請求保存到硬碟中、在 Let me specify key pair information字段前打勾,然後點擊Continue。







    指定保存文件的位置和它的名稱,然後點擊 Save。 在 Key Pair Information 頁面上,選中具有2048 bit密鑰長度的 RSA 算法。 如果你没有將密鑰長度设置為 2048 bit,則 iOS Provisioning Portal 將拒絕相應的 CSR。尋找保存於你電腦中的認證請求文件(certificate request file)。

    6.在Mac OS中創建一個P12文件


    在 Mac系统中,你可以使用Keychain Access program 生成一個P12版本。

    *這兩個都要下載





    *你就會有這兩個檔案 就點下去就好了 (但是原文中講的很多 所以還是照著步驟走一下好勒




    • 打開Keychain Access 應用程式(在Applications/Utilities 文件夾中)。
    • 在 Finder 或 Keychain Acces 中,點擊 WWDR 認證文件 (AppleWWDRCA.cer),選取File > Import,然後導入 AppleWWDRCA.cer。
    • 在 Finder 或 Keychain Acces 中,點擊 develop_identity.cer 文件,選取 File > Import,然後導入 develop_identity.cer 文件。


    瀏覽到 Certificates,你應該看到列出的兩個憑證,展開相對又的開發人員憑證,你應該看到一個私有秘鑰,然後按右鍵就選擇匯出,選擇p12,及製作完成。

    7.使用 iOS Provisioning Portal 創建一個開發人員憑證(CER)文件。


    • 現在你可以上傳認證請求文件到 iOS Provisioning Portal 以便創建一个開發人員憑證(development developer certificate)。
    • 返回到 iOS Provisioning Portal,然後瀏覽到 Certificate > Development。 
    • 點擊 Request Certificate,然後點擊Browse按钮。
    • 選中你剛剛創建並且在你的PC中保存的 CSR 文件,然後點選Submit。 相對應的憑證將出現在Certificates頁面中,其狀態為等待發布(pending issuance)。



     8.创建一个 iOS 开发配置文件(development provisioning profile)

    在對你的應用程式進行打包之前,你完成使用 iOS Provisioning Portal 需要的最後一步是創建一個 iOS 開發配置文件(development provisioning profile)。 返回到 iOS Provisioning Portal,瀏覽到 Certificate > Provisioning,然後點擊New Profile。 輸入一個配置文件名稱,選中你的憑證,選中 App ID 和設備,然後點 Submit。
    等待直到配置文件的狀態從 Pending 改變為 Active(你必須刷新該頁面)。 通常這一個操作僅僅需要几秒钟。下载该配置文件就完工勒。

    2012年6月15日 星期五

    依賴注入之我說

    參考http://www.martinfowler.com/articles/injection.html

    當我看完了前面比較常提到的實踐IoC之中的一方法是依賴注入(Dependence Injection),我也比較清楚這一塊,這個pattern算是比較清楚易懂了,他有點像是簡單版的Strategy pattern,說上簡單,其實應該說比較不複雜,其實在程式碼裡面,我們都常常不經意都會用到這些觀念.

    我利用action script 3 去試試看Type - 2 的方式(這個方式比較正統點 因spring 很推薦使用)

    1.

    先設計你要用的interface
    我選定的OS來當例子

    package self.base 
    {
    
     public interface Ios
     {
      function operating():void;
     }
    }
    
    2. 實作Ios interface 的兩個類別 mac.as 和 window.as

    package self.abee
    {
     import self.base.Ios;
    
     public class mac implements Ios
     {
      public function mac()
      {
      }
    
      public function operating():void
      {
       trace("start mac");
      }
     }
    }
    
    
    package self.abee
    {
     import self.base.Ios;
    
     public class windows implements Ios
     {
      public function windows()
      {
      }
    
      public function operating():void
      {
       trace("start window");
      }
     }
    }
    
    
    3.設定一個給外部使用的介面去把依賴注入設定好
    package self
    {
     import self.base.Ios;
    
     public class OSObject
     {
      public var ios:Ios;
    
      public function set dependenceOS(ios:Ios):void
      {
       this.ios=ios;
      }
     }
    }
    
    
    4. test吧
    package
    {
     import flash.display.Sprite;
    
     import self.OSObject;
     import self.abee.mac;
     import self.abee.windows;
    
     public class testDI extends Sprite
     {
      public function testDI()
      {
       var obj:OSObject=new OSObject;
       obj.dependenceOS=new windows;
       obj.ios.operating();
    
      }
     }
    }
    
    有沒有很簡單 ~~
    這就是大家常常掛在嘴巴再說的 注入-依賴
    type - 1  , type -3  大同小異 (只是注入的點不一樣) 








    美化文章顯示的code

    每次換主題
    有可能會把我設定的syntaxhighlighter
    都給移除
    所以哩
    我把東西備分一下
    以備不時之需
    =========================================================================
    1.打開blog ->設計 ->html

    2.找尋</head>

    3.把下面這幾行貼到</head>之前 就可以顯示哩
    <link href='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/styles/shCore.css' rel='stylesheet' type='text/css'/>
    <link href='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/styles/shThemeRDark.css' rel='stylesheet' type='text/css'/>
    
    <!-- 設定需要載入的核心檔案 shCore.js -->
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/shCore.js' type='text/javascript'/>
    
    <!-- 設定需要載入的程式語言檔案  -->
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/shBrushCSharp.js' type='text/javascript'/>
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/shBrushJScript.js' type='text/javascript'/>
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/' type='text/javascript'/>
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/shBrushVb.js' type='text/javascript'/>
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/shBrushXml.js' type='text/javascript'/>
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/shBrushAS3.js' type='text/javascript'/>
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/shBrushXml.js' type='text/javascript'/>
    
    <!-- 設定啟用 highlighter   -->
    <script type='text/javascript'>
    SyntaxHighlighter.all()
    </script>
    

    2012年5月28日 星期一

    Proxy Pattern 使用 ~

    再來介紹Proxy Pattern :

    我想把控制或著是視覺性類別和資料之間的東西切開一點,第一個就會想到應該是要在他們之間加一個中間控制class,就是很像這個Proxy pattern原理,需求物件跟執行物件可以無任何關連,用代理者物件做為中介.

    稍微解釋一下另一種解釋方法(也很合理)
    物件在要被初始化的時候(一般的寫法,一開始就會在主架構初始化下把所有資料物件等等預設物件都先實體化,這樣有點集中式壓效能的感覺),有可能一推東西都需要去下載,也比較花時間,我希望用到的時候再去下載就好了,這樣不僅可以加速整個系統的初始化效能,也不至於下載過久,這也是Proxy Pattern的另一種意義.



    實作要領:

    1.Proxy與RealSubject都實作同一個介面(具有相同方法)

    2.Proxy會參考RealSubject(但不new出來),Proxy所實作的方法都是透過這個變數去執行RealSubject所實作的方法

    3.Client只需要對Proxy進行操作即可

    GIT 使用心得

    沒辦法 很多東西我都要自己來用
    我一直覺得這個Git 是一個蠻夯的東西
    所以我決定要來玩玩

    我目前用的電腦是win 7
    所以我就去官方下載了
    我是使用msysgit 的版本
     (原意就是在windows理會跳出命令列 使用git xxxx等等的來控制版本 原因之一 回家後我還是在使用linux和macos 所以裝這個版本幾乎通吃)

    也可以使用TortoiseGit (傳統的ui控制介面來達到版本控制的方式)

    ======================================================================

    首先我們要知道GIT是甚麼?

    Git就是一套版本控制軟體,類似一個SVN的中心式版本控制,git是分散式版本控制,幾乎很多事情都在本機端處理.舉例來說,我在無網路的狀態下做commit,未來有需要做merge的時候,在跟master做merge的動作就好了.

    每個開發者都有自己的repository(Repo:倉庫)
    只要安裝完上述的工作後,你點一個空的資料夾,就會出現兩個選項,bash(命令列)和gui,bash就是命令列操作模式,gui是圖形操作介面.

    簡單的使用介紹:(win7)

    一般我們會開一個資料夾.點選右鍵,選擇Git Bash Here,就會跳出命令視窗,你所在的資料夾位置就是在你點擊右鍵,開啟命令視窗的資料夾裡面.一般要使git變數,就要打git init,會在working directory下建立.git目錄,裡面放的是git repository的檔案,有了這些檔案,你才可以在這個working directory裡做git的操作。

    @@@以下是比較常用的git方式

    $git add . (add *)
            當你新增了一項檔案,想要commit上去,新手常犯的錯誤,每次都會跳出Untrack files,原因是因為你沒有去做add這個指令列.意思讓檔案們進入所謂的staged狀態,才能接著把它們commit進Repo中.

    $git add 主檔名.副檔名
            個別的檔案加入staged.

    $git reset 主檔名.副檔名
            有些檔案你不想要再讓它受到版本控制了,也就是要把它unstage.

    $git diff
            檢查版本裡檔案內容的差異.(文字檔就有很明確的比對)

    $git commit, git commit -a (automatically in one step) :
            跟svn意思相同建議還是要註解,第一行標題,第二行內容

    $git status
            知道目前Repo中的檔案們到底是什麼狀況,到底誰要add,誰要commit.

    $git log
            檢視一下這個Repo之前commit的歷史記錄.

    $git checkout xxxx (xxxx版號前四碼) 或著switch到分支版本xxxx
             此checkout並不是把專案抓下來的指令,一般常使用svn的人會誤解其意.之後pull clone fetch這些指令才是把專案抓下來的方法.


    $git clone url [mast]:
            會把遠端的repo整個專案抓下來,放在目前路徑下的新目錄中.(所以不需要先把新目錄建立成Repo,就可以整包抓下來,隨包附上.git目錄).

    $git pull url [mast]:
            會把遠端的repo整個專案抓下來,跟你目前所在的Repo及所用的Branch作合併(Merge),此指令等同Fetch+Merge.

    $git fetch url [mast]:
            會把遠端的repo整個專案抓下來,但不跟你目前所用的branch合併,而是放在本地中的另一個Brance(remoteBranch).


    $git remote add origin url
            新增 url 的識別子,以後就可以直接在url處輸入origin(你所設定的編號).

    $git init --bare
           這個目錄不會有.git目錄,而是把原先.git目錄中的東西都放進來,而且你日後在這個目錄中不會看到你的程式檔案.比較常用於git server,到時你只要指定這個專案裡面的位置即可pull出來專案.

    目前是把git server架在dropbox上,做一個自行備分的系統,也比較有隱密性的效果.
    一般還有就是把資料備份在github上,免費版是會公開給大家看其內容的,所以選擇上因人而異囉.教學
    要不然就是自己架git server來用.