centos 添加 epel 和 remi 源

64位:

rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

32位:

rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

导入 key:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

添加 remi 源

 rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-remi

Mac OS X下PhantomJS产生“killed 9”问题的解决方法

最近研究python抓取网页,需要用到PhantomJS。在MAC下安装其实很简单,从官网把压缩包下载下来解压,拷贝到bin目录下即可。但是在安装之后却发现有问题,执行phantomjs命令时出现killed 9的错误。

phantomjs执行failed for killed 9

解决办法不复杂,进行如下操作。

#首先安装upx

brew install upx

安装upx,密码输错了两次...囧rz

#然后对之前解压出来的phantomjs文件进行处理

upx -d /usr/local/bin/phantomjs

对phantomjs进行处理

最后再测试一下,可以正常运行了!

测试验证

新技能get——拆解iphone5换电池

日志

回归后的第一个“技术贴”竟然是关于硬件的——给iphone5换电池,哈哈。

自从小5的电池由于某种原因突然变得不给力之后,每次出门只好带个重重的充电宝,每隔一两个小时就得重一次电,而且还要防着前一秒70+%电量,后一秒瞬间变30-%,真是痛苦啊。去苹果店检测,排号等待各种麻烦就不提了,一检测说电池可能没问题,是主板问题,因为过保了,换主板2100,如果非要觉得是电池坏了,也可以换电池900块钱。当时就觉得帝国主义的企业真是抢钱不要脸啊!

于是乎下决心,上淘宝买了块号称原装的电池(目测还是挺正规的),自己动手换!

不多说了,直接上图!

等待重生的小5、新电池、iphone拆机工具包和备用工具盒

等待重生的小5、新电池、iphone拆机工具包和备用工具盒

来个工具特写

来个工具特写

首先为防万一,先备份下资料

首先为防万一,先备份下资料

开始!拆掉底部两颗螺丝,用吸盘吸住键盘下部

开始!拆掉底部两颗螺丝,用吸盘吸住键盘下部

从底部开始小心从两边撬开面板,注意顶部有个排线别弄坏了,不然就杯具啦!

从底部开始小心从两边撬开面板,注意顶部有个排线别弄坏了,不然就杯具啦!

 

看看这就是小5的内部啊,苹果的工业设计还是很工整的,布局很干净

看看这就是小5的内部啊,苹果的工业设计还是很工整的,布局很干净

拆下电池排线上的螺丝(其实只有两颗,我手贱把三颗螺丝都取下来了。。。)

拆下电池排线上的螺丝(其实只有两颗,我手贱把三颗螺丝都取下来了。。。)

来个螺丝特写,太小了,要是不小心弄掉地上就找不着了。。

来个螺丝特写,太小了,要是不小心弄掉地上就找不着了。。

这里就是电池排线接口处,小心撬开排线接头

这里就是电池排线接口处,小心撬开排线接头

撬下电池,这步稍微有点暴力,主要是电池下面有胶

撬下电池,这步稍微有点暴力,主要是电池下面有胶

取下老电池,准备换上新电池!

取下老电池,准备换上新电池!

按原样将电池放好、排线接头插好,顺便对比下新旧电池

按原样将电池放好、排线接头插好,顺便对比下新旧电池

将固定接头的金属垫片装上

将固定接头的金属垫片装上

小心盖上面板,确认卡上后装上螺丝

小心盖上面板,确认卡上后装上螺丝

开机,顺利启动,没有花屏,哦也!(没弄坏就好。。。)

开机,顺利启动,没有花屏,哦也!(没弄坏就好。。。)

最后用iBackupBot(今天才知道的神器啊)查看下电池状态,确实是新电池,状态不错!开始充电!

最后用iBackupBot(今天才知道的神器啊)查看下电池状态,确实是新电池,状态不错!开始充电!

到此,顺利完成小5重生!不得不说第一次拆iphone,还是有点紧张,不过顺利拆开后就觉得其实还蛮容易的,哈哈。

就这样,明天开始试用,看看是不是把问题真正解决了。

============ 追加 ===========

哈哈哈果然活过来了,还好没被苹果店的Genius忽悠了!

 

寻找天堂

有一天,我要走出这片雾霾,仰望那片星海。
有一天,我要冲破这片枷锁,俯瞰这个世界。

梦想总是遥远,所以在远方为我指明方向。
现实总是残酷,所以在当下磨砺我的翅膀。

岁月不会教人成长,痛苦和挫折才能让你坚强。
不要怀疑年少时的梦想,无需徘徊曾有过的彷徨,道路总有回转,即使错了,也可以重新调转方向。

不忘初心,方得始终,人终究是在为自己而活。
那些琐碎的只言片语,那些旁观的万语千言,只要你不去在意,它们终将随风飘散。

