August 2008 Archives

之前用php做过一个服务器密码生成器,每次生成之后会打印出来一个网页,  内容就是office2003支持的xml格式的Excel, 另存为就可以变成一个现成的xls, 当初花了一个晚上的时间去扣那个office2003 xml的定义...
然后被烂人1号(baileifirst)鄙视了,他习惯Google一个密码生成器然后自己写xls, 恩。

我这个服务器密码生成器的主要问题是每次要另存为比较的麻烦,  查了下手册,在PDF章节找到了点东西,用header来指定MIME输出。
恩,具体的比较简单。。。
<?php
$content = 'blablabla~';
$length = strlen($content);
header("Content-type: application/vnd.ms-excel");
header("Content-Length: $length");
header("Content-Disposition: attachment; filename=password.xls");
print $content;
?>
然后就可以直接点击打开和保存了~囧
content.png
header这几个Content相关都是HTTP/1.1中定义的,Content-type应该是MIME来定义的,懒得看英文RFC的可以到这里来看看中文说明, Content-Length就不用说了,Content-Disposition这个玩意不是标准HTTP/1.1定义,有的浏览器不支持

PS:关于Content-Disposition
这是Java相关的一篇文章
这是DotNet相关的一篇文章

目前飞信的项目进行到了第5期,在线并发支持到了大约70万人,所有前端后端服务器(含数据库,存储,备份集群等)一起大概500台,每台生产服务器当前处理量1w多人,峰值可以到10w人(在生产环境中压力测试得出的结果)

飞信2期的服务器数据
服务器A 数量 20台
服务器B 数量 11台
服务器C 数量 7 台
操作系统Windows 2003 server
数据库SQL server 2005
开发工具: VS2005
.net版本:2.0

硬件设备分类    设备型号                 配置描述    数量
服务器A * 20
    CPU    "英特尔(R) 至强(TM) 处理器 (双核)2.8GHz×2 (800M前端总线/EM64T)"
    二级缓存    2MB
    内存    4GB DDR2 ECC
     硬盘    73G×2  一万转SCSI热插拔硬盘
服务器B * 11
    CPU    "英特尔(R) 至强(TM) 处理器 (双核)2.8GHz×2 (800M前端总线/EM64T)"
    二级缓存    2MB
    内存    8GB DDR2 ECC
     硬盘    73G×2  一万转SCSI热插拔硬盘
 服务器C * 7
     CPU    "英特尔(R) 至强(TM) 处理器 (单核)3.0GHz×4 (800M前端总线/EM64T)"
    二级缓存    2MB
    三级缓存    8MB
    内存    16GB DDR2 ECC
    硬盘    146G×2  一万转SCSI热插拔硬盘
在/etc/profile下添加
PATH=$PATH:$HOME/bin
JAVA_HOME=/usr/local/suchasplus/jdk
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=/usr/local/suchasplus/jdk/lib/tools.jar
JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m "
export PATH
export JAVA_HOME
export CLASSPATH
export JAVA_OPTS

在Tomcat的conf/server.xml中
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="125" minSpareThreads="25" maxSpareThreads="75"
 enableLookups="false" redirectPort="8443" acceptCount="100"
 connectionTimeout="20000" disableUploadTimeout="true" />

修改默认的maxThreads为较大数值即可
在使用RRDTool的Python Lib库的时候, 每次都要import rrdtool-python-lib的绝对路径

import sys
sys.path.append('/usr/local/rrdtool-1.2.27/lib64/python2.4/site-packages/')
import rrdtool
import tempfile

rrdpython文档中说只要运行site-python-install这个命令就可以不用append那么长了囧, 作为一个python初心者我只能updatedb然后locate site-python-install. 然后CentOS告诉我没有...
G, 在rrdtool 1.3.1的Makefile中发现了这么一段.
site-perl-inst: site-perl-install
site-perl-install: all bindings/perl-piped/Makefile bindings/perl-shared/Makefile
cd bindings/perl-piped && $(MAKE) install
cd bindings/perl-shared && $(MAKE) install
site-tcl-install: all
cd bindings/tcl && $(MAKE) tcl-install
site-python-install: all
cd bindings/python && $(PYTHON) setup.py install


OK, 在安装完之后,进入/PATH/TO/RRDTOOL-VERSION-SRC/bindings/python目录
执行
python2.4  setup.py  install

即可, perl和tcl以此类推即可, 这才是真正的site-python-install, 恩


另: CentOS5.1 下which出来的python是2.5.2版本的, whereis才能把所有版本的python都列出来
PlayStationHome, 一个运行于PSN@PlayStation3上的SecondLife, 由SCE London Studio @ SCEE设计的SONY最新社区服务.
PlayStationHomeLogo.jpg
没错, 绝对就是SecondLife的PS3版本~ 还是plus版本



