Category技術相關

讓使用者免登入直接透過 Facebook API 發佈訊息到粉絲頁上

我是參考了這篇的做法,不用透過 PHP SDK 就可以做到這件事,以下為過程的幾個步驟:

  1. 拿到授權與 page token:到 Graph API Explorer 裡選擇你要使用的 app,然後點選 get access token 按鈕,接著點 “Extended Permissions” 並把 manage_pages 選項勾選起來,送出後就會到一組暫時性的 token (about 1hr)
  2. 將這組 token 用在下面的 php script(前提是 server 要支援 curl)

開頭先把 token 和要發到哪個 page id 設定好

<?php
$page_access_token = 'XXXXXXX';
$page_id = 'YYYYYYYY';

接著是要發的東西,可參考 API Doc

$data['picture'] = "http://www.example.com/image.jpg";
$data['link'] = "http://www.example.com/";
$data['message'] = "Your message";
$data['caption'] = "Caption";
$data['description'] = "Description";

接著將一開始的設定包成 array

$data['access_token'] = $page_access_token;
$post_url = 'https://graph.facebook.com/'.$page_id.'/feed';

最後一個步驟,用 curl post 訊息到塗鴉牆上

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($ch);
curl_close($ch);
?>

至於 token 過期的問題,有網友提到一個解法,但我沒試成功,後來是我自己發現,只要把 app 設定成 clint 端的原生形式,拿到的 token 就會變成長期囉(兩個月)

後來我也發現原來 FB 也有 有Access Token Debugger,還蠻好用的!

[問題記錄] iOS 引入外部 framework link 失敗的問題

因為在 iOS 上有 wav to flac 轉檔的需求,所以在網絡上找到這個 framework / wav_to_flac,按照他文件的步驟 build 完後,將產生的 FLACiOS.framework 丟到需要使用的 project 中,但都出現下面這找不到 framework 的 error

clang: error: linker command failed with exit code 1 (use -v to see invocation)

找了一下會出現這 error 有可能是 xcode5 bug 造成的,因此用了下面這設定方式修改了「Library Search Paths」的路徑

(P.S. 中間刪刪減減修改很多次,除了每次 build 前都要 clean 一下,另外多出來的 framework path 也要記得去清掉,build setting  裡的 Library Search Paths 和 Framework Search Paths)


試過很久後,還是不 work,就上網去問了,其中有網友回報他 build (include ogg version) 是成功的(與我 build no ogg 版本不同),以下是他的步驟:

  1. git clone https://github.com/jhurt/FLACiOS/tree/no-ogg
  2. project 加入 build 好的 ogg.framework
  3. 把 FLACiOS.framework 複製到 project 下的 Library
  4. 在 Build Settings 的 Framework Search Paths 增加${SRCROOT}/Library
  5. 在 Build Phases 的 Link Binary With Libraries 加入 FLACiOS.framework (第四步驟可以省略,但在別的機器跑就要加進去~ 因為加 framework 是寫絕對路徑~)

看了他的 project 設定與我的並沒有不同,差異只在於 build framwork 的版本不同,拉了他的 framework (include ogg) 到我的 project 就成功了,過陣子有時間再 recheck 看看到底真正問題是什麼,目前就先用他 build 出來的 framework 來用了 😛

建立免費的靜態 Github Page

很久之前有架過 octopress 臨時要丟上去忘了怎麼丟,查看以下三份文件大致上就搞定:

  1. 建立自己的 GitHub Project Pages
  2. 中間遇到 ssh key 不對的問題,看這解決產生新 ssh key
  3. 不能 push 新 project? 看《Why can’t I push to this bare repository?》解決

 

塞入外部網站的 cookie

我不知道會不會有人搜到這個,不過當初因為導購的機制想了一些小手法想把外部網站 cookie 塞到使用者的瀏覽器

var cookieName = 'test'; 
var cookieValue = '123'; 
var myDate = new Date(); 
myDate.setMonth(myDate.getMonth() + 12); 
document.cookie = cookieName +"=" + ookieValue + ";expires=" + myDate + ";domain=.example.com;path=/";

原本想透過 js 去塞,不過似乎沒辦法更改 domain 的部分(寫在個網域下,只會強制顯示真正的網域而不會被所設的值覆蓋)

後來我很天才的在洗澡時想到了一個簡單的方法(雖然原本上面的想法我覺得已經夠天才了,長這麼大才發現天才是沒有極限的,窩哈哈!),輕易地完成原本想達成的事,容我賣個關子試驗一段時間看看成效如何(轉換率不高也沒有用)

指定文字讓 siri 說出來,並且生成音訊檔案

不少人都知道 iOS7 之後,蘋果開放了 Siri 的 API 可以讓開發者使用它的 TTS 功能,但是如果要在自己的 Mac 上用 Siri 的聲音生成音訊檔該怎麼做呢?

先到「系統與偏好設定(System Preferences)」 > 「聽寫與語音(Voice)」

image

點到「文字到語音(Text to Speech)」的分頁後,打開「系統聲音」的下拉選單,會看到一個「自定(Customize)的選項,接著找「Samantha」的聲音(對!那就是 Siri 的聲音)點擊後就可以下載了!

