魏长东

weichangdong

正在查看: 2015年07月日志归档(第 1 页 / 共 8 篇)

Mongodb数据更新update

一、Mongodb数据更新命令

Mongodb更新有两个命令:update、save。

1.1update命令

update命令格式:

db.collection.update(criteria,objNew,upsert,multi)

参数说明:

criteria:查询条件

objNew:update对象和一些更新操作符

upsert:如果不存在update的记录,是否插入objNew这个新的文档,true为插入,默认为false,不插入。【可以用来新添加字段】

multi:默认是false,只更新找到的第一条记录。如果为true,把按条件查询出来的记录全部更新。

 

示例:

»»阅读全文

抓取google play软件信息

产品需求,需要根据2w多个android软件id,去google play抓取相应软件id的分类信息和软件名字。

include 'Snoopy.class.php';
$snoopy = new Snoopy;

$ids = array(
    'com.monotype.android.font.root.font100',
'com.ding.easyme.android.expe.bodybeauty',
'com.ding.easyme.android.doperson',
);
$ids = array_unique($ids);
$category_reg = '|<span itemprop="genre">(.*?)</span>|si';
$name_reg = '|<div class="document-title" itemprop="name">\s*<div>(.*?)</div>|si';
foreach ($ids as $id) {
    $snoopy->fetch("https://play.google.com/store/apps/details?id=".$id);
    $re = $snoopy->results;
    if (empty($re)) 
    {
        echo $id." no match\n";
        continue;
    } 
    preg_match_all($category_reg, $re, $category);
    preg_match_all($name_reg, $re, $name);
    //print_R($category);
    //print_R($name);
    if ($category  || $name) {
        echo $id."\t".$name."\t".$category."\n";
    }
    usleep(100);
}

运行ok,就是出来的记录有点少。2w多个id,能出来记录的只有9k多。别的一些软件在GP上没有信息,所以才这样子。

真的有点怀才不遇的感觉啊,混了这么多年,感觉技术还是可以的,但是。。。

Linux下Rsync+sersync实现数据实时同步

前言:

一、为什么要用Rsync+sersync架构?

1、sersync是基于Inotify开发的,类似于Inotify-tools的工具

2、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录。

二、Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别?

1、Rsync+Inotify-tools

(1):Inotify-tools只能记录下被监听的目录发生了变化(包括增加、删除、修改),并没有把具体是哪个文件或者哪个目录发生了变化记录下来;

(2):rsync在同步的时候,并不知道具体是哪个文件或者哪个目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此,效率很低。

2、Rsync+sersync

(1):sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字

(2):rsync在同步的时候,只同步发生变化的这个文件或者这个目录每次发生变化的数据相对整个同步目录数据来说是很小的,rsync在遍历查找比对文件时,速度很快),因此,效率很高。

小结:当同步的目录数据量不大时,建议使用Rsync+Inotify-tools;当数据量很大(几百G甚至1T以上)、文件很多时,建议使用Rsync+sersync

说明:

操作系统:CentOS 5.X

源服务器:192.168.21.129

目标服务器:192.168.21.127,192.168.21.128

目的:把源服务器上/home/www.test.com目录实时同步到目标服务器的/home/www.test.com下

»»阅读全文

logstash配置文件

最近用到的,照着别人的配置的,记录下。貌似很强大。

可以把几台服务器上的nginx日志实时同步到另外一台上。可以过滤日志,可以存储到本地文件,redis等等,很强大。

sudo rpm -iv --force jre-7u79-linux-x64.rpm 
tar  xvzf   logstash-1.5.2.tar.gz
sudo  cp -R  logstash-1.5.2 /usr/local/
sudo ln -s /usr/local/logstash-1.5.2/ /usr/local/logstash
sudo ./plugin install logstash-filter-grok
sudo /usr/local/logstash/bin/logstash -f /usr/local/logstash/shipper.conf 

这是配置文件

input {
        file {
                type => "feedback-access"
                path => "/usr/local/nginx/logs/cn_access.log"
        }
}
filter {
        grok  {
                match => ["message","dot_100.php"]
                # drop => false
                add_tag => ["dot_log"]
             	#add_field => {"access_time"=>"%{HTTPDATE:timestamp}"}
        }
}
output {
        if "dot_log" in [tags]{
                #redis {
                #       host => "logfetch01.*.net"
                #       data_type =>"list"
                #       key => "dot_log_list"
                #}
                file {
                        # tags => ["dot_log"]
                        path => "/data2/test.cn_access.log"
                }
        }
}

gitlab 'origin master' does not appear

git 无论git pull 还是git push老是出现这个错误。

fatal: 'origin master' does not appear to be a git repository fatal: Could not read from remote repository. 
 
按照这么搞,就ok了。

git branch --set-upstream-to=origin/master master

git push origin master

git pull origin master

aws的ec2上配置flume

最近项目要用的AWS的一些东西,准备到时候把ec2的数据通过flume同步到aws的s3。

以下的代码是我从n个网站搜到的,并且成功执行的。

最终我也配置成功了。

 

1)将下载的flume包,解压到/home/hadoop目录中。所以你的先安装hadoop。
2)修改 flume-env.sh 配置文件,主要是JAVA_HOME变量设置。
 

cp conf/flume-env.sh.template conf/flume-env.sh
JAVA_HOME=/usr/java/jdk1.8.0_51

/etc/profile文件修改
export AWS_CREDENTIAL_FILE=/opt/aws/credential-file-path
export  PATH=$PATH:/opt/apache-maven-3.3.3/bin
export JAVA_HOME=/usr/java/jdk1.8.0_51
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
export PATH=$PATH:/opt/hadoop-2.7.1/bin:/opt/hadoop-2.7.1/sbin
export HADOOP_MAPRED_HOME=/opt/hadoop-2.7.1/
export HADOOP_HOME=/opt/hadoop-2.7.1/

»»阅读全文

Predis

之前一致以为,php使用reids,就一定需要安装php的redis扩展,就是通过php -m|grep redis可以看到,但是原来不用安装,使用predis也可以的。

Predis 适用于 PHP 5.3 以上版本在 Redis 使用,其中包括了集群的使用。

主要功能

支持各个版本的 Redis (从 2.0 到 3.0 以及 unstable)
使用哈希方式或用户自定义方式进行集群中节点的客户端分片
支持 Redis-cluster(集群) (Redis >= 3.0).
支持主/从结构的读写分离
支持已知的所有 Redis 客户端命令
使用方式

»»阅读全文

剑廿二

修炼这么久,仍旧功败麦城。

坚持,也许下一步就能一鸣惊人,今天,是明天跳跃的台阶。