热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【全是干货】谈谈如何学习一项新技能,没有理论,全是实战

前言我的上篇文章:面试分享:专科半年经验面试阿里前端P6总结(附面试真题及答案)评论区有几位同学问我如何学习,今天就单独开篇文章来谈谈吧&

前言

我的上篇文章:面试分享:专科半年经验面试阿里前端P6+总结(附面试真题及答案) 评论区有几位同学问我如何学习,今天就单独开篇文章来谈谈吧,欢迎各位大佬在评论区贴上自己的学习方法。

以下是我的学习方式

学习某种语言

  1. 大致看一下官方文档,不要一个一个的仔细研究,太费时间也记不住(别担心,后面有方式帮你记牢),英语不好的(我的英语比较渣)推荐直接使用Chrome+谷歌翻译插件通篇翻译,读懂大概意思,再回来看英文文档是否有理解偏差的地方,相当好用?。如果你有其它语言基础,可以对比着看,很多东西是通的,找到他的不同点,了解他的优势及实用场景

  2. 看看前辈们整理的Awesome Lists

    • 如果没有你需要的,可以加一个awesome关键词直接搜索,比如:小程序 Awesome、react awesome
  3. 想想你到底想用这个语言来干什么?

    • 假设我想要node.js来写一个rest api,我就会 用github搜索:node rest api(最好不要用中文搜索)
    • 我会选取其中几个Readme写的好并且持续维护的项目直接clone到本地,开始一个一个研究clone下来的项目,最后对比着看,取他们所有优秀的地方
  4. 拿 express-mongoose-es6-rest-api 这个项目来举例

    • 打开项目,首先搞明白项目根目录里面的文件夹/文件都是干嘛的,这个时候谷歌搜索就派上大用场了,一个个的搞明白

    • 通过上面步骤知道了应该在package.json里面找找入口文件(其它语言类似)

    • 可以从入口文件直接读它的源码,可能里面很多内容看着都一脸懵逼,不要怕 不要怕 不要怕(稳住 我们能赢 哈哈)

    • 我当时读的时候先看package.json(第一次看这些代码没什么先后顺序的区分,完全凭感觉,最多就是走点弯路)

    • 附上我去年刚刚学习前端时候是如何读package.json的,用包管理网站/谷歌搜索一个一个的搞明白,坚持很重要,去年的笔记截图:

    • 回头看一下,通过上面步骤我学到了什么酷炫的东西呢?

      • express、express开发模式、express常用三方中间件、及前端安全相关的一些东西
      • node.js的日志管理
      • 使用joi验证数据
      • jwt的使用,及应用场景(不止可用于js项目)
      • babel是干什么的,搞明白了后,我就开始写es6/7代码了?
      • eslint是什么玩意,搞明白后,我就用上了
      • gulp是个什么玩意,开始自己试着编写我需要的task
      • 学会使用nodemon
      • git commitizen规范(不止可用于js项目)
      • 服务端js测试及覆盖率
      • travis CI(不止可用于js项目) ...... 还有一些,不一一列举
    • 现在可以开始看源码了,不懂就查文档(这个时候看文档比之前直接看文档记得熟练)?

    • 看第一个项目往往是最难的,坚持吧,坚持下来后面就容易多了(这是我的笨办法)

  5. 再举一个学习其它语言的例子,前段时间看身边很多小伙伴在手机上玩答题游戏,我就想写一个答题脚本实现脚本自动答题的功能

    • 首先第一个想到的就是研究下微信小程序跳一跳脚本的实现原理
    • 在网上搜索学习到跳一跳脚本的一般实现原理:python起一个脚本通过WebDriverAgent触发ios设备的截图,根据截图用python分析旗子位置,分析下一个方块的中心点,根据算法算出按住时间,python触发WebDriverAgent执行
    • 开工...简单看了python3.5的文档及编码规范
    • github上找了个相关项目wechat_jump_game
    • 学习大概流程,及常用工具...
    • 开始写自己的项目,期间遇到给跳一跳不太一样的地方,答题游戏需要文字识别,当然还是通过万能的谷歌找答案:tesseract-ocr、百度OCR,网上大部分人说谷歌的tesseract没有百度ocr识别率高,所以直接用了百度OCR
    • 最后,写完项目还要思考
      • 例1:如果不通过手机截图(不通过webdriveragent)怎么玩?可以通过手机连电脑,共享屏幕,然后电脑截图,直接ImageGrab.grab很简单;貌似还可以直接破解协议
      • 例2:你甚至可以写这样一个脚本玩探探,哈哈
      • 例3:如何高级一点玩呢?加入face++人脸识别啊,算出颜值,漂亮的再喜欢(玩笑?,主要是想说明做完项目要思考,做这个项目能给你以后带来什么)

学习某种开源框架/工具

  1. 一般比较好的开源框架/工具,它自身项目里面就会有很好的example与写的很好的文档,比如next.js、redux等
  2. 如果没有example,看文档
  3. 遇到问题直接看源码,打断点慢慢调试,太复杂实在不明白就看它的issue,没有就提,提完一般要一段时间才有人回你,这期间可以自己去谷歌上搜索相关问题,或者进入它的组织群,国内比如ant(直接加他们的微信/钉钉群),国外比如next.js,核心维护者一般都会留Twitter在文档里,直接联系就好了(英语渣的使用谷歌翻译,自己多补补英语),解决完问题记得关闭issue哦。

最后附上Github,以后blog也会第一时间更新到:https://github.com/Gavin1995 的blog项目 issue里面


转:https://juejin.im/post/5a9572c25188255efc5f844d



推荐阅读
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文讨论了B360主板是否可以安装win7系统的问题。由于B360主板不支持win7系统且缺乏官方驱动的支持,安装win7系统可能存在兼容性和稳定性问题。然而,通过借助USB3.0转接卡,B360主板仍然可以安装win7系统,但USB接口无法使用。相比之下,B365主板可以直接支持win7系统,并提供了相应的驱动,具有更好的稳定性和兼容性。选择合适的主板对于安装win7系统至关重要。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 面向对象之3:封装的总结及实现方法
    本文总结了面向对象中封装的概念和好处,以及在Java中如何实现封装。封装是将过程和数据用一个外壳隐藏起来,只能通过提供的接口进行访问。适当的封装可以提高程序的理解性和维护性,增强程序的安全性。在Java中,封装可以通过将属性私有化并使用权限修饰符来实现,同时可以通过方法来访问属性并加入限制条件。 ... [详细]
author-avatar
kanney姜_958
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有