分类 技术 Technology 下的文章

这几天在虚拟机里折腾一个来自地球的神奇的被叫做 Ubuntu 的操作系统。您瞧,自从有了它,再也听不到微软的叫唤了;牙好、胃口就好,身体倍儿棒,吃嘛嘛香。

而 Ubuntu 的 APT 可以让我等懒人变得更懒。为了在今后可以充分享受懒惰带来的愉悦,找到了几个在杭州电信线路上访问比较快的 APT 源。前者服务器物理位置在江苏电信,速度可以达到 1200Kb/s 以上;后者服务器物理位置在上海电信,速度稳定在 600Kb/s 左右。相关记录如下:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vi /etc/apt/sources.list

deb http://ubuntu.cn99.com/ubuntu/ feisty main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-proposed main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-backports main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ feisty main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ feisty-security main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ feisty-updates main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ feisty-proposed main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ feisty-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ feisty main multiverse restricted universe

deb http://mirror.rootguide.org/ubuntu/ feisty main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ feisty main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ feisty-updates main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ feisty-updates main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ feisty-backports main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ feisty-backports main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ feisty-security main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ feisty-security main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ feisty-proposed main multiverse restricted universe
deb-src http://mirror.rootguide.org/ubuntu/ feisty-proposed main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu-cn/ feisty main multiverse restricted universe

sudo apt-get update
sudo apt-get dist-upgrade

自从 PHP 4.0 中加入了对 session 的支持,越来越多的诸如购物车、论坛、会员系统等的开发案例就如雨后春笋一般出现了。一般而言,session 的生命期是有限的。如果用户关闭了浏览器,session 会自动失效。那么如何实现 session 的永久生命期呢?

session 储存在服务器端,根据客户端提供的 session_id 来得到这个用户的文件,然后读取文件,取得变量的值。session_id 可以使用客户端的 cookie 或者 http 1.1 协议的 query_string(也就是访问的 URL 的“?”后面的部分)来传送给服务器,然后服务器读取 session 的目录。

要实现 session 的永久生命期,首先需要了解一下 php.ini 关于 session 的相关设置(打开 php.ini 文件,在“[Session]”部分):

1、session.use_cookies:默认的值是“1”,代表 session_id 使用 cookie 来传递,反之就是使用 query_string 来传递;
2、session.name:这个就是 session_id 储存的变量名称,可能是 cookie,也可能是 query_string 来传递,默认值是“PHPSESSID”;
3、session.cookie_lifetime:这个代表 session_id 在客户端 cookie 储存的时间,默认是“0”,代表浏览器一关闭 session_id 就作废。正因为这个原因,session 不能永久使用;
4、session.gc_maxlifetime:这个是 session 数据在服务器端储存的时间,如果超过这个时间,session 数据就自动删除。

前面说过,服务器通过 session_id 来读取 session 的数据,但是一般浏览器传送的 session_id 在浏览器关闭后就没有了。只需要人为的设置 session_id 并且保存下来,理论上就可以实现无限生命期的 session。

如果拥有服务器的操作权限,那么设置会非常的简单,只是需要进行如下的步骤:
1、把“session.use_cookies”设置为“1”,打开 cookie 储存 session_id。一般默认就是“1”,不必再修改;
2、把“session.cookie_lifetime”改为正无穷(当然没有正无穷的参数,不过 999999999 和正无穷也没有什么区别);
3、把“session.gc_maxlifetime”设置为和“session.cookie_lifetime”一样的时间。

设置完毕后,打开编辑器,输入如下代码:

<?php
session_start
();
session_register('count');
$_SESSION['count'] = 0;
$_SESSION['count'] ++;
echo 
$_SESSION['count'];
?>
然后保存为“session_check.php”,用浏览器打开“session_check.php”,看看显示的是不是“1”;接着再关闭浏览器,然后再打开浏览器访问“session_check.php”,如果显示“2”,那么表明实验已经成功;如果失败的话,请检查前面的设置。

但是如果没有服务器的操作权限,那就比较麻烦了。需要通过 php 脚本改写 session_id 来实现永久的 session 数据保存。查看 php 手册,可以看到有“session_id”这个函数:如果没有设置参数,那么将返回当前的 session_id,如果设置了参数,就会将当前的 session_id 设置为给出的值。

