2017年6月14日星期三

IntelliJ_003:常用快捷键

环境:MAC OS X 10.12.5 + IntelliJ IDEA 2017.1.4

在 MAC 上的 IntelliJ IDEA 常用快捷键如下:

1. 代码格式化 command + alt + L
2. import 格式化 ctrl + alt + O


参考文献:
1. https://www.jetbrains.com/help/idea/keyboard-shortcuts-you-cannot-miss.html
2. https://hackpad.com/Intellij-IDEA-key-shortcuts-for-Mac-OS-X-yisyQoIGERW

IntelliJ_002:常用设置

环境:MAC OS X 10.12.5 + IntelliJ IDEA 2017.1.4

1. Java 项目右键没有 New Class 的问题

右键 Project,选择 Open Module Settings,选择 src 目录,Mark as: Sources。
参数说明:
(1)Sources 一般用于标注类似 src 这种可编译目录。有时候我们不单单项目的 src 目录要可编译,还有其他一些特别的目录也许我们也要作为可编译的目录,就需要对该目录进行此标注。只有 Sources 这种可编译目录才可以新建 Java 类和包,这一点需要牢记。
(2)Tests 一般用于标注可编译的单元测试目录。在规范的 maven 项目结构中,顶级目录是 src,maven 的 src 我们是不会设置为 Sources 的,而是在其子目录 main 目录下的 java 目录,我们会设置为 Sources。而单元测试的目录是 src - test - java,这里的 java 目录我们就会设置为 Tests,表示该目录是作为可编译的单元测试目录。一般这个和后面几个我们都是在 maven 项目下进行配置的,但是我这里还是会先说说。从这一点我们也可以看出 IntelliJ IDEA 对 maven 项目的支持是比彻底的。
(3)Resources 一般用于标注资源文件目录。在 maven 项目下,资源目录是单独划分出来的,其目录为:src - main -resources,这里的 resources 目录我们就会设置为 Resources,表示该目录是作为资源目录。资源目录下的文件是会被编译到输出目录下的。
(4)Test Resources 一般用于标注单元测试的资源文件目录。在 maven 项目下,单元测试的资源目录是单独划分出来的,其目录为:src - test -resources,这里的 resources 目录我们就会设置为 Test Resources,表示该目录是作为单元测试的资源目录。资源目录下的文件是会被编译到输出目录下的。
(5)Excluded 一般用于标注排除目录。被排除的目录不会被 IntelliJ IDEA 创建索引,相当于被 IntelliJ IDEA 废弃,该目录下的代码文件是不具备代码检查和智能提示等常规代码功能。
通过上面的介绍,我们知道对于非 maven 项目我们只要会设置 src 即可。
如上图箭头所示,被标注的目录会在右侧有一个总的概括。其中 classes 虽然是 Excluded 目录,但是它有特殊性,可以不显示在这里。

参考文献:
1. http://blog.csdn.net/qq_27093465/article/details/52912444

IntelliJ_001:安装与基本配置

环境:MAC OS X 10.12.5 + IntelliJ IDEA 2017.1.4

终于决定要使用 IntelliJ IDEA 了,之前同事力荐,说比 Eclipse 强太多,一直没有亲自尝试。

1. 下载
下载地址:https://www.jetbrains.com/idea/
选择 Ultimate 版,这个需要注册激活,建议使用正版。

2.  安装
双击 ideaIU-2017.1.4.dmg 安装

3. 配置

3.1 HTTP Proxy
有些应用需要联网翻墙,因此需要设置 HTTP Proxy

3.2 代码自动补全
All 所有字母区分大小写。
First letter 首字母区分大小写。
None 不区分大小。

3.3 黑色炫酷主题

3.4 删除项目
IDEA 的 Project 相当于 Eclipse 的 Workspace,IDEA 的 Module 才相当于 Eclipse 的 Project,File -> Close Project,鼠标放在要删除的 Project 上,然后按 Delete。
注意,这样操作后,磁盘上的项目目录并没有删除,需要手工删除。

3.5 无法编辑文件的问题
原因是因为在安装向导中勾选了IdeaVim插件,导致编辑器按照 vim 的方式工作,需要按 I 键才能输入
不勾选 IdeaVim 插件即可解决这个问题。


参考文献:
1. http://www.phperz.com/article/15/0923/159043.html
  

2017年6月6日星期二

Nexus_014:使用 Nexus 3 配置 npm 私服

环境:MAC OS X 10.12 + JDK 1.8 + Maven 3.3.9 + Nexus 3.3

1. 为每个 npm 仓库创建各自的 Blob Store
(1) npm-registry(proxy)
(2) npm-company(proxy)
(3) npm-taobao(proxy)
(3) npm-private(hosted)
(4) npm-group(group)

2. 创建各个 npm 仓库
(1) npm-registry(proxy)

 (2) npm-company(proxy)

