国际板改变不了赴美上市

    为什么互联网公司纷纷赴美上市?

    首先,很多互联网企业都是通过获得风险投资而高速发展,这些风险投资很大一部分都是来自海外(主要是美国)风投机构。为了让这些风投能顺利地退出,很多互联网公司都以离岸公司方式注册,如在国际免税天堂开曼群岛注册。但是,根据A股的制度安排,这些以离岸公司方式注册的企业,名义上属于外资企业,在政策上无法在国内资本市场上市。“如果国际板推出,制度上的障碍才能解除。”

    其次,美国资本市场上市采取的是注册制(只要交易所同意就能上市,国内采取的是审核制,需要得到监管部门批准),只设增长门槛不设盈利门槛。也就是说,只要公司业务高速增长,即使是亏损的公司,也能在纳斯达克上市。如去年底登陆美国市场的优酷,就是亏损上市并得到了投资者的狂热追捧。反观国内市场,监管部门对主板、中小板、创业板设定了一套详尽的盈利、增长硬指标,入市门槛较高。尤其是创业板,硬指标的严厉程度远超美国。优酷如果要想申请在创业板上市,首先就要过盈利关。而优酷2010年第四季度财报显示,该季度优酷继续亏损570万美元。

    注册制带来的另一个有利因素,就是IPO所需要的时间短,加上很多风投机构与美国华尔街渊源颇深,运作企业上市轻车熟路,使得互联网公司在美国上市十分容易。奇虎360去年底才真正开始运作上市事宜,今年3月份就成功在纽交所上市。“这样的速度,在国内创业板上是不可能的。而一旦时机错过,互联网企业很可能就因为资金压力倒在黎明前的黑暗里。”

    此外,由于美国是互联网的中心,投资者对互联网企业估值较高,其发行市盈率并不比国内创业板低(以当当为例,在纽交所IPO融资2.72亿美元,市盈率90多倍)。加上美国资本市场还给上市企业提供了各种各样的融资工具,创业者可以不稀释股权就能募集到后续发展的资金,这对互联网创业者也有很强的吸引力。

    其实不用对比,稍微会炒股的人也明白一个互联网企业在国内上市等于要面对什么?一个国际板是改变不了现状的,不过,也算有了个模棱两可的开端吧!

电子商务的二次营销

 网上店铺商家有很多不同的方法来转化一个潜在的消费者,其中最流行而且最有效的一种方法就是通过电子商务二次营销——使用不同的策略和全自动邮件系统来跟踪放弃购物车的网站访客。

  一、什么是电子商务二次营销?

  电子商务二次营销是一种用来减少购物车废弃率的营销技术,Experian曾经做过一项研究,研究报告是“二次营销报告:连接Web行为和电子邮件营销的基准和数据分析”,报告中指出网上店铺的购物车废弃率达到56.2%,报告同时指出对放弃购物车的网站访客进行有效的二次营销可以增加访客的转化率。

  二次营销听起来好像很复杂,然而二次营销系统背后的理论和它有效实用的原因其实并不难理解,我们可以把电子商务二次营销简单地认为是这样一个过程: 我们使用传统的营销手段把访客吸引到我们的网站,如果他最终没有购买,我们就使用二次营销的战略把访客重新带回到我们网站并且把他转化成付费的消费者。

电子商务的二次营销 - 小男生 - 小男生的博客

 

  当一个访客放弃购物车时会留下一些信息,至少会留下注册时填写的的e-mail地址,我们就可以利用这些资料来跟踪访客,主要是为我们的二次营销做准备。这种类型的交互就叫做转化营销或者是电子商务二次营销。

  很多电子商务平台都提供全自动和事件触发式的方法在电子邮件中跟踪购物车废弃者。

  二、电子商务二次营销中的软销售

  在二次营销的电子邮件中,应当包含有利于提高访客转化率的相关信息,包括购物车废弃者放弃的交易细节信息,比如 废弃者放弃的产品和一个可以返回网站购物车的链接以帮助他们继续完成结算付款。所有我们所掌握的关于消费者的有价值数据都可以用到二次营销的电子邮件中, 从而使这一交互过程对消费者来说更加个性化和友好。

  你可以用一种非常友好和温和的语气来个性化定制你的电子邮件,在营销学中,这通常叫做软销售,意思是说当你在二次营销中第一次和消费者接触时,邮件要使用一种温和的为顾客服务的语气。

  顾客放弃最终结算购物车的原因可能有很多,除非你知道为什么顾客放弃购物车,否则你最好能够很温和而且能够提供帮助。不是要去“硬销售”,你需要在电子邮件中用一种温和的语气询问是不是有什么技术问题你可以帮助,这样非侵入性的沟通方式将有利于进一步二次营销。

  三、关于二次营销电子邮件内容的五点建议

  下面的一些建议可以帮助你构建一封成功的电子商务二次营销邮件。

  1、在顾客购物结算的过程中要尽早收集顾客的注册信息,这样如果最终顾客放弃结算,这些注册信息将有助于你更好地开展二次营销。

  2、使用尽可能详细的收集到的注册信息来使电子邮件更加个性化,更具有针对性。

  3、在邮件中使用一些相关(relevant)性比较强的信息,比如在邮件中放上顾客浏览过的产品的图片,然后放上一个链接帮助顾客返回到购物车结算中心从而完成结算。

  4、使用一种非侵入式的软销售沟通方式,记得要使邮件中的信息对顾客来说是有用的,问问顾客网站还可以在哪些方面改进用户的购物体验,这样要的效果要比“硬销售”好得多。

  5、提供所有你的联系方式,而且他们可能遇到了什么技术问题,所以应该在邮件中放上技术支持的链接从而帮助他们更容易的完成购物。