在PlayStation Home中,包括公共空间、私人住所(又要花钱买地皮买房子了?)以及语音聊天功能全都有, 还可以在PlayStation Home中去保龄球馆丢几颗飞碟球, 去 Pub 玩丢飞镖,各种小游戏都会藏身在其中,当然和网友对战正版游戏是重要乐趣之一。还有大家可以在 Home 中可以到虚拟电影院看各种的电影预告片(厄 网速)。
依靠模拟地球的神机来构建完整的Matrix? 你脑袋后面的管子松了没有?

部署环境: CentOS 5.1 x64  MySQL3.23.58 + GCC
这里下载pam_mysql的源代码包
下载之后

#>tar zxf pam_mysql-version.tar.gz
#>cd pam_mysql-version
#>./configure --with-mysql=/path/to/mysql --with-openssl=/usr
#>make
#>make install

以下按照实际情况修改斜体字段
在MySQL服务器上执行创建sysauth数据库

create database if not exists `sysauth`;
USE `sysauth`;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*Table structure for table `logs` */
DROP TABLE IF EXISTS `logs`;
CREATE TABLE `logs` (
`messages` varchar(500) NOT NULL,
`pid` varchar(50) NOT NULL,
`user` varchar(20) NOT NULL,
`host` varchar(50) NOT NULL,
`rhost` varchar(50) NOT NULL,
`time` varchar(50) NOT NULL,
`id` int(11) NOT NULL auto_increment,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*Table structure for table `users` */
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`username` varchar(50) NOT NULL default '',
`password` varchar(50) NOT NULL default '',
`id` int(11) NOT NULL auto_increment,
`state` bit(1) NOT NULL,
`active` tinyint(1) NOT NULL,
`temperory` tinyint(1) NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

在/etc/security/下创建sshd_pam_mysql.conf

users.host=MySQLDataBaseHost
users.database=sysauth
users.db_user=MySQLDBUser
users.db_passwd=MySQLDBPassword
users.table=users
users.user_column=username
users.password_column=password
users.status_column=state
users.password_crypt=3
users.where_clause=users.active=1
verbose=0
log.enabled=true
log.table=logs
log.message_column=messages
log.pid_column=pid
log.user_column=user
log.host_column=host
log.rhost_column=rhost
log.time_column=time
以上users.password_crypt是选择用户密码加密方式
0 ->明文密码
1 -> MySQL的crypt加密
2 -> MySQL的password加密
3 -> md5加密
4 -> sha1加密(0.61和0.71pre2及以后)
其他参数可以参见pam_mysql的FAQ和README

在向MySQL数据库的users表添加用户(示例,注意)之后, 可以去修改/etc/security/sshd
sshd默认内容为:
#%PAM-1.0
auth include system-auth
account required pam_nologin.so
account include system-auth
password include system-auth
session optional pam_keyinit.so force revoke
session include system-auth
session required pam_loginuid.so

应该修改为:
#%PAM-1.0
auth required /lib/security/pam_mysql.so config_file=/etc/security/sshd_pam_mysql.conf
account required /lib/security/pam_mysql.so config_file=/etc/security.sshd_pam_mysql.conf
account required pam_nologin.so
session optional pam_keyinit.so force revoke
session include system-auth
session required pam_loginuid.so

最后/etc/init.d/sshd reload, 开启新的终端进行测试即可

添加用户示例:
insert  into `users`(`username`,`password`,`state`,`active`,`temperory`) values ('root',md5('123456'),'\0',1,0),('suchasplus',md5('654321'),'\0',1,0);
添加用户的注意事项:
用户名一定要是系统中真实存在的用户, 即/etc/passwd必须存在用户, useradd username即可
pam_mysql只是更换验证方式, 并不是LDAP
采用MD5加密验证出错的可能原因:
很多版本的Linux都会出现采用0/1/2加密方式可以通过,但是MD5加密后会报错的情况,RH9上经测试不会报错, 但是CentOS 51. x64会报错.
设置verbose = 1
tail -F /var/log/secure可以看到
non-crypt()ish MD5 hash is not supported in this build.
解决方法是
ln -s /usr/include/openssl/md5.h /usr/include/md5.h
然后重新编译就好, 虽然编译的时候还是会报死都找不到md5.h -_-#!
China's array of medals and prizes was produced out of the sweat, tears, and lives of generations of athletes and paralympians...You can't use the achievements of our young people to cover up or to dilute the mistakes of the country's leaders.(原文链接)
owod.jpg
owod4.jpgowod3.jpgowod2.jpgowod1.jpg





ps3 40Gb港版, 通过HDMI接入显示器, 应该如何接入音箱呢?
方法1. 光纤直连到功放上
方法2. 将自带的AV线插入普通音箱, 在XMB中设置由AV口输出声音即可

关于这个存档

This page is an archive of entries from August 2008 listed from newest to oldest.

July 2008 is the previous archive.

September 2008 is the next archive.

Find recent content on the main index or look in the archives to find all content.