├── 2016 ├── 11 │ └── 28 │ │ └── github-flow │ │ └── index.html └── 04 │ └── 12 │ └── hello-world │ └── index.html ├── CNAME ├── fancybox ├── blank.gif ├── fancybox_sprite.png ├── fancybox_loading.gif ├── fancybox_overlay.png ├── fancybox_sprite@2x.png ├── fancybox_loading@2x.gif ├── jquery.fancybox.css └── jquery.fancybox.pack.js ├── css ├── font │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.svg └── style.css ├── js ├── jquery.imagesloaded.min.js └── gallery.js ├── archives ├── 2016 │ ├── 11 │ │ └── index.html │ ├── 04 │ │ └── index.html │ └── index.html └── index.html ├── tags └── github │ └── index.html ├── about └── index.html ├── stack └── index.html └── index.html /CNAME: -------------------------------------------------------------------------------- 1 | www.zstack.net 2 | -------------------------------------------------------------------------------- /fancybox/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devops/devops.github.io/master/fancybox/blank.gif -------------------------------------------------------------------------------- /fancybox/fancybox_sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devops/devops.github.io/master/fancybox/fancybox_sprite.png -------------------------------------------------------------------------------- /fancybox/fancybox_loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devops/devops.github.io/master/fancybox/fancybox_loading.gif -------------------------------------------------------------------------------- /fancybox/fancybox_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devops/devops.github.io/master/fancybox/fancybox_overlay.png -------------------------------------------------------------------------------- /fancybox/fancybox_sprite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devops/devops.github.io/master/fancybox/fancybox_sprite@2x.png -------------------------------------------------------------------------------- /css/font/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devops/devops.github.io/master/css/font/fontawesome-webfont.eot -------------------------------------------------------------------------------- /css/font/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devops/devops.github.io/master/css/font/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /css/font/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devops/devops.github.io/master/css/font/fontawesome-webfont.woff -------------------------------------------------------------------------------- /fancybox/fancybox_loading@2x.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devops/devops.github.io/master/fancybox/fancybox_loading@2x.gif -------------------------------------------------------------------------------- /js/jquery.imagesloaded.min.js: -------------------------------------------------------------------------------- 1 | (function(c,n){var l="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";c.fn.imagesLoaded=function(f){function m(){var b=c(i),a=c(h);d&&(h.length?d.reject(e,b,a):d.resolve(e));c.isFunction(f)&&f.call(g,e,b,a)}function j(b,a){b.src===l||-1!==c.inArray(b,k)||(k.push(b),a?h.push(b):i.push(b),c.data(b,"imagesLoaded",{isBroken:a,src:b.src}),o&&d.notifyWith(c(b),[a,e,c(i),c(h)]),e.length===k.length&&(setTimeout(m),e.unbind(".imagesLoaded")))}var g=this,d=c.isFunction(c.Deferred)?c.Deferred(): 2 | 0,o=c.isFunction(d.notify),e=g.find("img").add(g.filter("img")),k=[],i=[],h=[];c.isPlainObject(f)&&c.each(f,function(b,a){if("callback"===b)f=a;else if(d)d[b](a)});e.length?e.bind("load.imagesLoaded error.imagesLoaded",function(b){j(b.target,"error"===b.type)}).each(function(b,a){var d=a.src,e=c.data(a,"imagesLoaded");if(e&&e.src===d)j(a,e.isBroken);else if(a.complete&&a.naturalWidth!==n)j(a,0===a.naturalWidth||0===a.naturalHeight);else if(a.readyState||a.complete)a.src=l,a.src=d}):m();return d?d.promise(g): 3 | g}})(jQuery); 4 | -------------------------------------------------------------------------------- /js/gallery.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | // Caption 3 | $('.entry').each(function(i){ 4 | $(this).find('img').each(function(){ 5 | if (!$(this).hasClass('nofancybox')){ 6 | var alt = this.alt; 7 | 8 | if (alt){ 9 | $(this).after('' + alt + ''); 10 | } 11 | 12 | $(this).wrap(''); 13 | } 14 | }); 15 | }); 16 | 17 | // Gallery 18 | var play = function(parent, item, callback){ 19 | var width = parent.width(); 20 | 21 | item.imagesLoaded(function(){ 22 | var _this = this[0], 23 | nWidth = _this.naturalWidth, 24 | nHeight = _this.naturalHeight; 25 | 26 | callback(); 27 | this.animate({opacity: 1}, 500); 28 | parent.animate({height: width * nHeight / nWidth}, 500); 29 | }); 30 | }; 31 | 32 | $('.gallery').each(function(){ 33 | var $this = $(this), 34 | current = 0, 35 | photoset = $this.children('.photoset').children(), 36 | all = photoset.length, 37 | loading = true; 38 | 39 | play($this, photoset.eq(0), function(){ 40 | loading = false; 41 | }); 42 | 43 | $this.on('click', '.prev', function(){ 44 | if (!loading){ 45 | var next = (current - 1) % all; 46 | loading = true; 47 | 48 | play($this, photoset.eq(next), function(){ 49 | photoset.eq(current).animate({opacity: 0}, 500); 50 | loading = false; 51 | current = next; 52 | }); 53 | } 54 | }).on('click', '.next', function(){ 55 | if (!loading){ 56 | var next = (current + 1) % all; 57 | loading = true; 58 | 59 | play($this, photoset.eq(next), function(){ 60 | photoset.eq(current).animate({opacity: 0}, 500); 61 | loading = false; 62 | current = next; 63 | }); 64 | } 65 | }); 66 | }); 67 | })(jQuery); 68 | -------------------------------------------------------------------------------- /archives/2016/04/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |新的开始
69 | 70 | 71 |整个开发流程大致如下。
70 |2新建的本地仓库分支中进行提交这个流程必须遵守 “令master分支随时保持可以部署的状态” 这一规则。
没有进行过测试或者测试未通过的代码绝不可以合并到master分支。
进行新的作业时要从master分支创建新分支,无论是添加新功能还是修复BUG都是如此。此外,新分支的名称要具有描述性。
81 |修改代码时要注意,绝对不能进行与该分支工作内容无关的修改。
设计提交的粒度,有意识的减小提交的规模,一方面便于清楚地表达目的,另一方面有助于其他开发者对Pull Request进行审查
在开发过程中,定期将本地仓库中创建的分支以同名形式push到GitHub端的远程仓库
83 |Pull Request不一定非要在于master分支合并时才使用。既然是团队开发,完全可以尽早创建Pull Request让其他开发者进行审查,
一边听取反馈一边编写代码,没必要等到与master分支合并时再进行。
代码合并至master分支并且通过所有自动化测试之后,需要立即进行部署(预部署或是生产环境)。
在部署之后,需要确认刚刚合并的代码是否存在问题。
新的开始
119 | 120 | 121 |整个开发流程大致如下。
69 |2新建的本地仓库分支中进行提交这个流程必须遵守 “令master分支随时保持可以部署的状态” 这一规则。
没有进行过测试或者测试未通过的代码绝不可以合并到master分支。
进行新的作业时要从master分支创建新分支,无论是添加新功能还是修复BUG都是如此。此外,新分支的名称要具有描述性。
80 |修改代码时要注意,绝对不能进行与该分支工作内容无关的修改。
设计提交的粒度,有意识的减小提交的规模,一方面便于清楚地表达目的,另一方面有助于其他开发者对Pull Request进行审查
在开发过程中,定期将本地仓库中创建的分支以同名形式push到GitHub端的远程仓库
82 |Pull Request不一定非要在于master分支合并时才使用。既然是团队开发,完全可以尽早创建Pull Request让其他开发者进行审查,
一边听取反馈一边编写代码,没必要等到与master分支合并时再进行。
代码合并至master分支并且通过所有自动化测试之后,需要立即进行部署(预部署或是生产环境)。
在部署之后,需要确认刚刚合并的代码是否存在问题。
The requested content cannot be loaded.
Please try again later.