30 September 2013

JS倒计时大全


<form name="form1">     <div align="center" align="center">         <center>离2012年<span class='wp_keywordlink_affiliate'><a href="http://lxy.me/tag/世界末日" title="查看 世界末日 中的全部文章" target="_blank">世界末日</a></span>还有:<br>             <input type="textarea" name="left" size="35" style="text-align: center">         </center>     </div> </form> <script LANGUAGE="javascript">     startclock()     var timerID = null;     var timerRunning = false;     function showtime() {         Today = new Date();         var NowHour = Today.getHours();         var NowMinute = Today.getMinutes();         var NowMonth = Today.getMonth();         var NowDate = Today.getDate();         var NowYear = Today.getYear();         var NowSecond = Today.getSeconds();         if (NowYear < 2000)             NowYear = 1900 + NowYear;         Today = null;         Hourleft = 00 - NowHour         Minuteleft = 00 - NowMinute         Secondleft = 00 - NowSecond         Yearleft = 2012 - NowYear         Monthleft = 12 - NowMonth - 1         Dateleft = 21 - NowDate         if (Secondleft < 0) {             Secondleft = 60 + Secondleft;             Minuteleft = Minuteleft - 1;         }         if (Minuteleft < 0) {             Minuteleft = 60 + Minuteleft;             Hourleft = Hourleft - 1;         }         if (Hourleft < 0) {             Hourleft = 24 + Hourleft;             Dateleft = Dateleft - 1;         }         if (Dateleft < 0) {             Dateleft = 31 + Dateleft;             Monthleft = Monthleft - 1;         }         if (Monthleft < 0) {             Monthleft = 12 + Monthleft;             Yearleft = Yearleft - 1;         }         Temp = Yearleft + '年, ' + Monthleft + '月, ' + Dateleft + '天, ' + Hourleft + '小时, ' + Minuteleft + '分, ' + Secondleft + '秒'         document.form1.left.value = Temp;         timerID = setTimeout("showtime()", 1000);         timerRunning = true;     }     var timerID = null;     var timerRunning = false;     function stopclock() {         if (timerRunning)             clearTimeout(timerID);         timerRunning = false;     }     function startclock() {         stopclock();         showtime();     }     // -->   </script>    

2.小时倒计时,可用于在线考试
<SCRIPT LANGUAGE="JavaScript">     <!--     var maxtime = 60 * 60 //一个小时,按秒计算,自己调整!       function CountDown() {         if (maxtime >= 0) {             minutes = Math.floor(maxtime / 60);             seconds = Math.floor(maxtime % 60);             msg = "距离结束还有" + minutes + "分" + seconds + "秒";             document.getElementByIdx_x("timer").innerHTML = msg;             if (maxtime == 5 * 60) alert('注意,还有5分钟!');             --maxtime;         }         else {             clearInterval(timer);             alert("时间到,结束!");         }     }     timer = setInterval("CountDown()", 1000);     //-->   </SCRIPT> <div id="timer" style="color:red"></div>  
3.简单倒计时(仅显示天数)
<Script Language="JavaScript">     var timedate = new Date("January 14,2013");     var times = "研究生<span class='wp_keywordlink_affiliate'><a href="http://lxy.me/tag/考试" title="查看 考试 中的全部文章" target="_blank">考试</a></span>";     var now = new Date();     var date = timedate.getTime() - now.getTime();     var time = Math.floor(date / (1000 * 60 * 60 * 24));     if (time >= 0) ;     document.write("<li><font color=#DEDBDE>现在离2013年" + times + "还有: <font color=red><b>" + time + "</b></font> 天</font></li>"); </Script>  
4.复杂版倒计时,带毫秒
<script language="JavaScript" type="text/javascript">     function d<span class='wp_keywordlink_affiliate'><a href="http://lxy.me/tag/js" title="查看 js 中的全部文章" target="_blank">js</a></span>() {         var urodz = new Date("11/12/2008");         var now = new Date();         var num         var ile = urodz.getTime() - now.getTime();         var dni = Math.floor(ile / (1000 * 60 * 60 * 24));         if (dni > 1)             num = dni + 1         else         if (dni == 1)             num = 2         else         if (dni == 0)             num = 1         else             num = 0         document.write(num)     } </script>
距某某开幕式还有 [ <script language="JavaScript" type="text/javascript">d<span class='wp_keywordlink_affiliate'><a href="http://lxy.me/tag/js" title="查看 js 中的全部文章" target="_blank">js</a></span>()</script>] 天 第五个:Javascript倒计时器 - 采用系统时间自校验 这次利用系统时间自校验倒计时, 无需手工调校使得倒计时更为精确, 代码及详细注释如下:
<span id="clock">00:01:11:00</span> <input id="startB" type="button" value="start countdown!" onclick="run()"> <input id="endB" type="button" value="stop countdown!" onclick="stop()"> <br> <input id="diff" type="text"> <input id="next" type="text"> <script language="Javascript">         var normalelapse = 100;     var nextelapse = normalelapse;     var counter;     var startTime;     var start = clock.innerText;     var finish = "00:00:00:00";     var timer = null;
    // 开始运行       function run() {         startB.disabled = true;         endB.disabled = false;         counter = 0; // 初始化开始时间           startTime = new Date().valueOf();