做自己吧!
生命之所以迷人,是因为要执着勇敢活出独一无二的精彩。

做自己吧!
人生之所以可爱,是因为要披荆斩棘创造不曾想过的未来。

答应自己有一天,要穿过森林和海洋,去寻找一个地方,它是人间,胜似天堂。

产业结构调整指导目录(2011年本)(2013年修正)

产业结构调整指导目录(2011年本)(2013年修正)

中华人民共和国国家发展和改革委员会令第21号

为更好地适应转变经济发展方式的需要,根据《国务院关于发布实施<促进产业结构调整暂行规定>的决定》(国发[2005]40号),我委会同国务院有关部门对《产业结构调整指导目录(2011年本)》有关条目进行了调整,形成了《国家发展改革委关于修改<产业结构调整指导目录(2011年本)>有关条款的决定》,现予公布,自2013年5月1日起施行。法律、行政法规和国务院文件对产业结构调整另有规定的,从其规定。

点此下载:产业结构调整指导目录(2013修正)

Android中绘制有色小圆点

在做列表的时候,为了美观,有时会要在文字前面加个带颜色的小圆点进行美化,效果大概如下图所示。

实现的方法比较简单,使用Bitmap新建个画布对象,然后创建Canvas作为图层在Bitmap上进行绘制即可。

写了个简单的方法,代码如下:


/**
 * 画圆点
 * @param color 颜色
 * @param radius 半径
 * @return
 */
public static Bitmap drawCirclePoint(String color, int radius) {
	Bitmap bitmap = Bitmap.createBitmap(2*radius, 2*radius, Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);            
    Paint paint = new Paint();
    paint.setAntiAlias(true);
    if (color != null &amp;&amp; color.length() >= 7) {
    	paint.setColor(Color.parseColor(color));
    }
    else {
    	paint.setColor(Color.parseColor(createRandomColorString()));
    }
    paint.setStyle(Style.FILL);
    paint.setStrokeWidth(3);
    canvas.drawCircle(radius, radius, radius, paint);
    canvas.save(Canvas.ALL_SAVE_FLAG);
    canvas.restore();
    return bitmap;
}

 

调用方法也比较简单。


ImageView iv = new ImageView();

iv.setImageBitmap(drawCirclePoint("#ff0000", 5));

 

解决Lighttpd+php(fcgi)下Interal Service Error的一种情况(Linux)

今天公司一个网站当掉了,第一反应就是重启lighttpd,果然重启完就可以正常访问了。可是又发现php页面还是不能访问,提示的是“500 Interal Service Error”。检查log文件,发现在一周之前曾留下这样的错误信息:

2011-04-10 16:06:19: (request.c.836) content-length broken: -1 -> 400

2011-04-10 16:06:19: (request.c.836) content-length broken: -1 -> 400

2011-04-10 16:06:28: (request.c.836) content-length broken: -1 -> 400

2011-04-10 16:06:29: (request.c.836) content-length broken: -1 -> 400

2011-04-10 16:06:29: (request.c.836) content-length broken: -1 -> 400

2011-04-10 16:06:56: (mod_fastcgi.c.1761) connect failed: Connection refused on unix:/tmp/php.socket-6

2011-04-10 16:06:56: (mod_fastcgi.c.2930) backend died; we’ll disable it for 5 seconds and send the request to another backend instead: reconnects: 0 load: 4

2011-04-10 16:07:02: (mod_fastcgi.c.2743) fcgi-server re-enabled: unix:/tmp/php.socket-6

2011-04-10 16:07:03: (mod_fastcgi.c.1761) connect failed: Connection refused on unix:/tmp/php.socket-6

2011-04-10 16:07:03: (mod_fastcgi.c.2930) backend died; we’ll disable it for 5 seconds and send the request to another backend instead: reconnects: 0 load: 4

2011-04-10 16:07:09: (mod_fastcgi.c.2743) fcgi-server re-enabled: unix:/tmp/php.socket-6

2011-04-10 16:07:10: (mod_fastcgi.c.1761) connect failed: Connection refused on unix:/tmp/php.socket-6

2011-04-10 16:07:10: (mod_fastcgi.c.2930) backend died; we’ll disable it for 5 seconds and send the request to another backend instead: reconnects: 0 load: 4

2011-04-10 16:07:16: (mod_fastcgi.c.2743) fcgi-server re-enabled: unix:/tmp/php.socket-6

2011-04-10 16:07:17: (mod_fastcgi.c.1761) connect failed: Connection refused on unix:/tmp/php.socket-6

2011-04-10 16:07:17: (mod_fastcgi.c.2930) backend died; we’ll disable it for 5 seconds and send the request to another backend instead: reconnects: 0 load: 4

