[android] menu中showAsAction失效的解決辨法

首先xml中
命名空間需設定 xmlns:app="http://schemas.android.com/apk/res-auto"
接著,在item中也需要修改
原本的 android:showAsAction:"always"
需要改成 app:showAsAction="always"
即可解決這個問題

[Android] Android studio 匯出apk時錯誤 Error:Execution failed for task ':app:transformClassesWithDexForRelease

使用android studio匯出apk時錯誤
Error:Execution failed for task ':app:transformClassesWithDexForRelease'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException

除了 有可能jar檔和dependencies 匯入的套件衝突之外,在defaultConfig加入 「multiDexEnabled true」 即可。

defaultConfig {
           applicationId "xxxxxx"           minSdkVersion 15           targetSdkVersion 25           versionCode 1           versionName "1.0"

           multiDexEnabled true}

[PHP][PDO] pdo errorinfo無錯誤回應的解決辨法

筆者在使用pdo連接mariaDB或mysql的時後,
總是發現用execute,不管query什麼指令,就算有錯誤,
pdo的errorinfo總是回傳erorr code:00000,
最後的解決辨法,就是使用try~catch了,
首先在建立pdo物件之後

$pdo = new PDO($dsn, $this->db_user, $this->db_password);

要進行設定

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

接著在使用prepare與execute時,要加上try~catch

try { 
     $sth = $this->dbh->prepare($sql);
     $queryresult = $sth->execute($value);
} catch (queryException $e) {
     /*
     *  請輸入失敗後要處理的程式碼
     */
}
這樣,就可以處理query失敗了。

若是用在Slim3,因為預設Exception都被Slim處理了,
最簡單的方法就是使用自訂Exception,
首先,pdo的設定要把$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);取消
或是改成預設

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

自己建立一個exception class

class queryException extends Exception {
  public function errorMessage() {
    //error message
    $errorMsg = $this->getMessage().' query err.';
    return $errorMsg;
  }

}

再建立一個執行throw的function
function err(){
       throw new queryException('query Exception');

}

在execute後加上or(就是or die()的用法)
try {   
      $queryresult = $pdo->execute($value) or err();
      if($queryresult){
           /*
           *  請輸入執行成功後要處理的程式碼
           */
      }else{  
           /*
           *  請輸入失敗後要處理的程式碼
           */
      }
                
} catch (queryException $e) {
      /*
      *  請輸入失敗後要處理的程式碼
      */

}



[PHP][Slim] slim中自訂Exception

筆者在使用slim的過程中,
發現Slim總是把預設的Exception都搶走了,
導至完全無法使用try catch的功能,
只要使用預設的Exception,就會導到slim預設的error畫面
有幾種方式解決

1.重設slim的設定


$app = new \Slim\App;
$container = $app->getContainer();
$container['errorHandler'] = function ($c) {
  return function ($request, $response, $exception) use ($c) {
    $data = [
      'code' => $exception->getCode(),
      'message' => $exception->getMessage(),
      'file' => $exception->getFile(),
      'line' => $exception->getLine(),
      'trace' => explode("\n", $exception->getTraceAsString()),
    ];

    return $c->get('response')->withStatus(500)
             ->withHeader('Content-Type', 'application/json')
             ->write(json_encode($data));
  };
};

這主要是將slim接到的exception訊息,轉成json。


2.自定Exception


首先建立一個新的class
class queryException extends Exception {
  public function errorMessage() {
    //error message
    $errorMsg = $this->getMessage().' query err.';
    return $errorMsg;
  }

}


接著在需要用到try~catch的地方
try {   

     throw new queryException('query Exception');
            
catch (queryException $e) {
/*
* 在此輸入要處理的程式碼
*/
}

不再限制您的多媒體創作:使用NDI快速傳輸、處理和編輯高品質的視訊和音訊。

NDI(Network Device Interface)是一種基於IP網絡的視訊和音訊傳輸協議,它可以讓您在同一網絡上的不同設備之間傳輸高品質的視訊和音訊。使用NDI,您可以將視訊和音訊直接傳輸到其他設備上,而不需要使用任何額外的硬體。 以下是使用NDI的步驟: 下載並安裝ND...