close
豐族語翻譯
$sth->execute($where);
// 第三個參數是 cookie 的存活時候,0 表示存活至瀏覽器封閉為止
使用預載的體例:(保舉利用)
// 組合 SQL 語法,獲得相符 id = 2、name = 'John' 的資料
name: 'test1',
git clone https://github.com/deviantony/docker-elk.git
cd docker-elk
# 建議先不要靠山執行,有錯誤可以比力容易發現
docker-compose up



August 22翻譯社2012
更多文章 │ 回頁首▲
March 2018
|
|||||||||||||||||||||||||||||||||||
|
個人簡介
最新的記事

[FTP] 在 AWS EC2 ubuntu 上安裝 vsftpd
[Service] UltraHook
[Laravel] queue 經管程式 Supervisor 沒法准確被履行
[AWS] Amazon CloudSearch
[Go] Go 根基入門
[MongoDB] 安裝創立情況與 Laravel Package jenssegers/laravel-mongodb
[WordPress] 修改 wp_enqueue_scripts,加入自訂的 js翻譯社 css 檔案
[WordPress] 一般顯示頁面時 action 的履行遞次
[VPN] L2TP over IPSec
[系統闡明] ELK 實作,以 BIND9 log 分析為例
最新的回應

[AJAX] jQuery的多重下拉式選單運用:Select box manipulation(彥橙)
[AJAX] jQuery的多重下拉式選單應用:Select box manipulation(彥橙)
[AJAX] jQuery的多重下拉式選單應用:Select box manipulation(彼得兔)
[AJAX] jQuery的多重下拉式選單運用:Select box manipulation(amd)
[AJAX] jQuery的多重下拉式選單運用:Select box manipulation(gktttw)
[AJAX] jQuery的多重下拉式選單利用:Select box manipulation(小J)
[AJAX] jQuery的多重下拉式選單運用:Select box manipulation(Ken)
[AJAX] jQuery的多重下拉式選單應用:Select box manipulation(Zen)
[AJAX] jQuery的多重下拉式選單應用:Select box manipulation(Zen)
[AJAX] jQuery的多重下拉式選單利用:Select box manipulation(Zen)
記事分類
部落格 (1)

PHP (15)

MySQL (1)

AJAX (9)

RegExp (1)

新知 (9)

MSSQL (1)

CSS (1)

系統剖析 (2)

VPN (1)

WordPress (2)

MongoDB (1)

Go (1)

AWS (1)

Laravel (1)

Service (1)

FTP (1)

