备份需要任务怎么做需要

林老师在群里给大家布置了一个学习任务,为过一段时间的实战项目做准备。

作为一个刚刚参加完ThoughtWorks暑期训练营的同学,我应该怎么来完成这个任务呢?

首先看一下两天之后部分同学的进展:

”我准备今天才开始,准备跟某茹同学一起合作学习。还是以前那种5w1h,然后分享,一天最多两个技术吧,这样想的?。想着先搞懂基, 然后结合写demo。“

”我是昨天开始学习的林老师任务。昨天主要学了mySQL,基本知识点差不多了,还没写demo练习,打算从今天开始和某秀同学结对学习java的相关东西。jersey + mybatis 我们暂定时间是一个星期,然后开始写todolist“

”老师,我前几天了解了一下docker和selenium,昨天看了jersey 后期准备和某红同学结对学习mytalis和mysql以及复习java的知识。暂定用一周来了解这些技术栈。“

看到同学们已经开始了,有了一个粗略的计划,并且没有忘记我们在训练营中学到的”合作学习“、”5w1h“、”分享“、”先写Demo“等方法,我觉得非常开心,你们很棒!只是我有些担心同学们的意愿是好的,但是在如何把它想得更细,并划分成可以有效执行的任务时,会遇到困难。

所以我在这里想聊一下,如果我接到了这个学习任务,我应该做什么以及怎么做。同学们在阅读的过程中,可以回想一下我们在训练营里所教授的东西,结合起来,希望在下一次遇到类似的任务时,也能按类似的方法给自己定出一个详细的学习计划。

先在前面说一下我的套路:

明确这个学习任务的需求

当林老师告诉我们这个学习任务时,我们需要问自己(以及林老师)这几个问题:

  1. 老师为什么要给我们布置这个学习任务?
  2. 通过这个任务,我们要锻炼哪些软硬技能?
  3. 我们应该在什么时间前完成?
  4. 我们应该学到什么程度?
  5. 我们应该使用什么样的合作方式?自学,结对,还是建立一个学习小组?
  6. 这些学习任务中,哪些是最重要的,必须掌握的,哪些可以延迟?
  7. 这看起来是一个比较大的任务,我怎么对它进行拆分?
  8. 我怎么知道我掌握了?比如每个小任务应该有什么输出?
  9. 我最近有什么其它的事情要忙,怎么安排我的时间与精力?

这些问题大家都清楚了吗?至少有一些,我是不太清楚的(比如时间等),等林老师方便的时候问下他。

回顾一下林老师的任务:

可以看到这里分为两个部分,一是”技术需求“,另一个是”功能需求“。

技术需求就是我们要学习的,可以稍后再看,我们先看一下功能需求:

写一个 todolist,可以对 todo 进行查看,删除,新增的功能

这个描述还是不太清楚的,不过我们其实还有一些背景信息的:之前我们在课堂上应该了解过这个著名的,所以我觉得这里说的就是上面的例子。如果不太确定,我们可以先看看,然后再问问林老师。

随便找了个例子(比如),看了一下它的demo,实际操作了一下,看看我们要做成什么样子。

我们可以在上面试试新增、删除、标记为完成、修改等功能,另外要注意底部左边的"n items left"的数字会变动,底部右边几个按钮还可以点击。

这时我可以把这个网址发给林老师,问问我们是不是要做成这个样子,底部那些按钮需不需要做。当然,我觉得林老师的回答肯定是,你能做就做,做不完就算了。。。

然后我们再看看技术需求:

这里列出了主要的技术点,看起来不多,但是想一想,发现后面其实还有很多的隐藏信息:

  • 我们的暑期训练营上刚刚培训完,当初教的各种实践和方法都要用上吧:***任务,提问,画图,限时,Demo预研,等等
  • 语言没有提(JavaScript和Java),这假设我们已经掌握了足够的基础知识。真的吗?
  • 项目实践:构建工具,IDE使用,git+github,测试,结对,合作
  • 这是一个学习任务,所以还有:自学能力的锻炼,规划与总结,分享

