南內的貝爾語翻譯try {
var nl2br = function (string) {
PHP 是一種弱型其它說話,所以在面臨外部傳進來的變數時,我們凡是會在作一次型另外轉換處理;PHP 內建供應型其余強迫轉換,如:(int)、(string)、(array),強迫型別轉換比函式如:intval()、strval() 來的有用率。
其實比擬較之下,個人感覺 Zend_Db_Table 比力好用一點,因為他的 where() 函式可以一向串接下去,但 CDbCommand 的 where() 必需先自己依造規則組好,並且只能下一次...(後面下的參數會蓋過前面下的參數)不外在這些 Framework 提供的 Query Builder 的輔助下,能確切削減我們在撰寫 SQL 語法時可能發生的錯誤,同時過濾有可能造成 SQL Injection 的參數翻譯感激 Framework 製作者的貼心,提供這麼利便的工具^^
taikobo0揭曉於
樂多
│11:21
│回應(0)
│援用(0)
│PHP
[PHP] 幾個讓效能更好小技巧
簡單記載一下幾個在 PHP 中讓效能更好的方式,其實根基的原則就是「罕用函式,多用 isset() 或 empty() 庖代」
Google 前陣子提出的 Google Goggles,仿佛就有結合雷同的手藝;透過即時的影象擷取與分析,立刻透過網路獲得相幹資訊。固然這只長短常小部份的利用,更多的運用可以參考「iGarden – NSS ICT Education Blog 擴增實境Augmented Reality(AR)教學」的相幹介紹文章,有特別很是令人驚艷的展現結果!
color: ['green']
$sth = $dbh->prepare('SELECT * FROM table WHERE id = :id AND name = :name');
?> 2. PHP 伺服端回傳變數,由 JavaScript 寫入 cookie:
?>
$host_sql = 'localhost';
// 組合 SQL 語法,取得符合 id = 2、name = 'John' 的資料
foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $row) {
六大特征:開放程式原始碼、不特定授權對象、不限制利用地域、不收取授權金、不隨附擔保、釋放四大自由予背工。
四大自由:執行、研究、改良、重製漫衍
->from('tbl_table')
(2)可以自由的利用,點竄原始碼,也能夠將修改後的原始碼作為開放原始碼或專有軟體再發佈。
在字串查找時,第一個想到的函式凡是是 preg_match(),可是假如尋覓的字串很純真時,利用 strpos() 的效能會更好翻譯
Google 前陣子提出的 Google Goggles,仿佛就有結合雷同的手藝;透過即時的影象擷取與分析,立刻透過網路獲得相幹資訊。固然這只長短常小部份的利用,更多的運用可以參考「iGarden – NSS ICT Education Blog 擴增實境Augmented Reality(AR)教學」的相幹介紹文章,有特別很是令人驚艷的展現結果!
color: ['green']
$sth = $dbh->prepare('SELECT * FROM table WHERE id = :id AND name = :name');
?> 2. PHP 伺服端回傳變數,由 JavaScript 寫入 cookie:
?>
$host_sql = 'localhost';
// 組合 SQL 語法,取得符合 id = 2、name = 'John' 的資料
foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $row) {
六大特征:開放程式原始碼、不特定授權對象、不限制利用地域、不收取授權金、不隨附擔保、釋放四大自由予背工。
四大自由:執行、研究、改良、重製漫衍
->from('tbl_table')
(2)可以自由的利用,點竄原始碼,也能夠將修改後的原始碼作為開放原始碼或專有軟體再發佈。
在字串查找時,第一個想到的函式凡是是 preg_match(),可是假如尋覓的字串很純真時,利用 strpos() 的效能會更好翻譯
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
}
比來遇到需要結合二個設定的環境,在,在 PHP 時 array 是 key-value 的情勢,所以可使用 array_merge() 連系二個 array;不外在 JavaScript 中 key-value 算是物件。要怎樣連系二個物件呢?後來在網路上蒐尋到 jQuery 就有提供很好用的函式 $.extend()。簡單的利用體例以下:
?>
做法有良多種,不過可能就是由 JavaScript 寫入 cookie 的概念翻譯
} else if (string.indexOf('%0A') > -1) {
2. 用 isset($var[0]) 庖代 0 < strlen($var):
var bar = 'test';
3. Apache License:
// 獲得 tbl_user 資料表中,id = 1 的資料列
?> 其他關於 where 更具體的用法,請參考 casahama 熱心的翻譯文章(簡體)。
經過公司的 jQuery 教育練習,Jace 介紹了一個超讚的 jQuery Plugin:Select box manipulation翻譯透過這個外掛的幫忙,可以更輕鬆的實現多重下拉式選單的功能唷,乃至連 cascade 不輕易做到的「預設值」也完全沒問題,所需要撰寫的程式碼也少於 cascade,整個就是夢幻的 Plugin!這麼奇異的外掛要怎麼用呢?以下簡單的類型,給有需要的人參考吧:類型是三階級的聯系關系式多重下拉式選單,分為index.php(出現頁)、action.php(Ajax 後端資料處理頁)、index.js(JavaScript 處置)、和 selectboxes ...繼續閱讀
}
比來遇到需要結合二個設定的環境,在,在 PHP 時 array 是 key-value 的情勢,所以可使用 array_merge() 連系二個 array;不外在 JavaScript 中 key-value 算是物件。要怎樣連系二個物件呢?後來在網路上蒐尋到 jQuery 就有提供很好用的函式 $.extend()。簡單的利用體例以下:
?>
做法有良多種,不過可能就是由 JavaScript 寫入 cookie 的概念翻譯
} else if (string.indexOf('%0A') > -1) {
2. 用 isset($var[0]) 庖代 0 < strlen($var):
var bar = 'test';
3. Apache License:
// 獲得 tbl_user 資料表中,id = 1 的資料列
?> 其他關於 where 更具體的用法,請參考 casahama 熱心的翻譯文章(簡體)。
經過公司的 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
July 3翻譯社2012
[PHP] Yii 的 CDbCommand where() 的使用方式
Yii Framework 自己對資料庫的操作除供應 Active Record 之外,也有提供雷同 ZendFramework Zend_Db_Table 以物件透過函式組合 SQL 語法的方法:CDbCommand。
以 jQuery 這個 JavaScript Library 為例,它利用的授權和談為 GPL 和 MIT 雙協議,故在利用上符合自由軟體的精神,並且限制也很寬鬆;在客歲微軟也曾發布要將 jQuery 加入 Visual Studio的相幹新聞翻譯
name: 'testSub2'
string = string.replace(/>/g, '>');
string = string.replace(/"/g, '"');
// 給定資料庫變數
自由軟體,具有六大特性、四大自由
4. MIT:
(1)可根據程式的需要點竄授權條款為恰當的內容;但在軟體和軟體的所有副本中仍必需包含版權聲明和許可聲明。
要注重的一點是,如果二個物件有相同屬性時,後面的物件屬性會蓋過前面的物件屬性翻譯
return unescape(string.replace(re_nlchar翻譯社 '<br />'));
string = string.replace(/</g, '<');
set1: {
以 jQuery 這個 JavaScript Library 為例,它利用的授權和談為 GPL 和 MIT 雙協議,故在利用上符合自由軟體的精神,並且限制也很寬鬆;在客歲微軟也曾發布要將 jQuery 加入 Visual Studio的相幹新聞翻譯
name: 'testSub2'
string = string.replace(/>/g, '>');
string = string.replace(/"/g, '"');
// 給定資料庫變數
自由軟體,具有六大特性、四大自由
4. MIT:
(1)可根據程式的需要點竄授權條款為恰當的內容;但在軟體和軟體的所有副本中仍必需包含版權聲明和許可聲明。
要注重的一點是,如果二個物件有相同屬性時,後面的物件屬性會蓋過前面的物件屬性翻譯
return unescape(string.replace(re_nlchar翻譯社 '<br />'));
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
string = string.replace(/</g, '<');
set1: {
<?php
string = escape(string);
name: 'test3',
$where = array(':id' => 2, ':name' => 'John');
setcookie('variable'翻譯社 $value翻譯社 0, '/');
string = string.toString();
name: 'test2'
3. 用 strpos($var, 'str') !== FALSE 代替 preg_match('/str/', $var翻譯社 $matches):
// 獲得 tbl_table 資料表中,id = $id AND type_id = $typeId 的資料列
(3)與 BSD 同屬限制少又寬鬆的授權體式格局;唯一的分歧點在於 MIT 的內容可依照程式著作權者的需求而更改。
);
(1)其起點在於開放程式碼、免費利用和引用、點竄或衍生程式碼的開放與免費利用翻譯
別的在 PHP 實作上經常會用到「變數的變數」這種寫法,後來發現 JavaScript 好像也有近似的函式可以到達這個目標:eval()。簡單的使用方式以下:
同一採用物件的體例來操作資料庫,不但增添系統的彈性,透過相同的 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 是一種與實際環境連系的虛擬。跟著現代科技的提高,攝影機手藝已被普遍應用糊口中;也因為如此,以往印象中虛擬實境所需的厚重眼鏡與手套,已可以藉由我們生涯中常見的手機:攝影鏡頭與觸控螢幕來實現!
調整系統參數 git clone 並確立 docker container } catch (PDOException $e) {
利用預載的體例:(保舉利用)
var re_nlchar = /%0A/g ;
->queryRow();
(1)在利用此授權體式格局的軟體或程式碼時,必須保留版權宣佈、三前提表列和免責聲明。
根基的利用體例是: ->where($conditions, $params)
$id = $dbh->quote(2);
$password_sql = 'password';
var htmlspecialchars = function (string, quote_style) {
1. 設定 setcookie() $path 參數:
if (string.indexOf('%0D%0A') > -1) {
}
alert(eval(foo));
參考資料:
$id = (int) $id;
set2: {
最後我是使用第一種方式,有些問題還真是沒有碰著就不會知道呢~google 大神真是大師的好朋侪!(拇指)
- ELK 並不是單一程式,而是離別由 Elasticsearch翻譯社 Logstash, Kibana 所構成
- Elasticsearch 擔任資料貯存,可以把它看成是資料庫的一種,同時他也可以實現全文檢索
- Logstash 搜集並處理資料,可以透過正規式將 log 的字串佈局化
- Kibana 則是提供網頁的顯現,串接 Elasticsearch 以後可以表現出簡練美觀的視覺化報表
Installation
- 傳統安裝體例是一個一個來,不過要串連三個程式並調劑情況設定,非常容易卡關;一開始裝到一半我就遇到各種困難…後來突然想到這類需要安裝分歧程式的環境,一定已有人供給整合後的 docker images,後來一找公然有!網路上保舉使用:docker-elk
- 根基情況需求:
- 硬體需求較高,原本華頓翻譯公司利用 AWS EC2 t2.micro 一向當機,後來進級到 t2.medium 後才成功啟動
- Docker version 1.10.0+
- Docker Compose version 1.6.0+
- git
- ubuntu 16.04 Docker & Docker Compose 安裝(1.15.0 是寫文章時 Docker Compose 的最新版本,請依安裝時釋出的最新版本號自行改換)
sudo apt-get update
sudo apt-get install docker.io
sudo usermod -aG docker $USER
sudo curl -L "https://github.com/docker/compose/releases/download/1.15.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
sudo sysctl -w vm.max_map_count=262144
利用預載的體例:(保舉利用)
var re_nlchar = /%0A/g ;
->queryRow();
(1)在利用此授權體式格局的軟體或程式碼時,必須保留版權宣佈、三前提表列和免責聲明。
根基的利用體例是: ->where($conditions, $params)
$id = $dbh->quote(2);
$password_sql = 'password';
var htmlspecialchars = function (string, quote_style) {
1. 設定 setcookie() $path 參數:
if (string.indexOf('%0D%0A') > -1) {
}
alert(eval(foo));
參考資料:
$id = (int) $id;
set2: {
最後我是使用第一種方式,有些問題還真是沒有碰著就不會知道呢~google 大神真是大師的好朋侪!(拇指)
taikobo0發表於
樂多
│10:39
│回應(0)
│引用(0)
│PHP
January 20,2010
[PHP] PDO 的利用方式
PHP 從 PHP5 入手下手,在資料庫操作方面新增了 PDO(PHP Data Objects)的 extension,行使物件導向的方式與資料庫進行溝通。捨棄以往透過單一函式的體式格局,而是透過物件導向程式設計的抽象化概念,操作時使用同一的方式,若是需要替換資料庫時,只要在建立物件時賜與資料庫的形式,而不消更動到本來的程式碼。這也是物件導向程式設計具有優秀靈活性的最好表示!
$row = Yii::app()->db->createCommand()
}
(2)可以自由的利用,點竄原始碼,也可以將修改後的原始碼作為開放原始碼或者專有軟體再發佈翻譯
$row = Yii::app()->db->createCommand()
string = string.replace(/\'/g, ''');
(3)與 BSD 非常近似,不外在修改原始碼後,必需在版權宣告後加注。
var bar = {
$row = Yii::app()->db->createCommand()
}
(2)可以自由的利用,點竄原始碼,也可以將修改後的原始碼作為開放原始碼或者專有軟體再發佈翻譯
$row = Yii::app()->db->createCommand()
string = string.replace(/\'/g, ''');
(3)與 BSD 非常近似,不外在修改原始碼後,必需在版權宣告後加注。
var bar = {
<?php
print_r($row);
foreach ($dbh->query($query) as $row) {
string = string.replace(/&/g, '&');
var re_nlchar = /%0D%0A/g ;
'id = :id',<?php
以往感覺離我們好遠好遠的將來科技,突然有一種近在咫呎的感受!Google Goggles 已實現了動畫《東之伊甸》所描繪的手藝,或許不久的未來就可以體驗,動畫《電腦線圈》中透過「電腦眼鏡」看世界的科技將來!var foo = {{ "_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 +" } }
(?<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 也要設定
以 AJAX 設定 cookie 時,若是沒有指定 $path 參數程式會主動指定一個虛擬目錄給它,但遵照 cookie 的特性:「唯一它的目次和以下的子目次可以或許存取」;所以未指定 $path 參數的 cookie 可能會造成在其他目次下的程式沒法存取。一勞永逸的體式格局就是直接指定 $path 參數為根目錄「/」:
(1)在使用此授權體例的軟體或程式碼時,必需保存版權宣佈、三前提表列和免責聲明。
// 利用 execute(),會自動 quote $where 的參數
} else if (quote_style != 'ENT_NOQUOTES') {
$query = sprintf("SELECT * FROM table WHERE id = %s AND name = %s", $id翻譯社 $name);
1. 用 (int) $var 庖代 intval($var):
if (quote_style == 'ENT_QUOTES') {
var re_nlchar = /%0D/g ;
':typeId' => $typeId
2. BSD:
// 第三個參數是 cookie 的存活時候,0 暗示存活至瀏覽器封閉為止
}
taikobo0揭橥於
樂多
│15:14
│回應(0)
│援用(0)
│AJAX
更多文章 │ 回頁首▲
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
贊助商告白
![Syndicate RSS feed [Syndicate this site]](https://imageproxy.pixnet.cc/imgproxy?url=https://cdn.rimg.tw/blog/images/clear.gif&width=131&height=15)
詳細看了 Wiki 和網路上一些前輩們的介紹,發現這些分歧的軟體授權體例其實還蠻複雜的...就華頓翻譯公司理解的部分,略微介紹一些經常使用的授權許可證;紛歧定正確,只是簡單紀錄一下(全部想要回避責任的口吻):
$dbh->query('SET NAMES UTF8');
->select('username, password')
$typeId = (int) $typeId;
P.S 後來拜讀 OSSF::自由軟體鍛造場【軟體的授權觀念與自由軟體授權類別】投影片(by 自由軟體鍛造場 2008 林誠夏)後,又獲得更明確的一些觀念:
color: ['red', 'blue']
1. GPL:
return string;
(3)是使用時限制很少,寬鬆的授權體例。
);
->queryRow();
}
}
一般的 SELECT 查詢方式:
},
} else if (string.indexOf('%0D') > -1) {
':id' => $id,
// javascript 版本的 nl2br
連線的體例: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
[WordPress] 點竄 wp_enqueue_scripts,到場自訂的 js翻譯社 css 檔案
Info
- 加入 js 檔案時,也可以同時設定援用 jQuery 等 lib
add_action('wp_enqueue_scripts'翻譯社 'gtm_scripts');
function gtm_scripts() {
// product category page
if (is_product_category()) {
wp_enqueue_script('product-category'翻譯社 get_stylesheet_directory_uri() . "/js/gtm/product_category.js", array('jquery'));
return;
}
}
jQuery(function() {
console.log('GTM product-category page');
dataLayer.push({'event': 'catpg'});
});
Reference
- https://codex.wordpress.org/Plugin_API/Action_Reference/wp_enqueue_scripts
- https://developer.wordpress.org/reference/functions/wp_enqueue_script/
[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: 第二層地道協議
- Ubuntu 架設 L2TP IPSec VPN Server (Mac 相容)
- Ubuntu 16.04 配置L2TP VPN Server
引用自: http://blog.roodo.com/taikobo0有關各國語文翻譯公證的問題歡迎諮詢華頓翻譯公司02-77260932
文章標籤
全站熱搜