在中国创业,你觉得最需要有的素质是什么?

第一,要了解自己的兴趣。

第二,要了解自己的处境;

第三,要了解自己的优势劣势。

了解自己的兴趣是和第二点分不开的,有时候处境决定自己过什么样的生活,做什么工作,首先要知道自己想要什么,这点很重要。大学刚毕业的时候,不是想做什么就能做什么,是由处境决定的。所以要对自己的处境做一个冷静的分析。一个阶段只能实现一个方向嘛。另外,当你知道自己的优势和劣势,这样才能放大优势缩小劣势。还有就是很强的执行力。不要太长时间专注在一件事上。很多时候实践中的学习是最重要的。唯有实践中碰到的事才是真正学习到本领的时候。

徐静蕾的话,转载而来!

如何更好地管理时间

经常面对一大堆工作却不知如何着手去做吗?或者经常为了赶时间而忙得焦头烂额吗?

这是因为你没有管理好自己的时间,至少这是原因之一。
这是很多管理人员普遍会遇到的问题,更为糟糕的是,工作量却还在不断地增加。在最后关头,我们经常为能否在规定时间之前完成工作而紧张不安,这反过来又会影响我们的工作品质。

加强工作的条理性,可以让你做到有条不紊。

提前计划:这显然是最基础的,但是关键是要持之以恒,并要根据情况不断修正既定计划。既要制定长期计划,又要制定每天的工作表。医疗公司Baxter(India)Pvt的人力资源总监昂姆?格姆布(Ongmu Gombu)说,把要做的事情纳入日程表内,“不要让事情左右日程表”。格姆布说,在日程表上,按照优先顺序将要完成的工作列出来,将“最紧急的工作”放在最前面。提前计划可以帮助你预先规划好周期性的任务。例如,公司财务部门的管理人员可以提前为财年年底的例行工作做准备。资讯技术解决方案提供商DesignTech Systems Ltd的人力资源部副经理莫甘娜?库卡尼(Meghana Kulkarni)说,“任务完成之后,在旁边打上勾,这样你就知道还有什么工作没有做。”。

按优先顺序排列要做的工作:接到任务之后,弄清楚首先需要做什么。如果你决定不下来的话,去问你的上司。Prithvi Information Solutions Ltd运营部主管纳拉辛哈?拉奥(P.V. Narasimha Rao)说,给任务排序的另一个办法是,弄清楚“哪件事对公司的影响更大”。正确排序至关重要的步骤是,即使在时间宽裕的情况下,也要尽量把工作往前赶。如果不给自己多留一些时间,在最后一刻才开始工作,你往往会手忙脚乱,而且工作品质一般不高。

保持冷静,调整优先顺序:经常发生这样的事:你苦心设计的日程表被你无法掌控的事情彻底打乱。这时候,不要乱了方寸。保持冷静,因为神经紧张、手足无措很可能让你彻底懵掉。做几次深呼吸,先从最紧急的工作入手。如果最紧急的工作有两个,而你不知道该先做哪一个,那么用抛硬币的办法随便选一个。拉奥说,这样做,至少可以让你立刻开始向目标迈进,而不是耽误时间去琢磨哪个工作更重要。

寻求帮助或委派别人去做:如果突然出现意外情况,但所有工作必须马上完成。这时候可以向同事求助。这个办法可以减轻你的压力,帮助你把工作做得更好。Lovely Professional University人力资源主管马尼什?古普塔(Manish Gupta)说,当然,“大多数工作还是需要寻求説明的人自己来做。”这是双向的,在同事需要你的时候你也要帮对方一把。更为理想的是,在你有时间的时候,主动去帮助同事。如果你是一位主管,你可以在平时就锻炼团队成员,授权他们自己做出决断,这样,有需要的时候,你就可以依靠他们了。

