Skip to content

{ Category Archives } 工作日志

新浪年会

公历的年初,农历的年底。 公司选择在这样的一个时候在这样一个地点来开这样一个年会:没有其它公司员工都有的年终,没有年底双薪,有的只是中奖面不到 1% 的抽奖。 本来以为所谓的年会,应该是一个“会”,也就是领导们讲讲话,大家鼓鼓掌,然后一些员工代表什么也发发言,大家继续鼓鼓掌。哪知道一开始,就吓了一跳:艳舞,惊艳全场。音响,灯光,烟雾,口哨,尖叫,看架势,整个一娱乐晚会。 带了相机,却没有拍到什么好的照片——虽然坐在所谓的 VIP 区域,却是vip的最后一排。想要看拍的好的照片,点击 这里 吧:(http://photo.sina.com.cn/list/photo_s.php?uid=1400314314&ctg_id=99798) http://photo.sina.com.cn/list/photo_s.php?uid=1400314314&ctg_id=99798 http://photo.sina.com.cn/list/photo_s.php?uid=1151840394&ctg_id=100380 http://photo.sina.com.cn/list/photo_s.php?uid=1495295187&ctg_id=99867 http://photo.sina.com.cn/list/photo_s.php?uid=1400042283&ctg_id=100257 http://photo.sina.com.cn/list/photo_s.php?uid=1402618337&ctg_id=101469

Email 定义

一封符合标准的 Email 大致是这个样子的: Mail Header [define boundary "--123"] 2 eol –123 header block 1 [define boundary "--456"] 2eol –456 header block 1.1 2eol content block 1.1 2eol –456 header block 1.2 2eol content block 1.2 2eol –456– 2eol –123 header block 2 2eol content block 2 2eol –123– 2eol

让PHP支持页面回退的两种方法

      在网站开发过程中,往往因为表单出错而返回页面的时候填写的信息都不见了,为了支持页面回跳,可以通过两种方法实现。 第一,使用Header方法设置消息头Cache-control header(‘Cache-control: private, must-revalidate’); //支持页面回跳 第二,使用session_cache_limiter方法   session_cache_limiter(‘private, must-revalidate’); //注意要写在session_start方法之前 PS:Cache-Control消息头域说明 Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control 并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、 proxy-revalidate、max-age。各个消息中的指令含义如下: Public指示响应可被任何缓存区缓存。 Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。 no-cache指示请求或响应消息不能缓存 no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

让PHP支持页面回退的两种方法

      在网站开发过程中,往往因为表单出错而返回页面的时候填写的信息都不见了,为了支持页面回跳,可以通过两种方法实现。 第一,使用Header方法设置消息头Cache-control header(‘Cache-control: private, must-revalidate’); //支持页面回跳 第二,使用session_cache_limiter方法   session_cache_limiter(‘private, must-revalidate’); //注意要写在session_start方法之前 PS:Cache-Control消息头域说明 Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control 并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、 proxy-revalidate、max-age。各个消息中的指令含义如下: Public指示响应可被任何缓存区缓存。 Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。 no-cache指示请求或响应消息不能缓存 no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

转:RSA算法介绍及实现

最近工作中用到了RSA算法,找了一些相关的资料和代码,整理了一下,汇总成这篇文章。 <一>基础 RSA算法非常简单,概述如下: 找两素数p和q 取n=p*q 取t=(p-1)*(q-1) 取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1) 取d*e%t==1 这样最终得到三个数: n d e 设消息为数M (M 设c=(M**d)%n就得到了加密后的消息c 设m=(c**e)%n则 m == M,从而完成对c的解密。 注:**表示次方,上面两式中的d和e可以互换。 在对称加密中: n d两个数构成公钥,可以告诉别人; n e两个数构成私钥,e自己保留,不让任何人知道。 给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。 别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密。 rsa的安全性在于对于一个大数n,没有有效的方法能够将其分解 从而在已知n d的情况下无法获得e;同样在已知n e的情况下无法 求得d。

检查网站在不同操作系统下的表现

http://browsershots.org/:在线生成网站在不同操作系统,不同浏览器下的表现截图。唯一遗憾的是操作系统使用的是英文系统,导致某些浏览器中,汉字显示不出来。 详细截图请点击:http://picasaweb.google.com/birdring/FulinOrg

被保护: 我的WebService

盛大灵游记:http://shop.ourgame.com/GLGGBilling/Service4Partner.asmx 新浪机战:http://222.77.177.169/sinapay/ChargeMoneyInterface1.asmx 腾龙功夫世界:http://secure.tengwu.com.cn/MainService.asmx 星级家园:(非webservice提供接口) PHP5 Soap 接口代码框架: try { $response = $soap_client->__soapCall(“m_GetRolesList”,$params); if ($response['m_GetRolesListResult'] != 1) { $err = m_GFSJ_GetErrText($response['m_GetRolesListResult']); $loge->uniLog(“$err”); return false; }else { $logv->uniLog(“{$response['lsRoleIDName']}”); $rolestr = trim($response['lsRoleIDName']); return $rolestr; } } catch (SoapFault $fault) { $loge->uniLog(“faultcode:{$fault->faultcode}\tfaultstring:{$fault->faultstring}”); return false; }

微软笔试

        上回微软在北邮的笔试,因为我把周六记成功周日,结果错过了没能去成。不料没过几天,微软再次给我发来邀请邮件,邀请我参加11月4号在北航举行的最后一次笔试。 虽然微软的邮件里写明了是招应届毕业生,可是抱着“参与第一”的心态,我决定去考一下,就算体验一下微软的招聘题目也不错啊,毕竟机会难得么。 出门的时候已经比较晚了,小蔡于是加大油门往北航赶。曲曲折折的找到了考场,但还是没有来得及打印简历和邀请函。不过还好,看了身份证之后就让进去了。没有带眼镜,我只好走到最前排,站在黑板正下方去看黑板上写的注意事项。 题目全是英文的,整个将近20页的考卷上找不出几个中文字。题目分了4部分:第一部分选择题,有单选也有多选,分值还不一样,选错了也有不一样的倒扣分值;第二部分编程,就一道大题,让编一个 Notepad 的自动换行函数,函数原型(记忆中的,可能不完全准确) void TextWrap(const char* inText, char* outBuffer, int outBufferLength, int lineWidth) 分了2个小问,第一问是写出主要的 subroute (单词记得不是很清楚了),第二问才是实现这个函数;第三部分测试,要求写出 20 组测试用例,来测上一题写的函数;第四部分,也是最后一部分,design,应该翻译成设计吧,只是题目跟我理解的设计有点区别:要求设计一个全职父母在工作时可以查看在家的小孩的情况的系统,包括硬件和软件,类似于装备摄像头和麦克风,然后父母使用手持设备通过网络连接进行连线。问题问的比较诡异,问这个系统靠那些方面赚钱,应该具备那些特性,技术上有哪些难点,最后还问手持设备使用专用设备还是在普通手机上使用软件实现比较好,对比这两种实现方式,并说明你选择其中某一种的理由。 第一部分的选择题,考的东西比较零碎,大体来说,有网络(有一道题问TCP包里能看到哪些内容),编程(C#,C/C++,C++类的对象拷贝和指针拷贝的区别,以及每次都会出的C#代码在哪一行编译不过的问题),算法(二叉树,链表,汉诺塔,vector等),操作系统(给出文件系统的一些说明,问支持的最大单个文件的大小) 等。等到回过头来再去想想,当时很多题目是应该能做对的,只是当时想叉了。这些基础只是还是不能长久的不闻不问啊,稍不留神,便又生疏好多了。 回家,专心准备明天继续上班吧。

王者归来

http://v.iask.com –> http://pay.sina.com.cn 在新浪的一年里,先后换了 3 个地方了:最开始在 17 层南区大屋里做爱问视频,那时候爱问视频还是有类似于现在新浪播客的前台的,有推荐页,有评星页,有最新上传视频列表——这些页面大都是我做的,后台的数据生成也是我写的程序定时跑出来的;后来爱问视频的前台撤下来了,换成了新浪播客,我也随即被借调到新浪播客做接口,用户在新浪播客上传一个视频,meta 数据会在新浪播客的服务器与爱问存储,爱问搜索的服务器之间来回传送,我就负责这个 web service 接口; 再后来回到爱问,去了小屋,做起了爱问视频搜索后台的维护,播客视频增加按星级,点击排序,爱问视频后台改版升级,定向抓站等等。这期间,从小屋搬出来到 zhangchu 手下,zhangchu 离职,又回到 zhongwei1 的组里。 搬过来搬过去,总是漂泊不定。而维护的工作又总是千篇一律,没有什么激情。所有的任务都是非常琐碎的,不像开发期间,能看着一件产品在自己手中慢慢成型,成熟直至发布。 不过事情总会好转,生活总会灿烂,这不,又要搬了。这次是转到游戏事业部,做U币支付,恰好是搬回原来的小屋,更巧的是,我原来坐的那个靠窗的位置现在还是空着的——明天体检回来后就搬,赶在没有新人占去我的原位置之前搬进去,哈哈^_^ 明天开始回归 PHP+MySql 开发了。

PHP的一个bug

“Fatal error:Maximum execution time of 0 seconds exceeded” php.ini 设置: max_execution_time = 0 ; Maximum execution time of each script, in seconds max_input_time = 60 ; Maximum amount of time each script may spend parsing request data memory_limit = 128M ; Maximum amount of memory a script may consume (128MB) 这里报错并不是因为脚本执行时间超时,而是输入时间超时,属于错误定位不准确,导致出错信息无效甚至误导编程者。 我的 minicraw 脚本在某些服务器上总是死掉,找了半天,才在 google [...]