培养孩子独立思考的精神

在家庭教育上,谈不上什么经验和心得,因为我本人做的并不好,孩子教育的也不是太成功。但是,我觉得我所认可和崇尚的理念应该是没有大问题的,那就是一定要培养孩子独立思考的精神。
我们的成长过程中,很多人都被教育得人云亦云。或独立思考的能力薄弱,或不敢独立思考,或不敢表达自己的思考。在工作中,对某件事情的独立思考,才是真正被大家所尊重的,而并不是渊博的专业知识,也不是拼命上进的刻苦精神,不是熟练的工作技能,虽然这些毋庸置疑的重要。

孩子从来就不乏独立思考的精神,而且思考的深度也常常令人震撼。有一年夏天,女儿只有几岁大,我在家喝冰镇啤酒,酒杯外有很多冷凝的水珠。我把她叫过来说,“哎呀,你看水杯是不是漏了,怎么外面有好多水呀?”。她很认真的检查了一下水杯,发现水杯并没有漏。我就很诧异的问,“这水是从哪里来的呢?”她思考良久,突然很兴奋的告诉我们,“酒杯外面的水是暖瓶里面的水”。这个结论让我们都很费解,“为什么呢?”。女儿走过去,打开暖瓶盖,冒出了一些热气,“每次打开暖瓶,都会跑出来一些水,然后就跑到酒杯外面去了”。这个事情让我很震撼,不单是孩子独立思考的精神,思考达到的深度也是不可思议的。

其实作为家长,我们需要做的,就是尊重孩子的思考。女儿小的时候,喜欢看82版的西游记。有一回下班后,我爱人问我“唐僧总说四大皆空,四大是什么?”。我就说是地、水、火、风,并做了一些简单解释。但是我很奇怪,怎么想起来问这么个奇怪的问题?爱人说这是女儿看西游记的疑问。我很紧张,“你是怎么回答的?”,爱人就说“当时我就说不知道”。对,我们不知道的,就一定要说不懂、不知道,千万不要指责孩子问的有问题。

有时候,孩子思考中有疑问,我们也无法解答。往往就变的很不耐烦,指责孩子胡思乱想。其实,我们需要做的,除了自我的约束和克制,更重要的是加强思考和学习。有一次,女儿很认真的问我“唐僧为什么要去取经啊?”。这一下子把我问住了。是啊,我们确实一直在看唐僧取经的故事,但是从来没有想过唐僧为什么要去取经。当时我还没有读过原著,就拿电视剧里观音菩萨对唐太宗说的话解答,“能消无妄之灾,能度死人升天。”我们一家人讨论了一阵子,总觉得观音菩萨的理由不是太充分,不足以成为历经81难西天取经的理由。后来我阅读原著,一直带着这个疑问。最后发现,学习了很多东西,收获非常大。

我们的孩子们,都是问题宝宝。作为家长,我们需要做的,可能就是鼓励孩子的好奇和思考。遇到我们不知道的问题,就直接说不懂、不知道,让他继续思考。孩子们思考的问题太广泛、太深入了,我们不可能对每个问题都给出圆满的解答。独立思考的精神,不就是能让下一代超越我们的种子吗?

梦幻

无明樵楼鼓三更,

六道凡夫一夜梦。

无始劫来无量情,

纷纷不断万相生。

心中幻想多挂碍,

梦里人物难自醒。

持戒修福生实信,

皈依觉正皈依净。

Linux下的压缩解压缩命令

压缩

zip -r peigong.zip ./peigong

将当前目录下的所有文件和文件夹全部压缩成peigong.zip文件,-r表示递归压缩子目录下所有文件。

解压缩

unzip -o -d /home/peigong peigong.zip

peigong.zip文件解压到/home/peigong/

  1. **-o:**不提示的情况下覆盖文件。
  2. -d:-d /home/peigong指明将文件解压缩到/home/peigong目录下。

其他

zip -d peigong.zip smart.txt

删除压缩文件中smart.txt文件

zip -m peigong.zip ./rpm_info.txt

向压缩文件中peigong.zip中添加rpm_info.txt文件

Linux下的上传下载工具rz和sz

Linux下的上传下载工具rz和sz一般在 SecureCRT ssh中使用。

检查安装

验证方法:运行命令rz,如果弹出SecureCRT上传窗口,表示已经安装。

如果还没有安装,可以直接用yum安装:

yum install lrzsz -y

安装后,使用上述验证方法,验证安装是否成功。

命令使用

  1. 下载:sz filename
  2. 覆盖下载:sz -y filename
  3. 上传:rz
  4. 覆盖上传:rz -y

注意事项

  • 上传下载目录默认是SecureCRT安装目录下的upload/download目录,也可以在SecureCRT的“选项-会话选项-终端-X/Y/Zmodem”自行设置修改。
  • 在弹出SecureCRT上传窗口选中文件后,需要点击添加按钮,添加到发送的文件列表,然后再点击确定才能上传。
  • 如果上传失败,可能是没有权限,尝试一下sudo rz

学习F.I.S前端工具框架

NPM清单

fex-team/fis

FIS是专为解决前端开发中自动化工具、性能优化、模块化框架、开发规范、代码部署、开发流程等问题的工具框架。

  • 检查安装:npm view fis version
  • 工具安装:npm install -g fis

fouber/fis-postpackager-modjs

a postpackager plugin for fis to process map.json and create map.js for modjs

  • 检查安装:npm view fis-postpackager-modjs version
  • 工具安装:npm install -g fis-postpackager-modjs

fis-conf.js配置

//file : fis-conf.js
fis.config.set('modules.postpackager', 'modjs');
//settings
fis.config.set('settings.postpackager.modjs.subpath', 'pack/map.js');

fouber/fis-parser-less

A parser for fis to compile less file.

  • 检查安装:npm view fis-parser-less version
  • 工具安装:npm install -g fis-parser-less

clippit/fis-parser-dot

FIS Parser for doT.js template engine

  • 检查安装:npm view fis-parser-dot version
  • 工具安装:npm install -g fis-parser-dot

fex-team/fis-postprocessor-jswrapper

A postprocessor plugin for fis to wrap javascript with closure or amd define.

fis-conf.js配置

fis.config.merge({
    settings : {
        postprocessor : {
            jswrapper : {
                //wrap type. if omitted, it will wrap js file with '(function(){...})();'.
                type : 'amd',
                //you can use template also, ${content} means the file content
                //template : '!function(){${content}}();',
                //wrap all js file, default is false, wrap modular js file only.
                wrapAll : true
            }
        }
    }
});

或者通过 roadmap.path 局部配置

fis.config.set('roadmap.path', [
    {
        reg: '/page/**.js',
        jswrapper: {
            //wrap type. if omitted, it will wrap js file with '(function(){...})();'.
            type : 'amd',

            //you can use template also, ${content} means the file content
            //template : '!function(){${content}}();'
        }
    }
]);

fex-team/fis-spriter-csssprites

基于FIS的csssprites,对css文件,以及html文件css片段进行csssprites处理。支持repeat-x, repeat-y, background-position 和 background-size

依赖native插件node-images(xiangshouding/node-images)

  • 检查安装:npm view fis-spriter-csssprites version
  • 工具安装:npm install -g fis-spriter-csssprites

fex-team/fis-packager-depscombine

当设置 pack 的时候,同步依赖也会自动被打包进来。

  • 检查安装:npm view fis-packager-depscombine version
  • 工具安装:npm install -g fis-packager-depscombine

fis-conf.js配置

fis.config.set('modules.packager', 'depscombine');

hefangshi/fis-postpackager-simple

用于自动打包页面零散资源和应用打包资源的FIS插件

  • 自动将页面中声明的资源引用替换为pack中设置的资源
  • 自动将未打包的零散资源按照引用顺序打包,默认关闭

fouber/fis-parser-utc

