如何做到高效的会议?

不管是在大公司还是一些中小型公司,除了日常工作,还有一项工作元素,那就是会议了。一场好的会议,可以让我们对过去发现的事情得出结论,对未来可能发生的问题有所预见,在团队建设方面,也有助于管理者了解团队成员的工作状态、工作态度以及工作问题。但是我们常有发生的情况是这样的:一场会议下来,三四个小时,结果毫无重点毫无决策,反而白白浪费了好多时间。

我觉得高效的会议大致应该做到以下几点:

  • 参加的人尽可能少,少到只需要对面沟通。不要动不动就拉上一批不相干的人进行开会。
  • 会议的时间要把控好,长时间的扯淡,断断续续、拖拖拉拉的浪费参与者时间。
  • 每次开会都必须有中心思想且做出一个明确的决定。
  • 尽量少开会。有问题当面沟通。不要开会成瘾。

以上仅为个人观点。

mongodb保存长整型的问题

最近用php往mongodb里面写数据的时候出现了一点小问题。就是毫秒级的时间戳保存到mongodb里面后数字被截断了。
例如:1439539213873保存后在mongo里显示为:725169713,这个不是我们想要的结果。

php代码:

$mongo = new MongoClient('mongodb://127.0.0.1:27017');
$db = $mongo->selectCollection("local", "test_data");
$data['num'] = 1439539213873;
$res = $db->insert($data);

mongo里结果:

> db.test_data.find();
{ "_id" : ObjectId("56b3036931a08a07628b4567"), "num" : 725169713 }
> 

 

解决方案:

1.查看php中mongo扩展的配置mongo.native_long,如果是0那在php.ini配置里面改为1;

2.对长整型的数字进行转换

$mongo = new MongoClient('mongodb://127.0.0.1:27017');
$db = $mongo->selectCollection("local", "test_data");
//$data['num'] = 1439539213873;
$data['num'] = new MongoInt64('1439539213873');//进行转换
$res = $db->insert($data);

mongo里结果:

> db.test_data.find();
{ "_id" : ObjectId("56b306c431a08ac80f8b4567"), "num" : NumberLong("1439539213873") }
> 

这样长的整型数字就不会被截断了。

记一次php curl给java提交数据失败的经历

最近由于业务需求需要对接一个对外接口(对方为java),简单来说就是需要通过post方式来给对方提交数据。但是对方一直收不到数据。简化代码如下:

$url = 'http://www.test.com';
$data = array(
  'name' => 'test',
  'age' => 123,
); 
$curl = curl_init (); // 启动一个CURL会话
curl_setopt ( $curl, CURLOPT_URL, $url ); // 要访问的地址
curl_setopt ( $curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt ( $curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
$result = curl_exec ( $curl ); // 执行操作
curl_close ( $curl ); 

后来发现是由于提交数据时header头的content-type跟对方不一致所导致。

  • CURLOPT_POSTFIELDS 这个参数字段数据为一个数组时,Content-Type头将会被设置成multipart/form-data(数据格式);
  • 而这个参数字符串类似’para1=val1&para2=val2&…’时,Content-Type头将会被设置成application/x-www-form-urlencoded(表单格式),就像表单提交的一样。

对方接收的Content-Type为application/x-www-form-urlencoded(表单格式),而现在PHP curl post提交数据时Content-Type为multipart/form-data(数据格式)。这才导致对方无法通过POST来接收数据。现在只需要把代码中

curl_setopt ( $curl, CURLOPT_POSTFIELDS, $data);
//更改为
curl_setopt ( $curl, CURLOPT_POSTFIELDS, http_build_query($data));

就OK了。

在PHP中通过POST方式接收的普通数据直接用$_POST就可以获取到,而如果是二进制流数据需要用$_FILES来获取。如果接收的数据是二进制流数据(文件)还用$_POST来接收,那只获取到的是这个文件的路径名字符串。

另外通过PHP的curl要发送文件,在文件名前面加上@前缀并使用完整路径就可以了。例如:

//$data['file']就是要发送的文件

$ch = curl_init();
$data = array('name' => 'Foo', 'file' => '@/home/user/test.png');
curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);

linux下安装memcached

memcache官网 http://memcached.org/

 下载memcache源码包
 wget http://www.memcached.org/files/memcached-1.4.25.tar.gz
 解压
 tar -zxvf memcached-1.4.25.tar.gz
 cd memcached-1.4.25
 编译安装
 ./configure && make && make test && sudo make install
 运行memcached
 /usr/local/memcached/bin/memcached -d -m 128 -l localhost -p 11211 -u root
 -d 以守护程序(daemon)方式运行 memcached
 -m 设置 memcached 可以使用的内存大小,单位为 M
 -l 设置监听的 IP 地址,如果是本机的话,通常可以不设置此参数
 -p 设置监听的端口,默认为 11211,所以也可以不设置此参数
 -u 指定用户

PHP安装Memcache扩展

 wget https://pecl.php.net/get/memcache-2.2.7.tgz
 tar -zxvf memcache-2.2.7.tgz
 cd memcache-2.2.7
 phpize
 ./configure --enable-memcache=/usr/local/memcached --with-php-config=/usr/local/php/bin/php-config
 make && make install
 编辑php.ini文件
 extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so
 然后重启php-fpm
 /etc/init.d/php-fpm restart
 查看phpinfo后可以看到memcache就证明已经安装成功了

 

linux下svn服务搭建

安装svn需要依赖apr和apr-util这两个软件,所以先安装这两个软件

下载安装APR
wget http://apache.fayea.com//apr/apr-1.5.2.tar.gz
tar -zxvf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr && make && make install
下载安装apr-util
wget http://apache.fayea.com//apr/apr-util-1.5.4.tar.gz
tar -zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install

下载安装svn

wget http://mirror.bit.edu.cn/apache/subversion/subversion-1.9.2.tar.gz
tar -zxvf subversion-1.9.2.tar.gz
cd subversion-1.9.2
在当前目录下载sqlite
wget http://www.sqlite.org/sqlite-amalgamation-3071501.zip
然后配置
./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
make && make install

新建一个目录用于存储SVN所有文件

mkdir /home/svn
新建一个资源仓库
svnadmin create /home/svn/project
后台运行SVN服务
svnserve -d -r /home/svn
vim /etc/rc.local 添加上面一行用于SVN开机启动

svn设置钩子(hooks)
进入hooks目录
cp post-commit.tmpl post-commit
chmod 777 post-commit
post-commit脚本内容
/usr/bin/svn update –username svn –password svn123svn /home/wwwroot/test1.com