这样一想,似乎东西还不少啊。怎么办?我到底需要学哪些东西啊?

我们可以先把前面的技术需求再明确一些,只有再精细一些,我们才知道到底需要学习哪些东西。

这里,我把它们分为了”前端,后端,数据库,工具,其它“五个方面。

  • 资源打包工具:,及相应的插件
  • 图形管理工具:自行寻找
  • 效率:IDE快捷键,Linux命令行

天啊,怎么会这么多,我是不是想多了?当然,同学们可能一开始是想不到这么多的,但是随着项目进行,你会发现,到最后可能会比这还多。。。

  1. 这些我们都需要在这个任务中学吗?
  2. 我们有没有办法合作学习?

关于第一个问题,大家留意一下上面加粗的技术点,就属于特别重要、必须掌握的,其它的可以参考已有代码或者根据自己的情况来定(或者分工,一人学一些,然后分享给其他人)

关于第二个问题,我们需要找到组织。

我们有十几位同学都在做相同的学习任务,我们能不能成立一个或者多个学习小组?我们已经有:

    (各位同学快发过来你们的github帐号) 有问题在论坛上讨论啊,老师们会一直盯着(为了防止恶意注册,目前实行邀请制,大家把邮箱发给我)

当然,如果你们有自己的学习小组,也可以建立自己的github组织或者项目。

有了组织,但是一个人学习还是太孤单,找一个小伙伴吧。两个人平时可以一起学习、讨论、写代码。

对于这个任务来说,找一个离自己近的,聊得来的,经常能坐在一起交流的同学更合适一些。

在学习的过程中,大家都需要通过写博客来记录和分享自己所学。由于大家在学差不多的东西,所以可以互相关注,及时看到别人的成果,节省自己踩坑和卡住的时间。

有些同学在csdn或者cnblogs等地方有自己的博客,我推荐大家使用,界面漂亮,写作体验非常好,能让人爱上写作。里面还可以使用markdown语法,写起来非常方便,另外还可以自动保存,历史版本比较,最赞的是可以发布的朋友圈让人打赏!说不定你写的东西解决了某个同学的问题,他一高兴打赏你十块八块的。

(插播:本文求打赏:)

然后每个人都有了博客,怎么才能最快的知道别人写了什么新博客呢?推荐使用一个叫的RSS订阅服务,它在安卓和苹果下都有客户端,比较好用。把同学的博客地址贴上去,就可以订阅了。一旦有新文章,就可以第一时间看到。

这里需要注意的是,简书并没有提供rss服务,不过我们可以使用,把简书上的用户地址贴上去,如果正确的话,就能生成相应的RSS链接,贴到inoreader里就可以啦。

现在知道老师为什么能第一时间知道同学们写了什么新博客吗?

建议大家像老师一样,把大家的博客(甚至我们的BBS)都订阅上,需要链接的可以找老师,到时候把种子文件导入一下就行了,非常简单。

大家写博客肯定需要贴一大堆代码,还有各种标题、列表等等,使用普通的富文本编辑器,又麻烦又难控制,最终的效果通常也不怎么好看。

这时我们就可以花半个小时学习一下markdown,就可以高效的写出漂亮的博客了!而且这种语法在github/stackoverflow等各种地方都可以使用,受益终生啊。

需要注意的是,markdown有很多增强版,我们通常使用的是github的版本,参看这里:

你也可以试试在线的markdown编辑器,可以实时看到效果,方便学习,比如:

前面我们明确了技术点,但真正动手的时候,我们还需要对它们进行进一步的细化,制定出可执行、可验证的更小的任务,才能动手做。在这个过程中,我们往往会发现一些事前没有考虑到的问题,产生更多的小任务。

  1. 最终的每一个小任务都是应该能在半天左右完成(熟练后一到两个小时内)。这样可以让我们在同一时刻需要关注的事情更少,并且能利用好每天的碎片时间,及时完成,及时分享,每天都能感觉到进步。

  2. 每个任务必须有输出,输出形式可以根据任务类型来定,比如图形、博客、代码、视频、分享、甚至教给别人等等

当我们第一次看到一个名词,对它一无所知,或者仅仅是听说过而已,我们应该怎么办?

不要慌张,也不要随便找了一篇文章或者一本书就从第一页一直读下去,而且要围绕着这个东西,问一些问题等等:

先对这些最基本的问题做一定程度的发散,搜索资料(请使用google)获得一些信息,同时还会得到一些新的问题,然后再做发散,直到感觉那些问题或者***跟我目前想学习的东西关系不大时,就可以及时停止,然后再针对最核心的概念与知识进行深入学习。

这里以webpack为例,看小波老师是怎么学习的。首先小波老师提出了一堆最基础的问题:

然后找到了它们的***:

同时又引出了新的问题:

我们可以看到,其中有的问题很早就结束了,比如“什么时候出现的?”,这可能是因为其***并不容易搜到,但由于不是很重要,所以就算了。

其它的问题或者***也可以根据我们的兴趣、精力,以及它与我们当前学习目标的紧密程度,我们来决定是否继续追问下去。

比如,这里是小波老师的最终版本:

当我们画完上面这个图时,我们对于webpack在宏观上就已经有相当程度的了解了,足以支持我们当成当前的学习任务(甚至都可以做个分享出来)。然后我们就可以深入到内部,去研究它的核心概念和方法(一般在文档中都会重点提到),画出一个“概念关系图”。

这里以redux为例(因为redux是必学,并且概念很多),给出相应的“概念关系图”:

redux的概念关系图

从图中我们可以看出,里面是真实的类或者方法的名字,通过连线表示出来它们之间的相互关系,通过数字来表示它们之间的调用顺序。

对于我们要研究的东西,相信只要我们能画出这两张图,我们对它的理解就达到很好的程度,后面再结合Demo预研,相信很快就可以掌握。对于jersey, mybatis,甚至mysql,我想大家都可以用上这种方法。

另外,在提问、寻找***、画图的过程中,建议大家和自己的小伙伴一起,这样效率更高,效果更好。

对于这类小任务,我们的输出通常是这些:

当我们经历了前面的画图探索之后,虽然我们对它的整体情况有了一定程度的了解,但是我们还没有用真实可执行的代码来验证,这时我们再细分出一些demo预研的小任务。

这些小任务通常要比较小,从简单到复杂,每个小任务只完成一个功能集中且相对简单的任务(比如可以在一到两个小时内完整实现)。我们会创建一个新的目录,从零开始,创建一个独立、完整、仅包含要验证功能的最小代码的一个项目,然后把它push到github上,仅自己使用或者分享给同学。

代码中除了必要的代码外,还需要有一个README文件,里面用简洁的方式说明这个项目是做什么的,怎样配置和运行,有什么注意的地方,以及相关的资料链接等。分享给别人后,别人应该不需要再来问你,就可以自己运行起来。

