2017年4月7日 星期五

Apache 中設定SSL及申請使用免費的SSL教學註記



  1. 輸入網址:OOO.net

3. 選擇手動模式
 
     4. 將檔案下載並放置網站更目錄,點選驗證的URL確認讀取的到。



      5. 下載取得相關的SSL檔案

  1. 安裝Apache SSL模組
    yum install mod_ssl
  2. 修改Apache設定
Vim /etc/httpd/conf/httpd.conf
紅色為新增置Apache Server的設定,完成後請重啟服務。
NameVirtualHost *:443

<VirtualHost *:80>
  DocumentRoot /var/www/html/XXX/
  ServerName hrm.tibtrade.net
  ErrorLog logs/dummy-XXX.net-error_log
  CustomLog logs/dummy-XXX.net-access_log common
  RewriteEngine on
  RewriteCond %{SERVER_PORT} !^443$
  RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</VirtualHost>

<VirtualHost *:443>
   DocumentRoot "/var/www/html/XXX"
  ServerName hrm.tibtrade.net
  SSLEngine on
  SSLCertificateFile /etc/httpd/ssl/xxx.crt
  SSLCertificateKeyFile /etc/httpd/ssl/xxx.key
  SSLCACertificateFile /etc/httpd/ssl/ca-xxx.crt
</VirtualHost>

2017年3月24日 星期五

工商服務: 攤友APP 體驗分享

APP Store有個免費的APP,傳說中免費的最貴...恩恩...繼續看下去

安裝好APP後,一開啟會先要求簽到/打卡開工,看來是要求需要裝置是處於線上狀態才能使用,非離線可用軟件對於沒買吃到飽的偶來說小小雞肋。


快速的建立些商品訂定價格,這部分還挺簡單易用的算加分吧。
隱藏技:常駐在商品上拖曳可以改變排序。


統計報表與銷售紀錄來看,銷售單、銷售商品清單、餅圖...大致需要的都有了,沒啥好挑骨頭的。



後記: 隔一天後開啟APP,結果銷售紀錄清空嚕 =.= 這...只有一天好活的資料。後來看到如果個人資料註冊了email後,隔天會收到前一天的銷售報表EXCEL檔案,取得小小安慰一下。

評價:
很簡單直白的軟體,已CP值來算因為免費所以分母是 0 結果就是無限大。

可是使用中若是離線就無法結帳;
銷售單只存一天得在去處理每日報表檔才能核算周、月...等業績還是卡麻煩;
打卡? 要幹嘛呢?? 敬請期待就是了吧???


2017年3月23日 星期四

Asterisk check file exist example

之前透過 system() 來判斷,結果若單一資料夾內有多個符合條件的檔案則不回覆success造成誤判,其實system()的回覆狀態success也只是表示執行成功。

節錄:
FAILURE Could not execute the specified command
SUCCESS Specified command successfully executed
APPERROR Triggered for example when you try to delete a file but the file was not there.
NOTE - not documented, but can also return APPERROR
NOTE - I don't seem to be able to create a situation when FAILURE will be returned. 
※當然他在已知具體檔名的狀態下,確實能有判斷檔案是否存在的功用在。

之前的寫法...
exten => _99888,1,System(test -e /tmp/*87${EXTEN:3:3}*.call)
exten => _99888,n,NoOp(${SYSTEMSTATUS})
exten => _99888,n,GotoIf($["${SYSTEMSTATUS}" = "SUCCESS"]?start:end)

現在的寫法...

exten => _99888,1,Set(result=${SHELL(ls -rt /tmp/*87${EXTEN:2:3}*.call | head -1)})
exten => _99888,n,NoOp(${result})
exten => _99888,n,GotoIf($["${result}" = ""]?end:start)

若是有檔案存在result會存有檔案路徑,所以判斷是否為空值就可以了。

補充說明...
SYSTEM() 跟 SHELL()都有其方便的地方,看所需的功能用哪個比較不會出錯即可。

2017年2月14日 星期二

刪除硬碟裡的EFI分割區~~

在windows的磁碟管理中,會有些磁區無法被刪除的狀況,可用指令方式處理,步驟如下:

1. 窗窗鍵+R叫出命令提示字元,輸入diskpart執行

2. 輸入list disk列出所有硬碟

3. 輸入select disk N選擇目標硬碟

4. list partition 觀看該硬碟內的所有分割區

5. 確認是目標後輸入clean就會清除所有分割區了(不可逆~所以要確認後行事)。

6. 輸入exit後離開程式。

2017年1月5日 星期四

用資料用JSON編碼搭配POST方式的交換機制~備忘

與異質平台整合(如金流)碰上資料交遞上的方法,有時資料封裝得做JSON編碼不是直接參數名送出,因此寫個MEMO幫助記憶...

傳送時...

1. 首先是資料傳遞的FUNC ,$Url是目的地、$post就是交換的資料,若要改成GET則調整CURLOPT_CUSTOMREQUEST設定即可。timeout時間故意調長,因為碰上timeout錯誤時很殘念的。

function PostData($Url, $post){
 $ch = curl_init($Url);
 $headers = array(
   'Content-Length:'.strlen($post),
   'Content-type: application/json'
 );
 //print_r($headers);
 $options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => 1,
CURLOPT_CUSTOMREQUEST=>"POST", 
CURLOPT_POSTFIELDS=> $post,
CURLOPT_HTTPHEADER=> $headers,
CURLOPT_TIMEOUT=>500,
CURLOPT_CONNECTTIMEOUT=>5
 );
 curl_setopt_array($ch, $options);
 $result = curl_exec($ch);
 if(curl_errno($ch)!=0){
  trigger_error(curl_error($ch));
 }
 curl_close($ch);
 return $result;
}

2. 傳遞參數封裝,做成陣列即可...弄複雜些給個陣列包陣列的sample

$params_data = array( 
 'order_no' =>  $order_no,
 'amt' =>  $amt,
 'result_url' =>  $result_url
);

$order_data = array (
 'sender' => "rest",
 'ver' => "1.0.0",
 'tx_type' => 1,
 'params' => $params_data 
);

3. 開始傳遞
PostData($URL, json_encode($order_data));

接收時....

1. 首先...因為不知道傳回來的是啥變數名,只知道是個JSON串,所以通通一起收php://input是蠻方便的方式。
$post_data = file_get_contents("php://input");

2. 拆解JSON取得資料,原則上卡關較久的是array裡面的array資料讀取。
$j_result = json_decode($post_data);
$data = array(
   'order_no'=> $j_result->params->order_no,
   'sender'=> $j_result->sender,
 );