本文转载自公众号“读芯术”(ID:AI_Discovery)。
软件行业发展迅速,开发人员想要跟紧步伐变得非常困难。即便你天赋异禀,工作努力又动力十足,如果达不到当前行业发展趋势的标准,仍然可能节奏错乱。
越来越多的人开始对软件开发感兴趣,更多的工具和软件应用程序随之进入市场,以促进开发更高的编码标准,加速开发时间。拥有必要的工具和良好的互联网连接,开发就容易多了。但由于有数不胜数的工具,选择“最佳工具”便成为一个挑战。
随着云技术的出现,大多数基于产品的公司已经开始将代码库迁移到云上。那么要想在云上顺利工作,我们需要知道些什么呢?
90%的公共云计算服务运行Linux。称职的软件开发人员必须熟练使用Linux系统。当从GCloud、AWS或Microsoft Azure等服务平台创建自己的Linux虚拟机时,通常会无法访问图形用户界面(GUI),必须使用Linux终端来操作和管理服务器。大多数软件公司都鼓励团队合作,这促成了对Git的需求。
现在,学习Linux终于有了合理的理由。从丰富多彩的、交互式的、有吸引力的Windows操作系统转向Linux对大多数人来说可能是一场噩梦。但如果能熬过前几周,最终的回报可能会卓有成效。在体验了Linux的所有功能后,你再也不会想用Windows,当然,除非你是游戏玩家。
因此,我决定学习这些要点,尝试建立一个有效的锁定。通过浏览互联网,我发现了Crio.Do在主办了九月份的#IBelieveInDoing,其中就包括Linux和Git!
整个挑战分为三个字节(每个字节是一组里程碑,每个里程碑都集中于一个特定主题):Linux Basics1、Linux Basics2、GitBasics1。
一开始是要多有趣有多有趣的开端,人们不到一个小时就看到了Linux的力量。活动主持人向我们展示了一些使用Linux可以做的有趣的事情,比如运行庆典脚本,使用netcat创建双向聊天应用程序,以及如何使用终端运行推特!
Linux Byte 1
开始入门(图片版权:Crio.Do 入门)
启动这个字节时最大的挑战是访问终端,因为大部分人都不能访问终端。Crio考虑到并不是每个人在机器/互联网资源中都有足够的计算能力来为Linux设置一个Virtual Box或Dual Boot,因此找到了gitpod形式的替代方案。
这个字节首先介绍了一些基本命令,如:
- pwd-打印工作目录。
- ls-列出目录的内容。
- cd-更改工作目录。
这一字节以非常具有相互作用的方式向前推进,教我们正确使用命令。每一个里程碑最后都有一系列问题,这些问题很有创造性,引人深思,会确保我们的实验水平和谷歌搜索能力足够好才能回答。每个里程碑都有一个叫做“好奇猫”的部分,其中有一些额外的问题或任务以供对新事物感兴趣的人思考。
最后一个里程碑是有史以来最有趣的。它包括对常见记录文件的数据分析,如Hadoop、Openssh和Apache记录。这些是基本技能,将给行业带来新的重大开端,因为大多数人只有在开始为组织工作时才会学习这样的分析技术。
工程师天资聪颖、富有动力,但这些聪明人很懒惰(总得有人说出来!)。因此,如果一个工程师每天都要做一项任务,他就会把精力投入到让这个过程自动化中,然后就可以自由活动了。我们学会了在Linux中使用chron和chrontab实现重复任务的自动化。
Git Byte 1
在职业生涯的开始阶段,每个开发人员都遇到过这种情况:
- 离不开旧代码,因为你破解了Ctrl + Z以外的新代码。
- 对要使用的代码版本感到困惑,因为你的工作区有像project-backup、project-backup-final和project-ok-this-is-final-code这样的目录。
- 必须在不破坏整个代码的情况下整合团队成员所编写的代码。
- 跟踪某个变化的原因及其作者。
版本控制系统可以在这些情况下提供帮助。系统通过记录文件的快照来跟踪文件更改。可查看以前的快照,也可以将代码恢复到以前的快照。这让我们在项目工作中不用担心把错误带到部分或完整工作版本中,也不用担心无法返回。
Git就是系统其中之一,可能还是最普及的一种。这个字节告诉我们如何使用SSH或HTTPS设置git,两者各有千秋。我们通过命令来研究git的整个工作结构,这些命令能初始化repo、克隆repo、在repo的本地副本中做一些更改并将其推到远程服务器上等等。这个字节确保你在内存中永久获得“git委托”。
在获得Linux和Git的超能力之后,你想到的第一个宠物项目是什么?在Linux中,你可以跟踪文件最后被修改的时间,Git可以作为更新版本的存储。你可以建立属于自己的简单版谷歌驱动器!
图源:Crio.Do
在研究了一些可以用来设计制作自己的谷歌驱动器的选择后,笔者发现了两种实现的方法。
(1) 名为inotifywait的工具可以使用Linux的inotify接口有效地等待文件更改。它适用于等待框架脚本对文件的更改。它可以在事件发生时退出,也可以在事件发生时继续执行和输出事件。所以笔者的想法是在指令中创建一个使用inotifywait的脚本,以便文件考虑更改时,需要执行一个过程,即将文件添加到git登录并成功地推送它。
方法1的源代码(请注意我在提交时添加了“日期”,这并非必要,但是顺便添加一些元数据来区分提交是很好的编程实践。)
(2) 创建脚本来检查特定文件的内方法1的源代码(请注意我在提交时添加了“日期”,这并非必要,但是顺便添加一些元数据来区分提交是很好的编程实践。)方法1的源代码(请注意我在提交时添加了“日期”,这并非必要,但是顺便添加一些元数据来区分提交是很好的编程实践。)容是否已被修改,以及修改后将新内容推送到远程服务器。为了使这个过程自动化,可以将脚本添加到chrontab。(代表chron表格,它是运行的chron作业的集合,其中chron作业是按照分配给它的每个调度运行的守护进程,例如:每5分钟、每小时、每星期等等。)
这些是笔者为了实现简单工作版本的驱动器提出的想法。此外,笔者在一个特定的文件上添加了检查,这可以扩展到监测目录或整个系统。还可以有很多方法来做同样的事。
学会了这些技能之后,笔者在Linux中尝试了一些炫酷的技能:
(1) 在终端观看星球大战电影
- sudo apt-get install telnet
- telnet towel.blinkenlights.nl
(2) 快速获得终端上ASCII图像的原型
(3) 可以用“!!”运算符和根权限(Sudo)以管理员身份运行前面的命令!我总是想运行一些命令但忘了使用“sudo”,这个技巧可以省去很多繁琐的回退和间距。例如:
- apt-get install <something>sudo !! -> Same as sudo apt-get install <something>
挑战结束时,你应该能够克服对终端和Git的恐惧。但有时并非如此,因为技术非常不稳定,如果不经常使用就会忘记使用方法。所以去网上或生活中找个小例子,开始大胆地应用这些技能吧。
这个版本对笔者来说改变了游戏规则,希望其他接受这个挑战的开发人员也有同感。投入的每一分钟都是值得的,我也希望有更多年轻开发者能参与到未来版本的开发中来,以获得更好的职业生涯。