Access-Control-Allow-Origin error sending a jQuery

f you have this error trying to consume a service that you can't add the header Access-Control-Allow-Origin * in that application, but you can put in front of the server a reverse proxy, the error can avoided with a header rewrite.
Assuming the application is running on the port 8080 (public domain at www.mydomain.com), and you put the reverse proxy in the same host at port 80, this is the configuration for Nginx reverse proxy:
server {
    listen      80;
    server_name www.mydomain.com;
    access_log  /var/log/nginx/www.mydomain.com.access.log;
    error_log   /var/log/nginx/www.mydomain.com.error.log;

    location / {
        proxy_pass   http://127.0.0.1:8080;
        add_header   Access-Control-Allow-Origin *;
        add_header   Access-Control-Allow-Origin 'http://domain.com';

    }   
}

不分享會對不起自己的 - tawk線上即時客服系統

不分享會對不起自己的 - tawk線上即時客服系統

"線上即時客服系統"在現在的網站上是一常見的功能,英文字詞通常是用live help、live chat或live support。它提供了網站訪客,能夠在網站上當有需要問問題,或是需要馬上尋求協助時,用這個即時對談的功能,與在線上的客服人員用文字訊息對談,或甚至可以用語音交談。
現在也有很多網站使用其他外部應用程式工具,例如Line、QQ或facebook messager之類的即時交談工具來作這件事情,不過這些都需要要求網站訪客有安裝這些應用程式才能使用。今天要要介紹的tawk是不需要額外的工具的。
tawk的特性有以下幾個:
  • 一切"免費"。目前沒有額外的付費方案,沒有分什麼付費版或免費版,也沒有廣告。
  • 可用於所有網站。它也可以用在一般的網頁上,Joomla!系統其他系統,或是只用單純的HTML網頁也行。
  • 有中文介面。中文也很重要,很多這類的系統可能不一定有中文介面。
  • 全功能。這套tawk有幾乎應該有的線上客服功能。它也有提供iphone和android的手機應用程式(給客服人員用的)

圖文介紹

註:下面的說明中,我把使用的人分成兩端,一種我們叫"客服人員",也就這個網站的負責接待的人員,也就是負責回答問題的人。另一種叫"客戶",他們是來到這個網站的訪客,想要問問題或尋求協助的人。
它的網站是http://www.tawk.to。"tawk"應該是英文"talk"的唸法與改寫,標誌是一支鸚鵡的樣子。雖然網站沒有中文說明,不過註冊完進管理區後可以在右上角選擇"官話",就可以改成中文介面,這是它的官網畫面:


下面這是它的管理控制台畫面:

下面這是監控畫面,可以看到目前在你網站上的人,他們使用的ip、瀏覽器、正在看什麼頁面之類的資訊。客服人員也可以從這裡直接主動要和客戶對談,這種功能叫"主動交談"(push to talk):


下面這個所有談天訊息的記錄,它會忠實的記錄在這裡面:


下圖這是一開始需要設定,那個加入到你自己網站訊息提示工具的樣式,可以調整的設定很多,指示的圖片也可以用它裡面的圖庫或上傳自己的,下圖是客製化的工具:
下圖展示了,當客戶正在輸入訊息時,客服人員可以看得到"正在輸入"的字詞。這樣加快客服人員回應時間。


以下這兩個圖片是在網站上的使用展示,位置可以依你的設定來擺放,這裡是放在右下角,另一張圖片是正在交談的畫面。另一個要說明的是,如果客服人員離線時,就會變成留下訊息的表單。

如何安裝

大概的流程如下:
  1. 申請tawk的帳號,註冊時會需要填對你的email住址,註冊後它會寄送一封"Tawk.to account activation"的信,點按裡面的連結來啟用你的帳號。
  2. 到tawk.to網站上,用右上角的"login"頁面到登入畫面,輸入你的帳號密碼即可登入到管理區中。管理區的右上角有可以選擇語言的下拉選單,選擇"官話"可切換為中文的介面。
  3. 到上方選單的"網站&頁面" > "管理網站"中(英文是Sites & Pages > Manage Sites),可以新增你要放置tawk的網站位置等等的資訊,它最後可以產生一個api程式碼(javascript程式碼),把它加到你的網頁中就可以開始使用了。
  4. 如果你的網站有使用特定的系統,例如Joomla!、Wordpress、Drupal、OpenCart等等,你也可以下載相關的擴充或外掛,方便你進行設定,網址在:

在linux(centos) 安裝 Subversion 自建 SVN Server



Centos 7.2
前置過程需先安裝 httpd ( apache ) server

yum install httpd
systemctl start httpd
 iptables -I INPUT -p tcp --dport 80 -j ACCEPT
chkconfig httpd on

參考
https://wiki.centos.org/zh-tw/HowTos/Subversion

 安裝


[root@lucifer ~]# yum install mod_dav_svn subversion

4.1. Apache

在你進一步學習之先,你需要確定 Apache 已經被設置好。我假設你在做一個全新的安裝,因此如果你的 Apache 已經在運作中……請小心你所做的改動。我亦會解釋如何設置基本的密碼保護。然而,假若你想容許任何人存取版本庫,你可輕易地省略這部份。
你首先要做的事情就是開啟 /etc/httpd/conf/httpd.conf,而且最低限度更改 ServerName 這個指引。如果你需要協助或擁有更複雜的設定,請參詳 Apache 的文件。
[root@lucifer ~] vim /etc/httpd/conf/httpd.conf —— 作所需修改並存檔
[root@lucifer ~] service httpd start
[root@lucifer ~] chkconfig httpd on

在網絡上瀏覽你的機器,http://yourmachine ,看看你能否取得測試頁。做得到嗎?好了,讓我們進到更有趣的事情。

4.2. Subversion 給 Apache 的設定

下一步就是在 Apache 內設置某些設定,好讓 Subversion 與 Apache 能夠融洽相處。現在讓我們看看 Subversion 為你安裝的範例設定檔。

[root@lucifer ~] cd /etc/httpd/conf.d/
[root@lucifer ~] vim subversion.conf

# 有需要的話,請確定你移除這兩行的註釋
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

# 加入下列內容來支援基本驗證,並將 Apache 指向實際放置版本庫的地方。
<Location /repos>
        DAV svn
        SVNPath /var/www/svn/repos
        AuthType Basic
        AuthName "Subversion repos"
        AuthUserFile /etc/svn-auth-conf
        Require valid-user
</Location>

上面的位置是 Apache 在 URL 列上使用的。舉個例說:http://yourmachine/repos 指向你所指定的 SVNPath。上面只是一個範例,因此請按你的喜好放置東西。請確定你在完成編輯後儲存檔案。
然後我們須要建立你在上一部所指定的密碼檔。開始時你要利用 -cm 這個選項。它會建立檔案並用 MD5 將密碼加密。如果你需要加用戶,請確定你只使用 -m 選項,而不包含初次建立時的 -c。
[root@lucifer ~] htpasswd -cm /etc/svn-auth-conf yourusername
New password:
Re-type new password:
Adding password for user yourusername
[root@lucifer ~] htpasswd -m /etc/svn-auth-conf anotherusername
New password:
Re-type new password:
Adding password for user anotherusername

4.3. 設定你的版本庫


你接著要做的事情就是建立你用來提交及取出檔案的版本庫。利用 svn 所包含的工具,這是很容易的。
[root@lucifer ~] cd /var/www/ —— 或者你在上面所指定的路徑
[root@lucifer ~] mkdir svn
[root@lucifer ~] cd svn
[root@lucifer ~] svnadmin create repos
[root@lucifer ~] chown -R apache.apache repos
[root@lucifer ~] service httpd restart


現在去測試你能否透過網頁瀏覽器存取你的版本庫:http://yourmahcine/repos 。你應該取得一個對話方塊詢問用戶名稱及密碼。若然是這樣,請輸入你的憑證,然後你應該看見一版 Revision 0:/ 的頁面。這樣的話,版本庫的設定便大工告成了。如果你須要多個版本庫,請參考上面連結內的文檔。這裡只示範如何設置一個版本庫及開始應用它。話說回來,讓我們就這樣做。

6. 存取控制清單

