1

初为程序猿(媛)的你,这些技能为你们加持

 2 years ago
source link: http://blog.agilestudio.cn/Some-Recommend-Skills-For-Primary-Programmer/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

每个程序员应该精挑细选和打磨他的工具箱,这里推荐的东西都是本人使用频次比较高的,不是奇淫巧技,也不需要花很多时间,但是会让你收益超额的,至少对我来说是这样的。

这是很有诚意的一篇文章,你可以选择一笑而过,也可以默默收藏。

一个自己的博客

笔者从大学就开始写博客,从 WordPress 到自己用 JFinal 写了一个,中间有断了几次,不想再续费服务器,对写的东西也不太满意,索性用 Github Pages + hexo 重新开始写。

个人觉得写博客,首先是为自己而写的,其次可能对他人有帮助。单纯地阅读而不思考收获会大打折扣的,写出来就是一个行之有效的思考整理过程。

我推荐用 Github Pages + hexo 的方式,一开始你可能和我一样写的不好,没什么人看,记住,首先你是给自己写的,坚持原创和记录,你会变的更好,等觉得拿的出手了,可以开始在一些平台上发表,比如掘金,简书。

花半天时间把自己的个人博客给搭建起来吧。

Shadowsocks

不能用 Google,就失去了世界上最大的百科全书的使用权,这个损失是巨大的!每天都会遇到无数问题的我们,学会越过这道墙成了一个必备的技能。

我建议自己买一台国外的服务器,AWS、阿里云等,最低配就可以了,可以几个人一起用,分担一下费用,稳定又安全,还可以在上面折腾点别的,这点投资我觉得是超值的。By the way, AWS 有一年的免费额度,阿里云也在搞活动,¥330 一年的(香港)国外节点。如果还是觉得麻烦,那至少应该去买个账号吧。(真的没收广告费)

搭建一个这样的服务真的超级简单,几行命令就能搞定。

服务端和客户端教程都可以在上面找到,如果有服务器的前提下,大约花你 30 分钟就能使用全球最大的百科全书了。

git & github

git 是个伟大的协作和版本管理工具,这几年经过社区的传播和国内越来越多 git 代码托管平台的崛起,现在 git 应该碾压乌龟 SVN 作为很多团队和公司的首选版本管理工具了,如果你还没有开始使用 git ,很遗憾你已经拖后腿了。

作为全球最大的源(程)代(序)码(员)托(社)管(交)平台 github ,以前我还不知道它有什么用,和很多人一样,注册之后很长时间里面就放了几个 Demo ,然后就不怎么管了。以前写代码就是蒙着写,不会就 Google 一下,不小心就会造一个重复的轮子出来 (SQLiteUtils: 实际是 4 年前写的,后来改了名字重新上传),这样其实是很不好的,闭门造车不仅仅是浪费时间,还可能阻碍了你的认知,自我感觉良好而已。移动互联网的快速发展,尤其是 Android ,涌现了很多优秀的开源作品,大家也开始会用 github 去搜索,收藏一些好的作品,学习并使用到自己的项目中。如果你只去使用那些公认足够 solid,有完整翻译过来的中文文档,百度一搜就有一堆答案的 library 或者 tools,可能你已经落后新生代的程序员一大截了。另外如果你有留意,越来越多的公司都把简历上的技术博客、 github 作为一个非常重要的加分项了,反正我在写 JD 和面试之前真的回去翻看对方的博客和 github 仓库的。

要写出好的文章,阅读大量的优秀文章是必不可少的;要写出优秀的代码亦如此,学会参与到一些开源项目中 ( 使用它;给它提建议和bug;动手修改它,提交你的 PR ),学着自己动手构建一个开源项目和维护它,这件事情需要极大的热情,但你会得到同行的支持和认可,为你的职业生涯添砖加瓦。

打开看到这么多东西,你可能又退回去使用你的乌龟了,我的建议是先注册个 github,简单了解一下 git 的原理和一些简单的命令,常用的命令其实非常少。git 的学习成本相对高,你可能至少花半天的时间去仔细研究一下,并且需要后面不断去总结和精进,当你熟练掌握的那一天,你一定会感激当初的自己。

持续集成(CI)