(3) npm-taobao(proxy)


3. 测试
mkdir test
cd test
git clone https://github.com/redhat-helloworld-msa/bonjour.git
cd bonjour
npm install --registry http://localhost:8081/repository/npm-group/
npm start
访问 http://localhost:8080/api/bonjour

4. 在配置文件 ~/.npmrc 中设置 proxy 和 registry
npm config set proxy http://squid.rdu.redhat.com:3128(根据自己环境,选做此步)
npm config set registry http://localhost:8081/repository/npm-group/
重新编译 bonjour,这次不用加 -- registry 参数。
由于已经在 ~/.npmrc 中设置了 registry,并且之前已经编译过一次,所有 npm 库已经下载到 nexus 中,所以这次编译很快。

参考文献:
1. NodeJS中的NPM代理设置 http://blog.csdn.net/joshuajiang/article/details/46399835
2. 给电脑换源 npm 国内镜像 cnpm http://yijiebuyi.com/blog/b12eac891cdc5f0dff127ae18dc386d4.html
3. npm 私服(上)http://blog.csdn.net/u010130282/article/details/51892625
4. npm 私服(下)http://blog.csdn.net/u010130282/article/details/51981203
5. npm设置仓库 http://blog.csdn.net/xinluke/article/details/52330916
6. 国内优秀npm镜像 https://segmentfault.com/a/1190000002576600
7. npm常用命令 https://my.oschina.net/lhplj/blog/286570

2017年6月2日星期五

Nexus_013:使用 Nexus 3 配置 docker 私服

环境:MAC OS X 10.12 + JDK 1.8 + Maven 3.3.9 + Nexus 3.3

1. 为每个 docker 仓库创建各自的 Blob Store
(1) docker-hub(proxy)
(2) docker-redhat(proxy)
(3) docker-private(hosted)
(4) docker-group(group)

2. 创建各个 docker 仓库
(1) docker-hub(proxy)

(2) docker-redhat(proxy)


(3) docker-private(hosted)

(4) docker-group(group)

3. 添加 Insecure Registries

192.168.56.1:8082 是 docker-group 的 http 端口
192.168.56.1:8123 是 docker-private 的 http 端口

4. 删除 docker 代理配置
删除 docker 代理配置,否则 docker pull 会有问题。



5. 测试 docker-hub 和 docker-redhat

docker login -u admin -p admin123 192.168.56.1:8082

docker pull 192.168.56.1:8082/hello-world
docker pull 192.168.56.1:8082/rhel7.3

6. 测试 docker-private

docker login -u admin -p admin123 192.168.56.1:8123

docker tag hello-world 192.168.56.1:8123/hello-world
docker push 192.168.56.1:8123/hello-world
多次 Retry 之后,报告错误,输出如下:
The push refers to a repository [192.168.56.1:8123/hello-world]
98c944e98de8: Pushing [==================================================>] 3.584 kB
received unexpected HTTP status: 500 Server Error

TODO

参考文献:
1. http://www.cnblogs.com/wzy5223/p/5410990.html 试用 Nexus OSS 3.0 的docker仓库 (一)
2. http://www.cnblogs.com/wzy5223/p/5414965.html 试用 Nexus OSS 3.0 的docker仓库 (二)
3. http://www.sonatype.org/nexus/2016/06/29/using-nexus-3-as-a-private-docker-registry/
4. http://www.sonatype.org/nexus/2017/02/08/using-nexus-3-as-your-repository-part-1-maven-artifacts/
5. http://www.sonatype.org/nexus/2017/02/14/using-nexus-3-as-your-repository-part-2-npm-packages/
6. http://www.sonatype.org/nexus/2017/02/16/using-nexus-3-as-your-repository-part-3-docker-images/
7. http://www.cnblogs.com/wzy5223/p/5389546.html
8. http://www.sonatype.org/nexus/2015/09/22/docker-and-nexus-3-ready-set-action/



Nexus_012:使用 Nexus 3 配置 maven 私服

环境:MAC OS X 10.12 + JDK 1.8 + Maven 3.3.9 + Nexus 3.3

Nexus 3 和 2 创建 Hosted Maven 仓库方式有些不同,这里以 jboss-eap-6.4-maven-repository 为例说明。

1. 为 Hosted Maven 仓库创建 Blob Store




默认 Blob Store 是在跟 nexus 3 同级的目录下的 sonatype-work/nexus3/ 目录下。
和 nexus 2 不同,该目录下并没有 store 目录,以及各个仓库的子目录,只有一个 blobs 目录,里面是各个 blob store 名称的目录。
在点进去看,发现 nexus 3 使用 lucene 优化了仓库存储方式,不再以纯目录 + jar 包的方式保存。

2. 创建 Hosted Maven 仓库,选择对应的 Blob Store

3. 所有的仓库创建完毕后,如下图所示