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
  • 若是沒有毛病,這個時辰 http://domain:5601 應該已可以看到 Kibana 的畫面(EC2 請開啟 port 5601)
  • http://domain:9200 也會看到 Elasticsearch 的 JSON 回應(EC2 請開啟 port 9200)
  • 別的建議可以安裝 Chrome extension ElasticSearch Head,只要毗鄰 http://domain:9200/ 就能夠直接連到 Elasticsearch 並看到原始數據

  • taikobo0揭橥於 樂多 │11:50 │回應(0) │援用(0) │系統闡明 │標籤:Elasticsearch,Logstash,Kibana,ELK

    August 22翻譯社2012

    更多文章 │ 回頁首▲

    May 22,2009

    [新知] OpenSource 與授權方式

    從出社會工作以來,常常接觸到的幾乎所有的程式,都是開放原始碼翻譯不過對於它的界說與其衍生的自由軟體所採用的授權方式,一直以來都是一知半解。前幾天在 PTT Soft_Job 版看到一篇討論【[請益] 請問要如何規避GPL?】,引起我想要弄清晰的愛好;這些分歧的授權體例各自到底代表著什麼意義呢?
    (3)因為逼迫擔當的關係,GPL 也引來一些指斥,所以在 PTT 才會引發想要規避的討論。畢竟公司發售軟體,目標固然是為了賺錢;在碰到這類有「沾染性」的授權體例時,不免會感到困擾...
      'type_id = :typeId'

    4. MIT:
    詳細看了 Wiki 和網路上一些前輩們的介紹,發現這些分歧的軟體授權體式格局其實還蠻複雜的...就我理解的部門,稍微介紹一些常用的授權許可證;紛歧定准確,只是簡單記載一下(全部想要逃避責任的口吻):
        ->queryRow();
    今天跟 Jace 提到這個技術,他提到 MIT 有個印度的學生已連系此技術,實作出更接近未來世界的裝配;後來華頓翻譯公司 google 了一下,發現了 sixthsense 這個專案翻譯這個專案行使成本大約 320 美金的材料,改裝成一個連系攝影與顯示於一身的特殊裝配,透過這個裝配就能夠即時擷取面前的影象,並直接投影在物體上,利用手指上的色彩標籤作手勢操作,完全就像電影《關鍵陳訴》的操作體式格局!超屌!

    // javascript 版本的 nl2br
            var re_nlchar = /%0A/g ;
    ?>
    此中 where 的用法是需要迥殊說明的處所,因為 Yii 在底層也是利用 PDO 實作,為了避免 SQL Injection 的發生,供給異常近似的使用方法;where() 函式可以援用二個參數:$conditions、$params。$conditions 是 array 型態時,包括保持方式、欄位、值;也能夠利用單純 string 型態的字串翻譯$params 非必填,是 array 型態,對應 $conditions 設定的值做 quote 的處理翻譯範例以下:PHP 是一種弱型另外語言,所以在面對外部傳進來的變數時,我們每每會在作一次型其它轉換處置;PHP 內建供應型其它強制轉換,如:(int)、(string)、(array),強迫型別轉換比函式如:intval()、strval() 來的有用率。
    ?>
    其他還有很多撰寫 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, '&gt;');
    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翻譯社 '&lt;');
    };
        ->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 大神真是大師的好朋侪!(拇指)

    taikobo0揭橥於 樂多 │10:39 │回應(0) │引用(0) │PHP

    January 20,2010

    [PHP] PDO 的利用方法

    PHP 從 PHP5 起頭,在資料庫操作方面新增了 PDO(PHP Data Objects)的 extension,利用物件導向的體例與資料庫進行溝通。捨棄以往透過單一函式的體例,而是透過物件導向程式設計的抽象化概念,操作時使用統一的方式,如果需要更換資料庫時,只要在豎立物件時賜與資料庫的情勢,而不消更動到原來的程式碼。這也是物件導向程式設計擁有良好靈活性的最好表現!
    (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, '&quot;');

    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

    }
    ?>

    $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 +"
      }
    }
    
  • (?<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:

    Reference

    • Ubuntu Server 建構 vsftpd 實體帳戶
    • 潮潮的Ghost + AWS EC2 佈置
    • [翻译]在 Ubuntu 中利用 SSL/TLS 加密 FTP 连接

  • taikobo0發表於 樂多 │10:15 │回應(0) │援用(0) │FTP │標籤:FTP,aws,EC2

    February 8,2018

    [Service] UltraHook

    UltraHook

    Info

    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 ]  翻譯社 API key 之前假如有設定可省略
    ultrahook stripe http://dev.test.com/webhook
    假如是 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

    taikobo0揭曉於 樂多 │10:27 │回應(0) │引用(0) │Laravel │標籤:laravel翻譯社queue,supervisor

    January 19,2018

    [AWS] Amazon CloudSearch

    Amazon CloudSearch

    Info

    • AWS 的雲端搜索辦事
    • 官網:https://aws.amazon.com/tw/cloudsearch/
    • 訂價:https://aws.amazon.com/tw/cloudsearch/pricing/

    Installation

    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

    1. Developer Guide
    2. 初探 Amazon CloudSearch (利用當 PHP 類型)

    taikobo0發表於 樂多 │14:06 │回應(0) │援用(0) │AWS │標籤:PHP,AWS,Laravel,CloudSearch

    November 10翻譯社2017

    [Go] Go 根基入門

    Info

    Installation

    # 2017/11 時最新版本是 1.9.2
    wget https://redirector.gvt1.com/edgedl/go/go1.9.2.linux-amd64.tar.gz
    # 解緊縮至 /usr/local/go
    tar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz
    • 確立 Go 專案程式碼目次,並點竄其權限
    # /var/golang
    mkdir -p /var/golang
    chmod 777 /var/golang -R
    • 插足 Go 相幹參數(以 zsh 為例)
    vi ~/.zshrc
    export GOROOT=/usr/local/go
    export GOPATH=/var/golang
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

    Library

    自動重載機制

    go get github.com/pilu/fresh

    Web Framework gin

    go get github.com/gin-gonic/gin

    MySQL driver

    go get -u github.com/go-sql-driver/mysql

    ORM

    go get -u github.com/jinzhu/gorm

    .env

    go get github.com/joho/godotenv

    Reference


    taikobo0揭橥於 樂多 │09:59 │回應(0) │援用(0) │Go │標籤:Go,Golang

    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

    1. MongoDB Docs
    2. MongoDB 完全新手教學 -5 對外開放問題[allow remote access]
    3. Mongodb 3.2 - 安裝與設定權限

    taikobo0發表於 樂多 │09:52 │回應(0) │援用(0) │MongoDB │標籤:PHP,MongoDB翻譯社Laravel

    September 19翻譯社2017

    [VPN] L2TP over IPSec

    Info

    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
  • 複製並調劑情況變數(其他變數請參考 run.sh
  • sudo cp vpn.env.example vpn.env
    sudo vi ~/docker-ipsec-vpn-server/vpn.env
  • ~/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
  • 網段較量爭論體式格局可以參考這裡
  • volume 利用者設定檔目次,在 volumes 區塊新增
  • ~/docker-ipsec-vpn-server/docker-compose.yml
  •     - ./users/ppp:/etc/ppp
        - ./users/ipsec.d:/etc/ipsec.d
  • 建立 docker container
  • # 建議先不要背景履行,有錯誤可以對照輕易發現
    docker-compose up
  • 若是沒有問題,應當會看到下面的畫面;包括 IP、公鑰、預設的利用者帳號與密碼
  • Setting

    辦理使用者

    • 點竄 L2TP/IPsec 設定檔(明碼),新增使用者 test2
    sudo vi ~/docker-ipsec-vpn-server/users/ppp/chap-secrets
  • ~/docker-ipsec-vpn-server/users/ppp/chap-secrets
  • # Secrets for authentication using CHAP
    # client  server  secret  IP addresses
    "tester" l2tpd "aaaaaa" *
    "test2" l2tpd "aaaaaa" *
  • 點竄 Cisco IPsec 設定檔(password),新增使用者 test2
  • Password
  • # $1$x2I2244y$mWuO1pmeYNwpdOqow5xbo.
    openssl passwd -1 "aaaaaa"
    sudo vi ~/docker-ipsec-vpn-server/users/ipsec.d/passwd
  • ~/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
  • 不需要從頭啟動 IPSec,貯存後新帳號即可利用
  • 經管利用者 in container

    • 進入 docker container
    docker exec -it ipsec-vpn-server env TERM=xterm bash -l
  • 安裝編纂器 vim
  • apt-get update && apt-get -y install vim
  • 修改設定檔
  • 不需要從新啟動 IPSec,貯存後新帳號便可利用
  • 點竄 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

      arrow
      arrow
        文章標籤
        翻譯社
        全站熱搜
        創作者介紹
        創作者 frednbf5dqm7w 的頭像
        frednbf5dqm7w

        frednbf5dqm7w@outlook.com

        frednbf5dqm7w 發表在 痞客邦 留言(0) 人氣()