了解自己的能力:有时候,为了得到主管的褒奖,我们会额外接受一些任务。虽然自告奋勇接受额外任务是一件好事情,但要注意量力而行,不要贪多。

额外接活的时候,只选择那些不会影响你日常工作品质的项目。专家表示,关键的是品质,不是数量。

如果主管经常交给你超出你职责范围的任务,和他(或她)谈一谈。孟买都市医疗公司(Metropolis Healthcare Ltd.)的人力资源总监罗素?罗萨里奥(Russell Rozario)说,如果被动地接受这些项目而不跟主管沟通你的实际情况,“就会推高他们的期望值,进而增加你的压力”。

Google Gravity JS代码

体验:http://mrdoob.com/projects/chromeexperiments/google_gravity/

  1. var canvas;
  2. var delta = [0,0];
  3. var stage = [window.screenX,window.screenY,window.innerWidth,window.innerHeight];
  4. getBrowserDimensions();
  5. var isRunning = false;
  6. var isMouseDown = false;
  7. var worldAABB;
  8. var world;
  9. var iterations = 1;
  10. var timeStep = 1/25; 
  11. var walls = new Array();
  12. var wall_thickness = 200;
  13. var wallsSetted = false;
  14. var mouseJoint;
  15. var mouseX = 0;
  16. var mouseY = 0;
  17. var mouseOnClick = new Array();
  18. var timer = 0;
  19. var elements = new Array();
  20. var bodies = new Array();
  21. var properties = new Array();
  22. var gWebSearch;
  23. var imFeelingLuckyMode = false;
  24. var resultBodies = new Array();
  25. var orientation = { x: 0, y: 1 };
  26. init();
  27. if (location.search != "")
  28. {
  29.         var params = location.search.substr(1).split("&")
  30.         for (var i = 0; i < params.length; i++)
  31.         {
  32.                 var param = params[i].split("=");
  33.                 if (param[0] == "q")
  34.                 {
  35.                         document.getElementById(‘q’).value = param[1];
  36.                         run();
  37.                         break;
  38.                 }
  39.         }
  40. }
  41. // GOOGLE API
  42. function onLoad()
  43. {
  44.         gWebSearch = new GwebSearch();
  45.         gWebSearch.setResultSetSize(GSearch.SMALL_RESULTSET);
  46.         gWebSearch.setSearchCompleteCallback(null, onWebSearch);
  47.         if (document.getElementById(‘q’).value != ”)
  48.                 search();
  49. }
  50. function onWebSearch()
  51. {
  52.         if(imFeelingLuckyMode)
  53.         {
  54.                 location.href = gWebSearch.results[0].unescapedUrl;
  55.                 return;
  56.         }
  57.         
  58.         for (var i = 0; i < gWebSearch.results.length; i++)
  59.                 addResult(gWebSearch.results[i]);
  60. }
  61. //
  62. function init()
  63. {
  64.         canvas = document.getElementById(‘canvas’);
  65.         
  66.         document.onmousedown = onDocumentMouseDown;
  67.         document.onmouseup = onDocumentMouseUp;
  68.         document.onmousemove = onDocumentMouseMove;
  69.         document.ondblclick = onDocumentDoubleClick;
  70.         
  71.         document.onkeypress = onDocumentKeyPress;
  72.         document.addEventListener(‘touchstart’, onDocumentTouchStart, false);
  73.         document.addEventListener(‘touchmove’, onDocumentTouchMove, false);
  74.         document.addEventListener(‘touchend’, onDocumentTouchEnd, false);
  75.         window.addEventListener( ‘deviceorientation’, onWindowDeviceOrientation, false );
  76.         // init box2d
  77.         
  78.         worldAABB = new b2AABB();
  79.         worldAABB.minVertex.Set(-200, -200);
  80.         worldAABB.maxVertex.Set( screen.width + 200, screen.height + 200);
  81.         world = new b2World(worldAABB, new b2Vec2(0, 0), true);
  82.         
  83.         // walls        
  84.         setWalls();
  85.         // Get box2d elements
  86.         
  87.         elements = getElementsByClass("box2d");
  88.                 
  89.         for (i = 0; i < elements.length; i++) {
  90.                 var element = elements[i];
  91.                 properties[i] = findPos(element);
  92.                 properties[i][2] = element.offsetWidth;
  93.                 properties[i][3] = element.offsetHeight;
  94.         }
  95.         
  96.         for (i = 0; i < elements.length; i++) {
  97.                 var element = elements[i];
  98.                 element.style.position = ‘absolute’;
  99.                 element.style.left = properties[i][0] + ‘px’;
  100.                 element.style.top = properties[i][1] + ‘px’;
  101.                 // element.style.backgroundColor = ‘#ffff00’;
  102.                 element.onmousedown = onElementMouseDown;
  103.                 element.onmouseup = onElementMouseUp;
  104.                 element.onclick = onElementClick;
  105.                 
  106.                 bodies[i] = createBox(world, properties[i][0] + (properties[i][2] >> 1), properties[i][1] + (properties[i][3] >> 1), properties[i][2] / 2, properties[i][3] / 2, false);                
  107.         }
  108. }
  109. function run() {
  110.         isRunning = true;
  111.         setInterval(loop, 25);        
  112. }
  113. //
  114. function onDocumentMouseDown() {
  115.         isMouseDown = true;
  116.         return false;
  117. }
  118. function onDocumentMouseUp() {
  119.         isMouseDown = false;
  120.         return false;
  121. }
  122. function onDocumentMouseMove() {
  123.         if (!isRunning)
  124.                 run();
  125.         mouseX = window.event.clientX;
  126.         mouseY = window.event.clientY;
  127. }
  128. function onDocumentDoubleClick() {
  129.         reset();
  130. }
  131. function onDocumentKeyPress(event) {
  132.         if (event.charCode == 13)
  133.                 search();
  134. }
  135. function onDocumentTouchStart( event ) {
  136.         if(event.touches.length == 1) {
  137.                 event.preventDefault();
  138.                 if (!isRunning)
  139.                         run();
  140.                 // Faking double click for touch devices
  141.                 var now = new Date().getTime();
  142.                 if (now – timeOfLastTouch  < 250) {
  143.                         reset();
  144.                         return;
  145.                 }
  146.                 timeOfLastTouch = now;
  147.                 mouseX = event.touches[0].pageX;
  148.                 mouseY = event.touches[0].pageY;
  149.                 isMouseDown = true;
  150.         }
  151. }
  152. function onDocumentTouchMove( event ) {
  153.         if(event.touches.length == 1) {
  154.                 event.preventDefault();
  155.                 mouseX = event.touches[0].pageX;
  156.                 mouseY = event.touches[0].pageY;
  157.         }
  158. }
  159. function onDocumentTouchEnd( event ) {
  160.         if(event.touches.length == 0) {
  161.                 event.preventDefault();
  162.                 isMouseDown = false;
  163.         }
  164. }
  165. function onWindowDeviceOrientation( event ) {
  166.         if ( event.beta ) {
  167.                 orientation.x = Math.sin( event.gamma * Math.PI / 180 );
  168.                 orientation.y = Math.sin( ( Math.PI / 4 ) + event.beta * Math.PI / 180 );
  169.         }
  170. }
  171. //
  172. function onElementMouseDown() {
  173.         mouseOnClick[0] = window.event.clientX;
  174.         mouseOnClick[1] = window.event.clientY;        
  175.         return false;
  176. }
  177. function onElementMouseUp() {
  178.         return false;
  179. }
  180. function onElementClick() {
  181.         var range = 5;
  182.         
  183.         if (mouseOnClick[0] > window.event.clientX + range || mouseOnClick[0] < window.event.clientX – range && mouseOnClick[1] > window.event.clientY + range || mouseOnClick[1] < window.event.clientY – range)
  184.                 return false;
  185.         
  186.         if (this == document.getElementById(‘btnG’)) search();
  187.         if (this == document.getElementById(‘btnI’)) imFeelingLucky();
  188.         if (this == document.getElementById(‘q’)) document.f.q.focus();
  189. }
  190. // API STUFF
  191. function search() {
  192.         if (!isRunning)
  193.                 run();
  194.         
  195.         onDocumentDoubleClick(); // clean
  196.         gWebSearch.execute(document.getElementById(‘q’).value);
  197.         return false;
  198. }
  199. function imFeelingLucky() {
  200.         imFeelingLuckyMode = true;
  201.         gWebSearch.execute(document.getElementById(‘q’).value);
  202.         return false;        
  203. }
  204. function addResult(data) {
  205.         var element = document.createElement(‘div’);
  206.         element.innerHTML = ‘<div><h3 class=r><a href="’ + data.unescapedUrl + ‘" class=l onmousedown="return clk(this.href,\’\’,\’\’,\’res\’,\’1\’,\’&amp;sig2=3Ti89FTuSYfE6a-5k1jjKQ\’)">’ + data.title + ‘</a></h3><span style=display:inline-block><button class=w10 title="Promote"></button><button class=w20 title="Remove"></button></span><div class="s">’ + data.content + ‘<br><cite>’ + data.visibleUrl + ‘</cite></div>’;
  207.         
  208.         canvas.appendChild(element);
  209.         properties.push([Math.random() * (window.innerWidth / 2),-200,600,element.offsetHeight]);
  210.         
  211.         var i = properties.length – 1;
  212.         element.style.position = ‘absolute’;
  213.         element.style.left = 0 + ‘px’;
  214.         element.style.top = -100 + ‘px’;
  215.         element.style.backgroundColor = ‘#ffffff’;
  216.         element.onmousedown = onElementMouseDown;
  217.         element.onmouseup = onElementMouseUp;
  218.         element.onclick = onElementClick;
  219.         elements[i] = element;
  220.         resultBodies.push( bodies[i] = createBox(world, properties[i][0] + (properties[i][2] >> 1), properties[i][1] + (properties[i][3] >> 1), properties[i][2] / 2, properties[i][3] / 2, false, element) );
  221.         
  222. }
  223. function reset() {
  224.         for (i = 0; i < resultBodies.length; i++) {
  225.                 var body = resultBodies[i]
  226.                 canvas.removeChild( body.GetUserData().element );
  227.                 world.DestroyBody(body);
  228.                 body = null;
  229.         }
  230.         
  231.         resultBodies = new Array();
  232. }
  233. //
  234. function loop() {
  235.         if (getBrowserDimensions())
  236.                 setWalls();
  237.         delta[0] += (0 – delta[0]) * .5;
  238.         delta[1] += (0 – delta[1]) * .5;
  239.         
  240.         world.m_gravity.x = orientation.x * 350 + delta[0];
  241.         world.m_gravity.y = orientation.y * 350 + delta[1];
  242.         mouseDrag();
  243.         world.Step(timeStep, iterations);        
  244.         
  245.         for (i = 0; i < elements.length; i++) {
  246.                 var body = bodies[i];
  247.                 var element = elements[i];
  248.                 
  249.                 element.style.left = (body.m_position0.x – (properties[i][2] >> 1)) + ‘px’;
  250.                 element.style.top = (body.m_position0.y – (properties[i][3] >> 1)) + ‘px’;
  251.                 var rotationStyle = ‘rotate(‘ + (body.m_rotation0 * 57.2957795) + ‘deg)’;
  252.                 element.style.WebkitTransform = rotationStyle;
  253.                 element.style.MozTransform = rotationStyle;
  254.                 element.style.OTransform = rotationStyle;
  255.         }
  256. }
  257. // .. BOX2D UTILS
  258. function createBox(world, x, y, width, height, fixed, element) {
  259.         if (typeof(fixed) == ‘undefined’)
  260.                 fixed = true;
  261.         var boxSd = new b2BoxDef();
  262.         if (!fixed)
  263.                 boxSd.density = 1.0;
  264.         boxSd.extents.Set(width, height);
  265.         var boxBd = new b2BodyDef();
  266.         boxBd.AddShape(boxSd);
  267.         boxBd.position.Set(x,y);
  268.         boxBd.userData = {element: element};
  269.         return world.CreateBody(boxBd)
  270. }
  271. function mouseDrag() {
  272.         // mouse press
  273.         if (isMouseDown && !mouseJoint) {
  274.                 var body = getBodyAtMouse();
  275.                 
  276.                 if (body) {
  277.                         var md = new b2MouseJointDef();
  278.                         md.body1 = world.m_groundBody;
  279.                         md.body2 = body;
  280.                         md.target.Set(mouseX, mouseY);
  281.                         md.maxForce = 30000.0 * body.m_mass;
  282.                         md.timeStep = timeStep;
  283.                         mouseJoint = world.CreateJoint(md);
  284.                         body.WakeUp();
  285.                 }
  286.         }
  287.         
  288.         // mouse release
  289.         if (!isMouseDown) {
  290.                 if (mouseJoint) {
  291.                         world.DestroyJoint(mouseJoint);
  292.                         mouseJoint = null;
  293.                 }
  294.         }
  295.         
  296.         // mouse move
  297.         if (mouseJoint) {
  298.                 var p2 = new b2Vec2(mouseX, mouseY);
  299.                 mouseJoint.SetTarget(p2);
  300.         }
  301. }
  302. function getBodyAtMouse() {
  303.         // Make a small box.
  304.         var mousePVec = new b2Vec2();
  305.         mousePVec.Set(mouseX, mouseY);
  306.         
  307.         var aabb = new b2AABB();
  308.         aabb.minVertex.Set(mouseX – 1, mouseY – 1);
  309.         aabb.maxVertex.Set(mouseX + 1, mouseY + 1);
  310.         // Query the world for overlapping shapes.
  311.         var k_maxCount = 10;
  312.         var shapes = new Array();
  313.         var count = world.Query(aabb, shapes, k_maxCount);
  314.         var body = null;
  315.         
  316.         for (var i = 0; i < count; ++i) {
  317.                 if (shapes[i].m_body.IsStatic() == false) {
  318.                         if ( shapes[i].TestPoint(mousePVec) ) {
  319.                                 body = shapes[i].m_body;
  320.                                 break;
  321.                         }
  322.                 }
  323.         }
  324.         return body;
  325. }
  326. function setWalls() {
  327.         if (wallsSetted) {
  328.                 world.DestroyBody(walls[0]);
  329.                 world.DestroyBody(walls[1]);
  330.                 world.DestroyBody(walls[2]);
  331.                 world.DestroyBody(walls[3]);
  332.                 
  333.                 walls[0] = null; 
  334.                 walls[1] = null;
  335.                 walls[2] = null;
  336.                 walls[3] = null;
  337.         }
  338.         
  339.         walls[0] = createBox(world, stage[2] / 2, – wall_thickness, stage[2], wall_thickness);
  340.         walls[1] = createBox(world, stage[2] / 2, stage[3] + wall_thickness, stage[2], wall_thickness);
  341.         walls[2] = createBox(world, – wall_thickness, stage[3] / 2, wall_thickness, stage[3]);
  342.         walls[3] = createBox(world, stage[2] + wall_thickness, stage[3] / 2, wall_thickness, stage[3]);        
  343.         
  344.         wallsSetted = true;
  345. }
  346. // .. UTILS
  347. function getElementsByClass( searchClass ) {
  348.         var classElements = new Array();
  349.         var els = document.getElementsByTagName(‘*’);
  350.         var elsLen = els.length
  351.         for (i = 0, j = 0; i < elsLen; i++) {
  352.                 var classes = els[i].className.split(‘ ‘);
  353.                 for (k = 0; k < classes.length; k++)
  354.                         if ( classes[k] == searchClass )
  355.                                 classElements[j++] = els[i];
  356.         }
  357.         return classElements;
  358. }
  359. function findPos(obj) {
  360.         var curleft = curtop = 0;
  361.         if (obj.offsetParent) {
  362.                 do {
  363.                         curleft += obj.offsetLeft;
  364.                         curtop += obj.offsetTop;
  365.                 } while (obj = obj.offsetParent);
  366.         }
  367.         return [curleft,curtop];
  368. }
  369. function getBrowserDimensions() {
  370.         var changed = false;
  371.                 
  372.         if (stage[0] != window.screenX) {
  373.                 delta[0] = (window.screenX – stage[0]) * 50;
  374.                 stage[0] = window.screenX;
  375.                 changed = true;
  376.         }
  377.         
  378.         if (stage[1] != window.screenY) {
  379.                 delta[1] = (window.screenY – stage[1]) * 50;
  380.                 stage[1] = window.screenY;
  381.                 changed = true;
  382.         }
  383.         
  384.         if (stage[2] != window.innerWidth) {
  385.                 stage[2] = window.innerWidth;
  386.                 changed = true;
  387.         }
  388.         
  389.         if (stage[3] != window.innerHeight) {
  390.                 stage[3] = window.innerHeight;
  391.                 changed = true;
  392.         }
  393.         
  394.         return changed;
  395. }

