作者: 8bto

  • Amazon Cloud Drive 更改共享文件夹位置

    安装了cloud drive的桌面端,本地cloud drive文件夹里的文件会自动更新到网盘。

    安装后会自动把cloud drive本地文件夹设在c:\users\xxx\cloud drive下,没有提供设置本地文件夹的位置的选项。
    网上找到了一种方法来解决问题:修改注册表。
    运行regedit,找到
    [HKEY_CURRENT_USER\Software\Amazon\AmazonCloudDrive]

    下的SyncRoot,设为你想要的位置比如H:\Cloud Drive之类的。

  • 条件注释判断浏览器

    <!–[if !IE]><!–> 除IE外都可识别 <!–<![endif]–>

    <!–[if IE]> 所有的IE可识别 <![endif]–>

    <!–[if IE 6]> 仅IE6可识别 <![endif]–>

    <!–[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]–>

    <!–[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]–>

    <!–[if IE 7]> 仅IE7可识别 <![endif]–>

    <!–[if lt IE 7]> IE7以及IE7以下版本可识别 <![endif]–>

    <!–[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]–>

    <!–[if IE 8]> 仅IE8可识别 <![endif]–>

    <!–[if IE 9]> 仅IE9可识别 <![endif]–>

     

    <!–[if lt IE 9]>

    加载CSS1
    <!–[else]>
    加载CSS2
    <![endif]–>

    这样有效是有效,但是用HTML VALIDATOR里,报错,因为这个不符合XHTML 1.1的规范,
    如果把ELSE语句去掉,则正确.

    方法1:

    加载CSS2
    <!–[if lt IE 9]>
    加载CSS1(可以把要重写的写在这里).
    <![endif]–>

     

  • 如何居中一个浮动元素?

    设置容器的浮动方式为绝对定位

    然后确定容器的宽高 比如宽500 高 300 的层

    然后设置层的外边距

    Div {

    width:500px ;

    height:300px;

    margin: -150px 0 0 -250px;

    position: absolute;

    left:50%;

    top:50%;

    background-color: #000;

    }

     

  • wordpress mb_strimwidth() 函数不可用解决办法

    博客搬家将以前的APACHE换成了NGINX,配置的过程中没有安装php5_mbstring导致首页的摘要始终无法显示,之前做模板时首页摘要是用mb_strimwidth() 函数进行截断,一开始还以为是模板出问题了,修改了半天,都无法解决,最后无意间在网上看到一篇文章才发现自己没安装php5_mbstring导致的,直接安装然后重启nginx和php-fpm就OK了。

    mb_strimwidth() 函数进行截断,对于中文用户来说,这个函数是相当实用的,因为很多摘要的方法都会把中文字截断出乱码,因为中文字在 UTF-8 编码下占三个长度,如果你使用的是VPS,那么直接安装php5-mbstring即可,如果是虚拟主机,那就看主机都默认支持这个函数的,前提是要开启 mb_string 这个模块。那如果主机没有开启 mb_string 就不能使用 mb_strimwidth() 函数了吗?有没有变通的办法呢?答案当然是 YES

    先在 WordPress 主题的 functions.php 文件中添加如下代码:

    function dm_strimwidth($str ,$start , $width ,$trimmarker ){

    $output = preg_replace(‘/^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,’.$start.’}((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,’.$width.’}).*/s’,’\1′,$str);

    return $output.$trimmarker;

    }

    接下来在需要的地方调用如下:

     

    echo dm_strimwidth(strip_tags($post-&gt;post_content),0,200,’&lt;a href=”‘.get_permalink().’”&gt;……[阅读全文]&lt;/a&gt;’);

  • FreeBSD vmstat详解

    top是给Linux设计的。在FreeBSD VM里面的Free概念和其他OS完全不同,使用top查看Free内存对于FreeBSD来说可以说没什么意义。正确的方法是看vmstat。

     # vmstat
      procs   memory          page                       disk   faults     cpu
      r b w   avm    fre      flt  re  pi   po   fr   sr ad0    in    sy   cs    us  sy id
      0 2 1   270512   20316  30   0   0    0    26   5  1223   1589  98   593   1   1  99

    最好使用vmstat t [n]命令,例如 vmstat 5 10,表示在t(5)秒时间内进行n(10)次采样。如果只使用vmstat,无法反映真正的系统情况。

    procs:
    r–>在运行的进程数
    b–>在等待io的进程数(等待i/o,paging等等)
    w–>可以进入运行队列但被替换的进程
    memoy(以kb为单位,包括虚拟内核和真实内存,正在运行或最近20秒在运行的进程所用的虚拟内存将被视为active)
    avm–>活动的虚拟内存
    free–>空闲的内存
    pages(统计错误页和活动页,每5秒平均一下,以秒为单位给出数值)
    flt–>错误页总数
    re–>回收的页面
    pi–>进入页面数
    po–>出页面数
    fr–>空余的页面数
    sr–>每秒通过时钟算法扫描的页面
    disk 显示每秒的磁盘操作(磁盘名字的前两个字母加数字,默认只显示两个磁盘,如果有多的,可以加-n来增加数字或在命令行下把磁盘名都填上。)

    fault 显示每秒的中断数
    in–>设备中断
    sy–>系统中断
    cs–>cpu交换(上下文切换)
    cpu 表示cpu的使用状态
    cs–>用户进程使用的时间
    sy–>系统进程使用的时间
    id–>cpu空闲的时间

    如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。
    如果pi,po 长期不等于0,表示内存不足。
    如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。

    以下是一个繁忙批量插入MySQL数据(大概每隔20秒可以插入50万多条数据)的vmstat例子:

     procs      memory      page                    disks     faults         cpu
     r b w     avm    fre   flt  re  pi  po    fr  sr da0 da1   in   sy   cs us sy id
     1 0 63  23302M   803M   845   0   0   0     0   0   0   0   17  124  499  6  0 94
     1 0 63  23302M   796M   837   0   0   0     2   0   1   0   18  158  505  6  0 94
     1 0 63  23302M   790M   833   0   0   0     6   0  76   0  159  143  910  6  0 94
     1 0 63  23302M   784M   868   0   0   0    16   0   8   0   34  156  550  6  0 94
     2 0 63  23456M   709M  8317   2   0   0  2383   0  95   0  295 5504 1930  8  1 91
     1 0 63  21975M  1281M 18909   3   0   0 94840   0 620   0 1893 64333 7822 10  4 87
     1 0 63  21975M  1281M   415   0   0   0   342   0   1   0   29  611  566  6  0 94
     1 0 63  22093M   978M 43503   0   0   0  5140   0 2187   0 4225  582 16279  6  2 92

    循环插入到了后面,随着表越来越大,系统调用和上下文切换越来越频繁:

     procs      memory      page                    disks     faults         cpu
     r b w     avm    fre   flt  re  pi  po    fr  sr da0 da1   in   sy   cs us sy id
     1 0 63  23233M   536M 28219   0   0   0   352 51252 869   0 1864 14542 11015  2  3 95
     1 0 63  23349M   834M 12457   0   0   0     4 51247 2078   0 3945  179 14926  6  2 92
     2 0 63  27343M  3130M  9295   0   0   0  2708   0   2      0   73 6988 1377   7  1 92
     ....中间比较正常,因为插入时间比较久
     1 0 63  28788M  2934M 25760   0   0   0  5860   0   620   8 5529 42712 12924 11  2 86
     0 0 63  25963M  3081M  4379   0   0   0 24049   0   3445  15 11274 97350 31798  2  7 91
     0 0 63  33689M  1801M   388   0   0   0  4492   0 4403  15 8780 135421 35502  2  5 93

    不熟悉mysql内部机制,但是很明显,随着表越来越大,表插入速度越来越慢,因为系统调用和上下文切换越来越频繁了,浪费了很多CPU时间。
    到了mysql表里有六千万多条数据时,每插入五十万条记录,已经要耗时100s,整个mysql数据库变得很繁忙,一些几万数据的插入也慢慢不能及时处理。

    以下是一个拷贝4G文件到远程NFS的vmstat例子:

     procs      memory      page                    disks     faults         cpu
     r b w     avm    fre   flt  re  pi  po    fr  sr da0 da1   in   sy   cs us sy id
     2 0 63  19731M  2400M 24415   0   0   0 70077   0  14   0  591 3915 1770 12  1 87
     0 0 63  16352M  3594M   443   0   0   0 154948   0 2471   0 5067 17602 19448  1  2 96
     0 0 63  16352M  3594M     0   0   0   0     0   0 772   0 1590  134 6577  0  0 100
     0 0 63  16352M  3594M     0   0   0   0     0   0 856   0 1750  164 7135  0  0 100
     0 0 63  16361M  3594M  1112   0   0   0  1030   0 400   0  815 1248 3620  0  0 100
     0 0 63  16361M  3594M     0   0   0   0     0   0   0   0   15  116  488  0  0 100
     0 0 63  16352M  3594M   329   0   0   0   352   0 2186   0 4275  595 15809  0  2 98
     0 0 63  16352M  3594M     0   0   0   0     0   0 270   0  532  134 3186  0  0 100
     0 0 63  16352M  3594M     0   0   0   0     0   0 185   0  368  164 2062  0  0 100

     

    最后稳定下来,状态良好的vmstat例子:

     procs      memory      page                    disks     faults         cpu
     r b w     avm    fre   flt  re  pi  po    fr  sr da0 da1   in   sy   cs us sy id
     0 0 63  16292M  3564M     0   0   0   0     0   0   0   0   12  142  472  0  0 100

     

  • Nginx配置文件nginx.conf中文详解

    #定义Nginx运行的用户和用户组

    user www www;

     

    #nginx进程数,建议设置为等于CPU总核心数。

    worker_processes 8;

     

    #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]

    error_log /var/log/nginx/error.log info;

     

    #进程文件

    pid /var/run/nginx.pid;

     

    #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。

    worker_rlimit_nofile 65535;

     

    #工作模式与连接数上限

    events

    {

    #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。

    use epoll;

    #单个进程最大连接数(最大连接数=连接数*进程数)

    worker_connections 65535;

    }

     

    #设定http服务器

    http

    {

    include mime.types; #文件扩展名与文件类型映射表

    default_type application/octet-stream; #默认文件类型

    #charset utf-8; #默认编码

    server_names_hash_bucket_size 128; #服务器名字的hash表大小

    client_header_buffer_size 32k; #上传文件大小限制

    large_client_header_buffers 4 64k; #设定请求缓

    client_max_body_size 8m; #设定请求缓

    sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。

    autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。

    tcp_nopush on; #防止网络阻塞

    tcp_nodelay on; #防止网络阻塞

    keepalive_timeout 120; #长连接超时时间,单位是秒

     

    #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。

    fastcgi_connect_timeout 300;

    fastcgi_send_timeout 300;

    fastcgi_read_timeout 300;

    fastcgi_buffer_size 64k;

    fastcgi_buffers 4 64k;

    fastcgi_busy_buffers_size 128k;

    fastcgi_temp_file_write_size 128k;

     

    #gzip模块设置

    gzip on; #开启gzip压缩输出

    gzip_min_length 1k; #最小压缩文件大小

    gzip_buffers 4 16k; #压缩缓冲区

    gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)

    gzip_comp_level 2; #压缩等级

    gzip_types text/plain application/x-javascript text/css application/xml;

    #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。

    gzip_vary on;

    #limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用

     

    upstream blog.yourname.com {

    #upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。

    server 192.168.80.121:80 weight=3;

    server 192.168.80.122:80 weight=2;

    server 192.168.80.123:80 weight=3;

    }

     

    #虚拟主机的配置

    server

    {

    #监听端口

    listen 80;

    #域名可以有多个,用空格隔开

    server_name www.yourname.com yourname.com;

    index index.html index.htm index.php;

    root /data/www/yourname;

    location ~ .*.(php|php5)?$

    {

    fastcgi_pass 127.0.0.1:9000;

    fastcgi_index index.php;

    include fastcgi.conf;

    }

    #图片缓存时间设置

    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$

    {

    expires 10d;

    }

    #JS和CSS缓存时间设置

    location ~ .*.(js|css)?$

    {

    expires 1h;

    }

    #日志格式设定

    log_format access ‘$remote_addr – $remote_user [$time_local] “$request” ‘

    ‘$status $body_bytes_sent “$http_referer” ‘

    ‘”$http_user_agent” $http_x_forwarded_for’;

    #定义本虚拟主机的访问日志

    access_log /var/log/nginx/access.log access;

     

    #对 “/” 启用反向代理

    location / {

    proxy_pass http://127.0.0.1:88;

    proxy_redirect off;

    proxy_set_header X-Real-IP $remote_addr;

    #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    #以下是一些反向代理的配置,可选。

    proxy_set_header Host $host;

    client_max_body_size 10m; #允许客户端请求的最大单文件字节数

    client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,

    proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)

    proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)

    proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)

    proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小

    proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置

    proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)

    proxy_temp_file_write_size 64k;

    #设定缓存文件夹大小,大于这个值,将从upstream服务器传

    }

     

    #设定查看Nginx状态的地址

    location /NginxStatus {

    stub_status on;

    access_log on;

    auth_basic “NginxStatus”;

    auth_basic_user_file conf/htpasswd;

    #htpasswd文件的内容可以用apache提供的htpasswd工具来产生。

    }

     

    #本地动静分离反向代理配置

    #所有jsp的页面均交由tomcat或resin处理

    location ~ .(jsp|jspx|do)?$ {

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_pass http://127.0.0.1:8080;

    }

    #所有静态文件由nginx直接读取不经过tomcat或resin

    location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$

    { expires 15d; }

    location ~ .*.(js|css)?$

    { expires 1h; }

    }

    }

  • 谷歌浏览器 Chrome 中你可能不知道的快捷键

    越来越多的人在使用谷歌浏览器了,你也同样可能对它的设计感到惊叹,作为开发人员的你,是不是想了解到更多一点的秘密呢?

     

    在浏览器里输入如下快捷方式会得到很多有用的信息,赶快试试吧:

    about:

    about:dns

    about:plugins

    about:memory

    view-source:[URL]

    about:cache

     

    about: 得到浏览器相关的信息 包括 谷歌浏览器,WebKit和V8的版本号,以及用户代理字符串。

    如下所示:

    谷歌浏览器 4.1.249.1042 (正式版本 42199)

    WebKit 532.5

    V8 1.3.18.22

    User Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1042 Safari/532.5

     

    about:dns 得到dns信息,

     

    about:plugins 得到已经安装的插件信息

     

    about:memory 现在 Chrome 的内存占用信息

     

    view-source:[URL] 就是查看源码了,

    比如: view-source:http://www.google.com.hk/webhp?source=g_cn 查看谷歌首页的源码,这个和打开网页在查看源码是一样滴,快捷键 Ctrl+U ,别忘了

     

    about:cache 缓存信息,可能会很大哦

     

    都是很有用的信息,大家赶快动手试试吧。

  • freebsd同步时间

    # ntpdate cn.pool.ntp.org

     

    这样时间就准了。

    cn.poolntp.org 是中国的时间服务器。

     

    如想每天晚上23点同步一次时间

    # ee /etc/crontab

    在最后加入

     

    #Synchronise My Server clock

    #minute hour mday month wday who command

    0 23 * * * root /usr/sbin/ntpdate cn.pool.ntp.org > /dev/null

     

    保存退出,就可以了。

  • freebsd 下vsftpd安装错误

    ===> Deinstalling for ftp/vsftpd

    ===> vsftpd-ssl not installed, skipping

    ===> Installing for vsftpd-ssl-3.0.2

    /usr/bin/env PKG_PREFIX=/usr/local /bin/sh /usr/ports/ftp/vsftpd/pkg-install vsftpd-ssl-3.0.2 PRE-INSTALL

    pw: no such user `ftp’

    pw: user ‘ftp’ already exists

    Failed to add user ftp as gid 14

    *** Error code 1

    Stop in /usr/ports/ftp/vsftpd.

    *** Error code 1

    Stop in /usr/ports/ftp/vsftpd.

     

    遇到这个问题后,搞了一天,才得到解决,也不知道是不是对所有人都实用。解决方法如下:

    直接删除ee /etc/password 和 /etc/master.passwd手动删除ftp用户,然后

    pwd_mkdb /etc/master.passwd更新一下ok

    再cd /usr/ports/ftp/vsftpd && make install clean

  • 天堂的门坏了

    天堂门坏了,上帝招标重修。

    印度人说:3千块弄好,理由是材料费1千,人工费1千,我自己赚1千;

    德国人说:要6千,材料费2千,人工2千,自己赚2千;

    最后中国人淡定地说:这个要9千元,3千给你,3千我的,3千给那个印度人干。上帝拍案:中标!

     

     

    后来地狱的门也坏了,招标时吸取教训,制定控制价3000。

    德国人看了一眼走了,印度人报价3000。

    中国人给了评标的小鬼500,报价3000,中标。

    德国人印度人都纳闷:看他怎么干?

    再后来,中国人花了500材料500人工,修了一半宣布停工。

    拖了半年,地狱追加投资3000,完工!

     

     

    再后来天堂连接地狱的电梯坏了,也要重修。

    经过前面两次教训后,控制定价3000而且要一次性修好。

    德国人又来,看了一下走了,印度人报价3000。

    中国人也报价3000而且还称完工后有茅台送,中标。

    拿到钱后中国人开工。材料500人工500。完工后。

    上帝叫人验收。验收员(事先收了中国人红包500)说不合格,要重建。

    于是追加资金9000重建!

     

     

    再后来,人间的大门也坏了,投胎的上不来。

    经过前几次的教训之后,严格定价3000,监理,审计现场跟踪!并且免费保修1亿年。

    德国人吓跑了,印度人报价3000,

    中国人来了,无偿修好,免费保修2亿年,但要5万年的管理权,上帝同意了。

    于是中国人修好了后在门口设了个收费站,投胎每人每次500,双向收费上不封顶。

    多给钱的投胎到美国,给500的投到欧洲,逃费的一律投到中国。