一般來說,你不會想將所有版本庫的存取權給予所有用戶。你可以利用 ACL 來限制每位用戶存取版本庫的權限。ACL 可以透過 AuthzSVNAccessFile 這個檔案選項來啟用,它以一個檔名作為參數。例如:
AuthzSVNAccessFile /etc/svn-acl-conf
你可以在相關的 Location 部份加入它:
<Location /repos>
        DAV svn
        SVNPath /var/www/svn/repos
        AuthzSVNAccessFile /etc/svn-acl-conf
        AuthType Basic
        AuthName "Subversion repos"
        AuthUserFile /etc/svn-auth-conf
        Require valid-user
</Location>

注意是 使用 SVNPath  SVNParentPath
然後你可以建立 /etc/svn-acl-config。這個檔案內藏有這個格式的分段:
[版本庫名稱:版本庫路徑]
用戶 = 存取權
當中存取權可以是 r(唯讀)、rw(讀寫)、或空白(禁止存取)。預設的 ACL 是禁止用戶存取版本載。假設你有一個名叫 framework 的版本庫,而你想給 john 唯讀的權限,及 joe 讀寫的權限。你可以加入下面這個分段:
[framework:/]
john =  r
joe = rw
你亦可以在名叫 groups 的分段內建立群組,然後在存取控制清單內將 @ 符號放在群組前面。例如:
[groups]
staff = joe, george

[framework:/]
john =  r
@staff = rw
如果你想令所有用戶能閱讀每個版本庫,你可以為每個版本庫的根目錄加入以下一個分段:

[/]
* = r



如果想設定 誰才可以存取某些資料夾
subversion restrict user access folders


cd /etc/httpd/conf.d/
vim subversion.conf

多加入
AuthzSVNAccessFile /etc/svn-acl-conf

在 etc 下新增一檔案 叫 svn-acl-conf 

svn-acl-conf 內容設定如下 

[repos:/]
john = rw
(表示john 擁有整個資料夾瀏覽及編輯權限 )

[repos:/f1/f2]
Mary = r 
( 表示 Mary 只允許瀏覽 /f2 下資料夾內容 )

小心資料夾名稱後不要加到斜線了 例如 : f1/f2/


最後

設定SELinux

vi /etc/selinux/config

由原本 #SELINUX=enforcing 改為 SELINUX=disabled

記得重開機喔 !!

否則 commit 時 會一直出現  could not begin a transaction



注意 當你遇到 systemctl restart svnserve 無法啟動時
它告訴你 Root path '/var/svn' does not exist or is not a directory

vi /etc/sysconfig/svnserve  //修改路逕

# OPTIONS is used to pass command-line arguments to svnserve.
#
# Specify the repository location in -r parameter:
OPTIONS="-r /var/www/svn/repos"


重新做一次 開啟 svn 服務


netstat -nltp //查詢目前服務的阜號 例如 : 8891
kill 8891     //砍掉目前服務的 port
svnserve -d -r /var/www/svn/repos //重新繫結 svn 目錄
systemctl restart httpd //重啟 http 服務






node js 簡轉繁,繁轉簡 traditional to simplified

About This

用於 node.js 或瀏覽器之中:簡轉繁,或繁轉簡。

Install

shell (node.js)
npm install chinese-conv
shell (jspm for browser)
jspm install npm:chinese-conv

Usage

ES2015 (browser/node.js)
import {tify, sify} from 'chinese-conv';

// 轉成正體中文
let text = tify('所谓知己知彼百战不殆,作为星际2职业选手,他们在平时练习中不仅要练好自己的本族,还会经常选择其他两个族进行练习,这样可以更加了解本族之外两个种族的运营流程、弱点、真空期等。因此不只有Flash,全世界许多职业选手都会在练习时偶尔使用下别的种族,这也是他们众多练习手段的一种。');

console.log(text);
node.js
var chineseConv = require('chinese-conv');

var text = chineseConv.tify('所谓知己知彼百战不殆,作为星际2职业选手,他们在平时练习中不仅要练好自己的本族,还会经常选择其他两个族进行练习,这样可以更加了解本族之外两个种族的运营流程、弱点、真空期等。因此不只有Flash,全世界许多职业选手都会在练习时偶尔使用下别的种族,这也是他们众多练习手段的一种。');
//轉成簡體
var text = chineseConv.sify('轉成簡體測試');

console.log(text);