鲁西愚公的个人博客

一个PHP菜鸟的日常工作记录和总结

"人云亦云" 发布的文章

美国儿媳养孩子让中国婆婆目瞪口呆

编者的话:现在跨国婚姻已经不再是什么稀奇的事情了,在中国人和外国人结合的家庭里,有很多生活习惯和文化观念上的差异。通过中国婆婆诉说的这几件平常的小事,我们看到,在对待下一代子女的教育问题上,中外也是迥然不同。这位让婆婆心生佩服的洋媳妇身上,究竟有什么值得我们学习的地方呢?

(作者张淑敏)小孙子Toby已经3岁了。在美国待了三个月,洋媳妇Susan教育孩子的方法,令我这个中国婆婆大开眼界。

1、自己的事情自己做

每天早上,Toby醒来后,Susan把早餐往餐桌上一放,就自顾自地忙去了。Toby会自己爬上凳子,喝牛奶,吃面包片。吃饱后,他回自己的房间,在衣柜里找衣服、鞋子,再自己穿上。毕竟Toby只有3岁,还搞不清楚袜子的正反面,分不清鞋子的左右脚。

有一次Toby又把裤子穿反了,我赶紧上前想帮他换,却被Susan制止了。她说,如果他觉得不舒服,会自己脱下来,重新穿好;如果他没觉得有什么不舒服,那就随他的便。那一整天,Toby反穿着裤子跑来跑去,Susan像没看见一样。

又一次,Toby出去和邻居家的小朋友玩,没多大会就气喘吁吁地跑回家,对Susan说:“妈妈,Lily说我的裤子穿反了,真的吗?”Lily是邻居家的小姑娘,今年5岁。Susan笑着说:“是的,你要不要换回来?”Toby自己脱下裤子,仔细看了看,重新穿上了。

从那以后,Toby再也没穿反过裤子。

我不禁想起,我的外孙女五六岁时不会用筷子,上小学时不会系鞋带。如今在读初中要寄宿的她,每个周末都要带回家一大堆脏衣服呢。

2、不吃饭就饿着

一天中午,Toby闹情绪,不肯吃饭。Susan说了他几句,愤怒的小Toby一把将盘子推到了地上,盘子里的食物洒了一地。Susan看着Toby,认真地说:“看来你确实不想吃饭!记住,从现在到明天早上,你什么都不能吃。”Toby点点头,坚定地回答:“Yes!”我在心里暗笑,这母子俩,还都挺倔!

下午,Susan和我商量,晚上由我做中国菜。我心领神会,Toby特别爱吃中国菜,一定是Susan觉得Toby中午没好好吃饭,想让他晚上多吃点儿。

那天晚上我施展厨艺,做了Toby最爱吃的糖醋里脊、油焖大虾,还用意大利面做了中国式的凉面。Toby最喜欢吃那种凉面,小小的人可以吃满满一大盘。

开始吃晚饭了,Toby欢天喜地地爬上凳子。Susan却走过来,拿走了他的盘子和刀叉,说:“我们已经约好了,今天你不能吃饭,你自己也答应了的。”Toby看着面容严肃的妈妈,“哇”地一声哭起来,边哭边说:“妈妈,我饿,我要吃饭。”“不行,说过的话要算数。”Susan毫不心软。

我心疼了,想替Toby求情,说点好话,却见儿子对我使眼色。想起我刚到美国时,儿子就跟我说,在美国,父母教育孩子时,别人千万不要插手,即使是长辈也不例外。无奈,我只好保持沉默。

那顿饭,从始至终,可怜的小Toby一直坐在玩具车里,眼巴巴地看着我们三个大人狼吞虎咽。我这才明白Susan让我做中餐的真正用意。

我相信,下一次,Toby想发脾气扔饭碗时,一定会想起自己饿着肚子看爸爸妈妈和奶奶享用美食的经历。饿着肚子的滋味不好受,况且还是面对自己最喜爱的食物。

