Category Archives: 他山石

Hello World 他山石

[转] div模拟textarea

使用很简单,一个普通的block元素上加个contenteditable=”true”就ok了,如下:

<div contenteditable="true"></div>

true外面的引号甚至去掉都没关系。

contenteditable属性虽是HTML5里面的内容,但是IE似乎老早就支持此标签属性了。所以,兼容性方面还是不用太担心的。

ok,最麻烦的模拟textarea的可编辑效果已经解决了,现在想要使用div实现高度自适应那就像是给花花草草松松土一样容易的。使用min- height属性基本上就一步到位了,考虑到IE6浏览器对min/max家族不屑一顾,结合其内部元素溢出会撑开父标签高宽的特性,IE6浏览器直接定 高就可以了。

CSS代码:

.test_box {
    width: 400px; 
    min-height: 120px; 
    max-height: 300px;
    _height: 120px; 
    margin-left: auto; 
    margin-right: auto; 
    padding: 3px; 
    outline: 0; 
    border: 1px solid #a0b3d6; 
    font-size: 12px; 
    word-wrap: break-word;
    overflow-x: hidden;
    overflow-y: auto;
}

HTML代码:

<div class="test_box" contenteditable="true"><br /></div>

——-
转自:http://blog.163.com/xiangfei209@126/blog/static/9869567420113154453944/

Hello World 他山石

log4php配置文件实例

文件名:log4php-1.properties

log4php.appender.default = LoggerAppenderDailyFile
log4php.appender.default.layout = LoggerLayoutPattern
log4php.appender.default.layout.ConversionPattern =%d{ISO8601} | [%p] | %m%n 
log4php.appender.default.datePattern = Ymd
log4php.appender.default.file = /Users/logs/php/%s.log
log4php.rootLogger = DEBUG,default

这样就可以通过建立多个配置文件,方便为每一个产品或者模块采用不同的配置,当然生成的日志目录也可以灵活管理。
调用如下:

include_once('log4php/Logger.php');  
Logger::configure("log4php-1.properties");  
$logger = Logger::getLogger('cam'); 
//debug
$logger->debug('---debug---');

————
参考:http://hmw.iteye.com/blog/1147299
下载log4php:http://logging.apache.org/log4php/download.html

Hello World 他山石

3D立方体

只支持safari和chrome ;)

1
2
3
4
5
6
7
8
9
10
11
12


转自:http://www.webkit.org/blog-files/3d-transforms/morphing-cubes.html

Hello World 他山石

[转]使用ajax和history.pushState无刷新改变页面URL

在访问现在很火的google plus时,细心的用户也许会发现页面之间的点击是通过ajax异步请求的,同时页面的URL发生了了改变。并且能够很好的支持浏览器的前进和后退。不禁让人想问,是什么有这么强大的功能呢?

HTML5里引用了新的API,就是history.pushState和history.replaceState,就是通过这个接口做到无刷新改变页面URL的。

与传统的AJAX的区别

传统的ajax有如下的问题:

虽然ajax可以无刷新改变页面内容,但无法改变页面URL

其次为了更好的可访问性,内容发生改变后,改变URL的hash。但是hash的方式不能很好的处理浏览器的前进、后退等问题

有的浏览器引入了onhashchange的接口,不支持的浏览器只能定时去判断hash是否改变

再有,ajax的使用对搜索引擎很不友好,往往蜘蛛爬到的区域是空的

为了解决传统ajax带来的问题,HTML5里引入了新的API,即:history.pushState, history.replaceState

可以通过pushState和replaceState接口操作浏览器历史,并且改变当前页面的URL。

pushState是将指定的URL添加到浏览器历史里,replaceState是将指定的URL替换当前的URL。

如何调用

var state = {
	title: title,
	url: options.url,
	otherkey: othervalue
};
window.history.pushState(state, document.title, url);

state对象除了要title和url之外,也可以添加其他的数据,比如:还想将一些发送ajax的配置给保存起来。

replaceState和pushState是相似的,不需要多做解释。

如何响应浏览器的前进、后退操作

window对象上提供了onpopstate事件,上面传递的state对象会成为event的子对象,这样就可以拿到存储的title和URL了。

window.addEventListener('popstate', function(e){
  if (history.state){
	var state = e.state;
    //do something(state.url, state.title);
  }
}, false);

这样就可以结合ajax和pushState完美的进行无刷新浏览了。

一些限制

1、无法跨域,这个是必然的。引用曾经在网上看到的一句经典的话:“如果javascript可以跨域的话,那他就可以逆天了!”

2、state对象虽然可以存储很多自定义的属性,但值不能是个对象。

对应后端的一些处理

这种模式下除了当前使用ajax可以无刷新浏览外,还要保证直接请求改变的URL后也可以正常浏览,所以后端要对这些处理下。

1、对结合pushState的ajax可以发送一个特殊的头,如: setRequestHeader(‘PJAX’, ‘true’)。

2、后端获取到有PJAX=true的header时,将页面中通用的部分都不输出。比如:PHP可以通过下面的判断

function is_pjax(){
	return array_key_exists('HTTP_X_PJAX', $_SERVER) && $_SERVER['HTTP_X_PJAX'] === 'true';
}

虽然接口上只有pushState、replaceState、onpopstate,但在使用的时候还是要做很多处理的。
————–
转自:http://www.52ladybug.com/?p=202

他山石 美食

[转]吃货必知的入门级调料

葱蒜荤菜也,大蒜和大葱

蒜香排骨、蒜泥茄子、蒜薹炒肉、蒜蓉西兰花……没错,首先要介绍的入门级调料,正是纵贯大江南北,男女老少通吃的大蒜。

http://www.jiangkl.com/wp-content/uploads/2011/09/1.jpeg
【大蒜对食物的渗透力和在人群中的影响力,从“蒜你狠”的涨价风波中可见一斑。生吃、烤吃、煮着吃,有的人无蒜不欢,有的人却对大蒜的气味唯恐避之不及……】

在汇通八方的厨房调料清单中,蒜葱已盘踞中土庖厨数千年。尽管大蒜带着刺激性气味,辛辣中国两千年以上,但土里土气的它却是正宗的外来货,追溯原产地,还要来到中亚、西亚或欧洲一带。

虽然现在大蒜在我国的栽培几乎无处不可,但不管哪,最为人熟知的都是那个藏在地表之下的蒜头,也就是蒜的“鳞茎”。作为葱属植物的重要特征,要说清“鳞茎是变态了的茎”这件事儿还真有点儿困难。不妨这么想象:将草本植物的茎垂直压扁,其上的叶子必然会随着间距的极度缩小而紧紧包覆,再将这些包覆的叶子肉质化,一个典型的鳞茎就形成了,比如主要由层层变态叶组成的洋葱头。别看鳞茎是一种压扁的“变态茎”,但茎顶端的顶芽和茎叶结合处的腋芽可是样样俱全,而且每个芽都可能发育成为一个完整的植株——回到蒜头的身上,那一个个的蒜瓣,就正是鳞茎中肉质化的侧芽。

http://www.jiangkl.com/wp-content/uploads/2011/09/2.jpeg
【大蒜(Allium sativum),百合科Liliacea 葱属Allium,多年生草本,栽培历史悠久,幼苗、花葶和鳞茎均供蔬食。1.大蒜鳞茎 2. 蒜薹 3.大蒜植株】

除了鳞茎,大蒜的地上部分也还颇有几个常在厨房中出没的角色,比如,正常栽种得到的茎叶(青蒜)、黑暗条件下培育的黄化茎叶(蒜黄)以及将近花期时长出的花葶,也就是蒜薹(tái)。不过这几种食材的商品名在不同地区的称呼比较混乱,作为一个自然控,不妨尝试在交易的时候说“来半斤黄化大蒜”,或问“这捆大蒜花葶怎么卖?”嗯,绝对不会搞混。

《玉篇•艹部》:“葱,荤菜也。” 《闲居赋》:“菜则葱韭蒜芋,青笋紫姜。”

说完大蒜,另一种使用同样普遍的调味品大葱就该闪亮登场了。

http://www.jiangkl.com/wp-content/uploads/2011/09/3.jpeg
【大葱炒鸡蛋、大葱蘸酱,这应该是大葱最为耀眼的亮相方式吧。在大葱价格上扬的时候,由于很多店家舍不得放大葱,于是“大葱炒鸡蛋”就变成了“鸡蛋炒大葱”……】

也许有人注意到了,本文介绍葱蒜的时候用的都是“大葱”、“大蒜”的称呼,但这可不是为了突出与喝咖啡者不同的乡土味儿,而真的是为了避免混乱。葱属植物亲兄弟500余种,仅国内就有110余种,可食者更是难以统计,《闲居赋》中的葱、韭、蒜皆在其列,因此俗谓混淆之事在所难免。事实上,这也正说明了为每一种植物取唯一拉丁学名的重要性。大蒜由张骞自西域引入,本名为“葫”(hú),而中国本来也有原生的蒜,那就是小蒜(Allium macrostemon),估计是后来由于不够霸气,被夺走了名字。

而论及葱,则更加说不清了——“火葱(Allium cepiforme)在南方普遍栽培,常称‘小葱’以别大葱”;“野葱(Allium chrysanthum)广布于青藏高原至华中,葱岭或由之得名”;“北葱(Allium schoenoprasum)北方区广布,欧洲食用”……以至于《汉语大字典》中对于“葱”字的解释只能说是“葱类植物”,与此相对的是,蒜茴桂椒等却都有具体一至数种的描述。大葱本身的野生起源现已不可考,只能“推测”为仍野生于北亚的阿尔泰葱(Allium altaicum)。

http://www.jiangkl.com/wp-content/uploads/2011/09/4.jpeg
【大葱(Allium fistulosum),百合科Liliaceae 葱属Allium,多年生草本,全国各地广泛栽培,国外也有栽培,做蔬菜食用。】

