Fork me on GitHub

fullstack

gitignore文件示例

个人比较常用的.gitignore文件如下: #idea .idea/ target/ *.iml *.ipr *.iws *.log #eclipse .project .classpath .classpath.log pom.xml.versionsBackup .settings #gradle .gradle /build/ gradle-app.setting .gradletasknamecache #nodejs node_modules/ pac...

nginx反向代理WebSocket

WebSocket协议相比较于HTTP协议成功握手后可以多次进行通讯,直到连接被关闭。但是WebSocket中的握手和HTTP中的握手兼容, 它使用HTTP中的Upgrade协议头将连接从HTTP升级到WebSocket。这使得WebSocket程序可以更容易的使用现已存在的基础设施。 WebSocket工作在HTTP的80和443端口并使用前缀ws://或者wss://进行协议标注,在建立连接时使用HTTP/1.1的101状态码进行协议切换, 当前标准不支持两个客户端...

Jenkins持续集成 - 高级特性

这一篇记录一下Jenkins的一些有趣的东西,或者说更加接近于实战的东西,也许我写的这几篇内容只覆盖了20%左右的内容, 但是应该能解决实际工作中80%左右的问题。这就是常说的2/8准则,时间有限,我也只会去记录这些常用的东西。 Master/Slave模式对于大型构件项目而已,一台机器肯定是不够用的,Jenkins支持Master/Slave模式,可以添加任意多的从节点,将复杂任务分发出去。 另外对于不同的构建环境要求,比如Linux环境和Windows环境需要不同节...

Jenkins持续集成 - 使用案例

这一篇我通过两个实际的真实例子来演示Jenkins常见使用案例。 第一个例子演示一个标准的SpringMVC这个Java Web工程怎样自动抓取最新源码、测试、打包和部署, 第二个例子演示目前我做的Winstore这个Python项目怎样实现自定义构建指令、在线升级、自动打包和自动部署。 SpringMVC关于怎样写SpringMVC项目我这里就不去讲了,这里我构建了一个最简单的Web工程,把它放到开源中国码云上面了,大家可以下载下来测试。 地址:http://git....

Jenkins持续集成 - 管道详解

前面一篇介绍了Jenkins的入门安装和简单演示,这篇讲解最核心的Pipeline部分。 Jenkins Pipeline 就是一系列的插件集合,可通过组合它们来实现持续集成和交付的功能。 通过Pipeline DSL为我们提供了一个可扩展的工具集,将简单到复杂的逻辑通过代码实现。 通常,我们可以通过编写Jenkinsfile将管道代码化,并且纳入到版本管理系统中。比如: // Declarative // pipeline { agent any ① ...

Jenkins持续集成 - 安装配置

Jenkins是一个用Java编写的开源的持续集成工具,前身是Hudson项目。 在与Oracle发生争执后,项目从Hudson复制过来继续发展。 Jenkins提供了软件开发的持续集成服务。它运行在Servlet容器中(例如Apache Tomcat)。 它支持许多软件配置管理(SCM)工具,可以执行基于Apache Ant和Apache Maven的项目, 以及任意的Shell脚本和Windows批处理命令。Jenkins的主要开发者是川口耕介,MIT许可证。 安装...

git简明教程 - 技巧篇

这一篇会介绍git的一些常用技巧,开发中经常会遇到的问题,让我们感受git的强大之处。 cherry-pick我直接把它翻译成’摘樱桃’可以不? git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作。假设我们有个稳定版本的分支master, 另外还有个开发版本的分支dev,我们不能直接把两个分支合并,这样会导致稳定版本混乱,但是又想增加一个dev中的功能到master中, 这里就可以使用cherry-pick了,其实也就是对已经存在...

GitHub的一些好玩的技巧

GitHub用了这么久才发现其实上面也可以做很多好玩的东西,让我可以更加喜欢它了。 这里我总结自己知道的,肯定还有一些我还不知道的,以后看到了就补充上去。 拖拽代码到Gist打开https://gist.github.com/,然后直接把本地源文件拖过去,它里面的代码就移过去了。 代码链接有时候我们给别人别想某个代码文件的某段代码的时候,可能还要让别人自己在文件里对着行数找, 但是这个小技巧可以方便很多,只要在你的代码的URL文件后面添加#Lxx其中 xx 就是行数, ...

git简明教程 - 撤销篇

在实际使用git的过程中,我发现最常遇到的就是撤销,git里面有reset、checkout、revert来帮助我们撤回修改。 但是这几个命令有时候不是很好理解,虽然我在第一篇里面已经讲解过撤销,但是我还是想用专门用一篇来详细讲解如何撤销版本和文件。 之前只是讲了几个简单的命令教你怎么撤销,但是其中的原理如果你不懂的话就不会很好的使用这几个命令。 参考《Pro Git》第2版本中的重置揭密部分,为大家揭开撤销的原理和神秘面纱。 三棵树理解 reset 和 checkou...

git简明教程 - 协作篇

Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早, 肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库, 而且每台机器的版本库其实都是一样的,并没有主次之分。 实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机, 其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里, 也从服务器仓库中拉取别人的提交。也就是说这个”服务器“只不过是用来作为一个桥梁, 提供...