A parser for fis to compile underscore template.

  • 检查安装:npm view fis-parser-utc version
  • 工具安装:npm install -g fis-parser-utc

F.I.S打包的特点

  • 一个资源不能被打包到多个包里面
  • fis的打包实际上是在建立一个资源表,并将其描述并产出为一份map.json文件,用户应该围绕着这份描述文件来设计前后端运行框架,从而实现运行时判断打包输出策略的架构。
  • 如果只要简单实现all-in-one打包,直接使用hefangshi/fis-postpackager-simple,会把pack设置之外的零碎文件打成一个。不设置pack,所有的零碎文件都打包成了一个。

参考链接

VI的常用操作

进入vi的命令

  • vi filename:打开或新建文件,并将光标置于第一行首
  • vi +n filename:打开文件,并将光标置于第n行首
  • vi + filename:打开文件,并将光标置于最后一行首
  • vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
  • vi -r filename:在上次正用vi编辑时发生系统崩溃,恢复filename
  • vi filename….filename:打开多个文件,依次进行编辑

最后行方式命令

  • :x:保存当前文件并退出
  • :q:退出vi
  • **:q!**:不保存文件并退出vi
  • :w:保存当前文件
  • :e filename:打开文件filename进行编辑
  • :n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
  • :n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
  • :n1,n2 d:将n1行到n2行之间的内容删除
  • :!command:执行shell命令command
  • :n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
  • :r!command:将命令command的输出结果放到当前行

移动光标类命令

  • h:光标左移一个字符
  • l:光标右移一个字符
  • space:光标右移一个字符
  • Backspace:光标左移一个字符
  • k或Ctrl+p:光标上移一行
  • j或Ctrl+n:光标下移一行
  • Enter:光标下移一行
  • w或W:光标右移一个字至字首
  • b或B:光标左移一个字至字首
  • e或E:光标右移一个字至字尾
  • **)**:光标移至句尾
  • **(**:光标移至句首
  • **}**:光标移至段落开头
  • **{**:光标移至段落结尾
  • nG:光标移至第n行首
  • **n+**:光标下移n行
  • **n-**:光标上移n行
  • **n$**:光标移至第n行尾
  • H:光标移至屏幕顶行
  • M:光标移至屏幕中间行
  • L:光标移至屏幕最后行
  • 0:(注意是数字零)光标移至当前行首
  • **$**:光标移至当前行尾

屏幕翻滚类命令

  • Ctrl+u:向文件首翻半屏
  • Ctrl+d:向文件尾翻半屏
  • Ctrl+f:向文件尾翻一屏
  • Ctrl+b;向文件首翻一屏
  • nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令

  • i:在光标前
  • I:在当前行首
  • a:光标后
  • A:在当前行尾
  • o:在当前行之下新开一行
  • O:在当前行之上新开一行
  • r:替换当前字符
  • R:替换当前字符及其后的字符,直至按ESC键
  • s:从当前光标位置处开始,以输入的文本替代指定数目的字符
  • S:删除指定数目的行,并以所输入文本代替之
  • ncw或nCW:修改指定数目的字
    -** nCC**:修改指定数目的行

删除命令

  • ndw或ndW:删除光标处开始及其后的n-1个字
  • do:删至行首
  • **d$**:删至行尾
  • ndd:删除当前行及其后n-1行
  • x或X:删除一个字符,x删除光标后的,而X删除光标前的
  • Ctrl+u:删除输入方式下所输入的文本

搜索及替换命令

  • /pattern:从光标开始处向文件尾搜索pattern
  • ?pattern:从光标开始处向文件首搜索pattern
  • n:在同一方向重复上一次搜索命令
  • N:在反方向上重复上一次搜索命令
  • :s/p1/p2/g:将当前行中所有p1均用p2替代
  • :n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
  • :g/p1/s//p2/g:将文件中所有p1均用p2替换

选项设置

  • all:列出所有选项设置情况
  • term:设置终端类型
  • ignorance:在搜索中忽略大小写
  • list:显示制表位(Ctrl+I)和行尾标志($)
  • number:显示行号
  • report:显示由面向行的命令修改过的数目
  • terse:显示简短的警告信息
  • warn:在转到别的文件时若没保存当前文件则显示NO write信息
  • nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符
  • nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
  • mesg:允许vi显示其他用户用write写到自己终端上的信息

寄存器操作

  • ?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
  • ?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
  • ?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
  • ?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
  • ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。

安装服务器的环境

Git

下载

可以到https://github.com/git/git/releases,去查看最新的发布版本。

如果还没有安装过GIT,可以使用wget下载最新的版本:

cd /usr/local/src/git
wget -c https://github.com/git/git/archive/v2.0.2.tar.gz
tar xvf v2.0.2.tar.gz

如果安装过GIT,可以使用git clone最新的版本分支:

git clone https://github.com/git/git.git git-2.0.2 -b v2.0.2

安装

编译安装:

cd git-2.0.2
make configure
./configure --prefix=/usr/local/git
make && make install

修改/etc/profile,在PATH中加入git路径,并执行source /etc/profile

GIT_HOME=/usr/local/git
PATH=$PATH:$GIT_HOME/bin:$GIT_HOME/libexec/git-core
export PATH GIT_HOME

确认是否安装成功:

git --version

备注

如果执行git clone命令时报错:

error: SSL certificate problem, verify that the CA cert is OK.

可以设置git config,如下:

git config --global http.sslVerify false

Node

环境要求

  • GCC 4.2 或更新版本
  • G++ 4.2 或更新版本
  • Python 2.6 或 2.7
  • GNU Make 3.81 或更新版本

一般服务器都会具备上述条件,如果不具备,参见后文的《安装Node的依赖》。

下载

可以到https://github.com/joyent/node/releases,去查看最新的发布版本。

可以使用wget下载最新的版本:

cd /usr/local/src/node
wget -c https://github.com/joyent/node/archive/v0.10.30.tar.gz
tar xvf v0.10.30

可以使用git clone最新的版本分支:

git clone https://github.com/joyent/node.git node-0.10.30 -b v0.10.30

安装

编译安装:

cd node-0.10.30
./configure --prefix=/usr/local/node
make && make install

修改/etc/profile,在PATH中加入Node路径,并执行source /etc/profile

NODE_HOME=/usr/local/node
PATH=$PATH:$NODE_HOME/bin
export PATH NODE_HOME

确认是否安装成功:

node -v

本地化NPM配置

国内服务器建议使用

用户根目录下如果有NPM本地配置文件.npmrc,写入如下内容:

cd ~
registry=http://r.cnpmjs.org

如果用户根目录没有.npmrc文件,使用以下命令生成:

cd ~
echo registry=http://r.cnpmjs.org > .npmrc

备注:此配置用于从国内的NPM镜像库更新数据。

检查更新到Node的最新版本

建议操作

npm install -g n
n stable

MongoDB

http://www.mongodb.org/downloads下载MongoDB到/usr/local/src/mongodb

cd /usr/local/src/mongodb
wget -c http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.3.tgz
tar xvf mongodb-linux-x86_64-2.6.3.tgz
mv ./mongodb-linux-x86_64-2.6.3 /usr/local/mongodb

修改/etc/rc.local,将mongoDB服务加入随机启动

numactl --interleave=all /usr/local/mongodb/bin/mongod --port 27017 --directoryperdb --fork --dbpath=/home/{服务名称}/data/mongodb/data  --logpath=/home/{服务名称}/data/mongodb/log/mongodb.log > /dev/null &

注意:如果提示WARNING: You are running on a NUMA machine.警告信息,则在原启动命令前面加numactl –interleave=all

修改/etc/profile,在PATH中加入MongoDB路径,并执行source /etc/profile

MONGODB_HOME=/usr/local/mongodb
PATH=$PATH:$MONGODB_HOME/bin
export PATH MONGODB_HOME

Redis

http://www.redis.io/download下载Redis到/usr/local/src/redis

cd /usr/local/src/redis
wget -c http://download.redis.io/releases/redis-2.8.13.tar.gz
tar xvf redis-2.8.13.tar.gz
cd redis-2.8.13

make

cp /usr/local/src/redis/redis-2.8.13/redis.conf /usr/local/redis/redis.conf
cp /usr/local/src/redis/redis-2.8.13/src/redis-server /usr/local/redis/redis-server
cp /usr/local/src/redis/redis-2.8.13/src/redis-cli /usr/local/redis/redis-cli
cp /usr/local/src/redis/redis-2.8.13/src/redis-benchmark /usr/local/redis/redis-benchmark

修改/etc/rc.local,将Redis服务加入随机启动

/usr/local/redis/redis-server /usr/local/redis/redis.conf > /dev/null &

可以修改/usr/local/redis/redis.conf配置Redis服务。

修改/etc/profile,在PATH中加入Redis路径,并执行source /etc/profile

PATH=$PATH:/usr/local/redis
export PATH

主要配置参数的意义:

  • daemonize:是否以后台daemon方式运行
  • pidfile:pid文件位置
  • port:监听的端口号
  • timeout:请求超时时间
  • loglevel:log信息级别
  • logfile:log文件位置
  • databases:开启数据库的数量
  • save * (:保存快照的频率,第一个表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件)
  • rdbcompression:是否使用压缩
  • dbfilename:数据快照文件名(只是文件名,不包括目录)
  • dir:数据快照的保存目录(这个是目录)
  • appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
  • appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)

