Author Archives: jkl

玩转微信公号开发(一)——使用“开发模式”

近半年都在做基于微信公众号的开发,节前几天工作不忙,把相关的(可以公开的)经验写到blog里给大家分享,也算自己的一个小总结

先来理清关于微信公号的几个概念:

订阅号与服务号:

订阅号是相对比较好申请,但是权限较低的公众号

服务号由订阅号升级得到,貌似现在要花钱才能升级~~

订阅号相对服务号的唯一的优势是:每天可以群发一条信息,而服务号每个月才能群发一条

服务号可以享有更多的高级接口权限,比如客服消息、定位、支付等

编辑模式与开发模式:

两种模式下,均可以在微信后台对用户做消息的回复、群发,管理粉丝群。他们的不同,主要在自动回复的能力上

编辑模式下,可以在微信后台设置各种自动回复,可以根据关键字设置回复~~但仅此而已,再复杂的回复模式(目前)就做不到了

开发模式下,可以将用户的消息转到公号后台所设置的服务器,然后有服务器根据各种消息类型和业务逻辑,以及具体的用户,来做出回复

编辑模式和开发模式,只能选一个

开发者的服务器配置:

包括一个服务器网关的url地址,和一个token

网关,即你的服务器地址,用来接受用户发给你公众号的各种消息;你要回复给用户的消息,即为这个请求的响应

token,一个用作标示的字符串,让服务器可以判断哪一个公众号的消息

转载请注明出处:http://www.jiangkl.com/2014/01/weixin_dev/

—————–over,今天先到这里,下次继续

[转]php字符串首字母转换大小写

首字母变大写:ucwords()

$foo = 'hello world!';
$foo = ucwords($foo); // Hello World!
$bar = 'HELLO WORLD!';
$bar = ucwords($bar); // HELLO WORLD!
$bar = ucwords(strtolower($bar)); // Hello World!

第一个词首字母变大写:ucfirst()

$foo = 'hello world!';
$foo = ucfirst($foo); // Hello world!
$bar = 'HELLO WORLD!';
$bar = ucfirst($bar); // HELLO WORLD!
$bar = ucfirst(strtolower($bar)); // Hello world!

第一个词首字母小写lcfirst()

$foo = 'HelloWorld';
$foo = lcfirst($foo); // helloWorld
 
$bar = 'HELLO WORLD!';
$bar = lcfirst($bar); // hELLO WORLD!
$bar = lcfirst(strtoupper($bar)); // hELLO WORLD!

字母变大写:strtoupper()

字母变小写:strtolower()

转自:http://www.jiangkl.com/?p=1454&preview=true

[转]冰火人物词谱

浣溪沙·珊莎

犹记临冬梳晓鬟,夜回神木盼家还。鹰巢望断万重山。
梦醒方知身是客,奔狼泣血泪长潸。筑得雪堡故人攀。

评:《浣溪沙》尤适此如梦如烟情境,化用后主句不失机巧,最喜”奔狼泣血泪长潸“,彼懵懂女儿终尝切肤痛!

少年游·百花

长枪绣甲马蹄轻,绝色满高庭。   
河湾跋尽,狂风望断,甘借虹为名。   
  
烛光难秉心阳落,何苦护花铃。   
好个皮囊,一身武艺,都作了浮萍。

评:百花骑士这个角色看似单薄,细咂却别有滋味,一如本词,当然,马丁秉承”帅哥去死去死“原则,是以”做了浮萍“。。。

临江仙·蓝礼

莫忆苦桥花伴饮,座中多是豪英。虹披铜亮耀无声。
枪驰锤掣里,长剑指君临。   

血影锈驳如一梦,魂飞黑水堪惊。闲登风堡盼新晴。   
群鸦歌盛宴,岂是为身名。

评:化用陈与义《临江仙》,苍凉怀想之意,最切全书憋屈便当角色1号——”亮铜“蓝礼·拜拉席恩(话说这不是作者的围脖名咩)

一剪梅·瑟曦

长发短鬃绝世姿
忘却银龙,时觅金狮
无端逐鹿念白袍,一片心思,几段贪痴

犹记当年封后时
手似柔荑,肤若凝脂
机关算尽太聪明,成也为失,败也为失

评:同凤辣子相比,瑟曦野心远甚而才不及万一,无怪乎“成败皆为失”,所误者又不止卿卿性命。又:冰火和红楼的相切点甚多

破阵子·巴利斯坦

一骑罄诛黑火,孤身勇救疯王。无畏死随龙焰后,有义择栖鹿角旁。白袍凝晚霜。
铁座不识冷暖,铜钱那忆炎凉。掷剑横眉千丑避,渡海埋名一杖藏。老夫笑子狂。

评:全谱以此阕为冠,意境寥远,字句凝练,典故穿插若天成,“一杖藏”句堪比“事了拂衣去,深藏身与名”

六州歌头·詹姆

凯岩冷峭,云雨试初情。林匪凛,拂晓任。少年鸣,入君临,一夜风流寝。白袍命,黑心令,铁座镜,君临锦,奈何行。铁卫伴疯,忍看双狼噤。邪焰冥冥。烽烟终四起,天下故丁零,野火焚城,弑君名。 

世人轻甚,自凉沁;谁能饮,剑独喑。北荒境,风波盛,动刀兵,死魂灵。上阵雄狮横,呓语病,入敌囹。孤我性,雠也敬,妞儿倾,断臂犹腥,守誓刃尖品。兄弟且听。笑奔流故水,只换了安宁,断了卿卿。

评:作者自言詹姆为其最爱人物,於我心有戚戚焉,填一阙长调,字字血泪,阅之无言,唯唏嘘耳,若得见弑君者其人,当云“我是人间惆怅客,知君何事泪纵横”

忆王孙·伊蒙学士

潜龙塞外饮霜河,烈焰长封冰火歌。
旧镇迢迢学士驮。忆伊戈,梦老年高无曲和。

评:老叟伊蒙独白为全书催泪段之最,《忆王孙》似为其量体裁

如梦令·乔里凯索

久卫临冬夕昼  
长侍寒冰左右  
一意护君南  
却被刀枪扎透  
悲否,悲否
忠良一门无后

评:音韵甚佳,这“悲否”当问“荣誉的”艾德公爵。。。

西江月·韦赛里斯坦格里安

血馈丝银眸紫,命赠气傲心高。
复国暮暮与朝朝,怒睡他乡一觉。  

乞丐失魂游走,国王落魄飘摇。
欲求金冠把愁浇,却是迎头化了。

评:阅后不禁莞尔,哀其不幸,怒其不明,叹其不智

卜算子·梅丽珊卓

铜发火眸凝,红剑朱袍舞。
焚尽七神不肯休,独奉光之主。  

暗向影边生,灾自血中蛊。
冬至星辰泣血时,不负伊人苦。

评:此角非凡物,然何以化严蕊咏梅词?暗示其命运?

蝶恋花·玛格丽提利尔

庭上繁枝苞蕾驻。掩蔼娇姿,风绿玫花鹿。
醪酿不知醇醴苦,无辜只把君来误。

京远城污人面恶。泥淖芬芳,世险遭人妒。
笑靥逢迎冰履步,蔓藏刺隐从容赴。

评:“玫瑰,花,鹿”——合作“玫花鹿”,捧腹。。。将原作“啤酒甜酒论”化为“醪酿醇醴”,神来之笔

江城子·泰温兰尼斯特

牙尖爪利目冰凉。
忍张狂,隐刚强。
睥睨西岩,何处赤狮猖?
待到来年雨季后,城壁荒,人丁亡。

英才超世辅君王。
筑房梁,固萧墙。
无奈天疯,伏匿待羔羊。
倚祸化福兵甫定,箭断肠,泛金黄。

评:枭雄判词自当别具一格,上阕气势喷薄,恰如其分,末句“泛金黄”。。。原著读者再次捧腹。。。

贺新郎·提利昂兰尼斯特

造化将卿负! 
半身猿、断鼻残面,踽凉孑步。 
刺语毒舌心防铸,风过不留喜怒。 
笑纳了、亲疏姊恶。 
自古庸才天不妒,又何忧世态人情误?  
黑水处,绿炀赋。  

狗烹兔死知寒暑。  
一生嘲、时讥运笑,弄人无数。  
意御长城归来去,雪落长埋毁誉。 
辞众叛、茫茫前路。 
目送海天离故土,但忆兄恩怨织悲苦。
金亮发,竟白缕。

评:妙人当有妙词!《贺新郎》之于侏儒乃神吐槽,填得工整不失巧妙颇为不易 “自古庸才天不妒,又何忧世态人情误”!

水调歌头·艾莉亚

游走运河岸,飘荡异国湾。
黑白无面深处,淡了旧时颜。
还记临冬笑语,小妹酡容乱发,飞矢女红蛮。
狼聚冬即至,鹿死夏将关。

家国破,山河在,流离艰。
仇雠莫忘,凡人一死如烟。
意欲寻亲觅故,怎奈迷途叛道,人算不如天。
衣带针缝水,何日把家还。

评:作者灵感愈写愈不可收拾,斧凿雕琢愈发少了,处处是妙笔,“凡人一死如烟”可否成为原著官方翻译?lol

饮马歌·卓戈卡奥 

日星豪气洒,夜雨柔情雅。 
血盟偕骑驾,怒须独刀剐。 
浴龙生,泣马别,落落伊人寡。
去长夏。

评:英雄气短!

渔歌子·布林登徒利

鳟跃奔流水上漂,
鹰驻深谷月边聊。
穿云箭,没鱼息,
江湖浪里一黑条。

评:词牌选得妙,“浪里黑条”。。。节操碎一地。。。

洞仙歌·琼恩雪诺

茕茕白子,猎猎黑衣换。
北境风来故人散。
报琼恩,守望至死方休,承雪诺,恨把家门割断。

舞鸦群剑雨,生世疑云,命运迷津苦多难。
试问夜如何?又缀冰寒,偏逢我、星移斗转。
但抚剑、凛冬几时临?又不道、人心暗中清算。

评:一直不喜该所谓“主角”,诚如词中所言,孺子忘了那“人心清算”~~(卷五剧透 勿深究)

钗头凤 凯特琳·徒利

鳟鱼灿,冰狼悍,嫁夫得反生儿叛。
天时断,人和算,仇雠未灭,眷亲难判。
叹,叹,叹。

修途漫,浮心涣,寸功虽竟家罹难。
临冬畔,鱼梁干,化石而狠,诉情则乱。
散,散,散。

评:怨词一阕,倒也应了这自作聪明的贵妇人

——-
转自:http://site.douban.com/121570/widget/notes/4054979/note/208414600/
诗词原帖:http://tieba.baidu.com/p/1442325754 作者:aiweiguan123

go语言入门[3]—-并发&线程通讯

go语言的的多线程是通过“goroutine”来实现的,通过“go”关键字新建一个goroutine
比如:

    go hello()

其实,goroutine比线程更小,“十几个goroutine可能体现在底层也就五六个线程”,且是内存共享的

不同的goroutine之间,通过channel来通讯,比如下面的的程序,主线程是一个http sever,收到http请求后,将url塞入channel,然后下面的“see”函数在来处理这个channel

package main
 
import (
	"fmt"
    "net/http"
)
//定义一个channel
var cc chan string
 
func main() {
    fmt.Println("--ubox-event--start--")
 
    //新建一个channel	
    cc = make(chan string)
    //使用一个goroutine启动see函数,编号为1
    go see("1")
    //启动httpServe
    http.HandleFunc("/*", httpServe)
    http.ListenAndServe(":8008", nil)
}
 
func httpServe(w http.ResponseWriter, req *http.Request) {
    url := req.URL.String()
    w.Write([]byte("Hello"))
    //将url塞入channel
    cc <- url
}
 
func see(n string) {
    fmt.Println("--see--" + n + "--start--")
    //通过range参数取出channel,每当上面httpServe被塞入一次,这里即执行一次
    for s := range cc {
        fmt.Println("--see--url-" + n + "-" + s)
    }
}

go run 启动上面的程序,然后访问localhost:8008/xxxxx,便会看到 “–see–url-1-/xxxxx”

有意思的是 ,如果你在上面再启动两个goroutine,即go see(“2”),go see(“3”)

然后不断访问localhost:8008/xxxxx,打印出来的并不一直是 “url-1”,而是 url-1、url-2、url-3轮流出现,且每次访问只出现一次,也就是说channel并不会一直分配给第一个range

[转]前端开发的一些经验

上上周百度技术沙龙的是前端开发专题,第二场,来自豆瓣的前辈王克军所讲的“工程之美”给我留下了深刻的印象,以下ppt节选

  • 业务逻辑复杂时,通用和业务代码的分离、复杂度控制
  • 需求多变时,大而全的通用组件无用武之地,轻量的,功能单一的更便于复用
  • 工具防止人做愚蠢的事,也阻碍人干聪明的事
  • 工具不是越强大越好,而是简单有效最好
  • 工具不是越傻瓜越好,要留给他人发挥的空间
  • 前端开发,80%是工程问题,20%是技术问题
  • 模块要完全独立(借助工具实现)
  • 通用代码中绝不混杂业务逻辑
  • 代码逻辑复杂时,应该按业务拆分,不是按展现拆分
  • 代码架构借鉴SOLID原则(职能分离、开闭、里斯替换、接口分离、依赖反转)
  • 从实际开发中积累形成生态体系
  • 技术问题上开放,工程问题上保守
  • 在完成的基础上追求完美
  • 工具要简单,配置要简单
  • 工具是可以替换的,而且总是多变的,不要成为工具的努力
  • 对于复杂的问题,不断进行才接直到足够简单
  • 学点原研哉的Exformation哲学
  • 更多的时间做有趣的事!

“我们的发明常常是漂亮的工具,只是吸引我们的注意力,使我们离开了严肃的事物。”—-卢梭《瓦尔登湖》

更多精彩,请关注现场视频(估计过几天会更新上来):http://www.infoq.com/cn/zones/baidu-salon/

 

 

 

微信

虽然微信已经出来2年了,作为一个对新鲜事物不甚敏感的人,我是从三个月前,因为要为公司做微信相关的项目,才开始关注微信的
开始的时候,还以为微信api就像微博一样,也就是发发微博之类的功能,但仔细看了微信公众账号的api以后,最大的感觉就是:哇塞,这玩意好牛逼~~~微信并没有说自己可以干什么,却也没说自己不能干什么~~~微信就是一个一对一的交流平台(当然,也可以一对多),可以文字、图片、位置、语音~~就像两个人聊天一样,所以能通过聊天做的事,通过微信也能做

昨天的腾讯合作伙伴大会,下午的微信专场里,除了介绍5.0的新功能意外,还有十个来自各行业的微信公众账号做经验介绍,这其中,既有各类企业用户,也有如广东公安这样的政府部门,在他们的使用中,大概包括了下面的功能

1. 客户服务
基于微信的一对一交互,客服平台是最常见的微信功能,甚至不需要对它做什么开发,直接使用腾讯自身的微信后台就可以完成这个功能
2. 营销
虽然腾讯并不想让微信成为营销工具,并且给群发功能加了很多限制,但却也挡不住用户从微博上继承来的习惯,不过效果怎么样,就很难说了
3. 查询
比如说,在做了账号关联后,查询订单信息,查询信用卡账户信息,查询的介质,可以是文字,也可以是语音、图片、以及位置
4. 替代APP,完成更加复杂的功能
对于界面要求不高的应用,完全可以使用微信公众账号替代APP,比如生活服务类的应用 出门问问,完全没有APP,通过微信实现所有的文字、语音的问询服务等功能

在5.0的微信,还将加入微信支付的功能,这样,一大批电商就可以直接在微信里卖东西了

关于使用微信的一些使用建议,@青龙老贼 给出建议最有参考价值:互动塑造品牌,服务创造价值,走原创化精品化专业化的道路

go语言入门[1]—-发邮件

这里说的发邮件,用的是“net/smtp”,不多说,看代码

package main
 
import (
	"net/smtp"
	"fmt"
	"strings"
)
 
//对发送接口的简单封装
func SendMail(to, subject, body, mailType string) error{
	//发件服务器相关配置,这里以gmail为例
	u := "xxxxx@gmail.com"
	p := "xxxx"
	host := "smtp.gmail.com"
	port := "25" 
	//Auth
	auth := smtp.PlainAuth("", u, p, host)
	var content_type string
	if mailType == "html" {
		content_type = "Content-Type: text/html; charset=UTF-8"
	}else{
		content_type = "Content-Type: text/plain; charset=UTF-8"
	}
	msg := []byte("To:" + to + "\r\nForm: 老大<" + u + ">\r\nSubject: " 
		+ subject + "\r\n" + content_type + "\r\n\r\n" + body)
	send_to := strings.Split(to, ";")
	//发信
	err := smtp.SendMail((host + ":" + port), auth, u, send_to, msg)
	return err
}
 
func main() {
	to := "xxxx@163.com;xxxx@gmail.com"
	subject := "test-go-smtpxxx"
	body := "<html><body><hr><h1>test-smtpxxx</h1><hr></body></html>"
 
	fmt.Println("send email")
	err :=  SendMail(to, subject, body, "html")
	if err != nil {
		fmt.Println("mail error: %v", err)
	}else{
		fmt.Println("mail ok!")
	}
}

nodejs-express初体验

上次文章提到,正在用nodejs做一个小项目,现在总算是做完了

学习/搞着玩是一回事,虽然两年前就开始接触nodejs,做实际要用到项目里是另一回事,经过两周的折腾,我这里不想夸,也不想踩,只想说一下我真实的感受,给准备用nodejs的朋友一点参考

整体来讲,nodejs+express的开发模式,感觉还可以,既不像前端大牛们说的一样好,也不像另一些人说的那样一无是处,下面针对几个关键点分别说一下

1. express

早就听人说过,express是个“优秀”的web框架,我这次的使用体验,却让我没有这种感觉。大概是用惯了cakephp那种规约编程/傻瓜化的web框架的缘故,我觉得一个框架最应该做的,就是让使用者不要过多感觉到框架的存在,以最简单的方式获取请求参数/调取model/lib/以及向view层传递显示,可以让人将所有的精力都投入到业务逻辑中~~要不我还用你框架干嘛?

对express,最别扭的一点,就是它的routes配置~~居然每一个请求的url都要去做配置,让我一下想到了java/spring mvc的那个xml~~懒婆娘的裹脚布也不过如此

另一个sb的地方,是它的logger~~本来不想重写日志类的,特别是access日志,服务器能自动记录最好,找了好久,才找到如何设置express 日志的格式,可是设置好以后,发现日志时间记录的不对,格式也不好看,一查原码才发现,logger里用的是date.toUTCString~~UTC啊,尼玛我看日志的时候,还得想着和实际时间差8小时。。。

最关键的一点是,express官方的api极其“简约”,很多东西不得不去翻框架原码才能发现一些“隐藏”的功能

最后,作为一个web框架,居然没有filter,虽然app.use可以部分实现filter的功能,但用起来还是感觉很不爽

2. npm

npm真TMD乱,很多好名字都被占了,占着茅坑不拉屎

比如thrift,装上以后发现根本不能用,版本太老,仔细一看,居然2年没维护了

再比如email,居然没看见在哪儿设置邮件服务器~~太TM扯淡了

3. 模板引擎

express默认的jade就不提了,稍微复杂点的页面,就会搞得一团糟

我用的是ejs,不好不坏,只能说“可用”。我比较喜欢view层代码,后端程序和前端html/js可以一目了然,所以我使用<%作为格式符,然后用jsp编辑器打开ejs文件~~哈哈,一目了然

ejs比较不好用的一点是对于变量的判断过于严格:如果试图输出没往view层传递的变量,页面居然会直接抛500错误~~太较真了吧,你当空串处理不久行了吗?

4. nodejs

不好意思,上面说了3点,大部分都是在踩,现在该说点好的了

js&node,本身还是一款很不错的组合,虽然异步编程需要一些时间来适应,但却给高并发和快速影响带了了天生支持;另外,js语法简单自由,也可以带来很高的开发效率

对于所谓的“前后端共用代码”,我倒是觉得不太有必要~~毕竟,前后端执行环境差异巨大,写这种“公用代码”的维护成本,还不如直接copy一份给前端用

最后,给自己留一个问题:下次你还会选nodejs吗?

以前写过一个简单的前端mvc框架,jLeaf,基本思路是模仿cake和spring来做的,node出来后,曾经想顺势再写一个后端框架,名字就叫jRoot,可惜因为工作忙,也因为人懒,没能实际做出来,看到express这么难用,真想现在就把jRoot做出来,可惜现在更忙了~~~希望后面能有时间把它搞出来,也希望node能有其它更好用的web框架出来

 

新东西

接手一个小项目,本来,想用go语言来做的,于是前半周便开始临阵磨枪的疯狂学习go语言
go真的是个好玩的东西,语法简单,又支持许多高级特性,package管理超方便,集动态语言的灵活、快速开发,与静态语言的高效于一身
语言编码格式神马的常见问题都好解决,eclipse就搞定了
然而,windows安装go环境却颇费了一番周折,开始是8g,后来是go run,最后也没找到合适的调试web程序的方式,只能在linux的测试服务器上做部署调试
虽然是小项目,但仍然要包含各种元素,需要一个一个搞定才能正式做项目
web框架,go有beego和webgo,都是很好用的MVC框架
mysql神马的也都不是问题
最后卡在了thrift上
thrift本身是支持go的,可以生成go的client,但是却找不到完整的例子,thrift文档里的example里没有go,按生成的client里的小例子做,根本走不通。gifhub里的两个go-thrift插件也都没走通。最关键的是,不管是百度还是google,相关的资料几乎都没有。折腾了一天,到周三下午的时候,眼看项目时间周期就要受此影响,最后不得不暂时放弃

放弃了,转向另一个早就想跃跃欲试的东西:nodejs
第一次用nodejs/express做项目也并不顺畅,选什么模板/怎么连mysql/thrift,以及怎么做权限过滤,还好,都解决了,但是最后险些卡在了图片验证码上
搜到的的资料,nodejs的验证码大部分都是基于node-canvas做的。canvas是nodejs的一个图形库,大概类似php所用的GD库。canvas和操作系统结合比较紧密,windows安装再次遇到了问题。要装npm-gyp来编译c++,进而需要安装Visual C++,还要装Python,可是最后“npm install canvas”的时候,还是TM不停的失败
还好,改了一下思路,找到了另外一个可以生成验证码的nodejs小插件:node-ccap,实现了需要的效果

已经很久没真正尝试过后端的新东西了~~~近三年以来,不再用java,也不用很久之前就开始研究的nodejs,而一直使用php,甚至几乎只使用cakephp~~~~鄙视
直到近期,发现cakephp一个很SB,却很关键,会造成整个系统无法工作的bug,才突然意识到,应该学点后端的新东西了

开始的时候没选nodejs,是因为个人其实并不看好nodejs在后端的作为。听过很多nodejs的经验介绍和分享,但几乎无一例外的,使用nodejs做项目的公司,开始时都是前端开发资源过剩,于是让前端团队去承担后端工作。
对于传统的后端开发,nodejs的缺点明显:单进程,与异步
多核时代的今天,nodejs的默认启动模式居然还不支持多核,让人很纳闷
大部分人都不习惯nodejs的异步模式,这也是其使用的一个巨大障碍
另外,基于js的后端程序,其效率可能只能与php相比,与java、go等静态编译型语言相比,先天不足

千里之外

    今天,因为一件小事打电话找二姐,却听到了很不愿意听的消息:老家房子终于要被拆了!
    从两年多以前开始,因为地底下采煤的关系,老家附近几个村就就被镇政府要求拆迁,让村民们搬到几公里外的安置房里去。不过,扯淡的是,安置房那时才刚刚打了地基,ZF的人想让村民们先自己租房子住,再加上补偿款、安置房面积等种种问题,结果可想而知,村民们坚决抵制,总算顶住了两年。可惜,胳膊拗不过大腿,我们的ZF在对付老百姓时总是那么睿智,虽然安置房的竣工日期还遥遥无期,在ZF的威逼利诱和分化瓦解下,村民们还是被迫搬迁
    今天和二姐打电话时,二姐正在帮老爸搬家装车,明天,我家的房子就要被拆了。。。
    刚听到这个消息,因为知道是迟早的事情,所以心里并没有怎么样特别感觉,可是放下电话不久,想起老家的房子,和在那里过的二十几年的日子,我哭了

    我是一个很恋旧的人,自己用过一段时间的东西,只要还有地方放,就绝不会扔掉或者卖掉
    记得还是很小的时候(那应该是我记忆中最早的一块东西), 大概三岁时吧 ~~
    那时,家里的正房还是土坯房子,三间正房旁边还有一间小土房,是做厨房用的。有一天,爸妈找来村里盖房子的人,说要在原来厨房的位置盖两间砖房做配房,当然,要先拆掉那间小土房。我听说以后,估计去找爸妈说不要拆掉那间房子,结果可想而知,这种事情谁会理会三岁孩子的意见。然后,当天晚上,我便坐在小土房门口哭、怄气,直到很晚睡着了才被抱回屋里

    现在要被拆的房子的主体,是在我上小学三年级的时候建起来的,算起来,应该是1991年
    还记得当时建这房子时的很多细节:
    拆旧房子,拆掉前后墙后剩下的山墙,是一群人用绳子拉倒的,每面墙倒下时,都会“轰”的一声巨响~~~
    挖地基的时候,在东面墙的下面,曾挖出一个圆形的土质很松的坑,爸爸回忆说那里曾经是一口井
    房子是秋天盖的,天已经比较凉的,盖房的时候,爸妈睡在过堂屋里,拿一张褓(一种用高粱杆做的席子)挡在门口挡风
    房子刚盖完,粉刷墙壁前的那个晚上,老爸熬夜把所有的电线不好,这样,等粉刷的时候,就可以把电线盖在刷墙的石灰下面了,墙的表面只有开关,不会再有电线
    房子盖好后,一群人合力将一块楼板斜着搭在房顶和地面之间,后来,老爸在这条楼板上用砖头垒出了一级一级的台阶,又将水管焊上去作为栏杆
    。。。。

    房子是平顶的,没事的时候,我经常爬到房顶上玩
    夏天的时候,很多邻居都会来我家房顶乘凉,大家把席子铺在刚刚被太阳晒得暖暖的地面上,舒服极了~~~吃饱喝足,拿把蒲扇赶着蚊子,抬头看着星星,听着大叔大婶们聊着天~~~~
    秋天的时候,房顶上会放些稻草,留着来年绑稻苗用。有一年春节,我在门口放鞭,将一个点着的鞭扔到了房顶的稻草里,没过多久,便听到头顶噼里啪啦的声音,抬头一看~~妈呀,稻草被引燃了。而稻草的旁边,有为很多家供电的电线~~于是,附近的邻居都被调动起来,帮忙灭火,还好稻草不多,没有引起什么大得事故~~~我是村里出了名的“乖孩子”,这可能是我做过的唯一的“坏事”
    我家靠着村里的大马路,每天早晨天一亮就会有各种叫卖声,最早的是换馒头的,巨有特色的吆喝,“换馒头不~~”;然后卖豆腐的、换锅贴的、补鞋的、收头发辫子的、卖香油的、卖各种蔬菜的;夏天的时候还有换西瓜的、换苹果的、换桃子的~~~虽然很吵,却也很方便~~从来不用担心错过卖各种东西的
    经常听到窗子外面传来邻居们的高谈阔论,开始可能是两个人,然后是三个、四个,越聚越多,然后突然某大婶说一声“哎呦,天不早了,我得回家烧汤去”“慌慌嘛,还早那”“我也得走了,二妞子快放学了”…..然后各自散去
    我家的院子里曾经种过一棵葡萄树,葡萄藤爬满大半个院子,整个暑假,我每天都会去“巡视”N次,找遍每一条藤的每一串,不放过每一颗哪怕只是微微变红的葡萄~~O(∩_∩)O哈哈~
    院子中间有个不大的花坛,开始的时候种着月季花,每到夏天都能开出绚丽的红花;过了几年,貌似是某种病,月季死掉了,便又种上了无花果树。从此,除了葡萄,又有了无花果~~嘿嘿
    靠配房门的小花坛里,刚开始种了一棵石榴树,可是,可能是品种不好,也可能是葡萄藤挡了它的光线,这颗石榴树一直没长好,每年结不了几颗石榴,还又小又酸。后来,换成了一棵苹果树~~没长起来~~再后来,记得曾经种过一棵香椿树,也不太成功~~所以最后那个小花坛干脆不种东西了
    院子里种的最成功的一棵树是院东边中的一棵柿子树,妈妈种的,说是等我们有了孩子,可以让孩子们吃柿子。可惜柿子树还没结出柿子,妈妈就去世了。后来,柿子树长的几乎覆盖了东侧大半个院子,每年秋天都能结出上千个大柿子
    从初中开始,和村里的几个同年级的哥们关系越来越好,每天上学,大家总会到我家集合,然后一起去学校,周末,大家也会过来一起玩,下下象棋,玩玩游戏机,或者到附近的打谷场踢踢球。而我们家,就是大家的根据地,无论去玩什么,大家总会到我家来集合

    从高中开始,便开始离开了家,高一高二每周回家一天;到了高三是每月一次;到了大学四每年两次,到了现在~~一年也不见得一次~~~
    10年春节,回老家结婚,是毕业会在家里待的最久的一次,也不过十天而已

    虽然回家的时间越来越短,可是家毕竟是家,每当有什么好事情,总是想回家和爸爸妈妈大姐二姐分享;每当有了什么好玩的东西,总是想带回家去玩;每当在外面受了委屈,仍然下意识的希望能回家,回到自己的小屋里呆上一会

    然而,现在不同了,我的小屋、我的小院、我的小村~~都即将被连根拔起,被从这个地球上抹去。。。。。。而我,不仅无能为力,甚至没能再回去看上一眼

    ————谨以此文,先给即将消失的老家