只要利用永久性的 cookie 加上“session_id”函数,就可以实现永久 session 数据保存了。但是为了方便,需要知道服务器设置的“session.name”,可以利用“phpinfo”这个函数来查看到,一般是“PHPSESSID”。

记下了 session_id 的名称后,就可以实现永久的 session 数据储存了。打开编辑器,输入下面的代码:

<?php
session_start
();
session_register('count');
if(isset(
$_SERVER['PHPSESSID'])) {
    
session_id($PHPSESSID);
}
$_SERVER['PHPSESSID'] = session_id();
$_SESSION['count'] ++;
setcookie('PHPSESSID'$_SERVER['PHPSESSID'], time()+3156000);
echo 
$_SESSION['count'];
?>
保存之后,利用和刚才拥有服务器权限时候的检测一样的方法,检测是否成功的保存了 session_id。

后记:
其实真正的永久储存是不可能的,因为 cookie 的保存时间有限,一旦清除了 cookie 上面的方法也就失效了;另外,服务器的存储空间也有限。但是对于一些需要保存时间比较长的站点,以上方法就已经足够了。

本文原载旧版博客 2005 年 9 月 18 日。虽然现在再看有些生涩,却有一定的实际应用价值。

不久以前,我折腾了一台 HP Pavilion 系列的笔记本。从原装 Vista Home Premium 操作系统换到 XP Pro,然后反复折腾对应的驱动。最后再次重装 XP Pro,含辛茹苦、一路走来。之所以到今天才把“断点续写”的草稿发出来,是因为最近实在太忙太忙了。

这让我想起了一段话。说男人想找理由、找借口,不外乎是“最近很忙”,或者“无奈要加班”之类的;而女人就相对轻松、简单多了:“人家最近不方便”、“我这几天身体不适”,依此类推。当谎言被揭穿的瞬间,真相也归于平寂。因此,在大灰狼还没有造访我们的时候,我们应该看到身边其实还有很多兔子。

自从我活到 2008 年后,我已然发现自己开始罗嗦不已。正如某人自我介绍:“本人性格开朗,爱开玩笑,热衷网络博客,同时也意味着我的废话很多”。原来不仅感冒可以传染,说废话也是一样。这小子已如愿以偿进入淘宝开发团队,俨然成为了一名“用户体验设计师(UED)”。在此我对他能够经受如此巨大的转变表示由衷的钦佩,阿门。

话说我在一月初折腾完一台 HP Pavilion dv2727tx 之后,后者的主人的某朋友无法经受巨大的物质诱惑和精神压力,在随后的一段时间也购得一台 HP 本子。这台 Pavilion dv2621tx 属于 dv2500 系列,原装 Vista Home Premium 操作系统。主人对 Vista 比较感冒,于是按照前一次的经验希望可以折腾成 XP,没想到安装程序却提示找不到硬盘。原来这笔记本使用了 SATA 接口的硬盘,而 HP 新平台的 BIOS 中没有 SATA 映射 IDE 选项,使得安装 XP 时无法驱动 SATA 模式而提示找不到硬盘。在网上找到 ICH7R 和 ICH8R 的驱动,但没有 USB 软驱,无法在安装程序引导时加载到,只有将 SATA 驱动整合到 XP 系统安装盘上也行。网上找到一个软件:nLite,可以帮助我解决这个问题。具体操作步骤如下:

1、先将 HP OEM XP 的 iso 文件解压到硬盘上的一个文件夹中,比如 C:\HP_XP。

2、运行nLite,选择界面语言:

3、选择 XP 光盘内容保存的位置:

4、下面这步点前进:

5、下面这一步选整合驱动和可引导 ISO 镜像:

6、之后选择“插入多个驱动所在的文件夹”:

7、把 ICH8R 的驱动和 ICH7R 的驱动放在一个文件夹里,这两个驱动也可以在这里下载:

8、之后软件会找到文件夹中的具体驱动,这里选前两个就可以,确定后前进:

9、这步只把 MOBILE 的型号选上,台式机 DESKTOP 的不用选:

10、这里是要加载的驱动列表 ICH7R 和 ICH8R:

11、接下来就开始处理了:

12、处理完成后:

13、接下来制作 ISO 镜像文件:

14、选择一下保存位置,开始制作:

15、之后就会生成一个ISO镜像文件,然后用 NERO 将其以镜像方式刻到 CD-R 上。

到这里,这个光盘就可以用来为 HP 本本装 XP 了,之前并不用进 BIOS 关 SATA 项。顺利装完 XP 系统后,我倏然发现 for XP 的驱动并没有存货,于是到 HP 的 support 网站上寻觅。整个寻觅的过程比较痛苦,外加 HP 网站在国内的访问速度实在很慢,所以一个电话打到 HP 800,一会就收到这样一封邮件:

先生,您好!

我是 HP 技术支持中心的工程师,您来电所询问的驱动,我已帮您找到。下面的链接是你机器的驱动下载列表,请先确认机型,然后下载相应的驱动即可。

请注意:
1、请不要使用下载工具下载驱动,建议右键点击、另存为来下载,如果您一定要使用软件来下载,请您一定要使用单线程下载。
2、请按照列表的顺序安装驱动程序,尤其是前三个,请一定要按照顺序安装。
3、如果不能正常安装,请暂时关闭一些正在运行的软件或者程序,如防火墙或者杀毒软件。也可以进入安全模式安装,进入方式、开机之后,连续点击键盘 F8。
4、设备管理中常见的未知设备一般为快捷键、调制解调器、读卡器驱动等,如果出现未知设备,请首先尝试安装其驱动。
5、请确认您的系统版本为 SP2 版,否则可能与某些驱动有冲突,如果有驱动或软件无法安装,请您升级到 SP2 版本。查看系统版本请右键点击我的电脑、属性。
6、下载之后,一般的驱动只需要您点击运行就可以正常安装了,如果有驱动无法正常加载,请您在设备管理器中手动指定一下。
7、请注意:HP 只支持原机标配的操作系统,如果用户自行安装了其他版本的操作系统,此驱动列表部分驱动并非官方提供,纯系工程师个人总结,仅供用户测试使用。

芯片组:
http://downloadmirror.intel.com/13499/a08/infinst_autol.exe

uaa:
ftp://ftp.hp.com/pub/softpaq/sp33501-34000/sp33867.exe

声卡驱动:
ftp://ftp.hp.com/pub/softpaq/sp34001-34500/sp34386.exe

X3100 集成显卡(请选择适合您的显卡):
http://downloadmirror.intel.com/13301/a08/win2k_xp1429.zip

独立显卡:
http://file.mydrivers.com/display/nvidia_gf8400_fw10134_xp32.zip

网卡,直接安装不可以的话,可以手动指定一下:
http://www.marvell.com/drivers/upload/yk51x86_v10.53.2.3.zip

无线网卡,请您首先尝试下载 intel 的无线网卡,如果安装出现问题,请安装 Broadcom 版本:
intel:
ftp://ftp.hp.com/pub/softpaq/sp35001-35500/sp35426.exe

Broadcom:
ftp://ftp.hp.com/pub/softpaq/sp34001-34500/sp34152.exe

触摸板:
ftp://ftp.compaq.com/pub/softpaq/sp25501-26000/SP25796.exe

快捷键:
ftp://ftp.compaq.com/pub/softpaq/sp34501-35000/sp34796.exe

Modem:
ftp://ftp.hp.com/pub/softpaq/sp34501-35000/sp34777.exe

读卡器:
ftp://ftp.hp.com/pub/softpaq/sp32501-33000/sp32825.exe

指纹管理软件(Bioscrypt VeriSoft Access Manager):
ftp://ftp.hp.com/pub/softpaq/sp35501-36000/sp35640.exe

蓝牙:
ftp://ftp.hp.com/pub/softpaq/sp32501-33000/sp32883.exe

Intel SATA AHCI Controller Driver:
ftp://ftp.hp.com/pub/softpaq/sp36001-36500/sp36131.exe

