这几天机器换系统,重装了VS2010 ,笔记本在编译是速度很慢,硬盘灯一直是亮的。VS2010调整下可以加快VS的速度。
关特效,关不必要的智能
加内存,现在内存是白菜价,加一条内存可以起到很好的效果。如果没加内存,可以使用个U盘开启readboost。
编译过程中会在硬盘写大量文件,如果系统中安装了杀毒软件,杀毒软件会扫描文件。如果对相应目录设置不被扫描,速度会有很大提高。
换固态硬盘,这个调整最明显,花钱有点多,现在SSD成本在10元/1G还是有点贵。
这几天机器换系统,重装了VS2010 ,笔记本在编译是速度很慢,硬盘灯一直是亮的。VS2010调整下可以加快VS的速度。
关特效,关不必要的智能
加内存,现在内存是白菜价,加一条内存可以起到很好的效果。如果没加内存,可以使用个U盘开启readboost。
编译过程中会在硬盘写大量文件,如果系统中安装了杀毒软件,杀毒软件会扫描文件。如果对相应目录设置不被扫描,速度会有很大提高。
换固态硬盘,这个调整最明显,花钱有点多,现在SSD成本在10元/1G还是有点贵。
今天是2012年的第一天,
还算不错的2010年过去了,2012年愿望:
今年把自己的个人问题解决,今年把婚结了,我们都稳定下来。结婚意味着跟多的责任,两个人都要融入对方家庭。像女朋友说的,今后就是两个爸爸妈妈,要好好照顾。
工作要好好搞,有目标,有追求,改变目前被动的状态。
爱我的和我爱的人都好好的,保重身体,幸福生活。我会好好的。。。
EOF
很久没有写blog了,这次是我的aws一周年试用到期了,准备换一个空间继续写。wordpress使用了一年左右,还是感觉不爽,不够geek。原来是先写rst格式文件,生成html然后再到Wordpress中发布,主要还是有洁癖,不喜欢所见即所得编辑器生成的html代码,相当凌乱。在v2ex上看到讨论jekll模版引擎来写文章,mrakdown我不熟悉,blog发布的原理与movbletype。当年我就想,如果有一个blog程序,有movable type的静态文件生成能力,又能不用写html发布,那就完美了。octopress刚好能满足这种需求,足够简洁, 静态文件发布,爱不失手。
主要改变:
wordpress 迁移到otcopress,原来文件进行了迁移。
熟悉git ,原来是使用hg,主要原因是bitbucket当时不支持git.git使用起来真是相当爽,比hg还好用.相比git ,svn、tfs这类简直没法用.
域名服务器从godaddy转到国内的dnspod,更改生效的时间相当快,改域名后很短时间内就可以生效。
使用github 的pages服务,并设置了CNAME映射,blog.xiangjian.info就映射到xiangjian.github.com.
tornado先天对异步(no-bolocking)处理能力,非常适合作为Web服务。tornado在linux平台使用epoll来实现异步事件的处理,性能非常好。但是python做为一个脚步语言,单进程执行,无法利用多CPU,对当今的多核CPU是一个很大的浪费。为提高性能,提高CPU利用率,一般会将tornado程序允许cup*n个。
怎样才能放便启动多个tornado程序呢,我们可以用supervisor来管理多个tornado应用。supervisor安装非常方便,easy_install supervisord就可以。
以下是supervisor的配置,我在一台服务器上配置了四个tornado服务。
config
; supervisor. [group:gisapp] programs=gis-8001,gis-8002,gis-8003,gis-8004 [program:gis-8001] command=python /home/gis/gis/gisserver.py --port=8001 directory=/home/gis/gis/ autorestart=true redirect_stderr=true stdout_logfile=/home/gis/gis/logs/gis_server-8001.log stdout_logfile_maxbytes=500MB stdout_logfile_backups=50 stdout_capture_maxbytes=1MB stdout_events_enabled=false loglevel=warn [program:gis-8002] command=python /home/gis/gis/gisserver.py --port=8002 directory=/home/gis/gis/ autorestart=true redirect_stderr=true stdout_logfile=/home/gis/gis/gis_server-8002.log stdout_logfile_maxbytes=500MB stdout_logfile_backups=50 stdout_capture_maxbytes=1MB stdout_events_enabled=false loglevel=warn [program:gis-8003] command=python /home/gis/gis/gisserver.py --port=8003 directory=/home/gis/gis/ autorestart=true redirect_stderr=true stdout_logfile=/home/gis/gis/gis_server-8003.log stdout_logfile_maxbytes=500MB stdout_logfile_backups=50 stdout_capture_maxbytes=1MB stdout_events_enabled=false loglevel=warn [program:gis-8004] command=python /home/gis/gis/gisserver.py --port=8004 directory=/home/gis/gis/ autorestart=true redirect_stderr=true stdout_logfile=/home/gis/gis/gis_server-8004.log stdout_logfile_maxbytes=500MB stdout_logfile_backups=50 stdout_capture_maxbytes=1MB stdout_events_enabled=false loglevel=warn
怎么让四个端口同时提供服务呢?可以使用web服务神器nginx,nginx自带了负载平衡功能,
可以让这4个服务同时提供服务。
nginx config
upstream gisserver{
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
server 127.0.0.1:8004;
}
location /tile/ {
proxy_pass http://gisserver;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass_header Set-Cookie;
}
更新:
上述配置可以精简,supervisord配置可以使用变量表示
; supervisor. [group:gisapp] programs=gis-web [program:gis-web] command=python /home/gis/gis/gisserver.py --port=80%(process_num)02d directory=/home/gis/gis/ autorestart=true redirect_stderr=true stdout_logfile=/home/gis/gis/logs/gis_server-80%(process_num)02d.log stdout_logfile_maxbytes=500MB stdout_logfile_backups=50 stdout_capture_maxbytes=1MB stdout_events_enabled=false loglevel=warn numprocs-4 numprocs_start=1
对不同的服务器,之需要调整numprocs值就可以。
我的T410i很久以前就升级了4G内存,但是32位系统使用不了全部的内存,单位的网络准入系统又不支持64位系统。内存一直都没有充分利用,其实可以做一个内存盘把一些暂存的内容放到这个上面来。有几个好处:
1.速度快,本来这块内存是用不到的,内存的速度比硬盘快很多。
2.重启系统这一块内容会消失,可以做临时存储。如totalcommand解压缓存。
ramdisk我使用的是ramdisk 效果还不错。
VS2010额编译速度一直不是太快,把编译内容放到ramdisk中可以显着提高速度.配置方法可以参考asp.net ramdisk配置
上周五,reddit programming区有人贴出了个一段代码的code review,引发了大家讨论,堪称是github.com网站最热烈的讨论。一个程序的升级脚本中写了如下一段代码:
rm -rf /usr /lib/nvidia-current/xorg/xorg
这个很小但是非常致命的错误,当用户执行升级脚本,他的/usr 目录就会被删除,至少有三个用户中招。
在这个讨论 地址 ,人民群众正在进行各种有趣的讨论^_^。
前一段时间,我编译mapnik 需要occi支持,发了我差不多两周的时间,怎么编译都通不过,后来没有办法给mapnik作者发邮件,很快作者说是个bug,已经改好,让我编译试试。我下载最新代码,果然编译没有问题。好奇心驱使我看到了作者 fix 修改了什么东西,居然是写代码时少写个分号,害我编译了好久,换了不少环境。
昨天早上看到台机启动有一个错误,但是启动太快,没看清是什么错误。我上网查了下,说要在/etc/rc.conf 中加入一行代码,我想也没想就添加了一行代码。重启机器怎么也进不了系统,也进不了console界面。没有办法我只能使用u盘进rescue系统,删除那一行文件,重启后一切恢复恢复正常。
测试对程序来说是致命的,没有经过测试的程序可能会导致很严重的问题。希望这样的问题会少点,程序员在写程序时尽量多做点测试,少出点这种错误。
最近要编译一个mapnik2,其中安装依赖环境icu和boost这两个东西费尽周折。最后总算弄明白了linux下的动态链接库是怎么管理的?动态链接库多版本会不会冲突?
linux支持unix中的动态链接库方法,使用export LD_LIBRARY_PATH= 这各方式。linux的动态链接库引用是通过ldconfig来实现的。
linux 动态链接库使用ldconfig命令来查找系统动态链接库,并生成缓存方便系统引用。编译代码时,软件依赖一般是从ldconfig的cache中查找。下面主要说下linux如何管理动态链接库
ldconfig 有以下几个配置文件:
/etc/ld.so.conf /etc/ld.so.conf.d/*
在文件中说明了引用动态链接库的路径,与export的效果着不多。指定路径后,只需要运行ldconfig即可重建动态链接库索引。
使用 ldconfig -p 可以查询系统中注册的dll文件。
另外还有个查看程序引用的动态链接库在系统中是否存在,使用ldd 加动态链接库地址就可以查看。例如,查看mapnik postgis插件引用的动态链接库在系统中是否存在可以使用
ldd /usr/lib/mapnik2/input/postgis.input
linux-vdso.so.1 => (0x00007fff3791f000)
libpq.so.5 => /usr/lib/libpq.so.5 (0x00007f00c0306000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f00bfffc000)
libm.so.6 => /lib/libm.so.6 (0x00007f00bfd79000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f00bfb63000)
libc.so.6 => /lib/libc.so.6 (0x00007f00bf805000)
libssl.so.1.0.0 => /usr/lib/libssl.so.1.0.0 (0x00007f00bf5a8000)
libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0x00007f00bf1ec000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f00befcf000)
/lib/ld-linux-x86-64.so.2 (0x00007f00c0791000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f00bedca000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007f00bebb2000)
linux 中编译程序或移植环境经常会使用到这两个命令解决实际问题。
最近,要给一台redhat4服务器安装mapnik,在我自己工作的台机使用的是archlinux上,使用ABS安装环境那是相当方便,这台机器安装让人大伤脑筋。rpm包依赖要一个个找,而且,经常要自己编译源代码。
在centos系统中使用yum安装一点都不折腾,redhat4和centos算是同源,可以使用centos来做rh的更新。下面是安装yum的步骤。
方便在redhat 系统中安装软件包,现在的系统是redhat4企业版本,可以使用centos的软件包管理器
你可以用yum和rpm文件更新,其实很简单.
用wget下载yum
# wget http://packages.sw.be/yum/yum-2.4.2-0.4.el4.rf.noarch.rpm
安装此rpm文件
# rpm -ivh yum-2.4.2-0.4.el4.rf.noarch.rpm
配置 /etc/yum.conf 使用兼容的更新源(这里使用搜狐源,这个比较快。)
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
tolerant=1
exactarch=1
[base]
name=CentOS-$releasever – Base
baseurl=http://mirrors.sohu.com/centos/4/os/i386/
gpgcheck=1
[updates]
name=Red Hat Linux $releasever – Updates
baseurl=http://mirrors.sohu.com/centos/4/updates/i386/
gpgcheck=1
[dag]
name=Dag RPM Repository for RHEL5
baseurl=http://mirrors.sohu.com/dag/redhat/el5/en/$basearch/dag/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.sohu.com/dag/RPM-GPG-KEY.dag.txt
安装CentOS的GPG Key:
# rpm --import http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-4
测试yum是否正常(下面是更新所有的rpm):
# yum update //更新系统
建立缓存:
#yum makecache
下篇写mapnik的编译安装。
三月已经过去了,总体是比较纠结,月底一切都还好。家里的事一直不断,想不到拆迁会到我们那边去,真是没法说。最高兴的是感情稳定,原来自己几个愿望,找一个善善良良的妻子,养一全聪聪明明的孩子,想一个简简单单道理,过一辈子。
还可以的:
不足:
项目管理上还须改进,现在才几个人的项目,每天花在代码同步,给别人查错上的时间太多了。代码审核也没有做,出了问题只有问我,但我也没有办法,代码没有办法在源头控制。项目管理要学习。任务太多,反而不能专心做好现在做的事。
下月改进:
最新比较关注KVM虚拟机,linux内核虚拟机,虚拟效果相当不错,不需要安装复杂的vmware,vbox.vmware创建的虚拟机也可以很方便的在kvm中运行。这篇文章主要讲kvm主机资源超量使用,kvm性能调优,值得关注。
2.6页面回收与反向映射,本周linux 2.6.38发布,主要更新之一就是支持透明大内存页(Transparent Hugepages).这个可以显著提高kvm内存使用率。
再生龙,功能与ghost相似,提供比ghost更多的功能。不过几乎很少有人使用正版的ghost吧,放心使用再生龙。
这个是关于SEO的,搜索引擎对重复内容有惩罚措施,如果你不清楚你的网站是否有重复内容,你可以看下这篇文章。
Drizzle是一个精简版的MySQL分支,在目前的MySQL代码基本之上,将存储过程、视图、触发器、查询缓存、PREPARE语句等等功能从代码中删掉,简化对数据类型和存储引擎的支持,并且进行大胆的重构。最终要实现的目的是将MySQL的代码大大简化,理顺MySQL的架构,改善 MySQL的代码质量,提高系统的稳定性和性能。
找到人缺少自虑的原因。
一家之言,也未必全信
有点闲钱,可以到美股投资试试 。
记下,下次去麦当劳可能会用上。
心酸,看文章,啥也不说