作者: admin

  • 公司不愿意招“大龄”程序员

    公司不愿意招“大龄”程序员(跟大龄男女青年没关系),基本上也是出于管理上的考虑。

    首先是价钱问题。现代的程序语言不需要那么多年去学习,某些语言的生手与熟手能力差别没大到决定性的地步,但工资差别却很大,一个熟手顶三个生手的工资是很正常的。一旦项目完成了,甩掉三个生手会很轻松,生手也乐得换个单位,没准还能加加工资;反之则不然,熟手因为各种原因,常常要和公司谈条件。

    其次是加班问题。软件开发行业偶尔加班是正常的,哪个行业偶尔加个班都不奇怪,但奇怪的是程序员必须能不停地加班。像律师这种行业加班也是常态,但人家总会有休息的时候,不过程序员不可以。我个人理解,绝大多数加班都是可以避免的,经常地加班是管理混乱的另一个表述。管理的目标本来是预防风险,但软件行业的风险一直都很高,也就是说,管理一直都很差。老程序员不愿意加班是因为他们知道如何可以不加班,从而调整自己的工作和生活,但好多公司宁愿程序员加班,觉得这是个态度问题,是愿不愿与公司共甘苦的问题。

    第三是程序员难以领导,并且一将难求。你可以让八只狗合作拉雪橇,但你无法让八只猫合作去拉雪橇!而程序员的性格就像猫一样(生手除外),想让他们听话,是不太可能的。你可以把一个愚蠢到家的方案拿给生手去实施而毫无阻力,但碰到老手,就会遭遇顽强抵抗!从另外一个角度讲,程序员的个人素质可以千差万别,让能力不同的人平等合作本身也是个问题。能力强的人肯定不愿意被人家均贫富,所以好多公司都有这样一个怪现象:留下来的往往是能力一般,但却非常能忍的那种人!之所以发生这种事情,完全是软件开发行业生态环境所至。微软和谷歌都相信高手的周围一定有很多高手,那么我看到的则是一个“太极高手”接着另一个“太极高手”。

    第四是官本位思想导致无技术传承。中国的官本位思想深入到各行各业,软件开发自然也不能例外。只要有一些成绩,那就一定会升个“官”当当。如果业务能力不行,那就想办法用政治手段弄个也过过瘾。说白了其实就是定位不准,不知道自己应该做点什么。我遇到过不少“官”们都是这样要求别人的:功能越强大越好,时间越快越好!一听要么是外行,要么是二五零型的。我的两个同事对这样的人做出两个不同的评价:一个说,这样的领导很公平,让你找不出一点毛病;另一个同事说,上梁不正下梁歪!遇到这样的领导,熟手是没有多少生存空间的。也因为熟手有随时离职的风险,所以也不愿意把代码思想核心都交出来;就算是都交出来了,接手的人也不一定能学会。所以代码再好,经过这么几次折腾,也就变成垃圾了。“官”们是一定要显示自己的政绩的,“不怕自己做不到,就怕别人看不到”,所以那计划都是非常全面而且具体的,要不是客户资金有限,他能把Windows和Linux都统一到自己的平台里去!

     

    问题说来说去,其实还是个生态环境问题,是“大龄”程序员很难在目前的这个环境下有近一步的发展,而不是程序员是不是“大龄”的问题。我个人对程序员的理解是,一开始是技术和架构问题,以为解决了技术和架构自己就是“大牛”了;再后来是沟通问题,用同一种语言表述,彼此竟然说不到一处去,真是晕死;最后才是管理问题,而管理是比程序语言及算法还更高一级的修养。

    就像英雄不一定是名门之后,所以年龄也肯定不是问题。问题是我们想要干什么,以及我们如何去建设软件开发的生态环境!

  • jquery.cookie.js使用介绍

    对cookies的操作在当访问一个网站就无时无刻的都伴随着我们,记录着我们的一举一动,并将不危害用户隐私的信息,将以保存,这样用户就不用去从新再次操作重复的步骤,这样大大方便了客户,也增加了客户对网站的回头率。

    jquery.cookie.js 提供了jquery中非常简单的操作cookie的方法。

    • $.cookie(‘the_cookie’); // 获得cookie
    • $.cookie(‘the_cookie’, ‘the_value’); // 设置cookie
    • $.cookie(‘the_cookie’, ‘the_value’, { expires: 7 }); //设置带时间的cookie
    • $.cookie(‘the_cookie’, ”, { expires: -1 }); // 删除
    • $.cookie(‘the_cookie’, null); // 删除 cookie
    • $.cookie(‘the_cookie’, ‘the_value’, {expires: 7, path: ‘/’, domain: ‘jquery.com’, secure: true});//新建一个cookie 包括有效期 路径 域名等

    secure: true 这里如果设置为true那么只有在https下才能生成cookies,如果为false不管是http还是https都能生成cookies,但是这样有别 窃听的风险。

    这个插件默认的过期是按天数计算的,我们可以修改下,按毫秒计算,修改如下:
    找到此代码块:
    if (typeof options.expires === 'number') {
     var days = options.expires, t = options.expires = new Date();
     t.setDate(t.getDate() + days);
    }
    
    替换为
    
    if (typeof options.expires === 'number') {
     //var days = options.expires, t = options.expires = new Date();
     //t.setDate(t.getDate() + days);
     var seconds = options.expires, t = options.expires = new Date();
     t.setTime(t.getTime() + seconds);
     //t.setTime(t.getTime() + days);
     //date.setTime(date.getTime() + (1 * 24 * 60 * 60 * 1000));
    }
    
    

     

    下面举个简单的例子:我们需要对某个页面进行阅读统计,但是呢,在一段时间里(比如5分钟),同一个人无论刷新了这个页面多少次都好,都只能算一次。这个时候可以借助cookie来实现:
    演示地址
    cookie_conut
    http://www.nowamagic.net/jquery/jquery_JqueryCookie.php

    jquery.cookie

  • “并非来自 Chrome 网上应用店”无法启动插件

    1,首先把需要安装的第三方插件,后缀.crx 改成 .rar,然后解压,得到一个文件夹

    2,打开谷歌浏览器,如图所示,依次打开扩展程序,

    3,如图所示,选中开发者模式复选框,然后再点击加载正在开发的扩展程序按钮

    4,选择刚才步骤1中解压好的文件夹,确定

    5,确认新增扩展程序,点击添加

    6,如图所示,成功添加,并且正常使用

    http://jingyan.baidu.com/article/0f5fb099cbe5486d8334ea2c.html

  • JS中typeof与instanceof的区别

    JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的。但它们之间还是有区别的:

    typeof

    typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。

    它返回值是一个字符串,该字符串说明运算数的类型。typeof 一般只能返回如下几个结果:

    number,boolean,string,function,object,undefined。我们可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!=”undefined”){alert(“ok”)},而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错,对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script language="javascript" type="text/javascript">
    document.write ("typeof(1): "+typeof(1)+"<br>");
    document.write ("typeof(NaN): "+typeof(NaN)+"<br>");
    document.write ("typeof(Number.MIN_VALUE): "+typeof(Number.MIN_VALUE)+"<br>");
    document.write ("typeof(Infinity): "+typeof(Infinity)+"<br>");
    document.write ("typeof(\"123\"): "+typeof("123")+"<br>");
    document.write ("typeof(true): "+typeof(true)+"<br>");
    document.write ("typeof(window): "+typeof(window)+"<br>");
    document.write ("typeof(Array()): "+typeof(new Array())+"<br>");
    document.write ("typeof(function(){}): "+typeof(function(){})+"<br>");
    document.write ("typeof(document): "+typeof(document)+"<br>");
    document.write ("typeof(null): "+typeof(null)+"<br>");
    document.write ("typeof(eval): "+typeof(eval)+"<br>");
    document.write ("typeof(Date): "+typeof(Date)+"<br>");
    document.write ("typeof(sss): "+typeof(sss)+"<br>");
    document.write ("typeof(undefined): "+typeof(undefined)+"<br>")
    </script>
    <title>javascript类型测试</title>
    </head>
    <body>
    </body>
    </html>

    instanceof

    instance:实例,例子

    a instanceof b?alert(“true”):alert(“false”); //a是b的实例?真:假

    instanceof 用于判断一个变量是否某个对象的实例,如 var a=new Array();alert(a instanceof Array); 会返回 true,同时 alert(a instanceof Object) 也会返回 true;这是因为 Array 是 object 的子类。再如:function test(){};var a=new test();alert(a instanceof test) 会返回

    谈到 instanceof 我们要多插入一个问题,就是 function 的 arguments,我们大家也许都认为 arguments 是一个 Array,但如果使用 instaceof 去测试会发现 arguments 不是一个 Array 对象,尽管看起来很像。

    另外:

    测试 var a=new Array();if (a instanceof Object) alert(‘Y’);else alert(‘N’);

    得’Y’

    但 if (window instanceof Object) alert(‘Y’);else alert(‘N’);

    得’N’

    所以,这里的 instanceof 测试的 object 是指 js 语法中的 object,不是指 dom 模型对象。

    使用 typeof 会有些区别

    alert(typeof(window)) 会得 object

    http://blog.sina.com.cn/s/blog_532751d90100iv1r.html

  • js !!

    在写js程序时候有时候我们会看到!!双感叹号,这里是强行转化为布尔值的意思。一般用于条件判断,在php中也有出现。