Oct
18
// modified from http://acm.scs.bupt.cn/hefei/hefei.js
String.prototype.trim= function(){
// 用正则表达式将前后空格
// 用空字符串替代。
return this.replace(/(^\s*)|(\s*$)/g, "");
}
/**
* enables highlight rows in data tables
*/
function table_Init(container) {
// for every table row ...
try{
var rows = container.rows;
for ( var i = 0; i < rows.length; i++ ) {
for (var j = 0 ; j < rows[i].cells.length ; ++j) {
rows[i].cells[j].className = 'nowrap';
if (j > 3) {
try {
var text = rows[i].cells[j].innerHTML;
var AC = new RegExp("^\\d+/\\d+$");
var TRY = new RegExp("^\\d+/--$");
var NOTTRY = new RegExp("^0/--$");
if (NOTTRY.test(text)){
//rows[i].cells[j].className += ' notry';
}
else if (TRY.test(text)){
rows[i].cells[j].className += ' try';
}
else if (AC.test(text)){
rows[i].cells[j].className += ' ac';
}
}
catch (err) {
}
}
}
// ... with the class 'odd' or 'even' ...
if (i % 2 == 1) {
rows[i].className = 'odd';
}
else {
rows[i].className = 'even';
}
// ... add event listeners ...
// ... to highlight the row on mouseover ...
//if ( navigator.appName == 'Microsoft Internet Explorer' ) {
// but only for IE, other browsers are handled by :hover in css
rows[i].onmouseover = function() {
this.className += ' hover';
}
rows[i].onmouseout = function() {
this.className = this.className.replace( ' hover', '' );
}
// }
}
}
catch (err){
alert(err.description);
}
}
String.prototype.trim= function(){
// 用正则表达式将前后空格
// 用空字符串替代。
return this.replace(/(^\s*)|(\s*$)/g, "");
}
/**
* enables highlight rows in data tables
*/
function table_Init(container) {
// for every table row ...
try{
var rows = container.rows;
for ( var i = 0; i < rows.length; i++ ) {
for (var j = 0 ; j < rows[i].cells.length ; ++j) {
rows[i].cells[j].className = 'nowrap';
if (j > 3) {
try {
var text = rows[i].cells[j].innerHTML;
var AC = new RegExp("^\\d+/\\d+$");
var TRY = new RegExp("^\\d+/--$");
var NOTTRY = new RegExp("^0/--$");
if (NOTTRY.test(text)){
//rows[i].cells[j].className += ' notry';
}
else if (TRY.test(text)){
rows[i].cells[j].className += ' try';
}
else if (AC.test(text)){
rows[i].cells[j].className += ' ac';
}
}
catch (err) {
}
}
}
// ... with the class 'odd' or 'even' ...
if (i % 2 == 1) {
rows[i].className = 'odd';
}
else {
rows[i].className = 'even';
}
// ... add event listeners ...
// ... to highlight the row on mouseover ...
//if ( navigator.appName == 'Microsoft Internet Explorer' ) {
// but only for IE, other browsers are handled by :hover in css
rows[i].onmouseover = function() {
this.className += ' hover';
}
rows[i].onmouseout = function() {
this.className = this.className.replace( ' hover', '' );
}
// }
}
}
catch (err){
alert(err.description);
}
}
Jun
2
之前写了一篇 myftp: 一个linux下简单的ftp客户端实现
里面详细介绍了ftp协议的基本工作过程。
为了明天晚上的Windows下的程序,于是把它移植到了Win32下面。
然后异常庆幸我当时做了多么明智的封装啊,只要稍稍改几行就可以在windows下面编译了 :D
这个压缩包在Windows和Linux下面都可以直接make编译了哈^_^
不过这次的修改只是增加跨平台编译,没有修正myftp的BUG,仅供参考 :D
里面详细介绍了ftp协议的基本工作过程。
为了明天晚上的Windows下的程序,于是把它移植到了Win32下面。
然后异常庆幸我当时做了多么明智的封装啊,只要稍稍改几行就可以在windows下面编译了 :D
这个压缩包在Windows和Linux下面都可以直接make编译了哈^_^
不过这次的修改只是增加跨平台编译,没有修正myftp的BUG,仅供参考 :D
下载文件 (已下载 1466 次)
May
25
开始学习winsock(应付网络程序设计的大作业)
在网上搜"winsock 入门",然后都是一堆很ooxx的东西,反正你看了就是不知道怎么写程序就是了。
试着写下一些代码,却发现出现一堆类似
这样的错误。
Google了一下,众说纷纭啊,有说extern "C"的,有说少lib路径的
最后在CSDN的论坛上发现有个人遇到这个问题,贴了个程序,后面别人给的建议有效了:
编译:
C:\code\> g++ a.cpp -lwsock32
加上libwsock32的库即可。。。汗。
在网上搜"winsock 入门",然后都是一堆很ooxx的东西,反正你看了就是不知道怎么写程序就是了。
试着写下一些代码,却发现出现一堆类似
引用
undefined reference to `socket@12'
undefined reference to `htons@4'
undefined reference to `htons@4'
Google了一下,众说纷纭啊,有说extern "C"的,有说少lib路径的
最后在CSDN的论坛上发现有个人遇到这个问题,贴了个程序,后面别人给的建议有效了:
#include<iostream>
#include<windows.h>
#include<winsock.h>
using namespace std;
int main() {
WSADATA wsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);
cout<<"hello"<<endl;
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in host;
int port = htons(8080);
}
#include<windows.h>
#include<winsock.h>
using namespace std;
int main() {
WSADATA wsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);
cout<<"hello"<<endl;
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in host;
int port = htons(8080);
}
编译:
C:\code\> g++ a.cpp -lwsock32
加上libwsock32的库即可。。。汗。
May
16
把手头另外一个移动的号码开通了fetion
然后加上昨天发现的那个php的fetion处理了一下
现在大家可以在线免费给我发短信拉!
想自己架设一个?下载这个东西去玩儿吧:
然后加上昨天发现的那个php的fetion处理了一下
现在大家可以在线免费给我发短信拉!
想自己架设一个?下载这个东西去玩儿吧:
下载文件 (已下载 1717 次)
May
15
这下方便了。。可以直接从网页上发短信了。。。
网上有现成的,比较常见的是 http://sms.api.bz ,应该是安全的,不过毕竟是别人搭建的,不放心。
如果自己搭建,可以用这个:
不过要求是安装了php5-curl模块的。
网上有现成的,比较常见的是 http://sms.api.bz ,应该是安全的,不过毕竟是别人搭建的,不放心。
如果自己搭建,可以用这个:
下载文件 (已下载 1717 次)
不过要求是安装了php5-curl模块的。
May
15
不知道从什么时候开始,发现当使用phpmailer发送邮件的时候
如果邮件标题长度超过16个字符,无论调整成什么编码,收到的邮件都是乱码。
昨天发现了别人的应用,却发现非常正常。
对比之下,发现原来我用的是phpmailer v2.3,别人用的是v2.0
降级成旧版本以后发现一切都正常了。。。Orz
原来是新版本的Bug,郁闷了我好久。。。。
于是把所有用到phpmailer的应用都替换了一下。。。
如果邮件标题长度超过16个字符,无论调整成什么编码,收到的邮件都是乱码。
昨天发现了别人的应用,却发现非常正常。
对比之下,发现原来我用的是phpmailer v2.3,别人用的是v2.0
降级成旧版本以后发现一切都正常了。。。Orz
原来是新版本的Bug,郁闷了我好久。。。。
于是把所有用到phpmailer的应用都替换了一下。。。
Apr
18
现在只要加入我修改的这个小东西,那么在有访客留言、评论、申请链接的时候,
我的139邮箱就会收到一封邮件,而中国移动139信箱在收到邮件以后会自动往我的手机发邮件主题。。。
噢也~~~
-------------我就是那华丽的分割线---------------
Hack for Bo-blog 2.1.0+
当有访客留言或评论、申请链接时向指定邮箱发送邮件
2009-04-18
By Felix021 @ http://www.felix021.com
Mail: i[at]felix021.com
使用说明:
1。将目录fm放置到blog/inc下面,修改fm/felix_mail.php第4~8行的四个参数。如果你的空间支持SMTP,这么就OK了,如果不支持,可以修改下面的内容,通过你的邮箱提供商的SMTP服务器发送邮件,但是这样在评论和留言的时候会稍稍卡一下。
2。将mod_visit.php中171行到189行的内容(可以适当自定义)放到blog/inc/mod_visit.php的相应位置(不知道v2.1.1是怎样的,反正我的2.1.0测试是OK了,应该可以直接用文件覆盖)。注意不要把177行的16改大,因为phpmailer的限制,UTF-8编码下,邮件主题最大16个字符,不知道是什么问题,如果有谁搞清楚了,一定记得通知我一下~~~
3。将mod_login.php中280行到284行的内容方到blog/inc/mod_login.php的对应位置,注意事项同上。
4。接收邮件的邮箱建议使用中国移动的139邮箱,因为这样可以直接发短信告诉你有新的评论/通知/链接了。
--
本来想发到bo-blog论坛去,但是论坛原先的用户名的密码不记得了,163邮箱没收到重置邮件
新注册一个用户,i@这个邮箱又没收到验证邮件
得,我困得很,还不如去睡觉。
我的139邮箱就会收到一封邮件,而中国移动139信箱在收到邮件以后会自动往我的手机发邮件主题。。。
噢也~~~
-------------我就是那华丽的分割线---------------
Hack for Bo-blog 2.1.0+
当有访客留言或评论、申请链接时向指定邮箱发送邮件
2009-04-18
By Felix021 @ http://www.felix021.com
Mail: i[at]felix021.com
使用说明:
1。将目录fm放置到blog/inc下面,修改fm/felix_mail.php第4~8行的四个参数。如果你的空间支持SMTP,这么就OK了,如果不支持,可以修改下面的内容,通过你的邮箱提供商的SMTP服务器发送邮件,但是这样在评论和留言的时候会稍稍卡一下。
2。将mod_visit.php中171行到189行的内容(可以适当自定义)放到blog/inc/mod_visit.php的相应位置(不知道v2.1.1是怎样的,反正我的2.1.0测试是OK了,应该可以直接用文件覆盖)。注意不要把177行的16改大,因为phpmailer的限制,UTF-8编码下,邮件主题最大16个字符,不知道是什么问题,如果有谁搞清楚了,一定记得通知我一下~~~
3。将mod_login.php中280行到284行的内容方到blog/inc/mod_login.php的对应位置,注意事项同上。
4。接收邮件的邮箱建议使用中国移动的139邮箱,因为这样可以直接发短信告诉你有新的评论/通知/链接了。
下载文件 (已下载 1514 次)
--
本来想发到bo-blog论坛去,但是论坛原先的用户名的密码不记得了,163邮箱没收到重置邮件
新注册一个用户,i@这个邮箱又没收到验证邮件
得,我困得很,还不如去睡觉。
Apr
13
因为网络程序设计课程要求做一个扩展型的作业,其中一个选项是ftp client。于是我就选了这个。
做完以后发现其实不难,而最难的地方,在于了解FTP协议的工作过程。
下面随便闲扯一点东西吧。
在网络上,经常遇到的应用层协议包括HTTP,FTP,SMTP,POP3,都使用TCP协议连接,感觉挺像的。
HTTP协议显然是最常见的,在客户端和服务器之间只有一条连接,既传输控制命令(HTTP头),也传输数据(HTTP实体)
因此在编写动态网页脚本的时候,一定要先输出header,然后才输出HTML代码。
FTP协议则采用两条连接,一条控制连接,一条数据连接。
控制连接用于传输控制命令,始终保持连接,直到客户端发出QUIT命令结束连接;
数据连接在需要传输数据的时候打开(发起端可以是客户端也可以是服务器),传输完毕后就断开。
FTP的数据连接有两种模式,一种是主动模式,一种是被动模式(PASV, Passive Mode)。
采用主动模式时,客户端监听一个本地端口,由服务器发起连接传输数据;
而采用被动模式时,则是由服务器打开一个端口,客户端发起连接接收数据。
下面我用telnet来模拟一个FTP客户端连接、登陆、使用被动模式传输文件并退出的完整过程:
做完以后发现其实不难,而最难的地方,在于了解FTP协议的工作过程。
下面随便闲扯一点东西吧。
在网络上,经常遇到的应用层协议包括HTTP,FTP,SMTP,POP3,都使用TCP协议连接,感觉挺像的。
HTTP协议显然是最常见的,在客户端和服务器之间只有一条连接,既传输控制命令(HTTP头),也传输数据(HTTP实体)
因此在编写动态网页脚本的时候,一定要先输出header,然后才输出HTML代码。
FTP协议则采用两条连接,一条控制连接,一条数据连接。
控制连接用于传输控制命令,始终保持连接,直到客户端发出QUIT命令结束连接;
数据连接在需要传输数据的时候打开(发起端可以是客户端也可以是服务器),传输完毕后就断开。
FTP的数据连接有两种模式,一种是主动模式,一种是被动模式(PASV, Passive Mode)。
采用主动模式时,客户端监听一个本地端口,由服务器发起连接传输数据;
而采用被动模式时,则是由服务器打开一个端口,客户端发起连接接收数据。
下面我用telnet来模拟一个FTP客户端连接、登陆、使用被动模式传输文件并退出的完整过程: