廚老伯開槍中

NSTableView double click 方法

OS X 下要設定 NSTableView 的 double click 現在簡單多了
直接連接 tableview 的 doubleAction 動作就可以了

Gem on Mac 設定方法

Gem 是個 ruby 套件管理

在 MAC 上使用時,因為會動到 Ruby 設定,而 Ruby 又是 Apple 版本,所以就會出現權限問題

如果你是 Ruby/ROR 開發者,可以考慮使用 Rbenv/RVM 建立自己的 ruby 版本,他們都提供建立獨立的ruby, 因此都不需要使用系統的 Ruby

如果你不打算那麼做而且有在使用 Homebrew,那你可以直接使用 brew install ruby

這樣 gem 在使用時,就會自己去抓 brew 的 ruby, 而不是使用 apple 的 ruby, 同時就閃過了 apple ruby 的權限問題

快速建置 APP 功能原型方案研究

app 原型有三種,wireframe (線稿), mockup (視覺稿), prototype (原型、雛形)
不懂的可以看看 http://blog.akanelee.me/posts/276909-beginners-of-prototype

因為長官希望找個讓 PM 方便設計原型,讓大家好討論的工具
所以就研究了一下目前市面上比較常見 (以 interface builder 為關鍵字搜尋時,會在前幾頁出現的方案)
以下是簡單的結果

RIB 研究

以前有個好東西是 jQuery Mobile UI builder, 不過不知道為何原版失蹤了,只有一堆衍生版本
也可能是被 http://www.jqmbuilder.com/ 買走了..

衍生版本
1 AppMint (chrome extenson)
https://chrome.google.com/webstore/detail/appmint-lite-html5jquery/imdkdmbnblpapcdidcofglgbjbgaegle
AppMint 鎖建立新頁面權限,必須付錢

  1. rib org (chrome 限定網頁) https://01.org/rib/online/ rib org 可以建立新頁面,但是頁面之間無法連結..