// nextelapse是定时时间, 初始时为100毫秒   // 注意setInterval函数: 时间逝去nextelapse(毫秒)后, onTimer才开始执行           timer = window.setInterval("onTimer()", nextelapse);     }
    // 停止运行       function stop() {         startB.disabled = false;         endB.disabled = true;         window.clearTimeout(timer);     }
    window.onload = function () {         endB.disabled = true;     }
    // 倒计时函数       function onTimer() {
        if (start == finish) {             window.clearInterval(timer);             alert("time is up!");             return;         }
        var hms = new String(start).split(":");         var ms = new Number(hms[3]);         var s = new Number(hms[2]);         var m = new Number(hms[1]);         var h = new Number(hms[0]);
        ms -= 10;         if (ms < 0) {             ms = 90;             s -= 1;             if (s < 0) {                 s = 59;                 m -= 1;             }
            if (m < 0) {                 m = 59;                 h -= 1;             }         }
        var ms = ms < 10 ? ("0" + ms) : ms;         var ss = s < 10 ? ("0" + s) : s;         var sm = m < 10 ? ("0" + m) : m;         var sh = h < 10 ? ("0" + h) : h;
        start = sh + ":" + sm + ":" + ss + ":" + ms;         clock.innerText = start;
// 清除上一次的定时器           window.clearInterval(timer);
// 自校验系统时间得到时间差, 并由此得到下次所启动的新定时器的时间nextelapse           counter++;         var counterSecs = counter * 100;         var elapseSecs = new Date().valueOf() - startTime;         var diffSecs = counterSecs - elapseSecs;         nextelapse = normalelapse + diffSecs;         diff.value = counterSecs + "-" + elapseSecs + "=" + diffSecs;         next.value = "nextelapse = " + nextelapse;         if (nextelapse < 0) nextelapse = 0;
// 启动新的定时器           timer = window.setInterval("onTimer()", nextelapse);     } </script>

01 September 2013

Codeblocks+MinGW+wxWidgets搭建方法


Code::Block、MinGW 和 wxWidgets 分别是三个著名的开源项目,分别是 IDE、编译器和界面库。由这三样搭建起来的全开源纯c++开发环境,功能不逊色于Visual C++,由于是开源的,这样的环境还是免费的,并且是跨平台的。^-^ 下面说一下在 Windows 下的搭建过程:

一、编译器 MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称,实际上 MinGW 并不是一个 C/C++ 编译器,而是一套 GNU 工具集合,是 Windows 的一个移植。MinGW 官方网站为 http://www.mingw.org 到 MinGW 的官方网站上下载如下文件 gcc-core gcc-g++ binutils mingw-runtime  mingw-utils  w32-api  mingw32-make gdb
也可以直接下载mingw的安装包安装. 然后将这些文件解压到同一个目录下,本例为C:\MinGW。之后,设置环境变量,以便于操作,两种方法: 1、创建文件SetPath.bat,内容为:“set path=C:\MinGW\bin;%path%”,注意不含引号。创建完成后运行即可; 2、我的电脑-->属性-->高级-->环境变量-->系统变量,直接把 C:\MinGW\bin;添加到 Path,注意不要发动原有值。
如此这般编译环境就OK了。

二、IDE Code:Blocks 是一个 IDE 平台,本身不含编译,它支持多种编译器,界面近似于 VC。官方网站:http://codeblocks.org 到其官方网站下载最新的 Nightly Build 版本,注意同时把mingwm10.7z(机器上没有安装 MinGW 编译器时用)和wxmsw26_gcc_cb.7z也下载来,Code::Block 要配合这两个压缩包中的 dll 工作。将这三个文件解压一同一个目录,本例为 C:\CodeBlock。 如此 IDE 平台就OK了。 对于喜欢中文界面的朋友,可以下载中文语言包 codeblocks.mo,(--并复制到 C:\CodeBlock 目录下即可--)并复制到share\CodeBlocks\locale\zh_cn\目录下即可。也可以到https://launchpad.net/codeblocks下载中文语言包,需要先注册才行,免费的。
第一次运行 codeblock.exe 时,会要求选择一个编译器作为默认器。 运行C:\CodeBlock\codeblocks.exe,第一次运行时,选MinGW为默认编译器。然后选择[Settings/Compiler and debugging],在弹出的对话框中选择[Programs]标签,在Compiler's installation directory中输入刚才的MinGW目录,这里就是C:\MinGW。然后看看最下面的Make program参数,将其改为mingw32-make.exe(有时候这个值默认是make.exe)。这样,ide和编译器就搭建好了。现在可以新建个Console project编译试试了。如果要在程序中使用win api,直接引用#include <windows.h>就可以。