临睡前,我和Susan一起去向Toby道晚安。Toby小心翼翼地问:“妈妈,我很饿,现在我能吃中国面吗?”Susan微笑着摇摇头,坚决地说:“不!”Toby叹了口气,又问:“那等我睡完觉睁开眼睛时,可以吃吗?”“当然可以。”Susan温柔地回答。Toby甜甜地笑了。

大部分情況下,Toby吃饭都很积极,他不想因为“罢吃”而错过食物,再受饿肚子的苦。每当看到Toby埋头大口大口地吃饭,嘴上脸上粘的都是食物时,我就想起外孙女。她像Toby这么大时,为了哄她吃饭,几个大人端着饭碗跟在她屁股后面跑,她还不买账,还要谈条件:吃完这碗买一个玩具,再吃一碗买一个玩具……

3、以其人之道还治其人之身

有一天,我们带Toby去公园玩。很快,Toby就和两个女孩儿玩起了厨房游戏,塑胶小锅、小铲子、小盘子、小碗摆了一地。忽然,淘气的Toby拿起小锅,使劲在一个女孩儿头上敲了一下,女孩儿愣了一下,放声大哭。另一个女孩儿年纪更小一些,见此情形,也被吓得大哭起来。大概Toby没想到会有这么严重的后果,站在一旁,愣住了。

Susan走上前,问清了事情的来龙去脉后,她一声不吭,拿起小锅,使劲敲到Toby的头上,Toby没防备,一下子跌坐在草地上,哇哇大哭起来。Susan问Toby:“疼吗?下次还这样吗?”Toby一边哭,一边拼命摇头。

我相信他以后再也不会这么做了。

4、遇到问题自己解决

Toby的舅舅送了他一辆浅蓝色的小自行车,Toby非常喜欢,当成宝贝,不许别人碰。临居小姑娘Lily是Toby的好朋友,央求Toby好几次,要骑他的小车,Toby都没答应。

一次,几个孩子一起玩时,Lily趁Toby不注意,偷偷骑上小车,扬长而去。Toby发现后,气愤地跑来向Susan告狀。Susan正和几个孩子的母亲一起聊天喝咖啡,便微笑着说:“你们的事情自己解決,妈妈可管不了。”Toby无奈地走了。

过了一小会儿,Lily骑着小车回来了。Toby看到Lily,一把将她推倒在地,抢过了小车,Lily坐在地上大哭起来。Susan抱起Lily,安抚了她一会儿。很快,Lily就和别的小朋友兴高采烈地玩了起来。

Toby自己骑了会儿车,觉得有些无聊,看到那几个孩子玩得那么高兴,他想加入,又觉得有些不好意思。他蹭到Susan身边,嘟囔道:“妈妈,我想跟Lily他们一起玩。”Susan不动声色地说:“那你自己去找他们啦!”“妈妈,你陪我一起去。”Toby恳求道。“那可不行,刚才是你把Lily弄哭的,现在你又想和大家玩,就得自己去解决问题。”

Toby骑着小车慢慢靠近Lily,快到她身边时,又掉头回來。来回好几次,不知道从什么时候开始,Toby和Lily又笑逐颜开,闹成了一团。

5、管教孩子是父母的事

Susan的父母住在加利福尼亚州,听说我来了,两人开车来探望我们。家里来了客人,Toby很兴奋,跑上跑下地乱窜。他把玩沙子用的小桶装满了水,提着小桶在屋里四处转悠。Susan警告了他好几次,不要把水洒到地板上,Toby置若罔闻。最后,Toby还是把水桶弄倒了,水洒了一地。

兴奋的小Toby不觉得自己做错了事,还得意地光着脚丫踩水玩,把裤子全弄湿了。我连忙找出拖把准备拖地。Susan从我手中抢过拖把交给Toby,对他说:“把地拖干,把湿衣服脱下来,自己洗干净。”

Toby不愿意,又哭又闹。Susan二话不说,直接把他拉到贮藏室,关了禁闭。听到Toby在里面发出惊天动地的哭喊,我心疼坏了,想进去把他抱出來。Toby的外婆却拦住我,说:“这是Susan的事。”