其他 prototype 方案
主要規格
可以建立簡單頁面草圖(放一些圖片、文件示意元件
頁面之間可以跳轉
最好能有自動返回按鈕設計
價格..起碼要有可以正常使用/測試以上功能的測試版
最好是有可以無限期使用的版本
次之是無限期、限制數量版本(例如免費只能建立一個專案)
再次是無限期、限縮功能
再次是限制時間的體驗版
一開始就要付費的不在此名單中..
測試方式
放一個文字框、放一個圖片
開一個新頁面,放一個文字框、放一個圖片
回到原始頁面,放一個按鈕指向新頁面
開始展示頁面間的跳轉功能

appery, tiggzy (web)
    http://appery.io/
        免費使用一個專案
        複雜的付費項目..
    這其實不是一個原型服務,而是一個 jqm 架站服務..
    appery 提供了 JQM, angular + bootstrap, angulat + ionic 的基本版型以及架站服務
    測試時間2分鐘
    非專業人員需要一段時間才能理解介面

codiqa(win/OS X)
    https://codiqa.com/
        7天體驗版
        $79 買斷
    還蠻順的小東西,應該是把 jqm ui builder 封裝起來賣的東西..
    測試時間一分鐘
    可匯出
    除了需要錢之外,沒啥問題 xd

EzoApp (web)
    https://ezoui.com/app/zh-tw/index.html
        好像沒有免費方案,可是我沒付錢卻可以用(思考...
        $5.9(1), $9.9(3), $14.9(10)
    台灣做的 jqm builer, 有親切的中文說明
    完成測試時間一分鐘

telerik
    https://platform.telerik.com
        七天免費
    看不懂用途...

jetstrap, chrome extension + site
    https://jetstrap.com/dash
        月費制, 免費帳號可開一個專案
        月費 $16(3), $31(10), $99(100)
    蠻順的東西, 一下子就做完基本測試
    免費版限制只有專案數量
    只有提供 bootstrap 框架, 製作網頁原型方便,但是對 app 而言不太順..
    完成測試時間三分鐘
    成果可以線上展示

Mockup Builder, chrome extension
    https://chrome.google.com/webstore/detail/mockup-builder/hfllfiimcgelfjkiedbcakabjekfldig?hl=zh-TW
        沒有查看慾望..
    功能強大, 不過操作時會有奇怪的卡卡的東茲東茲東茲...我是說微妙的操作不順感( on win7, chrome)
    而且用的是 SilverLight 技術.. orz
    感覺快掛了, 跳過

flairebuilder 4 (Win/OS X)
    http://www.flairbuilder.com/
        15天體驗版
        $99 買斷,有win/mac 版
    號稱很多大公司在使用的軟體,不過沒有 Mac app 憑證..
    win上面的..介面感覺有點樸素,好像是2009年代的 visio 風
    完成測試時間五分鐘
    主要是因為按鈕的事件與其他事件容易混淆,介面又太樸素,難以判別
    有人講解主要功能的話,大概10-15分鐘就可以操作簡單功能
    成果可打包輸出成 html

Pixate Studio, (Win/OS X)
    http://www.pixate.com/
        免費, 不過線上服務要錢
    這是一款交互應用原型設計工具,白話點就是讓設計師用比較視覺、動態方式來展現自己的設計創意中那些動態的部份而不只是用語言和靜態圖片來描述
    例如,將滑桿往右邊拉時,旁邊的圖片要一往無前、突破天際的貿然出現
    這工具就是讓設計師可以這句話轉成大家看得懂的動態實作
    不過上手需要很高的邏輯性,起碼需要接觸過前端動畫設計、摸過JS,了解事件邏輯的半前端才能快速上手
    此工具主要訴求為提供那些交互設計原型而非流程原型
    因此無法達成建立新頁面、建立可連結頁面按鈕、測試動作等需求
    可以打包輸出html

Axure, (Win/OS X)
    http://axure.userxper.com/feature/
        30天體驗版
        標準版 $9600NT, 專業版 $19500NT (只加了9900的佛心價)
    從國外下載版本會有亂碼..
    很容易上手,不過我不太懂專案架構中的 Home 到底是幹嘛的..
    完成測試時間 2 分鐘
    可以打包輸出成 html

justinmind, (Win/OS X)
    http://www.justinmind.com/
        註冊後可用 1 個月
        年費 $19*12, 月費 $29/month
        買斷則是一人 $495
    開啟慢...可能比 PS 還要慢..電腦沒有8G最好別用
    event 事件設定很友善(不過有點繁瑣)
    完成測試時間 5 分鐘 (2分鐘在等開啟 XD)
    可以打包輸出,可以搭配手機 app 測試

Hype3 (MAC)
    http://tumult.com/hype/pro/
        30天體驗版
        升級標準版 $49, 購買標準版 $99, 升級專業版 $49
    相關說明 http://blog.akanelee.me/posts/261813-hype3-prototype-basics-transitions
    這其實不是一個原型工具, 這是傾向與 pixate 同級的互動原型工具
    不過因為可以製作分頁,所以可以達成需求
    測試時間 5 分鐘,不過這是因為以前玩過一次..
    可以打包輸出

dev extreme
    http://js.devexpress.com/
        30天體驗版
        $249 網頁版,$299 app版,$499 兩者
    關鍵字廣告看來的



以下工具使用類似影像地圖方式製作,也就是說要用其他工具做好圖片放到裡面作為頁面底圖
然後在頁面上建立熱點(hotspot) 提供功能
也就是說,這些工具主要目的是提供頁面間的連結和跳轉,優點是費用相對便宜
缺點就是需要有前置作業,無法即時修改
mavrel (打mavelapp比較好搜尋) (web)
    https://marvelapp.com
        詳細說明https://marvelapp.com/plans/
        免費版可開啟無限專案,但不可下載,只可用線上連結展示
        付費後,可以打包成 zip/pdf 以及使用安卓專案 (應該是?)
    測試時間2分鐘,其實很快
    不過必須提供圖片這點,對新專案很不友善..
    正式使用時,必須要有建立草圖畫面的前置階段才行
    免費版不可匯出

zeplin (OS X)
    https://app.zeplin.io/
        月費, 免費可開一個專案
        $15(3), $25(8), $100(無限)
    其他人的介紹
        http://wcc723.github.io/tools/2015/04/09/zeplin-intro/
    ...這東西需要 ART 先用 sketch (OSX ) 的 zeplin 上傳圖片阿阿阿阿阿阿阿
    如果 ART 沒有用 mac, 或者沒有用 Sketch, 或是不會用 zeplin 的話, 可以跳過這選擇..
    不過用 mac 的設計師中很多都開始用 sketch 了 (推坑
    花了15分鐘搞定,發現 zeplin 應該是個交付設計的解決方案,而不是用來建立應用原型的解決方案 XDD

invision (web)
    http://www.invisionapp.com/
        免費, 一個專案
        $15(3), $25(無限), $100(無限, 5 個使用者), 企業帳戶(更多更好更新的功能等你來唷~)
    使用線上範例,測試時間5分鐘
    感覺介面蠻清楚的

以下為設計師意見
如果能交月費,最推invision
如果有用sketch,最推zeplin
justinmind & hype3 介面操作最像 flash
如果想免費,目前推mavrel
如果要從無到有,axure應該是最好上手的
入手難度最高 Pixate Studio & Hype3

個人意見(PG)
jetstrap 可以湊合著用..不過版面安排者需要對 bootstrap 架構有了解才行
有美術能力的話, invision 或 marvel 都可以
會前端,有mac的話,hype 應該是首選

如何更新已經停止更新但依然有 pull request 的 Pods?

如何更新已經停止更新但依然有 pull request 的 Pods?

有些 pod 套件因為曾經很受歡迎,所以有眾多使用者
即使原作者基於某些原因停止更新,依然會有人繼續更新,並發出 pull request
我剛好就碰到了這種情況..
以下是我的處理作法
以下假設 default branch 是 "master"
首先,如果你的 master 與原作者的 master head 不同,又怕原作者忽然回魂的話
為了以後的相容性,可以先進行以下步驟,讓自己 master 的 last commit 與原作者相同
之前有 fork 並在 mater 上有更新的話,先把 master 換個有意義的名字,例如 improve-performance
然後回到 branch 的開頭,重新建立 master branch,並 pull 原作者的 commit by rebase
這時,你應該會在自己的 master 上面看到與原作者相同的 commit

接下來,在 remote 中添加有發出 pull request 請求的 repo
一般來說,fork git 時不會修改名字,所以可以直接拿 github url 修改使用者名稱
然後就可以用 cherry pick 將自己與其他人的提交加入自己的 master 了

不過,這種作法下,應該就別送 pull request 給原作者了
萬一他回魂了,那他應該會收下之前的 pull request, 如果送了他又收了,就會有重複提交問題..
不過這樣的話,一開始嘗試與原作者同步的動作就顯得有點多餘..

以上作法可參考


[https://github.com/adison/iOS-StyledPageControl]
[https://github.com/adison/iOS-StyledPageControl/network]

如果這個 repo 與 pod 有關的話,可以在 Podfile 中使用指定 repo 方式處理
例如
pod 'StyledPageControl', :git => 'https://github.com/adison/iOS-StyledPageControl', :tag => '1.0.2'
要記得 pod 需要 tag 或 commit 做定位,所以要新增一個 tag
另外,StyledPageControl 沒有自帶 Podspec, 所以在這例子中,我還有另外添加 Podspec 檔案,在此說明一下

Xcode 無法匯出 ipa 檔案

症狀

這是一種病,得治(炸

當 Xcode 專案內的子專案設定不正確時,就算可以正確 archive,也會出現無法匯出問題
專業術語叫做 "App Name" does not contain a single-bundle application or contains multiple products. Please select another archive, or adjust your scheme to create a single-bundle application
同時會併發 Generic Xcode Archive 症狀

解法

如果你的環境是 Xcode7 + cocoapods 0.38-, 請先升級..

一般來說,這問題的起因在於子專案的設定不正確
最常見的是 "build setting" 中的 "Skip Install" 應該要設為 NO

其實 Pods 中引用的 lib 也有此設定,不過一般來說 cocoapods 都處理好了,通常並不會出錯
只有在改朝換代時會出現錯誤

如果是手動引用,懷疑有此問題,可參考以下網址的作法,找出可能有此設定問題的 lib
其實就是先 archive 並儲存,看哪些 framework 會散落在外,就知道哪些可能有問題

參考

iOS 自定框架簡記

在 xcode 建立 subproject

之前的文章不知道跑到哪去了..
只好重新寫一次

以下環境為 OSX 10.11, cocoapods 0.39.0
subproject 是指在 project 中的 project
通常是一些跨專案通用的內容

subproject 的開發可參考 [http://insert.io/framework-ios8-xcode6/]
幾個重點如下

  • 建立專案時,要選擇 cocoa touch framework
  • 有公開方法的標頭檔(.h)要設為公開 ("Build Phase" > "Headers")
  • 在母專案中,加入對子專案的引用

如果 subproject 有引入 cocoapods 的話

通常只需要以上兩個步驟
不過 XCode7 由於有許多改變,所以必須要搭配 cocoapods 0.39.0 才可以

微信支付交易狀態

微信(現在)的文件其實還不錯
可是沒有提到交易狀態..
以下是整理心得,萬一你發現我寫的是錯的,務必來信提醒..
以下心得來自 微信撤銷API

微信交易狀態由 [支付中] 起始,時間內使用者沒有付款,就會變成 [未支付]
有付款,但是付款失敗,就會變成 [付款失敗]
有付款且成功,就是 [付款成功]
也就是說,當超過交易時間後,交易狀態就會變成以上三者之一

接下來,當發出撤銷請求時
[未支付] > [已撤銷] > [已關閉]
[付款失敗] > [已撤銷] > [已關閉]
[付款成功] > [轉入退款]

docker on mac with proxy

這篇主要是 在 MAC 上安裝 Docker 的補充和一些小心得
docker 中文指南也不錯

首先,在 MAC/WIN 上基於許多原因,不能使用 native docker, 要使用 boot2docker
安裝完成後,啟動並進入 docker vm 後,就可以跟一般的 docker 一樣執行指令

on Win

WIN上安裝很簡單,不過碰到了幾個問題

boot2docker init 失敗 (error in run: Failed to initialize machine "boot2docker-vm": exit status1 )
刪除 VM 時沒有刪乾淨,所以再次初始化失敗了
到路徑 "user/VirtualBox VMs/" 下移除 boot2docker 資料夾

boot2docker up 失敗 (error in run: Failed to start machine "boot2docker-vm": exit status1 )
原因太多,使用 boot2docker up -v 可以看一下詳細資訊
網路上說的可能性包括無法使用git: git安裝失敗, 沒安裝 MySysGit, git 路徑錯誤, 版本不相容等等等..

然後我就放棄在 win 上使用了(逃

on MAC

先去安裝 boot2docker
然後記得設定相關參數
使用 boot2docker init 在 virtualbox 中建立vm
使用 boot2docker ssh 進入 docker 環境,開始用 docker 指令做事

另外,在 proxy 環境中,要記得隨時確認網路..

for git proxy
    git config --global http.proxy http://proxy.aa.com.tw:80
    git config --global https.proxy http://proxy.aa.com.tw:80
for bash proxy, ~/.bash_profile
    export HTTP_PROXY=http://proxy.aa.com.tw:80
    export HTTPS_PROXY=http://proxy.aa.com.tw:80
    export http_proxy=http://proxy.aa.com.tw:80
    export https_proxy=http://proxy.aa.com.tw:80

docker containter 中的 proxy 設定可參考這邊
基本上就是進入 boot2docker-VM 後,修改 init 參數,加入 HTTP_PROXY 等參數
然後依序重開 docker, boot2docker-VM 就可以了

elastic 自定結果欄位

elastic search 小技巧

{
  "...": "...",
  "size": 10,
  "fields": ["item_no", "price", "item_color"]
}
  1. size 設為 0 的話,不會出現 hits 內容

  2. 可以使用 fields 自定 hits 中的出現欄位

    不過這樣的結構與原本的並不太一樣
    會是如下面這樣的結構

    {
    hits: {
        total: 112871,
        max_score: 3.449047,
        hits: [
                        {
                            _index: "wcsdb",
                            _type: "product",
                            _id: "AU0R-V_QRW8pUAEVl_dO",
                            _score: 3.449047,
                            fields: {
                                item_color: [
                                    "黑 "
                                ],
                                item_no: [
                                    "050314700022 "
                                ],
                                price: [
                                    3490
                                ]
                            }
                    },...
            ]
        }
    }