安装Node的依赖

GCC

下载文件:

#cd /usr/local/src
#wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
#wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
#wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
#wget http://ftp.gnu.org/gnu/gcc/gcc-4.6.1/gcc-4.6.1.tar.bz2
 
#tar jxvf gmp-4.3.2.tar.bz2 
#cd gmp-4.3.2
#./configure --prefix=/usr/local/gmp-4.3.2
#make 
#make check
#make  install
 
#tar jxvf mpfr-2.4.2.tar.bz2
#cd mpfr-2.4.2
#./configure --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2
#make && make install

#tar zxvf mpc-0.8.1.tar.gz
#cd mpc-0.8.1
#./configure --prefix=/usr/local/mpc-0.8.1 --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2
#make && make install
 
#tar jxvf gcc-4.6.1.tar.bz2
#cd gcc-4.6.1

编译前需要执行上述命令,否则报错找不到依赖库。

修改/etc/profile,加入:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-4.3.2/lib:/usr/local/mpfr-2.4.2/lib

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc-4.6.1/lib:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-4.3.2/lib:/usr/local/mpf
r-2.4.2/lib
export LD_LIBRARY_PATH

执行:

#source /etc/profile
#./configure --prefix=/usr/local/gcc-4.6.1 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++,java --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1
#make && make install

让两个版本gcc并存:

#cd  /usr/bin
#mv gcc gcc4.1
#ln -s /usr/local/gcc-4.6.1/bin/gcc /usr/bin/gcc
#mv g++ g++4.1
#ln -s /usr/local/gcc-4.6.1/bin/g++ /usr/bin/g++
#cp  /usr/local/gcc-4.6.1/bin/gcj /usr/bin/

至此可以直接使用gcc,g++和gcj命令

Python

https://www.python.org/download/查看最新版本。

cd /usr/local/src/python
wget -c --no-check-certificate https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.xz
xz -d Python-2.7.8.tar.xz
tar xvf Python-2.7.8.tar
cd Python-2.7.8
./configure --prefix=/usr/local/python
make && make install

修改/etc/profile,在PATH中加入git路径,并执行source /etc/profile

PYTHON_HOME=/usr/local/python
PATH=$PATH:$PYTHON_HOME/bin
export PATH PYTHON_HOME

清理原有安装:

cd /usr/bin
ll |grep python  
rm -rf python
ln -s /usr/local/python/bin/python ./python

Linux服务器