CEO做什么其实是在传达一个信号

 来源: 36氪

站长之家Chinaz.com 配图

编者按:我们很荣幸请到百姓网创始人、CEO王建硕作为36氪的特约作者,王建硕写了十年博客,他的很多文章对创业者非常有启发,以后大家将可以在36氪上看到他的文章。这是他的博客,这里是他的新浪微博。今天晚上在大学街的意大利煎饼果子铺,我们几个人在聊Facebook的高管在做什么。几个细节引起了我的注意。CEO Zuck每年还是要Checkin一行代码的(显然这是一个象征性的动作),COO Sandberg每天都自己盯着解决几个用户的问题。这个小动作其实大有值得借鉴的地方。每个人做任何事情其实都有至少两部分的力量:一部分,我做完了这件事情;第二部分,我向其他人发送了一个信号,说明了些什么。在自己一个人干活的时候,前者或许更重要,而当一个领导者,后者的比重越来越大,甚至变成最重要的部分。

如果CEO在写代码,哪怕只是一行,这明确的传达了一个信号。显然一家公司不会因为一个人写的一行代码有实质性的变化,但这个信号是如此明确,就是技术对于这个公司是重要的。这种态度是组织需要的。

COO把头埋下来,每天哪怕只解决一个问题,这也是一个信号。显然在上万的问题中一个是如此渺小以至于不会有任何实质影响,但这个明确的信号是,我在乎用户。这个信号会被组织放大,变成整个组织的行为。

为什么这个信号如此重要呢?

第一个原因应该就是“认可”。人都需要被认可,自己写的代码,自己帮用户解决的问题,或者自己和用户的一个电话,内心里都希望有人可以认可。当公司里有人,尤其是CEO,愿意花时间去看一段代码,或者看一个问题,或者听一段电话,其实最重要的信号就是,这个工作很重要。没有人愿意感觉到自己的工作对于公司的成功没有贡献。这种认可可以通过一个小小的行动达到。上次和康俊会所的一个按摩师聊天,他说他们的最高奖励就是他们大老板会给获奖者亲自按脚一个小时。这是一个按脚出身的淳朴的CEO对这份工作的认可,其他人都能感知道。这也就是为什么很多做得很成功的企业都是创始人就是这个行业里出来的原因。一个蛋糕师虽然不比MBA更懂管理,但他开的面包店更懂得做面包的自豪感。

第二个原因是“抽样“。一旦CEO开始听电话,审核用户问题解决的纪录,或者看或写代码,这方面的工作就会暴露在CEO的眼下。这其实是一种敦促。虽然谁都知道自己做的部分被看到的可能性其实不大,但只要CEO在做这件事情,又有谁能确定自己的工作不被“抽到”呢?不做这件事情,可能性是零;做了,可能性就有了。人是感性动物,不区分可能性的大小的,而仅仅区分有或者没有这种可能性。这可能就解释了为什么没有人会去买不可能中奖的彩票却对哪怕可能性再小的彩票感兴趣,或者解释了为什么一个几千万人的城市里哪怕一起凶杀案会让所有人不安。一旦有了这种可能性,大家个工作状态的确会有改变。

在领导团队的时候,领导者可以用上百种细微的方式在散发着各种信号。这些细小的信号组成了一个团队只可意会不可言传的气质。传达什么信号,其实就是由这一件件小事情完成的。

文章来源:36氪

谷歌推出人体浏览器展示3D人体模型(图)

作者:书聿 | 出处:新浪科技

谷歌人体浏览器其实相当于一款针对人体推出的谷歌地球(Google Earth),可以对人体模型进行3D浏览。WebGL尚未进入主流浏览器,但是谷歌Chrome测试版、Safari和火狐都支持该技术。

谷歌人体浏览器

谷歌人体浏览器

  北京时间12月17日上午消息,谷歌刚刚推出了一款名为谷歌人体浏览器(Google Body Brower)实验项目,可以浏览3D人体模型。

谷歌人体浏览器其实相当于一款针对人体推出的谷歌地球(Google Earth),可以对人体模型进行3D浏览。

谷歌在WebGL Camp环境中展示了这款应用。WebGL是一种跨平台的低级3D图形API(应用编程接口),无需任何插件,即可将3D图形引入万维网。由于使用了HTML5 Canvas元素,因此不需要借助Flash、Java或其他图形插件来运行。

如果使用支持该技术的浏览器访问bodybrowser.googlelabs.com,便可以获得一个人体解剖学3D模型,还可以放大、缩小、旋转甚至搜索。

WebGL尚未进入主流浏览器,但是谷歌Chrome测试版、Safari和火狐都支持该技术。

使用兼容浏览器访问人体浏览器的主页时,便会看到一个人体模型,可以对皮肤、肌肉、组织和骨骼系统等多个视图层进行调节。当用户输入一个器官或骨骼名称时,还可以直接切换到对应的视图,并进行放大处理。用户可以自行启动或关闭标签,而且该应用还支持多点触控,因此可以通过多点触控板和多点触控鼠标进行操作。

业内人士认为,该应用不仅对于医疗行业有所帮助,相关学科的老师和学生也可以从中受益。(书聿)

Jquery瀑布流插件

瀑布流布局在目前貌似很火爆,具体的分析、原理、用到的知识等等可以看看以下几位牛人写的东西。

瀑布流布局浅析

浅谈个人在瀑布流网页的实现中遇到的问题和解决方法

折腾:瀑布流布局(基于多栏列表流体布局实现)

javascript 瀑布流各大瀑布流简析与建议

因为自己用jquery比较多,便萌生了把瀑布流做成插件的想法,图片就借用迅雷UED上的那些美图吧。

先看看Demo

把代码放出来吧

