2012年

CentOS登录信息显示IP

# 备份
cp /etc/issue /etc/issue_standard

创建脚本文件

在脚本文件中写入以下内容。

#!/bin/bash
cat /etc/issue_standard >/etc/issue
/sbin/ifconfig eth0 |grep "inet addr"|sed 's/^.* addr://g' |sed 's/Bcast.*$//g' >>/etc/issue
echo "" >>/etc/issue

增加可执行权限,加入开机启动。

2012-10-08补充

由于只有开机启动的时候写IP信息的话,登录后改过IP,再退出登录的时候就会有问题(显示的还是原来的IP)。

# 网卡启用前执行
/sbin/ifup-pre-local
# 网卡被启用后执行
/etc/sysconfig/network-scripts/ifup-post
# 网卡启用后,最后执行
/sbin/ifup-local
# 网卡被禁用后执行
/etc/sysconfig/network-scripts/ifdown-post

php创建透明缩略图的方法

我所知的两种方法:

  • 非混色模式(透明色具有覆盖的效果)
  • 使新创建的画布透明

方法一、非混色模式

$thumb = imagecreatetruecolor(100, 100);
imagealphablending($thumb, false);
imagesavealpha($thumb, true);
// 裁剪
// imagecopy
// 缩放
// imagecopyresampled

方法二、让画布透明

$canvas = imagecreatetruecolor(100, 100);
$blackcolor = imagecolorallocate($canvas, 0, 0, 0);
imagecolortransparent($canvas, $blackcolor);
// 画个长方形测试一下
imagefilledrectangle($im, 4, 4, 50, 25, $red);

sed之打点计数器

将第二行的dns nameserver注释掉

sed -r '/nameserver/{
     x;
     s/^/./;
     /^\.{1}$/x;
     /^\.{2,}$/{x;s/^/; /};
     }' /etc/resolv.conf

sublime设置build system

PHP

{
	"cmd": ["php", "-f", "$file"],
	"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
	"selector": "source.php"
}

C++

{
	"cmd": ["g++ -Wall ${file} -o ${file_base_name} && ${file_path}/${file_base_name}"],
	"working_dir": "${file_path}",
	"selector": "source.c++",
	"shell": true
}

Lua

{
	"cmd": ["lua52", "$file"],
	"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
	"selector": "source.lua"
}

顺便,转换文件格式的地方View -> Line Endings

RPM打包spec文件

Summary:   Account6000
Name:      ac6000
Version:   1.0.1
Release:   1
License:   GPL
Group:     System
Source:    account.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
Url:       http://www.inote.cc/
Packager:  WangZhicheng
Prefix:    %{_prefix}
Prefix:    %{_sysconfdir}

%description
Account6000.

%prep
%setup -c
%install
install -d $RPM_BUILD_ROOT
/bin/cp -af * $RPM_BUILD_ROOT

%clean
rm -rf $RPM_BUILD_ROOT
rm -rf $RPM_BUILD_DIR/%{name}-%{version}

