月度归档: 2016 年 8 月

  • JavaScript去除String空格Trim方法 代码实例

    方法一:

    个人认为最好的方法.采用的是正则表达式,这是最核心的原理.
    其次.这个方法使用了JavaScript 的prototype 属性

    // Trim() , Ltrim() , RTrim()
    String.prototype.Trim = function(){ 
        return this.replace(/(^\s*)|(\s*$)/g, ""); 
    } 
    String.prototype.LTrim = function(){ 
        return this.replace(/(^\s*)/g, ""); 
    } 
    String.prototype.RTrim = function() { 
        return this.replace(/(\s*$)/g, ""); 
    }

    方法二:

    由于使用方法简单,所以这里就不举例子了.

    function lTrim(str) { 
     if (str.charAt(0) == " ") { 
     //如果字串左边第一个字符为空格 
     str = str.slice(1);//将空格从字串中去掉 
     //这一句也可改成 str = str.substring(1, str.length); 
     str = lTrim(str); //递归调用 
     } 
     return str; 
    } 
    //rTrim()去掉字串右边的空格 
    function rTrim(str) { 
     var iLength; 
     iLength = str.length; 
     if (str.charAt(iLength - 1) == " "){ 
     //如果字串右边第一个字符为空格 
     str = str.slice(0, iLength - 1);//将空格从字串中去掉 
     //这一句也可改成 str = str.substring(0, iLength - 1); 
     str = rTrim(str); //递归调用 
     } 
     return str; 
    } 
    //trim()去掉字串两边的空格 
    function trim(str) { 
     return lTrim(rTrim(str)); 
    }

    方法三:

    这个方法将函数写在一起,通过传递参数不同而达到不同的实现效果

    //****************************************************************
    // Description: sInputString 为输入字符串,iType为类型,分别为
    // 0 - 去除前后空格; 1 - 去前导空格; 2 - 去尾部空格
    //****************************************************************
    function cTrim(sInputString,iType){
    var sTmpStr = ' '
    var i = -1
    if(iType == 0 || iType == 1){
     while(sTmpStr == ' '){
     ++i
     sTmpStr = sInputString.substr(i,1)
     }
     sInputString = sInputString.substring(i)
    }
     if(iType == 0 || iType == 2) {
     sTmpStr = ' '
     i = sInputString.length
     while(sTmpStr == ' ') {
     --i
     sTmpStr = sInputString.substr(i,1)
     }
     sInputString = sInputString.substring(0,i+1)
     }
     return sInputString
    }
  • mysqldump gzip 备份及还原 压缩 图文教程

    前面我们介绍了Linux 自动备份Mysql Shell 脚本,下面说一下如何解压。
    mysqldump导出时加gzip压缩:

    mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

    gunzip解压:

    gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
  • CENTOS安装ElasticSearch 图文教程

    CENTOS安装ElasticSearch

    ElasticSearch 概述

    • ElasticSearch是一个高可扩展的开源的全文搜索分析引擎。
      它允许你快速的存储、搜索和分析大量数据。ElasticSearch通常作为后端程序,为需要复杂查询的应用提供服务。
    • Elasticsearch是一个基于Lucene的开源分布式搜索引擎,具有分布式多用户能力。Elasticsearch是用java开发,提供Restful接口,能够达到实时搜索、高性能计算;同时Elasticsearch的横向扩展能力非常强,不需要重启服务,基本上达到了零配置。

    ElasticSearch 安装

    安装前准备
    安装ElasticSearch
    • 运行下面命令将安装包移动到?/opt?目录,然后转到?opt?目录
      mv elasticsearch-2.3.5.tar.gz /opt ; cd /opt
    • 解压安装包,然后重命名为?elasticsearch
      tar zxvf elasticsearch-2.3.5.tar.gz
      mv elasticsearch-2.3.5 elasticsearch
    • 进入elasticsearch/bin下运行elasticsearch脚本启动
      cd elasticsearch/bin
      ./elasticsearch
    如果是用root启动,需要继续下面步骤
    • 如果是用root账号启动,会报以下错误
      Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root. at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93) at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144) at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:285) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35) Refer to the log for complete error details.
    • 这是出于系统安全考虑设置的条件。由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑,
      建议创建一个单独的用户用来运行ElasticSearch
    • 创建elsearch用户组及elsearch用户
      groupadd elsearch
      useradd elsearch -g elsearch -p elasticsearch
    • 更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch
      cd /opt
      chown -R elsearch:elsearch  elasticsearch
    • 切换到elsearch用户再启动
      su elsearch cd elasticsearch/bin
      ./elasticsearch
    • 启动后打印信息如下
      [2015-12-30 10:15:44,876][WARN ][bootstrap                ] unable to install syscall filter: prctl(PR_GET_NO_NEW_PRIVS): Invalid argument
      [2015-12-30 10:15:45,175][INFO ][node                     ] [Grim Hunter] version[2.1.1], pid[26383], build[40e2c53/2015-12-15T13:05:55Z]
      [2015-12-30 10:15:45,176][INFO ][node                     ] [Grim Hunter] initializing ...
      [2015-12-30 10:15:45,243][INFO ][plugins                  ] [Grim Hunter] loaded [], sites []
      [2015-12-30 10:15:45,272][INFO ][env                      ] [Grim Hunter] using [1] data paths, mounts [[/ (/dev/mapper/vg_yong-lv_root)]], net usable_space [33.3gb], net total_space [49gb], spins? [no], types [ext4]
      [2015-12-30 10:15:47,318][INFO ][node                     ] [Grim Hunter] initialized
      [2015-12-30 10:15:47,318][INFO ][node                     ] [Grim Hunter] starting ...
      [2015-12-30 10:15:47,388][INFO ][discovery                ] [Grim Hunter] elasticsearch/fnXUCLOQQBiC1aR7hhB82Q
      [2015-12-30 10:15:50,442][INFO ][cluster.service          ] [Grim Hunter] new_master {Grim Hunter}{fnXUCLOQQBiC1aR7hhB82Q}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-join(elected_as_master, [0] joins received)
      [2015-12-30 10:15:50,491][INFO ][node                     ] [Grim Hunter] started
      [2015-12-30 10:15:50,526][INFO ][gateway                  ] [Grim Hunter] recovered [0] indices into cluster_state
    ElasticSearch后端启动命令
    ./elasticsearch -d
  • WordPress代码高亮WP SyntaxHighlighter 去除右上角问号?

    WP SyntaxHighlighter?可以高亮着色显示几乎所有语言形式的源代码,还可以显示行号,是一款深受网站建设人员喜爱的工具,并且它还是免费的使用免费产品就有帮它宣传的义务,所以,在使用该工具时,会自动显示一个帮助图标,点击它会提示访问官方网站并呼吁捐款,付费后可以去掉该图标。

    新版本修改方法去除问号方法如下:

    进入WordPress后台→设置→WP SyntaxHighlighter→Toolbar 去掉勾即可。

    20160827103651

  • 判断是否移动设备 PHP代码

    以下PHP代码用来判断是否是移动设备。移动设备返回true,否则返回false.

    /**
     * 是否移动端访问访问
     *
     * @return bool
     */
    function isMobile(){ 
        // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
        if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))  {
            return true;
        } 
        // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
        if (isset ($_SERVER['HTTP_VIA']))    { 
            // 找不到为flase,否则为true
            return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
        } 
        // 脑残法,判断手机发送的客户端标志,兼容性有待提高
        if (isset ($_SERVER['HTTP_USER_AGENT']))    {
            $clientkeywords = array ('nokia',
                'sony',
                'ericsson',
                'mot',
                'samsung',
                'htc',
                'sgh',
                'lg',
                'sharp',
                'sie-',
                'philips',
                'panasonic',
                'alcatel',
                'lenovo',
                'iphone',
                'ipod',
                'blackberry',
                'meizu',
                'android',
                'netfront',
                'symbian',
                'ucweb',
                'windowsce',
                'palm',
                'operamini',
                'operamobi',
                'openwave',
                'nexusone',
                'cldc',
                'midp',
                'wap',
                'mobile'
                ); 
            // 从HTTP_USER_AGENT中查找手机浏览器的关键字
            if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))      {
                return true;
            } 
        } 
        // 协议法,因为有可能不准确,放到最后判断
        if (isset ($_SERVER['HTTP_ACCEPT']))    { 
            // 如果只支持wml并且不支持html那一定是移动设备
            // 如果支持wml和html但是wml在html之前则是移动设备
            if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))))      {
                return true;
            } 
        } 
        return false;
    }
  • CentOS 7 时间不对 修改时区 图文教程

    Linux 系统(我特指发行版, 没说内核) 下大部分软件的风格就是不会仔细去考虑向后 的兼容性, 比如你上个版本能用这种程序配置, 没准到了下一个版本, 该程序已经不见了. 比如 sysvinit 这种东西.

    设置时区同样, 在 CentOS 7 中, 引入了一个叫 timedatectl 的设置设置程序.

    用法很简单:

    timedatectl # 查看系统时间方面的各种状态

    Local time: 四 2014-12-25 10:52:10 CST
    Universal time: 四 2014-12-25 02:52:10 UTC
    RTC time: 四 2014-12-25 02:52:10
    Timezone: Asia/Shanghai (CST, +0800)
    NTP enabled: yes
    NTP synchronized: yes
    RTC in local TZ: no
    DST active: n/a

    timedatectl list-timezones # 列出所有时区
    timedatectl set-local-rtc 1 # 将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间
    timedatectl set-timezone Asia/Shanghai # 设置系统时区为上海

    其实不考虑各个发行版的差异化, 从更底层出发的话, 修改时间时区比想象中要简单:

    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • php json_encode中文UNICODE转码 不转换成16进制

    用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式,如果想汉字不进行转码,这里提供三种方法

    1.升级PHP,在PHP5.4, 这个问题终于得以解决, Json新增了一个选项: JSON_UNESCAPED_UNICODE, 故名思议, 就是说, Json不要编码Unicode.

    <?php
    echo json_encode("中文", JSON_UNESCAPED_UNICODE);
    //"中文"

    2.把汉字先urlencode然后再使用json_encode,json_encode之后再次使用urldecode来解码,这样编码出来的json数组中的汉字就不会出现unicode编码了。

    $array = array(
    'test'=> urlencode("我是测试")
    );
    $array = json_encode($array);
    echo urldecode($array);
    //{"test":"我是测试"}
  • cloudatcost $7美金 终生VPS 注册图文教程

    cloudatcost 出了最低7美金的终生VPS,不过他们家仅支持PayPal支付。听说网络连接不是很稳定,用来扶墙,练手还是不错的。

    7美金配置:

    1CPU

    512MB RAM

    10GB OF STORAGE

    1gigabit of internet

    网址:http://cloudatcost.com/

    20160823090735

     

    注册步骤:

    1.点击首页“SIGN UP TODAY!”

    20160823090756

    2.点击”continue”

    20160823091817

    3.完成账户注册,这里显示优惠$28美金,一共只需要付7美金。

    20160823091915

    4.完成信息填写,完成注册

    20160823092809

    20160823092139

     

     

  • 服务器搬迁至新环境 CENTOS+NGINX+PHP-FPM+MYSQL

    服务器搬迁至新环境 centos+nginx+php-fpm+mysql,环境配置此处省略若干字…

    开启自启动nginx:#chkconfig mysqld on
    搬迁过程中一波三折,搞了一天出现问题总结如下:
    打开博客后显示:nginx 502 bad getway
    网上所有方法都不能解决,找网上的命令执行了
    #netstat -napo |grep "php-fpm" | wc -l 结果显示:0
    原因是你的php-fpm没有有启动(此处原因郁闷了很久,网上都说php-fpm线程受限要提高,找了很久的原因)
    别忘了启动你的php-fpm
    #/etc/init.d/php-fpm start
    设置开机时自动启动php-fpm服务
    #chkconfig php-fpm on

    环境配置完成以后打开博客,由于我用的服务器对拷scp命令,所以所有的文件都会被拷贝过来。但是页面打开时wordpress显示空白,郁闷至极。
    可能是搬迁以后插件引起的问题。
    方法一:取消所有插件
    #mv wp-content/plugins wp-content/plugins.bak
    然后页面就正常了。

    方法二:把所有插件清空
    #rm wp-content/plugins/* -rf

    wordpress的nginx rewrite重写规则,参照wordpress官网的规则单用户只需要一句话就可以搞定了,没有网上的那么复杂,下面贴出我的nginx配置文件:
    [root@jjhr ~]# vi /etc/nginx/conf.d/www.jiloc.com.conf

    server {
      listen 80 default_server; #这里指定为默认域名
      server_name jiloc.com;
      root /var/www/html/www.jiloc.com;
      index index.php index.html index.htm;
      #wordpress单用户的话只需要下面3句就可以了,没有网上那么累赘,那么复杂
      location / {
        try_files $uri $uri/ /index.php?$args;
      }
      location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #这里写错可能会导致404,403 fobidden错误
        include fastcgi_params;
      }
    }

    wordpress有时页面数据载不出来,数据丢失。有时页面会显示“wordpress数据库连接错误”,不过我的配置文件中数据库用户名密码都是正确的。
    然后打开Wordpress的DEBUG模式
    #vi wp-config.php 找到
    define('WP_DEBUG', false);
    改成
    define('WP_DEBUG', true); 完成调试后再修改回去。
    WordPress database error: [MySQL server has gone away]
    wordpress数据库连接错误
    原因是数据库的连接被关闭了,时间太短了。
    网上说可以这样修正,方法一:
    #vi /wp-includes/wp-db.php 找到 $this->ready = true;这一行
    在下面添加一行,内容如下:
    $this->query("set session wait_timeout=600");
    但是目前好像这个方法行不通哦!
    方法二:
    #yum install mysql* -y
    也许可能是mysql的包没有安装完整,全部安装试试。

  • PHP Mysql 动态数据结合 highcharts 图表统计

    一些PHP新手可能不知道如何结合PHP+MYSQL动态数据生成图表,我们这里以highcharts为例,教大家如何生成图表统计代码.

    20160822182411

    下面直接看代码:

    <?php
    require_once 'config.php';
    require_once 'functions.php';
    /**
     * 作者:老季
     * 网址:https://www.jiloc.com/42558.html
     */
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>爬虫索引统计_<?php echo TITLE;?></title>
    <script type="text/javascript" src="http://cdn.hcharts.cn/jquery/jquery-1.8.3.min.js"></script>
    <script type="text/javascript" src="http://cdn.hcharts.cn/highcharts/highcharts.js"></script>
    <style>
    .jads{ text-align: center;}
    .jads table { margin: 0 auto; width: 600px; border:solid #e5e5e5; border-width: 1px 0px 0px 1px;}
    .jads table td{border:solid #e5e5e5; border-width: 0px 1px 1px 0px;}
    </style>
    </head>
    <body>
    <div class="jads">
     
    <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
    <p>本页面仅作展示使用,请定时或手动运行<a href="<?php echo DOMAIN_PATH;?>script.php">script.php</a>页面进行统计更新</p>
    <p><a href="<?php echo DOMAIN_PATH;?>">返回首页</a></p>
    <table>
     <tr>
     <td>日期</td>
     <td>索引</td>
     </tr>
    <?php
    $sql = "SELECT * FROM `analytics` ORDER BY a_time asc LIMIT 30";
    $result = $pdo->prepare($sql);
    $result->execute();
    $aAray = $result->fetchAll();
    $rNums = count($aAray);
    $aDate = array();
    $aRows = '';
    $aAll = 0;
    for ($i=0;$i<$rNums;$i++){
     $aDate[] = $aAray[$i]['a_time'];
     $aRows .= $aAray[$i]['rows'].',';
     $aAll += $aAray[$i]['rows'];
    ?> 
     <tr>
     <td><a href="<?php echo DOMAIN_PATH;?>script.php?date=<?php echo $aAray[$i]['a_time']?>"><?php echo $aAray[$i]['a_time']?></a></td>
     <td><?php echo number_format($aAray[$i]['rows']);?></td>
     </tr>
    <?php } ?> 
     <tr>
     <td></td>
     <td>共计:<?php echo number_format($aAll);?></td>
     </tr>
    </table>
    
    </div>
    </body>
    <script type="text/javascript">
    $(function () {
     $('#container').highcharts({
     title: {
     text: '<?php echo TITLE;?>',
     x: -20 //center
     },
     credits: { 
     enabled: false //去掉highcharts网站url 
     },
     xAxis: {categories: <?php echo json_encode($aDate);?> },
     yAxis: {
     title: {
     text: ''
     },
     plotLines: [{
     value: 0,
     width: 1,
     color: '#808080'
     }]
     },
     tooltip: {
     valueSuffix: ''
     },
     legend: {
     layout: 'vertical',
     align: 'right',
     verticalAlign: 'middle',
     borderWidth: 0
     },
     series: [{
     name: '<?php echo TITLE;?> 爬虫',
    data: [<?php echo rtrim($aRows,',');?>]
    }]
     });
    });
    </script>
    <?php echo STATISTICS;?> 
    </html>

    需要注意的地方已用红字标注,

    categories :json_encode(数字),外面没有方括号。

    data : 直接拼接承字符串接口。

  • namesilo 注册域名 使用优惠码 免费WHOIS保护 图文教程

    随着我们对海外域名注册商的认识不断扩大,以及原本守着的几个注册商域名续费可能价格比较高,我们会选择转移注册商的方式给域名续费。如果我们认为某个注册商感觉还不错,可能就以后在自己的域名注册商库中多一个选择方案。最为2012年成立的域名注册商NAMESILO虽然发展比较晚,但是他们以自己的价格优势,以及赠送域名隐私保护的特点,赢得和吸引不少用户的选择。而且现在他们家已支持支付宝支付,方面国内用户购买。

    没有信用卡?申请国际通用支付账号万事达卡MasterCard全球付 图文教程

    namesoli官网:https://www.namesilo.com/

    如果是新手站长,没有NAMESILO账户的,可以参考下面这篇基础的教程拥有NAMESILO账户,以便以后域名管理需要。

    • 检索需要注册的域名

    20160820085932

    • 如果可以注册,直接在下面打勾即可,Registered 是已注册的意思。

    20160820090020

    • 勾选免费的WHOIS保护

    20160820090408

    • 完成注册,添加会员信息。

    20160820090737

    • 付款,可以勾选支付宝或者PayPal

    我们可以选择信用卡、PAYPAL或者比特币等很多种付款方式,我这边用PAYPAL付款。点击之后会弹出来,然后引导到PP网站付款,然后看到下面的界面。

    namesilo-7

    付款完成后可以看到我们刚刚注册的域名了

    20160820091217

    总之,Namesilo域名注册商的账户注册还是比较简单的,我们可以直接注册域名,也没有遇到需要激活验证邮箱。如果是新账户或者新的支付方式我们还可以使用一个1美元的优惠(优惠码 – savingone)。也就是说如果我们要购买一个域名,可以节省1个域名,.com只需要花费7.99美元,但仅能用一次。

  • Vultr for WHMCS Module 分销插件汉化版 图文教程

    前几天闲着实在没事干,就去Vultr官网下载了个分销插件部署来玩玩,顺便给汉化了一下,部署过程还是很简单的。

    Vultr 充5美元可以用5个月VPS 充值最高送100美元

    部署环境必备:

    1. WHMCS v6 or higher.
    2. PHP 5.5 or higher.
    3. MySQL 5.6, MariaDB 5.6, MariaDB 10.0, or MariaDB 10.1.
    4. An active, funded Vultr Account.
    5. A Vultr API Key.

    详细教程来啦!

    开启API

    Account->API->Enable API

    vultrapi

    然后再添加访问控制白名单,输入你的服务器IP网段加入,如果未添加将无法连接Vultr服务器

    vultrapi2

    下载Vultr分销插件

    点我下载Vultr for WHMCS分销插件

    用FTP将插件文件上传到WHMCS目录/modules/servers下

    最终的目录形式为WHMCS目录/modules/servers/vultr

    打开WHMCS后台新增一个分组,分组名称随意,我设置的是SSD云服务器

    新增一个产品,产品分组为刚才设置的分组,设定一个产品名称,产品类型选择独服/VPS

    接下来在接口设置里选择Vultr,刷新后输入API key并保存,然后点选两个Generate default

    whmcsvultr

    出现如图所示代表设置完成了,此时可设置可配置选项的定价,包括系统模板、备份、快照等等的定价

    whmcsvultr2

    Vultr WHMCS Module官方文档:https://www.vultr.com/docs/vultr-whmcs-module

WeChat