2007年11月10日最新修改
感谢daisylh的完善,请在miy=i;下加上break;
添加了对Firefox的支持,请在var yy=D.getYear();下加上 if ( navigator.appName == "Netscape" ) yy += 1900;
注:07年即将过去,本程序也即将过期了,不过令人高兴的是,daisylh已经将程序完善到2020年,并且一直维护着,您可以前往 http://www.cnblogs.com/daisylh/archive/2007/03/31/694892.html 找到更新程序。
2007年2月27日最新修改
感谢VaneyLee的提醒,现在程序已经修改,现在没有问题了。
由于当初我写的时候是下午16:30分,所以当我把时钟调到年初一的时候,也是16:30分,由于疏忽,所以将年初一16:30分的时间记录为07年初始时间了,所以导致了如果您在16:30分以前看的话,就是上一天了。
程序红色黑体部分是修改的部分。
感谢daisylh的完善,daisylh将程序完善到2020年,您可以访问他的博客查看。
“http://www.cnblogs.com/daisylh/archive/2007/03/31/694892.html”
昨天,在百度知道上帮人家回答了一个问题,解决了人家网站上阳历转阴历的错误。
错误在于这个javascript程序使用的是枚举法来转换阴历阳历,使得这个程序只能使用到2006年。由于这个程序比较简单,所以我根据了一些阴历的常识,对程序进行了修改,现在程序能用到2007年。
不过让我很寒心,提问者选了这样一个最佳答案:“我的QQ是XXXXX,我帮你解决。”我想,就算那人真的帮你解决了问题,可这样写有意思么,如果别人也遇到了这个问题,能再得到帮助吗?不说了。
下面给出这个程序的代码,修改的地方我用红色表示出来了,并适当做了注释,相信有点编程能力的人都能看懂,并能自己修改了。
把这段代码插入到你想显示的位置就可以了。最底下黄色的语句就是用于显示的CAL函数,你可以根据实际情况进行修改。
<script language=JavaScript>
<!--
var bsYear;
var bsDate;
var bsWeek;
var arrLen=9; //数组长度
var sValue=0; //当年的秒数
var dayiy=0; //当年第几天
var miy=0; //月份的下标
var iyear=0; //年份标记
var dayim=0; //当月第几天
var spd=86400; //每天的秒数
var year1999="30;29;29;30;29;29;30;29;30;30;30;29"; //354
var year2000="30;30;29;29;30;29;29;30;29;30;30;29"; //354
var year2001="30;30;29;30;29;30;29;29;30;29;30;29;30"; //384
var year2002="30;30;29;30;29;30;29;29;30;29;30;29"; //354
var year2003="30;30;29;30;30;29;30;29;29;30;29;30"; //355
var year2004="29;30;29;30;30;29;30;29;30;29;30;29;30"; //384
var year2005="29;30;29;30;29;30;30;29;30;29;30;29"; //354
var year2006="30;29;30;29;30;30;29;29;30;30;29;29;30"; //384
var year2007="29;29;30;29;29;30;29;30;30;30;29;30"; //这个表示2007年阴历每月的天数。注意,由于2006年是阴历闰年,所以有13个月,而2007年不是闰年。
var month1999="正月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月"
var month2001="正月;二月;三月;四月;闰四月;五月;六月;七月;八月;九月;十月;十一月;十二月"
var month2004="正月;二月;闰二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月"
var month2006="正月;二月;三月;四月;五月;六月;七月;闰七月;八月;九月;十月;十一月;十二月"
//这里是闰年的表示,如果不是闰年,就不需要加了。主要注意带闰字的月。
var Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十";
var Ys=new Array(arrLen);
Ys[0]=919094400;Ys[1]=949680000;Ys[2]=980265600;
Ys[3]=1013443200;Ys[4]=1044028800;Ys[5]=1074700800;
Ys[6]=1107878400;Ys[7]=1138464000;
Ys[8]=1171728000;//这个数字是大年初一0:00的时候,javascript的D.getTime() / 1000的值
var Yn=new Array(arrLen); //农历年的名称
Yn[0]="己卯年";Yn[1]="庚辰年";Yn[2]="辛巳年";
Yn[3]="壬午年";Yn[4]="癸未年";Yn[5]="甲申年";
Yn[6]="乙酉年";Yn[7]="丙戌年";
Yn[8]="丁亥年";
var D=new Date();
var yy=D.getYear();
if ( navigator.appName == "Netscape" ) yy+= 1900; //Firefox支持
var mm=D.getMonth()+1;
var dd=D.getDate();
var ww=D.getDay();
if (ww==0) ww="<font color=#EACF4F> 星期日 ";
if (ww==1) ww=" 星期一 ";
if (ww==2) ww=" 星期二 ";
if (ww==3) ww=" 星期三 ";
if (ww==4) ww=" 星期四 ";
if (ww==5) ww=" 星期五 ";
if (ww==6) ww="<font color=#EACF4F> 星期六 ";
ww=ww;
var ss=parseInt(D.getTime() / 1000);
if (yy<100) yy="19"+yy;
for (i=0;i<arrLen;i++)
if (ss>=Ys[i]){
iyear=i;
sValue=ss-Ys[i]; //当年的秒数
}
dayiy=parseInt(sValue/spd)+1; //当年的天数
var dpm=year1999;
if (iyear==1) dpm=year2000;
if (iyear==2) dpm=year2001;
if (iyear==3) dpm=year2002;
if (iyear==4) dpm=year2003;
if (iyear==5) dpm=year2004;
if (iyear==6) dpm=year2005;
if (iyear==7) dpm=year2006;
if (iyear==8) dpm=year2007;
dpm=dpm.split(";");
var Mn=month1999;
if (iyear==2) Mn=month2001;
if (iyear==5) Mn=month2004;
if (iyear==7) Mn=month2006;
Mn=Mn.split(";");
var Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十";
Dn=Dn.split(";");
dayim=dayiy;
var total=new Array(13);
total[0]=parseInt(dpm[0]);
for (i=1;i<dpm.length-1;i++) total[i]=parseInt(dpm[i])+total[i-1];
for (i=dpm.length-1;i>0;i--)
if (dayim>total[i-1]){
dayim=dayim-total[i-1];
miy=i;
break;
}
bsWeek=ww;
bsDate=yy+"年"+mm+"月";
bsDate2=dd+"日";
bsYear="农历"+Yn[iyear];
bsYear2=Mn[miy]+Dn[dayim-1];
if (ss>=Ys[8]||ss<Ys[0]) bsYear=Yn[8];
function CAL(){
document.write("<font color=#9A172D>"+bsDate+"</font><font color=#9A172D>"+bsDate2+"</font><font color=#9A172D>");
document.write(bsWeek+"<font color=#9A172D>");
document.write(bsYear+bsYear2);
}
//-->
</script>
<script language=javascript>CAL();</script>
Windows Vista 几天前刚刚发布,网上已经有很多教程了,虽然我按照教程做了,但是还是遇到一些问题,在此写出来。
首先,Windows Vista默认不安装IIS的,要安装,就要进入控制面板->程序->添加Windows程序
另外,注意,当你选中IIS以后,还不能满足安装PHP的要求,你还得点开+号,选中里面的ISAPI筛选器,注意,这个是默认不安装的。
好了,如果你能在IIS中看到ISAPI,说明你已经安装成功了。如果不安装ISAPI,那么将不能添加脚本映射。
最后,选中处理程序映射->添加脚本映射,在弹出的对话框中,请求路径输入*.PHP,可执行文件为 php目录下的php5isapi.dll,名称就叫PHP,OK啦。记得在IIS5中还需要添加ISAPI 筛选器,在IIS7中不需要了。写个页面测试一下吧。
<?
phpinfo(
?>
一切OK。
已经接近年末了,这一年收获一般般。
这一年中,特别是后半年,我的ASP网站做得挺多的。不过该到升级的时候了,不能老是停留在ASP的阶段吧。
5月份,有了个可爱的,来自北京的女朋友。
7月份,在学校本部研究智能车的控制算法
8月份,去清华参加比赛,全国团体二等奖。
9月份--11月份,接连做了4个项目,其中1个是VB开发数据库。
11月3日,和女朋友分手了。因为相处异地,以后不可能结婚。
11月-12月,沉睡着。
今年最值得回忆的,也就是和你在一起的那段时光,那是我美好的初恋。
这篇文章是针对Linux初学者的。因为我也是昨天才刚刚开始在图形界面下使用RedHat9的,所以,我也是个初学者。当然,在安装Java开发环境的时候碰到许多问题,不过,在众多网友的文献的帮助下,我终于完成了在RedHat9下安装Java开发环境的尝试,特此将安装方法整理成文,写在这里,希望对你有不小的帮助。
好,言归正传。
一:下载必要的软件
1:Sun公司的JDK 1.5 (jdk-1_5_0_09-linux-i586.bin)
这是Java程序的开发包,没有它,你写的程序就不能编译了。
下载地址:http://java.sun.com/javase/downloads/index.jsp
2:Sun公司的JRE 1.5 (jre-1_5_0_09-linux-i586.bin)
这是Eclipse的运行环境。因为Eclipse是用Java编写的软件,所以没有Sun公司的JRE,Eclipse是不能运行的。
下载地址:http://java.sun.com/javase/downloads/index.jsp
3:IBM公司的Eclipse 3.2
这是写程序的软件,一个集成开发环境(可以编写多种语言)。
下载地址:http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.2.1-200609210945/eclipse-SDK-3.2.1-linux-gtk.tar.gz
注意:以上3个软件都下载Linux版本的。Sun公司的两个软件,下载自解压的bin就可以了。并且,建议将文件都下载到主目录下。例如:我的用户名是coffeecat,那么我的主目录就是../home/coffeecat
二:安装软件
1:安装JDK 1.5 (文件名:jdk-1_5_0_09-linux-i586.bin)
1:打开 主菜单(红帽) --> 系统工具 --> 终端(就好比windows下的cmd窗口)
2:输入我们的文件名,就能执行这个文件了「自解压」。
../home/coffeecat/jdk-1_5_0_09-linux-i586.bin
3:屏幕出现安装协议,按空格可以看下一页,等到出现询问,回复yes,同意协议以后,程序就开始自动解压缩了。解压缩以后程序会自动安装。安装的目录是../usr/java
4:配置环境变量『注:配置环境变量必需是root才可以完成』
打开../etc/profile文件,在里面加入以下内容
export JAVA_HOME=/usr/java/jdk1.5.0_09
export PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:/usr/java/jdk1.5.0_09/lib/tools.jar:$CLASSPATH
export CLASSPATH
其中,JDK的目录如果和我不同的,请自己改。
注:不能在图形界面下双击打开该程序,只能在终端中才能执行。
如果你下载的是RPM文件,那么你在自解压以后会得到一个RPM文件,你可以在图形界面中双击执行它。
2:安装JRE 1.5 (文件名:jrk-1_5_0_09-linux-i586.bin)
方法和JDK一样,所以在这里略。
3:安装eclipse
1:下载的是一个压缩文件,你可以在图形界面下将它解压缩。方法和Windows下用WinRar一样,点右键,选解压缩到这里。然后,出现了一个新的文件夹eclipse,这里面就是我们的eclipse软件。
2:文件夹里有一个eclipse文件,这个是可执行文件。你可以双击打开它。如果出现了需要JRE运行环境,请往下看。如果正常启动了eclipse,那恭喜你,你已经完成了eclipse的安装,而且你可以去买张彩票,说不定会中奖。
三:解决eclipse需要JRE的问题
首先,建议你将eclipse文件夹复制到../usr/local里,因为这里好像是专门存放软件的文件夹。
打开 终端,输入命令
../usr/local/eclipse/eclipse -vm /usr/java/jdk1.5.0_09/bin/java
就可以打开eclipse了。
最后,你需要配置一下eclipse的JRE,否则以后你每次进入eclipse都要用shell命令,你也不希望这样吧:)
配置的方法:Window --> Preferences --> Java --> Installed JREs , 这里选择你安装的JRE就可以了。然后保存设置,以后,你就可以双击Eclipse图标进入软件了。
End ^_^
CoffeeCat
2006-11-28
解决方法:
方法1:将路由器恢复出厂设置(登陆到路由器的控制页面,里面有的)
方法2:Reset路由器(一般路由器外壳上有一个Reset键,找根针插一下就行了,有些路由器需要停几秒钟)
下面是一些描述,不感兴趣的读者可以略过。
症状描述:
前阵子发现,我的电脑竟然不能发EMail,按了发送后,网页就没有相应了,之后就显示无法显示该页。
之后,帮人家做网站,做完后想上传到FTP服务器,竟然大于1KB的文件传不了,往往传了300字节后就停滞在那里了,用了LeapFTP,FlashFXP等都试过了,都不行。
还有些网站,不能注册,比如支付宝。说白了,也就是项目比较多的表单不能提交。
寻找原因:
1:我将电脑拿回家的时候,一切正常。说明不是我电脑系统设置的问题。
2:回到学校,我去我隔壁寝室的朋友那里试了试,一切正常。说明我们学校的网络服务商没有问题。
3:我再用我同寝室的朋友的电脑试了试,问题还是存在的。说明问题在我们寝室的路由器。
问题原因:
产生这个问题的具体原因可能是由于路由器内的防火墙阻止了一些包的发送,但由于路由器在设计时,将流量放在第一位,所以在检测到危险数据包的时候,一部份数据包已经发送出去了。这也就是为什么我有的时候能发送几字节的文件。
至于路由器为什么会阻止我们的常用的数据包呢?这个小弟就不知道了,可能是路由器“中病毒了吧”,嘿嘿。
将路由器恢复出厂设置以后,一切正常了。
注:小弟使用的是 TP-Link SOHO Router R402M 路由器
本文章主要针对初学者不太容易理解Linux的分区所写,主要针对用惯了Windows的用户。我也是从初学者过来的,当时也这样的困扰着我。
下面,我们从Windows的角度看Linux的分区。
首先,我们知道,Windows中有C,D,E等硬盘分区,而在Linux中,只有一个/(分区),我们叫它根目录。所有的文件都是放在/下面的,而没有C,D,E之分。你可以把/理解成C盘,你的系统文件夹就是/Windows,你的文档放在/My Document里,你的程序放在/Program Files里。就是这样子。
然后,操作系统有虚拟内存技术咯,在Linux中,虚拟内存被看成是一个分区的,我们叫它Swap分区。一般,我们分配给这个分区120MB的空间,用于虚拟内存的存储。
好,下面我们就可以来最简单的分区了!
根据上面所写的,我们可以把我们的硬盘分为2个区,一个是 / ,一个是Swap。/中存放我们的文件,Swap是虚拟内存交换文件。
完成分区后,你打开Linux中的我的电脑,你会看到很多文件夹,这些就是在/下面的文件夹,和C盘很像。
问题来了。这样不是就把系统和我的文件放在一个分区里了吗?玩Windows的经验告诉我们,这样做很不好。难道Linux没有解决的方法吗?当然有!
在/根目录下,有一个叫home的目录。这里面,就是我们的个人文件啦。我们可以将这个目录单独分区。注意,是将文件夹单独分区!!!
好啦,那样的话我们就会有3个分区啦,常规文件和系统文件分开了。
所以,在进行Linux分区前,你需要了解一下根目录下有哪些重要的目录,以便进行分区的规划。如果你不会的话,就分成2个区,以后熟悉了再完善你的分区。
比如,如果你的这台电脑是打算做邮件服务器的,那当然有必要将邮件文档单独分区。所以,你可以将/usr/mail单独分成1个区。神奇吧,文件夹能单独分一个区。
不过注意,分区数量还是和电脑规定的一样的,最多4个分区,最多4个主分区,可以有扩展分区,但扩展分区只能由一个。在扩展分区中可以包含逻辑分区,至于数量么,一下子忘了,不过够你用的了。比如,你可以分3个主分区,1个扩展分区,在扩展分区里,又包括了10个逻辑分区,你就有13个分区了。
所以和Windows不同,Windows里只能有一个主分区,而Linux允许多个主分区!
最后说说设备。也许你会问,Windows的光盘是在一个分区,那Linux的光盘在哪里呢。好,记住,Linux中的所有的设备,都是一个文件,光驱也是一个文件。那这些文件在哪里呢?它在 /dev下。我们的光盘也就是/dev/cdrom。我们的硬盘也在这里。至于硬盘的代号,这里简单说一下。
硬盘,分为IDE和SATA两种。
IDE /dev/hd[a-d]
SATA /dev/sd[a-p]
为什么[a-d]呢?因为我们的电脑里最多有2条IDE的线,没根线上可挂2个设备,那就是我们最多放4个硬盘。第一个IDE的第一个挂口,称为hd[a]。第二个IDE的第二个挂口,称为hd[d]
好,今天就讲到这里吧。
CoffeeCat
2006-3-4
高中的时候,我学习了Visual Basic 6.0。这是一门很方便的语言,简单容易。你可以像画图一样将应用程序的界面给画出来,而不需要写程序。而面对对象的设计,又让你可以为每一个控件对象编写程序,而这些程序,是有对象的事件驱动的。高中时,我做了一些小程序,其中最好的一个要数数学函数作图器了。他能够根据用户输入的函数表达式来画出函数图像。当然,由于我使用的是描点法,所以也就不能对函数进行分析了,只能画出图像。总之,Visual Basic的确是一门很方便好用的语言,很适合与非专业的同学来学习和使用。不过它也有很多缺陷,比如运行效率慢。当你了解了C和C++,你就不太喜欢Visual Basic了。
大一下学期学了C语言。C语言是一门非常非常经典的语言,它的严密性是Visual Basic不能比的。C语言是结构化程序设计语言,也就是用函数来驱动的,而且,C语言中支持指针操作,让你能直接访问操作内存,也有位运算,让你可以把它当成低级语言一样编成(低级语言的效率是最高的)。由于C语言是结构化程序设计语言,对用惯了VB的面对对象程序设计的我来说,还是觉得VB方便好用,但VB不够严密,开始觉得微软的VB开发人员有点溺爱我们了,什么事情都帮我们做了,使用变量不预先声明也默认允许了。C语言很严密,不过要用C编出一个函数作图器,那得画点时间了。我用的是Turbo C 2.0,当然,写出来程序的界面就是像DOS那样的啦。
大二上开始学习C++,这是一门神圣的语言,总觉得它会比较难学。真的学的时候,我开始感叹人类的伟大,开始享受C++带来的艺术的美。C++并不是一种新的程序设计语言,而是在C语言的基础上,进行改进,和提高。主要的改进就是加入了面对对象程序设计的思想,也就是把C语言中的结构体,升华到了类,让我们的程序设计的思路,从函数提高到了对象。不过C++是在C语言的基础上发展起来的,所以,如果要学习C++,还是先学好C语言。C++新增对类的实现,实在是太完美了。在原有的结构体中,加入了成员函数,加入了访问权限,设计思路就如同是一个操作系统。友元函数和类的继承则是把人类社会的艺术融入了到了程序设计语言当中。所以,C++是我们生活的写照,是程序中的艺术。
C++学完以后,回过头来看Visual Basic,有点不爽了。虽说Visual Basic是面对对象程序设计,但它已经是变了味的,不纯正。在Visual Basic中,我基本没用到过类对象,而且在MSDN中,对VB中的类对象也没有很详细的说明。Visual Basic为我们隐藏了太多的东西,作为学专业的我们来说。对于想求真学的我们,就好像被Visual Basic欺骗了。
最后谈谈MFC。MFC是一个更加扭曲的程序设计方法,不过算是一种面对对象的程序设计方法。如果你新建了一个MFC的工程,对于初学者,我想你是根本不能入手的,因为你在整个程序中找不到Main函数(确切说是WinMain函数,因为VC++是为开发Windows程序而服务的,所以他采用了消息的机制)。不过MFC的强大也是值得赞叹的。但是你要记住,MFC是写Windows程序的。它提供的类,是Windows中的。在Windows操作系统开始走下坡的时候,你是不是该学习多平台的JAVA而不是MFC呢?我是这样想的。今天就谈到这吧。
Dreamweaver MX 2004中解决中文乱码
有时候,我们使用了<!--#include File="a.asp"-->后,把网页的一部分代码写到了a.asp里去了。由于a.asp中没有head,因此,也无法自己声明a.asp是中文网页了,所以,你打开a.asp后,你这个文件中的中文变成乱码了,而如果用记事本打开则完全正常。说明我们的文件没有问题,是DreamWeaver认错了。下面给出解决方法
解决方法很简单,打开a.asp,选择“修改”-->“页面属性(Ctrl+J)”,在弹出的窗口中的文档编码中选择“简体中文”,然后按重新载入即可。
特别注意:在你看到是乱码的情况下,千万不要按保存,否则,结果只有你去花很多时间一个一个把乱码该成中文啦,撤消也是不行的。
CoffeeCat
2006-1-23
解决ASP中QueryString传中文的问题今天写程序的时候,发现用QueryString直接传中文不行,后来研究了下,问题解决了,方法还超级简单。
一句话,把你要传的中文用server.URLEncode()函数处理一下就可以了,其他的什么都不用变化。
例子:
传送页面(用一个超链接,目标接收页):------------------------------------------------------------
<%
city="上海"
%>
<a href="test.asp?city=<%=
server.URLEncode(city)%>">测试页面</a>
你原来是这样写的,这里的city的值是个中文,注意区别
<a href="test.asp?city=<%=city%>">测试页面</a>接受页面(和原来的一样):-------------------------------------------------------------
<%
city=request("city")
response.write(city)
%>
打印出来的就是 上海
ASP中的URLEncode是对中文编码的函数,奇怪的是,ASP会在接收的时候自动将编码转换成中文,而不需要调用任何函数。也就是说,URLEncode是不需要反函数的。不过,ASP.Net中好象有反函数叫URLDecode,这里就不介绍了。
至此,问题解决。
CoffeeCat
2005年12月10日
今天谈两个ASP运行时可能出现的与IIS有关的错误
-------------------------------------------------------------------
错误类型一:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] 不能更新。数据库或对象为只读。
错误类型二:
Microsoft OLE DB Provider for ODBC Drivers 错误 ''80004005''
[Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 ''Temporary (volatile) Jet DSN for process 0x728 Thread 0x854 DBC 0x276fb44 Jet''。
-------------------------------------------------------------------
当你使用ASP连接数据库时可能会出现这种情况,为什么呢?因为您数据库文件所在的目录权限对特定的用户没有开启足够的权限,你只能进行只读访问,一般出现这种情况的文件系统为NTFS,那怎么解决呢?
首先,你找到数据库所在目录,也可以是上层目录,然后设置文件夹 安全 属性,最简单的是把everyone的权限设置成完全即可,那对于这个问题,应该使哪个对象的权限设置成完全呢?答案是 IUSER_您的机器名 。这个是哪个对象?这个是Internet来宾用户,有兴趣的读者可以查阅相关资料。至此,问题解决,你可以再运行一下看看是否解决了问题。
附:对于Windows XP的用户,也许你会茫然于更改文件夹的安全属性。因为在默认情况下,Windows XP使用了简单文件共享方法,所以,当你点 属性 的时候是看不到 安全 选项卡的。具体操作如下:
我的电脑-->文件夹选项-->查看-->取消 使用简单文件共享(推荐) 的勾选 即可。你查看一下你要更改文件夹的属性,是不是多了一个 安全 选项卡呢?
CoffeeCat
2005-8-24