南內的貝爾語翻譯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() 的效能會更好
翻譯

Kibana

  • 一開始會先選擇 Elasticsearch 資料來源,因為沒有特殊修改設定,直接利用預設的 logstash-* 便可
  • 因為時區預設使用瀏覽器設定,所以要先到 Management > Advanced Settings > dateFormat:tz 強制設定為資料的時區
  • 創設一個 IP COUNT/DATE 的圖表
    1. 建立新圖表 Visualize > Create a visualization
    2. 選擇長條圖 Basic Charts > Vertical Bar
    3. 選擇資料來曆 From a New Search, Select Index > logstash-*
    4. Y 軸選擇欄位 clientip 的數量 Y-Axis > Aggregation[Unique Count] > Field[clientip.keyword]
    5. X 軸選擇日期 X-Axis > Aggregation[Date Histogram] > Field[@timestamp] > Interval[Daily]
    6. 點選右上角的箭頭 Apply changes
    7. 右上角時候規模選擇 This week 就可以看到一周內 IP COUNT/DATE 的長條圖

taikobo0發表於 樂多 │10:48 │回應(0) │援用(0) │系統闡發 │標籤:Elasticsearch,Logstash翻譯社Kibana,ELK,BIND9

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 ...繼續閱讀

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, '&gt;');
       string = string.replace(/"/g, '&quot;');
// 給定資料庫變數

自由軟體,具有六大特性、四大自由
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

    $dbh = new PDO($dbtype_sql . ':host=' . $host_sql . ';dbname=' . $dbname_sql翻譯社 $username_sql, $password_sql);
   string = string.replace(/</g, '&lt;');
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 是一種與實際環境連系的虛擬。跟著現代科技的提高,攝影機手藝已被普遍應用糊口中;也因為如此,以往印象中虛擬實境所需的厚重眼鏡與手套,已可以藉由我們生涯中常見的手機:攝影鏡頭與觸控螢幕來實現!


  • 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
    
  • 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 大神真是大師的好朋侪!(拇指)

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, '&#039;');




(3)與 BSD 非常近似,不外在修改原始碼後,必需在版權宣告後加注。

var bar = {
<?php
    print_r($row);
foreach ($dbh->query($query) as $row) {
   string = string.replace(/&/g, '&amp;');

        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
    更多文章 │ 回頁首▲