July 23, 2013
exec: “pkg-config”: executable file not found in %PATH% 的解决办法
"在windows下要用 golang 实现操作 zeromq 消息队列,发现在sublime下进行\ngo get -tags zmq_3_x github.com/alecthomas/gozmq\n操作的时候,提示\n# pkg-config –cflags libzmq libzmq libzmq libzmq exec: “pkg-config”: executable file not found in %PATH% exit status 2\n原因是因为没有安装pkg-config.需要手动安装,并设置一下环境变量.pkg-config下载地址: http://ftp.acc.umu.se/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip ( http://ftp.acc.umu.se/pub/gnome/binaries/win64/dependencies/pkg-config_0.23-2_win64.zip)\n如果无法下载,直接打开所在的目录,找到合适的软件包下载.然后将包里bin目录里 …"
July 23, 2013
用golang发送邮件
"配置文件 conf.json\n{ \u0026#34;Username\u0026#34;: \u0026#34;sunxxg@163.com\u0026#34;, \u0026#34;Password\u0026#34;: \u0026#34;123456\u0026#34;, \u0026#34;Smtphost\u0026#34;:\u0026#34;smtp.163.com:25\u0026#34; } 主程序 sendmail.go\npackage main import ( \u0026#34;encoding/json\u0026#34; \u0026#34;fmt\u0026#34; \u0026#34;io\u0026#34; \u0026#34;log\u0026#34; \u0026#34;net/smtp\u0026#34; \u0026#34;os\u0026#34; \u0026#34;strings\u0026#34; ) type cfgmail struct { Username string Password string Smtphost string } type cfg struct { Name, Text string } func main() { // 从json文件中读取发送邮件服务器配置信息 cfgjson := getConf() var cfg cfgmail dec := …"
July 14, 2013
nginx日志切割
"nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件。\n第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。\n第二步向nginx主进程发送USR1信号。\nnginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。\n重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。\n工作进程立刻打开新的日志文件并关闭重名名的日志文件。\n然后你就可以处理旧的日志文件了。\nnginx日志按日期自动切割脚本如下 [shell] #nginx日志切割脚本 #author: http://www.nginx.cn #!/bin/bash #设置日志文件存放目录 logs_path=\u0026quot;/usr/local/nginx/logs/\u0026quot; #设 …"
July 10, 2013
mysql中innodb表的count优化
"作/译者:叶金荣(imysql#imysql.com\u0026gt;),来源: http://imysql.com,欢迎转载。\n起因:在innodb表上做count(*)统计实在是太慢了,因此想办法看能不能再快点。\n现象:先来看几个测试案例,如下\n一、 sbtest 表上的测试\nshow create table sbtest\\G *************************** 1. row *************************** Table: sbtest Create Table: CREATE TABLE `sbtest` ( `aid` bigint(20) unsigned NOT NULL auto_increment, `id` int(10) unsigned NOT NULL default \u0026#39;0\u0026#39;, `k` int(10) unsigned NOT NULL default \u0026#39;0\u0026#39;, `c` char(120) NOT NULL default \u0026#39;\u0026#39;, `pad` char(60) NOT NULL …"
July 8, 2013
Linux下安装php开发框架yaf
"https://github.com/laruence/php-yaf\nyaf框架中文手册:\nyaf手册:\n1.下载并安装yaf扩展 http://pecl.php.net/package/yaf\n#wget http://pecl.php.net/get/yaf-2.2.9.tgz #tar zxvf yaf-2.2.9.tgz #cd yaf-2.2.9 [root@bogon yaf-2.2.9]# whereis phpize phpize: /usr/bin/phpize /usr/share/man/man1/phpize.1.gz /usr/bin/phpize [root@bogon yaf-2.2.9]# /usr/bin/phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 #whereis php-config php-config: /usr/bin/php-config …"
June 25, 2013
centos 6关闭ipv6
"通过网卡属性查看\n命令:ifconfig\n注释:有 “inet6 addr:。。。。。。。“ 的表示开启了ipv6功能.使用下面的方法可以关闭ipv6\n1.修改/etc/modprobe.d/dist.conf\n[shell]#vi /etc/modprobe.d/dist.conf[/shell]\n添加下面两行内容\nalias net-pf-10 off alias ipv6 off\n保存退出,并且重新启动系统\n2.验证ipv6模块是否加载\n[shell]#lsmod|grep ipv6[/shell]\n4.开机不启动\n[shell]#chkconfig ip6tables off[/shell]\n重启 用命令“lsmod | grep v6”查看,是否启动加载!\n=======================================\n1.修改/etc/sysconfig/network,追加:\nNETWORKING_IPV6=no\n2.修改/etc/hosts文件,把ipv6的那句本地主机名解析的也注释掉:\n#::1 localhost localhost6 …"
June 18, 2013
测试golang中的多核多线程
"“并发 (concurrency)” 和 “并行 ( parallelism)” 是不同的。在单个 CPU 核上,线程通过时间片或者让出控制权来实现任务切换,达到 “同时” 运行多个任务的⺫的,这就是所谓的并发。但实际上任何时刻都只有一个任务被执行,其他任务通过某种算法来排队。\n多核 CPU 可以让同个进程内的 “多个线程” 做到真正意义上的同时运,它们之间不需要排队 (依然会发生排队,因为线程数量可能超出 CPU 核数量,还有其他的进程等等。这里说的是一个理想状况),这才是并行。除了多核,并行计算还可能是多台机器上部署运行。\npackage main import ( \u0026#34;fmt\u0026#34; \u0026#34;runtime\u0026#34; ) func test(c chan bool, n int) { x := 0 for i := 0; i \u0026lt; 1000000000; i++ { x += i } println(n, x) if n == 9 { c \u0026lt;- true } } func main() { runtime.GOMAXPROCS(1) //设置cpu的核的数量, …"
June 17, 2013
golang中的Array 、Slices 和 Maps
"**注意slice和数组在声明时的区别:**声明数组时,方括号内写明了数组的长度或使用...自动计算长度,而声明slice时,方括号内没有任何字符。\narr1 := [10]int{1,2,3,4} //数组,长度为10,只有4个元素指定,其它的元素值默认为0 arr2 := [...]string{\u0026#34;a\u0026#34;,\u0026#34;b\u0026#34;,\u0026#34;c\u0026#34;} //数组,长度自适应,这里长度为3 s1 := []int{1,2,3,4} //slice,目前长度为4,可能通过append来动态添加元素个数 示例:\npackage main import ( \u0026#34;fmt\u0026#34; ) func main() { //array example arr := [10]int{1, 2, 3} //array 指定前三个值,其它值使用默认类型值0 fmt.Println(len(arr)) fmt.Println(arr) //a1 := append(arr, 4, 5) //数组不支持append,只有slice才支持append //fmt.Println(a1) …"
June 4, 2013
golang中包的用法
"将d:/gotest/ 目录加入到GOPATH中.这里会涉及到包和结构体还有一些方法的用法,可以再深入的了了解一下\n注意一下一些struct和 func 名称的大小写问题.\n首先要在 $GOPATH/src 目录里创建一个包名目录,这里包名目录为stu,与文件名一样(也可以不一样),大概流程参考: d:/gotest/src/main/main.go\npackage main import ( \u0026#34;fmt\u0026#34; \u0026#34;stu\u0026#34; ) func main() { //sxf := new(stu.Stu) sxf := \u0026amp;stu.Stu{} sxf.SetName(\u0026#34;zhangli\u0026#34;) a := sxf.GetName() fmt.Println(a) } d:/gotest/src/stu/stu.go\npackage stu type Stu struct { name string //age int } func (s *Stu) SetName(name string) { s.name = name } func (s *Stu) …"
June 3, 2013
centos下更新Python版本的步骤
"准备安装gitlab,发现系统目前的python版本为2.4.3版本.太低了, 虽然目前最高版本为3.3.0版本.但gitlab不支持这个版本.没有办法,我们这里将python升级到2.7.6版本.\n更新python千万不要把老版本的删除!新老版本是可以共存的,很多基本的命令、软件包都要依赖预装的老版本python的,比如yum。\n第1步:更新gcc,因为gcc版本太老会导致新版本python包编译不成功\n[shell]yum -y install gcc[/shell]\n系统会自动下载并安装或更新,等它自己结束\n第2步:下载Python 2.7.0软件包\n[shell]wget http://python.org/ftp/python/2.7/Python-2.7.tar.bz2 tar -jxvf Python-2.7.tar.bz2 cd Python-2.7 ./configure make all make install make clean make distclean /usr/local/bin/python2.7 -V cd ../[/shell]\n编译安装完毕以 …"