在这个过程中,需要特别强调的几点:

  1. 项目命名非常重要,请尽量使用能够突出主要目的的关键字。比如我想写一个最简单的react项目,那么名字可能是react-hello-world-demo;如果想演示state的使用,那么是react-state-demo;如果想强调使用的是ES6中的class,那么可以是react-es6-class-hello-world-demo。当我们小项目越来越多时,你会觉得这些命名实在太重要了。

  2. 每个项目要完成的功能一定要单一。不论是自己以后使用,还是分享给别人,如果项目中混合了多个功能,基本上就没法使用,因为别人很难区分项目到底哪些代码是为这个功能,哪些是为那个功能,它们之间有没有联系。可以多建一些项目,但是不要混合在一起。

  3. README一定要有,但要简洁。我们不必假设使用这个项目的是一个完全不了解它的小白,而应该是有一定经验的开发人员。这样,readme中可能给出一些关键的命令,以及一些需要的注意的点,必要的时候再加一些扩展阅读的链接即可。比如:


  4. "^15.3.0"。这是因为在js的世界里,依赖库的升级非常容易导致不兼容的现象,而当我们在一个比较久的时间之后来运行这些代码,很可能因为太多的库有新版本而导致程序出错。

  5. 当我们的demo项目越来越多后,为了方便对它们进行分类,我们可以在github上创建一些组织(orgnization),用于存放不同语言的Demo。

如果你不知道怎么做,就到看看老师的demo,找找感觉。我把我的两个demo orgnization放在上里,你会在上面发现很多有用的demo:

(注意,刚才我在查看的过程中,发现不少项目的README上的名字或者内容有错误,欢迎同学们指出。这是因为我创建了一些最基本的demo项目,然后在做新的demo时copy它们导致的)

对于这种类型的任务,我们的输出通常是一个github上的demo(可分享给其他同学),以及,如果过程中我们遇到了坑或者有意思的东西,可以写一篇博客分享出来。

对于前面提到的技术点,让我们对它们细分吧!

  1. 使用React在页面上创建嵌套的两个组件
  2. 纯Redux(不使用react)的简单的”点击按钮数字加1“
  3. 使用mocha运行最简单的测试
  4. 在测试中使用nock模拟http服务器
  5. express例子(方便写服务器端来配合前端)
  1. 使用gradle/maven来运行一个最简单的测试
  2. 使用gradle/maven来运行一个有多个第三方依赖库的程序
  3. 使用spring运行一个hello world,要使用到它的依赖注入功能
  4. 使用spring boot创建一个最简单的例子
  5. 使用mybatis来连接mysql数据,执行最简单的增删改查功能
  6. 使用fastjson进行对象与字符串之间的转换
  1. 在Linux命令行下进行常见的数据操作
  2. 通过命令行对数据库进行备份
  3. ***mysql桌面管理工具
  4. 在mysql桌面管理工具中操作数据库
  5. 结合实例使用常用的SQL语句
  1. 简书有什么功能,如何切换成markdown,如何生成rss
  2. Markdown的常用标签总结和示例

上面的这些任务是我拍脑袋想出来的,可能并不全,以后会根据大家实际遇到的情况进行添加和修改。当然你也可以根据自己的情况,创建不同的小任务,这里仅供参考。

对于这里的每个小任务,大家可以根据自己的情况,来决定输出是什么。只需要记住最重要的一点:你的输出一定是可以分享给其他人的东西。

如何完成一个需要写代码的小任务

对于上面需要写代码的小任务,我们应该怎么做?

没错,你已经测到了,就是我们在训练营中已经练习了一遍又一遍的“基于管道图的任务***大法”,或者用英文“基于pipeline的tasking大法”。

已经不记得的同学,请阅读下面几篇文章,这都是仝校长的智慧结晶:

以及我们核心的做事方式:

那我什么时候才能开始做Todolist?

前面列出来了这么多的小任务,我应该把它们全都(或者大部分都)掌握以后才开始做Todolist吗?

当然不是,如果这样的话,不知道要等多久了。。。

正确的做法是,我们需要开两条线并行前进:

  1. 小任务线:***小任务进行demo预研

我们应该从Todolist线开始,如果我们没有遇到问题,那就继续实现功能;当我们遇到了不会的东西时,离开Todolist线,把刚才遇到的问题抽象成一个或多个简单的小问题,转到小任务线,把它们实现出来;然后再回到Todolist线,用刚才学到的知识继续实现。

