约课程序
学员信息
student
id,firstname,lastname,email,mobile
课程表信息
timetalbe
id, month
date
id, date, timetableId
period
id,startTime,endTime,content, commnet, dateId
预定课程信息
booking
id, periodId,studentId
学习思考成长
student
id,firstname,lastname,email,mobile
timetalbe
id, month
date
id, date, timetableId
period
id,startTime,endTime,content, commnet, dateId
booking
id, periodId,studentId
神州数码,维护遗留系统
zbos,一席,日本专家
十佳技术
开发一套测试系统,成为junper面试的简历的一部分。
在junper里 写文档
当你做了做到下一个level的事的时候,才能去到下一个level的title和salary。
通往山峰(目标)的路,是向上的曲线,有波峰波谷。
做为manager需要人生的历练,比如带小孩,做babysit
lead yourself use your head,
lead others use your heart.
与牛人交流,靠自己累计,是非常的漫长。
学习是一辈子的事情。
去硅谷,行李有一半是书籍
每一个角色都会拓展自己的视野
engineer, manager,中美团队交流中间人
努力争取和珍惜老板一对一的交流的机会。
管理老板的期望,更多的获得老板的注意力,向上管理。
建立自己的reputation。
积累口碑,比较容易换team。
积累人脉,创业,需要各种人才,没有足够多的人脉,工作无法展开。
开公众号,帮助更多人,才有更多的朋友。
公众号的读者,给了很多的帮助,创业,组建团队,换工作
只要不违背你的良心,只要你想做就去做,不要问回报。
想办法获得老板的赏识。
累计口碑,积累人脉。
在网上关注一些娱乐八卦,然后吃瓜群众莫名其妙地互相吵起来
趋势和机会并不是属于那些心急火燎的人,而是是那些有意无意已经准备好的的人
自己是泥菩萨,小河都过不去,就不要去操别人的心,别人失败,你也不会有损失,别人成功,与你并没有多大关系,最后可能还被打脸。。
这些坑都占用着我们宝贵的注意力。
钱不是最重要的,它可以挣;
时间也不是最重要的,它本质上不属于你,你只能使用它;
注意力才是你自己能够做主的,个人所拥有的最重要,最宝贵的资源。
任由自己最宝贵的注意力大把大把的去凑热闹、随大流、操别人的心,是对人生极大的浪费。
因为最终你的一切价值,都是你注意力的产出。
所以你必须把自己最宝贵的注意放在自己身上,放在自己的“成长”上。
小孩不可能一夜长大,但是一年三百六十五天,每天进步一点点…总是可以的!!
你所拥有的最宝贵的财富是你的注意力。
注意力是能让你有所产出的唯一资源。
注意力>时间>金钱
原则:低价值的资产换高价值资产
所以用钱换时间是划算的;用钱保证自己注意不被分散就更划算了。
同样,用时间换取持续的注意力也是划算。
时间怎么换注意力的持续?
比如,花大量时间与身边人沟通,使他们明白自己保持持续注意力的做法——手机永远静音,最终使得自己不被无谓地干扰,让自己的注意有更多持续的机会,有更多产出的能量。
。
之所以你的时间能够卖出去,就是因为总体上来看,花钱买时间更划算啊!
花了499买了一个“如何定投指数基金”的课程,现在已经定投3个月,收益已经远远超过付费买课程的钱,更重要节省了自己看书,查资料研究的时间。
既挣了钱,又省时间,真是捡了大便宜!
因为盗版书籍不用钱,常常会去忍不住去下载收集盗版书籍,最后大部分都没有去看,甚至时间久了,自己都忘了曾经收集过这么些书,把时间和注意力浪费了。
还有下载的盗版电子书往往排版格式不好,需要花时间下载多个版本才能找到比较合适,有时还需要花时间去转换格式,把时间和注意力浪费了。
如果一开始把书选择好,付费买了,直接就有高质量的原版书籍可供阅读;而且因为自己是付了钱的,所以为了值会自己的所花的钱,就一定会好好看,好好学习,这样等于是花钱买了时间和注意力,捡了便宜。
貌似没有,大家都比较随意
当初为了省钱在兄弟家住了半年,上下班时间加起来将近4个小时,基本每天就是起床,上班,下班,吃饭,洗澡睡觉。把提升自己的时间都浪费在公交车上了。
|
|
|
|
5年前,我还没什么编程经验,第一次接触java的spring框架,了解容器容器的概念,立刻被它巧妙的设计所惊呆,没错,就是惊呆…没想到程序居然可以这么写!!
不是从上至下的命令式编程,不是分而治之的结构式编程,也不是我当时水平所认知的自底向上,相互作用的对象式编程,而是可复用,可替换的组件化编程。
后来一直做PHP Web应用开发,也没机会用Spring做一些应用,一直在想PHP什么时候也能有使用容器的框架就好了。
一次偶然机会,在一个技术qq群,有人推荐一个叫Slim的框架,我随手打开github,看看这个框架源码,又惊呆了,Slim里有容器,而且惊叹现在的PHP框架怎么越来越像Java Web的框架,有容器,有组件,全OOP。
Slim的源代码地址Github
附Slim资料链接:
以日志组件为例,来看看PHP是怎么配置组件,怎么讲组件注入容器,怎么实例化组件,以及何时实例化组件和调用组件的方法?
Slim/public/index.php
所有请求都是发送给入口文件,然后由入口文件分发请求到相应的服务,入口文件很简单,我截取了和主题相关的部分。
|
|
Slim/src/settings.php
其中就包含了logger组件的配置信息:
日志组件的名字:slim-app
日志组件的log记录保存的位置:__DIR__ . ‘/../logs/app.log’,
|
|
应用初始化之后,开始向容器注入应用所依赖的组件。
在Slim/src/dependencies.php里面定义了应用所依赖的组件,比如模板组件、日志组件、数据库组件等等。
我们就取其中logger组件来分析分析
|
|
这里将一个回调函数赋值给一个容器实例的“logger”属性,
研究一下这个回调函数:
回调函数的参数是一个容器实例,回调函数体通过这个容器实例获取logger组件的配置信息,根据配置信息实例化组件,最后返回这个组件实例。
将这样一个实例化组件的回调函数交给容器,就实现logger组件的注入——这种注入,通过回调函数注入依赖是依赖注入的一种实现方法。
这也是控制反转的一种实现,把原本由应用程序实例化组件,交给了低层容器去做。
那么把实例化得控制权交给容器,那么容器什么时候实例化组件呢?
答案是,在第一次调用组件的时候。
Slim/src/routes.php
|
|
在执行下面语句时,如果logger组件没有实例化,就实例logger组件,将实例保存在容器中,并且返回logger组件实例;如果容器中已经有logger组件的实例,就返回该实例——单例模式。
|
|
$this指向容器,这里使用了php的魔术方法__get()去获取容器的内的属性。
Slim/vendor/slim/slim/Slim/Container.php
|
|
最后调用下面方法放回logger组件的实例。
|
|
其中最关键是这一句
|
|
$raw是前面提到的logger的回调函数,通过$raw($this)去调用回调函数,返回logger组件的实例。
紧接着做了两件事:
一是赋值给$this->values[$id],作为一个单例保存在容器中,之后再次调用logger组件时,直接返回这个单例。
二是将logger组件实例赋值给$val,作为整个方法的返回值,返回到logger组件的调用处,也就是回到了之前调用logger组件的info()方法处,见下面代码,这样就能写日志到app.log文件里了,
Slim/src/routes.php
|
|
容器组件化编程,让我想起现代制造工业模式,比如汽车制造业。
最初汽车制造商所有汽车零件都是自己生产组装。
现代汽车厂商已经将汽车零件外包给第三方工厂。
汽车制造商只需要与第三方工厂签到合同,提供标准。
第三方工厂自行安排具体的零件生产工作。
汽车制造商需要汽车时,就从第三方工厂取货,组装汽车。
在这里汽车制造商就是就是容器,汽车就是应用程序,汽车零件就是组件。
看来不仅面向对象编程是对现实的抽象,软件设计思想也是来源现实世界的抽象
最后总结下来,Slim容器有2个特点:
时间 | 词汇量 |
---|---|
2016-08-04 | 5290 |
高层具体类依赖低层具体类
高层具体类依赖接口或抽象
低层具体类实现接口或抽象
接口相当于规范,是属于高层–管理层。
低层具体实现,就要依赖于规范去实现。
通过引入接口-规章制度,从原来的高层依赖低层,变成了低层依赖于高层的制定的规范,这样就依赖就反转了
高层函数中使用回调函数,
回调函数不是由高层函数调用,而是由低层函数调用。
从而实现反转。
学过面向对象编程的同学一定都知道,类是对象的模板,对象是根据模板创建的。
可是Javascript中没有类的概念,只有对象的概念,没有类怎么创建对象呢?
下面介绍两种创建javascript对象方法:
|
|
先定义一个函数,然后用关键字new调用它,就会得到一个对象。
|
|
注意:
清晰正确的概念,有助于我们认识世界,甚至可以被当做工具用来改造世界。
对于库、工具包、框架、设计模式、架构、编程范式这些概念的正确理解,同样有助我们认识虚拟的软件工程的世界。
对这些概念的相关知识的掌握,同样可以用来建设和改造软件。
下面是我对库、工具包、框架、设计模式、架构、编程范式这些概念的理解。