李坤锋|李坤锋点点官方站

李坤锋官网 →

Google打不开的解决方案


在Google.com里面进行搜索的时候,经常会遇到突然出现“该页无法显示”的提示,并且之后的十多分钟都无法正常连接Google,这里给出一些方法,可以解决大部分Google无法访问或进不去的问题。

1、最开始可以先尝试重新拨号的方法。如果是搜索过程中出现“该页无法显示”的提示,接着就无法访问Google,那么对于ADSL用户,可以尝试断开网络连接,然后重新拨号上网,这样你的IP地址就发生了变化,这时候就可以正常访问Google了。(其原理是防火墙只是针对IP封用户,而不是针对独立电脑)

2、如果一开始就无法访问Google,那么请把下面这一行:

216.239.63.104 www.google.com 或者 64.233.171.99 www.google.com 或者 216.239.53.99 www.google.com

添加到:C:WINDOWSsystem32driversetc下面的hosts文件里,就着访问Google看看是否正常。(其原理是提供较为少用的Google镜像访问)

3、使用Google的镜像IP地址来访问Google,Google有很多IP地址,通过IP可以直接访问Google。

4、使用Google其他国家的域名来访问Google,例如Google日本的域名google.co.jp,不过请注意,Google其他国家的服务器也在美国,因此搜索词语的时候也会出现“该页无法显示”的可能。

5、如果碰到DNS劫持的封锁方法,那么需要选择正确的DNS服务器,将主DNS设置成国外根服务器的DNS,然后辅助DNS设置成国外的DNS。具体做法:在拨号网络或网卡属性里设置,主DNS设成 202.12.27.33,辅助DNS:202.216 .228.18(日本DNS),或者使用美国的OpenDNS,首选DNS服务器和备用DNS服务器分别设置为208.67.222.222和208.67.220.220。大家还可以自己找一些快的国外DNS。 (其原理是DNS劫持只能够控制国内的DNS服务器,而对于国外的DNS服务器则无能为力,因此只要不使用国内的DNS即可)

6、对于GMail,使用http访问访问的话最好不要选择“带有聊天功能的标准视图”,否则容易中断。尽量使用加密的https地址 https://mail.google.com 来访问GMail,这将极大提高访问的稳定性,并且在GMail里使用GTalk也很稳定。

7、使用加密的代理服务器软件(SSH,VPN)来访问Google,当然目前的一些免费的加密代理服务器都不是很稳定,速度也不是很理想,建议购买收费版。

8、使用HTTPS来访问Google,由于Google的Https域名encrypted.google.com也被DNS污染,因此需要修改hosts文件,Windows系统中Hosts文件的优先级高于DNS服务器,操作系统在访问某个域名时,会先检测HOSTS文件,然后再查询DNS服务器。可以在hosts添加受到污染的DNS地址来解决DNS污染和DNS劫持。



当然,上面的方法有时可能会实效,我觉得最稳定和有效的方法是HTTPS的Google搜索,HTTPS版本的Google一劳永逸地解决目前几乎所有的问题,https是安全访问网站的一个重要的方法,目前还没有看到能截获https的加密数据的防火墙,因此搜索任何关键字都没有问题,目前Google的HTTPS搜索唯一的遗憾是没有图片搜索功能。

程序员需要具备的基本技能

软件开发是一个跨度很大的技术工作,在语言方面,有C、C++、Java、Ruby等等等等;在环境方面,又分嵌入式、桌面系统、企业级、WEB、基础系统,或是科学研究。但是,不管是什么的情况,总是有一些通用的基本职业技能。
这些最基本的职业技能通常决定了一个程序员的级别,能否用好这些技能,直接关系到了程序员的职业生涯。很多程序新手也是因为缺少、达不到或是不熟悉在这些基本技能,所以,他们需要有老手带,需要努力补齐这些技能。而高级程序员应该非常熟悉这些基本技能,而且有能力胜任并带领其他经验不足的程序员。
下面这些基本职业技术可以用来做为对一个程序员的评估,很明显,下面的这些技能都可以用来做面试。虽然,还有很多非技术的因素,但对于评估一个程序员的技术能力来说,其应该是足够的了。
下面是程序员所应该具备的基本职业技能:
阅读代码 - 这个技能需要程序员能够具备读懂已经存在的代码的能力,这样的能力可以让程序员分析程序的行为,了解程序,这样才能和开发团队一起工作,继承维护或是改进现有的程序。(相关阅读:《阅读优秀代码是提高开发人员修为的一种捷径》)
编写程序 - 编写程序并不包括程序设计。不要以为编程是一件很简单的事情,很多程序员都认为编程只需要懂得程序语言的语法,并把设计实现就可以了。但是这离编写程序还远远不够,使用什么样的编码风格成为编写程序员最需要具备的基本技能。能否使用非常良好的编程风格直接决写了程序员的级别。
软件设计 - 这一能力直接决定了需要吏用什么样的代码技术达到怎么样的功能,而系统架构设计直接决定了软件的质量、性能和可维护性。并不是所有的程序在这一方面都非常优秀,但每个程序员都需要或多或少的明白和掌握这一基本技能。
熟悉软件工程 - 每个程序员都应该明白软件工程是什么东西,都应该知道,需求分析、设计、编码、测试、Release和维护这几个阶段。当然,几乎所有的人都知道这些东西,但并不是每个人都很清楚这些东西。现在很多高级程序员都会混淆“需求规格说明书FS”和“概要设计HLD”。另外,程序员还需要知道一些软件开发的方法/论,比如:敏捷开发或瀑布模型。
使用程序库或框架 - 一个程序员需要学会使用已有的代码,无论是标论的程序库,或是第三方的,还是自己公司内部的,都需要学会做。比如:C++中,需要学会使用STL、MFC、ATL、BOOST、AC、CPPUNIT等等。使用这些东西,可以让你的工作事半功倍。
程序调试 - 程序调试是分析BUG和解决问题最直接的能力。没有人能够保证程序写出来不用调试就可以运行正常,也没有人可以保证程序永远不会出BUG。所以,熟练使用调试器是一个程序员需要具备的基本技能。
使用IDE - 学会使用IDE工具也会让你的工作事半功倍。比如,VC++、Emacs、Eclipse等等,并要知道这些IDE的长处和短处。
使用版本控制 - 一定要学会使用版本控制工具,什么叫mainline/trunk,什么叫tag,什么叫branch,怎么做patch,怎么merge代码,怎么reverse,怎么利用版本控制工具维护不同版本的软件。这是程序员需要明的的软件配置管理中最重要的一块。
单元测试 - 单元测试是每个程序都需要做的。很多单元测试也是需要编码的。一定要学会在xUnit框架下进行单元测试。比如JUnit, NUnit, CppUnit等等。
重构代码 - 每个程序员都需要有最基本的能力去重构目前已有的代码,使代码达到最优但却不能影响任何的已有的功能。有一本书叫《软件的重构》,每个程序员都应该读一下。
自动化编译 - 程序员需要使用一个脚本,其能自动化编程所有的工程和代码,这样,整个开发团队可以不停地集成代码,自动化测试,自动化部署,以及使用一些工具进行静态代码分析或是自动化测试。
当然,还有很多的基本技术也是非常重要的,比如,与人的沟通能力,语言的表达能力,写作能力,团队协作能力,适应变化的能力,时间管理能力,多任务处理能力,自我学习能力,故障处理能力,等等。这里只是列举了和技术相关的能力,这些是程序最最最基本的能力,只要是程序员就必需要有的能力。

世界流行的cms系统比较Drupal,Joomla,Wordpress,XOOPS, Mambo

最近一直在研究drupal,国内的流行开源php如php168,phpcms帝国,织梦,都试过了,感觉大同小异,就是很简单的给你组装一个商业站点,总感觉差点什么,不灵活。joomla也用过,界面很漂亮,但也找不到切入点,后来就认定drupal了,很简单,因为是2008年世界开源cms排名第一的,而且听说核心很小,可选的模块非常多,最适合我这种总想搞点与众不同的东西的人了。至于为什么没用manbo,装了一下感觉还行,不过后来又试了其他,慢慢就忘了有什么特点了,印象中就是界面特简洁。

Drupal开源社区的力量更为强大,同时Drupal的开源行动更为彻底。Drupal 也是个多功能的软件。不仅有强大的用户系统,还有很多社区功能,比如论坛,书籍(一个叫“书籍”的模块,可以在里面创建文档),自动更新模块,并可以追踪其他用户的文章。

Drupal 也有强大的开发团队和诸多模组。使用这些模组,可以添加任何功能,建立任何类型的网站。。而 Joomla!众多的商业扩展和商业模板带给 Joomla!更多的铜臭,但是我们也不得不承认,正是这铜臭使得Joomla!模板更加漂亮.Joomla!是给新手入门的,而Drupal是给开发者的。Drupal架构良好,对API的支持也做得相当不错,对开发者来说它有着极棒的可扩展性,很多功能都能依照规范一一实现。
Drupal
在blog大行其道的今天,Drupal作为一个基于个人blog的内容管理系统也越来越受到关注。虽然Drupal是CMS中的一员,目前还是比 较适合于个人或团队信息管理;不过以blog管理为基础的CMS开发,将会是今后的一个热点。如果要选择一个blog系统,要在Drupal和 WordPress之间还真的是有些困难。最起码的,Drupal的小水滴logo就着实的可爱。
1、Wordpress
Wordpress 是最著名也是使用人数最多的博客软件。它的安装过程非常简单直观,任何菜鸟抑或高手都可轻松搞定。
Wordpress 的用户群体可算是一大优势。Wordpress 有着世界上Akismet。

对于新手 Wordpress 不仅安装简单,而且只要点一下鼠标就能自动更新插件。使用 Wordpress 不需要什么经验,如果用户碰到什么问题,有大量帮助文件可以随时查阅。不论是小菜鸟初入江湖,还是老英雄退休养老,Wordpress 老少通吃,男女全能。
如果你要建个多博客网站,Wordpress MU 也是个不错的选择。Wordpress MU 有95%的代码与 Wordpress 相同,只是 Wordpress MU 支持多个博客,多个 blogger。

 

XOOPS和Mambo是目前最为流行的OpenSource CMS系统。Mambo台湾社区站长Eddy写了一片文章简单比较了这两个系统优缺点,文章虽然不长,但简洁明了,重要之处都已经提及。

我根据自己使用及开发XOOPS的体验,简单补充一下有关XOOPS的内容,希望能对选择CMS的用户提供参考。XOOPS开发员Mithrandir写过一篇CMS设计及应用比较的文章,我们将在以后介绍。
界面设计及安排:
XOOPS 似乎侧重于系统功能,对设计美化重视不足。前台界面采用了规范化的左、中、右区块(block)方案,设置简单,但是灵活性很差。如果想要做一个有个性的 界面就需要对template作hack;与之相关的话题,XOOPS的layout有模板template和风格皮肤theme之分,似乎是提供了更多 的选择其实却有些多此一举。后台管理仍然沿用很久以前的方案,使用了大量的js,不灵活而且混乱。

Mambo的前后界面却相对来说美观的多,定制灵活,Eddy的文章已经对Mambo做了介绍,不再赘述。

如果你对XOOPS和Mambo不了解,单纯比较一下两者的官方网站首页和logo,你对XOOPS还会有兴趣么?所幸一些XOOPS设计者开始探 讨XOOPS界面的设计问题,从核心结构到皮肤,在做不同的尝试。两个月前有过一个内部测试的XOOPS后台管理模板,虽然有些bug,但是改进不少。 XOOPS CHINA社区的文明猪等开始尝试前台区块安排的hack,虽然目前的方案对普通用户难度太大,不失为一个不错的尝试。
权限管理:
XOOPS有完善的权限设置和管理,所有的内容能够对不同用户组分配不同的使用或管理权限,跟其它大部分CMS相比是一个特有的功能。权限管理在另一方面必定会降低运行效率。
结构设计及开发:
Mambo并不是一个传统意义上的CMS(内容管理系统),其目标建立一个框架使用户能够有效的管理自己选定的内容。Mambo本身不提供内容管理 的模块,一般采用第三方开发的软件比如phpbb或vbb做论坛模块等。这种模式使Mambo能够集中于框架的开发,并且保持系统的简洁。其不确定性存在 于对第三方程序的依赖。

XOOPS是从NUKE系统演化而来,其结构在传统CMS与Mambo的框架模式之间,有自己的核心框架管理也有自己的内容管理模块。XOOPS在 本身的内容管理模块之外也越来越多的继承了第三方模块,比如论坛的phpbb, ipb,图片的gallery,blog的wordpress,wiki的phpwiki等。XOOPS的集成这类第三方模块保持原来的功能特长,但是却 依然在某种程度的hack。不过XOOPS正在逐步改变现在的模式,核心部分向Mambo模式靠近,核心模块由固定模块开发团队主持,同时有大量其他模块 开发员或团队;成立模块质量评价组,对各模块进行质量和安全性评定。

XOOPS采用了smarty模板,一方面方便于后台开发和前台设计的各自进行,另一方面却影响了运行效率,必须要合理的使用缓存cache。
管理团队:
Mambo的背后是一个商业化的公司,其管理上有XOOPS管理所不可比的地方。XOOPS从一开始就是Open Source社区的一个普通Open Source项目,所有开发及管理都是民间方式的,管理上有其松散性和低效性。我个人认为Open Source项目本身是民间非营利性的,但是其管理团队最好能够以某种类商业化管理的模式运作。
XOOPS其他需要改进的地方
在线编辑器:不可思议,XOOPS到目前为止还没有官方发布的所见即所得wysiwyg编辑器,只有部分用户自己hack的SPAW, HTMLarea等。从2004年中期开始,XOOPS开始开发自己的wysiwyg,并且开始尝试在论坛模块NewBB中正式集成FCKeditor, Koivi等编辑器。特别是我们在做一个编辑器的插件式管理系统,前台用户能够自己选择编辑器,目前正在内测的文章管理已经采用了这个系统。

搜索引擎优化:XOOPS本身缺乏足够的搜索引擎优化措施,所有的URL都是带参数的动态URI格式,而且大部分目录深度都是三级。用户只能采用一些hack。

来源:http://xoops.org.cn

lead-leader-leadership

        lead最基本的意思就是引导,引导自己,引导他人
而做这样事情的人都可以叫做leader
从leader中升华出的品质就叫leadership了

这样的推导是说的通的
并不是必须成了挥着小鞭的领导,指挥了他人才算leader
能够引导自己,引导他人的人都是leader
否则,国外也无法对各类人群大力提倡leadership

最后总结一下,什么是leadership
就是引导自己,影响他人
让自己和周围环境向你希望的状态去靠拢
让自己成为了你想成为的样子

如何实现这个目标
         提出了几种方法:争取时间、明知投资、深入钻研、变通原则、投石审势、轻推渐进、妙手妥协


       觉得leadership也有个“气”和“术”的问题
气,就是如何做人
术,就是不同发展时期有不同方法

这可能就是个更大的问题了
希望能看到别人的思考

开源OA系统 FengOffice

Feng Office的前身是opengoo,这是一个历史悠久的在线办公系统,作为后继者的fengoffice,功能自然不含糊。

它不仅包含的完备的文档管理,权限管理,版本管理,居然包含了常用的office的许多功能,而且安装简单,功能齐备,而且内部对中文支持相当良好 –虽然 现在没有中文语言包,但很快就会有的:)而且,opengoo还可以在线编辑文档,可是包括类word、execl、powerpoint的三大利器,另 外还有常用的日历、任务管理、电子邮件等常用功能。呵呵,终于可以找到一个集成的的网络协作平台了。

OpenGoo(Feng Office)是一套基于ExtJs+XAMP(Apache、PHP、MySQL)开发的开源web office。它具备了主流在线协作系统所应具备的所有功能,包括任务管理、日程管理、文件管理、联系人管理以及email收发功能。其文件管理模块,实现了文件版本管理的功能,能够方便的查找、下载同一文件的不同版本。适用于任何单位或个人创建,共享,协作维护和发布它们所有内部与外部文档。




官方网站:http://www.fengoffice.com
演示地址:
下载地址:http://www.fengoffice.com/web/opensource/

文章来源:http://www.likunfeng.com

恭贺二级域名绑定成功

http://blog.likunfeng.com
敬请参与。

节日来了,祝福希望看到这些文字的亲们。

基于JS的滚动。

roll.js

var SellerScroll = function(options){
    this.SetOptions(options);
    this.lButton = this.options.lButton;
    this.rButton = this.options.rButton;
    this.oList = this.options.oList;
    this.showSum = this.options.showSum;
    
    this.iList = $("#" + this.options.oList + " > li");
    this.iListSum = this.iList.length;
    this.iListWidth = this.iList.outerWidth(true);
    this.moveWidth = this.iListWidth * this.showSum;
    
    this.dividers = Math.ceil(this.iListSum / this.showSum);    //共分为多少块
    this.moveMaxOffset = (this.dividers - 1) * this.moveWidth;
    this.LeftScroll();
    this.RightScroll();
};
SellerScroll.prototype = {
    SetOptions: function(options){
        this.options = {
            lButton: "left_scroll",
            rButton: "right_scroll",
            oList: "carousel_ul",
            showSum: 4    //一次滚动多少个items
        };
        $.extend(this.options, options || {});
    },
    ReturnLeft: function(){
        return isNaN(parseInt($("#" + this.oList).css("left"))) ? 0 : parseInt($("#" + this.oList).css("left"));
    },
    LeftScroll: function(){
        if(this.dividers == 1) return;
        var _this = this, currentOffset;
        $("#" + this.lButton).click(function(){
            currentOffset = _this.ReturnLeft();
            if(currentOffset == 0){
                for(var i = 1; i <= _this.showSum; i++){
                    $(_this.iList[_this.iListSum - i]).prependTo($("#" + _this.oList));
                }
                $("#" + _this.oList).css({ left: -_this.moveWidth });
                $("#" + _this.oList + ":not(:animated)").animate( { left: "+=" + _this.moveWidth }, { duration: "slow", complete: function(){
                    for(var j = _this.showSum + 1; j <= _this.iListSum; j++){
                        $(_this.iList[_this.iListSum - j]).prependTo($("#" + _this.oList));
                    }
                    $("#" + _this.oList).css({ left: -_this.moveWidth * (_this.dividers - 1) });
                } } );
            }else{
                $("#" + _this.oList + ":not(:animated)").animate( { left: "+=" + _this.moveWidth }, "slow" );
            }
        });
    },
    RightScroll: function(){
        if(this.dividers == 1) return;
        var _this = this, currentOffset;
        $("#" + this.rButton).click(function(){
            currentOffset = _this.ReturnLeft();
            if(Math.abs(currentOffset) >= _this.moveMaxOffset){
                for(var i = 0; i < _this.showSum; i++){
                    $(_this.iList[i]).appendTo($("#" + _this.oList));
                }
                $("#" + _this.oList).css({ left: -_this.moveWidth * (_this.dividers - 2) });
                
                $("#" + _this.oList + ":not(:animated)").animate( { left: "-=" + _this.moveWidth }, { duration: "slow", complete: function(){
                    for(var j = _this.showSum; j < _this.iListSum; j++){
                        $(_this.iList[j]).appendTo($("#" + _this.oList));
                    }
                    $("#" + _this.oList).css({ left: 0 });
                } } );
            }else{
                $("#" + _this.oList + ":not(:animated)").animate( { left: "-=" + _this.moveWidth }, "slow" );
            }
        });
    }
};

roll.css

*{margin:0; padding:0}
li{list-style:none}
img{border:0}
body{background-color:#fff; font-size:12px; color:#2c2c2c; font-family:Arial, Helvetica, sans-serif}
a{color:#444; text-decoration:none}
a:hover{color:#900; text-decoration:underline}
.con{overflow:hidden; margin:30px auto; width:442px; height:100%; padding:10px 15px; border:solid 1px #FCBA79; background-color:#FFFBEC;}
#carousel_container{position:relative; height:100px; overflow:hidden;}
#carousel_inner{width:850px; height:95px; overflow: hidden; position:absolute;left:22px; top:5px;}
#left_scroll{width:9px;height:9px;cursor: pointer;cursor: hand; }
#right_scroll{ width: 9px;height: 9px;cursor: pointer;cursor: hand; }
#carousel_ul{width:9999px; height:95px; position:relative;}
#carou

 

html中

<div class="photo_show">
<div class="r_bt fr " id="left_scroll"><a href="#"><img src="{$HOST}{$SELF}images/r_bg.gif" /></a></div>
<div class="f_bt fl " id="right_scroll"><a href="#"><img src="{$HOST}{$SELF}images/l_bt.gif" /></a></div>
 <div class="pic fl">
        <div id="carousel_inner">
            <ul id="carousel_ul">
                <li class="fl"><img src="{$HOST}{$SELF}img/1.gif" width="206" height="110" alt="" title="" /></li>
                <li class="fl"><img src="{$HOST}{$SELF}img/1.gif" width="206" height="110" alt="" title="" /></li>
                <li class="fl"><img src="{$HOST}{$SELF}img/1.gif" width="206" height="110" alt="" title="" /></li>
                <li class="fl"><img src="{$HOST}{$SELF}img/1.gif" width="206" height="110" alt="" title="" /></li>
                <li class="fl"><img src="{$HOST}{$SELF}img/1.gif" width="206" height="110" alt="" title="" /></li>
            </ul>
        </div>
</div>
</div>

 

 

<script src="{$HOST}js/jquery.js"></script>
<script src="{$HOST}{$SELF}js/roll.js"></script>
<script type="text/javascript">
    {literal}
    $(function(){
            var ff = new SellerScroll();
    });
 {/literal}

</script>

2011年11月08日

2011年11月8日8:57:32 近段时间的想法
很高兴,自己开始业余开始运作属于自己的web了,虽然起步对技术(phper)不是很专业,从JAVAER转到phper或许需要时间的锻炼吧。还好的眼下用我们自己研发的WBCMS,在上班第一个月整出来属于自己的网站,http://www.likunfeng.com,运作了一段时间之后呢,在今天PR=1了,蛮高兴的。三个月的时间,自我感觉还好吧。
下一步呢?
1.http://www.淘学.com 
2.http://www.易淘.com
3.http://www.新易淘.com
4.http://www.易淘客.com
 5.http://www.易淘金.com
6.http://www.易淘城.com
7://www.淘拍网.com
年前把1、2、3给搞定吧,
如果有时间再运作两个方向的web ,暂时呢,就不能奉告什么内容了,期待中的,请拭目以待。
李坤锋|李坤锋点点官方站
李坤锋官网
http://www.likunfeng.com
返回顶部