%files
%defattr(-,root,root)
/var/www/html/account
/usr/*
/etc/*

install段,是将tar.gz包解压到RPM_BUILD_DIR目录的,而file段拷贝的时候是从RPM_BUILD_ROOT目录拷贝的,所以在install段的时候要将解压到RPM_BUILD_DIR下的文件拷贝到RPM_BUILD_ROOT目录下。

js的trim

在IE6,7,8中String对象没有trim方法,IE9,Chrome,Firefox是有的,解决方法:

if(typeof String.prototype.trim !== 'function') {
	String.prototype.trim = function() {
		return this.replace(/^\s+|\s+$/g, '');
	}
}

如果使用jQuery,直接用$.trim(string)好了。

针对各浏览器的css hack

    /* IE系列的专用hack使用时请注意顺序可能会有影响 */
    .hack { background: #ff0\9; } /*IE*/
    .hack { background: #f0f\0; } /*IE89*/
    .hack { background: #f00\0/; } /*IE8*/
    .hack { +background: #0f0; } /*IE67*/
    .hack { _background: #00f; } /*IE6*/
    @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { head~body .hack { background: #ccc; } } /*Opera*/
    @media screen and (-webkit-min-device-pixel-ratio:0) { .hack { background: #f60; display: block; } } /* Webkit */
    @-moz-document url-prefix() { .hack { background: #fff; } } /* Firefox */

有什么问题请留言!

json字符串to object

在用uploadify的时候遇到一个问题,在上传完成某个文件之后我想用json返回response,但是接收到的response都是字符串格式的,当时找了好久,baidu到一个方法:

eval('(' + jsonstr + ')');

后来无意中看到jq里面有这么一个函数:

$.parseJSON(jsonstr);

...

(new Function("return " + data))();

CentOS6安装webkit2png

增加源

/etc/yum.repos.d/CentOS-ATrpms.repo

#ATrpms
[atrpms]
name= CentOS-$releasever - ATrpms
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/testing
gpgcheck=1
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
enabled=1

shell:

rpm --import http://packages.atrpms.net/RPM-GPG-KEY.atrpms

安装依赖包

yum -y install qt47 qt47-devel qt47-webkit qt47-webkit-devel gcc gcc-c++
yum -y install xauth

安装SIP

cd /usr/local/src
wget http://www.riverbankcomputing.co.uk/static/Downloads/sip4/sip-4.13.1.tar.gz
tar vzxf sip-4.13.1.tar.gz
cd sip-4.13.1
python configure.py
make && make install

安装Imaging

cd /usr/local/src
wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz
tar -zxvf Imaging-1.1.7.tar.gz
cd Imaging-1.1.7
python setup.py install

安装PyQt

cd /usr/local/src
wget http://www.riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-x11-gpl-4.9.tar.gz
tar vzxf PyQt-x11-gpl-4.9.tar.gz
cd PyQt-x11-gpl-4.9
python configure.py -q /usr/lib64/qt47/bin/qmake-qt47
make && make install

webkit2png下载和使用

http://github.com/AdamN/python-webkit2png/

./webkit2png.py -x 1024 768 -g 1024 0 http://box.inote.cc -o ibox.png

安装中文字体

yum -y install wqy-zenhei-fonts.noarch

visual c++杂记

控制台应用程序增加图标

新建文件icon.rc,与图标文件icon.ico放在同一目录下

MAINICON ICON icon.ico

用visual studio打开另存为res文件。
新建一个项目,在资源里添加进刚才的res文件,编译就可以了。

控制台程序不显示控制台

修改程序入口

#pragma comment(linker, "/subsystem:windows /entry:mainCRTStartup")

Oracle clob字段的插入

一般的sql插入语句,当要插入的长度大于4000的时候,数据库就会报错。
可以使用dbms_lob包来处理,先插入一个空的clob值,再将其取出,利用dbms_lob包将数据写入,再更新表。(blob同理)

#创建表
DROP TABLE "SCOTT"."pre_test";
CREATE TABLE "SCOTT"."pre_test" (
"id" NUMBER(8) NULL,
"message" CLOB NULL
);
insert into "pre_test" ("message") values (empty_clob());

待续...

2013-12-11 23:51 更新

由于时间较长,手上目前木有Oracle数据库可供测试,以下代码为伪代码,不能正常运行,但能说明流程:

select message into x;
dbms_lob.write(x, ...);
update "SCOTT"."pre_test" set message=x;

IE下文本框的padding

IE下input的padding是根据input里面的值的长度来的,当值的长度小于input的长度时input的左右padding表现在框上面,而当值的长度大于框的长度时,padding则表现在值上面,只有把值拖到最后面的时候才能看见padding。

这和标准浏览器有很大的区别,也是很头疼的地方。所以在IE下最好使用margin,而不是padding。

redis安装配置

安装

http://redis.io/download 这儿有,不多说。要注意的一点,redis没有make install;所以安装包直接放在/usr/local/redis目录下就好了。

配置

cd /usr/local/redis
cp redis.conf /etc/redis.conf
cd /usr/local/redis/src
ln -s redis-cli /usr/bin/redis-cli
ln -s redis-server /usr/bin/redis-server

对配置文件进行修改

daemonize yes
logfile /dev/null
# 设置最大内存
maxmemory 

开机启动脚本

#!/bin/bash
source /etc/init.d/functions
BIN=/usr/bin
CONFIG=/etc/redis.conf
PIDFILE=/var/run/redis.pid

[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"

RETVAL=0
prog="redis-server"
desc="Redis Server"

start() {
	if [ -e $PIDFILE ];then
		 echo "$desc already running...."
		 exit 1
	fi
	echo -n $"Starting $desc: "
	daemon $BIN/$prog $CONFIG
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
	return $RETVAL
}

stop() {
	echo -n $"Stop $desc: "
	killproc $prog
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE
	return $RETVAL
}

restart() {
	stop
	start
}

case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	restart)
		restart
		;;
	condrestart)
		[ -e /var/lock/subsys/$prog ] && restart
		RETVAL=$?
		;;
	status)
		status $prog
		RETVAL=$?
		;;
	*)
		echo $"Usage: $0 {start|stop|restart|condrestart|status}"
		RETVAL=1
esac
exit $RETVAL

存为redis文件,放到/etc/init.d/redis, chmod +x redis