纯备份资料,HTML5的canvas资料
upyun.zip
膘叔的简单人生
纯备份资料,HTML5的canvas资料
upyun.zip
奇技淫巧?其实不能算是什么特别的东西,但有些小技巧还是可以试试的,比如说第一个,我们一般都会是用setInterval,然后每1秒执行一次,10秒后取消,但setTimeout也可以。只是意义不大而已喽
原文来自:http://www.cnblogs.com/nothingbrother/archive/2011/12/19/2293131.html
应用案例:比如你想一个函数循环执行10次,怎么办?以前通常是先setInterval,然后clearInterval,技巧一就是克服这个问题
(function () {
var i = 0;
function job() {
console.log(i++);
if (i < 10) {
setTimeout(job, 1000);
}
}
job();
})();
上面这个job函数就只会乖乖的执行10次.然后自动停止
技巧二之高效的for循环
应用案例:抛弃传统的循环方式
(function () {
var arr=[];
for(var i=arr.length;i--;){
doStuff();
}
})();
这个方式为什么高效?
一:少了一个参数l=arr.length;
二:for语句中间那个玩意少进行了一次计算,以前的话是for(i=0;i<l;i++)这样的话中间的语句会先比较i<l 然后比较出来的结果在
跟true 或者false比较,自然多了次计算
技巧三之高效赋值
应用案例:抛弃传统的if判断赋值
var i=1,ret;
ret=i!==1||true;
console.log(ret);
以上代码会很神奇的告诉你ret会是true.高效吧不用if(i!==1)了在赋值了
技巧四之强悍的简短的attr
应用案例:setAttribute,getAttribute.这个方法不仅可以设置标准的属性,还可以设置任意属性,兼容好
function attr(elem, name, value) {
var ret;
if (value) {
if (/msie [6-7]\.0/i.test(navigator.userAgent)) {
ret = elem.getAttributeNode(name);
if (!ret) { //ie6 7不合法的属性设置捕鸟,通过这里可以设置
ret = document.createAttribute(name);
elem.setAttributeNode(ret);
}
ret.nodeValue = value + "";
} else {
elem.setAttribute(name, value);
}
return elem;
} else { //ie6 7有得属性获取不鸟
ret = elem.getAttribute(name);
fixIe = elem.getAttributeNode(name).nodeValue;
ret = ret ? ret : fixIe ? fixIe : undefined;
return ret;
}
}
以上方法如何测试呢?
attr(document.getElementById("test"), "classxx", "xx")
alert(attr(document.getElementById("test"),"classxx"));
技巧五之getElementsByClassName.
应用案例 :以前js没什么框架的时候,大家都再模仿这个方法,看看今天我是怎么高效的模仿出它来.这也不愧是js初学者的经典代码
(function () {
var getElementsByClassName=function(cls,context){
var root = context || document;
return document.querySelectorAll ? root.querySelectorAll("." + cls) : root.getElementsByClassName ?
root.getElementsByClassName(cls) : help("*", cls, context);
}
var help=function(tagName,cls,context){
var root= context || document,
ret=[],elems,i,
rcls=new RegExp("^|\\s+"+cls+"\\s+|$");
elems = root.getElementsByTagName(tagName || "*");
for(i=elems.length;i--;){
if(rcls.test(elem[i].className)){
ret.push(elems[i]);
}
}
return ret;
}
})();
以上几个js淫荡技巧还是蛮实用的,前提是你没用使用别人的js框架,用原生创造效率为前提的代码.
----------
上面的代码其实真要说的话也就这样样了,但如果你以前没有接触过原生代码,还是可以折腾的。比如最后一个函数,在JS的高版本中(或者说FF5以上,Safari5以上,)都在支持了querySelector了。这个玩意可是直接支持.class或者#id之类(就象jQuery的选择器)
多学一点东西还是有好处的。
HTTP/1.1 200 OK Date: Wed, 05 Nov 2003 10:46:04 GMT Server: Apache/1.3.28 (Unix) PHP/4.2.3 Content-Location: CSS2-REC.en.html Vary: negotiate,accept-language,accept-charset TCN: choice P3P: policyref=http://www.w3.org/2001/05/P3P/p3p.xml Cache-Control: max-age=21600 Expires: Wed, 05 Nov 2003 16:46:04 GMT Last-Modified: Tue, 12 May 1998 22:18:49 GMT ETag: "3558cac9;36f99e2b" Accept-Ranges: bytes Content-Length: 10734 Connection: close Content-Type: text/html; charset=utf-8 Content-Language: en
这是一个资料备份,常见的head头部
firephp,第一次知道的时候,是在fleaphp的框架里,那时候,妖怪在里面引入了firephp的支持。
BTW:妖怪还第一次在国内的开源框架中引入了yaml的配置。果然妖。。
本文是YII官方的wiki文章,来自于:http://www.yiiframework.com/wiki/84/integrating-firephp/
Install Firebug plugin for Firefox from here.
Install FirePHP plugin for Firefox from here.
Download FirePHP package from here.
Extract 'FirePHPCoreXXX/lib/FirePHPCore' compressed folder to '/path/to/protected/components/FirePHPCore' folder.
At /path/to/index.php, after the line
$app = Yii::createWebApplication($config);
if (YII_DEBUG){
Yii::import("application.components.FirePHPCore.fb", true);
}
$app->run();
That's it! Now you can display your variables on FirePHP with a simple 'fb' command inside your PHP code:
fb($my_variable);
To view the results, open Firebug at 'console' tab and run your PHP file.
---------
不过我还没有仔细研究过,这个功能和Yii自带的WEBlog中的firebug支持有什么区别,还没有过多的研究,不发表意见。
------
看了一下源码,黑黑,突然发现,原来还可以这样玩console,嗯,又多了一个调试功能(和本文说的yii支持firephp无关)
妖怪在群进而推荐了mou这个APP,才发现,原来markdown文档可以这么写。
我原来都是用phpstorm的插件来处理的
之所以要用markdown,是因为首先,很多人都在用,很多开发人员觉得markdown其实只是写文本文件,可读性不强啊。
但是很多人为什么要用这个呢?
因为它简单。可读性好。且可以使用相关工具换成 TXT、RTF、HTML、PDF、Microsoft Doc等。
而且,今天在群里有人就说了,当你用它来写changelog或者readme的时候就可以很容易diff了,如果你是用doc,你怎么diff呢?
好吧,我走题了,不过markdown看起来真不错,而且也可以尝试以后将博客转为markdown格式(或许真有可能),又不占地方,也不占空间
再上下载地址:http://mouapp.com/
这里有介绍:http://www.ituring.com.cn/article/details/504
Markdown 的目标是实现「易读易写」。
不过最需要强调的便是它的可读性。一份使用 Markdown 格式撰写的文档应该可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令所构成。Markdown 语法受到一些既有 text-to-HTML 格式的影响,包括 Setext、atx、Textile、reStructuredText、Grutatext 和 EtText,然而最大灵感来源其实是纯文本的电子邮件格式。
因此 Markdown 的语法全由标点符号所组成,并经过严谨慎选,是为了让它们看起来就像所要表达的意思。像是在文字两旁加上星号,看起来就像*强调*。Markdown 的列表看起来,嗯,就是列表。假如你用过电子邮件,区块引言看起来就真的像是引用一段文字。
tidy库对于我们处理非标准HTML来说是一个好工具,当然,由于他需要在服务器上配置,所以相对就较少人用它,而是HtmlPurifier,毕竟它不需要在服务器上配置直接就可以配置着用了。
为什么我们会用这些工具呢?主要还是由于国内做页面啊,那是相当的不小心,不是这里标签不闭合,就是大小写混用,对于我们做页面分析的来说,就痛苦很多了。肿么办肿么办?
OK,htmlpurifier和tidy库就是帮我们解决这些问题的小工具。
这次要讲的是tidy库参数引发的问题,tidy的函数其实不多,平时我们一般只用tidy_repair_string或者tidy_repair_file就完了,可是就是因为这个REpair导致我的代码出了点问题
tidy_repair_string共需要三个参数,第一个参数string就不用提了,第二个参数是config,第三个参数是encoding。
NND,明明config数组中就可以指定encoding的,为什么还要用第三个参数??
我在处理的时候,在config中指定了input-encoding和output-encoding,分别是实际的编码,但在处理完后。发现有问题,好象页面中有几个字符被处理坏了。导致了UTF-8不认。
最后,只能tidy_repair_string($string,null,"UTF-8");
但这样,好象还是有问题,因为tidy支持的编码都是utf8之类的,参考:http://tidy.sourceforge.net/docs/quickref.html
LOOK:Example: raw, ascii, latin0, latin1, utf8, iso2022, mac, win1252, ibm858, utf16le, utf16be, utf16, big5, shiftjis
因此,写UTF-8有可能会出错(我没有仔细试)
上面的:tidy_repair_string($string,null,"UTF-8");其实还是错的,PHP报错说是找不到 指定的配置文件。所以NULL不能直接用啊,tidy_repair_string($string,array("wrap"=>0),"utf8")
直接解决问题。
(事实上,我一直在怀疑我的页面中是否有一些字符串tidy库处理的有问题,比如一些特殊字符,正如上面所写的,它支持的编码有问题,而我写的input-encoding为gb2312,所以就不正常了?转换有问题?)没有很多时间解决这个问题,主要是被他折腾了一天,所以记录一下。
机器上早就没有windows了,所以bootcamp分区对我来说也就没有了意义,主要是机器刚拿到手的时候,被IT分盘分的太厉害了。一半对一半啊。
所以找资料想删除这个bootcamp分区,或者将它的容量再减少一点。
找了一下资料,发现原来在工具的磁盘管理里就可以直接操作:
进入实用工具-》磁盘管理
点中左侧的硬盘(不是点中分区哦,是点中硬盘),在右侧的TAB中,选择分区,可以进行删除或者调整容量大小。
灰常方便,我是将它删除并且重建了一个50G左右的分区,用来存放我的一些重要文件(比如:软件、我的WEB代码 之类的。),这样以后我要备份也只备份这一个分区就OK了
Onenote是我在WIN下用的最多的一个程序之一,嗯,Office里面就这一个软件我最喜欢了。为了它,我买了个所谓的正版的Office。然而,在MAC下是无法使用的,这个,你懂的。
看到36氪上的这个新闻的时候,很是欣慰,原来微软哥没有忘记我们,没有抛弃我们,虽然这仅仅只是一个简单的版本,而且是基于skydrive的,但总算有了一个开头了。
先看新闻:
微软刚刚升级了iOS上的OneNote应用到1.3版本,新版将支持任何运行iOS 4.3或以上系统的设备,包括iPad和iPad 2。
除了开始支持新的设备,iPad版本的OneNote还充分利用了平板电脑的大屏幕优势,在使用地图、侧边栏菜单以及其他iPad专有功能时更加适合。
OneNote在2003年第一次随微软Office套件一起发布,今年1月份时候移植到了iPhone上,作为Office套件的一部分,它是唯一一个可以在iOS设备上使用的Office应用,OneNote使用微软的SkyDrive云服务自动跨设备同步笔记。
尽管OneNote应用本身免费,但是用户的笔记数被限制在500以内,超过500后则需要付费,iPhone和iPod Touch用户需要支付4.99美元,iPad用户需要支付14.99美元。如果你在SkyDrive上有超过500条笔记,你仍然可以在你的iOS设备上查看它们,不过微软说,你不能够编辑这些笔记或新建笔记。
不知道微软扩展OneNote支持iPad是意味着要将更多Office应用带到iOS设备上?我们拭目以待。
.jpg)
原文来自:http://www.36kr.com/p/68055.html
----------
静候mac版本,那样我就真的可以完全脱离windows了(除了玩游戏。NND,arclive没法玩,CS没法玩,真纠结)
看到张宴的微博上有一条消息:
推荐一个工具:imewlconverter - 深蓝词库转换( http://t.cn/h4YOCi ) ,可以将搜狗拼音输入法细胞词库( http://t.cn/hWFEQ )*.scel 格式转换成文本格式。然后,可以将提取的一些专用词库,用于中文分词接口中去。
不错的工具,毕竟做分词的也好,做其他的也好,都可能会需要用到这个。所以我先备份了这条微博
官方地址是:http://code.google.com/p/imewlconverter/
张宴的微博:http://weibo.com/rewinx
OK,顺便再贴一下张宴的微型HTTP队列:http://blog.s135.com/httpsqs/
所谓的优点:
HTTPSQS 具有以下特征:
● 非常简单,基于 HTTP GET/POST 协议。PHP、Java、Perl、Shell、Python、Ruby等支持HTTP协议的编程语言均可调用。
● 非常快速,入队列、出队列速度超过10000次/秒。
● 高并发,支持上万的并发连接,C10K不成问题。
● 支持多队列。
● 单个队列支持的最大队列数量高达10亿条。
● 低内存消耗,海量数据存储,存储几十GB的数据只需不到100MB的物理内存缓冲区。
● 可以在不停止服务的情况下便捷地修改单个队列的最大队列数量。
● 可以实时查看队列状态(入队列位置、出队列位置、未读队列数量、最大队列数量)。
● 可以查看指定队列ID(队列点)的内容,包括未出、已出的队列内容。
● 查看队列内容时,支持多字符集编码。
● 源代码不超过800行,适合二次开发。
可以利用它来做很多事情,比如我曾经想做的短信队列发送,原来我都是利用MYSQL来做队列的,这样的效率不是特别高。而且额外写了很多程序。现在可以偷懒了。
窝窝(Walkerlee)最近说他折腾了一个SQL,提升了他的工作效率。表示要到博客来投稿,今天我把这个SQL放出来了。
嗯。我总不能说,因为我确实会这个SQL就断了他投稿的心,否则他会砍我的。
前因:
数据库结构如下:
要求:一句SQL实现,分别统计type1,2,3,4 一共多少money (group by uid)
原先做法:分开查询 然后用php合并结果,如
select sum(money) form test where type = 1 group by uid
select sum(money) form test where type = 2 group by uid
select sum(money) form test where type = 3 group by uid
select sum(money) form test where type = 4 group by uid
现在要求一句SQL。
窝窝问我的时候,我说if(a,b,c)这个函数可以解决,于是他很愤怒。。。。
贴出了最终的SQL语句:
SELECT
uid,
SUM( IF(`type`=1, money, 0 ) ) AS `BuyByCash`,
SUM( IF (`type`=3, money, 0 ) ) AS `BuyByCard`,
SUM( IF( `type` IN (1,3), money, 0 ) ) AS `BuyByCashAndCard`,
SUM( IF(`type`=2, money, 0 ) ) AS `SellByCash`,
SUM( IF(`type`=4, money, 0 ) ) AS `SellByCard`,
SUM( IF( `type` IN (2,4), money, 0 ) ) AS `BuyByCashAndCard`,
SUM(money) AS `Amount`,
COUNT(*) AS `DataNums`
FROM `test`
group by `uid`
窝窝比较郁闷,因为以前处理起来很麻烦,而现在一句就解决了。
此事完结后,他又介绍了一个小技巧:
我有一个relation表,用来存储订单下面的游客
ALTER TABLE `travel_order_customer_relation`
ADD CONSTRAINT `travel_order_customer_relation_ibfk_1` FOREIGN KEY (`oid`) REFERENCES `travel_orders` (`id`) ON DELETE CASCADE;
然后我用了一个外键,这样order被删除时候,这个关系表里面的相关数据也就自动删除了
----
然后我也很郁闷的说,我的数据表不是INNODB的,所以这个功能我不能用。。。也很纠结