2011-04-10 16:07:23: (mod_fastcgi.c.2743) fcgi-server re-enabled: unix:/tmp/php.socket-6

2011-04-10 16:07:24: (mod_fastcgi.c.1761) connect failed: Connection refused on unix:/tmp/php.socket-6

2011-04-10 16:07:24: (mod_fastcgi.c.2930) backend died; we’ll disable it for 5 seconds and send the request to another backend instead: reconnects: 0 load: 4

2011-04-10 16:07:30: (mod_fastcgi.c.2743) fcgi-server re-enabled: unix:/tmp/php.socket-6

2011-04-10 16:07:31: (mod_fastcgi.c.1761) connect failed: Connection refused on unix:/tmp/php.socket-6

2011-04-10 16:07:31: (mod_fastcgi.c.2930) backend died; we’ll disable it for 5 seconds and send the request to another backend instead: reconnects: 0 load: 4

2011-04-10 16:07:37: (mod_fastcgi.c.2743) fcgi-server re-enabled: unix:/tmp/php.socket-6

2011-04-10 16:07:39: (mod_fastcgi.c.1761) connect failed: Connection refused on unix:/tmp/php.socket-6

2011-04-10 16:07:39: (mod_fastcgi.c.2930) backend died; we’ll disable it for 5 seconds and send the request to another backend instead: reconnects: 0 load: 4

2011-04-10 16:07:45: (mod_fastcgi.c.2743) fcgi-server re-enabled: unix:/tmp/php.socket-6

2011-04-10 16:07:46: (mod_fastcgi.c.1761) connect failed: Connection refused on unix:/tmp/php.socket-6

2011-04-10 16:07:46: (mod_fastcgi.c.2930) backend died; we’ll disable it for 5 seconds and send the request to another backend instead: reconnects: 0 load: 4

2011-04-10 16:07:52: (mod_fastcgi.c.2743) fcgi-server re-enabled: unix:/tmp/php.socket-6

2011-04-10 16:07:53: (mod_fastcgi.c.1761) connect failed: Connection refused on unix:/tmp/php.socket-6

2011-04-10 16:07:53: (mod_fastcgi.c.2930) backend died; we’ll disable it for 5 seconds and send the request to another backend instead: reconnects: 0 load: 4

2011-04-10 16:07:59: (mod_fastcgi.c.2743) fcgi-server re-enabled: unix:/tmp/php.socket-6

2011-04-10 16:08:00: (mod_fastcgi.c.1761) connect failed: Connection refused on unix:/tmp/php.socket-6

2011-04-10 16:08:00: (mod_fastcgi.c.2930) backend died; we’ll disable it for 5 seconds and send the request to another backend instead: reconnects: 0 load: 4

2011-04-10 16:08:06: (mod_fastcgi.c.2743) fcgi-server re-enabled: unix:/tmp/php.socket-6

本来一直百思不得其解,上网找资料也没有可行的方法。后来注意到log中提示的“/tmp/php.socket-6”这个文件,于是到该目录查看了下,发现有若干个类似文件,并且创建时间都是4月10日。心想也许这些文件跟无法访问有关,于是将其移出该目录,重启lighttpd,发现竟然完全可以正常访问了!!具体原因是什么,这个还需要好好学习一下相关的资料,以后再补充上来吧。



你的Android程序够健壮吗? 试试用Monkey来测试吧!

今天测试产品的时候学到的一句命令,很给力啊!

adb shell monkey -p <your.package.name> -v 500000

赶紧把相关资料找来分享下。

—————————— 以下部分为转帖 ———————————-

Monkey是运行在模拟器或设备上的一个程序,用来伪随机地模拟点击和触摸等用户事件,就如其它许多系统事件一样。Monkey可以用于对我们开发的应用程序进行随机和重复的压力测试。

简介

Monkey是一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。Monkey包括许多选项,它们大致分为四大类:

· 基本配置选项,如设置尝试的事件数量。

· 运行约束选项,如设置只对单独的一个包进行测试。

· 事件类型和频率。

· 调试选项。

Monkey运行的时候,它生成事件,并把它们发给系统。同时,Monkey还对测试中的系统进行监测,对下列三种情况进行特殊处理:

· 如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。

· 如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。

· 如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。

按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件。

Monkey基本用法

可以通过开发机器上的命令行或脚本来启动Monkey。由于Monkey运行在模拟器/设备环境中,所以必须用其环境中的shell来进行启动。可以通过在每条命令前加上adb shell来达到目的,也可以进入Shell后直接输入Monkey命令。基本语法如下:

$ adb shell monkey [options]

如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:

$ adb shell monkey -p your.package.name -v 500

命令选项参考