随笔 - 9  文章 - 0 评论 - 26 trackbacks - 0

posted @ 2008-10-31 16:20 Blood 阅读(304) 评论(1) 编辑
posted @ 2007-10-23 12:52 Blood 阅读(87) 评论(1) 编辑
posted @ 2007-09-23 17:47 Blood 阅读(1494) 评论(5) 编辑

效果还是比较玄的,可以用来做iphone的主题。

 

算了,直接放上来还要调整模板,懒得弄了。 贴一些关键的代码吧。

 

代码


var cDate = new Date();

var nHours = cDate.getHours();

var nMins = cDate.getMinutes();

var nSecs = cDate.getSeconds();
var AMPM = 'AM';


$(document).ready(
function(){

        
    setAMPM();
    
//set seconds

    
var op = 0;

    
var fs = 0;

    
var secs = nSecs;

    
//for secs

    
for(var i=0;i<40;i++){

        op 
= op +0.025;

        fs 
= fs + 0.45;

        
var ind = secs+21;

        updateHands(op, ind, 
606,140'div.secs',fs);             

        secs 
= secs+1;

    }

    $(
'div.secs p:last').addClass('c').css({opacity: 1, fontSize: '10px'});

    

    
//for mins

    
var mins = nMins;

    op 
= 0;

    fs 
= 0;

    
for(var i=0;i<40;i++){ 

        op 
= op + 0.025;

        fs 
= fs + 0.45;

        
var ind = mins+21;

        updateHands(op, ind, 
606,100'div.mins',fs);             

        mins 
= mins+1;

    }

    $(
'div.mins p:last').addClass('c').css({opacity: 1, fontSize: '26px'});

    

    
//for hours

    
var hours = nHours;

    op 
= 0;

    fs 
= 11;

    
for(var i=0;i<8;i++){ 

        op 
= op + 0.15;

        fs 
= fs + 1.4;

        
var ind = hours+5;

        updateHands(op, ind, 
1230,50'div.hours',fs);                

        hours 
= hours+1;

    }

    $(
'div.hours p:last').addClass('c').css({opacity: 1, fontSize: '36px'});



    setInterval(updateTimer,
1000);

});

function updateHands(op, ind, max, aDiff, r, elem, fSize){    

    ind 
= ind%max;

    
var angle = (ind*aDiff)-90;

    
var cosA = Math.cos(angle*(Math.PI/180));

    
var sinA = Math.sin(angle*(Math.PI/180));

    
var x = Math.round(162+(r*cosA)-50);

    
var y = Math.round(160+(r*sinA)-25);

    
if(max != 12){
        
if (ind < 10) ind = '0' + ind;
    }

    
if (max == 12 && ind == 0) ind = '12';

    
var p = '<p style="font-size: ' + fSize + 'px;opacity: ' + op + ';left: ' + x + 'px;top: ' + y + 'px;">' + ind + '</p>';

    $(elem).append(p);    

}

function updateTimer(){

    
//ind = secs;

    
//ind = secs+37;

    nSecs 
= nSecs + 1;

    updateHands(
0, nSecs, 606,140'div.secs'22);

    

    updateStyle(
'div.secs'0.02540'22px'7000, .45);

    
//update mins

    nSecs 
= nSecs%60;

    
if(nSecs == 0){

        nMins 
= nMins + 1;

        updateHands(
0, nMins, 606,100'div.mins',25);

        updateStyle(
'div.mins'0.02540'25px'10000, .45);

        

        nMins 
= nMins%60;

        
if(nSecs == 0 && nMins == 0){    

            nHours 
= nHours + 1;

            updateHands(
0, nHours, 1230,50'div.hours',28);

            updateStyle(
'div.hours'0.159'30px'1000101.2);

            
//nHours = nHours + 1;

            bHours 
= nHours%12;
            setAMPM();

        }

    }

    

}



function updateStyle(elem, oI, limit, finalSize,t, s, fI){

    $(elem 
+ ' p').eq(0).remove();

    $(elem 
+ ' p.c').removeClass('c');



    
var o = 0;

    
var fs = s;

    
for(var i=0;i<limit;i++){

        o 
= o + oI;

        fs 
= fs + fI;

        $(elem 
+ ' p').eq(i).css({opacity: o, fontSize: fs + 'px' });

    }

    

    $(elem 
+ ' p:last').addClass('c').css({fontSize: '0px',opacity: 0}).animate({

        fontSize: finalSize,

        opacity: 
1        

    },t,
'easeOutBounce');    

}
function setAMPM(){
    
var nDate = new Date();
    
if(nDate.getHours()>11)
        AMPM 
= 'PM';
    
else
        AMPM 
= 'AM';
    $(
'div.ampm').css({opacity: 0, fontSize: '0px'}).animate({opacity: 1, fontSize: '20px'}, 700,'easeOutBounce').html(AMPM);
}


 具体效果看源码包吧。

点击下载源码包

posted @ 2010-10-30 21:26 Blood 阅读(354) 评论(0) 编辑

今天在CSDN看到一个帖子,是问如何判断url中的参数是utf-8还是gb2312的。

我记得好多年前我也遇到过这个问题。但是忘记具体是如何处理的了。。。

 

不过下面这段代码很棒。解决了具体的问题。

 

代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Text.RegularExpressions;

namespace ConsoleApplication2 {
    
class Program {
        
public static string DecodeURL2(String uriString) {
            
if (Regex.IsMatch(
                HttpUtility.UrlDecode(uriString, Encoding.GetEncoding(
"iso-8859-1")),
                
@"^(?:[\x00-\x7f]|[\xe0-\xef][\x80-\xbf]{2})+$" // 如果不考虑哪些什么拉丁文啊,希腊文啊。。。乱七八糟的外文,用这个短的正则
            )) {
                
return HttpUtility.UrlDecode(uriString, Encoding.GetEncoding("UTF-8"));
            } 
else {
                
return HttpUtility.UrlDecode(uriString, Encoding.GetEncoding("GB2312"));
            }
        }

        
public static string DecodeURL(String uriString) {
            
if (Regex.IsMatch(
                HttpUtility.UrlDecode(uriString, Encoding.GetEncoding(
"iso-8859-1")),
                
@"^(?:[\x00-\x7f]|[\xfc-\xff][\x80-\xbf]{5}|[\xf8-\xfb][\x80-\xbf]{4}|[\xf0-\xf7][\x80-\xbf]{3}|[\xe0-\xef][\x80-\xbf]{2}|[\xc0-\xdf][\x80-\xbf])+$"
            )) {
                
return HttpUtility.UrlDecode(uriString, Encoding.GetEncoding("UTF-8"));
            } 
else {
                
return HttpUtility.UrlDecode(uriString, Encoding.GetEncoding("GB2312"));
            }
        }

        
public static void Main(string[] args) {
            Console.WriteLine(
"----------------------------------------------");
            Console.WriteLine(DecodeURL(
".net%bc%bc%ca%f5"));
            Console.WriteLine(DecodeURL(
".net%e6%8a%80%e6%9c%af"));


            Console.WriteLine(
"----------------------------------------------");
            Console.WriteLine(DecodeURL(
"%B8%A7%CB%B3%C7%E0%CB%C9%D2%A9%D2%B5"));
            Console.WriteLine(DecodeURL(
"%E6%8A%9A%E9%A1%BA%E9%9D%92%E6%9D%BE%E8%8D%AF%E4%B8%9A"));


            Console.WriteLine(
"------------------↓↓↓下面的出问题↓↓↓------------------");


            Console.WriteLine(DecodeURL(
"%E8%81%94%E9%80%9A")); // 正常
            Console.WriteLine(DecodeURL("%C1%AA%CD%A8")); // 发生编码误认
            
// 编码误认,并没有好的解决方案,因为utf-8和gbk编码结果存在交叉,  我们都知道,记事本也都会出现这种情况

            Console.WriteLine(
"------------------↑↑↑上面的出问题↑↑↑------------------");


            Console.WriteLine(DecodeURL2(
"%E8%81%94%E9%80%9A")); // 正常
            Console.WriteLine(DecodeURL2("%C1%AA%CD%A8")); // 不会误认
            Console.WriteLine("----------------------------------------------");


            Console.ReadKey();
        }
    }
}


 

posted @ 2010-09-16 18:10 Blood 阅读(139) 评论(0) 编辑

先来说说具体的问题吧。

系统中有一张IM的登录记录表,里面是员工IM的登录时间,有登录时间,离线时间,最后活动时间。

 

因为员工上半时有可能会同时登录多个IM,其中的时间会有交集,因为我要计算员工每天IM在线的工作时间,交集时间需要过滤掉。

早上因为思路错误,白白浪费了一个早上的时间,其实直接在sql server中就可以比较方便的计算出相关内容。具体的直接上sql代码。

 

 

--方便演示,定义一个Source的表变量,BeginTime是登录时间,EndTime是离线时间
declare @Source table(ID INT IDENTITY(1,1),BeginTime datetime, EndTime datetime)
--定义输出结果表变量
declare @Result table(id INT IDENTITY(1,1),BeginTime datetime, EndTime DATETIME,OnlineTime INT NULL)

--插入演示数据
insert into @Source values('2010-08-16 08:00:00','2010-08-16 08:40:00')
insert into @Source values('2010-08-16 09:00:00','2010-08-16 11:30:00')
insert into @Source values('2010-08-16 09:01:00','2010-08-16 11:32:00')
insert into @Source values('2010-08-16 10:01:00','2010-08-16 12:01:00')
insert into @Source values('2010-08-16 11:00:00','2010-08-16 12:05:00')
insert into @Source values('2010-08-16 12:10:00','2010-08-16 13:40:00')
insert into @Source values('2010-08-16 13:10:00','2010-08-16 14:15:00')
insert into @Source values('2010-08-16 14:00:00','2010-08-16 16:32:00')
insert into @Source values('2010-08-16 07:20:00','2010-08-16 16:40:00')
insert into @Source values('2010-08-16 17:00:00','2010-08-16 20:32:00')
insert into @Source values('2010-08-16 07:00:00','2010-08-16 07:18:00')
insert into @Source values('2010-08-16 07:30:00','2010-08-16 08:20:00')

--模拟数据库中的数据,插入一些其他时间的数据
insert into @Source values('2010-08-15 08:00:00','2010-08-16 08:40:00')
insert into @Source values('2010-08-17 09:00:00','2010-08-16 11:30:00')
insert into @Source values('2010-08-14 09:01:00','2010-08-16 11:32:00')
insert into @Source values('2010-08-13 10:01:00','2010-08-16 12:01:00')
insert into @Source values('2010-08-17 11:00:00','2010-08-16 12:05:00')
insert into @Source values('2010-08-17 12:10:00','2010-08-16 13:40:00')
insert into @Source values('2010-08-17 13:10:00','2010-08-16 14:15:00')
insert into @Source values('2010-08-17 14:00:00','2010-08-16 16:32:00')
insert into @Source values('2010-08-15 07:20:00','2010-08-16 16:40:00')
insert into @Source values('2010-08-13 17:00:00','2010-08-16 20:32:00')
insert into @Source values('2010-08-12 07:00:00','2010-08-16 07:18:00')
insert into @Source values('2010-08-11 07:30:00','2010-08-16 08:20:00')

--定义需要用到的变量
DECLARE @count INT,@ID INT,@begintime DATETIME,@endtime DATETIME,@Date DATE

--如果需要指定计算的日期,可以设置日期值,否则为null会计算全部的时间
SET @Date = '2010-08-16 07:30:00'

--如果日期不为空,则清除Source中的垃圾数据
IF @Date IS NOT NULL
BEGIN
    
DELETE FROM @Source WHERE BeginTime < @Date OR BeginTime >= DATEADD(DAY,1,@Date)
END

--计算Count,以便进行遍历
SELECT @count = COUNT(1FROM @Source

--遍历Source中的数据
WHILE @count > 0
BEGIN
    
    
--根据时间排序,每次取1条数据
    SELECT TOP 1 @begintime = BeginTime,@endtime = EndTime ,@ID = ID FROM @Source
    
ORDER BY BeginTime
    
    
--如果Result中没有记录,则直接插入,否则进行判断
    IF NOT EXISTS(SELECT 1 FROM @Result)
    
BEGIN
        
insert into @Result values(@begintime,@endtime,NULL);
    
END
    
ELSE
    
BEGIN
        
--由于Source的数据是经过排序的,所以下面的插入已经无效,直接注释掉
        --IF NOT EXISTS(SELECT 1 FROM @Result WHERE BeginTime < @endtime AND EndTime < @begintime)
        --BEGIN
        --    insert into @Result values(@begintime,@endtime,NULL);
        --END
        
        
--如果开始时间大于Result中的已存在的记录结束时间,则直接插入数据
        IF NOT EXISTS(SELECT 1 FROM @Result WHERE EndTime > @begintime)
        
BEGIN
            
insert into @Result values(@begintime,@endtime,NULL);
        
END
        
--判断Result中的数据开始时间是否大于Source中的开始时间,大于则更新
        ELSE IF EXISTS(SELECT 1 FROM @Result WHERE BeginTime > @begintime AND EndTime < @endtime AND EndTime > @endtime)
        
BEGIN
            
UPDATE @Result SET BeginTime = @begintime WHERE BeginTime > @begintime AND BeginTime < @endtime AND EndTime > @endtime
        
END
        
--判断Result中的数据结束时间是否小于Source中的结束时间,小于则更新
        ELSE IF EXISTS(SELECT 1 FROM @Result WHERE BeginTime < @begintime AND BeginTime < @endtime AND EndTime < @endtime AND EndTime > @begintime)
        
BEGIN
            
UPDATE @Result SET EndTime = @endtime WHERE BeginTime < @begintime AND BeginTime < @endtime AND EndTime < @endtime AND EndTime > @begintime
        
END
        
--判断Result中的记录时间是否被Source中的时间被包含,包含则开始与结束都更新
        ELSE IF EXISTS(SELECT 1 FROM @Result WHERE BeginTime > @begintime AND BeginTime < @endtime AND EndTime < @endtime AND EndTime > @begintime)
        
BEGIN
            
SELECT * FROM @Result WHERE BeginTime > @begintime AND BeginTime < @endtime AND EndTime < @endtime AND EndTime > @begintime
            
UPDATE @Result SET BeginTime = @begintime, EndTime = @endtime WHERE BeginTime > @begintime AND BeginTime < @endtime AND EndTime < @endtime AND EndTime > @begintime
        
END
    
END
    
    
--删除已经读取过的记录
    DELETE FROM @Source WHERE id = @ID
    
--更新Count
    SELECT @count = COUNT(1FROM @Source
END

--计算OnlineTime
UPDATE @Result SET OnlineTime = DATEDIFF(mi,BeginTime,EndTime)
--显示结果
SELECT * FROM @Result


最后的结果

 

 

posted @ 2010-08-16 17:37 Blood 阅读(1096) 评论(5) 编辑

调查问卷的网址是

http://www.ufoshoes.com

请大家多多支持。多谢各位!
posted @ 2008-10-31 16:20 Blood 阅读(304) 评论(1) 编辑

本公司为电子商务网站,工作地:上海。

因为业务发展需求,本公司急招网站美工、UI、UE设计人员

美工工作经验1年以上 ,需要熟练掌握常规的平面设计软件,熟悉flash的制作。

独立的UI、UE设计人员,工作经验2年以上,需要熟悉W3C标准。熟悉基础的javascript,可以用js类库实现一些简单的ajax应用。

 

 

具体详细信息可以加我MSN详谈:eaststarbuy@msn.com
posted @ 2008-08-05 10:08 Blood 阅读(242) 评论(0) 编辑
posted @ 2007-10-23 12:52 Blood 阅读(87) 评论(1) 编辑
posted @ 2007-09-23 17:47 Blood 阅读(1494) 评论(5) 编辑
posted @ 2007-07-03 13:15 Blood 阅读(328) 评论(9) 编辑
posted @ 2005-11-22 10:22 Blood 阅读(429) 评论(5) 编辑
仅列出标题