<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on sdvcrx - A tech blog</title><link>https://www.sdvcrx.com/post/</link><description>Recent content in Posts on sdvcrx - A tech blog</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 01 Nov 2019 21:56:08 +0800</lastBuildDate><atom:link href="https://www.sdvcrx.com/post/index.xml" rel="self" type="application/rss+xml"/><item><title>Gitlab CI Devops</title><link>https://www.sdvcrx.com/post/2019-11-01-gitlab-ci-devops/</link><pubDate>Fri, 01 Nov 2019 21:56:08 +0800</pubDate><guid>https://www.sdvcrx.com/post/2019-11-01-gitlab-ci-devops/</guid><description>&lt;p&gt;上周把只有一个 &lt;code&gt;build_job&lt;/code&gt; 的 GitLab CI 重构了一下，简单梳理了一下 GitLab CI 的基本概念。&lt;/p&gt;</description></item><item><title>JavaScript 读写二进制数据</title><link>https://www.sdvcrx.com/post/2018-12-30-javascript-array-buffer-and-typed-array/</link><pubDate>Sun, 30 Dec 2018 17:08:04 +0800</pubDate><guid>https://www.sdvcrx.com/post/2018-12-30-javascript-array-buffer-and-typed-array/</guid><description>&lt;h2 id="预备知识"&gt;预备知识&lt;/h2&gt;
&lt;p&gt;JS 操作二进制数据涉及到三个基本类型：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ArrayBuffer&lt;/code&gt; 、 &lt;code&gt;TypedArray&lt;/code&gt; 和 &lt;code&gt;DataView&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;为了达到最大的灵活性和效率，JavaScript 类型数组（Typed Arrays）将实现拆分为 &lt;strong&gt;缓冲&lt;/strong&gt; 和 &lt;strong&gt;视图&lt;/strong&gt; 两部分。ArrayBuffer 作用是作为缓冲区存放实际的二进制数据，TypedArray 和 DataView 作为视图访问底层的 ArrayBuffer。&lt;/p&gt;</description></item><item><title>使用 SendBeacon API 上报数据</title><link>https://www.sdvcrx.com/post/2018-11-21-beancon-api/</link><pubDate>Wed, 21 Nov 2018 21:25:51 +0800</pubDate><guid>https://www.sdvcrx.com/post/2018-11-21-beancon-api/</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;最近看过 Google Analytics 的客户端 &lt;a href="https://github.com/jehna/ga-lite"&gt;ga-lite&lt;/a&gt; 源码，它使用了 &lt;code&gt;SendBeacon&lt;/code&gt; API 来发送相关信息到 Google 服务器。简单查了查后发现，&lt;code&gt;SendBeacon&lt;/code&gt; API 现在已经广泛用于各种统计/追踪代码的实现中。于是我对 &lt;code&gt;SendBeacon&lt;/code&gt; API 做了下了解。&lt;/p&gt;</description></item><item><title>Element 源码学习：SCSS 妙用实现 BEM 命名法</title><link>https://www.sdvcrx.com/post/2018-08-20-elementui-bem/</link><pubDate>Mon, 20 Aug 2018 21:16:49 +0800</pubDate><guid>https://www.sdvcrx.com/post/2018-08-20-elementui-bem/</guid><description>&lt;p&gt;最近在阅读 &lt;a href="http://element.eleme.io/#/zh-CN"&gt;ElementUI&lt;/a&gt; 源码的时候查看样式，发现其中使用了 &lt;code&gt;SCSS Mixins&lt;/code&gt; 非常巧妙的实现了 &lt;a href="http://getbem.com/"&gt;CSS BEM&lt;/a&gt; 命名规范，也借此机会了解一下SCSS的高级用法，在此记录分享一下。&lt;/p&gt;</description></item><item><title>JWT 实战</title><link>https://www.sdvcrx.com/post/2017-11-25-jwt/</link><pubDate>Sat, 25 Nov 2017 22:16:49 +0800</pubDate><guid>https://www.sdvcrx.com/post/2017-11-25-jwt/</guid><description>&lt;p&gt;JSON Web Token，简称 &lt;code&gt;JWT&lt;/code&gt; ，是一个轻巧的开放规范，用于在客户端和服务端之间传输数据。它的内部编码使用的是 &lt;code&gt;JSON&lt;/code&gt; 格式，故称 JSON Web Token。最初 &lt;code&gt;JWT&lt;/code&gt; 是用于通过 URL 传输数据的场景，不过常常用于用户认证/鉴权。&lt;/p&gt;</description></item><item><title>JavaScript 装饰器初探</title><link>https://www.sdvcrx.com/post/2017-10-07-typescript-decorators/</link><pubDate>Sat, 07 Oct 2017 13:47:23 +0800</pubDate><guid>https://www.sdvcrx.com/post/2017-10-07-typescript-decorators/</guid><description>&lt;p&gt;装饰器（Decorators）提供一种简练的语法糖，这种语言特性 为 &lt;code&gt;JavaScript&lt;/code&gt; / &lt;code&gt;TypeScript&lt;/code&gt; 注入了新的活力。目前 &lt;code&gt;Decorators&lt;/code&gt; 处于 &lt;a href="https://tc39.github.io/proposal-decorators/"&gt;&lt;code&gt;Stage-2&lt;/code&gt; 阶段&lt;/a&gt;，即规范初稿阶段。&lt;/p&gt;</description></item><item><title>解决Node.JS require 多级过于繁琐的问题</title><link>https://www.sdvcrx.com/post/2017-08-11-global-require/</link><pubDate>Fri, 11 Aug 2017 21:33:52 +0800</pubDate><guid>https://www.sdvcrx.com/post/2017-08-11-global-require/</guid><description>&lt;p&gt;在 NodeJS 中我们常常会写下面这种代码：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;userService&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;../../../model/User/service&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;../../..&lt;/code&gt; 这种代码过多，既不好看也容易出错。在 &lt;a href="https://adonisjs.com/"&gt;AdonisJS&lt;/a&gt; 和 &lt;a href="https://webpack.github.io/"&gt;webpack&lt;/a&gt; 的启发下，我发现可以使用 &lt;code&gt;global&lt;/code&gt; 全局变量来解决这个问题。&lt;/p&gt;
&lt;h2 id="require-加载原理解析"&gt;require 加载原理解析&lt;/h2&gt;
&lt;p&gt;总所周知，Node.js 使用的模块格式为 &lt;a href="https://en.wikipedia.org/wiki/CommonJS"&gt;CommonJS&lt;/a&gt; 。&lt;/p&gt;</description></item><item><title>webpack DefinePlugin 实战</title><link>https://www.sdvcrx.com/post/2017-07-22-webpack-define-plugin/</link><pubDate>Sat, 22 Jul 2017 11:08:13 +0800</pubDate><guid>https://www.sdvcrx.com/post/2017-07-22-webpack-define-plugin/</guid><description>&lt;p&gt;&lt;a href="https://webpack.js.org"&gt;webpack&lt;/a&gt; 的 &lt;a href="https://webpack.js.org/plugins/define-plugin/"&gt;DefinePlugin&lt;/a&gt; 是经常使用的一个 plugin。它常常用来定义变量以区分环境。它的用法如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;webpack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DefinePlugin&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;process.env&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;production&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;debug&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一开始我以为它只是把这些变量挂在了全局变量下面，使得代码中能直接用变量，但是经过仔细查看，&lt;strong&gt;并不是这样的&lt;/strong&gt;。&lt;/p&gt;</description></item><item><title>前端网络优化总结</title><link>https://www.sdvcrx.com/post/2015-05-08-front-end-optimization/</link><pubDate>Fri, 08 May 2015 09:08:33 +0800</pubDate><guid>https://www.sdvcrx.com/post/2015-05-08-front-end-optimization/</guid><description>&lt;p&gt;前端优化的本质：减少HTTP请求数量，尽可能快地载入网页&lt;/p&gt;
&lt;p&gt;原因：浏览器对同一域下的资源，只保持一定的连接数&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;IE6,7 2个; IE8 6个; Firefox, Chrome 6个&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Client端&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;压缩图片&lt;/li&gt;
&lt;li&gt;制作成雪碧图(CSS Sprites)&lt;/li&gt;
&lt;li&gt;压缩合并css/js&lt;/li&gt;
&lt;li&gt;合理的标签位置(css放&lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;里；js放&lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;尾部，适当添加&lt;code&gt;defer&lt;/code&gt;/&lt;code&gt;async&lt;/code&gt;属性)&lt;/li&gt;
&lt;li&gt;文件名加上时间戳/md5&lt;/li&gt;
&lt;li&gt;结构化HTML，便于先加载关键的首屏内容&lt;/li&gt;
&lt;li&gt;(可选) &lt;strong&gt;极小&lt;/strong&gt;图片base64转码放入CSS中 &lt;strong&gt;缺点：IE6/7不支持;IE8限制图片最大为32KB;无法缓存;体积要比原图片大;几乎无法被Gzip&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Server端&lt;/p&gt;</description></item><item><title>Promise：优化JS异步编程</title><link>https://www.sdvcrx.com/post/2015-04-07-javascript-promise/</link><pubDate>Tue, 07 Apr 2015 17:10:31 +0800</pubDate><guid>https://www.sdvcrx.com/post/2015-04-07-javascript-promise/</guid><description>&lt;p&gt;异步在JavaScript中最为常见，用最简单的回调函数&lt;code&gt;callback&lt;/code&gt;就解决问题。但是往往会陷入&lt;a href="http://callbackhell.com/"&gt;Callback Hell&lt;/a&gt;的困境之中。&lt;/p&gt;
&lt;h2 id="callback-hell"&gt;Callback Hell&lt;/h2&gt;
&lt;p&gt;以最常见的AJAX GET为例：&lt;/p&gt;</description></item><item><title>javascript中的那些坑</title><link>https://www.sdvcrx.com/post/2015-03-08-javascript-sucks/</link><pubDate>Sun, 08 Mar 2015 10:26:01 +0800</pubDate><guid>https://www.sdvcrx.com/post/2015-03-08-javascript-sucks/</guid><description>&lt;h2 id="arraysort"&gt;Array.sort()&lt;/h2&gt;
&lt;p&gt;数组的默认排序是 &lt;strong&gt;按照字典排序&lt;/strong&gt; 的，即使用字符串比较(原因想想也知道)&lt;/p&gt;
&lt;p&gt;所以就可能出现以下情况：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// [ 10, 3, 5, 6, 80, 9 ]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Oops!
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;教训：&lt;strong&gt;一定一定要在使用数组排序方法传入比较函数啊&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>JavaScript函数</title><link>https://www.sdvcrx.com/post/2015-02-25-javascript-function/</link><pubDate>Wed, 25 Feb 2015 18:49:33 +0800</pubDate><guid>https://www.sdvcrx.com/post/2015-02-25-javascript-function/</guid><description>&lt;h2 id="this"&gt;this&lt;/h2&gt;
&lt;h3 id="1-全局范围内使用this它会指向全局对象"&gt;1. 全局范围内使用&lt;code&gt;this&lt;/code&gt;，它会指向全局对象&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;浏览器中的全局对象为&lt;code&gt;Window&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="2-函数调用时this会指向全局对象"&gt;2. 函数调用时，&lt;code&gt;this&lt;/code&gt;会指向全局对象&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;注意：在对象里调用函数（不是方法），&lt;code&gt;this&lt;/code&gt;也会指向全局对象，这会导致一些奇怪的问题
&lt;code&gt;ECMAScript5&lt;/code&gt;严格模式下不存在全局对象，因此&lt;code&gt;this&lt;/code&gt;是&lt;code&gt;undefined&lt;/code&gt;&lt;/p&gt;</description></item><item><title>CSS3新特性与浏览器兼容</title><link>https://www.sdvcrx.com/post/2015-02-12-css3-new-feature/</link><pubDate>Thu, 12 Feb 2015 13:47:23 +0800</pubDate><guid>https://www.sdvcrx.com/post/2015-02-12-css3-new-feature/</guid><description>&lt;h2 id="flexbox"&gt;Flexbox&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://bocoup.com/weblog/dive-into-flexbox/"&gt;dive into flexbox&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="background"&gt;background&lt;/h2&gt;
&lt;p&gt;注意事项：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;加载图片失败时UA会使用&lt;code&gt;background-color&lt;/code&gt;，所以在设置&lt;code&gt;background-image&lt;/code&gt;时一定要同时设置&lt;code&gt;background-color&lt;/code&gt;作为fallback&lt;/li&gt;
&lt;li&gt;设置前景色&lt;code&gt;color&lt;/code&gt;时，要同时设置&lt;code&gt;background-color&lt;/code&gt;，反之亦然&lt;/li&gt;
&lt;li&gt;使用&lt;code&gt;rgba&lt;/code&gt;的时候也要设置fallback color&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="linear-gradient"&gt;linear-gradient&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://css.doyoe.com/values/image/linear-gradient%28%29.htm"&gt;渐变背景&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Python鸭子类型与C++多态</title><link>https://www.sdvcrx.com/post/2015-01-26-python-duck-typing-and-c/</link><pubDate>Mon, 26 Jan 2015 21:15:50 +0800</pubDate><guid>https://www.sdvcrx.com/post/2015-01-26-python-duck-typing-and-c/</guid><description>&lt;h2 id="鸭子类型是什么"&gt;鸭子类型是什么&lt;/h2&gt;
&lt;p&gt;经常听别人说Python是一个动态语言，而鸭子类型是Python重要的设计哲学之一。鸭子类型(duck typing)的原话是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果看起来像鸭子、叫起来像鸭子、走起路来也像鸭子，那它就是鸭子&lt;/p&gt;</description></item><item><title>同步Github Fork的项目</title><link>https://www.sdvcrx.com/post/2014-12-03-syning-a-github-fork/</link><pubDate>Wed, 03 Dec 2014 22:05:12 +0800</pubDate><guid>https://www.sdvcrx.com/post/2014-12-03-syning-a-github-fork/</guid><description>&lt;h2 id="track"&gt;Track&lt;/h2&gt;
&lt;p&gt;添加上游 &lt;code&gt;upstream&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git remote add upstream git@github.com:user/project.git
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="update"&gt;Update&lt;/h2&gt;
&lt;p&gt;每次更新时，执行下列命令&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git fetch upstream
git rebase upstream/master
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;有文件冲突时会提示，解决冲突后用以下命令继续&lt;code&gt;rebase&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git rebase --continue
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;这里使用rebase而不是merge主要是因为使用merge的话会使git的线变得复杂
一般使用rebase只会有一条线&lt;/p&gt;</description></item><item><title>翻转字符串与翻手算法</title><link>https://www.sdvcrx.com/post/2014-11-17-rotate-string/</link><pubDate>Mon, 17 Nov 2014 20:03:27 +0800</pubDate><guid>https://www.sdvcrx.com/post/2014-11-17-rotate-string/</guid><description>&lt;h2 id="字符串循环左移"&gt;字符串循环左移&lt;/h2&gt;
&lt;p&gt;输入一个字符串和一个非负整数N，要求将字符串循环左移N次。&lt;/p&gt;
&lt;p&gt;输入格式：
输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串；第2行给出非负整数N。&lt;/p&gt;</description></item><item><title>css笔记</title><link>https://www.sdvcrx.com/post/2014-11-08-css-notes/</link><pubDate>Sat, 08 Nov 2014 09:33:18 +0800</pubDate><guid>https://www.sdvcrx.com/post/2014-11-08-css-notes/</guid><description>&lt;h2 id="选择器"&gt;选择器&lt;/h2&gt;
&lt;h3 id="上下文选择器"&gt;上下文选择器&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;包含选择符&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; tag1 tag2 {} // 匹配祖先和后代
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;子选择符&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; tag1 &amp;gt; tag2 {} // 匹配父元素与子元素
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;紧邻同胞选择符&lt;code&gt;+&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; tag1 + tag2 {} // tag2必须紧跟在tag1后
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一般同胞选择符&lt;code&gt;~&lt;/code&gt;&lt;/p&gt;</description></item><item><title>迁移Archlinux至固态硬盘</title><link>https://www.sdvcrx.com/post/2014-10-29-migration-archlinux-from-hdd-to-ssd/</link><pubDate>Wed, 29 Oct 2014 18:58:24 +0800</pubDate><guid>https://www.sdvcrx.com/post/2014-10-29-migration-archlinux-from-hdd-to-ssd/</guid><description>&lt;p&gt;最近新买了个32G的小容量SSD专门来跑Archlinux，SSD为Root分区，HDD为HOME分区。效果非常好，因为Linux下的程序几乎都放在Root分区下，速度非常快。&lt;/p&gt;</description></item><item><title>一些python的小技巧</title><link>https://www.sdvcrx.com/post/2014-02-17-some-python-tips/</link><pubDate>Mon, 17 Feb 2014 19:28:57 +0800</pubDate><guid>https://www.sdvcrx.com/post/2014-02-17-some-python-tips/</guid><description>&lt;blockquote&gt;
&lt;p&gt;from &lt;a href="http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#more-about-tuples"&gt;http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#more-about-tuples&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>