0%

今天突然想起自己好像还有个.tk的域名来着。现在用的这个.cn是腾讯云的教育免费域名,在这之前本站一直用的是freenom这家的免费域名。

阅读全文 »

本文主要介绍在拥有ipv6网络访问权限下如何进行免费上网。这里说的免费指的是无需登录各种校园账户认证(锐捷等)、无需拨号(电信宽带拨号等)。整个教程难免出现一些难懂的用语,不懂没关系,不需要理解,只要按照步骤做就好了。有不懂的步骤随时留言。

阅读全文 »

上次我们介绍了如何选购一台vps,这次我们来谈谈在自己的vps上搭建ss搭理。

阅读全文 »

程序员一周年总结——经验分享

这篇文章的初衷是想随便写点东西给准备要开始人生第一个项目的后辈们。起初只打算写个提纲,不知不觉插了几张图片,然后不知不觉写了5k+字。。。
就当做是做个总结吧,想想自己就是去年这个时候入了那个不知道什么鬼三体游戏制作的坑,不提了黑历史。不过这次写的东西相对还是偏入门易懂,有点像给所谓初学者的建议之类的,没有写最近才开始玩的网络和博客相关的事。


1. 编程相关

1. Intellij idea——你还在用eclipse吗?

java程序员入门一般都是选择eclipse吧?然而使用过idea之后感觉,,再也回不去了。。感觉就像是专业软件和普通软件的区别。。
idea的特性可以参考官网上的详细介绍,其中相比eclipse的便利实在太多太多(比如对Git的支持、界面布局的设计等),吾辈表示不知道怎么给大家详细表达,只能靠大家通过使用去感受了。至于很多人会问,既然idea那么好,怎么用的人好像很少啊。原因其实很简单:

  1. idea相比eclipse来说还是个后辈,普及还需要时间。
  2. eclipse在插件数量上是有优势,这一点必须承认,但是以我目前的使用来说并没有遇到什么只支持eclipse的不可或缺的插件。
  3. eclipse社区的强大,和第一点一个道理,在国内来说论坛求助什么的还是eclipse比较常见,但是在国外像stack overflow这样的论坛感觉用idea的人比较多。
  4. Ultimate版价格吓人,而eclipse免费,个人觉得这也许也是eclipse与idea的根本分歧点。

eclipse在纯java开发下可能还有一点点抵抗余地,但在Android和JavaFX的开发上我就觉得没什么理由选择eclipse了。别跟我扯谷歌官方推荐Android开发用Android Studio,那玩意儿就是基于idea改的。
此外强烈推荐大家直接下载安装Ultimate版,没错一年也就149$(摊手)。
喝咖啡
当然我没有那么多钱。。。学生可以申请免费使用一年
附上Ultimate版与Community版对比图,顺便一说Community版不支持css代码,使用javaFX需要注意。
版本对比
你以为我要安利的就是Intellij idea而已吗?不,吃我一发Jetbrains全家桶安利!他们家的Clion和PyCharm同样优秀!

2. Git版本管理——你还在用qq传代码吗?

对于外行人来说,一般都以为我们程序员之间团队合作是用网盘传文件的(用QQ传的给我去面壁!)。但是自从接触到版本管理的概念,邂逅了Git之后,才感觉到版本管理的强大。保持团队中个人的代码同步,项目多版本都是非常重要的。
关于Git的基本使用可以参考我另一篇文章——程序员基础系列——Git的安装和配置,最近还打算写Git的进阶使用来着。。。

3. Sublime Text——你还在用记事本吗?

写这一条纯粹是看不惯有些人现在还在用记事本读写代码(下面讨论的记事本全部指的是windows,OS X和Linux用户可以跳过)。。。同一份代码,记事本打开是这样的:
记事本
而sublime打开是这样的:
此处输入图片的描述
没错,有代码高亮、行数显示、自动缩进,甚至打开整个项目(图中左边目录就是本blog的项目文件结构)的功能,实在没有理由选择记事本。真的不能理解当时许多老师建议初学者用记事本是什么心态。。
有人会说既然看java项目我打开eclipse不就好了吗?
年轻
那一天,人类又回想起被eclipse淡定的启动速度所支配的恐惧。
龟速eclipse
我只是想读一下代码啊啊啊!
相比eclipse,sublime这种本编辑器更加轻量级,而且更加专注于简单地阅读、修改代码。而且eclipse是一个java IDE,sublime是文本编辑器,所以你在打开各种什么.html、.c、.py甚至吾辈写本文时使用Markdown的时候,eclipse表示,无能为力。而sublime表示,我们支持这么多语言。
sublime语言支持
。。。还有谁吗?
不过这里说一句,吾辈并不是特指sublime, (vim粉Atom粉要来喷我了)只是建议大家放弃windows的自带记事本选择一款专业的代码编辑器。你可以选择其他优秀的文本编辑器比如Github的Atom、微软家的Code(吾辈也装了)、甚至vim。只要它有如下特点:

足够多种类的代码支持;
对Git有较好的支持(可选);
界面舒服;
操作人性化;

4. Debug——你还在print调试吗?

首先明确下,print调试并不是完全无用,但更多时候我们应该使用debug功能。这里以idea为例简单说下:

public class tutorial {
public static void main(String[] args) {
    int a=0;
    for (int i=0;i<100;i++){
        a+=5;
        System.out.println(a);
    }
}

比如这段代码,想看到a的值,可以直接run然后打印出来。在debug下我们可以在 a+=5;这一行下个断点,然后debug,程序就会停在这一行。然后你可以按F8使程序单步执行,一步步跑完整个循环。你实时可以看到几乎所有变量的值。
debug

你甚至可以通过下方的Variables看到所有当前类内的对象和变量状况,通过watches窗口还可以自定义各种表达式来观察变量状态。
debug2

好吧我承认这里的例子不是很好,随手写的。debug在你的程序复杂的时候还可以帮助你一步一步跟踪,总的来说对调试是非常有帮助的。感觉周围的人都比较重视写的能力,反而忽视了调试的能力,有些小bug都要用print调试个半天。。。我们花在调试上的时间往往远超花在码代码上的时间,所以学好调试对于提高编程效率来说至关重要。


2. 技巧

下面随便扯一点小技巧吧。但是小技巧太多太零碎,一下子还是很难全部写下来呀。

1. 学好英语

恩,这点很关键。吾辈有时候实在无法忍受给组员推荐教程时,被回一句:“啊?这是英文的啊?看不懂啊。”

  1. 其实很多软件公司的文档本身就写得很好,比如Github developv3、idea的官方教程。没有必要去百度什么中文教程,看懂官方的英文教程更重要。
  2. 现在大多数优秀的常用的编程软件都是老外做的,他们的文档往往只有英文。虽然随着天朝地位的提高,越来越多公司开始重视中国客户,但很多比较新、比较小众、比较古老的技术一般是没有中文的。。。(装Debian的时候就发现Debian这么有名的系统,中文wiki和社区竟然才还处于建设状态。。。反而openSUSE能找到比较全的中文wiki支持。)
  3. 虽然现在有各种各样的汉化,但软件这个专业很多名词还是用英文会比较好理解。原来用eclipse汉化版后来换到idea英文才真正理解什么是build、refactor。
  4. 有时候有必要逛一下国外的论坛,包括github上各种交流勾搭,不得不承认看懂那些英文还是很重要很关键的。

最后说一点,吾辈也不是崇尚英文,有合适的中文的选择的话我会选中文,因为中文作为母语有一种亲切感,阅读检索速度也不是英文能比的。所以请无视上面那张汉化版sublime的截图

2. 学会翻越长城——通向更广阔的世界

这一点主要是为了解决下面的Google问题,众所周知我天朝万里长城牢不可破(笑)。学习软件工程很多时候也确实需要访问一些国外网站(不过也有很多是可以直接上的)。翻过去的方法可谓五花八门,这里就不一一罗列了,只挑比较常见的几种谈谈我的看法。

  1. 国内各种各样的VPN。VPN实现方案有很多,所以这些代理的质量也是参差不齐。免费的VPN推荐碰都不要碰,先不提公交车的速度,安全性都没有保障。收费的吾辈没有用过,主要是配置起来还不如ss方便,而且VPN默认全局代理。。。
  2. 谷歌GoAgent,只要拥有一个谷歌账号就可以申请GoAgent账号。现在貌似已经不能找到这个项目的官方网站了。使用的时候需要安装GoAgent客户端,貌似没有找到mac下的版本。谷歌提供香港、台湾、美国的节点(没有日本!)。大概2014年的时候用起来还是可以的,15年下半年开始之后就各种抽风,经常拿不到可用ip地址,也导致我放弃了它。但是可以确信的是它现在还是活着的,而且有很多所谓傻瓜式翻(和)墙(谐)浏览器其实就是chrome+SwitchOmega+GoAgent公用账号配置成的,算是比较常见的方案吧。
  3. 改DNS大法。通过修改host文件使墙外网站指向国内可用的ip地址达到目的,这种做法很简单很粗暴。但是长城也不是死的,经常需要更改可用的ip地址,比较麻烦。而且也只能上host中添加的网站,算是比较麻烦的方式。
  4. ss代理,这应该是目前最好的方案了,吾辈目前也在用的方案。就是用过墙外服务器搭建ss服务端,本地的设备通过ss客户端输入账号密码就可以代理上网了。一般建议直接买别人搭建好的ss服务账号,客户端登录一下就好,十分方便。当然网上也有很多免费账号共享,吾辈之前一直在用iShadowsocks的账号,它们家提供香港、日本、美国三个免费节点,6小时更换一次密码。然而随着越来越多人知道这个网站后,代理质量越来越差,(甚至有一段时间日本节点被滥用至停止分享。。。)以及意识到免费代理的安全隐患后,吾辈选择了自己租vps搭代理,选购vps的教程在这里。自己搭代理还可以自己选地区,不用担心找不到合适的地区啦。其实一般人用美国的代理就够了,然而吾辈还要玩舰娘,,,必须日本代理。。

比较推荐的就是通过ss的sock5代理,简单安全,方便稳定(前提是你有一个比较优质的ss账号(吾辈现在手上一堆vps主机,需要账号可以留言问我要))。

3. 使用谷歌等国外网站——深入学习

上面既然说到要学好英语,那么在以英文为关键字搜索的时候就别用百度了。谷歌百度的区别不想多谈,不想参加什么搜索引擎撕逼,想知道的可以去知乎搜
然而凭良心说百度的国内搜索做得已经有点样子了,平时搜番吾辈也比较习惯用百度。

这里说一下用谷歌不一定要翻(和)墙(谐),方法有很多,但比较推荐使用各种各样的谷歌镜像站,这些基本都是基于国外vps搭建的反向代理,不保证一直能用,具体自己找吧,因为吾辈也很久没用过镜像站了,手上一堆vps,然而也懒得搭反向代理。这里随手推荐wen.lu,它家的项目可以在github上找到,好用记得star哦。

4. 使用快捷键——把鼠标给我扔了

Oh,,,真的无法忍受组员还有人不知道ctrl+cctrl+v,你们能想象一个靠右键工作的程序员有多慢吗?
树懒
无法忍受!!!个人觉得代码果然还是算文字工作,文字工作就应该多多依靠键盘。实际上我这里想说的就是使用你的键盘,没错,把鼠标扔了。下面是吾辈随便总结的键盘使用的六个境界:

  1. 学会ctrl+cctrl+v等编辑用快捷键,还有alt+tabctrl+win+←ctrl+win+→等窗口切换快捷键。这些很基本,多数人都会用;
  2. 学会通用快键键。许多软件的快捷键是通用的,这类似于业内不成文的标准,例如ctrl+o(打开)、ctrl+n(新建)等,很多人不知道这些快键键在很多软件内是一样的功能;
  3. 学会软件内的特殊快捷键,比如多数IDE里的ctrl+/(注释当前行)、idea里的shift+enter(另起一行)、浏览器的ctrl+w等。学会一个软件的基本快捷键可以使你快速掌握调教好它;
  4. 学会ctrl+左右shift+方向shift+PageUp等快键键(甚至还有人不懂用tab键切换输入框。。。)在文字编辑工作中完全拜托鼠标;
  5. 使用nTurn等win+R软件启动方案,灵活使用HomeEndPageUpPageDownwinDelete这几个普通人很少用的快键键以及他们的各种组合键,达到日常使用都能摆脱鼠标的地步;吾辈也没达到这一步
  6. 学会使用vim或Emacs系按键操作,丧心病狂地在各种软件中使用vim等的键位操作(比如idea中的vim模式,甚至chrome中的Vimium),这真的是走火入魔,以至于旁人根本看不懂你的操作。
    7. 抛弃windows投靠Linux

上面这些纯粹是随便扯扯,大家看着玩就好。吾辈是到了第五个阶段实在是懒得再往下了,有时候,纯粹是懒,就想一只手工作。。。顺便安利一下反键盘邪教WGestures,实现全局鼠标手势,单手操作的懒虫必备。

PS:如果在使用软件内的快捷键中发生了不愉快的事,请把你的搜Dog输入法、企鹅聊天的全局快键键关掉,所有随便添加全局快捷键的行为都是流氓!!也不建议大家用那些一个按键就从桌面启动自定义应用的软件,兼容性不是很好,容易产生各种冲突,win+R还是比较安全实用的。


3. 推荐网站

网站方面其实软件技术还是逛各种博客、论坛比较好,然而这些太多太杂,知识也比较片面化,所以这里还是推荐一些比较全面的网站。

1. 极客学院

多数视频教程是要收费的,所幸他们家也参加了青葱计划,学生可以获得一个月的vip。而且他们免费的文字wiki也做得很好,虽然仍对他们的文字教程版权持疑问。
教程很全很细,你甚至可以找到Intellij和Atom这些工具的使用教程。

极客学院wiki

2. 菜鸟教程

菜鸟教程

涵盖多种程序语言的文字教程,相比极客学院更加轻量级,教程叙述更加简明,适合平时查阅常用语法或者入门学习时使用。

3. Github全球最大同性社交

在这里你能看到全球各种各样的开源项目,有facebook-sdk这样的官方维护的项目,也有net-speeder这样小而美的个人小项目,你能在github上找到各种各样的项目。包括本博客采用的主题NexT也是在github上开源的。新手(包括吾辈)项目经验不足时最容易犯的就是项目结构的错误,好的项目果然还是需要一个合理的结构。这里就推荐大家多多看别人成熟项目的结构和实现,确实能学到很多。
在github上你也可以做很多有趣的事儿,比如本博客就是搭建在github上的一个静态博客。
最后说一句,遇到好项目要记得star哦!
最最后说一句,本博客右上角可以直达吾辈的github主页,欢迎到github上找吾辈玩~


写在结尾

嘛,希望后辈第一次项目能留下美好的回忆啦(笑)。吾辈手上刚刚交付了一个迭代,暂时能喘口气,感觉这段时间博客开下的坑有点多啊,不知道什么时候能补完了。。。

作为一个现实的程序员不可能总是在Github上开发是吧?这时候要做版本控制就得回归根本,请出我们的Git啦。这篇教程主要是为入门用户准备的,如果你已经安装并配置了git并已经学会了基本的使用,请手动无视。

阅读全文 »

My First Post

In fact,I still don’t know how to edit by Markdown…


这相当于这个blog的创始页面吧。简单来说这个blog就是吾辈一时兴起搞的。

阅读全文 »