昕昕尿裤子后...
白天,姥姥带着昕昕去枫丹玩滑梯
昕昕特别喜欢玩那个滑梯
每次去都是高高兴兴的玩一遍又一遍
今天,据说又是玩的很开心
于是,就把撒尿的事给忘了
等憋的不行了,才想着去撒尿
结果,还没来得及把裤子扒开
就已经尿了出来
把裤子彻底的给尿湿了
其实,昕昕已经好久都没尿过裤子了
没想到,尿裤子后
他对姥姥说了一句挺雷人的话:
姥姥可不要告诉别人宝宝尿裤子了
晕啊...
昕昕才2岁2个月,就知道尿裤子羞了...
呵呵
白天,姥姥带着昕昕去枫丹玩滑梯
昕昕特别喜欢玩那个滑梯
每次去都是高高兴兴的玩一遍又一遍
今天,据说又是玩的很开心
于是,就把撒尿的事给忘了
等憋的不行了,才想着去撒尿
结果,还没来得及把裤子扒开
就已经尿了出来
把裤子彻底的给尿湿了
其实,昕昕已经好久都没尿过裤子了
没想到,尿裤子后
他对姥姥说了一句挺雷人的话:
姥姥可不要告诉别人宝宝尿裤子了
晕啊...
昕昕才2岁2个月,就知道尿裤子羞了...
呵呵
相对于Linux上的crontab
Windows上就是“任务计划”了
我们一般都是在控制面板里增加任务计划
其实,也可以通过命令工具来管理任务计划的
增加一个任务计划,每5个小时执行del.bat
del.bat是删除某个文件夹下的所有log文件
如果直接执行.bat文件的话,在执行时是会弹出一个命令窗口的
我们可以再.bat的目录下创建一个.vbe文件
然后修改我们的任务计划
这样就可以了
做wap开发时,会用到的
1.只要每次看到我开了电脑,还没等我输入密码进入系统
它就已经跑了过去,抢占了凳子、键盘和鼠标
就开始煞有其事的用手敲打键盘,按着鼠标
我就把手伸过去,想输入密码,进入系统
他就一下子推开我的手,又冒出这样一句话:
爸爸让开,宝宝正干活呢....
2.昕昕特别喜欢和别人玩“藏猫”的游戏
但他每次都只会藏在一个地方,就是小屋的门后边
虽然对他说过好多次换个地方,但他就一直藏那边
这倒还罢了,我们找他时,经常就装着到处找他
"昕昕藏哪了呢?阳台上呢?没有,床上呢?没有"
就这么假装到处找他,今天正装着找他呢
没提防,这小子突然从门后冒出来一句:
到门后边找找宝宝吧...
真晕...
3.早上不到5点多钟,这小子就醒了,开始说“喝粉粉”了
于是,迷迷糊糊的爬了起来给他冲完了
一气喝完后,就来了句“宝宝不睡了”
就下床,说了句“ByeBye”,关上门,去另一个屋了
等8点多种,这小子推开门怕上床
用手开始推我的头要我起床,我没动静
他就继续推,嘴里还说着什么“爸爸起来...”,没听太清楚
然后,他就又下床,不一会儿,回来了
手里拿着我的剃须刀,自己打开,然后放到我脸上
这时,才明白过来,人家刚才说的是“爸爸起来刮胡子了”(这是我每天起床的第一件事)
今天,这把我这个当爸爸爸的服务的可真周到....
./git/config是当前仓库的配置信息
./git/HEAD存放着当前分支(branch)的名字。
./git/refs/heads/存放了所有分支(branch)的最后一次提交的对象的引用。
./git/hooks里存放了一堆的hook脚本,如果要启用某个hook,则只需把对应名字后面的.sample给去掉即可
Git中有4种类型的Object
object是根据内容的SHA1值来命名的
也即长度为40的16进制数
使用以下命令,可以查看object的类型
1.commit object:
对应于我们每次的commit,对应git log里的每个commit
下面命令可用来查看commit对象的内容
显示结果如下:
commit对象包含其父对象的指针parent和指向tree对象的指针
2.tree object:
它一般是目录和子目录的内容,指向一堆blob对象和其他的tree目录。
每次commit时,Git 会先计算每一个子目录的校验和,然后生成一个tree对象,tree代表了这次commit时整个项目目录的快照
可以使用命令来显示tree对象的内容
3.blob object:
它实际上就是一个文件的数据内容
可以使用命令来显示blob的内容
或者,使用show命令
1. doc/docx
(1)调用com组件,这种方式实现起来比较简单,使用jacob即可,见 http://danadler.com/jacob/,但其有以下局限性:
*必须得运行在windows机器上
*目前office提供的script功能有限,当word文档错误时,会弹出一些窗口
*当多线程调用时,占用cpu很高,机器很容易down掉 最早解析word时,是采用的com,上线后没多久,因为不稳定,不可靠,就下线了
(2)poi,见http://poi.apache.org,现在它对word的支持还很弱,用它来解析出txt还是可以的,转换为html就很难了
(3)openoffice
openoffice需要jre才能正常安装,所以首先需要安装jre,然后配置java的环境变量
从http://zh.openoffice.org/new/zh_cn/downloads.html这里下载最新的rpm包
安装后,其服务默认是单进程但线程运行的,如果使用其默认的启动参数
即使你启动多个进程,每个对应的port不同,最后soffice也只起了一个进程,但这个进程监听了多个端口,这样,其实还是单进程运行的 后来,参考了oooserver,见http://www.re.be/oooserver/index.xhtml,看了其源码后,发现启动时多加个参数,还是可以启动多个进程实例的
多加了一个UserInstallation参数,该参数指定了安装目录,如果不加该参数,openoffice在启动时会检查是否已经存在了默认目录下对应的soffice的进程,如果存在,可能就不再启动新的实例了 多个进程起来后,需要自己实现一个process pool,控制协调各个进程,保证其同一个时刻只服务一个文档转换 目前,在服务器上起了5个进程,我们会根据日志情况,再来调整进程数目
2.xls
之前也是只使用com组件,出现的问题同上
现在,采用了poi + com来实现,先是用poi来解析,如果发现里面有嵌入组件、图片、图标等内容,则转交给com来出来,否则就由poi自己来解析
使用poi的关键在于,自己要实现单元格合并的处理逻辑
3.pdf
采用了xpdf工具,见http://www.foolabs.com/xpdf/,其能有效的处理中文,但现在只能parser出txt来
在使用git merge时,可能是以下三种模式中的某一种
1.Fast forward
当待合并的2个branch最近的commit是线性关系时
或者说,某个branch自上次更新后没有commit信息时
git则直接移动指针即可,并没有真正的merge操作,也没有对应的merge commit信息
如下图,合并master和hotfix分支,既是fast-forward模式
2.Merge made by recursive
当要合并的2个branch的最近的commit对应的直接祖先不同时
git就无法通过简单的移动指针来进行合并
只能以2个branch的最新commit和他们的共同祖先进行一次merge
并对应有一个merge commit信息
如下图,合并master和iss53分支:
3.Conflict
当2个branch都修改了同一个文件的同一部分时
这时,就会发生冲突,git的自动合并就会失败
这时,使用git status会看到
在应用Git过程中的一些点滴小东西
记录下来,以备查看:
1. git config
配置git的参数变量,它可以带以下2个参数:
--system,针对系统的所有用户的,对应的配置文件在/etc/gitconfig
--global,针对系统当前用户的,对应的配置文件在~/.gitconfig
不带参数,针对当前git仓库的,对应的配置文件在.git/config
如果在个人pc上使用git,加上参数--global即可
如果在公共服务器上使用git,则一定不要带那2个参数
2. git push origin b3
默认会把本地的b3分支提交到远程的b3分支上,如果本地分支和远程分支名不同,一定要这样
也即把本地的b3分支提交到远程的b1分支上
3. 查看某个版本修改的文件信息
4. 找出哪些commit修改了某个文件
5. 查看某个版本某个文件的内容
Git的官方手册上,这么解释rebase的
很简单的一句话,确实很让人迷惑...
简单的说,就是把在一个分支里提交的改变应用在另一个分支里
从这层意义上讲,git rebase是类似git merge的
它们最终的结果是一致的,都是合并2个分支的内容
但是,git rebase合并后的commit信息是一个线性的,没有分叉,看起来比较整洁
以下,引用progit中的几个图示
例如:我们原始有2个分支:master和expriment
这2个分支都有自己的一个commit信息
如果,我们使用git merge来合并
那么,合并后的大概是这样
如果,我们使用git rebase来操作
它的操作过程是
看一下这个图示,就大概明白了
除了合并代码外,rebase还可以修正本地的commmit信息
可以参考
Git往远程push前修改commit信息
使用rebase的一个重要原则
永远不要衍合那些已经push到remote server上的commit