;(function($){
   var
   //参数
   setting={
      column_width:204,//列宽
       column_className:'waterfall_column',//列的类名
       column_space:10,//列间距
       cell_selector:'.cell',//要排列的砖块的选择器,限定在瀑布流的容器内
       img_selector:'img',//要加载的图片的选择器
       auto_imgHeight:true,//是否需要自动计算图片的高度
       fadein:true,//是否渐显载入
       fadein_speed:600,//渐显速率,单位毫秒
       insert_type:1, //砖块插入方式,1为插入最短那列,2为按序轮流插入
       getResource:function(index){ }  //获取动态资源函数,必须返回一个砖块元素集合,传入参数为加载的次数
   },
   //
   waterfall=$.waterfall={},
   $container=null;//容器
   waterfall.load_index=0, //加载次数
   $.fn.extend({
       waterfall:function(opt){
          opt=opt||{}; 
              setting=$.extend(setting,opt);
          $container=waterfall.$container=$(this);
          waterfall.$columns=creatColumn();
          render($(this).find(setting.cell_selector).detach(),false); //重排已存在元素时强制不渐显
          waterfall._scrollTimer2=null;
          $(window).bind('scroll',function(){
             clearTimeout(waterfall._scrollTimer2);
             waterfall._scrollTimer2=setTimeout(onScroll,300);
          });
          waterfall._scrollTimer3=null;
          $(window).bind('resize',function(){
             clearTimeout(waterfall._scrollTimer3);
             waterfall._scrollTimer3=setTimeout(onResize,300);
          });
       }
   });
   function creatColumn(){//创建列
           waterfall.column_num=calculateColumns();//列数
      //循环创建列
      var html='';
      for(var i=0;i<waterfall.column_num;i++){
         html+='<divjs plain" style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; border-image: initial !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; overflow-x: visible !important; overflow-y: visible !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; position: static !important; right: auto !important; text-align: left !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: 'Courier New', Consolas, 'Bitstream Vera Sans Mono', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; min-height: inherit !important; white-space: pre-wrap; color: rgb(0, 0, 0) !important; background-position: initial initial !important; background-repeat: initial initial !important; ">+setting.column_className+'" style="width:'+setting.column_width+'px; display:inline-block; *display:inline;zoom:1; margin-left:'+setting.column_space/2+'px;margin-right:'+setting.column_space/2+'px; vertical-align:top; overflow:hidden"></div>';
      }
      $container.prepend(html);//插入列
      return $('.'+setting.column_className,$container);//列集合
   }
   function calculateColumns(){//计算需要的列数
           var num=Math.floor(($container.innerWidth())/(setting.column_width+setting.column_space));
      if(num<1){ num=1; } //保证至少有一列
      return num;
   }
   function render(elements,fadein){//渲染元素
      if(!$(elements).length) return;//没有元素
      var $columns = waterfall.$columns;
      $(elements).each(function(i){                                    
          if(!setting.auto_imgHeight||setting.insert_type==2){//如果给出了图片高度,或者是按顺序插入,则不必等图片加载完就能计算列的高度了
             if(setting.insert_type==1){
                insert($(elements).eq(i),setting.fadein&&fadein);//插入元素
             }else if(setting.insert_type==2){
                insert2($(elements).eq(i),i,setting.fadein&&fadein);//插入元素  
             }
             return true;//continue
          }                    
          if($(this)[0].nodeName.toLowerCase()=='img'||$(this).find(setting.img_selector).length>0){//本身是图片或含有图片
              var image=new Image;
              var src=$(this)[0].nodeName.toLowerCase()=='img'?$(this).attr('src'):$(this).find(setting.img_selector).attr('src');
              image.onload=function(){//图片加载后才能自动计算出尺寸
                  image.onreadystatechange=null;
                  if(setting.insert_type==1){
                     insert($(elements).eq(i),setting.fadein&&fadein);//插入元素
                  }else if(setting.insert_type==2){
                     insert2($(elements).eq(i),i,setting.fadein&&fadein);//插入元素 
                  }
                  image=null;
              }
              image.onreadystatechange=function(){//处理IE等浏览器的缓存问题:图片缓存后不会再触发onload事件
                  if(image.readyState == "complete"){
                     image.onload=null;
                     if(setting.insert_type==1){
                        insert($(elements).eq(i),setting.fadein&&fadein);//插入元素
                     }else if(setting.insert_type==2){
                        insert2($(elements).eq(i),i,setting.fadein&&fadein);//插入元素  
                     }
                     image=null;
                  }
              }
              image.src=src;
          }else{//不用考虑图片加载
              if(setting.insert_type==1){
                 insert($(elements).eq(i),setting.fadein&&fadein);//插入元素
              }else if(setting.insert_type==2){
                 insert2($(elements).eq(i),i,setting.fadein&&fadein);//插入元素 
              }
          }                    
      });
   }
   function public_render(elem){//异步数据渲染接口函数      
       render(elem,true);
   }
   function insert($element,fadein){//把元素插入最短列
      if(fadein){//渐显
         $element.css('opacity',0).appendTo(waterfall.$columns.eq(calculateLowest())).fadeTo(setting.fadein_speed,1);
      }else{//不渐显
         $element.appendTo(waterfall.$columns.eq(calculateLowest()));
      }
   }
   function insert2($element,i,fadein){//按序轮流插入元素
      if(fadein){//渐显
         $element.css('opacity',0).appendTo(waterfall.$columns.eq(i%waterfall.column_num)).fadeTo(setting.fadein_speed,1);
      }else{//不渐显
         $element.appendTo(waterfall.$columns.eq(i%waterfall.column_num));
      }
   }
   function calculateLowest(){//计算最短的那列的索引
      var min=waterfall.$columns.eq(0).outerHeight(),min_key=0;
      waterfall.$columns.each(function(i){                        
         if($(this).outerHeight()<min){
            min=$(this).outerHeight();
            min_key=i;
         }                            
      });
      return min_key;
   }
   function getElements(){//获取资源
      $.waterfall.load_index++;
      return setting.getResource($.waterfall.load_index,public_render);
   }
   waterfall._scrollTimer=null;//延迟滚动加载计时器
   function onScroll(){//滚动加载
      clearTimeout(waterfall._scrollTimer);
      waterfall._scrollTimer=setTimeout(function(){
          var $lowest_column=waterfall.$columns.eq(calculateLowest());//最短列
          var bottom=$lowest_column.offset().top+$lowest_column.outerHeight();//最短列底部距离浏览器窗口顶部的距离
          var scrollTop=document.documentElement.scrollTop||document.body.scrollTop||0;//滚动条距离
          var windowHeight=document.documentElement.clientHeight||document.body.clientHeight||0;//窗口高度
          if(scrollTop>=bottom-windowHeight){
             render(getElements(),true);
          }
      },100);
   }
   function onResize(){//窗口缩放时重新排列
      if(calculateColumns()==waterfall.column_num) return; //列数未改变,不需要重排
      var $cells=waterfall.$container.find(setting.cell_selector);
      waterfall.$columns.remove();
      waterfall.$columns=creatColumn();
      render($cells,false); //重排已有元素时强制不渐显
   }
})(jQuery);

貌似把代码贴进来格式有点乱了,哎先不管了。上面的代码要是看不清可以在demo页直接查看源文件。

插件使用方法:

1
$(selector).waterfall(opt); //其中selector为瀑布流容器的选择器,opt为配置参数对象

所需的html结构:html结构可以就是一个空容器元素,如<div id=”container”></div>,里面的砖块元素通过动态加载进来。当然也可以预先放一些砖块进去,如demo页中的

<div id="container">
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_000.jpg" /><p>00</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_001.jpg" /><p>01</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_002.jpg" /><p>02</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_003.jpg" /><p>03</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_004.jpg" /><p>04</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_005.jpg" /><p>05</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_006.jpg" /><p>06</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_007.jpg" /><p>07</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_008.jpg" /><p>08</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_009.jpg" /><p>09</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_010.jpg" /><p>10</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_011.jpg" /><p>11</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_012.jpg" /><p>12</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_013.jpg" /><p>13</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_014.jpg" /><p>14</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_015.jpg" /><p>15</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_016.jpg" /><p>16</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_017.jpg" /><p>17</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_018.jpg" /><p>18</p></div>
    <div class="cell"><img src="http://cued.xunlei.com/demos/publ/img/P_019.jpg" /><p>19</p></div>
</div>

下面详细说下配置参数对象opt的各属性的作用及其默认值。

column_width:204  //瀑布流是由列组成的,该参数规定了每列的宽度,该参数会直接影响到瀑布流的列数

column_className:’waterfall_column’   //列的类名,便于自定义样式

column_space:10    //列与列之间的间距

cell_selector:’.cell’   //要排列的砖块的选择器,限定在瀑布流的容器内,即插件是通过这个选择器来获取砖块元素的,并且是在瀑布流的容器内来查找这个选择器匹配的元素。

img_selector:’img’  //要加载的图片的选择器。如果你的瀑布流要加载的砖块元素的主题内容是大小不固定的图片,则该参数就是这些图片的选择器,插件需要获取这些图片来进行计算。

auto_imgHeight:true  //是否需要自动计算图片的高度,如果图片的大小是固定的,则把该参数设为false吧

fadein:true  //是否渐显载入

fadein_speed:600  //渐显速率,单位毫秒

insert_type:1  //砖块插入方式,1为插入最短那列,2为按序轮流插入

getResource:function(index,render){ } //获取动态资源函数,必须返回一个砖块元素集合,传入的第一个参数index为已加载的次数,第二个参数为渲染函数,它可以接受一个砖头元素集合作为参数,如果是使用ajax加载数据,则得到数据后要手动调用该函数来进行渲染 。每次到达瀑布流底部时会自动触发该函数来加载更多资源。

 

吐槽时间:

瀑布流加载的内容一般都宽度相同,高度不同的图片,如果能预先知道图片的高度,那就简单多了,但如果不能,则必须等到图片加载后才能计算出图片的高度,这是瀑布流最烦人的地方,也正是因为这样,如果是那些不知道高度的图片,则插入的顺序可能会有些混乱,而且每次刷新顺序都不同,因为每张图片加载完成的先后顺序并不是固定的,也许这次这个快一点,下次那个快一点。所以如果图片高度事先不知道,则整个砖块的高度也会不知道,必须等砖块里的图片加载完成后才能算出砖块的高度。如果是这样但又想保证砖块的插入顺序,则建议使用按顺序轮流插入的方式插入砖块,即把insert_type参数设为2。因为是插件,所以要考虑使用简便,但使用起来越简便,插件内部就会越复杂,漏洞、bug也会增多,所以我会继续完善这个插件。

本插件支持IE6+、chrome、firefox、opera、safari等主流浏览器。