惠普大连全球服务中心
HP Global Solution Center Dalian
TEL:800-810-3888   拨通之后拨 1-1-1

我这里是电话技术支持,不能保证及时回复您的邮件,您可以拨打800-810-3888联系我们,如果您感觉上网更加方便,可以在以下链接进入我们的网上技术支持,获得聊天室技术支持:

惠普聊天室和即时支持:http://h50040.www5.hp.com/ChattingSupportWeb/UI/Login/RoomList.aspx
电子邮件支持:http://www.icare.hp.com.cn/support/esup_form_all.asp
按照邮件上的指导一路安装,最后除了声卡其他都正常了。反复折腾几次之后非常失望,继续打 HP 800,收到这样一封邮件:

您好!

我是 HP 技术支持中心的工程师,您来电所询问的驱动,我已帮您找到。下面的链接是你机器的驱动下载列表,请先确认机型,然后下载相应的驱动即可。

请注意:
1、请不要使用下载工具下载驱动,建议右键点击、另存为来下载,如果您一定要使用软件来下载,请您一定要使用单线程下载。
2、请按照列表的顺序安装驱动程序,尤其是前三个,请一定要按照顺序安装。
3、如果不能正常安装,请暂时关闭一些正在运行的软件或者程序,如防火墙或者杀毒软件。也可以进入安全模式安装,进入方式、开机之后,连续点击键盘 F8。
4、设备管理中常见的未知设备一般为快捷键、调制解调器、读卡器驱动等,如果出现未知设备,请首先尝试安装其驱动。
5、请确认您的系统版本为 SP2 版,否则可能与某些驱动有冲突,如果有驱动或软件无法安装,请您升级到 SP2 版本。查看系统版本请右键点击我的电脑、属性。
6、下载之后,一般的驱动只需要您点击运行就可以正常安装了,如果有驱动无法正常加载,请您在设备管理器中手动指定一下。
7、请注意:HP 只支持原机标配的操作系统,如果用户自行安装了其他版本的操作系统,此驱动列表部分驱动并非官方提供,纯系工程师个人总结,仅供用户测试使用。

声卡:
微软通用音频架构(UAA)总线驱动(35.5M)
注:如果 35.5M 的版本安装出现问题,请尝试下载安装另外一个版本的 UAA(17.1M)
ftp://ftp.hp.com/pub/softpaq/sp32501-33000/sp32646.exe

17.1M 版本:
ftp://ftp.compaq.com/pub/softpaq/sp32001-32500/sp32395.exe

惠普大连全球服务中心
HP Global Solution Center Dalian
TEL:800-810-3888   拨通之后拨 1-1-1

我这里是电话技术支持,不能保证及时回复您的邮件,您可以拨打800-810-3888联系我们,如果您感觉上网更加方便,可以在以下链接进入我们的网上技术支持,获得聊天室技术支持:

惠普聊天室和即时支持:http://h50040.www5.hp.com/ChattingSupportWeb/UI/Login/RoomList.aspx
电子邮件支持:http://www.icare.hp.com.cn/support/esup_form_all.asp
之后反复折腾两个版本的声卡驱动,依旧不行。正要放弃的时候,在设备管理器中发现一个带感叹号的设备(Microsoft UAA Bus Driver for High Definition Audio),选择更新设备驱动后感叹号没了,然后安装声卡驱动就可以了。事后知道 UAA 是啥东西,感兴趣的可以看这里这里

春节期间实在不想出门,所以在网上给自己的电话缴费,结果发现浙江电信缴费网站上的一个设计缺陷,于是乎发了一篇文。据说后来这文章曾被朋友投递到 cnbeta,我去看时已经删除了。然后我看到网友 Billwang 发表评论说漏洞已被修复,随后我证实了这一信息。再后来浙江电信的叔叔阿姨就找到了我,详情可以看这个截图