每月記事
February,2018
January翻譯社2018
November翻譯社2017
September翻譯社2017
August,2012
July,2012
December翻譯社2011
January,2010
December,2009
May,2009
April,2009
March翻譯社2009
February,2009
December翻譯社2008
September,2008
June,2008
May翻譯社2008
April,2008
March,2008
February翻譯社2008
January,2008
援助商告白
May 22,2009
[新知] OpenSource 與授權方式
從出社會工作以來,常常接觸到的幾乎所有的程式,都是開放原始碼翻譯不過對於它的界說與其衍生的自由軟體所採用的授權方式,一直以來都是一知半解。前幾天在 PTT Soft_Job 版看到一篇討論【[請益] 請問要如何規避GPL?】,引起我想要弄清晰的愛好;這些分歧的授權體例各自到底代表著什麼意義呢?
(3)因為逼迫擔當的關係,GPL 也引來一些指斥,所以在 PTT 才會引發想要規避的討論。畢竟公司發售軟體,目標固然是為了賺錢;在碰到這類有「沾染性」的授權體例時,不免會感到困擾...
'type_id = :typeId'
4. MIT:
詳細看了 Wiki 和網路上一些前輩們的介紹,發現這些分歧的軟體授權體式格局其實還蠻複雜的...就我理解的部門,稍微介紹一些常用的授權許可證;紛歧定准確,只是簡單記載一下(全部想要逃避責任的口吻):
->queryRow();
今天跟 Jace 提到這個技術,他提到 MIT 有個印度的學生已連系此技術,實作出更接近未來世界的裝配;後來華頓翻譯公司 google 了一下,發現了 sixthsense 這個專案翻譯這個專案行使成本大約 320 美金的材料,改裝成一個連系攝影與顯示於一身的特殊裝配,透過這個裝配就能夠即時擷取面前的影象,並直接投影在物體上,利用手指上的色彩標籤作手勢操作,完全就像電影《關鍵陳訴》的操作體式格局!超屌!
?>
其他還有很多撰寫 PHP 程式時增進效能的小技巧,請參考 Tsung's Blog 有更詳實的說明。
// 使用 execute(),會主動 quote $where 的參數
setcookie('variable'翻譯社 $value, 0, '/');
if (quote_style == 'ENT_QUOTES') {
'and'翻譯社
$row = Yii::app()->db->createCommand()
// 資料庫利用 UTF8 編碼
$row = Yii::app()->db->createCommand()
(3)是利用時限制很少,寬鬆的授權方式。
?>
':typeId' => $typeId
string = string.toString();
(3)因為逼迫擔當的關係,GPL 也引來一些指斥,所以在 PTT 才會引發想要規避的討論。畢竟公司發售軟體,目標固然是為了賺錢;在碰到這類有「沾染性」的授權體例時,不免會感到困擾...
'type_id = :typeId'
4. MIT:
詳細看了 Wiki 和網路上一些前輩們的介紹,發現這些分歧的軟體授權體式格局其實還蠻複雜的...就我理解的部門,稍微介紹一些常用的授權許可證;紛歧定准確,只是簡單記載一下(全部想要逃避責任的口吻):
->queryRow();
今天跟 Jace 提到這個技術,他提到 MIT 有個印度的學生已連系此技術,實作出更接近未來世界的裝配;後來華頓翻譯公司 google 了一下,發現了 sixthsense 這個專案翻譯這個專案行使成本大約 320 美金的材料,改裝成一個連系攝影與顯示於一身的特殊裝配,透過這個裝配就能夠即時擷取面前的影象,並直接投影在物體上,利用手指上的色彩標籤作手勢操作,完全就像電影《關鍵陳訴》的操作體式格局!超屌!
// javascript 版本的 nl2br此中 where 的用法是需要迥殊說明的處所,因為 Yii 在底層也是利用 PDO 實作,為了避免 SQL Injection 的發生,供給異常近似的使用方法;where() 函式可以援用二個參數:$conditions、$params。$conditions 是 array 型態時,包括保持方式、欄位、值;也能夠利用單純 string 型態的字串翻譯$params 非必填,是 array 型態,對應 $conditions 設定的值做 quote 的處理翻譯範例以下:PHP 是一種弱型另外語言,所以在面對外部傳進來的變數時,我們每每會在作一次型其它轉換處置;PHP 內建供應型其它強制轉換,如:(int)、(string)、(array),強迫型別轉換比函式如:intval()、strval() 來的有用率。
var re_nlchar = /%0A/g ;
?>
?>
其他還有很多撰寫 PHP 程式時增進效能的小技巧,請參考 Tsung's Blog 有更詳實的說明。
// 使用 execute(),會主動 quote $where 的參數
setcookie('variable'翻譯社 $value, 0, '/');
<?php
// 取得 tbl_table 資料表中,id = $id AND type_id = $typeId 的資料列
以 jQuery 這個 JavaScript Library 為例,它利用的授權和談為 GPL 和 MIT 雙和談,故在利用上符合自由軟體的精力,並且限制也很寬鬆;在客歲微軟也曾經發布要將 jQuery 插手 Visual Studio的相關新聞。
set2: {
$name = $dbh->quote('John');
3. Apache License:
alert($.extend(foo, bar).toSource());
if (quote_style == 'ENT_QUOTES') {
sudo apt-get update sudo apt-get install vsftpd -y
- vsftpd 設定
sudo vi /etc/vsftpd.conf
# 封閉 ipv6,這個問題卡很久,找好久才發現解決體例;不肯定是否是 vsftpd 版本的問題 # https://www.centos.org/forums/viewtopic.php?t=52408 listen=YES listen_ipv6=NO # 允許當地用戶登錄 local_enable=YES # 允許上傳 write_enable=YES # 讀寫履行權限 local_umask=022 # 允許家目次變為根目次 chroot_local_user=YES chroot_list_enable=YES # 允許家目錄變為根目次後具有寫入權限 chroot_list_file=/etc/vsftpd.chroot_list allow_writeable_chroot=YES
- 設立建設使用者 test
sudo useradd -m -s /usr/sbin/nologin test sudo passwd test # 之後輸入二次暗碼
- nologin 插手 shells 最後
sudo vi /etc/shells
/usr/sbin/nologin
- 若是利用者要可以看到所有目次,新增帳號到這個檔案;假如不需要也要成立一個沒有內容的檔案
sudo vi /etc/vsftpd.chroot_list
- 重啟 vsftpd
sudo service vsftpd restart
使用 TSL 連線(SSL)
若是沒有憑證可以自簽
- 利用 openssl 產生憑證檔案
# 產生一個期限為 3650 天的自簽憑證 sudo openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 3650 -newkey rsa:2048
- 自簽類型參考
Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:California Locality Name (eg翻譯社 city) []:Los Angeles Organization Name (eg翻譯社 company) [Internet Widgits Pty Ltd]:example.com Organizational Unit Name (eg, section) []:Linux and Open Source Common Name (e.g. server FQDN or YOUR name) []:example Email Address []:info@example.com
點竄 vsftpd 設定檔
- 自簽設定
sudo vi /etc/vsftpd.conf
#rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem #rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key rsa_cert_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES ssl_ciphers=HIGH
- 假如 EC2 上已有憑證
#rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem #rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key rsa_cert_file=/etc/letsencrypt/live/example.com/fullchain.pem rsa_private_key_file=/etc/letsencrypt/live/example.com/privkey.pem ssl_enable=YES ssl_ciphers=HIGH
- 重啟 vsftpd
sudo service vsftpd restart
利用被動模式
- 有樂趣可以詳讀 FTP 主/被動模式
- 華頓翻譯公司本身的理解是:當 Client 端在 NAT 架構下,使用被動模式對照不輕易有問題(假如有錯請再見告)
- 修改 vsftpd 設定檔
sudo vi /etc/vsftpd.conf
pasv_enable=YES pasv_min_port=40000 pasv_max_port=50000 port_enable=YES pasv_address=[Public IP] # 利用 domain name 時 #pasv_address=[Domain Name] #pasv_addr_resolve=YES
- 重啟 vsftpd
sudo service vsftpd restart
- AWS EC2 Security Group 要開啟被動模式的 port range
'and'翻譯社
$row = Yii::app()->db->createCommand()
// 資料庫利用 UTF8 編碼
$row = Yii::app()->db->createCommand()
(3)是利用時限制很少,寬鬆的授權方式。
?>
':typeId' => $typeId
string = string.toString();
<?php
Google 前陣子提出的 Google Goggles,仿佛就有連系類似的技術;透過即時的影象擷取與闡發,立即透過網路獲得相幹資訊。當然這只長短常小部門的利用,更多的應用可以參考「iGarden – NSS ICT Education Blog 擴增實境Augmented Reality(AR)教學」的相幹介紹文章,有異常使人驚艷的展示結果!
':id' => $id,
var htmlspecialchars = function (string翻譯社 quote_style) {
(2)可以自由的利用,點竄原始碼,也能夠將點竄後的原始碼作為開放原始碼或專有軟體再發佈。
foreach ($dbh->query($query) as $row) {
return string;
以往覺得離我們好遠好遠的將來科技,忽然有一種近在咫呎的感覺!Google Goggles 已實現了動畫《東之伊甸》所描畫的手藝,也許不久的將來就可以體驗,動畫《電腦線圈》中透過「電腦眼鏡」看世界的科技未來!
統一採用物件的體例來操作資料庫,不僅增加系統的彈性,透過不異的 quote() 方法,便可針對分歧的資料庫情勢進行 SQL Injection 的預防;真的異常利便!固然於其他專業的 ORM(如:Doctrine)對照,仍有不足;可是在對照簡單的功能的實作上,PHP5 內建的 PDO 切實其實供應優秀的資料庫操作模式~保舉使用!^^
taikobo0揭曉於
樂多
│15:17
│回應(2)
│援用(0)
│PHP
│標籤:PDO
December 29,2009
[新知] Augmented Reality 擴增實境
今天發現了一個華頓翻譯公司之前就知道的器材(我在說什麼啊...?):Augmented Reality 擴增實境。最早看到利用雷同手藝的商品是在日本的遊戲 AR-FIGURE 中:使用 Web Cam 與遊戲廠商供應的實體方塊,豎立一個存在電腦螢幕中真實情況裡的虛擬人偶(好繞口...)。第一次看到這玩意兒的時候真是嚇死我了,本來遊戲也能夠如許玩!擴增實境其實也是 Virtual Reality 虛擬實境的一種;但不同於 VR 中所有器械都是虛擬的,AR 是一種與現實情況連系的虛擬翻譯隨著現代科技的前進,攝影機手藝已經被普遍應用生涯中;也因為如斯,以往印象中虛擬實境所需的厚重眼鏡與手套,已可以藉由我們糊口中常見的手機:攝影鏡頭與觸控螢幕來實現!
);
(1)在利用此授權方式的軟體或程式碼時,必需保存版權宣佈、三前提表列以及免責聲明翻譯
string = string.replace(/>/g, '>');
2. 用 isset($var[0]) 庖代 0 < strlen($var):
->from('tbl_table')
}
$where = array(':id' => 2, ':name' => 'John');
->where($conditions翻譯社 $params)
} else if (string.indexOf('%0D') > -1) {
在字串查找時,第一個想到的函式每每是 preg_match(),可是若是尋找的字串很單純時,利用 strpos() 的效能會更好。
name: 'test3',
$typeId = (int) $typeId;
(3)五種開源協議的對照(BSD,Apache,GPL翻譯社LGPL,MIT) - 整頓(中文)
} else if (quote_style != 'ENT_NOQUOTES') {
set2: {
(2)契合 Copyleft 機制的授權條目。所以點竄或衍生的程式碼,也必需強迫擔當 GPL 的規範;確保所有使用 GPL 的自由軟體,能一向保持自由開放的原則。
if (string.indexOf('%0D%0A') > -1) {
最近遇到需要連系二個設定的情形,在,在 PHP 時 array 是 key-value 的情勢,所以可使用 array_merge() 連系二個 array;不外在 JavaScript 中 key-value 算是物件翻譯要如何連系二個物件呢?後來在網路上蒐尋到 jQuery 就有供應很好用的函式 $.extend()。簡單的利用方式以下:
(1)可憑據程式的需要修改授權條目為適當的內容;但在軟體和軟體的所有副本中仍必須包括版權聲明和許可聲明。
$params = array(
P.S 後來拜讀 OSSF::自由軟體鍛造場【軟體的授權觀念與自由軟體授權類別】投影片(by 自由軟體鍛造場 2008 林誠夏)後,又獲得更明白的一些觀念:
string = string.replace(/</g翻譯社 '<');
};
->from('tbl_user')
} else if (string.indexOf('%0A') > -1) {
);
(1)在利用此授權方式的軟體或程式碼時,必需保存版權宣佈、三前提表列以及免責聲明翻譯
string = string.replace(/>/g, '>');
2. 用 isset($var[0]) 庖代 0 < strlen($var):
->from('tbl_table')
}
$where = array(':id' => 2, ':name' => 'John');
->where($conditions翻譯社 $params)
} else if (string.indexOf('%0D') > -1) {
在字串查找時,第一個想到的函式每每是 preg_match(),可是若是尋找的字串很單純時,利用 strpos() 的效能會更好。
name: 'test3',
$typeId = (int) $typeId;
(3)五種開源協議的對照(BSD,Apache,GPL翻譯社LGPL,MIT) - 整頓(中文)
} else if (quote_style != 'ENT_NOQUOTES') {
set2: {
(2)契合 Copyleft 機制的授權條目。所以點竄或衍生的程式碼,也必需強迫擔當 GPL 的規範;確保所有使用 GPL 的自由軟體,能一向保持自由開放的原則。
if (string.indexOf('%0D%0A') > -1) {
最近遇到需要連系二個設定的情形,在,在 PHP 時 array 是 key-value 的情勢,所以可使用 array_merge() 連系二個 array;不外在 JavaScript 中 key-value 算是物件翻譯要如何連系二個物件呢?後來在網路上蒐尋到 jQuery 就有供應很好用的函式 $.extend()。簡單的利用方式以下:
(1)可憑據程式的需要修改授權條目為適當的內容;但在軟體和軟體的所有副本中仍必須包括版權聲明和許可聲明。
$params = array(
P.S 後來拜讀 OSSF::自由軟體鍛造場【軟體的授權觀念與自由軟體授權類別】投影片(by 自由軟體鍛造場 2008 林誠夏)後,又獲得更明白的一些觀念:
string = string.replace(/</g翻譯社 '<');
};
->from('tbl_user')
} else if (string.indexOf('%0A') > -1) {
var foo = 'bar';var foo = {
}
};
要留意的一點是,假如二個物件有溝通屬性時,後面的物件屬性會蓋過前面的物件屬性。
(1)其起點在於開放程式碼、免費利用和引用、點竄或衍生程式碼的開放與免費使用。
做法有很多種,不外或許就是由 JavaScript 寫入 cookie 的概念。
經由公司的 jQuery 教育訓練,Jace 介紹了一個超讚的 jQuery Plugin:Select box manipulation。透過這個外掛的扶助,可以更輕鬆的實現多重下拉式選單的功能唷,甚至連 cascade 不輕易做到的「預設值」也完全沒問題,所需要撰寫的程式碼也少於 cascade,整個就是夢幻的 Plugin!這麼奇異的外掛要怎麼用呢?以下簡單的類型,給有需要的人參考吧:範例是三階層的聯系關系式多重下拉式選單,分為index.php(出現頁)、action.php(Ajax 後端資料處置頁)、index.js(JavaScript 處理)、和 selectboxes ...繼續閱讀
taikobo0發表於
樂多
│12:05
│回應(72)
│援用(1)
│AJAX
March 3翻譯社2009
[AJAX] JavaScript 的 PHP 函數寫法:nl2br()、htmlspecialchars()
PHP 真的是一種非常便利的說話,其支援的複雜函式庫,可讓人很輕鬆安閑的使用很多實用的函數翻譯個中經常使用的 nl2br() 與 htmlspecialchars() 在 HTML 顯示的時候很常利用,可是 JavaScript 就沒有供應雷同輕易使用的函數了;因為某些緣由要在前端利用這二個函數,稍微 google 了一下馬上發現有先輩已寫出來囉!在此作個紀錄並分享給有需要的人:(濫觞:Replace newlines with BR (platform safe)、Javascript 的 htmlspecialchars function 與 htmlspecialchars_decode function,感激網路上的先輩們^^)
最後我是利用第一種體式格局,有些問題還真是沒有碰到就不會知道呢~google 大神真是大師的好朋侪!(拇指)
最後我是利用第一種體式格局,有些問題還真是沒有碰到就不會知道呢~google 大神真是大師的好朋侪!(拇指)
taikobo0揭橥於
樂多
│10:39
│回應(0)
│引用(0)
│PHP
January 20,2010
[PHP] PDO 的利用方法
PHP 從 PHP5 起頭,在資料庫操作方面新增了 PDO(PHP Data Objects)的 extension,利用物件導向的體例與資料庫進行溝通。捨棄以往透過單一函式的體例,而是透過物件導向程式設計的抽象化概念,操作時使用統一的方式,如果需要更換資料庫時,只要在豎立物件時賜與資料庫的情勢,而不消更動到原來的程式碼。這也是物件導向程式設計擁有良好靈活性的最好表現!
(2)可以自由的利用,點竄原始碼,也能夠將修改後的原始碼作為開放原始碼或者專有軟體再發佈。
(2)可以自由的利用,點竄原始碼,也能夠將修改後的原始碼作為開放原始碼或者專有軟體再發佈。
// javascript 版本的 htmlspecialchars
}
'id = :id',
[FTP] 在 AWS EC2 ubuntu 上安裝 vsftpd
vsftpd
Info
https://security.appspot.com/vsftpd.html Probably the most secure and fastest FTP server for UNIX-like systems.Install on AWS EC2
更新套件並安裝 vsftpd
(1)開放原始碼增進會(英文)
3. 用 strpos($var, 'str') !== FALSE 取代 preg_match('/str/', $var, $matches):<?php
一般的 SELECT 查詢方式:
} catch (PDOException $e) {
$password_sql = 'password';
1. 設定 setcookie() $path 參數:
根基的利用方式是:
color: ['red'翻譯社 'blue']
string = string.replace(/"/g, '"');Kibana
- 一開始會先選擇 Elasticsearch 資料濫觞,因為沒有希奇點竄設定,直接使用預設的 logstash-* 便可
- 因為時區預設使用瀏覽器設定,所以要先到 Management > Advanced Settings > dateFormat:tz 強迫設定為資料的時區
建立一個 IP COUNT/DATE 的圖表
確立新圖表 Visualize > Create a visualization 選擇長條圖 Basic Charts > Vertical Bar 選擇資料濫觞 From a New Search, Select Index > logstash-* Y 軸選擇欄位 clientip 的數目 Y-Axis > Aggregation[Unique Count] > Field[clientip.keyword] X 軸選擇日期 X-Axis > Aggregation[Date Histogram] > Field[@timestamp] > Interval[Daily] 點選右上角的箭頭 Apply changes 右上角時候範圍選擇 This week 就能夠看到一周內 IP COUNT/DATE 的長條圖
September 18翻譯社2017
[系統闡明] ELK 簡介
Info
}
?>
$conditions = array(
(?<logdate>%{MONTHDAY}[-]%{MONTH}[-]%{YEAR} %{TIME}) 是自訂 pattern,因為原始 pattern 沒有合適 query.log 的日期花式,參考濫觞是 logstash-patterns-core 其他關於 grok 寫法的判定與摹擬,可以透過 Grok Debugger 測試 filter > date 是將自訂參數 logdate 代替預設 timestamp 的寫法翻譯因為預設 timestamp 是指 Logstash 闡發匯入的時候,而不是 log 記載的時候,所以要特殊替換後才利便給 Kibana 闡明利用 若是記實檔 EC2 機器時區有別的設定,timezone 也要設定
set3: {
color: ['green']
當變數是字串型態時,華頓翻譯公司經常會用 strlen() 這個判斷字串長度的函式檢查他是否為空字串;不外其實 isset() 再搜檢字串變數時的效力更高。其他像是在判定字串長度時,也能夠用它來取代翻譯
return unescape(string.replace(re_nlchar, '<br />'));
(3)與 BSD 同屬限制少又寬鬆的授權體式格局;獨一的不同點在於 MIT 的內容可依照程式著作權者的需求而更改。
$id = $dbh->quote(2);
1. GPL:
}
?>
$conditions = array(
{
"_index": "logstash-2017.08.03",
"_type": "BIND_DNS"翻譯社
"_id": "AV2nF6AFU4gS5SfvUHc1",
"_version": 1,
"_score": null,
"_source": {
"path": "/var/log/named/query.log"翻譯社
"@timestamp": "2017-08-03T00:55:29.005Z",
"logdate": "03-Aug-2017 00:55:29.005",
"clientip": "203.75.167.229",
"query1": "www.google.com",
"query2": "www.google.com",
"@version": "1"翻譯社
"host": "690ab8796350"翻譯社
"dns": "172.31.10.132"翻譯社
"message": "03-Aug-2017 00:55:29.005 client 203.75.167.229#54501 (www.google.com): query: www.google.com IN A + (172.31.10.132)",
"type": "BIND_DNS",
"clientport": "54501"翻譯社
"querytype": "A +"
}
}
set3: {
color: ['green']
當變數是字串型態時,華頓翻譯公司經常會用 strlen() 這個判斷字串長度的函式檢查他是否為空字串;不外其實 isset() 再搜檢字串變數時的效力更高。其他像是在判定字串長度時,也能夠用它來取代翻譯
return unescape(string.replace(re_nlchar, '<br />'));
(3)與 BSD 同屬限制少又寬鬆的授權體式格局;獨一的不同點在於 MIT 的內容可依照程式著作權者的需求而更改。
$id = $dbh->quote(2);
1. GPL:
Reference
- Ubuntu Server 建構 vsftpd 實體帳戶
- 潮潮的Ghost + AWS EC2 佈置
- [翻译]在 Ubuntu 中利用 SSL/TLS 加密 FTP 连接
February 8,2018
[Service] UltraHook
UltraHook
Info
- http://www.ultrahook.com/
- UltraHook makes it super easy to connect public webhook endpoints with development environments
- support GitHub, Stripe翻譯社 ActiveCampaign, Papertrail
Usage
- 以串接 Stripe 為例,先註冊獲得一組 API key
- Webhook Namespace 的名稱會成為以後 Stripe 的 Endpoint,e.g. http://stripe.taikobotest123.ultrahook.com/
- 在本機安裝 UltraHook
gem install ultrahook
- 寫入 UltraHook API key 到使用者家目次
echo "api_key: xxxxxx" > ~/.ultrahook
- 啟動 UltraHook 辦事
# ultrahook [-k] ultrahook stripe http://dev.test.com/webhook翻譯社 API key 之前假如有設定可省略
假如是 virtual host 要記得在 /etc/hosts 先設定好 IP
- 如果成功就會開始轉發
Authenticated as taikobotest123 Forwarding activated... http://stripe.taikobotest123.ultrahook.com -> http://dev.test.com/webhook
- 到 Stripe 後台,API/Webhooks 新增 Endpoint:http://stripe.taikobotest123.ultrahook.com
- Send test webhook 查抄本機程式是否有領受到訊息
Reference
- UltraHook Frequently Asked Questions
taikobo0揭曉於
樂多
│16:45
│回應(0)
│援用(0)
│Service
│標籤:UltraHook
February 6,2018
[Laravel] queue 管理程式 Supervisor 沒法正確被履行
Service Supervisor execution error
Problem
- Laravel 5.5 文件 隊列 Supervisor 配置具體注釋 Supervisor 的安裝與設定,不過現實在本機安裝時卻一向沒法成功履行 php artisan queue:work
- live EC2 安裝 Supervisor 利用相同設定卻沒有問題
- 輸出 log 資訊有 php error:
PHP Parse error: syntax error翻譯社 unexpected '?' in /var/www/app/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php on line 233
Solution
- 試著修改 Supervisor 設定檔卻一向沒有解決
- 後來決定從 php error 訊息下手,google 後發現這個毛病是因為利用 PHP 7.0 以才支援的 ?? 導致舊版本 PHP 無法判讀,不外從 cli 或是 web 看 PHP 的版本都是 7.1.8
- 忽然想到本機有裝phpbrew,因為系統內存在多版本,所以在 crontab 需要分外指定版本;推斷 Supervisor 也是溝通事理
- 點竄設定檔 command 參數,後來公然成功執行了!
[program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command=/root/.phpbrew/php/php-7.1.8/bin/php /var/www/app/artisan queue:work --daemon --delay=3 --sleep=3 --tries=3 autostart=true autorestart=true user=root numprocs=4 redirect_stderr=true stdout_logfile=/var/www/app/storage/logs/worker.log
January 19,2018
[AWS] Amazon CloudSearch
Amazon CloudSearch
Info
- AWS 的雲端搜索辦事
- 官網:https://aws.amazon.com/tw/cloudsearch/
- 訂價:https://aws.amazon.com/tw/cloudsearch/pricing/
Installation
- 成立 Amazon CloudSearch Domain 教學
- Create a New Domain
- NAME YOUR DOMAIN
- Search Domain Name, 設命名稱
- Desired Instance Type, 設定機器等級,預設 small
- Desired Replication Count翻譯社 設定 Replication 數目,預設 1
- CONFIGURE INDEX
- Manual configuration翻譯社 手動設定
- REVIEW INDEX CONFIGURATION
- 這邊可以設定 index,除 Name 之外,必須決意欄位的 Type
- 一般文字設定 text 便可,假如有多個單詞時(ex. 分類名稱)可以設定 text-array
- 別的 literal 也是一種文字類型,但是大小寫敏感,並且以後可以 group
- 其他類型請參考文件
- 之後可以透進程式建立,所以也能夠略過不成立
- SETUP ACCESS POLICIES
- 設定權限,建議選擇 “Allow access to all services from specific IP(s)“,設定允許對外的 IP,多個 IP 時以逗號分隔
- CONFIRM
- 最後確認並完成創設,建樹可能會需要 10 分鐘
Usage
- 現實操作需要透過 AWS SDK,PHP 請參考「初探 Amazon CloudSearch (使用當 PHP 規範)」
Laravel Package
Info
- torann/laravel-cloudsearch
- 整合 Laravel 與 Amazon CloudSearch,安裝流程請參考 GitHub 申明
Settings
- .env 設定參數
- /project/.env
AWS_KEY=xxx AWS_SECRET=xxx # 之前建立的 Domain Name CLOUDSEARCH_DOMAIN=xxx # Dashboard 顯示的 Document Endpoint,必需包括 http CLOUDSEARCH_ENDPOINT=http://doc-xxx-xxx-xxx.us-west-2.cloudsearch.amazonaws.com # 不太清楚這個設定是什麼,我是填 AWS 區域 CLOUDSEARCH_REGION=us-west-2
- config/cloud-search.php 設定
- /project/config/cloud-search.php
// 修改從 .env 獲得 'domain_name' => env('CLOUDSEARCH_DOMAIN'), // 設定 index 欄位 Name 與 Type 'fields' => [ 'title' => 'text', 'author' => 'text-array', 'type' => 'literal', ], // 設定 Eloquent 地點位置,ex. App/Models/Book.php 'model_namespace' => '\\App\\Models'翻譯社
- 透過 Command 建立 index
php artisan search:fields
- 設定 Eloquent
- /project/app/Models/Book.php
<?php namespace App\Models; use LaravelCloudSearch\Eloquent\Searchable; class Book extends Model { // 使用 Searchable use Searchable; // 必需實作這個方式,回傳 index 的值 public function getSearchDocument() { return [ 'title' => $this->title翻譯社 'author' => $this->authors->pluck('name')->toArray()翻譯社 'type' => $this->type, ]; } }
- 建立 index
php artisan search:index Book
Searching
- 最根基的搜索
// search "Kitten fluff" $books = App\Models\Book::search('Kitten fluff')->get();
要留意的是基本搜索只會找 Type 是 text, text-array 的欄位,若是需要尋找其他 Type 的欄位必須自建 searchBuilder
- 新增額外設定,其他參數請參考文件
// search "Kitten fluff", default operator "or"翻譯社 add fields and weight $books = App\Models\Book::searchBuilder() ->options('defaultOperator'翻譯社 'or') ->options('fields'翻譯社 [ 'type^10', 'title^5', 'author', ])->term('Kitten fluff')->get();
Reference
- Developer Guide
- 初探 Amazon CloudSearch (利用當 PHP 類型)
November 10翻譯社2017
September 29翻譯社2017
[MongoDB] 安裝創立情況與 Laravel Package jenssegers/laravel-mongodb
Info
- 一種文件導向的資料庫辦理系統
Installation
- Install MongoDB Community Edition on Ubuntu
Setting
設定可連入的 ip 與 port
- MongoDB 預設只開放給 localhost,必需點竄設定檔
sudo vi /etc/mongod.conf
net:
port: 27017
# 0.0.0.0 對所有 ip 開放
bindIp: 0.0.0.0
# 重新啟動
sudo service mongod restart
豎立權限
- MongoDB 預設沒有權限,不需要登入帳號暗碼即可操作資料
- 若是需要建立權限,必須先成立經管者(admin DB 的 Users)
# 進入 mongo
mongo
# 進入 admin DB
use admin
# 創設經管者,答複 Successfully added user: 默示成功
db.createUser(
{
user: "帳號",
pwd: "暗碼"翻譯社
roles: [ { role: "root", db: "admin" } ]
}
)
# 使用辦理者權限,答複 1 透露表現成功
db.auth("帳號", "暗碼");
- 或是在進入 mongo 前登入
mongo -u "帳號" -p "密碼" --authenticationDatabase "admin"
預設開啟帳號驗證
sudo vi /etc/mongod.conf
#security:
security.authorization: enabled
# 重新啟動
sudo service mongod restart
Management Tool
- Robo 3T
PHP Driver
- MongoDB 與 PHP 的版本關係
- PHP 7.0 以上只能使用 mongodb
phpbrew
- 直接安裝 ext 即可
# PHP 7.0 以上
phpbrew ext install mongodb
原生 php
- Installing the MongoDB PHP Driver with PECL
# 憑據主機使用的 PHP 版本選擇安裝 dev 版本
sudo apt install php-pear php7.1-dev
# 更新 pecl
sudo pecl channel-update pecl.php
# 安裝 mongodb
sudo pecl install mongodb
- 安裝成功後會顯示 so 檔位置
Build process completed successfully
Installing '/usr/lib/php/20160303/mongodb.so'
install ok: channel://pecl.php.net/mongodb-1.3.0
configuration option "php_ini" is not set to php.ini location
You should add "extension=mongodb.so" to php.ini
- 新增至 php.ini(apache & cli)
sudo vi /etc/php/7.1/apache2/php.ini
sudo vi /etc/php/7.1/cli/php.ini
;extension=php_xsl.dll
extension=mongodb.so
Laravel Package
- jenssegers/laravel-mongodb
- /project/config/database.php
// mongodb
'mongodb' => [
'driver' => 'mongodb',
'host' => env('MONGODB_HOST')翻譯社
'port' => env('MONGODB_PORT'),
'database' => env('MONGODB_DATABASE'),
'username' => env('MONGODB_USERNAME'),
'password' => env('MONGODB_PASSWORD'),
'options' => [
'database' => env('MONGODB_DATABASE'),
]
],
- Query Builder
// 需要指定連線與鸠合
$r = DB::connection('mongodb')->collection(MONGODB_COLLECTION_NAME)->get();
dd($r);
- Model
- /project/App/Models/Mongo/Test.php
<?php
namespace App\Models\Mongo;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class Test extends Eloquent
{
/**
* guarded attributes
*
* @var array
*/
protected $guarded = [];
/**
* collection name
*
* @var string
*/
// protected $collection = 'tests';
/**
* connection name
*
* @var string
*/
protected $connection = 'mongodb';
}
// 跟一般 model 利用沒有差異
$r = $this->model->where('time', '=', '2017-09-14 19:21')->take(3)->get();
dd($r);
Reference
- MongoDB Docs
- MongoDB 完全新手教學 -5 對外開放問題[allow remote access]
- Mongodb 3.2 - 安裝與設定權限
September 19翻譯社2017
[VPN] L2TP over IPSec
Info
- L2TP 協定自身不供給加密與靠得住性驗證的功能,可以和安全協議搭配使用,從而實現資料的加密傳輸翻譯常常與 L2TP 協議搭配的加密協議是IPsec,當這兩個協議搭配使用時,每每合稱L2TP/IPsec
Installation
- 網路上常見的安裝方式:
- Ubuntu 14.04: pptpd, openswan, xl2tpd
- Ubuntu 16.04: ppp, lsof, strongswan翻譯社 xl2tpd
- 二種方法華頓翻譯公司都試過,可是安裝的程式與設定也良多;不料外的又卡關了。這時候我又想起了 docker,公然網路上又有大大供給整合好的 docker images,測試利用 hwdsl2/docker-ipsec-vpn-server
- docker 相幹安裝請參考之前的申明
- AWS 新增 Security groups,開啟 port UDP 1701, UDP 4500, UDP 500
- git clone project
git clone https://github.com/hwdsl2/docker-ipsec-vpn-server.git
cd docker-ipsec-vpn-server
sudo cp vpn.env.example vpn.env
sudo vi ~/docker-ipsec-vpn-server/vpn.env
# IPSec 的公鑰,建議字串長度長一點
VPN_IPSEC_PSK=PASS
# 預設使用者名稱
VPN_USER=tester
# 預設利用者密碼(明碼)
VPN_PASSWORD=aaaaaa
# 分派 L2TP 私家 IP 網段局限
VPN_L2TP_NET=172.16.0.013
VPN_L2TP_LOCAL=172.16.0.1
VPN_L2TP_POOL=172.16.0.10-172.23.255.250
# 分配 XAUTH 私家 IP 網段規模
VPN_XAUTH_NET=172.24.0.013
VPN_XAUTH_POOL=172.24.0.10-172.31.255.250
# 指定 DNS 位置
VPN_DNS_SRV1=XXX.XXX.XXX.XXX
VPN_DNS_SRV2=XXX.XXX.XXX.XXX
DNS_SRV1=XXX.XXX.XXX.XXX
DNS_SRV2=XXX.XXX.XXX.XXX
- ./users/ppp:/etc/ppp
- ./users/ipsec.d:/etc/ipsec.d
# 建議先不要背景履行,有錯誤可以對照輕易發現
docker-compose up

Setting
辦理使用者
- 點竄 L2TP/IPsec 設定檔(明碼),新增使用者 test2
sudo vi ~/docker-ipsec-vpn-server/users/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
"tester" l2tpd "aaaaaa" *
"test2" l2tpd "aaaaaa" *
# $1$x2I2244y$mWuO1pmeYNwpdOqow5xbo.
openssl passwd -1 "aaaaaa"
sudo vi ~/docker-ipsec-vpn-server/users/ipsec.d/passwd
# Secrets for authentication using CHAP
# client server secret IP addresses
tester:$1$x2I2244y$mWuO1pmeYNwpdOqow5xbo.:xauth-psk
test2:$1$x2I2244y$mWuO1pmeYNwpdOqow5xbo.:xauth-psk
經管利用者 in container
- 進入 docker container
docker exec -it ipsec-vpn-server env TERM=xterm bash -l
apt-get update && apt-get -y install vim
點竄 PSK 設定
- /etc/ipsec.secrets
%any %any : PSK "PASS"
點竄 Private IP 設定
- /etc/xl2tpd/xl2tpd.conf
ip range = 172.16.0.10-172.31.255.250
local ip = 172.16.0.1
修改 DNS 設定
- /etc/ppp/options.xl2tpd
ms-dns XXX.XXX.XXX.XXX # 統一台主機可以設定為 local ip
重啟辦事
sudo ipsec restart
sudo service xl2tpd restart
Other
Windows 10 連線産生錯誤
- Q: 假如連線産生毛病,要特殊點竄登錄檔,仿佛跟路由器有關係
- A: 以系統經管員成分履行號令提醒字元 cmd,輸入以下指令並執行
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f
沒法使用 VPN 指定 DNS
- Q: Windows 10 VPN 連線成功,但「主動獲得 DNS 伺服器位址」時卻沒有透過 VPN 指定的 DNS 解析網址,只有在指定 DNS 伺服器位址後才會有用
- A: 網路連線 > VPN > 右鍵「內容」 > 分頁「網路功能」 > 網際網路通信協議第 4 版 (TCP/IPv4) > 內容 > 進階 > 主動計量不勾選 > 輸入框設定值: 15
Reference
- wikipedia: 第二層地道協議
- 引用自: http://blog.roodo.com/taikobo0有關各國語文翻譯公證的問題歡迎諮詢華頓翻譯公司02-77260932
文章標籤
全站熱搜