世界完全对称日,指的是公历纪年日期中数字左右完全对称的日期,这一天朋友们可以互送祝福同时让大家感叹时间的宝贵。

比如今天

 

下午闲着无聊,写了一个,代码没有经过优化,

只是凭着一股子无聊劲写出来的。

如果有哪位仁兄有兴趣把代码优化一下,感谢不尽

 

经过计算在公元2000年到3000年,一共有36个符合条件的世界完全对称日。

 见到园子里有的博客,可以在下面加“运行”,直接执行Html代码,不知道怎么整的,可有人告知一下

 

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>公元1000年以后的回文日</title>
    <script>
        /**
         * 将日期变为标准8位格式,如20111102
         * 将其分为四段 分别为 20 11 11 02 为世纪,年,月,日
         * 按年算法时间复杂度为O(n3),而从后四位,月日即可得到最后的结果,效率更高
         * 因为闰年2月尾数为9,超过人类漫长的历史,所以无须考虑
         
*/
        ;;(function(){
            var theDateList=[];
            //出现回文日的世纪最大值
            var maxForCentury=30;
            //出现回文日的世纪最小值
            var minForCentury=20;
            //可能出现回文日的年数最大值,这里只粗糙处理
            var maxForYear=21;
            var maxForDay=31;//不排除闰年
            for(var i=1;i<=12;i++){
                var stdYear,stdDay;
                var stdMonth=getStandardDate(i);
                /*
                if(getReverseDate(stdMonth)>maxForDay){
                    continue;
                }
                
*/
                maxForDay=getDate(i);
                for(var k=1;k<maxForDay;k++){
                    stdDay =getStandardDate(k);
                    stdYear=getReverseDate(stdMonth+stdDay);
                    if(parseInt(getReverseDate(stdDay),10)>=minForCentury
                        && parseInt(getReverseDate(stdDay),10)<maxForCentury)
                    theDateList.push(stdYear+stdMonth+stdDay)
                }
                
            }
            theDateList.sort(); //排序
            for(var i=0;i<theDateList.length;i++){
                console.log(theDateList[i]);
            }
            console.log('共有%d条记录',theDateList.length)
            /**
             * 根据月份算当前月天数
             * @param {int} val 月份
             * @return {int} 
             
*/
            function getDate(val){
                return val%2==0?30:31;
            }
            /**
             * 将小于10的日期值换成标准8位日期值
             * @param {int} val 月份或日期
             * @return {string} 标准格式
             
*/
            function getStandardDate(val){
                if(val<10){
                    return '0'+val;
                }
                return val.toString();
            }
            /**
             * 反转日期
             * @param {string} date 月份或日期的标准格式
             * @return {string} 反转后的标准格式
             
*/
            function getReverseDate(date){
                return date.split("").reverse().join("");
            }
        })();
    </script>
</head>
    <body>
    </body>
    </html> 
posted @ 2011-11-02 16:38 simon4545 Views(249) Comments(2) Edit

 www.jsyks.com 作弊

 我报的是小驾校,用的就是这个网站模拟考的,没办法考不过

只好用这招了

1.强行的改考试的结果

javascript:document.getElementById('df_fs').innerHTML='<b>100</b>';document.getElementById('imgNoPass2').style.display='none';document.getElementById('imgPass2').style.display='inline'; void 0;

 

 2.列出本题答案

javascript:alert(myExamDaRight[orderTmp])
 

posted @ 2011-07-28 12:34 simon4545 Views(162) Comments(0) Edit
互联网上有许多通用的方案,这里我着重提三点:

 

1.模块化CSS,提高代码重用
    我们知道,一个成熟的网站需要有统一的风格,一致的用户体验,比如:网站的配色,字体的大小,交互行为一致等应该在设计之初就得到确定,而不是由个体开发者来自由的定义。网站同时应存在可以提取出来公用的样式部分(如人人网中个人主页右侧的”最近来访“,”推荐“等处的容器和标题都是相同的展示效果)。那么我们就可以把网站的字体大小,公共控制,共用模块的样式都抽离出来,作为单独的模块来处理。这样,团队中的每个人如果需要这样的样式,都可以用这种公共样式,以此提高代码的重用率。
    我认为一个项目的CSS可以拆分成2部分:公共CSS和业务CSS。我们在项目中抽出的这部分可以模块化的CSS就可以归类为公共CSS。这部分的代码命名不应涉及到具体的业务,只应对其在模块中负责的具体逻辑负责。

    对于业务CSS,我们需要有统一的命名。如一个网站中有如下几个栏目:文件,社区,社交关系等,在项目规划时,就需要把这块模块的名称定好,比如 文件-files,社区-cmty(community简写),这样开发人员在写样式时,就可以使用公用的前缀,.cmty-cmtydetail,而不会根据各自的想法,写成.community或是.commu,这一点对于统一风格是尽为重要的,也方便备用人员接手工作。 

关于这方面,可以看看网上关于 面向对象的CSS / OOCSS

 

    

 

2.CSS合并、压缩
    顾名思义,在团队开发中,开发者会分别处理各自单元的样式,网站上线了,为了减少http连接数,我们需要把这些CSS合并起来做为一个文件来加载,同时,我们在开发时可能会加入一些注释和行缩进,这些都会浪费我们的带宽,我们需要把合并后的CSS文件再进行压缩,事实上,这样的优化效果也是十分明显的,文件大小会节约至少20%。
    目前互联网上对CSS合并的处理有两种:静态合并和动态合并。静态合并是指在网站部署上线前,已经完成了CSS的合并,并生成一个静态文件,动态合并是配合后端文件而实现的合并,既请求CSS时,把需要合并的所有CSS名称做为参数,传给一个后端文件(asp,php,aspx等),由该后端文件动态的生成合并后的样式并输出。两种方案各有利弊。

    我在这里想表达的是,我们在项目中应根据项目的类型,应用不同的合并方案,门户型网站对首次加载速度要求较高,我们并不需要合并所有的CSS进来,而社区型的网站,用户需要登录才可以访问,那么就可以利用用户输入的时间加载所有的CSS进来,在以后的访问中都可以省去CSS请求的时间。

 

3.统一CSS书写规范
    好处是不言而喻的,无论是后台前台,统一的代码规范是必须的。
1.一律使用小字字母
2.尽量使用ShortHand形式,在font,margin,padding,background中
3.处理父子关系的节点时,使用 .parent-child-grandson(大多时候parent名称与具体业务的模块名称相关) 写法 ,而不使用 .parent .child .grandson,事实证明后者在在团队开发中更容易造成模块间的样式覆盖,同时也更不易于阅读。一个简单的例子:在模块一中有一列表,用第二种写法大致如下:
.informationlist{}
.informationlist .listitem{} 而同时,在模块二中也存在一列表,开发者正好也用到了.listitem,而且认为这个命名不常见,前面没有加上限定,直接使用了.listitem ,这样就极容易造成了样式冲突。或许您提出不同意见:我们强制让所有的样式前面都加一个关于其模块名的限定,把模块二中的.listitem改成 .module2 .listitem,不就ok了?但这样并不好,因为在实际应用中,不能要求所有的样式写法一定要加上模块限定,比如在body节点下的某个浮动节点,我们就不能这样处理。
同时,针对第一种写法,我们还可以很轻松开发出一个CSS的检测软件,用来检测语法,判断覆盖。(我们知道判断出.a .b, .a>b,.b的覆盖关系远比.a-b复杂的多)
posted @ 2011-06-10 22:38 simon4545 Views(1248) Comments(7) Edit
当前互联网中比较有名的分类信息网都在将自己的触角延伸到中国的各个中小城市中,如赶集网、同城网、站台网等等,基本上在每个城市都有自己的分站,如下图赶集网的城市分类。


 

 

    在这些“明星”网站在一些中小城市的分站用户发布的信息量并不高,如合肥、芜湖等二三线城市。并不是这些城市的信息量太少,而是信息量被这些城市本地的信息网分流了,导致这些“明星”网站的信息量相对较低了。

    对于以上这种情况,我简单分析一下,就当抛砖引玉了啊,希望对地方草根站长们有些启发和帮助。

    1、  地方信息网有地方特色,关注地方网民的个性需求。

    赶集网等大型分类信息网在上海、北京等一线城市做得很成功,原因是一线城市信息量巨大,同时外来人口很多,本地特色并不显得那么重要,但是在二三线城市就需要考虑这些了,而且这点非常重要,能够使本地用户感到网站很用心,自然人气也会上去了。

    赶集网在全国所有城市使用的分站界面和分类都是一样的,这样虽然节约了成本,但是缺少地方特色,较难吸引用户信息投放。如在芜湖进行中秋晚会时,可以专门开启一个分类模块为“中秋晚会票务转让”,自然会吸引很多芜湖本地用户进行信息交换。

    比如合肥租房网中就有一个针对合肥本地的特色功能“热点区”,根据合肥人租房情况,归类分析出合肥人最常租房的地区,方便用户快速准确找到自己想要的租房信息。


 

 

    2、  地方信息网宣传更加精准有效

    赶集或58同城等网站虽然名声在外,可是在二三线城市网民往往集中在某些固定的地方社区或论坛中活动。本地信息网对当地各种媒体更加熟悉,能够采用更有针 对性且更之有效的手段进行宣传,宣传效果也自然更好,而大型分类信息网由于在当地扎根不深,所以在宣传方面往往率逊一筹。

    比如合肥喜客信息网http://www.51xike.com,就是通过合肥本地论坛、社区等方式通过网民口碑逐渐积攒的人气,它现在仅是一个建站三个月的网站,从宣传效果来看,当前已经在部分网民中已经有了不错的口碑,这已经很理想了。


 

 

     3、  地方信息网能够随时提供线下服务,多组织线下活动。

     本地信息网由于地域优势可以随时为用户提供线下服务,并通过多种多样的线下活动,增加用户黏性,提高网站的口碑。这也是二三线城市信息网制胜的一个关键点。

     大型网站注意力大部分投入一线城市,在二三线城市无法精耕细作,导致其无法提供更为细致周到的服务,这也是其损失人气的原因之一。

     比如芜湖房地产家居网wh.house365.com,就是通过不断组织线下买房、看房、验房等活动积攒人气,不断增加用户黏度,同时提供各种有关房产信息方面的线下咨询服务,使得该网站在芜湖这个拥有两百万人口的三线城市具有很高的人气,获得了不错的经济和社会效益。

     我也是一名刚刚起步的小站长,想通过我自己的思考与大家进行交流,有什么问题可以直接在博客下回复,谢谢!

posted @ 2010-12-31 09:20 simon4545 Views(47) Comments(0) Edit

Ie内存回收分为两种情况,对事件的回收,和对节点的回收。

jQuery 的Remove对节点的回收是 有问题的。会形成许多dom孤点。多次循环后内存会有轻微增加。并不影响太大。

clip_image004

而jQuery对事件的回收,这里,并不是这么容易产生内存泄漏的。要具备两个条件:

1.dom节点其它对象(activex object,dom,object)产生循环引用,其实是交叉引用。而非object引用object(jQuery),起因ie中对dom的内存管理和js的内存管理并不是一套机制。

2.当这个dom节点被”简单“删除后,就会表象成内存泄漏,刷新也无法回收。

clip_image006

如果按照这样(leak1.html 附件,这里就是标准的内存泄漏)的引用,的确会有问题,内存会激增,并且刷新也无法回收。


clip_image008

但我们知道jquery中的dom节点,一般是被封装在了$()中,我们用的事件绑定不再是简单的交叉引用。

clip_image010

在这个环节中,它已经被转变成为js的对象间的引用,从Ie6到ie8其实都已经处理的很完全。而jQuery最后也适时的完成了cleanData和removeEvent. 内存可以回收,也不存在泄漏。(leakj.html,请自已拷jquery的js文件引用。)

clip_image012

上面的图和分析可以看出来,jqery在事件的内存回收方面是没有问题的。附件供大家参考。

以上的结果可以用ie的内存监测工具,比如 Drip或sIEve之类的。

posted @ 2010-12-20 15:10 simon4545 Views(169) Comments(1) Edit
首先介绍一下reMarker出现的原因:/*[代码]测试代码在这里,只要把上面的js另存为remarker2.js放在demo page同一目录下就Ok了。用firefox调试[代码]Read More
posted @ 2010-12-14 17:03 simon4545 Views(1214) Comments(7) Edit
在IE8,Firefox3.6之前页面加载外部的javascript文件(IE6,7会连同图片,样式资源和页面渲染一同阻塞)是阻塞式的,而在之后的版本中,浏览器都使用了瀑布式加载,这样页面的打开及渲染速度都会变快,请注意,我提到的瀑布式加载,仅仅指的是加载,而非JS的执行,在主流浏览器中JS的执行总是阻塞的。用简单一点的语言描述,就是同一时间,页面只会加载一个js文件。在第一个js文件加载并执行完之前,第二个要引入的js不会下载和执行。而页面中js的引入顺序以请求的顺序为定。 我们来看一个IE6下,页面加载多个js文件的例子: inline script block:为页面内嵌js代码块,而eRead More
posted @ 2010-12-14 10:54 simon4545 Views(2104) Comments(13) Edit
一个伟大的域名:www.efeelings.net 每个人都是一个单独的世界 每个人都有一段传奇 在茫茫网海中如何找到真爱 在日起月落中如何重拾失去的缘份 没有纬度的电子世界里 0和1组成的一切都被不确定的云彩所笼罩着 抬头望天空 我们一无所获 然而闭上双眼 用生命与心灵来感受 在愈来愈强的共鸣中 我们知道自己置身于一个真实的世界---------逸飞岭 你不在逸飞岭,就在去逸飞岭的路上 转自逸...Read More
posted @ 2010-12-08 08:50 simon4545 Views(41) Comments(0) Edit
在最新的firefox(3.5+)上已经支持word-wrap了,参考https://developer.mozilla.org/En/CSS/Word-wrapBrowser compatibility Browser Lowest version Internet Explorer 5.5 Firefox (Gecko) 3.5 (1.9.1) Opera (Presto) 10.5 (2.3) Safari | Chrome | WebKit 1.0 | 1.0 | 85 word-wrap:break-word can be used to work around lack of prRead More
posted @ 2010-12-01 17:08 simon4545 Views(65) Comments(0) Edit
面的代码就是模拟的效果在火狐里会出现在contenteditable框上面的和左边的在鼠标右键都会被选中但上面的代码做两种中的任一方案修改,问题都能解决。1. 把外围的div改成p标签2.去掉<div style=”margin:20px”> 的margin属性用padding实现。个人分析的原因,contenteditable会递归找到他所有的上级包含margin属性的div/a之类...Read More
posted @ 2010-11-30 16:47 simon4545 Views(199) Comments(0) Edit