说实话,经过这件事情,我对浙江电信的工作效率和工作态度的认知有了一个较大的改变。由于工作的原因,平时与电信部门的官员打交道也不少。在我的认知中看来,像这样的问题起码需要两个月时间解决:基层工作人员发现问题,上报主管;主管平时工作较忙,在一周内提交到技术部门的负责人核实;技术部门老大的工作就更忙,于是又需要一周的时间安排查证工作;然后搞技术的小伙子也很懒,也需要一周的时间磨洋工;磨出来之后将结果反馈给老大,这时已经过去大半个月了;随后技术部门的老大将报告提交到主管经理,主管经理需要一周时间审核这份报告,随后报送分管领导;分管领导在接到文件后的一周召开讨论会,讨论是否需要将这份报告提交上级主管单位;讨论会结束后,小秘整理会议纪要,报送接口人向上级主管单位转达文件;后者接到文件后又开始一个新的轮回……

总而言之,他们这次的反映速度和解决问题的耗时让我非常惊讶。当然,能找到我本人也是情理之外、意料之中。在表扬了浙江电信某些同学的工作能力后,让我们继续关注一下他们在网上收钱的工具目前运作的如何。

首先登录浙江电信网上客服中心

选择导航栏的“自助服务”:

选择左下角的“充值交费”(事后我发现这个地址居然可以直接访问,并不需要事先登录):

与上次一样,填入要查询话费信息的电话号码:

又见阿里巴巴集团欠费 90 万元:

通过观察其实不难发现,在这个查询过程中,整个浏览器的 URL 是不改变的。也就是说这个页面使用了嵌入式框架,我们在框架页面上点击右键,查看页面属性:

将这个 URL 直接复制到新窗口中打开,依然有效:

我原以为是 session 或者 cookie 在起作用。在我退出登录后再次刷新页面,结果依旧。然后我在浏览器中直接打开这个地址:http://www.114mall.cn/ctpay,结果是这样的:

综合页面报错提示和 URL 的构造规律来看,被查询话费的号码信息确实通过 GET 方式传递到相关脚本。另外,我很惊奇的发现,每次打开 http://www.114mall.cn/ctpay 这个地址所被重定向的 URL 地址都不同,但都类似这样:

除了上面截图中红框中所显示的字符串外,还可能会有类似“qraxw2ih5dw1iuzy0vrzao45”、“eisxsp55xebbz2455xvfllji”、“52jklvayi0zir245cdlspu3s”等等不同的字符串组合,每次随着页面的刷新或者重定向而不同。经过对 URL 参数的筛选,我们可以构造出这样的地址:

http://www.114mall.cn/ctpay/(qraxw2ih5dw1iuzy0vrzao45)/index.aspx?queryNo=85027110&areaId=571

http://www.114mall.cn/ctpay/(eisxsp55xebbz2455xvfllji)/index.aspx?queryNo=88157858&areaId=571

http://www.114mall.cn/ctpay/(52jklvayi0zir245cdlspu3s)/index.aspx?queryNo=88156688&areaId=571

类似这样的地址可以直接打开,并不需要用户登录。对于想查询话费信息的朋友,不需要登录,不需要任何验证,一个地址直接搞定,果然又“方便”了很多。相比上次的情况,只不过被查询的电话号码的户主未被显示罢了。如果发起有针对性的查询,一样可以获得相关信息。感谢中国电信贴心而和谐的服务,让我们鼓掌。

顺便说一下浙江电信的网站。目前所使用的是新版,地址为 http://www.zjtelecom.com.cn,想一睹浙江电信曾经的辉煌历史,敬请访问 http://www.zjtelecom.com.cn:90。请注意,在您浏览的时候,请自觉的发出啧啧的赞叹声。谢谢合作。

前几天趁着数据库维护的时间对 sa 密码做了更换,然后昨天就有人通知我,某查询后台显示的数据有异常。我看了一下那个曲线图果然变得十分难看,可见数据库的某些调度已经停掉了。我初步分析是 SQL Server Agent 挂掉所导致的,打开企业管理器连上数据库,SQL 代理果然停了。重新启动,无效;再试;无效。远程到数据库服务器上查看事件日志,发现刚才的两个操作产生日志如下:

在企业管理器中将 SQL 代理的连接方式改为“使用 Windows 身份验证”,尝试启动 SQL 代理,无效。产生日志如下:

回到刚才的 SQL Server 代理属性界面:

- 阅读剩余部分 -