黑莓系统5.0以上系统在没有购买使用黑莓网络服务的手机上的断网现象一直比较恼人。几个月前有人做出了“黑莓续断膏”,原理是自架一台服务器,程序模拟MDS服务的简单回应,可以忽悠手机继续在线。 5.0系统断网自动修复程序黑莓断续膏(AntiBrokenNet!) BrokenNetFixup断网修复工具 区别是前者后台自动修复,后者要手动运行修复。 从网友的留言看出,虽然软件虽然有效,但没有稳定的服务器,软件刚出现时候确实有一批地址提供了服务,但很快就失效了。北京小C这里提供了模拟MDS服务器的程序,是VC写的一个小UDP服务器,虽然原理很简单,但用一台Windows的服务器来跑成本太高了,当然很难稳定提供。 其实服务只是很简单的几行代码,稍微改了一下就可以在Linux下面运行。一台低端Linux VPS的费用大概一年200RMB,这个费用对大多数人来说都不是什么问题的,所以推荐想要稳定防断网服务器的人去弄一台,一台可以很多人共享了。VPS侦探 、Lowendbox上有很多这样的推荐。 Linux版本的MDS服务器代码在Google Code上,可以直接下载。 在服务器(Debian/Ubuntu系统)上编译并运行: 1 2 3 4 5 sudo apt-get install build-essential wget http://ptcoding.googlecode.com/svn/trunk/mds_server.c gcc -Wall -o mds_server mds_server.c sudo cp mds_server /usr/local/bin/ /usr/local/bin/mds_server 现在可以设置手机的续断软件使用这个服务器来连接断网测试了,手机连接的时候,会实时打印出手机的连接信息跟PIN码。 当然最好把程序加入系统自动启动: sudo touch /var/log/mds_server.log sudo chown nobody /var/log/mds_server.log sudo sed -i '/^exit 0/isu nobody -c "nohup /usr/local/bin/mds_server >>/var/log/mds_server.log &"' /etc/rc.local 这样程序会在系统启动后自动在后台运行,运行的LOG会记录在/var/log/mds_server.log文件当中。 下面也无偿提供一枚MDS服务器,就是跑在我的Linux服务器上的。 [...]
花了几天时间,将zRuijie4GZHU的代码用Win32 API封装好了。 怎么突然给“万恶“的Windows开发程序呢,呵呵算是一时冲动好了,因为此前对Windows的API基本一无所知,虽然大二的时候C++的课程教了一点MFC,不过离开底层API来说MFC,真的很腾云驾雾,转眼就全忘记了,交课程报告时候用VS的Wizard大概地弄个两个窗口,甚至说不清一个控件是怎么被创建的……画上去的?嘿嘿…… 这次做Win的程序算是为了了解一下Win下面的模式,程序使用纯SDK API来写。开着虚拟机,开始的时候用Dev CPP来做,但没一会就忍不了那个编辑器的白痴了,还好Devcpp提供了项目的Makefile,于是用Notepad++来弄代码,开着个cmd窗口来编辑;最后还是把代码弄到Linux来,装了个mingw来cross,用gvim来写代码才有快感。程序的resources使用ResEd来做,很不错的小东西,用wine来跑一点问题都没,哈。 写win32过程我想最多的就是GTK,感觉Win32那些API很有考古的感觉,比如说指针类型,不知道有没有人统计过究竟微软发明了多少个类型,LPSTR,LPCSTR,INT_PTR,LPVOID TMD匈牙利命名法,就不能用好看一点的名称~ 对比起来,win32最原始的地方应该是消息处理过程吧,看着形态怪异的DlgProc,很郁闷的感觉;GTK只需要按事件类型来注册回呼函数,所以我写的的Proc基本都是用函数把处理过程引了出来。 代码依然扔在Google Code:http://code.google.com/p/zruijie4gzhu/
最近完成学校《操作系统》课程的试验报告,其中的题目是用程序实现银行家算法。什么是银行家算法,这里就不详提了,具体参看Wikipedia-zh。 Wikipedia的页面里面有整个银行家算法的伪代码,加起来只有12行,很清晰地表达出整个算法的思想,然而如果你到别的地方看看一些具体的银行家算法实现,往往会被吓一跳(可以看看百度百科的词条)。 银行家算法本来并不复杂,只是其运算涉及向量、集合,实现起来还是花要一点功夫。我使用C++来实现银行家算法,为了实现和伪代码描述尽可能接近,重载对象的运算符等,最后整个算法的实现和伪代码没太大差别,也就20行的样子。 伪代码 while (P != ∅) { found = FALSE; foreach (p ∈ P) { if (Mp − Cp ≤ A) { A = A + Cp ; P = P − {p}; found = TRUE; } } if (! found) return FAIL; } return OK; C++代码 1 2 3 4 5 6 [...]
用C来做这个题目还真是截然不同的感觉,没有HTTPConnection,没有urllib,所有报文都得自己构建自己解析……更麻烦的是中文问题,不得不调用到系统库来进行解码…… 貌似这次最满意的一行代码是: char type = (id[9] - 1) ? '6' : '4';
Page optimized by WP Minify WordPress Plugin