Category技術相關

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 及教學資源:

用 NSUserDefaults 判斷 iOS app 使用者的第一次執行

很多時候我們必須在使用者第一次打開 app 時做一些事情,例如使用的導覽或是資料的處理,這篇介紹的方法則是和網站記錄 cookie 的方式類似 (第一次進到某些網站會有介紹導覽,之後因為有 cookie 存在瀏覽器記錄就不會再顯示)

 

可以在專案 appdelegate.m 中找到 「application:didFinishLaunchingWithOptions:」 方法,把下面的程式碼添加到裡面 (加在程式的起始位置):

if (![[NSUserDefaults standardUserDefaults] boolForKey:@"everLaunched"]) {
 	[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"everLaunched"]; 
	[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstLaunch"]; } 
else{ 	
        [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"firstLaunch"]; 
}

上面用 2 個 key:@”everLaunched” 和 @”firstLaunch” 來判斷使用者是否登錄過,在第一次啟動的時候 key @”everLaunched” 不會被賦值的,並且設置為 YES. @”firstLaunch” 被設置為 YES.

並在程式需要判斷的部分加入以下代碼:

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) {       
  // 這裡判斷是否第一次       
  UIAlertView * alert =[[UIAlertView alloc]
  initWithTitle:@"第一次" 
  message:@"進入App"
  delegate:self                                            
  cancelButtonTitle:@"我知道了" 
  otherButtonTitles:nil];       
  [alert show];       
  [alert release];          
}

第一段代碼運行過後 key @”firstLaunch” 將被設置為 NO。

 

參考資料

與 PHP dev 相關的 php.ini 設定

PHP shot tag

想要把原本 的寫法換成偷懶的方式使用 必需在 php.ini 做下面設定:

short_open_tag = On

PHP 錯誤訊息顯示

一般來說有下面幾種方法:

  • 直接印在網頁上
    當 php.ini 裡的 display_errors = on 時若 php 的程式有問題即會把錯誤訊息顯示在瀏覽器上,這對開發人員非常方便,但當網站對外開放時,一般都會把這個功能關閉,因為php若遇嚴重錯誤時不管你有沒有開啟這個功能它都會顯示錯誤訊息在瀏覽器上通常正式上線的 php 網站都會將這個功能關閉。
display_errors = on (若有錯誤會顯示在瀏覽器上)
display_errors = off (關閉錯誤提示訊息)
  • 透過 terminal 直接將預設位置的 error log 印出來
cat /var/log/apache2/error_log
  • PHP Console Chrome plugin
    這篇 php console 有詳細說明

上禮拜網站主機的兩個小事故

網站主機無預警換 IP

上禮拜的某天,在寫完一篇文章後,突然網站就開不了會自己轉到粉絲頁 (我在主機設定如果 404 error 的情況下會導到網站粉絲頁),然後後台也到不了了,都直接呈現 404 狀態,我嚇到以為被 hack 了,趕緊登後台看什麼狀況,網頁後台進得去可是 FTP 就不行了,這時我大概心理就有底應該換 IP 位址了,看了一下主機的詳細資料,果真換到一個新的 IP,在 domain name hosting 的 DNS manager 換上了新 ip 後,再用 WhatMyDNS 看全球的更新狀態,很滿意的地圖上都已經變成了新的 IP 位址,打上網址還是不行,於是又清掉了瀏覽器的 cache,還把當時實驗室的 router 重新開機,最後最後終於讓我連上了! (謝天謝地)

Godaddy 居然換 IP 也沒先通知,倒是在做這些 check 之前就先寫了封客服信去詢問,後來問題解決後,他才回說 DNS 要換上新的 IP..

資料表炸裂

第二個問題照推測應該是和上面是相關的 (時間點比上面的早大概一天),同樣是被嚇到的狀況,網站進去結果所有文章都消失了,進到 wp 後台也沒有任何一篇文章記錄 (這驚悚程度實在太大了),我真的想說完了完了被駭定了,趕緊到後台看資料庫狀態,從 phpmyadmin 去 query 文章內容那個資料表,回傳了下面的訊息: SHOW FULL FIELDS FROM `wp_example` ; MySQL 傳回了:

#145 – Table 『./accountID_exDB/wp_example’ is marked as crashed and should be repaired

根據網友的指示,原來只要修復表就可以了,在 phpadmin 內看這篇文章,或是用 terminal 去下下面指令:

mysqlcheck —all-databases —auto-repair -o -u root -p

資料表會爛掉根據網友的說法是因為 MyISAM 儲存引擎的緣故,「忽然斷電,關機使得硬碟的快取沒有寫回,那 MyISAM 一定會炸掉」,我想找個時間還是來把 MyISAM 換成 InnoDB (另外,要建立關聯資料表也必須是 InnoDB 格式)

© 2019 業餘人生日記

maintain by Chris ChenUp ↑