三、wxWidgets 界面库 wxwidgets是一个c++编写的用来提供gui开发的框架。它包含一个可以支持现今几乎所有操作系统(Version 2 currently supports all desktop versions of MS Windows, Unix with GTK+, Unix with Motif, and MacOS. An OS/2 port is in progress.)的GUI库和其他一些很有用的工具,提供了类似MFC的功能。而且,特别要说一下,这个c++lib还的新版本还提供了对掌上电脑的支持。当然,说到这里很多人会想到java队多系统的支持,其实这是不一样的,java的跨平台是建立在“中间代码”的基础上的,就是说需要在目标平台上安装java解释器;但是wxwidgets是c++库,经过编译后,他提供的是native级的机器码,在gui编程方面,这可是意味着很大的不同!官方网址:http://www.wxwidgets.org/
下载地址:
wxWidgets 与其它跨平台的gui库相比有如下优点: 1、是免费的,无论对于个人还是商业应用; 2、支持的操作系统相当全面; 3、大量使用宏,也就是说,编译出来的代码尽量使用目标操作系统的 native 的 gui 样式; 4、支持的编译器各类多; 5、应用广泛,目前有很多 gui 项目都是建立在 wxWidgets 之上的。

到其官方网站下载最新版本的 wxWidgets,目前最新版本为2.8.0,解压到C:\wxWidgets 2.8.0目录下。打开命令行界面[开始|运行,cmd],进入C:\wxWidgets 2.8.0\build\msw 目录,分别输入如下命令行: 清理: mingw32-make -f makefile.gcc clean Release:mingw32-make -f makefile.gcc MONOLITHIC=0 SHARED=1 UNICODE=1 BUILD=release Debug: mingw32-make -f makefile.gcc MONOLITHIC=0 SHARED=1 UNICODE=1 BUILD=debug
分别 build release 和 debug 版本的库。编译时间比较长的哟^_^ 详细参数说明看文件 c:\wxWidgets-2.8.0\build\msw\config.gcc 详细安装说明看文件 c:\wxWidgets-2.8.0\docs\msw\install.txt 如果不想自己编译,可以到http://wxpack.sourceforge.net/Main/HomePage下载已经编译好的库(wxPack)的最新版本,根据需要安装。

现在,可以创建一个 wxWidgets 项目应用程序,看看我们的劳动成果了。。。
取消选中 “wxWidgets 被生成为单一库(monolithic)”,其它默认,编译,运行,OK,我们的劳动结晶出现了,是不是有点激动?

Code:Blocks 汉化说明: 1、到 https://translations.launchpad.net/codeblocks/+translations 下载对应的语言包。
需要注册一个账号,然后会把下载链接之类的东西发过去。能下载的包有两种,mo和po格式。
      (打算把自己的汉化包传给大家,但似乎这里不支持文件上传,所以请大家自己动动手!)
2、打开下载的mo包,解压得到里面的文件。找到对应语言的mo文件。
3、在CodeBlocks安装目录下的 share\CodeBlocks\建立文件夹locale,然后建立对应语言的文件夹,如 汉语用 zh_CN 作为文件名。复制刚才找到的mo文件到该位置。
4、启动CodeBlocks。找到菜单上的settings 〉environment,打开环境设置窗口,点击左边的view选项卡,在第二行internationalization上打钩,在右边选择chinese (simplified),点OK。
5、重启软件,界面就汉化了

问题:有些菜单项,特别是二级菜单,很多都没有汉化,还是原来的英语。看来工程还在进展中。
转自:http://hi.baidu.com/cracksa/blog/item/f93149256cadb76a35a80f13.html

其他操作系统的搭建请参看:

最近做项目老用到算法,哎,在学校时就没学好算法。所以,决定搭建个环境,练习一下。(虽然我机子上有VS2008 ,但还是想用下其它的编译器。)
呵呵。上面文章不错,我照着这个一步步搭建好的,挺好用的。