image

下載完成後,便可以將系統預設聲音切換到「Samantha」

怎麼讓系統說出想要的文字呢?

打開終端機(Applications > Utilities > Terminal.)輸入:

say "Hello World."

這樣就可以用預設的系統聲音生成你想要的語音了!

還有以下其他幾種用法:

念出長篇的文字(.rtf / .txt)

say -f "textfile.txt"

輸出音訊檔(在當下路徑,生成 .aiff)

say -o "outputfile.aiff" "Hello World."

指定念的人(必須電腦裡有的)

say -v Alex "Hello World."

參考資料:How to Record Text to Speech Using Terminal

iOS7 UI 元素的調整

iOS7 有一些 UI 的部分需要針對不同 OS 版本去做調整,最近想說來改改之前的程式碼,因此順便解決判斷螢幕大後對元素配置後,view 的底部不能點擊的問題:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { 
self.window.bounds = CGRectMake(0.0f,-40.0f,[[UIScreen mainScreen] bounds].size.width ,[[UIScreen mainScreen] bounds].size.height);     
//self.window.bounds = [[UIScreen mainScreen] bounds]; 
}

舊版 iWork/iLife 免費直接更新到 2013 年版

這幾天蘋果用戶除了免費換作業系統外,蘋果也將 iLife(iMovie, iPhoto, Garageband)和 iWork(Pages, Keynote, Numbers) 等六套軟體做大幅度的更新,不過依官方說法似乎只有新機用戶才能「免費下載」,但昨天就有傳出一個做法,可以讓免費用戶做更新的動作,以下三個步驟:

1. 安裝零售版的舊版 iWork / iLife,甚至『試用版』也可以

首要條件,你的電腦裡要有舊版 iWork / iLife(試用版也可),以及更新到最新 OS X Mavericks 作業系統!(沒有的請先安裝後再接續下面步驟,iWork09 試用版下載

2. 將 Mac 語系切成英文,並且重新開機

在 system preference 裡打開「語言與地區」,將偏好語言設定為英文(拖曳上去)

3. 開啟 AppStore 會發現 iWork / iLife 都可以『更新』最新版了

iLife 部分筆者已經先行更新,所以未在上圖出現!

以上。

讓 Mac 可以寫入 NTFS 磁區的方法

Mac OS X 無法完全地存取 NTFS 格式,還要藉助一些軟件來能達到完全存取 NTFS 格式,Mac 在 NTFS 的硬碟只能做讀取,而不能做寫入的動作,因此要解決這問題有以下幾種方法:

將外接硬碟改成 FAT32 格式

如果有需要用到雙系統不同電腦,這或許是不錯的方法,不過有單檔不能超過 4G 的限制

安裝 NTFS-3G 這套軟件

需下載 mac fuse / NTFS-3G for mac / NTFS-3G 修正檔等三個檔案,這裡有中文解說原文的下載來源

安裝 Paragon NTFS 這套軟件

這是套付費軟件,分別下載 core_keygen.dmg (序號產生器) / ntfsmac_trial.dmg (試用版本),安裝完重新開機後在 Launchpad 就會出現這兩個圖示,點擊註冊器就可以幫你直接變成完整版囉!

 

 

可以看到如此一來就可以做寫入的動作了!

延伸閱讀:Enable writing to NTFS hard drives on Mac OS X

[遠端] Mac to Mac 的 VNC 遠端控制(螢幕共享)

要遠端通常只要設好 VNC server 就可以從其他電腦透過 VNC client 來做遠端連結(無論任何作業系統之間),昨天才知道原來 mac OS 本身就有內建螢幕共享的功能:

System Preferences -> Sharing -> Screen Sharing 打勾

只要把螢幕共享選項勾起,就可以透過其他的 mac 來做連結,如果在區網內從 finder 裡的邊欄就可以找到共享的機器,或透過 Safari 瀏覽器,在網址列輸入「VNC://XXX.XXX.XXX.XXX」即可連線

 

延伸閱讀:

  1. [遠端] windows 與 mac xos 的相互連結
  2. How to use native Screen Sharing in Mac OS X 10.7 Lion

Speech to Text for iOS

找了一下 speech to text 可以用的 SDK for iOS 以下幾種方案:

  • NDEV Mobile (有免費方案,不過似乎不支援離線,客戶清單中有 wallmart,支援不少語言
  • iSpeech (看起來有很完整的開發整方案,支援各種平台)
  • OpenEars (stackoverflow 上比較多人推,似乎是最成熟穩定)
  • 用 Google 非公開的 API 偷偷幹,他會吐回 JSON speech2text 的資料,不過 Google 只能讀得懂 FLAC 格式檔案,所以必須在自己 server 端轉換,或是在 iPhone 裡直接轉換 (libFLAC for iOS),再丟到 Google server.

另外,Mac 的 SDK 似乎有可以用的方法 NSSpeechRecognizer,也可以看看這個偵測聲音的範例

 

底下為網友推薦聲音處理的一些 library 及教學資源:

© 2019 業餘人生日記

maintain by Chris ChenUp ↑