git简明教程 - 分支篇

终于要介绍git的杀手级特性分支了,这也是大部分人使用git的原因。 其他版本控制系统如SVN等都有分支管理,但是用过之后你会发现,这些版本控制系统创建和切换分支比蜗牛还慢, 简直让人无法忍受,结果分支功能成了摆设,大家都不去用。 Git的分支是与众不同的,无论创建、切换和删除分支,Git在1秒钟之内就能完成!无论你的版本库是1个文件还是1万个文件。 创建与合并分支每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线, 在Git里,...

git简明教程 - 基础篇

很早就想些一篇关于git的文章了,这玩意儿实在好用,但是内容又比较多, 这里我讲解最基本使用技巧,这个足以应对99%以上的场景,剩下那些真的要用到就去看官网手册。 Git是目前世界上最先进的分布式版本控制系统(没有之一),它的诞生也是个很有趣的故事。 大家都知道Git是Linus大神写的,据说刚开始的时候,linux内核源码使用BitKeeper这个商业版本控制系统, BitKeeper授权Linux社区免费使用,但是某一天开发Samba的Andrew这个家伙试图破解B...

使用ReadtheDocs托管文档

Read the Docs是一个在线文档托管服务, 你可以从各种版本控制系统中导入文档,如果你使用webhooks, 那么每次提交代码后可以自动构建并上传至readthedocs网站,非常方便。 一般来讲,这个非常适合写软件文档以及编写一些教程、电子书之类。对于一些一两篇文章就能写清楚的可以记笔记或写博客, 但是如果要写成一个系列的,不如写成一本书的形式,更美观,也更系统。 现有的写电子书的方式,有以下几个解决方案,优劣势也很明显: 写博客,跟散文堆在一起,不便索引。...

nginx笔记 - 配置HTTPS

TLS(transport layer security), 和它的后继者SSL是一个安全套接字层协议,是为了给普通的网络传输内容加密传输而来。 网站转成https是大势所趋。但是在国内,推进的过程显然要比国外慢很多。 现阶段如果将自己的网站改成https以后,会碰到这样的尴尬现象:如果在页面上引用了http://的链接或者图片, 用户在浏览器上会看到类似该网站是非安全网站的警告,对于网站运营者来说可以说非常冤。由于很多链接是第三方的,没有办法去控制。 对于api接口类...

nginx笔记 - 进阶篇

本篇介绍nginx的一些进阶使用方法,包括反向代理、虚拟主机、负载均衡、页面缓存等等。 反向代理(Reverse Proxy)方式是指用代理服务器来接受网络上的连接请求,然后将请求转发给内部网络上的服务器, 并将从服务器上得到的结果返回给请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 举个例子,一个用户访问 http://www.xiongneng.cc/readme,但是www.xiongneng.cc上并不存在readme页面, 它是从另外一台服务...

nginx笔记 - 配置和使用

nginx是一个优秀的 HTTP 和反向代理服务器,一个邮件代理服务器, 一个通用TCP/UDP代理服务器,官网地址:https://nginx.org/en/ nginx由于出色的性能,在世界范围内受到了越来越多人的关注。其特点是占有内存少,并发能力强, 事实上nginx的并发能力确实在同类型的网页伺服器中表现较好。 目前中国大陆使用nginx网站用户有新浪、网易、腾讯,另外知名的微网志Plurk也使用nginx 之前写过一篇关于nginx的入门篇,nginx作为一款...

WireShark基本使用

wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。 使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。 为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。 wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容。 如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TC...

centos7安装gitlab8.8

内部需要搭建一个源码管理控制环境,选择开源的gitlab,环境为centos7。这个平台类似于github,使用起来非常方便。 现在将搭建的步骤记录下来,因为官网上面提供的是ubuntu的流程。 全部命令都是在 root 用户下执行 安装操作系统 (CentOS 7 Minimal),先配置好网卡和DNS,保证网络没问题。 安装和添加基础工具yum install wget 安装EPEL源 yum install epel-release wget -O /etc/p...

yaml入门笔记

YAML是一个可读性高,用来表达资料序列的格式。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822。 目前已经有数种编程语言或脚本语言支援(或者说解析)这种语言。 最新版本为1.2,官方说明地址: http://www.yaml.org/spec/1.2/spec.html 使用方式:作为配置文件,数据交换格式,序列化对象存储,测试数据文件, 一个简单的示例: # 表示注释,从这个字符一直到行尾,都会被解析器忽略。 ...

xpath入门笔记

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。 XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。 起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。 但是XPath很快的被开发者采用来当作小型查询语言。 W3C网址: http://www.w3schools.com/XPath/ 表示法最常见的XPath表达式是路径表达式(XPath这一名称的另...

markdown语法详解

Markdown 是一种轻量级标记语言。它允许人们“使用易读易写的纯文本格式编写文档, 然后转换成有效的XHTML(或者HTML)文档”。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。 个人在平时非常喜欢用markdown写文档,完全就是程序员的福音,因为几个非常简单的语法就能实现漂亮的文字排版。 另外各种工具和网址对于它的支持也是非常好,github博客就是用markdown写的。 还可以利用版本管理,非常方便的管理写过的文章,这篇文章总结一下它的用法。 基本...