VPS重装了系统

262 views 一月 05, 11 by Timothy

过完了元旦节,突然想起很久没来更新下了,这里不得不提一下这个悲剧的元旦。元旦回了老家,不过这天气实在是不厚道,好不容易等到放假,却连着下了两三天的雨,冷得要命,所以大部分时间都宅在家里。不过悲剧似乎还没完结,整个元旦,是nginx的502 bad gateway陪着我渡过的。以前还觉得Nginx+php-fpm(FastCGI方式)比较稳定,不过貌似php的请求量一大起来,整个php-fpm就崩掉了。于是,整个假期,我的BlackBerry 9000一直收到监控宝发来的邮件:你的网站无法访问,出现502 bad gateway错误!

无赖之下,请教了JiuCool童鞋,得知php-fpm的确负载能力比较一般,并且JiuCool童鞋强烈推荐使用Nginx作为前端服务器,用Apache替代掉php-fpm来处理PHP的动态脚本解析,Apache的稳定性和php-fpm相比,有压倒性的优势。

于是,火速从老家赶回成都后,开始了又一轮的折腾。在网上找到一个LNAMP的一键安装包,一切都自动化安装,还挺不错,只是备份之前的VPS数据,费了很长的时间。不过昨晚的折腾,似乎并不成功,一键安装包编译PHP的源码的时候,老是报错,遇到灵异事件,遂放弃之。直到第二天,继续开始折腾这个一键安装包,终于成功了。从后来的观察来看,Nginx配合Apache确实比较给力,貌似内存占用比之前的LNMP方式还要少一些,究竟性能如何,还需进一步观察……

VPS重装系统,确实是个体力活,累……

BlackBerry 系统刷至OS5.0.0.681

241 views 七月 03, 10 by Timothy

bb
有段时间没折腾BlackBerry了。无意中看到官方的ROM又更新了,其实更新估计有段时间了,一直没时间关注。看到新版的系统,又开始手痒了。所以,又开始了刷机的折腾。这次算顺利多了,借鉴以往的经验,先用Desktop Manager,备份手机的数据。然后用工具WIPE掉机器,清理干净。最后用AppLoader加载新系统的ROM到手机,再从Desktop Manager回复数据即可。
新版系统中,键盘锁定的功能又回来了,很赞。上个版本没这功能,只有用休眠替代,很是不方便。其他新特性,等以后慢慢体验了。

关键词:周末 系统上线 加班 通宵

180 views 十二月 20, 09 by Timothy

周末之时,即是系统上线之日,周五下班后,和同事一起驱车去西河大吃兔子,一大份外加一中份,很是过瘾,也为晚上熬夜补充营养。接着回到办公室dota两把,午夜12点后开始系统调试、上线到生产环境,一直到第二天早上快7点,收拾东西闪人,发现车子没油了,郁闷,去对面的加油站加油,告知不能刷卡,只加了100块,更郁闷。随后一路狂飙回家,看了看表,7点半,天已经微微亮了,竟然发觉自己没有一点困意,看来偶通宵的功夫还真不是盖的。回到家,发现乖女已经醒了,洗脸洗脚,睡了……

获取系统有几个逻辑分区

108 views 十二月 26, 04 by Timothy

char cr[3];
char lable[12];
for(int n=0;n<=25;n++)
{
CString str;
str.Format(“%c:”,n+’A');
strcpy(cr,str);
int dt = GetDriveType(cr);
int succeed = GetVolumeInformation(cr,lable,12,NULL,NULL,NULL,NULL,0);
switch(dt)
{
case DRIVE_UNKNOWN:
{
str.Format(“(%s) %s is DRIVE_UNKNOWN!”,lable,cr);
break;
}
case DRIVE_REMOVABLE:
{
if(succeed)
{
str.Format(“(%s) %s is DRIVE_REMOVABLE!”,lable,cr);
}
else
{
str.Format(“%s is DRIVE_REMOVABLE!”,cr);
}
break;
}
case DRIVE_FIXED:
{
str.Format(“(%s) %s is DRIVE_FIXED!”,lable,cr);
break;
}
case DRIVE_REMOTE:
{
str.Format(“(%s) %s is DRIVE_REMOTE!”,lable,cr);
break;
}
case DRIVE_CDROM:
{
str.Format(“(%s) %s is DRIVE_CDROM!”,lable,cr);
break;
}
case DRIVE_RAMDISK:
{
str.Format(“(%s) %s is DRIVE_RAMDISK!”,lable,cr);
break;
}
default:
{
str.Empty();
break;
}
}
if(!str.IsEmpty())
{
AfxMessageBox(str);
}
}

枚举系统进程核心代码

110 views 十月 10, 04 by Timothy

包含头文件:
#include “tlhelp32.h”
示例:

void CTerminateProcessDlg::OnGetProcess()
{
m_ListBox.ResetContent();
CString m_output;
HANDLE hProcessSnap=NULL;
PROCESSENTRY32 pe32={0};
hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap==(HANDLE)-1)
{
::MessageBox(NULL,”查询进程失败!:(“,”错误提示”,MB_OK);

}
pe32.dwSize=sizeof(PROCESSENTRY32);
if(Process32First(hProcessSnap,&pe32))
{
do
{
m_output.Format(“%-20s ID:%-5d”,pe32.szExeFile,pe32.th32ProcessID);
m_ListBox.AddString(m_output);
}
while(Process32Next(hProcessSnap,&pe32));
}
else
{
::MessageBox(NULL,”出现意外错误!”,”错误提示”,MB_OK);
}
CloseHandle(hProcessSnap);

}