不过,植物分类本就是参杂主观成分的一项工作,此“种”与彼“种”相比,其差别若按其他两种间的区别程度来看,也许足以归并成一种,或再拆为数种。但要知道,植物并非为人类而生存,所以也不会按照人的标准一种一种演化分明。这点还是古人想得明白,无论是《玉篇》中的葱还是《说文》中的蒜,一句话三个字就足以形容何为葱蒜了——不过“荤菜也”。

果作干与辣,胡椒和花椒

在当代煲汤界,胡椒虽然是作用举足轻重的香料,却也并非身价不菲之物。但在古代欧洲,这种可作为香料和调味料使用的物质,却由于罕见和极受欢迎变得异常昂贵,只有极富阶层才能够买到。

http://www.jiangkl.com/wp-content/uploads/2011/09/5.jpeg
【胡椒猪肚汤和黑椒牛柳,这两道胡椒作料的代表菜应该早已名声在外了吧!】

在调料植物里头,如果“洋气”将南洋雨林的湿热算在内的话,那么不管是名字还是身世,胡椒都绝对算得上“洋气”十足。别看“胡”本来是中土针对北方异族的称呼,但原产胡椒的地方却在南亚和东南亚热带地区,正好位于相反的国门之南。

http://www.jiangkl.com/wp-content/uploads/2011/09/6.jpeg【胡椒(Piper nigrum),胡椒科Piperaceae 胡椒属Piper,木质攀援藤本 1.胡椒调料粉末 2.捣鼓和研磨胡椒的传统武器 3.胡椒植物】

胡椒的分布区属于热带亚洲,全年都有着稳定的高温、充沛的降水,以及随即而来的、茂密且高大的植被——这里正是世界三大热带雨林区之一。为了适应雨林内的高度荫蔽,胡椒在这样的环境里进化成了善于取巧的攀援植物,通过依附更高更直的其他树木来获得更多的光照。所以我们如果去到胡椒的栽培区,就会见到取代沟沟垄垄的,是一排排木石之属所制成的桩桩柱柱,用以供胡椒的气根攀附。而在油亮的胡椒叶丛之中,那一串串的果实就是我们所食用的胡椒粉原料。

http://www.jiangkl.com/wp-content/uploads/2011/09/7.jpeg
【原料浆果是否成熟,是否去皮等制作工序的差异,使胡椒成品的颜色变得五花八门。】

与胡椒粉呛鼻的印象迥异,胡椒的果子们属于肉果大类中多汁的浆果类果实,而且成熟后会呈现浓艳纯正的鲜红色。我们所见到胡椒粉的“干燥”和“无彩”则是由于其制作过程中包括了干燥和去皮等过程,早已看不出胡椒果实的原样。但在亚洲部分地区,还是可以见到通过不同加工方法得到的绿胡椒和红胡椒。

《尔雅•释木》:“檓,大椒。”郭璞注:“今椒树丛生实大者,名为檓。” 《后汉书•第五伦传》:“伏见虎贲中郎将窦宪,椒房之亲……”

既然胡椒是“番邦之椒”的意思,那么必然有一种早就被利用的“土椒”与之对应了,难道是辣椒(Capsicum annuum)?不然,辣椒产于美洲,入驻中国的时间比胡椒还要晚得多。于是,答案明显地指向了辣椒的搭档——花椒。

http://www.jiangkl.com/wp-content/uploads/2011/09/8.jpeg
【不管是火锅,还是花椒鱼片、花椒鸡之类的菜品,在川菜中,花椒可是享有“川菜灵魂与幽物”的美誉。】

花椒不仅在当下凭借麻辣的口感辅助川菜横行全国,它的果实早在数千年前就已为民熟知和使用。然而尽管都是干巴巴的果实产物,花椒粒却和后天干燥的胡椒粉不同,生来就没有什么汁水,于是花椒所属的“蓇葖果”(一种每个果子仅由一枚心皮形成的果实类型)也就被归入了干果大类。

http://www.jiangkl.com/wp-content/uploads/2011/09/9.jpeg
【花椒(Zanthoxylum bungeanum),芸香科Rutaceae 花椒属Zanthoxylum,落叶小乔木 1.川菜中,花椒和辣椒可算是生死不离 2.花椒调料 3.花椒植物】

“花椒”一名最早的文字记载出自《诗•唐风•椒聊》:“椒聊之实,蕃衍盈升。”由于花椒每颗结实树上都缀满海量鲜红的果子,在擅长联想的国人眼中,花椒被解读成生殖能力旺盛的象征,加之还能“避邪”(估计是指驱虫防腐的功效),所以花椒在古时常被用来填垫墓室内棺或涂糊宫女住房的墙壁,以取“多子多孙”之意,后来宫中女眷的住房也因此被称为“椒房”。 据此,我们可以推断出开篇《后汉书》中“椒房之亲”的这位窦宪大人应当是一名外戚。

—————

转自:http://www.guokr.com/article/62322/