来源:http://www.cnblogs.com/2050/archive/2012/05/03/2480702.html

robots妙用,开启伪静态后禁止搜索引擎抓取动态页面

我的应用:

由于在正式环境中有个测试环境(主要是为了update更新准确性,减低直接部署到正式环境BUG风险)

在网站根目录下

测试环境:

echo -e “User-agent: *\nDisallow: /” >/data0/app/apache2-test/htdocs/lbs/robots.txt

正式环境:

echo -e “User-agent: *\nDisallow: /api/\nDisallow: /trd\\nDisallow: /test/\nAllow: /”>/data0/app/apache2/htdocs/lbs/robots.txt

robots妙用,开启伪静态后禁止搜索引擎抓取动态页面!

说之前还是先分析下静态、伪静态、动态的不同点

动态、静态、伪静态

静态网址:纯静态HTML文档,能使用filetype:htm 查询到的网页。

伪静态网址:使用 Rewrite 将动态网址进行重写,使动态网址看起来像静态网址。

现在很多的后台,充分考虑到SEO,支持URL的重写,链接中带关键词,且链接清晰明了。

动态网址:内容存于数据库中,根据要求显示内容,URL中以 ? # & 显示不同的参数,如:news.php?lang=cn&class=1&id=2。动态网址的会话标识(sid)和查询(query)参数,容易造成大量相同页面,有时蜘蛛进入了会进入死循环,出不来。所以到现在为止,蜘蛛还是不太喜欢动态的。

robots指令

