2010年流水帐
1月份
公积金到手,忙着还钱,买个房子累呀
和冷韵陪牧师去买相机,当冷MM看到某相机时,就差亲一口了,猥琐呀
生活平淡如水,归心似箭
2月份
忙着帮朋友换IMAX阿凡达的票
年前回家忙着看自己的房子,找人搞室内设计
过春节,一天内拜完所有近处亲戚的年,然后花了N多的money
坐了20个小时的绿皮车回到北京,到了后又被一黑车拉到衙门口
加在北京 3次IMAX和家里陪其人看3D一次,共看阿凡达4次,快吐了
入手ideapad Y550一台,蓝牙鼠标一个,XXX N个
3 月份
和冬天,娟,还有DO,一起吃了个饭,国家博物馆去看了一圈
花了一天的时间帮卡卡看了程序,对于UC和WP整合,代价太大,只能对卡卡说Sorry
群里拉着去八大处,起来发现9点多,没去成
把自己的两站移回到电信服务器,没时间管了
从公司硬盘拉了1T的美剧,我的硬盘呀:(
然后就是天天的忙
windows7下解决华大银盾IE8白屏问题
昨天转帐,WIN7下到到最后一步死活无法弹出证书选择框,而使用建行自带的华大更新程序,倒是可以弹出U盾输入框了,但无论输入什么,都出现证书选择错误,无法使用,网上找了一下解决方法,综合如下
Windows 7中,如果你是使用中国建设银行(或中国农业银行)华大智宝网银盾的用户,可能从Build 7100之后,就再也无法使用网银了吧?具体症状为在输入完交易密码后,本该出现的证书选择框为空白小窗口,当关闭后提示操作失败。如果你是如上情况,那么,恭喜你,通过以下方法,你就可以成功使用!
启动注册表编辑器
开始→regedit
找到以下分支
32 bit(建行): HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider\CIDC Cryptographic Service Provider v2.0.0
32 bit(建行): HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider\ZGHD Cryptographic Service Provider v1.0
64 bit(建行): HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\Defaults\Provider\CIDC Cryptographic Service Provider v2.0.0
64 bit(农行): HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\Defaults\Provider\ZGHD Cryptographic Service Provider v1.0
修改Image Path值
32 bit(建行):%SystemRoot%\System32\CIDC_CSP.dll
32 bit(农行):%SystemRoot%\System32\GP_MINCSP.dll
64 bit(建行):%SystemRoot%\SysWOW64\CIDC_CSP.dll
64 bit(农行):%SystemRoot%\SysWOW64\GP_MINCSP.dll
以管理员身份运行USBKEY程序,解决问题
新建文件自动编号的思路与实现
要求:在系统中 在新建文件是可以实现自动编号。比如新建文本文件 默认文件名是:新建 文本文档.txt,如果继续新建时文件名自动变了:新建 文本文档 (2).txt, 以后就是 3,4,5….请问这种算法用PHP怎么实现。
思路,原来想用循环来做,后来想想,用计数器递增吧,简单高效,这个TME可以是数据库,可以文件,可以是配置文件,看你怎么做了,循环只是在维护的时候使用的,如果每建一个新文件也得循环一次,那得累死,缓存无处不在
<?php
$dir="/web/csp/images/test/";
if(!file_exists($dir.'cache.txt')){
file_put_contents($dir.'cache.txt',1);
file_put_contents($dir.'新建文件.txt','');
}else{
$num = file_get_contents($dir.'cache.txt');
$num ++ ;
$name = '新建文件 ('.$num.').txt';
file_put_contents($dir.'cache.txt',$num);
file_put_contents($dir.$name,'');
}?>
银子童鞋重写后的
<?php
function createFile($filename, $content = '')
{
if(file_exists($filename . '.tmp'))
{
$num = (int) file_get_contents($filename . '.tmp') + 1;
$fileinfo = pathinfo($filename);
file_put_contents($fileinfo['filename'] . '(' . $num . ').' .$fileinfo['extension'], $content);
file_put_contents($filename . '.tmp', $num);
}
else
{
file_put_contents($filename, $content);
file_put_contents($filename . '.tmp', 1);
}
}
createFile('test.txt');
?>
第三种,循环的
<?php
$files = scandir('.'); //此代码在web根目录下写就
$num = 0;
$str = '新建 文本文档';
foreach ($files as $k=> $file) {
if (is_file($file) && preg_match('/(.*)\((\d+)\)\.txt/', $file, $matched)) {
$num = $matched[2]>$num ? $matched[2] : $num;
}
}
$filename = $num == 0 ? $str . '(1).txt' : $str . '(' . ($num+1) . ').txt';
if (fopen($filename, 'w')) {
echo '成功创建文件:' . $filename;
}
?>
PHP编码规范[新]
一、 变量命名
a) 所有字母都使用小写
b) 首字母根据变量值类型指定
i. 整数i
ii. 浮点数f
iii. 字符串s
iv. 布尔值b
v. 数组a
vi. 对象o
vii. 资源r
viii. 混合类型m
c) 使用’_’作为每一个词的分界
例如:
$i_age_max = 10;
$f_price = 22.5;
$s_name =‘harry’;
$b_flag = true;
$a_price = array();
$o_object = new class();
$r_file = fopen();
$m_var = array_combine($a_name, $a_flag);
Read the rest of this entry »
2009年签名
[2009-02-15 22:41] 剑气凌人 | 一个现在人的心,几乎百毒不侵,不易被感动,不易去爱。
[2009-03-27 11:08] 剑气凌人 | 心无需鞘
[2009-03-02 12:54] 剑气凌人 | 你守的是规则,我在乎的只是随心所欲的自由。
[2009-05-26 09:52] 剑气凌人 | 生活没有如果,命中没有注定
[2009-05-12 21:48] 剑气凌人 | 秒速5厘米,心中曾经的清涩
[2009-05-05 20:08] 剑气凌人 | show time
[2009-06-13 09:58] 剑气凌人 | 拔剑四顾心茫然
[2009-06-03 12:24] 剑气凌人 | 在这段生命中,我浪费了6年
QQ
2009-06-28 15:05 围栏里的羊
2009-06-10 23:20 哎,傻姑娘
2009-06-03 14:06 外面的人找不到工作,里面的人招不到要用的人,中国的教育啊
2009-03-29 00:33 平淡如水的日子
PHP企业级应用之WebService篇(续)
[原创,连载请注明来源]
Ping Service,博客程序提供一种通知机制,以便在第一时间将博客的更新信息发布到提供Ping Service服务的网站,写聚合的时候研究了一下
先看标准吧
这是一个标准的Ping Service,用XMLRPC来传数据的,注释写的这么详细,代码说明就不需要了吧,PHP5开启XMLRPC方法
client.php
代码:
<?php
$host = 'zxsv';
$port = 80;
$rpc_server = '/test/xmlrpc_server.php';
$title = 'zxsv';
$server = 'http://zxsv/test/';
$rss = 'http://zxsv/test/rss.php';
//weblogUpdates.Ping方法
$Ping = xmlrpc_encode_request('weblogUpdates.Ping', array($title, $server ));
//weblogUpdates.extendedPing方法
$extendedPing = xmlrpc_encode_request('weblogUpdates.extendedPing', array($title, $server, $rss ));
//调用rpc_client_call函数把所有请求发送给XML-RPC服务器端后获取信息
$response = rpc_client_call($host, $port, $rpc_server, $Ping);
$split = '<?xml version="1.0" encoding="iso-8859-1"?>';
$xml = explode($split, $response);
$xml = $split . array_pop($xml);
$response = xmlrpc_decode($xml);
//输出从RPC服务器端获取的信息
print_r($response);
/**
* 函数:提供给客户端进行连接XML-RPC服务器端的函数
* 参数:
* $host 需要连接的主机
* $port 连接主机的端口
* $rpc_server XML-RPC服务器端文件
* $request 封装的XML请求信息
* 返回:连接成功成功返回由服务器端返回的XML信息,失败返回false
*/
function rpc_client_call($host, $port, $rpc_server, $request) {
$fp = fsockopen($host, $port);
$query = "POST $rpc_server HTTP/1.0\nUser_Agent: XML-RPC Client\nHost: ".$host."\nContent-Type: text/xml\nContent-Length: ".strlen($request)."\n\n".$request."\n";
if (!fputs($fp, $query, strlen($query))) {
$errstr = "Write error";
return false;
}
$contents = '';
while (!feof($fp)){
$contents .= fgets($fp);
}
fclose($fp);
return $contents;
}
?>
PHP之TEA算法实现
算法简单,而且效率高,每次可以操作8个字节的数据,加密解密的KEY为16字节,即包含4个int数据的int型数组,加密轮数应为8的倍数,一般比较常用的轮数为64,32,16,QQ原来就是用TEA16来还原密码的.
TEA算法
核心为
#include <stdint.h>
void encrypt (uint32_t* v, uint32_t* k) {
uint32_t v0=v[0], v1=v[1], sum=0, i; /* set up */
uint32_t delta=0x9e3779b9; /* a key schedule constant */
uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* cache key */
for (i=0; i < 32; i++) { /* basic cycle start */
sum += delta;
v0 += ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);
v1 += ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3);
} /* end cycle */
v[0]=v0; v[1]=v1;
}
void decrypt (uint32_t* v, uint32_t* k) {
uint32_t v0=v[0], v1=v[1], sum=0xC6EF3720, i; /* set up */
uint32_t delta=0x9e3779b9; /* a key schedule constant */
uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* cache key */
for (i=0; i<32; i++) { /* basic cycle start */
v1 -= ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3);
v0 -= ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);
sum -= delta;
} /* end cycle */
v[0]=v0; v[1]=v1;
}
PHP企业级应用之WebService篇
企业级应用,主要是讲PHP5对webservice的一些实现(以下的程序可以被JAVA,NET,C等正常调用)
国内用PHP写WebService的真的很少,网上资料也没多少,公司的项目开发过程中,经历了不少这方面的东西,写出来以供大家参考(谢谢老农提供的WSDL和程序文件)
客户端
Read the rest of this entry »
刚封装的一个PDO类
写自己框架时封装的一个PDO类,例子看test.php,MYSQLi的等等再说,别说PDO是已经封装好了的话,多种环境统一的代码风格很重要
代码:
<?php
update($table,$args,$condition);
print_r($db->fetAll('test',$condition = '',$sort = '',$limit = '5',$field = '*'));
print_r($db->fetOne('test',$condition = null,$field = '*'));
print_r($db->execute('update test set title="24234" where id=1'));
print_r($db->getRow('select count(*) from test'));*/
print_r($db->getOne('select * from test'));
print_r($db->getAll('select * from test1 limit 5'));
print_r($db->getFields('test'));
print_r($db->insert('test',array('title'=>'insert test','test'=>'123123')));
print_r($db->update('test',array('title'=>'insert test111','test'=>'123123'),array('id'=>'2')));
print_r($db->delete('test',array('title'=>'insert test')));
$db->close();?>
一些开发中数据库的技巧
1、一般写多个表的时候,会把附表的内容生成数组缓存到主表上面去,这样查询的时候只查询一个表,附表中的内容用数组分解(只是小型的,大型的用lucene或solr,或底层用C来写)
2、搜索时,把搜索结果缓存到一个单独的表中,存结果ID,第二次搜索先求缓存表中的关键字
3、MYSQL < MYSQLi < PDO
4、文件缓存 < 内存缓存
5、数据的优化 < 业务层的优化