过了一会儿,Toby不哭了,他在贮藏室里大声喊:“妈妈,我错了。”Susan站在门外,问:“那你知道该怎么做了吗?”“我知道。”Susan打开门,Toby从贮藏室走出来,脸上还挂着两行泪珠。他拿起有他两个高的拖把吃力地把地上的水拖干净。然后,他脱下裤子,拎在手上,光着屁股走进洗手间,稀里哗啦地洗起衣服来。

Toby的外公外婆看着表情惊异的我,意味深长地笑了。这件事让我感触颇深。在很多中国家庭,父母管教孩子时,常常会引起“世界大战”,往往是外婆外公护,爷爷奶奶拦,夫妻吵架,鸡飞狗跳。

后來,我和Toby的外公外婆聊天时,提到这件事,Toby的外公说了一段话,让我印象深刻。他说,孩子是父母的孩子,首先要尊重父母对孩子的教育方式。孩子虽然小,却是天生的外交家,当他看到家庭成员之间出现分歧时,他会很聪明地钻空子。这不仅对改善他的行为毫无益处,反而会导致问题越来越严重,甚至带来更多别的问题。

而且,家庭成员之间发生冲突,不和谐的家庭氛围会带给孩子更多的不安全感,对孩子的心理发展产生不利影响。所以,无论是父辈与祖辈在教育孩子的问题上发生分歧,还是夫妻两人的教育观念有差异,都不能在孩子面前发生冲突。

6、不纵容孩子的欲望

Toby的外公外婆在家里住了一周,准备回加利福尼亚了。临走前两天,Toby的外公郑重地问女儿:“Toby想要一辆玩具挖掘机,我可以买給他吗?”Susan想了想,说:“你们这次已经送给他一双旱冰鞋作为礼物了,到圣诞节时,再买玩具挖掘机当礼物送给他吧!”

我不知道Toby的外公是怎么告诉小家伙的,后来我带Toby去超市,他指着玩具挖掘机说:“外公说,圣诞节时,给我买这个当礼物。”语气里满是欣喜和期待。

虽然Susan对Toby如此严格,Toby却对妈妈爱得不得了。他在外面玩时,会采集一些好看的小花或者他认为漂亮的叶子,郑重其事地送给妈妈;别人送给他礼物,他会叫妈妈和他一起拆开;有什么好吃的,也总要留一半给妈妈。

想到很多中国孩子对父母的漠视与冷淡,我不得不佩服我的洋媳妇。在我看来,在教育孩子的问题上,美国妈妈有很多值得中国妈妈学习的地方。

每个极客都应该知道的Linux技巧(转载)

<h3>1:检查不是由你运行的程序</h3>
<p>难度:高级</p>

<p>应用程序:bash(译注:UNIX或者LINUX的shell)</p>

<p>想象下这个场景-你已经准备好了要和同事在办公室里对战一局快速的Crack Attack(译注:一款免费的OpenGL游戏,类似俄罗斯方块),不料却发现,当你正准备要击败你这个傲慢的下属时,方块却停止了-是什么让你的机器变得这么慢?这肯定是因为其他的用户运用他们娴熟的经验来盗取你宝贵的CPU时间、服务器或者其他的诡异方式,真烦人!</p>

<p>好,让我们列举出系统中所有不是由你运行的程序!</p>
ps aux | grep -v whoami
<p>或者如果你更需要让它只作用于普通文件上</p>
find -type f -name '*.txt' -print0 | xargs --null perl -pi -e 's/Windows/Linux/'
<h3>2:在多个文件中替换掉相同的文本</h3>
<p>难度:中等</p>
<p>应用程序:find(译注:Linux下的一条命令)/Perl</p>
<p>如果你有个文件,想在多个位置进行替换,这里有很多方法来实现。调用test[someting]把当前目录里所有文件中的Windows替换成Linux,你可以像这样运行它:</p>
perl -i -pe 's/Windows/Linux/;' test*
<p>要替换当前目录以及下层目录里所有文件中的Windows为Linux,你可以这样运行:</p>
find . -name '.txt' -print | xargs perl -pi -e's/Windows/Linux/ig' .txt
<p>或者如果你更需要让它只作用于普通文件上</p>
find -type f -name '*.txt' -print0 | xargs --null perl -pi -e 's/Windows/Linux/'