在开启伪静态后,打开网址是显示的静态页面,google这样的搜索引擎,在抓取你网站的页面时,同样会抓取网站的静态页面和动态页面,这样会造成抓取大量内容重复的页面(我的网站就存在重复抓取,网址是http://www.hyledlighting.com)。

现在,我们可以只接在robots.txt文件里写入规则,禁止搜索引擎来抓取动态页面,动态页面都有一个共同的特征,就是在链接里会带有“?”这个问号的符号,具体的robots指令规则看下面:

User-agent: *
Disallow: /*?*

如果想只接接指定搜索引擎抓取指定类型文件,如html格式的静态页面,其规则看下面:

User-agent: *
Allow: .html$
Disallow: /

如果要禁止搜索引擎抓取你网站的所有页面,可以写入以下规则:

User-agent: *
Disallow: /

对于robots.txt文件的路径,应该在你网站的根目录中,写入规则有一个简便的捷径,登陆google网站管理员工具,只接在里面写入规则后,生成robots.txt文件即可。

以上主要是针对伪静态网站禁止抓取动态页面,robots.txt文件中的配置规则很多,具体可以查阅相关资料。

MemSQL:“世界上最快”的数据库

 来源: ITeye

近日,Eric Frenkiel(前Facebook员工)和Nikita Shamgunov(前微软SQL Server高级工程师)推出了MemSQL数据库,该数据库的目标旨在提高关系型数据库的运行速度。

MemSQL通过将数据放置在内存中,并将SQL语句翻译为C++,来达到查询执行最优化。这使得MemSQL以难以置信的速度写入和读取数据。Frenkiel称,MemSQL比磁盘型数据库的执行速度快了30倍。

MemSQL提供了一个关系型接口,你可以将通常存储在暂时媒介(缓存或键值存储)中的数据进行统一,并连同现有数据直接放置到数据库中。

除了速度快外,对于开发者来说,MemSQL的另一个优势是可以与MySQL很好地结合。从本质上讲,当磁盘中的MySQL数据需要更少的性能和更高的持久性时,MemSQL则扮演一个高性能内存层的角色。MemSQL使用一个SQL接口和MySQL API,这意味着开发者不必学习新的东西。

MemSQL项目主页:http://memsql.com/

文档:http://developers.memsql.com/docs/1b/

网站安全–站长成功路上的最严重的一道绊脚石

来源:a5团购

  运营一个成功的网站有很多要素,定位要做好、美工要优化、推广要到位、要时间的积累。曾经我以为,当这一切都具备的时候,我就成功了,但事实并非如此。

事情是这样的,从最初接触SEO开始,我就一直致力于自己一个商城网站的运营和建设,从2009年开始,差不多已经快3年时间了。一直坚持手工外链,坚持原创内容,也投入了大量精力,自己做客服。努力总有回报,随着百度更新,网站排名越来越好,流量也越来越多。最好的时候,百度指数1000的词,我做到了百度第三位。由于是来的精准流量,每天给我带来的销售额也是相当可观的。我也梦想着,年入30万马上就要实现了,非常欣喜。

但是好景不长,排名上去没到一个星期,网站莫名其妙打不开了。我气愤地去问空间商是怎么回事,答案如下:网站被DDOS攻击,已经关闭了。完全懵了,原本一直致力于网站优化、推广方面的研究,但对网路安全方面的内容却一无所知。突击学习了几天,才大致明白怎么回事情。好说歹说,让从空间商那边备份了网站数据,换了国内某知名IDC的空间,想这回安全性应该高一些了。

不过接下来的事情更令我手足无措,网站更换空间后,一开始几天运转正常,但没过几天,攻击又来了,虽然这次没有被关闭,但访问速度奇慢。原本PV/IP一直维持在5以上,现在一下子降到一点几。想必大部分客户是刚点开网页就关了。接下来,网站排名也掉了。而由于我使用的CMS被爆出有漏洞,居然还给挂上了黑链。真是屋漏偏逢连夜雨!万般无奈,我只好把一个盈利前景大好的网站转手卖了。

痛定思痛,我想这次教训对我以后的发展也是有帮助的。至少,通过这次实践,我明白了自己的模式是行得通的,同时,也了解到做网站不仅仅是推广,网络安全对于网站成功是至关重要的。前一阵的新闻相信大家都看到了,从去年底开始CSDN、51CTO、CNZZ、eNet、UUU9、YY语音、百合网、开心网、人人网、美空网、珍爱网等各大网站用户数据相继被破解,这些大站尚且如此,我们草根站长的小站被入侵实在太简单了。因此,多学习点网络安全防护知识,应对各种网络攻击。保障服务器、网站安全,防止被入侵、挂马非常必要。

Chrome源代码中首次出现扩展同步代码

chromi.org

相信很多人像笔者一样白天在单位用一个电脑,晚上回家又用另一个电脑,甚至还可能不是同一种操作系统。那么在这种情况下,我们会发现 Chrome/Chromium 的同步功能非常实用。从最初支持的书签同步,到现在可以同步很多东西,包括皮肤、自动填写以及偏好设置等等。唯一差的就是 Chrome 扩展的同步了,而且这也是用户最需要的一个同步功能。

Chrome源代码中首次出现扩展同步代码

然而,从最新的 Chrome 源代码来看,我们应该不需要等太久了。在今天更新的Chromium Revision 49234中,终于出现了有关扩展同步的代码。更让人兴奋的是,这些代码默认就处于启用状态,也就是意味着不需要通过命令行参数来开启这项功能。当然,目前也仅仅是出现了相关的代码而已,还不能使用。

Chrome源代码中首次出现扩展同步代码

  也就是说,目前要不就是没有完全开启这项功能,要不就是还不能良好的工作。这种情况其实也很正常,毕竟是第一次出现了相关的代码。

很显然 Chrome 的开发者已经在这方面投入工作了,其实从本质上来说同步扩展应该和同步皮肤差不多,毕竟都是.CRX 的文件结构,既然 Chrome 皮肤同步功能已经可以很好的工作了,那么加入扩展同步应该也不是太困难。

那么,什么时候才能在 Chrome Dev 分支使用扩展同步呢?让我们一起期待吧!

仅硬盘大小电脑问世:无CPU无内存无系统

  国内第一台无CPU、无内存、无系统的电脑主机在沪投产

一只与移动硬盘大小相仿的金属盒子,“身上”长着4个USB接口和电源、网络、耳麦、投影仪专用接口,只需连接上显示器、键盘、鼠标等外接设备并插上网线,轻轻点击登录窗口,熟悉的Windows界面即刻展现在显示器或投影屏幕上,开机启动时间几乎可以忽略不计……

经过上海科研人员的数年攻关,国内第一台无CPU、无内存、无系统的“零终端电脑主机”近日在沪问世,并于7月初投入量产。目前,上海黄金交易所已经“抛弃”掉笨重的PC主机,配置完成300台这样的“零终端电脑”,成为全国第一家进入云电脑办公时代的公共机构。

节电95%零电磁辐射

记者日前在上海金图信息科技有限公司看到,这台可以完全替代PC主机的“宝盒子”KT8000长12厘米、宽8厘米、高1.5厘米,只相当于两包香烟大小,重量只有80克,比便携式移动硬盘还轻。

“KT8000是目前世界上唯一真正做到无CPU、无内存、无系统的零终端电脑,盒子内只有一块高度集成的电脑芯片,而上网浏览、操作软件、编辑保存文件、播放视频等所有工作,都通过网线另一端强大的服务器软硬件系统来完成。”金图科技总裁宋代明表示,由于“宝盒子”将传统PC主机内的数据运算、管理程序、操作系统等全部“转移”到了基于云计算概念的远程服务器,办公桌上的电脑终端得以大幅度“瘦身”,电力消耗只有3.5瓦不到,是通常台式电脑的5%,以一家100人规模的办公企业测算,能源消耗只有独立主机方案的1/10,3年下来可节省5万元电费。

无CPU、无内存、无系统,对电脑使用者来说还意味着——让办公族头疼的开机等候时间长、电磁辐射、电脑病毒都一一迎刃而解。

初步上市约3000元

在沪问世的KT8000“零终端电脑”已通过中国质量认证中心的中国国家强制性产品认证,被中科院上海科技查新咨询中心认定为国际领先技术,并于7月初正式投入量产。

目前,一台“宝盒子”的市场价格约3000元左右,今年第三季度可望量产4500台,已具备年产10万台的生产能力。

家庭版“零终端电脑”也在研制中,有望明年年中面市,届时价格也会大幅降低,一台家庭用“宝盒子”不会超过1000元人民币

网站第三方社会化插件推荐

 来源: 卢松松博客

从评论系统到分享按钮,从智能推荐插件到社会化登陆,社会化插件已经入侵了网站的方方面面,我就推荐写适合个人网站使用的第三方社会化插件。
搜索引擎认为最有价值的(按先后顺序):

1:内容

2:社会化

3:用户体验

4:链接建设

5:SEO

这是从ZAC博客中分享的一个Bing人员总结的高度浓缩的SEO技术,其实适用于所有搜索引擎。由此可见社会化的重要性。

那么,既然知道了社会化分享的重要性,今天卢松松推荐的插件可以用过一张图来表明。

我们看到,如果网站全权使用第三方社会化插件的话,除了网页基本框架和内容之外,其他功能都可以由插件来完成了。

1:分享插件

现在在各个网站上我们都能见到分享的按钮,目前Jiathis、bshare、百度分享这三款算是很火的分享按钮了。

下面的示意图可以说明分享按钮的作用,例如:通过用户A分享到他的微博下,这样他的粉丝就能看到该网站的内容,从而影响更多的人。

卢松松博客目前用的是Jiathis,因为它出是早,而且可分享的网站也非常多,而且在分享数据分析方面做的也很全面。Bshare还没用过,不过多评论了。

后起之秀,百度分享是很厉害,因为还不清楚百度的分享和它的收录、排名有什么关系,为了保险起见,许多站长都换成百度分享了,而且刷百度分享数的人也不在少数。

2:评论插件

第三方社会化评论系统我在之前的博文中已介绍过,目前评论插件有:评论啦、友言、贝米,和刚刚诞生的“多说”。

它们的功能大多类似,如上图所示,去处装上一段JS代码即可使用,比如社会化登陆、分享按钮、添加图片视频等等,在评论框中一应俱全。而且现在这些社会化评论系统已经支持SEO了,同时评论的数据也支持导入/导出了。

3:智能推荐插件

无觅是一个较早推出智能推荐插件的,我真正使用无觅这个插件还是在去年,因为之前Truman Lam给我推荐了好久。在加上他们的工具确实靠谱,所以我就用上了。智能推荐插件就是可以把同一个网站不同程序下的相关文章聚合到一起,主要是增加相关文 章精准度。同时无觅的“喜欢”功能就类似于分享按钮,可以把“喜欢”的文章推送到绑定的微博中,

友荐:和无觅一样的功能,不过部分还在内测中,它最大的特色就是JS代码只有一行。

需要注意的是友荐、友言已被Jiathis(加网)收购,从“分享按钮”到“智能推荐”再到“评论框”,Jiathis已经形成了一套完整的社会化插件体系。

同时Jiathis推出的趣一网的个性化阅读也与新版无觅网的个性化阅读形成了正面竞争。需要注意的是,只有你的博客安装了其中任何一方插件的用户才可能进入他们自家的热门排行榜,带来流量,二选一,你选吧。

写在最后:

分享按钮,可以让用户帮你推广网站;社会化评论框,可以提交评论、载入速度,方便管理评论;智能推荐插件,可以提高网站PV,增强用户黏性。

它们有很直接有优点,也有最大的缺点:你会发现网页中有一大堆第三方JS,牵一发则动全身。

作者:卢松松 本文地址:http://lusongsong.com/reed/436.html

HTML5性能分析面面观

 来源: InfoQ
以下这篇文章是由一位名为张黎明的IT技术人员所写,其发表于InfoQ的网页上。这次他在全文里面从9个不同的方面分析HTML5的性能,还是很值得相应的开发人员阅读的。
从性能角度来说,HTML5首先是缩减了HTML文档,使这件事情变得更简单。第一,从用户可读性上说,原先一大堆东西,像初学者第一次看到这些东 西是看不懂的,而HTML5的声明方式对用户来说显然更友好一些。 第二,文档编码的声明,用HTML5方式的话,就很简单。很多人问HTML5是什么?我们说可以先用HTML5的方式就是把DOCTYPE先改了,因为目 前很多页面都还是用传统的方式。HTML5的方式,本身是兼容IE浏览器的,从IE6到IE10都可以,包括高级浏览器都支持。所以说拥抱HTML5最简 单的方式就是把DOCTYPE给改了。

1.更简洁的标签

接下来可能并不是一件很常见的事情,但是却是我比较推崇的,使用更简洁的标签方式。HTML5从这个名字大家可以听出,它是从HTML4继承过来 的。HTML4里面有严格模式跟过渡模式,HTML5是支持这种过渡模式的,就是你可以不把一些标签闭合。但是,我并不推荐所有的标签,比方说BODY标 签的不闭合,这种我们不推荐。但是像P标签最常用的,还有列表标签LI。为什么这样说?首先从视觉的角度来说,这样的方式更简洁一点。然后关键的是在文档 传输过程中,内容会更少。

HTML5标签属性的声明支持三种方式:单括号、双括号和不加括号。为了减少文档大小,我是选择不加双引号的方式或单引号的方式。但是要注意,假设 是类属性的声明,因属性可能包括多个类,多个类的时候则必须用括号括起来。在这方面,给大家看一下谷歌的一个实践。谷歌自己有一个页面完全实践了上面的东 西,文档的大小减少了20%,使HTML文档的传输减少了20%。如果把整个都实践起来,可以达到5%—20%之间的减少。这是第一步,缩减HTML文档 的大小。

2.图片优化

接下来是关于图片的优化,图片永远是又爱又恨的元素。因为当图片多的时候,会严重拖垮整个页面的加载速度。关于图片的优化方式,《高性能网站》书中已有很多介绍,总结起来主要有三点:使用精灵图、优化图片的大小,使用DATA URI,具体这里就不细说了。

图片优化的另一个思路是:no-image。抛弃图片,拥抱CSS3。原先需要设置一张圆角效果的图片,现在使用CSS3中的 border-radius;原先需要设置阴影效果的图片,现在使用CSS3中的box-shadow;原先需要设置渐变的背景图片,现在使用CSS3中 的gradient。

3.预取

接下来讲Prefetching,预取,是优化的另一个思路。我们现在优化的思路无非就是少。很多都是从少的角度,比方说前面把文档大小减少,把图 片的大小减少。很多张的图片变成一张精灵图,都是为了把发送请求的数量减少。预取的话,是另一种思路,提早加载好资源,用户去点的时候,实际上已经加载 好,那肯定是更快了。

预取,一共有两部分:一部分是资源的预取,还有一部分是DNS的预解析。

资源预加载有几个点需要注意:

预加载只是在浏览器空闲的时候才会去拉,但不保证一定会去拉,这是很重要的一点。因为本身浏览器有一个全局的监听器,这是内部的一个接口,当浏览气空闲的时候,它会去执行浏览器空闲的时候应该做事情,但是这个空闲的回调不一定被触发,所以说并不保证一定会执行预加载。

Chrome不支持HTTPS资源的预加载,像Alipay是HTTPS的页面,Chrome不会去预拉取。

一个预拉取的页面虽存在后不可见,实际上它是在正常解析。假如说我预拉取登陆页面,登陆页面有很多资源,比方说有图片,有CSS文件,JS文件。它 是从上往下正常的会被解析,解析的过程中,这个页面没有显现,但是它实际上是存在的。在HTML5里面,可通过 document.visibilityState得到当前页面状态,通常页面有两种状态,可见与不可见,但是现在有一个新的状态,叫做预渲染的状态。可 以直接通过document.visibilityState 是否等于 prerender 来判断页面是否在预渲染状态。

4.DNS解析

接下来是关于DNS的解析。有时候我们登入页面,对用户可能点的地方相对而言是比较难探测到,当然有时候我们会做一些埋点来探知用户下一步行为大部 分是往里走。但有些情况下,我们不知道用户下一步具体会走到哪一个页面的时候,但是我们知道他要走到哪一个域。这个时候,我就可以预解析DNS。因为实际 上,整个页面的请求过程中间有一个很长的DNS的解析过程,如果说这个我们提前做了,就可以更进一步让用户看到这一页面。

以下是Q+壁纸的案例。Q+壁纸是Q+某一个系统系统,首先Q+整个的架构是基于WEB + 客户端。我们现在看到的就是一个WEB的页面,虽然它外面是一个客户端的壳,但是它的心是WEB的。整个过程在我们第一次在完成的时候,因为图片比较多, 所有的静态资源是分配到十几个静态服务器上。也就是说,如果我要去拉的时候,我就要解析10个DNS,这个时间是相当耗时的,最慢的时候可能会延迟几秒 钟,这是我们肉眼能感觉到的。如果进行DNS预解析,因为本身资源我不知道具体是哪一个,所有图片都是随机的,所以我们只能说在DNS预解析上下功夫,来 提升它的速度。这样的话,从原来可能需要2秒钟,我就变成1秒钟。

接下来讲Q+中的应用。我们会像QQ里面一样,QQ里面跟Q+都有很多文字链,就是窗口的左下角有一个文字APP信息的推送。这边是通过WEB时时 去拉取后端,后端拉取过来然后在前台显示。但是在某一个时期,其实所有的APP它一共推送的运营信息是固定的。如果说按某个具体APP去分析每个文字链对 应数组的话,这个时候是非常大数据。因为这里一个就大概有达到三四百个字节,从优化的角度说,我们把这些每次拉区过来的存在本地。再存上本地的 localStorage,我们是同一域,所有的APP之间的信息都是可以相互访问的。然后就是把所有拉过的ID,就不会再重新拉一遍。

在这里也有一个需要注意的点,localStorage目前很多厂商的实现是同步的。如果你大量地调用localStorage这个接口,实际上他 会阻塞你的渲染进程。这个时候,当用户往下拖动页面的时候,然后你这个时候又正好在做存储数据,这个数据又比较大,这个时候用户就会感觉你这个页面非常 卡。之前他们都有讨论这个问题,本身这个接口的设计IE是设计成异步的,他们设计是成同步。这个会导致在调这个借口的时候,假设你程序比较多,因为有一个 序列化的过程,序列到磁盘。这样的话,整个过程就会显得比较慢。再加上本身localStorage可以做不同的窗口之间共享这个数据,它会在这个数据上 加锁。如果大量地数据在调用这个本地接口,它就会显得比较卡。所以目前没有什么特别好的解决方案,但是这是需要记住的。即使说目前最大的五点多兆,如果你 用了五点多兆,会让用户很悲催。因为你如果一去调用这个借口,用户在拖用鼠标,就觉得非常卡。

5.离线存储

接下来讲离线存储在性能方面给用户带来的好处。首先是进离线存储的定义文件,在Q+中所有的系统模块,都是有定义离线支持。就是说所有的应用,如果 网断了,还是可以用。在文档中加入MANIFEST的文件,MANIFEST是一个定义文件,声明当前页面哪些是需要存储在本地的?哪些是不需要存储的? 哪些如果说请求失败,应该用哪些新的图片或者什么来代替?这样分三块:

第一,CACHE,哪些需要存储到本地。

第二,NETWORK,是不会存储在本地的,它每次都回去请求一遍但是这里需要指出的是,本地存储跟浏览器存储实际上是两回事情,他们存的是两块不 同的地方。即使NETWORK这边需要告诉APP说,我需要每次都拉一次,因为像Chrome,他这个存储缓存是非常可恶的,比较难清除的,必须通过手动 去清除,才能完全生效。所以说你即使设置了不要让它存储在本地,但是浏览器可能本身把它存储起来了,因为他存的是两块不同地方。

第三,FALLBACK。如果说一个图片假如说请求失败,它是404。那要用什么图片代替?我觉得这个比较好玩。

MAEIFEST怎么设置? MANIFEST这里需要注意的是三点:

MANIFEST同源限制;

MIME类型必须为text/cache-manifest,这是标准的,如果是其他格式,都不会生效;

CHROME,如果要看这个东西有没有生效,可能通过CHROME这个伪协议的方式在浏览器输入,chrome://appcache-internals。

关于如何去更新应用的缓存。为什么要离线存储?离线存储在本地,当浏览器知道你有离线存储你,它会首先去离线存储的目录下,去找这个资源是否已经被 Cache。当它已被Cache的时候,他就直接从这边拿到这个资源,不会再去发送一个请求。因为浏览器的请求是这样的,当有离线存储的话,就连请求都不 会发,所以说会更快。 如果说有的时候我们需要更新,更新的时候怎么办?

用户可以手动去清除浏览器的Cache,这个时候自动把本地存储给清除了。

修改MANIFEST的任何内容,这是比较推荐的方式,也是我们线上用的方式。就是说我们可以修改里面的的具体项目,但是这里应该最好是修改注释, 因为我每次发布的时候,我们自动发布机制,发布的时候在上面注释修改一下就可以了。这样的话,每次发布的内容,都会实时同步到客户端的本地;

通过程序去执行,程序的就是window.applicationCache.update()。就是我要去操作离线存储,其实我有时候叫应用存储,因为它的语意就是应用存储。我们去手动的更新应用存储。

6.Web Worker

接下来Web Worker。 Web Worker是一个多线程的JS进程。应用场景其实我们在线上的话,是没有的,我就不讲了。但是可以讲下具体我看到过的应用场景。

首先介绍一下WEBWORK是什么东西?它是一个OS级别的线程。之前我们模仿多线程,实际上都是多开一个窗口。但是现在的话,浏览器本身就提供了,这个会让操作带来更多便利,是让我们整个文档比较重,并不是很建议的方式。

然后WebWorker访问能力是有限的,它并不能访问到很多全局对象。比如说documnet对象它是访问不了的。 WebWorker最适合的场景就是CPU密集型的计算操作。之前我们做游戏的时候,我们用BOX2D。应该很多人听到过,它涉及到大量的计算,就是整个 页面里面,下面所有的物体要去计算它们的碰撞关系,这个计算量是非常大的。但是如果放在当前的JS的进程里面去执行,这个计算量一大,一计算,整个页面就 非常卡。但是如果用WebWorker去做,它是异步的过程,实时的发送过去,在计算的过程中还能干其他事,这就是多线程。

7.设备API

讲一下设备API。设备API我觉得最重要在性能方面,也是目前实现最早的API。一个是CONNECTION,就是网络带宽。这个有什么作用?在 中国这个场景下,必须得记住,很多用户的网速依旧是很低的。我们希望让用户网速低的时候,能够自动降级到一个比较低的方案。如果用现有的技术,我们是做不 到的。但是使用设备API我们是可以的。因为我们知道,从设备上可以取到这些信息。它的宽带是多少,多少宽带的时候我们能干的事情。比方说宽带好的时候, 我就用高清图片。宽带比较低的时候,就用清晰度比较低的图片。

8.电池

下面一个是关于电池的。我觉得从性能角度来说,主要是电量方面。假如说用户电池电量比较低的时候,我觉得是应该尽量少做一些事情。本身手机现在电池的技术来没有突破,我觉得让APP看起来比较高性能,也是一个宣传亮点。

9.CANVAS

接下来是CANVAS。讲CANVAS的几个性能优化点,用了这些东西,性能会有10倍的提升。

第一,每个CANVAS就是一个画布,我们要去渲染一个图形的时候, 我们是可以把它分层的。就是像PS里面一样,是一层两层三层。很多用户在做游戏的时候,直接把所有东西仿放到一个层里,一更新所有的东西都要更新。但如果 你把它分层,你让背景放在背景层,角色放到角色层。这样的话,我要更新角色的时候,只会更新角色,背景层不需要变。让CPU干的事情更少了,性能自然而然 就提升了。

第二,context.drawImage。不要去缩放图片,我们一开始就犯了一个错误,我们的美工做的图片始终跟我们不一致,然后我们要去缩放图 片。因为本身设备它的图片大小是这样的,我们必须按比率缩放图片。缩放图片以后发现在低端设备下,比方说iPad或者iPhone就会非常卡,我们就想为 什么?就进行代码上的分析,当用这个方法时候,花费的时候特别多。

第三,requestAnimationFrame。这是专门为渲染优化的一个方法。它本身的原理是这样的,当浏览器每过一桢的时候,会触发这个方 法,当我在触发的时候,Canvas得到这个浏览器已经准备好做下桢的事情。如果用传统的方法,是不会去考虑你更多的东西,它只会知道我过了多少时间,我 就要执行。假如说用户之前被阻塞了,每10秒钟执行这一方法,在10秒之内,实际他之前的事情还没有做完,然后这个事情就会被延后。它就是为了动画看上去 更流畅而优化的,因为每一桢的时候,它就告诉你说,你可以做一些事情。(文:infoq

QQ同时在线人数地图发布 沿海“大亮”全球最“光亮”的地方

来源: 太平洋电脑网

【PConline 资讯】腾讯发布了一幅QQ同时在线人数“亮点”地图,用地图上的“亮点”展示大中华地区QQ同时在线用户的数量。根据地图显示,腾讯QQ同时在线人数历史最高峰是:1.6亿左右。而在今天早上10:26分左右,则有1.3亿QQ用户同时在线。

值得注意的是,东南沿海的省份一片“大亮”,表示这些地区有大量的QQ在线用户。

QQ同时在线人数地图

腾讯发布QQ同时在线“亮点”地图

点击这里查看QQ同时在线人数地图

腾讯的这幅地图不由得让笔者想起了全球最大的社交网站Facebook也发布过一幅Facebook社交峰值地图,地图上越亮的地方表示使用Facebook的用户越多。(因众所周知大原因,国内用户无法正常访问Facebook)

而这幅地图上唯一暗淡的几个地方就是:南美的亚马逊森林、非洲中部及撒哈拉沙漠、中国大陆。

QQ同时在线人数地图

Facebook社交活跃度地图

此外,网络上也流传着一幅反映全球各地区繁华程度的热感地图,地图上越亮的地方表示越繁华、人口越多、用电量越大。

QQ同时在线人数地图

北美、欧洲、印度和东亚是全球最“光亮”的地方。

Oracle Number Format

Here you will find list of Oracle Number Format elements:

Format element Description
, Returns a comma in the specified position it is possible to specify multiple commas.
. Returns a period in the specified position.
$ Returns a leading dollar sign.
0 Returns leading or trailing zeros (0).
9 Returns value with the specified number of digits with a leading space if positive or with a leading minus if negative.
B Returns blanks for the integer part of a fixed point number when the integer part is zero.
C Returns in the specified position the ISO currency symbol. Defoult currency value is set in the NLS_ISO_CURRENCY parameter.
D Returns in the specified position the decimal character, which is the current value of the NLS_NUMERIC_CHARACTER parameter. The default is a period.
EEEE Returns a value in scientific notation.
FM Returns a value without blanks (leading and trailing).
G Returns in the specified position the group separator. The defoult value is set in the NLS_NUMERIC_CHARACTER parameter. You can specify multiple group separators in a number format model.
L Returns in the specified position the local currency symbol. Defoult currency value is set in the NLS_CURRENCY parameter.
MI Returns negative value with a trailing minus (-)  sign.

Returns positive value with a trailing blank. 

PR Returns negative value in <>.

Returns positive value with a leading and trailing blank.

RN Returns a value as Roman numerals in uppercase.

Allowed value is an integer between 1 and 3999. 

rn Returns a value as Roman numerals in lowercase.

Allowed value is an integer between 1 and 3999.

S Returns value with a leading or trailing minus (-) or plus (+) sign.
TM The text minimum number format model returns the smallest number of characters possible. This element is case insensitive.
U Returns in the specified position the defoult currency symbol. The current value of the NLS_DUAL_CURRENCY parameter.
V Returns a value multiplied by 10n and if necessary, round it up.
X Returns the hexadecimal value of the specified number of digits. If the specified number is not an integer, Oracle Database will round it to an integer.

In examples below are shown conversions from number to char with different numbers and format elements.

SELECT TO_CHAR(number, 'format_element')
  FROM dual;
number ‘format_element’ results
-55555 55555S '55555-'
0 99.99 ' .00'
+0.5 99.99 ' .50'
-0.5 99.99 ' -.50'
+0.55 90.99 ' 0.55'
-0.5 90.99 ' -0.50'
0 9999 ' 0'
+222.55 999.99 ' 222.55'
-222.55 999.99 '-222.55'
+222.55 FM999.09 '222.55'
+555.0 FM999.009 '555.00'
+55.55 L99.99 ' $55.55'
+55.5 FML99.9 '$55.5'

SQL Performance Tuning

一年不到赌博网站“通吃”六千万 被查处

 来源: 钱江晚报

“钱就好像是天上掉下来一样,每天无数的人排队往账户里面打钱,多到我都有点怕了。”

说这话的,叫冯庚辉,他办的游戏网站自从和赌博沾边后,不到一年就像蚂蟥一样,从数千玩家身上吸走6600多万巨资。

“坐在电脑前面玩的时候,真就以为那些游戏金币只是一串数字而已,好像不是用钱买来似的,输掉根本不心疼了。”

说这话的,是蒋女士,全职太太;在冯庚辉办的游戏网站里,不知不觉中,她就输掉了200多万。

在采访台州“7080游戏中心”网络赌博案中,记者听到了这样两句话。这两句话浓缩起来就是一个词:疯狂!

网站上线时间,和北京奥运同一天

冯庚辉是台州黄岩人,80后,读书成绩一般,上了个二流大学,学什么成绩都不好,但有一样好:游戏打得好。

索性,找工作也不顺利的他,决定靠游戏活着。或者帮人代练,把一个游戏角色迅速练成满级,然后卖掉换钱;或者当“金币农夫”,把游戏中打出来的金币和极品装备卖掉换钱。

“生意”好的时候,他能月入一两千,维持生计;而最困顿时,每一天只舍得买一两包泡面充饥。

但冯庚辉总觉得,总有一天一切会改变的,正如同为了一件极品装备,只要坚持刷BOSS很多遍总能刷到。

2008年,机会来了。

靠着游戏,他最终认识了一个温州朋友,对方答应合作,大家一起搞一个棋牌网站;温州人出钱,冯庚辉负责营销推广拉玩家。

不到一个月时间,这个名为“7080游戏中心”的娱乐平台就开发了出来,在2008年8月8日正式上线了。

“和北京奥运会的开幕时间是一样,就想着等以后年纪大了,老糊涂时,还能记得这个日期。”回忆起这些,坐在看守所会见室内的冯庚辉居然还笑了。

下棋打牌不赚钱,那就干脆赌吧

游戏平台上线后,冯庚辉很快笑不出来了,网站没什么人气,在线人数一天比一天少。勉强坚持了快两年,终于撑不下去了。

这是冯庚辉不能接受的,梦想刚起步,怎能就这么破灭?

他发现,吸引玩家的,不一定非是大型网络游戏,而恰恰是一些小游戏,尤其是一些“碰运气”,有点“带彩”的小游戏,玩家最愿意买单。

犹豫再三,他下了决心:把游戏平台改造成赌博平台。

2011年初,改头换面的“7080游戏中心”重新上线。名义上还是棋牌类游戏网站,不过,现在游戏中可以“押宝”了。

事实证明,靠着和赌博沾边,网站迅速火了;而最火的游戏种类,恰恰就是不需要一点点技巧的“比大小”:4份扑克牌中,玩家选一份你认为可能会是点数最大的牌组,押上一定的游戏币,随后游戏系统开牌;猜对了,不仅能拿回本金,还可以赚到三倍的游戏币。

到后来,网站还进一步“升级”,推出了玩家自主坐庄的功能,拥有一定数量游戏币的“财大气粗”型玩家,可以自己“开房间”,请其他玩家一起来赌;玩家数量不限,可以很多人同时押同一组牌。

这下,输赢就大了,刺激也就更大了。据了解,输赢最大的一盘有十五六万。

全职妈妈“疯”了,买游戏币一掷50万

蒋女士就是被刺激到上瘾的一个玩家。

她是全职妈妈,老公在外做小买卖,孩子一去上学她就没事了,大多时间一个人在家,无所事事。

去年3月份,有朋友向她介绍了 “7080游戏中心”。不过,她很快发现,想要参与其中,还得花钱买游戏币。

按照游戏平台上的介绍,蒋女士联系了公司的客服,3000元钱打到公司账户,她的游戏账号里多了1亿个游戏币。

本以为自己挺“有钱”,但进到游戏里,蒋女士才知道,这点游戏币,不过是很多玩家的一个零头,“都不好意思和人打招呼。”

一开始,她押得比较小,每次不过1万游戏币,可渐渐地,“看到别人一次就赢走几亿的游戏币,就觉得眼红啊,也开始越押越多,从几千万到1个亿。有时候几盘下来,刚买的1亿游戏币就输完了,那种时候,哪里会觉得这些游戏币,都是钱换的。”

为了翻盘,蒋女士不断再买。最多的一次,她从自己的银行卡上划出了50万元。很快,她就把家里的200多万元积蓄全部抛进了这个游戏。

为了养肥“黄牛”,客服电话故意不通

冯庚辉知道,网站要“越做越大”,必须不断吸引人来玩,有游戏币“黄牛”,能帮他们“开发市场”。

这些“黄牛”,能帮网站拉来更多的赌客,他们的“利润”,则来自于倒卖游戏币,比如1亿游戏币,他们从网站买来是3000块钱,但是卖给玩家,则要价3400元。

为了养肥“黄牛”,游戏平台的客服电话时不时会“打不通”,着急买币下注的玩家不得已只能去“黄牛”那里买。和“黄牛”们的密切合作,恰恰就是冯庚辉在“网站营销”上的高明之处。案发之后,警察查实的“黄牛”,就有139个。

很快,网站就聚拢了大量人气,而其中的活跃玩家,就有3000多个。从他们身上,不到一年网站就吸走6600多万巨资,而整个案件的案值,已超10亿。冯庚辉分到了1000多万元。

一夜暴富后,他花了100多万买了奔驰轿车。随后,人生第一次出国,直飞越南,在当地的赌场里豪赌,几天输掉500多万。

“这些钱输掉都没有感觉,一点都不心疼,因为来得太容易了。”在看守所里,冯庚辉这样对记者说。

冯庚辉曾告诫也分到了钱的同伴们,别太张扬,少去KTV、酒吧,免得引人注意。

不过,台州警方已经注意到了这个赌博平台……

全球首封中文域名电子邮件今日发出

北京晚报报讯(记者贾中山)今天上午10时,中科院钱华林研究员使用多语种电子邮箱地址“钱华林@中科院.中国”,向北京、香港、台湾、新加坡、德国等多个地方的互联网专家发出了电子邮件,这也是首封跨越全球的国际化多语种邮箱电子邮件。

网民用母语作为自己电子邮箱的地址,最大的好处就是方便记忆和使用。钱华林告诉记者,普通公民想使用这种多语种的电子邮箱服务,首先需要自己单位拥有中文域名,其次是单位的邮箱系统支持多语种的电子邮箱标准。“我过去的邮箱名称是hualinqian或者是qianhualin ,这都不是很方便记忆。现在很多单位都有中文域名,比如我们中科院的中文域名是‘中科院.中国’,在这个系统内,我现在就拥有‘钱华林@中科院.中国’这个电子邮箱。今后,我们将加大推广力度,同时希望新浪等向公众提供邮箱服务的公司,也支持我国参与制订的国际化的多语种邮箱电子邮件标准。”

Mozilla推HTML网页开发工具Thimble

来源: cnbeta

Mozilla今天推出了一款基于网页的新开发工具Thimble,采用可视化的HTML编辑器帮助用户以一种轻松愉快的方式进行简单的网页编程,并能够及时的提醒用户代码中的错误, 并会提供简单的代码说明。编程者可以自定义网站“白手起家”或者根据模版进行“DIY修改”,完成之后还能跟全球所有的编程爱好者进行分享提供下载连接。mozilla thimble

Thimble 提供的是双面板设计,左侧为带语法高亮的代码编辑,右侧可实时预览网页效果,如果用户对效果满意,可通过右上方的蓝色 “Publish” 按钮一键发布,还可通过提供的Twitter 发布按钮与好友分享你的设计成果。

在Thimble旁边也提供了修正版Webmaker.org的网页连接,可以找到更多的Thimble相关的工程,可 以参考别人的代码不断完善自己的代码。对此Mozilla宣称:“让更多的人参与到网页的开发中来,来创造更加优秀的更加自由的网络教育平台。”有兴趣的编程者可以点击这里

哪个浏览器更适合用来玩 HTML5 游戏

Scirra 拥有很多 HTML5 游戏方面的经验,这篇文章是由该网站总结的,告诉你哪些浏览器用来运行 HTML5 游戏能得到最佳的体验。

注意: 术语 硬件加速 意味着使用某些专用图形处理器来渲染游戏,其目的是为了改善性能。如果桌面浏览器不支持硬件加速,那么可能非常的慢,而手机浏览器如果不支持的话,将完全无法运行。

总结

Scirra 推荐使用 Google Chrome 或者 Mozilla Firefox 作为 HTML5 游戏的最佳体验浏览器,两者在功能和性能上表现相当。

最佳的手机浏览器是:Safari for iOS, Google Chrome for Android (beta 版, and for Android 4+ only), 或者是 Blackberry Playbook 浏览器。为了在 iOS 和 Android 提供更好的性能表现,Scirra 强烈建议使用CocoonJS 或 directCanvas 开发游戏,而 PhoneGap 实在是太慢了,无法用来发布游戏,只适合做 app。

桌面浏览器

Google Chrome
– 支持硬件加速和 WebGL
– 非常好的音频支持,支持 Web Audio API
– 超快的 JavaScript 引擎
– 得分: 10/10

Mozilla Firefox
– 支持硬件加速和 WebGL
– 良好的音频支持,但不支持 Web Audio API
– 非常快的 JavaScript 引擎
– 得分: 9/10

Internet Explorer
– 非常沮丧的兼容性问题:IE 6, 7, 8 完全无法工作,新版本更新缓慢,大量用户使用老版本,XP 不支持 IE9+
– 支持硬件加速,但不支持 WebGL,速度不及 Firefox 和 Chrome
– 良好的音频支持,不支持 Web Audio API,不支持免费的 Vorbis 编码器
– 非常快的 JavaScript 引擎
– 一些 IE10 不支持,但是在 Firefox 和 Chrome 支持的特性:Gamepad support, fullscreen API support, high-resolution timers, WebGL.
– 得分: 7/10

Opera
– 默认不支持硬件加速,需要手工打开
– 良好的音频支持,不支持 Web Audio API
– 非常快的 JavaScript 引擎
– 得分: 5/10

Safari
– 支持 Mac 上的硬件加速,但 Windows 下不支持,WebGL 需要手工打开
– 音频支持一般,据说将很快支持 Web Audio API
– 快速的 JavaScript 引擎
– 得分: 4/10 for Windows, 7/10 for Mac

手机浏览器

目前还没有对手机上的浏览器进行音频支持方面的测试。

Safari for iOS
– 支持硬件加速,但如果使用 PhoneGap 就不支持
– 很差劲的音频支持
– JavaScript 引擎速度尚好
– 得分: 6/10

Android stock browser
– 不支持硬件加速
– 差劲的音频支持
– 偶尔还有会毛刺
– Android 2.x 不支持多点触摸
– 得分: 3/10, not generally useful

Chrome for Android beta (Android 4+)
– 支持硬件加速
– 偶尔会崩溃
– 得分: 5/10

Firefox for Android
– 不支持硬件加速
– 得分: 2/10, too slow to be useful

Blackberry Playbook browser
– 支持 Playbook OS 2.1+ 下的硬件加速
– 在低成本的设备上运行速度居然非常快
– 得分: 6/10

Internet Explorer for Mobile (Windows Phone)
– 支持硬件加速,但是在某些情况下仍然很慢
– 不支持多点触摸
– 得分: 2/10

英文原文OSCHINA原创翻译

哪种语言的密码更容易破解?

虽然很多人都不希望自己的密码被别人知道,但是往往他们最终选择的密码又都是可以被人破解的, 像”12345″。虽然这种类型的密码便于用户记住,但是同样的,它也很容易被攻击者破解,特别是在那些带有自动化的常用选择列表的项目中。剑桥大学计算机科学家Joseph Bonneau最近发表一篇分析近七千万雅虎用户密码的分析报告。

报告中的一张表格就显示了在经过1000次猜测尝试后多少用户密码被破解的比例图。估计非职业语言家们看到这张表格的时候,又会很逗趣地感叹:“怎么中国人民的密码设置地这么机密,而人家印度人却那么差劲!”

另外还有一个特别有趣的现象是, 当使用一本通用字典来破解密码时,破解比例相差不大。从图中可以看出,当使用中文字典破解中国账户密码的时候,这个破解比例大约为4%,而当使用通过自动 点来进行破解时,这个比例将会降到2.9%。似乎每一种语言的使用者都有其相似的偏好。

本文转载自: cnbeta
(本站只作转载,不代表本站同意文中观点或证实文中信息)

DNS 服务器 DNSPod (简称DNSPod-sr)正式开源发布

DNSPod Security Recursive DNS Server
Officially released open-source

关于

dnspod-sr 是一个运行在 Linux 平台上的高性能的递归 DNS 服务器软件,具备高性能、高负载、易扩展的优势,非 BIND 等软件可以比拟。

特性

  1. 高性能,比所有流行的开源 DNS 软件性能高出2倍以上
  2. 安全,能抵御一般攻击
  3. 稳定性,有效降低解析失败率
  4. 主动刷新缓存,响应速度更快
  5. 易于扩展,非常容易部署
  6. 防污染,能够正确解析被污染域名

性能

dnspod-sr 依托于 DNSPod 多年运营和优化 DNS 服务的经验,针对国内复杂的网络情况,对递归 DNS 进行了一系列的优化,比较其他开源软件,性能得到大幅提升。

测试环境

千兆网卡,4核 CPU,4G 内存,Linux 64位系统。

性能测试

  • dnspod-sr: 15万 qps
  • BIND 9.9: 7万 qps
  • unbound 4.7: 8万 qps

解决方案

  1. 架设 dnspod-sr 集群,替换各大运营商目前基于 BIND 的陈旧方案,减少运营成本
  2. 公司、学校、政府等组织内部 DNS,解析外部不可见的私有域名,提高上网速度

快速开始

下载源码:

git clone https://github.com/DNSPod/dnspod-sr.git cd dnspod-sr 

或者下载压缩包:

https://github.com/DNSPod/dnspod-sr/zipball/master 

编译源码:

make 

运行

./dnspod-sr 

Roadmap

  • 支持集群式部署

开源协议

dnspod-sr 在 BSD License 下发布。

中移动酿新规:视频业务分成改为按流量付费

来源: 经济观察报中移动原本应在5月17日电信日时推出的一项资费调整计划但至今还未公布——该公司欲将视频业务中与合作伙伴的结算方式从原来的按点击量付费改为按流量付费。中移动不再补贴流量,其合作伙伴的收入可能因此提高。本报从与中移动有生意往来的三家公司处分别证实了这一消息。截止到发稿前,中移动尚未对本报做出回复。

据悉,中移动也正试图加强流量运营标准,除了给各地方省公司的流量经营任务都有很大提高外,中移动2012年给视频业务下的业务指标比2011年翻了一番,达到20亿元。

手机视频被认为是移动互联网时代流量消耗的主要应用,但其至今不能产生广告模式收入,产业链上的参与者都在勒紧裤腰带坚持。

据悉,中移动要促进流量的初衷是因其现在的流量使用效率只有15%,中移动要把冗余的资源利用起来。“电信业里流量就意味着收入,中移动做这件事是正常的。”中国通信业知名观察家项立刚说。

讳莫如深

“现在,很多中移动的视频合作方都知道可能要更改分成模式了。”100TV董事长兼CEO刘述尧说,果真改成按流量分成,则必然也会更改用户的流量套餐政策。56网副总裁李浩也透露,以后按流量分成“是必然的趋势”。

到目前为止,尽管有很多公司跟中移动的视频业务有分成收入,但没一家赚钱,电信、联通的视频也是一样情况。很多人的担心是,一旦改成按照流量分成模式,用户会不再敢点击——用户会很担心中间不透明,例如一个标明是3M的视频,下载完了结果是5M,也无法再退。

但移动互联网时代,没有人能不遵守运营商制定的游戏规则。

在整个手机视频(特指电信运营商网络的视频服务)的利益链条中包括大概几部分利益角色:电信运营商、视频牌照方(广电发放牌照)、CP(内容提供商)和内容分销渠道商。

据悉,目前中国移动手机付费视频目前共有7个牌照合作方,合作方式包括垂直栏目和品牌合作两种。

“垂直栏目业务”由中移动主导进行栏目规划,对内容采用垂直分类组成,如影视、体育等,中移动在收入中占绝对大头60%,运营支撑方占10%,而内容提供方则只占30%。这部分业务的用户可以通过6元包月不限流量的形式观看。

“品牌合作业务”,是以手机付费视频合作伙伴的品牌进行业务形式分类,如CCTV手机付费视频等。这部分用户按照包月形式购买,中移动仍然在分成中占60%,合作方占40%分成,例如土豆网。

艾瑞咨询《2011-2012年中国手机付费视频行业研究报告》中显示,2011年手机付费视频前向用户收费产生的市场总规模(不含CMMB式)为19亿。三大运营商中中移动一家独大,仅流媒体式手机付费视频的市场规模已经达到11亿。

中移动的视频业务已经运营了三年,最近可能会做一个模式上的调整,目前还在商讨阶段。此前的模式是,用户支付包月(6元~12元不等)之后没有流量上限,新的模式是考虑将流量和内容打包,可能会设置流量上限,也可能给用户的政策是看多少送多少之类的促销。

一位业内知情者透露,流量运营是电信运营商接下来一个比较大的课题,因为当进入3G时代后,网速提高了,大家的手机终端也更快了,如何让用户把3G网络使用起来,是中移动的当务之急——他们必须去看一些大数据量的业务,视频无疑是重中之重。但相应的调整目前还不知道具体方案,估计七八月份推出的可能性较大。

很差钱

这是一个封闭的价值链,处在最顶端的当然是中移动。在中移动之下,是手机视频的牌照方。

事实上,掌握在广电系媒体手中的视频牌照就一张“长期饭票”——那些没有牌照的CP必须将自己的视频内容交给这些牌照方审核,审核费为收入的5%。

目前获得集成类牌照的有9家,并且分别通过旗下实体进行运营。此外乐视网和土豆网获得了自有类牌照,即不能与CP进行内容合作,没有审核其他CP的权力,只能自己生产内容。

在牌照方的下游,就是CP们,目前主要是互联网视频公司、传统电视台和内容制作公司——尤其以视频网站为主。