Node.js中所用的fs.renameSync出错:Error: EXDEV, cross-device link no
Win7下,折腾Node.js过程中,运行服务器,其中内部调用相关代码: function show(response) { console.log("Request handler 'show' was called."); fs.readFile("/tmp/test.png", "binary", function(error, file) { if(error) { response.writeHead(500, {"Content-Type": "text/plain"}); response.write(error + "\n"); response.end(); } else { response.writeHead(200, {"Content-Type": "image/png"}); response.write(file, "binary"); response.end(); } }); } 去重命名,结果出错: D:\tmp\tmp_dev_root\node.js> D:\tmp\tmp_dev_root\node.js>node index.js Server has started. Reforst for /upload received. About to route a reforst for /upload Request ha’upload’pload' was called. about to parse padoneg done fs.js:returnreturn binding.rename(pathModule._makeLong(oldPath), ^ Error: EXDEV, cross-device link not perm’C:\Users\CLi\AppData\Local\Temp\df99513a93a1cbfbc26e076f8ae08b92’08b92′ at Object.fs.renameSync (fs.js:439:18) at D:\tmp\tmp_dev_root\node.js\requestHandlers.js:34:8 at IncomingForm.parse (D:\tmp\tmp_dev_root\node.js\node_modules\formidable\lib\incoming_form.js:121:9) at IncomingForm.EventEmitter.emit (events.js:93:17) at IncomingForm._maybeEnd (D:\tmp\tmp_dev_root\node.js\node_modules\formidable\lib\incoming_form.js:383:8) at IncomingForm.handlePart (D:\tmp\tmp_dev_root\node.js\node_modules\formidable\lib\incoming_form.js:212:12) at File.end (D:\tmp\tmp_dev_root\node.js\node_modules\formidablfileb\file.js:71:5) at WriteStream.flush (fs.js:1515:9) at Object.oncomplete […]
View Details十个让人惊叫的数据可视化项目
数据可视化是科学、艺术和设计的结合,当枯燥隐晦的数据被数据科学家们以优雅、简明、直观的视觉方式呈现时,带给人们的不仅仅是一种全新的观察世界 的方法,而且往往具备艺术作品般的强大冲击力和说服力。如今数据可视化已经不局限于商业领域,在社会和人文领域的影响力也正在显现,以下我们将介绍的是是 个让人耳目一新、拍案叫绝的数据可视化项目。 一、富人区、穷人区 “富人区、穷人区”是一个互动地图项目,能直观显示美国每个城市的居民收入和房租水平,不同的颜色谱系代表着不同区域的收入水平,你可以搜索每个州、每座城市甚至每个街区的收入状况。 二、谷歌流感趋势 谷歌流感趋势(Google Flu Trends)通过分析人们的搜索关键词来跟踪预测全球流感趋势,这是Google.org的一个公益项目。 三、LoTRProject LOTRProject其实是一个数据可视化项目,它把托尔金《指环王》系列小说(霍比特人,指环王, 以及精灵之钻)里表述的一个巨大而复杂的家谱关系, 通过图表, 地图, 时间轴以及简单文字说明生动地表现了出来。 四、GE 医学影像创新大赛 2011年9月份GE斥资1亿美元启动了GE创新挑战赛,挖掘能够提高早期乳腺癌诊断水平的创意想法。该视觉可视化项目收到了7大类500个提案,其中五位获胜者获得种子资金用于将创意付诸实施。 五、英国同性婚姻法案 英国卫报发起的这个视觉可视化项目能够分析展示在2013年同性婚姻法案上投票的英国议会议员的个人情况,数据包括议员的性别、所在政党和当选时间。 六、2010年美国枪支杀人统计 Periscopic(潜望镜)公司推出的这个数据可视化项目展示了2010年枪支暴力如何提前终止了9595人的生命。数据来自FBI的联合犯罪报告以及世界卫生组织。 图形中的弧线代表受害者理论上可以活到的生命长度,鼠标停留在弧线上将显示更多信息,你还能将图形与枪支型号、种族、性别等进行关联分析。 七、皇后乐队:四个视角 “四个视角”项目显示了语言在皇后乐队歌曲中的重要性,通过分析皇后乐队歌词中的关键词汇,能发现皇后乐队音乐中表达的重要主题,以及每位歌曲作词人的影响力。 八、1851年至今的飓风统计 通过分析来自美国海洋与大气管理局(NOAA)的数据,开发人员John Nelson创建了这个能够分析1851年以来的热带风暴和飓风的数据可视化项目。该项目用颜色区分飓风的强度,卫报的一篇报道中可以看到这个项目的动画版本。 九、纽约市政交通的一天 YouTube用户STLTransit用可视化的方式展示了纽约人一天中如何使用包括地铁在内的市政交通,数据来自General Transit Feed规范数据,STLTransit还未其他城市的交通系统创建了视频。 十、Facebook照片分享 在地图数据可视化方面拥有专长的旧金山一家设计与技术工作室Stanmen制作了一系列视频演示Facebook用户的照片分享行为,该项目将该工作室的George Takei发布的三张照片在三个月内的传播情况进行了可视化分析。 文章来自IT经理网
View Details调用优酷视频去除广告的方法
<embed type=”application/x-shockwave-flash” src=”http://static.youku.com/v1.0.0201/v/swf/qplayer_taobao.swf?VideoIDS=XNDQ4ODMzMzQ4=&isAutoPlay=false&isShowRelatedVideo=false&embedid=-&showAd=0″ id=”movie_player” name=”movie_player” bgcolor=”#FFFFFF” quality=”high” wmode=”transparent” allowfullscreen=”true” flashvars=”isShowRelatedVideo=false&showAd=0&show_pre=1&show_next=1&isAutoPlay=false&isDebug=false&UserID=&winType=interior&playMovie=true&MM Control=false&MMout=false&RecordCode=1001,1002,1003,1004,1005,1006,2001,3001,3002,3003,3004,3005,3007,3008,9999″ pluginspage=”http://www.macromedia.com/go/getflashplayer” width=”450″ height=”327″></embed> <embed src=”http://static.youku.com/v/swf/qplayer.swf?winType=adshow&VideoIDS=XNDQ4ODMzMzQ4&isAutoPlay=false&isShowRelatedVideo=false” wmode=”transparent” width=”600″ align=”center” border=”0″ height=”500″></embed> 注意把上面代码的VideoIDS=XNDQ4ODMzMzQ4里的XNDQ4ODMzMzQ4换成你自己视频的ID就可以了
View Details观看优酷去广告的方法
打开 C:\Windows\System32\drivers\etc 的 hosts 文件,hosts文件属性要改成可写,最好用管理员账号 administrator 修改 在hosts文件中添加以下内容后保存, #B#HostsX: HostsX 国内站点广告/视频类网站/优酷网 0.0.0.0 atm.youku.com 0.0.0.0 Fvid.atm.youku.com 0.0.0.0 html.atm.youku.com 0.0.0.0 nc.youku.com 0.0.0.0 speed.lstat.youku.com 0.0.0.0 stat.youku.com 0.0.0.0 static.atm.youku.com 0.0.0.0 static.lstat.youku.com 0.0.0.0 urchin.lstat.youku.com 0.0.0.0 valb.atm.youku.com 0.0.0.0 valc.atm.youku.com 0.0.0.0 valf.atm.youku.com 0.0.0.0 valo.atm.youku.com 0.0.0.0 valp.atm.youku.com 0.0.0.0 vid.atm.youku.com 0.0.0.0 walp.atm.youku.com 0.0.0.0 lstat.youku.com #E#HostsX: HostsX 国内站点广告/视频类网站/优酷网 之后 打开优酷,随便播放一个视频,待广告提示后关掉浏览器。打开文件夹(这里的演示地址win7的) C:\Users\用户文件夹\AppData\Roaming\Macromedia\Flash Player\#SharedObjects\5SK83KL2\static.youku.com XP地址: C:\documents and settings \当前用户AppData\Roaming\Macromedia\Flash Player\#SharedObjects\Q6TU75SP 看到该文件夹之后,删掉,新建一个文本文件,把名字改为static.youku.com,然后取出文本的后缀.txt,并把该文件设为只读(右击该文件选择“属性”,勾选“只读”) 这就可以搞定优酷播放视频等待10秒的黑色广告了!再去浏览器去看看,是不是大功告成了
View DetailsJavaScript开发者常忽略或误用的七个基础知识点
JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它。昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序。很多新手开发者被各种强大的 JavaScript 框架吸引进来,但他们却忽略了框架身后浩如星海的 JavaScript 实用技巧。本文将为你呈献其中七个基础知识点: 1. 在 String.prototype.replace 方法中使用 /g 和 /i标志位 令很多 JavaScript 初学者意外的是,字符串的 replace 方法并不会 替换所有匹配的子串——而仅仅替换第一次匹配。当然 JavaScript 老手们都知道这里可以使用正则表达式,并且需要加上一个全局标志位(/g): 1 // Mistake 2 // 踩到坑了 3 var str = "David is an Arsenal fan, which means David is great"; 4 str.replace("David", "Darren"); // "Darren is an Arsenal fan, which means David is great" 5 6 // Desired 7 // 符合预期 8 str.replace(/David/g, "Darren"); // "Darren is an Arsenal fan, which means Darren is great" 另一个基本的逻辑错误就是在大小写不敏感的校验场合(字母可大写可小写)没有忽略大小写,此时 /i标志位就很实用: 1 str.replace(/david/gi, "Darren"); // "Darren will always be an Arsenal fan, which means Darren will always be great" (译注:上面这段例程我没有看懂用意,可能是注释有误吧……) 每个 JavaScript 开发者都曾踩过这两个标志位的坑——因此别忘了在适当的时候用上它们! 2. […]
View Detailscss中的注释要注意了
周末给客户写了一个专题页面,今天发现在IE8下是空白页面,直接不显示,直接怀疑是CSS的问题的; 通过一行一行排查,发现是CSS里有html的注释<!—->导致的,直接去掉,一切正常。
View Details为什么软件开发周期通常是预期的两三倍?
导读:有国外开发者在 Quora 提了这个问题:“为什么软件开发周期通常是预期的两三倍?” 并补充问:“这是开发人员的错误? 是管理失误? 是因为做事方法不对, 或者说缺乏好的方法?还是说这就是软件开发流程的特点?” Michael Wolfe 在2012年1月28日给的回复,非常经典,截至我们发布时已有8016个赞。以下是译文。 让我们先沿着海岸线,从旧金山(SF)走路去洛杉矶(LA),去拜访我们住在Newport Beach的朋友,我拿出地图在上面画出了行进路线。 全程大约有400英里,如果我们每天走10小时每小时4公里的话,只用10天就可以到达目的地。立刻打电话给我们的朋友预定下周六的晚餐,告诉他们下周六晚上六点我们一定会准时出现,朋友们已经等不及了! 第二天清晨,我们带着准备冒险的兴奋起床,背起行囊,拿出地图,准备计划我们冒险的第一天,看一眼地图,噢,不! 哇,海岸线上有这么多迂回曲折的线路。每天行进40英里的话,10天后只能勉强到达Half Moon Bay(半月湾?)。这趟旅行至少有500英里,而不是400。赶紧打电话给我们的朋友,将晚餐顺延至下下周周二。人还是应该现实一点。朋友们有点失望, 不过仍然盼望见到我们,况且花 12 天从 SF 到 LA 也不赖。 把不开心的事丢到一边,准备出发。两小时过后,我们才刚刚走出动物园。出了什么事?我们低头看了一下脚下的路: 天哪,这样走路也太慢了!有沙子、海水、阶梯、溪流,还有海边愤怒的海狮!这样我们只能按每小时2公里的速度前进,只有 我们预估一般的速度。要么我们现在每天走20小时,要么再把晚餐推迟一个星期。好吧,让我们各退一步:每天走12个小时,把晚餐安排到下下周的周末。只好 再打电话给朋友告诉他们这个情况。朋友们有些不高兴,但还是表示可以,到时候见。 在辛苦走了12小时后,我们准备在 Moss Beach 扎营休息。靠,要把帐篷在风中立起来根本不可能。直到半夜才开始休息。不过没什么大不了:明天在加快点速度就可以了。 第二天早上睡过头了,早上10点才醒,起来浑身酸痛精疲力尽。艹,今天没法走12个小时了,先走10个小时,明天可以走14个小时。收拾东西出发。 再缓慢行进了几个小时之后,我发现伙伴脚有点跛。妈的,是水泡。必须现在解决它,在这些问题开始减慢我们的速度前,必须 将它们扼杀在萌芽状态。我慢跑了45分钟到达内陆3英里远的Pescadero,买了一些创可贴再快速跑回去给朋友包扎了一下。我快累坏了,太阳也快下山 了,又浪费了一天的时间。到我们准备休息前今天只走了6英里。但是我们确实需要补充一下供给。一切都很好,明天我们就能赶上。 第二天醒来,扎紧脚上的绷带准备出发。转角之后突然发现,靠!这是个啥? 你妹的地图上怎么没标出它!现在我们只能往内陆走3英里,绕过这些被联邦政府用栅栏保护起来的区域,中途迷路了两次,在 中午前才好不容易又回到了海岸线。今天的时间过了一大半,而我们才前进了差不多1英里。好吧,不过我们不会再打电话给朋友推迟了,今天我们会一直走到午夜 试着赶上进度。 晚上在大雾里断断续续地睡了一夜。一大早被我的伙伴叫醒,他一阵阵的头疼,还有点发烧,我问他能不能坚持一下。“你在想 什么呢,混蛋,我已经连续三天在这么冷的雾中赶路,没有休息过了。“好吧,今天看来只能黄了,只能在原地好好恢复了。现在我们已经有经验了,今天好好休息 明天再走14个小时,还有几天的时间,我们一定能够做到! 第二天我们昏昏沉沉地起来了。我看了一眼随身的地图: 天啊!我们已经走了10天旅程里的第5天还没有离开海湾区域!太荒唐了!我们要重新估计一下准确的时间再打给朋友,搞不好会被骂,但至少得找一个现实一点的目标。 同伴说,我们在四天里走了40英里,这趟旅程至少又600英里,那就至少要60天,安全一点的说法说不定要70天,“没门…是,以前我是没走路从SF去过LA,但肯定不会要70天的时间,如果告诉他们我们要到复活节才能到,那要被他们笑死的“,我说。 我接着说,“如果你能保证每天走16个小时,我们就能把落下的时间补回来!我知道很困难,但现在是最关键的时刻,别抱怨了!”伙伴对我吼道 “一开始又不是我告诉别人下周日我们就能到的!因为你犯的这个错差点要我的命!” 两个人就这样不说话了。我还是没打出电话,等我的伙伴明天冷静一点我再决定,我也愿意做一些更合理的承诺。 第二天上午,我们一直待在各自的帐篷中直到一场暴风雨袭来。我们赶紧收拾好东西直到10点才摆脱危险。浑身酸痛,又长了好多新水泡。之前发生的事谁也没提,直到发现我那愚蠢的伙伴把水壶落下了,又被我指责了一顿,我们不得不再花30分钟回去取它。 我心里记得我们的厕纸已经快用完了,下次到一个小镇的时候应该囤一点。在我们又转个弯后,才发现一条湍急的河流挡住了去路,这时我突然感到肚子一阵难受…… 原文链接: Michael Wolfe 翻译: 伯乐在线 – 伯乐在线读者 译文链接: http://blog.jobbole.com/45756/
View DetailsMySQL: InnoDB 还是 MyISAM?
MyISAM存储引擎 MyISAM是 默认存储引擎。它基于更老的ISAM代码,但有很多有用的扩展。MyISAM存储引擎的一些特征: · 所有数据值先存储低字节。这使得数据机和操作系统分离。二进制轻便性的唯一要求是机器使用补码(如最近20年的机器有的一样)和IEEE浮点格式(在主流机器中也完全是主导的)。唯一不支持二进制兼容性的机器是嵌入式系统。这些系统有时使用特殊的处理器。 · 先存储数据低字节并不严重地影响速度;数据行中的字节一般是未联合的,从一个方向读未联合的字节并不比从反向读更占用更多的资源。服务器上的获取列值的代码与其它代码相比并不显得时间紧。 · 大文件(达63位文件长度)在支持大文件的文件系统和操作系统上被支持。 · 当把删除和更新及插入混合的时候,动态尺寸的行更少碎片。这要通过合并相邻被删除的块,以及若下一个块被删除,就扩展到下一块来自动完成。 · 每个MyISAM表最大索引数是64。 这可以通过重新编译来改变。每个索引最大的列数是16个。 · 最大的键长度是1000字节。这也可以通过编译来改变。对于键长度超过250字节的情况,一个超过1024字节的的键块被用上。 · BLOB和TEXT列可以被索引。 · NULL值被允许在索引的列中。这个占每个键的0-1个字节。 · 所有数字键值以高字节为先被存储以允许一个更高地索引压缩。 · 当记录以排好序的顺序插入(就像你使用一个AUTO_INCREMENT列之时),索引树被劈开以便高节点仅包含一个键。这改善了索引树的空间利用率。 · 每表一个AUTO_INCREMEN列的内部处理。MyISAM为INSERT和UPDATE操作自动更新这一 列。这使得AUTO_INCREMENT列更快(至少10%)。在序列顶的值被删除之后就不能再利用。(当AUTO_INCREMENT列被定义为多列索 引的最后一列,可以出现重使用从序列顶部删除的值的情况 )。AUTO_INCREMENT值可用ALTER TABLE或myisamch来重置。 · 如果数据文件中间的表没有自由块了,在其它线程从表读的同时,你可以INSERT新行到表中。(这被认识为并发操作 )。自由块的出现是作为删除行的结果,或者是用比当前内容多的数据对动态长度行更新的结果。当所有自由块被用完(填满),未来的插入又变成并发。 · 你可以把数据文件和索引文件放在不同目录,用DATA DIRECTORY和INDEX DIRECTORY选项CREATE TABLE以获得更高的速度,请参阅13.1.5节,“CREATE TABLE语法”。 · 每个字符列可以又不同的字符集。 · 在MyISAM索引文件里又一个标志,它表明表是否被正确关闭。如果用--myisam-recover选项启动mysqld,MyISAM表在打开得时候被自动检查,如果被表被不恰当地关闭,就修复表。 · 如果你用--update-state选项运行myisamchk,它标注表为已检查。myisamchk --fast只检查那些没有这个标志的表。 · myisamchk --analyze为部分键存储统计信息,也为整个键存储统计信息。 · myisampack可以打包BLOB和VARCHAR列。 MyISAM也支持下列特征: · 支持true VARCHAR类型;VARCHAR列以存储在2个字节中的长度来开始。 · 有VARCHAR的表可以有固定或动态记录长度。 · VARCHAR和CHAR列可以多达64KB。 · 一个被搞乱的已计算索引对可对UNIQUE来使用。这允许你在表内任何列的合并上有UNIQUE。(尽管如此,你不能在一个UNIQUE已计算索引上搜索)。 InnoDB存储引擎 InnoDB给MySQL提供 了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非 锁定读。这些特色增加 了多用户部署和性能。没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。在SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。InnoDB是为处理巨大数据量时的最大性能设计。它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。 InnoDB存储引擎被完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。 InnoDB存储它的表&索引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与MyISAM表不同,比如在MyISAM表中每个表被存在 分离的文件中。InnoDB 表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。 InnoDB默认地被包含在MySQL二进制分发中。Windows Essentials installer使InnoDB成为Windows上MySQL的 默认表。 InnoDB被用来在众多需要高性能的大型数据库站点上产生。著名的Internet新闻站点Slashdot.org运行在 InnoDB上。Mytrix, Inc.在InnoDB上存储超过1TB的数据,还有一些其它站点在InnoDB上处理平均每秒800次插入/更新的负荷。 InnoDB和MyISAM的区别 区别概述: MyISAM 是MySQL中默认的存储引擎,一般来说不是有太多人关心这个东西。决定使用什么样的存储引擎是一个很tricky的事情,但是还是值我们去研究一下,这里的文章只考虑 MyISAM 和InnoDB这两个,因为这两个是最常见的。 下面先让我们回答一些问题: 你的数据库有外键吗? 你需要事务支持吗? 你需要全文索引吗? 你经常使用什么样的查询模式? 你的数据有多大? […]
View DetailsDwz关闭弹出的窗口
|
1 2 3 4 |
关闭有很多,看是哪种弹出窗体: 1. 直接 <button type="button">关闭</button> 2. 关闭当前 $.pdialog.closeCurrent(); |
DWZ (JUI) 教程 navTab 刷新分析
navTab的刷新在doc文件里也有说明 首先 在form表单里指定好回调函数 * <form action="/user.do?method=save" onsubmit="return validateCallback(this, navTabAjaxDone)"> 如果不指定回调函数的话框架会默认使用DWZ.ajaxDone() <div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><b>[html]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a><div style="position: absolute; left: 0px; top: 0px; width: 0px; height: 0px; z-index: 99;"><embed id="ZeroClipboardMovie_2" src="//static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="0" height="0" name="ZeroClipboardMovie_2" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=0&height=0" wmode="transparent"></div></div></div><ol start="1" class="dp-xml"><li class="alt"><span><span>function navTabAjaxDone(json){ </span></span></li><li class=""><span> </span></li><li class="alt"><span> DWZ.ajaxDone(json); </span></li><li class=""><span> //注意返回的JSON的数据结构 </span></li><li class="alt"><span> if (<span class="attribute">json.statusCode</span><span> == DWZ.statusCode.ok){ </span></span></li><li class=""><span> if (json.navTabId){ </span></li><li class="alt"><span> //把指定navTab页面标记为需要“重新载入”。注意navTabId不能是当前navTab页面的 </span></li><li class=""><span> navTab.reloadFlag(json.navTabId); </span></li><li class="alt"><span> </span></li><li class=""><span> } else { </span></li><li class="alt"><span> //重新载入当前navTab页面 </span></li><li class=""><span> navTabPageBreak(); </span></li><li class="alt"><span> </span></li><li class=""><span> } </span></li><li class="alt"><span> if ("closeCurrent" == json.callbackType) { </span></li><li class=""><span> </span></li><li class="alt"><span> setTimeout(function(){navTab.closeCurrentTab();}, 100); </span></li><li class=""><span> </span></li><li class="alt"><span> } else if ("forward" == json.callbackType) { </span></li><li […]
View Details