win10下安装mysql5.7问题记录

<p> 原来一直用的是win7系统,公司新电脑装的是win10系统,于是开始在64位win10下搭建php环境,(win10+Apache2.4.18+Mysql5.7.11+Php7.0.3)。php和apache都是从官网上下的,安装过程也没出现什么问题,只是要注意自己的版本和运行库的版本</p>
<h3>1.下载zip格式的免安装包</h3>
<p>下载后解压安装包到mysql的安装目录。如 D:/WAMP/MYSQL57</p>

<h3>2.编写配置文件</h3>
<p>新建一个my.ini文件,然后用记事本打开输入mysql的基本配置:


[mysql]

default-character-set=utf8

[mysqld]

port = 3306 

basedir=D:wampMysql57

datadir=D:wampMysql57data

max_connections=200

character-set-server=utf8

default-storage-engine=INNODB 

</p>
11.png
<h3>3.安装服务</h3>
<p>以管理员身份运行cmd窗口后,进入mysql的bin目录。输入mysqld install回车运行。</p>
33.png
注意一定要以管理员身份运行cmd
<h3>4.初始化data目录</h3>
<p>命令行下运行 mysqld --initialize</p>
<h3>5.启动服务</h3>
<p>命令行下运行 net start mysql</p>

<p>mysql5.7之前的安装,root用户是不需要密码的,但是自mysql5.7开始就不可以了,登录时会报错</p>
<p>登录方式:mysql -u root -p 报错如下


ERROR 1045 (28000): Access denied for user'root'@'localhost'(using password: NO)
</p> 44.png <p>接下来我会记录一下我是怎么解决的</p>

网站密码强度的测试(jquery)

<p>我们再开发带有注册功能的网站时,会要求用户自己设置密码,网站会根据输入密码的字符特点给出相应的密码强度提示,比如密码过段、密码强度差、密码强度中等、密码强度强等。</p><!--more-->
<h2>jquery实现方式如下:</h2>
<h3>Html代码:</h3>


  <input type="password" name="password" id="password" />
  < span id="pwdstrength">< /span>

<h3>jquery代码:</h3>


 $('#password').keyup(function(e) {
    //密码为八位及以上并且字母数字特殊字符三项都包括
    var strongRegex = new RegExp("^(?=.{8,})(?=.[A-Z])(?=.[a-z])(?=.[0-9])(?=.\W).*$", "g");
    //密码为七位及以上并且字母、数字、特殊字符三项中有两项,强度是中等
    var mediumRegex = new RegExp("^(?=.{7,})(((?=.[A-Z])(?=.[a-z]))|((?=.[A-Z])(?=.[0-9]))|((?=.[a-z])(?=.[0-9]))).*$", "g");
    var enoughRegex = new RegExp("(?=.{6,}).*", "g");
    if (false == enoughRegex.test($(this).val())) {
        $('#pwdstrength').html('密码太短!');
    } else if (strongRegex.test($(this).val())) {
        $('#pwdstrength').className = 'ok';
        $('#pwdstrength').html('强度强!');
    } else if (mediumRegex.test($(this).val())) {
        $('#pwdstrength').className = 'alert';
        $('#pwdstrength').html('强度中等!');
    } else {
        $('#pwdstrength').className = 'error';
        $('#pwdstrength').html('强度弱!');
    }
        return true;
});


Linux 常用命令

<h1>Linux 常用命令总结</h1><!--more-->
<h3>1、cd命令</h3>
<p>这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:</p>