复制代码 直接地址:
http://mrdoob.com/projects/chrom … _gravity/js/Main.js

织梦DEDECMS默认flash幻灯片参数修改的方法

用记事本打开首页模板文件templets/default/index.htm

源代码为
<script language=’javascript’>
linkarr = new Array();
picarr = new Array();
textarr = new Array();
var swf_width=280;
var swf_height=192;
//文字颜色|文字位置|文字背景颜色|文字背景透明度|按键文字颜色|按键默认颜色|按键当前颜色|自动播放时间|图片过渡效果|是否显示按钮|打开方式
var configtg=’0xffffff|1|0x3FA61F|5|0xffffff|0xC5DDBC|0x000033|2|3|1|_blank’;
var files = "";
var links = "";
var texts = "";
//这里设置调用标记
{dede:arclist flag=’f’ row=’5′}
linkarr[[field:global.autoindex/]] = "[field:arcurl/]";
picarr[[field:global.autoindex/]] = "[field:litpic/]";
textarr[[field:global.autoindex/]] = "[field:title function=’html2text(@me)’/]";
{/dede:arclist}
for(i=1;i<picarr.length;i++){
if(files=="") files = picarr[i];
else files += "|"+picarr[i];
}
for(i=1;i<linkarr.length;i++){
if(links=="") links = linkarr[i];
else links += "|"+linkarr[i];
}
for(i=1;i<textarr.length;i++){
if(texts=="") texts = textarr[i];
else texts += "|"+textarr[i];
}
document.write(‘<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="’+ swf_width +’" height="’+ swf_height +’">’);
document.write(‘<param name="movie" value="{dede:global.cfg_templeturl /}/default/images/bcastr3.swf"><param name="quality" value="high">’);
document.write(‘<param name="menu" value="false"><param name=wmode value="opaque">’);
document.write(‘<param name="FlashVars" value="bcastr_file=’+files+’&bcastr_link=’+links+’&bcastr_title=’+texts+’&bcastr_config=’+configtg+’">’);
document.write(‘<embed src="{dede:global.cfg_templeturl /}/default/images/bcastr3.swf" wmode="opaque" FlashVars="bcastr_file=’+files+’&bcastr_link=’+links+’&bcastr_title=’+texts+’&bcastr_config=’+configtg+’&menu="false" quality="high" width="’+ swf_width +’" height="’+ swf_height +’" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />’); document.write(‘</object>’);
</script>>

——————————————————————————–

参数设置:
高级设置: 
默认参数字符串 
0xffffff:文字颜色| 2:文字位置| 0xff6600:文字背景颜色| 60:文字背景透明度| 0xffffff:按键文字颜色| 0xff6600:按键默认颜色| 0x000033:按键当前颜色| 8:自动播放时间(秒)| 2:图片过渡效果| 1:是否显示按钮| _blank:打开新窗口 
颜色都以0x开始16进制数字表示 
文字颜色:题目文字的颜色 
文字位置:0表示题目文字在顶端,1表示文字在底部,2表示文字在顶端 
文字背景透明度:0-100值,0表示全部透明 
按键文字颜色:按键数字颜色 
按键默认颜色:按键默认的颜色 
按键当前颜色:当前图片按键颜色 
自动播放时间:单位是秒 
图片过渡效果:0,表示亮度过渡,1表示透明度过渡,2表示模糊过渡,3表示运动模糊过渡 
是否显示按钮:0,表示隐藏按键部分,更适合做广告挑轮换 
打开窗口:_blank表示新窗口打开。_self表示在当前窗口打开

修改的方法为 
在上面幻灯代码的bcastr_title=’+texts+’后面添加下面的代码相关参数可以参考上面的说明 
&bcastr_config=0xffffff:文字颜色|2:文字位置|0x0066ff:文字背景颜色|60:文字背景透明度|0xffffff:按键文字颜色|0x0066ff:按键默认颜色|0x000033:按键当前颜色|8:自动播放时间(秒)|2:图片过渡效果|0:是否显示按钮|_blank:打开窗口

正常使用谷歌邮箱和谷歌阅读器

貌似Gmail被干扰很久了,据说Gmail SSL封锁规律是每小时的0-19分可访问,20-29分被墙,30-49分可访问,50-59分被墙。听说对Gmail的封锁是在出国路由上做的手脚。解决的办法就是把域名解析到不受干扰的谷歌北京IP上。具体步骤如下:

用记事本打开C:\Windows\System32\drivers\etc目录下的hosts文件(如果没有此文件点击下载,修改hosts有些杀毒软件会报毒,允许即可)

添加以下内容到hosts文件,然后保存hosts文件,在开始菜单的附件里找到“命令提示符”打开,输入ipconfig /flushdns命令按回车键清除本地DNS缓存。然后就可以正常使用了,Google香港/Google搜索不会被敏感词重置,Google网页缓存也能正常显示,使用https://mail.google.com/访问Gmail也不会间歇性断开,使用https://www.google.com/reader/即可正常使用Google阅读器。

203.208.39.22 webcache.googleusercontent.com
203.208.39.22 mail.google.com
203.208.39.22 www.google.com.hk
203.208.39.22 www.google.com

203.208.39.22是谷歌北京的IP(可以http://tools.whois.net/whoisbyip/查证),由于是国内IP(可能受电信运营商干扰)不过安全性未知(有关人士勿用)。

如果你电脑开启了IPv6支持,最好使用Google的IPv6地址,应该也能达到类似效果而且更安全。

正常使用谷歌邮箱gmail和谷歌阅读器

貌似Gmail被干扰很久了,据说Gmail SSL封锁规律是每小时的0-19分可访问,20-29分被墙,30-49分可访问,50-59分被墙。听说对Gmail的封锁是在出国路由上做的手脚。解决的办法就是把域名解析到不受干扰的谷歌北京IP上。具体步骤如下:

用记事本打开C:\Windows\System32\drivers\etc目录下的hosts文件(如果没有此文件点击下载,修改hosts有些杀毒软件会报毒,允许即可)

添加以下内容到hosts文件,然后保存hosts文件,在开始菜单的附件里找到“命令提示符”打开,输入ipconfig /flushdns命令按回车键清除本地DNS缓存。然后就可以正常使用了,Google香港/Google搜索不会被敏感词重置,Google网页缓存也能正常显示,使用https://mail.google.com/访问Gmail也不会间歇性断开,使用https://www.google.com/reader/即可正常使用Google阅读器。

203.208.39.22 webcache.googleusercontent.com
203.208.39.22 mail.google.com
203.208.39.22 www.google.com.hk
203.208.39.22 www.google.com

203.208.39.22是谷歌北京的IP(可以http://tools.whois.net/whoisbyip/查证),由于是国内IP不受GFW干扰(可能受电信运营商干扰)不过安全性未知(有关人士勿用)。

如果你电脑开启了IPv6支持,最好使用Google的IPv6地址,应该也能达到类似效果而且更安全。

织梦dedecms全站rss输出

  织梦Dedecms建站程序并没有内置好全站RSS输出功能,需要会员、使用者自主制作,这对于初学者来说是有一定难度的,如果用织梦Dedecms搭建的网站不能全站RSS输出,将不利于搜索引擎的收录,也不利于网站被抓虾、鲜果、飞豆、飞鸽等RSS阅读网站会员的订阅。当然,织梦Dedecms具有各频道的RSS输出功能,但这是很笨的RSS功能,对于稍为迟钝点的搜索引擎来说,可能检测不到。
  
  我想,估计织梦Dedecms程序开发员,以为全站RSS输出功能是很容易制作的,于是并没有像Wordpress、ZBLOG等于内核加插整站RSS输出功能。我曾为这一功能的开设搜遍了互联网,最初都是些极为复杂的方法介绍,可行性极差。后来发现有一种方法很管用,只加插上传两个文件就实现啦。这里分享一下我开设织梦Dedecms全站输出功能的经过:
  
  第一步,你先用记事本新建一个rss.php文件,把下面的代码拷贝到其中:

<?php
require_once (dirname(__FILE__) . "/include/common.inc.php");
require_once DEDEINC."/arc.partview.class.php";
$pv = new PartView();
$pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/default/rss.htm");
header("Content-type:application/xml");
$pv->Display();
?> 
  
  不会建立rss.php文件的朋友,可[点此]下载已经建好的文件,将解压后的文件rss.php,直接保存该文件到站点根目录下,即可。
  
  第二步,制作一个rss.htm模板输出文件,把下面的代码拷贝到其中:

<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0">

<channel>

<title>{dede:global.cfg_webname/}</title>

<link>{dede:global.cfg_basehost/}</link>

<description>{dede:global.cfg_description/}</description>

<language>zh-cn</language>

<generator>{dede:global.cfg_webname/}</generator>

<webmaster>{dede:global.cfg_adminemail/}</webmaster>

{dede:arclist row=’60’ col=’1′ titlelen=’100′ orderby=’pubdate’}

<item>

<link>http://www.iwojie.com[field:arcurl/]</link>

<title><![CDATA[[field:title function=’html2text(@me)’/]]]></title>

<author>[field:writer/]</author>

<category>[field:typename/]</category>

<pubDate>[field:pubdate function=’strftime("%a, %d %b %Y %H:%M:%S +0800",@me)’/]</pubDate>

<guid>http://www.iwojie.com[field:arcurl/]</guid>

<description><![CDATA[[field:description function=’html2text(@me)’/] … <br /><b>文章分类</b>:[field:typename/]<br /><a href="http://www.iwojie.com[field:arcurl/]" target="_blank">阅读全文</a> | <a href="http://www.iwojie.com/plus/recommend.php?aid=[field:id/]" target="_blank">邮件推荐</a> | <a href="http://www.iwojie.com[field:arcurl/]" target="_blank">评论回复</a>]]></description>

</item>

{/dede:arclist}

</channel>

</rss>

  

  请将上面代码中http://www.iwojie.com的网址替换为你的网址,保存文件、上传到index.htm主页模板相同的目录/templets/default中

  

  完成上面步骤之后,登陆管理后台,清理一下缓存,重新生成一遍全站文件就可以实现全站RSS输出。而你的站的RSS网址是:http://你的网址/rss.php

修改模板目录中的head.htm中RSS订阅的地址指向为http://你的域名/rss.php即可。

如想让你的RSS更完美,并方便抓虾、鲜果、飞鸽等RSS阅读会员订阅的话,可以到feedsky.com上去申请一个帐号,然后添加一个管理,就可申请到一个永久的FEED地址,并把它设置指向你的rss.php链接:http://你的域名/rss.php
然后修改head.htm 中RSS订阅指向为:http://feed.feedsky.com/iwojie (这是我的网站rss,你要改成你的)