跳到主要內容

發表文章

Node.js & Firebase Functions:使用NodeMailer透過Gmail寄信

安裝套件:
npm install --save nodemailer

程式範例如下,利用自己的Gmail來寄信

var nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport({
 service: 'gmail',
 auth: {
        user: 'myemail@gmail.com', //自己的Gmail Address
        pass: 'password'
    }
});

const mailOptions = {
  from: 'sender@email.com', //寄件者
  to: 'receivers@email.com', //收件者
  subject: '測試', //信件主旨
  html: '<p>Hello,the world</p>'  //信件內容
};

transporter.sendMail(mailOptions,(error, info) => {
      if (error) {
        console.log(error);
      } else {
console.log(info.response);
      }
});

因為我有啟用Gmail的兩階段認證,所以測試時出現密碼錯誤,需要特殊的密碼。


解決的方式是登入Google,在「登入和安全性」的頁面中選取「應用程式密碼」


在接下來的步驟中,應用程式選擇「郵件」,並在選取裝置中選擇「其他(自訂名稱)


輸入名稱後按下「產生」,會產生一組特殊的密碼,只要將這組密碼取代自己的Gmail密碼,
程式就可以不用經過兩階段認證而寄出信。

這組特殊的密碼僅供應用程式使用,所以原本的密碼及兩階段認證並不受影響。

Notepad++替換每行的行首行尾

因為有一串很長的SQL要轉成字串,所以需要在每行的首尾加上特殊符號如下圖:


按下Ctrl+H開啟取代視窗,在搜尋的欄位中輸入「^」表示行首;「$」表示行尾,
並將搜尋模式改為規則運算式,再按下取代即可修改每行的首尾,如下圖:




Solaris 批次更改檔名Script

因為剛好有需要,所以試著寫了一個簡易的Script來批次更改檔案名稱。

如下我想把檔名CK開頭的tmp檔全部改成FK:

#!/bin/sh
for old_name in CK*.tmp
do
echo $old_name | sed s/CK/FK/g >tmp.log
new_name=`tail -1 tmp.log`
cp $old_name new_name/$new_name
done



Google Blogger。自訂網域啟用HTTPS

Gooogle Blogger終於可以在自訂網域上使用HTTPS了,以往Blogger只允許自己的網域啟用HTTPS,可是我就是想用自己的網域名稱,如今終於開放自訂網域的HTTPS,啟用HTTPS後,安全性就更上一層樓了。

在「設定」-->「基本」頁面中,找到「HTTPS」,並將選項改為「是」
「HTTPS」重新導向我也把它改為「是」,這個選項的作用是無論使用者以HTTP或HTTPS連到我的網站,一律會以HTTPS的方式呈現,也就是說如果選擇「否」,則使用者以HTTP連線時,我的網站也會以HTTP的方式來回應,而不會以HTTPS來回應


設定完成後,等待一小段時間就系統完成設定後就可以了,當然之前在搜尋引擎內的HTTP網頁還是可以連接,不會失效

EBS。停用Form Personalize

開發程式時,因為有時候會遇到客製程式只能讓限定的使用者使用,而擁有相同Responsibility的其他使用者不能使用,此時可以利用Custom Personalize來達成。

開啟客製程式後,再開啟 Personalize



下面是我的 Personalize 設定,因為我指定了自己的帳號TEST001,
但是卻強制執行DO_KEY => EXIT_FORM
所以這支客製程式我就無法使用了,而且每次一開這支程式就會自動關掉。



此時只要先將 Personalize停用,就可以開啟這支客製程式,再修改Personalize






EBS。無法取消Request,error:Could not lock request

今天的RPM Remote Print Manager突然卡住,把Windows重開後恢復正常,但是EBS上的Request卻發生問題。

手動取消Request時出現下圖的錯誤:Could not lock request


無法取消就只能執行SQL來取消Request,因為該Request的Session已經完成,於是執行下列的SQL來修改狀態:
update  fnd_concurrent_requests set phase_code='C',status_code='X' where request_id in (186153,186133);

等了三分多鐘還沒有完成,只updtae兩筆資料不應該會等這麼久,於是再開另一個Toad並執行下列檢查Lock的SQL:
select distinct vs.sid,vs.serial#,            vs.username,vs.status,vs.osuser,vs.process,vs.machine,vs.terminal,vs.program,vs.sql_address,
vs.module, vs.logon_time,vs.blocking_session,vl.block as "Lock BLOCK",vq.sql_text
    from v$session vs,v$lock vl ,v$sql vq
    where vl.sid=vs.sid
   and vq.sql_id=vs.sql_id
    and vs.blocking_session in (select sid from v$lock where block>0)   
union
select distinct vs.sid,vs.serial#,vs.username,vs.status,vs.osuser,
vs.process,vs.machine,vs.terminal,vs.program,vs.sql_address,vs.module,
            vs.logon_time,vs.blocking_session,
           vl.block as "Lock BLOCK",
      …

設定Github Webhook來自動更新Openshift v3 程式

今天測試紅帽(Red Hat)新一代PaaS公共雲平臺OpenShift V3, 設定完Node.js的服務後,又在GitHub Fork出Node.js的測試程式碼,接著依照文件上設定Webhook來讓GitHub可以自動更新我在OpenShift上的程式碼。

在嘗試一些錯誤之後,現在記錄一下自己成功的步驟:

在Openshift上我的專案中選擇Builds,再點選「Configuration」,按下「GitHub Webhook URL」旁的ICON圖示來複製URL或直接複製URL。



接著到GitHub的repository上選擇「Settings」



進入Setting之後,在左邊選擇「Webhooks」,在「Payload URL」處把上述複製的URL貼上,並且在「Content type」處選擇「application/json」


儲存後,可以回到Setting頁,再點一下「Webhooks」,可以發現已經新建了一個Webhook,如下圖,有綠色的勾勾表示成功,之後只要在GitHub有更新程式時,就會自動更新到Openshift。