cd /root/Docements # 切换到目录/root/Docements  
cd ./path          # 切换到当前目录下的path目录中,“.”表示当前目录    
cd ../path         # 切换到上层目录中的path目录中,“..”表示上一层目录 

<h3>2、ls命令</h3>
<p>这是一个非常有用的查看文件与目录的命令,list之意,它的参数非常多,下面就列出一些我常用的参数吧,如下:</p>

    
    -l :列出长数据串,包含文件的属性与权限数据等  
    -a :列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)  
    -d :仅列出目录本身,而不是列出目录的文件数据  
    -h :将文件容量以较易读的方式(GB,kB等)列出来  
    -R :连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来  

注:这些参数也可以组合使用,下面举两个例子:

    
    ls -l #以长数据串的形式列出当前目录下的数据文件和目录  
    ls -lR #以长数据串的形式列出当前目录下的所有文件  

<h3>3、grep命令</h3>
<p>该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等,它的简单语法为</p>

grep [-acinv] [--color=auto] '查找字符串' filename  
<span>它的常用参数如下:</span>
    
    -a :将binary文件以text文件的方式查找数据  
    -c :计算找到‘查找字符串’的次数  
    -i :忽略大小写的区别,即把大小写视为相同  
    -v :反向选择,即显示出没有‘查找字符串’内容的那一行  
    # 例如:  
    # 取出文件/etc/man.config中包含MANPATH的行,并把找到的关键字加上颜色  
    grep --color=auto 'MANPATH' /etc/man.config  
    # 把ls -l的输出中包含字母file(不区分大小写)的内容输出  
    ls -l | grep -i file  

<h3>4、find命令</h3>
<p>find是一个基于查找的功能非常强大的命令,相对而言,它的使用也相对较为复杂,参数也比较多,所以在这里将给把它们分类列出,它的基本语法如下:</p>

    
    find [PATH] [option] [action]  
      
    # 与时间有关的参数:  
    -mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;  
    -mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;  
    -mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;  
    -newer file : 列出比file还要新的文件名  
    # 例如:  
    find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件  
      
    # 与用户或用户组名有关的参数:  
    -user name : 列出文件所有者为name的文件  
    -group name : 列出文件所属用户组为name的文件  
    -uid n : 列出文件所有者为用户ID为n的文件  
    -gid n : 列出文件所属用户组为用户组ID为n的文件  
    # 例如:  
    find /home/ljianhui -user ljianhui # 在目录/home/ljianhui中找出所有者为ljianhui的文件  
      
    # 与文件权限及名称有关的参数:  
    -name filename :找出文件名为filename的文件  
    -size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件  
    -tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、  
                 目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);  
    -perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;  
    -perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示  
    -perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示  
    # 例如:  
    find / -name passwd # 查找文件名为passwd的文件  
    find . -perm 0755 # 查找当前目录中文件权限的0755的文件  
    find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte  

<h3>5、cp命令</h3>
<p>该命令用于复制文件,copy之意,它还可以把多个文件一次性地复制到一个目录下,它的常用参数如下:</p>

    
    -a :将文件的特性一起复制  
    -p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份  
    -i :若目标文件已经存在时,在覆盖时会先询问操作的进行  
    -r :递归持续复制,用于目录的复制行为  
    -u :目标文件与源文件有差异时才会复制  

<span>例如 :</span>

    
    cp -a file1 file2 #连同文件的所有特性把文件file1复制成文件file2  
    cp file1 file2 file3 dir #把文件file1、file2、file3复制到目录dir中  

<h3>6、mv命令</h3>
<p>该命令用于移动文件、目录或更名,move之意,它的常用参数如下:</p>

    
    -f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖  
    -i :若目标文件已经存在,就会询问是否覆盖  
    -u :若目标文件已经存在,且比目标文件新,才会更新  

注:该命令可以把一个文件或多个文件一次移动一个文件夹中,但是最后一个目标文件一定要是“目录”。
<span>例如:</span>

    
    mv file1 file2 file3 dir # 把文件file1、file2、file3移动到目录dir中  
    mv file1 file2 # 把文件file1重命名为file2  

<h3>7、rm命令</h3>
<p>该命令用于删除文件或目录,remove之间,它的常用参数如下:</p>

    
    -f :就是force的意思,忽略不存在的文件,不会出现警告消息  
    -i :互动模式,在删除前会询问用户是否操作  
    -r :递归删除,最常用于目录删除,它是一个非常危险的参数  

<span>例如:</span>

    
    rm -i file # 删除文件file,在删除之前会询问是否进行该操作  
    rm -fr dir # 强制删除目录dir中的所有文件  

<h3>8、ps命令</h3>
<p>该命令用于将某个时间点的进程运行情况选取下来并输出,process之意,它的常用参数如下:</p>

    
    -A :所有的进程均显示出来  
    -a :不与terminal有关的所有进程  
    -u :有效用户的相关进程  
    -x :一般与a参数一起使用,可列出较完整的信息  
    -l :较长,较详细地将PID的信息列出  

<span>其实我们只要记住ps一般使用的命令参数搭配即可,它们并不多,如下:</span>


    ps aux # 查看系统所有的进程数据  
    ps ax # 查看不与terminal有关的所有进程  
    ps -lA # 查看系统所有的进程数据  
    ps axjf # 查看连同一部分进程树状态

<h3>9、tar命令</h3>
<p>该命令用于对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如gzip和bzip等)进行压缩和解压。它的常用参数如下:</p>
    
    -c :新建打包文件  
    -t :查看打包文件的内容含有哪些文件名  
    -x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中  
    -j :通过bzip2的支持进行压缩/解压缩  
    -z :通过gzip的支持进行压缩/解压缩  
    -v :在压缩/解压缩过程中,将正在处理的文件名显示出来  
    -f filename :filename为要处理的文件  
    -C dir :指定压缩/解压缩的目录dir  

<span>上面的解说可以已经让你晕过去了,但是通常我们只需要记住下面三条命令即可:</span>

    
    压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称  
    查询:tar -jtv -f filename.tar.bz2  
    解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录  

注:文件名并不定要以后缀tar.bz2结尾,这里主要是为了说明使用的压缩程序为bzip2
<h3>10、cat命令</h3>
<p>该命令用于查看文本文件的内容,后接要查看的文件名,通常可用管道与more和less一起使用,从而可以一页页地查看数据。例如:</p>


    cat text | less # 查看text文件中的内容  

# 注:这条命令也可以使用less text来代替
<h3>11、chgrp命令</h3>
<p>该命令用于改变文件所属用户组,它的使用非常简单,它的基本用法如下:</p>


    chgrp [-R] dirname/filename  
    -R :进行递归的持续对所有文件和子目录更改  
    # 例如:  
    chgrp users -R ./dir # 递归地把dir目录下中的所有文件和子目录下所有文件的用户组修改为users  

<h3>12、chown命令</h3>
<p>该命令用于改变文件的所有者,与chgrp命令的使用方法相同,只是修改的文件属性不同,不再详述。</p>

<h3>13、chmod命令</h3>
<p>该命令用于改变文件的权限,一般的用法如下:</p>


    chmod [-R] xyz 文件或目录  
    -R:进行递归的持续更改,即连同子目录下的所有文件都会更改  

同时,chmod还可以使用u(user)、g(group)、o(other)、a(all)和+(加入)、-(删除)、=(设置)跟rwx搭配来对文件的权限进行更改。


    # 例如:  
    chmod 0755 file # 把file的文件权限改变为-rxwr-xr-x  
    chmod g+w file # 向file的文件权限中加入用户组可写权限 
  

<h3>14、vim命令</h3>
<p>该命令主要用于文本编辑,它接一个或多个文件名作为参数,如果文件存在就打开,如果文件不存在就以该文件名创建一个文件。vim是一个非常好用的文本编辑器,它里面有很多非常好用的命令,在这里不再多说。</p>