如果你在搭建自己的小网站,那么第一件事应该是让你的代码一写好然后就能一键发布到服务器上,这个技能就叫持续集成(continuous integration)。当然这个是狭义的解释哈。优秀的程序员应该有一个强烈的意识:dont repeat yourself. 不要做重复的工作。如果你是和我一样的 Java 程序员,每次打包上线重重复着修改配置 -> 打包 war -> 登录 ftp 上传 war 包 -> ssh 登录服务器发布,答应我,从今天开始不要浪费时间做这些重复的动作了。记住,看起来差不多重复的流程都可以通过写一些代码来完成。

在了解 jenkins 前,先看下我常用的一段发布脚本可以帮助你理解这个流程,以下的脚本是在服务器端运行的。

#!/bin/bash
2
3
TOMCAT_HOME=~/tools/apache-tomcat-9.0.0.M26
4
5
cd ~/sources
6
7
// 把项目源代码从 git 上复制下来
8
if [ ! -d "RAP" ]
9
then
    git clone https://github.com/YeDaxia/RAP.git
    cd RAP
else
    cd RAP 
    git reset --hard
    git pull
fi
// 切换到发布的分枝
git checkout release
20
echo "current branch is :"
21
git branch
22
23
// 替换正是环境的配置文件
24
cp -f ~/deploys/rap/config.properties ~/sources/RAP/src/main/resources/ 
25
26
// 打包 war 
27
mvn clean
28
mvn package
29
30
// 复制 war 到 tomcat 目录下
31
cp target/*.war  ${TOMCAT_HOME}/webapps/ROOT.war
32
33
// 把 tomcat 给停了,因为 shutdown.sh 经常有问题
34
#kill all java process
35
ps -ef|grep java|grep -v grep|cut -c 9-15|xargs sudo kill -9
36
37
//启动 tomcat
38
sudo sh ${TOMCAT_HOME}/bin/startup.sh

CI 的过程,就是你提交代码到 github 或者其他代码托管平台,然后触发一个 webhook 请求调用服务器端类似上面的一个过程的代码。

总之 CI 其实就是一件一劳永逸的事情,上面只是举个例子,无论你是 Android 程序员还是 PHP 程序员,你都应该花点时间掌握这个技能,你可能要学习一下一些构建工具,一点 linux 命令,这可能会麻烦一些,但是这是值得的。

学习vim就像学弹钢琴一样,一旦学会,受益无穷。

不要误会,我自己也是一个 IDE 程序员,除了装B,基本这是程序员绕不过去的一个工具,只要你还想自己搭建个服务器,做点东西。

登录你的 linux 系统,花半个小时跟着玩一下。不要和我一样几年后才意识到去使用那些快捷键,之前都只会愚蠢地使用左右上下,非常低效啊。用进退废,换了 idea 后,eclipse 的快捷键基本就忘的差不多了,我听说有人用 vim + markdown 来写博客的,我现在用的是有道笔记,我觉得这个可操作性还是有的,可以去尝试一下。

命令行窗口

只会用 ↑ ↓ ← →来移动光标真的很低效,很受不了!

ctrl + u : 清除当前行
2
ctrl + a : 到命令行首
3
ctrl + e : 到命令行末
4
tab: 自动完成
5
↑ ↓: 命令历史

Chrome Bookmark

你用什么来收集那些小的知识点和一些不错的站点呢?我的答案就是 Chrome 自带的书签了。注册一个 Google 账号,它会同步好你的书签,永不丢失。

chrome://bookmarks

用这个命令可以进入书签管理器,定期清理,有价值的留下,这样你的个人知识库了就越来越丰富了。亮一下我的书签:

my bookmark

好吧,就先介绍到这吧,夜已深。


另外,近期打算在 GitChat 做一次分享,手把手教大家去用好上面的工具,如果你有兴趣,可以先加一下这个 Q 群:70948803, 我定用心准备好,不负期待,让大家学到东西,欢迎围观!前 10 名有福利哦 :-) !

关于Agile Studio工作室

我们是一支由资深独立开发者和设计师组成的团队,成员均有扎实的技术实力和多年的产品设计开发经验,提供可信赖的软件定制服务。

未经声明,本站文章均为原创,转载请附上链接:
http://blog.agilestudio.cn/Some-Recommend-Skills-For-Primary-Programmer/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK