VirtualBox设置共享文件夹

最近在做 Gitlab 备份,Gitlab本身运行在虚拟机当中,备份策略是使用 Rsync 备份到远程主机一份;同时在宿主机备份一份。宿主机使用了windows,想到了一个较为简单的办法,即设置共享文件夹,将需要备份的内容定时复制到共享文件夹即可。在设置共享文件夹的过程中遇到一些问题,在此记录下来。

因为虚拟机所在的 IP 无法访问外网,只能访问公司内部网络。所以在进行下面的操作之前,需要配置一下 yum 的代理:

我在本机开启了 shadowsocks 服务,ip:192.168.1.70,port:1090

虚拟机内执行:

sudo vim /etc/yum.conf

增加下面内容:

1
proxy=socks5h://192.168.1.70:1090

保存,退出。yum代理设置成功。

虚拟机安装增强功能

联通华为HG8347R设置桥接模式

前面的笔记中有提到如何通过外网访问家里的服务。在某些场景下可能会用到,比如想要在单位ssh家里的电脑,或者访问家里的NAS等设备等等。之前用的电信的宽带,是通过自己的路由器拨号上网,并且外网IP也是直接分配好的,配一下DDNS和端口映射即可。前一段时间换了联通的宽带。

更换宽带的时候,联通提供了一个光猫,华为HG8347R。这个光猫取代了之前的路由器,拨号也由他进行。通过该光猫的无线功能就可以直接连接WIFI上网了。但是这个光猫的无线性能较差,于是在 Lan1 口接了一个自己的TP-link路由器,通过该路由器提供的wifi信号可以正常上网。此时出现了两个WIFI信号,一个是光猫提供的,一个是TP-link路由器提供的。家里的终端设备都使用TP-link提供的WIFI上网。此时的网络拓扑大致如下:

拓扑

阅读全文 »

可能会用到的Git技巧(2)

git worktree

我们知道如果工作目录修改到一半的话,是不能随便切换 branch 的。解决方法可以通过 git stash 先暂存起来,随后执行 git stash apply 恢复。

但是,如果我们想同时修改两个分支呢?或者同时测试两个分支。能想到的方法就是单独再 clone 一份代码到其他目录。但是这种方法不仅麻烦,而且形成了两个独立的 git 目录,双方的同步也比较费劲。

git 为我们提供了一个命令来解决这个问题,那就是 git worktree add -b <新分支名> <新路径> <从此分支创建>

比如,我们正在某个 feature 分支开发,现在希望从 master 分出一个分支来解决某个紧急的 BUG:

1
git worktree add -b hotfix ../hotfix master

阅读全文 »

可能会用到的Git技巧(1)

最近在看 gitlab 的源码,因为公司希望把 gitlab-ee 的 merge squash 功能集成到 gitlab-ce 上来,供公司内部使用….
这个任务交给了我,现在这个功能已经改的差不多了,中间也了解了一些可能会用到的 git 技巧,现在记录下来

git

git cherry-pick

git cherry-pick 可以应用某个分支的某些提交到另一个分支上去。

阅读全文 »

安装Gitlab-Development-Kit

Gitlab-CE是开源项目,意味着我们可以针对官方的Gitlab源码进行二次开发,从而定制出符合自己的开发习惯或开发流程的代码管理工具。

一般来说只要把Gitlab-CE的代码仓库clone到本地,就可以在上面修改代码了。Gitlab-CE的地址:https://gitlab.com/gitlab-org/gitlab-ce/ 。但是,只有源代码是不能够直接在本地上跑起来的,整个开发环境还需要安装很多依赖,以及配置数据库。Gitlab为了方便开发者,提供了一个Gitlab开发工具Gitlab-Development-Kit,其地址是:https://gitlab.com/gitlab-org/gitlab-development-kit 。Gitlab-Development-Kit可以帮助开发者很方便地在本地搭建起开发环境,并且把Gitlab运行起来。

  • 系统环境

    ubuntu-16.04.3-desktop-amd64

阅读全文 »

Gitlab调研

最近公司想要替换原来的代码管理工具Starteam,一方面是这个 Starteam bug不少,用起来有不少问题,随着开发团队的扩大,工具跟不上现在的开发节奏了;另一方面近几年 Git 已经成为趋势,作为开发人员,总应该顺应潮流…所以调研了一下 Gitlab 这个开源的项目管理工具。我觉得有必要把一些理解记下来,以备不时之需。

Gitlab Github Git

  • Github

提起开源,我们总能想到鼎鼎有名的 Github。Github 是一个代码托管网站,提供源代码托管服务。简单点来说,就是你可以把自己的代码上传到 Github 进行保存,然后在别的地方下载下来进行修改。当然,Github 不仅仅可以托管代码,你可以把他类比成网盘,存放你想存的任何东西,Github 还提供了一些其他的服务,比如写文档、生成电子书、托管博客等等。

GitHub 同时提供付费账户和免费账户。这两种账户都可以创建公开的代码仓库,但是付费账户还可以创建私有的代码仓库。

阅读全文 »

Java同步工具类

CountDownLatch

CountDownLatch(闭锁)的用法:

CountDownLatch在实例化的时候需要传入一个int类型的计数器,表示需要等待事件的数量。CountDownLatch.countDown()方法递减这个计数器,表示一个事件已经发生了;而调用了CountDownLatch.await()方法的线程等待计数器值达到零,表示所有需要等待的事件已经发生了。若计数器值非零,那么await()方法会一直阻塞到计数器的值为零,或者等待超时。

CountDownLatch的应用场景:

  • 确保某个计算在其所需要的所有资源都已经初始化后再继续执行。

  • 确保某个服务在其依赖的所有其他服务都已经启动之后再启动。

  • 等待某个操作的所有参与者都就绪后再执行。比如《荒野行动》,小队所有玩家点击“准备”之后房主才可以开始游戏。

阅读全文 »