如果同学们组成了学习小组,我们就可以互相分享小demo,这样就可以省掉了很多自己研究的时间,同时也有了人可以讨论。

  • 信息型的:没法推理出来,需要搜索或者别人告诉
  • 研究型的:可以根据已有信息推理出来,需要自己花时间去想去尝试

对于初学者来说,最浪费我们时间的往往都是信息型的知识。比如需要某个功能但是不知道什么库可以做到,怎么引用它,IDE怎么配置,有什么注意事项,哪里有什么坑,等等,往往一卡就是几个小时。这时候我们需要做的不是自己闷着头,不搞定不睡觉,而是及时提问,说不定几分钟就搞定了呢?

我们有哪些提问和信息获取渠道呢?

  • 同学的博客和项目demo

比如我可以提前告诉大家一个坑:我创建了一个哪怕非常简单的gradle项目,下载依赖居然卡几个小时,把我坑了很久。后来解决了,发现只要在build.gradle里加上一个jar包仓库的配置即可。当你遇到了同样的问题,问我的话,一分钟就能解决,不问的话,,,哈哈

另外我们在bbs专门创建了版,有问题第一时间上去问啊,老师们都盯着呢。(已经把这个bbs加入到我的inoreader阅读器里了)

再强调一下,当你学到了东西,不论是完成了小任务,还是解决了一个问题,一定要花时间把它分享出来。比如写博客,给同学讲,在网上直播写代码,或者在实验室定期组织分享活动,都可以。

也许这会花掉你的一些时间,但是要知道,这在锻炼你的软技能:你的思考能力、信息整理能力、写作能力、表达能力、同理心、公众演讲能力,你的收获可能会比你写的那些代码更大!

及时关注其他同学的输出

像老师一样,在手机上***一个RSS阅读器(推荐inoreader),把同学们的博客,github,以及bbs全都加进去,这样当你没事的时候,就可以打开看一眼,也许只花10秒种就可以让你省掉几个小时。

最后,祝大家能通过这一个简单的Todolist学习任务,真正学到项目所需要的各种技能。

该经验图片、文字中可能存在外站链接或***号码等,请注意识别,谨防上当受骗!

在SQL Server 2008数据库中。为了防止数据的丢失我们就需要按时的来备份数据库了。要是每天都要备份的话,人工备份会很麻烦的,自动备份的话就不需要那么麻烦了,只要设置好了,数据库就会自动在你设置的时间段里备份。那么自动备份要怎么设置呢。下面为大家讲解。

  1. 在电脑开始菜单中选择“SQL Server Management Studio”双击。在出现的界面中点击“连接”按钮。

  2. 在出现的“SQL Server维护计划向导”界面中点击“下一步”

  3. 在出现的界面中把名称和说明写上。然后点击“更改”设顶备份计划

  4. 在出现的“作业计划属性”界面中,更改执行时间,也就是多久备份一次。这里该为每天备份。间隔时间更改为“1”更改执行一次时间为0:00:00也就是在每天的0点自动备份数据。

  5. 更改好以后,就可以在下面看到“在每天的 0:00:00 执行。将从 开始使用计划。”然后点击“下一步”按钮

  6. 在选择维护任务界面中选择要备份的数据库文件。然后点击下一步。

  7. 在选择维护任务顺序中,可以移动要备份的数据库文件的顺序。然后点击“下一步”

  8. 在定义“备份数据库完整”界面中,选择数据库后面下拉菜单中的数据库文件。然后点击“确定”按钮

  9. 在定义“备份数据库完整”界面里选择备份路径。然后点击“下一步”

  10. 在“选择报告选项”界面中设置好“报告文本文件”的路径。然后点击“下一步”

  11. 在出现的“完成该向导”界面中会看到设置备份的详细信息。

  12. 这样数据库自动备份就成功了。

  • 一定要启动了SQL Server代理,数据库才会自动备份的。

经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。

作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
  • 你不知道的iPad技巧

参考资料

 

随机推荐