<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Cole</title>
  <link href="/atom.xml" rel="self"/>
  <link href=""/>
  <updated>2021-05-04T11:02:00+08:00</updated>
  <id></id>
  <author>
    <name>whatwewant</name>
    <email>tobewhatwewant@gmail.com</email>
  </author>


  <entry>
    <title>值得一读的文章</title>
    <link href="/2020/12/31/excellent-programming-essays-all.html"/>
    <updated>2020-12-31T00:00:00+08:00</updated>
    <id>/2020/12/31/excellent-programming-essays-all</id>
    <content type="html">
2017 年

4 月

  2017-04-10
    
      优雅高效的免费在线APP原型工具
      产品原型工具
    
  


1 月

  2017-01-01
    
      React 常用面试题目与分析
    
  


2016 年

12月

  2016-12-08
    
      创建git私有仓库
    
  
  2016-12-04
    
      things-you-can-do-in-a-web-worker
    
  


11月

  2016-11-28
    
      实现图片懒加载(Lazy...</content>
  </entry>

  <entry>
    <title>正确掌握React 生命周期(Lifecycle)</title>
    <link href="/2017/01/17/understand-react-lifecycle.html"/>
    <updated>2017-01-17T00:00:00+08:00</updated>
    <id>/2017/01/17/understand-react-lifecycle</id>
    <content type="html">
前言

  首先, 当面对一些问题:
    
      1 React 用了这么久，经常遇到的问题是setState在这里写合适吗？
      2 为什么setState写在这里造成了重复渲染多次？
      3 为什么你的setState用的这么乱?
      4 组件传入props是更新呢？重新挂载呢？还是怎样？
      5 …
    
  
  其次, 生命周期可以看到整个Component的运行过程, 在coding的时候很自然的找好他们的位置, 合作起来就会方便多了，这里极力推荐airbnb的react coding 规范.
  所以整理了这篇文章。如果错误，...</content>
  </entry>

  <entry>
    <title>对前后端API设计的一点思考 -- Status Code</title>
    <link href="/2017/01/17/think-more-about-api-design.html"/>
    <updated>2017-01-17T00:00:00+08:00</updated>
    <id>/2017/01/17/think-more-about-api-design</id>
    <content type="html">
一、问题

  首先，扯点大方向: API规范
    
      目前市面是规范比较多，大家都有自己的想法，这没错，但是遇到团队协作或者前后端交接的事件，各自遵循自己的规范可不见得是什么好事啊;
      这个问题不仅是前后端对接，甚至是前端团队成员协调，都会出现一些不认同，或者要花很多的沟通成本，这个时间浪费是没有必要的，这是初衷。
    
  
  其次, 格式问题:
    
      接口数据返回的格式，包括: Header + Data
        
          Header: 就是常见的响应头(Response headers);
          ...</content>
  </entry>

  <entry>
    <title>React - PropTypes and DefaultProps</title>
    <link href="/2016/12/03/react-proptypes-and-defaultprops.html"/>
    <updated>2016-12-03T00:00:00+08:00</updated>
    <id>/2016/12/03/react-proptypes-and-defaultprops</id>
    <content type="html">
一 PropsTypes 取值

  1 常用
    
      1 字符串: PropTypes.string
      2 数字: PropTypes.number
      3 函数: PropTypes.func
      4 数组: PropTypes.array
      5 对象: PropTypes.object
      6 React元素: PropTypes.element
      7 节点: PropTypes.node
      8 任意: PropTypes.any
    
  
  2 高级
    
      1 指定类型: Pr...</content>
  </entry>

  <entry>
    <title>SVG 入门和进阶</title>
    <link href="/2016/11/20/getting-started-with-svg.html"/>
    <updated>2016-11-20T00:00:00+08:00</updated>
    <id>/2016/11/20/getting-started-with-svg</id>
    <content type="html">
SVG基础

一、定义与优势: SVG - Scalable Vector Graphics

  定义
    
      1 可伸缩矢量图
      2 使用XML格式定义图形
      3 W3C的标准
    
  
  优势
    
      容易修改
      比JPEG和GIF小，可读性强
      矢量，即在任何分辨率下都不会模糊，高清
    
  


二、基本使用

// 1. 文件后缀必须为.svg
// 2. 栗子: 矩形
&amp;lt;svg width=&quot;100%&quot; height=&quot;100%&quot; version=&quot;1.1&quot; xmlns=&quot;http:/...</content>
  </entry>

  <entry>
    <title>Express 项目基础架构及使用文档</title>
    <link href="/2016/07/12/use-with-express.html"/>
    <updated>2016-07-12T00:00:00+08:00</updated>
    <id>/2016/07/12/use-with-express</id>
    <content type="html">
@1 项目文件结构

  
  解析
    
      1 app.js: 项目入口文件
      2 app: 项目目录
        
          schemas: mongoose 数据结构
          models: mongoose 模型文件
          controllers: 控制器, 主要是路由动作函数
        
      
      3 public: 静态文件目录
        
          lib: 公用静态文件，如bootstrap
          js: javascript
          css...</content>
  </entry>

  <entry>
    <title>全站 HTTPS 实践</title>
    <link href="/2016/06/14/web-https.html"/>
    <updated>2016-06-14T00:00:00+08:00</updated>
    <id>/2016/06/14/web-https</id>
    <content type="html">
参考

  创业者HTTPS实践
  Https使用的那些事儿
  Let’s Encrypt网站启用https以及nginx配置安全优化
  本博客 Nginx 配置之完整篇
  Let’s Encrypt，免费好用的 HTTPS 证书
  分享一个 HTTPS A+ 的 nginx 配置

</content>
  </entry>

  <entry>
    <title>program docs search tools</title>
    <link href="/2016/04/29/program-docs-search-tools.html"/>
    <updated>2016-04-29T00:00:00+08:00</updated>
    <id>/2016/04/29/program-docs-search-tools</id>
    <content type="html">
文档查询工具

  Dash Mac
  Zeal Cross Platform


快速查询工具

  [Alfred]
  [Mutate]


文档快速生成

  Python
    
      Sphinx
        
          Uwsgi Theme
        
      
      https://readthedocs.org/
    
  

</content>
  </entry>

  <entry>
    <title>Linux 开发有用的工具集</title>
    <link href="/2016/04/29/linux-develop-useful-tools-set.html"/>
    <updated>2016-04-29T00:00:00+08:00</updated>
    <id>/2016/04/29/linux-develop-useful-tools-set</id>
    <content type="html">
一、网络

流量分析

HTTP

  1 httpry
    
      定义: Linux 命令行下嗅探 HTTP 流量的工具
      常用命令:
        
          sudo httpry -i DEVICE ＃监听DEVEICE的http流量, DEVICE可以为wlan0, eth0, eno1 等任何网络接口
          sudo httpry -i DEVICE -m get,head # -m 监听指定的HTTP方法
          sudo httpry -i DEVICE -o FILE # -o 指定输出文件
        ...</content>
  </entry>

  <entry>
    <title>Nginx 禁止未绑定域名(包括IP)范围</title>
    <link href="/2016/01/29/nginx-prohibites-the-access-of-unbounded-domains.html"/>
    <updated>2016-01-29T00:00:00+08:00</updated>
    <id>/2016/01/29/nginx-prohibites-the-access-of-unbounded-domains</id>
    <content type="html">
问题

  随意绑定域名到IP, 都可以访问；但是不想被其他未指定的域名绑定, 返回404或者其他.


解决方法(一)

  编辑 nginx.conf 或者 自己配置的server文件
  在其他server里指定server_name, 比如: colesmith.space;


// 添加以下代码, 作为默认服务(访问)
// 其他 server 不能设置为default_server;
// 检测: nginx -t
// vim /etc/nginx/nginx.conf
server {
    listen      80 default_server;
    se...</content>
  </entry>

  <entry>
    <title>Vsftpd 虚拟用户及其家目录的配置</title>
    <link href="/2016/01/25/setup-vsftpd-virtual-users-and-their-home-directory.html"/>
    <updated>2016-01-25T00:00:00+08:00</updated>
    <id>/2016/01/25/setup-vsftpd-virtual-users-and-their-home-directory</id>
    <content type="html">
参考

  How to setup virtual users for vsftpd with access to a specific sub directory?
  在ubuntu下vsftpd建立虚拟用户的详解


一.OS

  Ubuntu 14.04


二.Vsftpd Version

  vsftpd: version 3.0.2


三.准备工作

  
    
      下载VSFTPD: FTP 服务
        
          apt-get install vsftpd
        
      
    
  
  
    
   ...</content>
  </entry>

  <entry>
    <title>Django 1.9 Issues</title>
    <link href="/2016/01/11/django-19-issues.html"/>
    <updated>2016-01-11T00:00:00+08:00</updated>
    <id>/2016/01/11/django-19-issues</id>
    <content type="html">
Issue #1 Django MySQLdb

  Detail:
    
      No module named &apos;MySQLdb&apos;
    
  
  Solved:
    
      pip install mysqlclient github
    
  

</content>
  </entry>

  <entry>
    <title>栈应用 - 括号匹配</title>
    <link href="/2015/10/17/stack-bracket-match.html"/>
    <updated>2015-10-17T00:00:00+08:00</updated>
    <id>/2015/10/17/stack-bracket-match</id>
    <content type="html">
一、原理

  很简单，遇到左括号用栈存起来，遇到右括号就从栈取出一个比较即可.
  特殊情况:
    
      在栈空的情况下遇到右括号肯定不匹配;
      在括号扫描结束的情况下，栈不为空，肯定不匹配.
    
  


二、步骤

  Step 1: 从左到右扫描括号字符串
  Step 2: 左括号入栈
  Step 3: 判断右括号与栈顶元素是否匹配
    
      如果存储左括号的栈空或不匹配，返回false
      如果匹配出栈，扫描下一个字符
    
  
  Step 4: 扫描结束后，如果栈不为空，则肯定不匹配


三、实现

int BRA...</content>
  </entry>

  <entry>
    <title>栈应用 - 中缀表达式->后缀表达式</title>
    <link href="/2015/10/17/stack-arithmetic-expression-convertion.html"/>
    <updated>2015-10-17T00:00:00+08:00</updated>
    <id>/2015/10/17/stack-arithmetic-expression-convertion</id>
    <content type="html">
一、原理

二、步骤

  Step 1: 从左向右开始扫描中缀表达式
  Step 2: 如果是数字或字母，直接输出 或者 存取在其他地方
  Step 3: 遇到运算符时, 3 IF
    
      若为’(‘或栈空, 入栈;
      若为’)’, 出栈直到’(‘为止;
      若为其他, 比较运算符优先级,
        
          如果栈非空并且tmpC&amp;lt;=栈顶元素，栈顶元素出栈；
          比较下一个栈顶元素, 直到栈空或左括号;
          最后将tmpC入栈.
        
      
    
  


三、实现
...</content>
  </entry>

  <entry>
    <title>数据结构中的逻辑结构与物理结构</title>
    <link href="/2015/10/08/logical-and-physical-structure-in-algorithm.html"/>
    <updated>2015-10-08T00:00:00+08:00</updated>
    <id>/2015/10/08/logical-and-physical-structure-in-algorithm</id>
    <content type="html">
一、理解(重点)

  比如数据结构中的树的存储
    
      逻辑结构: 很形象啊，在你脑海里不就是一棵树吗?
      物理结构: 这棵树在物理内存中可以用数组存储(顺序存储), 也可以在内存中用链表存储(链式存储);
    
  


二、课本原理

  逻辑结构:
    
      指数据元素之间的逻辑关系;
    
  
  物理结构:
    
      指数据结构在计算机中的表示(又称映像);
    
  
  这里讲的不错，不妨看看


三、类型

(1)逻辑结构

  1)集合结构
    
      数据元素之间无序, 例如大圆圈里许多互不相...</content>
  </entry>

  <entry>
    <title>分治算法(Divide And Conquer Method)</title>
    <link href="/2015/10/08/divide-and-conquer-method.html"/>
    <updated>2015-10-08T00:00:00+08:00</updated>
    <id>/2015/10/08/divide-and-conquer-method</id>
    <content type="html">
重要性

  要我说呢，这是算法中基础中的基础，但并不是不重要，相反，非常重要，而且有一定理解难度，至少对初学者，或者我来说，完全理解并灵活运用，绝非易事。
  所以，这个分治法(Divide-And-Conquer-Method)得反复看.尤其是递归的时候，必须反思反思分治法.


一、基本思路

  1.将问题的实例分为几个较小的实例，最好具有相等规模(事实上,一般说分为2个实例居多，并且注意是递归的分.);
  2.对这些较小的实例求解(一般使用递归的方法, 但在问题规模足够小的时候也可以采用另一个算法(停止递归));
  3.如果有必要的话，合并这些较小问题的解，以得到原始问题...</content>
  </entry>

  <entry>
    <title>八种排序算法之7 归并排序(Merge Sort)</title>
    <link href="/2015/10/05/one-out-of-eight-kinds-of-algorithm-7-mergesort.html"/>
    <updated>2015-10-05T00:00:00+08:00</updated>
    <id>/2015/10/05/one-out-of-eight-kinds-of-algorithm-7-mergesort</id>
    <content type="html">
一、基本思想

  归并排序依赖于递归合并操作, 即将一个数组递归分成两个子数组并分别进行排序,，然后将这两个有序数组排序.


二、基础: 合并两个有序列表

  合并有序数列的效率
    
      O(n)
    
  
  步骤:
    
      1.申请空间，使其大小为两个已经排序序列之和，然后将待排序数组复制到该数组中.
      2.设定两个指针，最初位置分别为两个已经排序序列的起始位置
      3.比较复制数组中两个指针所指向的元素，选择相对小的元素放入到原始待排序数组中，并移动指针到下一位置
      4.重复步骤3直到某一指针达到序列尾.
   ...</content>
  </entry>

  <entry>
    <title>八种排序算法之6 堆排序(Heap Sort)</title>
    <link href="/2015/10/05/one-out-of-eight-kinds-of-algorithm-6-heapsort.html"/>
    <updated>2015-10-05T00:00:00+08:00</updated>
    <id>/2015/10/05/one-out-of-eight-kinds-of-algorithm-6-heapsort</id>
    <content type="html">
一、基本思想

  先堆化，然后利用堆的性质排序.
    
      最大堆: 根节点最大
      最小堆: 根节点最小
    
  


二、基础: 堆(Heap)

(1)二叉堆(一般简称堆)的定义

  二叉堆是完全二叉树或者近似完全二叉树(只能有最后一个节点不完全)
  二叉堆2个特性:
    
      a.父结点的键值总是大于或等于(最大堆)/小于或等于(最小堆)任何一个子结点的键值.
      b.每个节点节点的左子树和右子树都是一个二叉堆(最大堆/最小堆).
    
  
  类型:
    
      最大堆: 父结点的值总是大于或等于任何一个子结...</content>
  </entry>

  <entry>
    <title>八种排序算法之5 选择排序(Select Sort)</title>
    <link href="/2015/10/05/one-out-of-eight-kinds-of-algorithm-5-selectsort.html"/>
    <updated>2015-10-05T00:00:00+08:00</updated>
    <id>/2015/10/05/one-out-of-eight-kinds-of-algorithm-5-selectsort</id>
    <content type="html">
一、基本思想

  选择排序和冒泡排序是差不多的一种排序.
  和冒泡选择不一样的的是, 选择排序只有在确定了最小(或最大)的数据之后，才会发生交换.


二、基础

  冒泡排序


三、解题方法

/**
 * array : 数组
 * len : 数组长度
 */
void SelectSort(int array[], int len) {
    // 当前的值最小的数组下标
    int min_id;
    // 长度len的数组，排序len-1次交换就行了
    // 每次只有最小的排到相对最前面
    // i 刚好存放每次相对最小的数, 也就是要交换的数
...</content>
  </entry>

  <entry>
    <title>八种排序算法之4 快速排序(Quick Sort)</title>
    <link href="/2015/10/05/one-out-of-eight-kinds-of-algorithm-4-quicksort.html"/>
    <updated>2015-10-05T00:00:00+08:00</updated>
    <id>/2015/10/05/one-out-of-eight-kinds-of-algorithm-4-quicksort</id>
    <content type="html">
一、基本思想

  (挖坑填数 + 分治法(Divide and Conquer Method))
  1、先从数列中取出一个数作为基准数
  2、分区过程，将比这个数大或者等于的数全放到它右边，小它的数全部放到它的左边
  3、再对左右区间重复第二步，知道各区间只有一个数.


复杂度

  时间复杂度
    
      O(NlogN), 效率较高
    
  


二、基础: 分治法

  分治法(Divide And Conquer Method)
  待续: 独立一篇文章写写
  写好了: 分治法


三、解题方法

(1)调整数组: 挖坑填数思想

/* 挖坑填数部分...</content>
  </entry>

  <entry>
    <title>八种排序算法之3 冒泡排序(Bubble Sort)</title>
    <link href="/2015/10/05/one-out-of-eight-kinds-of-algorithm-3-bubblesort.html"/>
    <updated>2015-10-05T00:00:00+08:00</updated>
    <id>/2015/10/05/one-out-of-eight-kinds-of-algorithm-3-bubblesort</id>
    <content type="html">
一、基本思想

  由字面意思:
    
      鱼儿吐泡般，将轻的泡往上浮, i个泡总共需要i-1轮
      j从len-1(最后一个元素)到每次都有一个相对最轻的泡到相对顶部
      这个过程隐含将重的泡往下挤, 直到所有轻的泡都浮在重的泡上面
    
  
  完全相反的方法:
    
      相对于轻的泡上浮，相反的思路是重的泡下沉.
    
  


二、基础

三、解题方法

(1)轻泡上浮

// 轻泡上浮法
void BubbleSort(int array[], int len) {
    // 总共len个元素，每轮有一个元素到达相对顶部，...</content>
  </entry>

  <entry>
    <title>八种排序算法之2 希尔排序(Shell Sort)</title>
    <link href="/2015/10/05/one-out-of-eight-kinds-of-algorithm-2-shellsort.html"/>
    <updated>2015-10-05T00:00:00+08:00</updated>
    <id>/2015/10/05/one-out-of-eight-kinds-of-algorithm-2-shellsort</id>
    <content type="html">
一、基本思想

  希尔排序是插入排序的一种改进算法, 是非稳定排序.


    先将整个代拍元素序列分割成若干个子序列(由相隔某个&quot;增量&quot;的元素组成的)分别进行直接插入排序, 
    然后一次缩减增量再进行排序，
    待整个序列中的元素基本有序(增量足够小)时, 再对全体元素进行一次直接插入排序;
    (因为直接插入排序在元素基本有序的情况下(接近最好情况), 效率是很高的，因此希尔排序在时间效率上，比直接插入排序要好很多.)


二、基础

  直接插入排序


三、解题方法

void ShellSort(int array[], int len) {
    int...</content>
  </entry>

  <entry>
    <title>八种排序算法之1-2 折半插入排序(Binary Insert Sort)</title>
    <link href="/2015/10/05/one-out-of-eight-kinds-of-algorithm-1-1-halfinsertsort.html"/>
    <updated>2015-10-05T00:00:00+08:00</updated>
    <id>/2015/10/05/one-out-of-eight-kinds-of-algorithm-1-1-halfinsertsort</id>
    <content type="html">
一、基本思想

  在直接插入排序的基础上，与其通过从后往前一一比较(或比较交换交换), 折半插入排序则利用折半查找(BinarySearch)的(low, high)确定带插入的数字的位置hight+1，是比middle小(左半部分)还是大(右半部分)


二、基础: 折半查找法+直接插入排序

// 折半查找(BinarySearch)
bool BinarySearch(int a[], int n, int value) {
    // 标记元素:
    //      low: &quot;第一个&quot;元素下标
    //      high: &quot;最后一个&quot;元素下标
    //  ...</content>
  </entry>

  <entry>
    <title>八种排序算法之1 直接插入排序(StraightInsertSort)</title>
    <link href="/2015/10/04/One-out-of-eight-kinds-of-algorithm-1-insertsort.html"/>
    <updated>2015-10-04T00:00:00+08:00</updated>
    <id>/2015/10/04/One-out-of-eight-kinds-of-algorithm-1-insertsort</id>
    <content type="html">
一、基本思想

  每次将一个待排序的记录a[i]，插入到前面已经排好序的子序列a[0…i-1]中的适当位置, 知道全部记录插入完成为止(i==n为止).


复杂度

  时间复杂度:
    
      O(n^2)
    
  
  空间复杂度:
    
      O(1)
    
  


二、基础: 有序列表插入单个元素

/*
 * 这里: a[0...n-2]为有序元素, a[n-1]为无序的
 * Why:
 *    将value插入到a[0...m-1], 
 *    如果n-2=m-1的话, 就是value插入到a[0...n-2],
 *    很明...</content>
  </entry>

  <entry>
    <title>为HuaWei HG255D 路由器编译 Openwrt 固件</title>
    <link href="/2015/09/28/build-openwrt-for-hg255d.html"/>
    <updated>2015-09-28T00:00:00+08:00</updated>
    <id>/2015/09/28/build-openwrt-for-hg255d</id>
    <content type="html">
参考资料

  官方文档
    
      Easy Build
      Image Generator
      SDK
    
  
  HG255D配置修改
  其他
    
      Man 1
      Man 2
      Openwrt ShadowVPN
      Openwrt Shadowsocks
      Openwrt njit8021xclient
    
  
  官方固件地址
    
      ramips
    
  
  搜索引擎:
    
      Google
      百度(中文信息较多)
    
  
...</content>
  </entry>

  <entry>
    <title>work track</title>
    <link href="/2015/09/11/work-track.html"/>
    <updated>2015-09-11T00:00:00+08:00</updated>
    <id>/2015/09/11/work-track</id>
    <content type="html">
Week 1 (2016.09.05 - 2016.09.11)

  1 Done
    
      @1 遵循设计风格，使用React重写UI组件，目的是为了规范化、简化以后开发，这是基石;
      @2 和设计沟通，讨论符合Web开发的设计样式等, 并将其实现
      @3 和Web API 后端沟通，简要讨论API的设计，希望API设计更加符合前后端对接
    
  
  2 Todo
    
      @1 规范
        
          v1 和Design多沟通，尽早整理出符合前端的设计规范
          v2 和Backend多沟通，...</content>
  </entry>

  <entry>
    <title>Linux Command: awk</title>
    <link href="/2015/08/23/linux-command-awk.html"/>
    <updated>2015-08-23T00:00:00+08:00</updated>
    <id>/2015/08/23/linux-command-awk</id>
    <content type="html">
一、简介

  awk 是处理文本数据的好工具。
  相比于sed常用于一整行的处理，awk则倾向于将一行分成数个”字段”来处理.
  awk适合处理小型的文本数据.


二、语法

awk &apos;条件类型1{动作1} 条件类型2{动作2} ...&apos; filename

  awk主要是处理每一行的字段内的数据，而默认的字段的分隔符为空格或者[tab]键.
    
      案例: last取出登陆账号和IP
        
          last -n 5 | awk &apos;{print $1 &quot;\t&quot; $3}&apos;
        
      
    
  
  在每一行的每个...</content>
  </entry>

  <entry>
    <title>开始用 SASS 代替 CSS</title>
    <link href="/2015/08/15/sass-getting-started.html"/>
    <updated>2015-08-15T00:00:00+08:00</updated>
    <id>/2015/08/15/sass-getting-started</id>
    <content type="html">
SASS教程

一、文件后缀名

  1 .sass
    
      使用缩进, 不使用分号和大括号
    
  
  2 .scss
    
      和css差不多，可以使用嵌套
    
  


// 1 .sass
body
    background: #eee
    font-size: 12px
p
    background: #0982c1

// 2 .scss

body {
    background: #eee;
    font-size: 12px;

    p {
        background: #0982c1;
    ...</content>
  </entry>

  <entry>
    <title>如何通过反向SSH隧道访问NAT后面的Linux服务器</title>
    <link href="/2015/08/12/connect-local-server-by-ssh-reverse-tunnel.html"/>
    <updated>2015-08-12T00:00:00+08:00</updated>
    <id>/2015/08/12/connect-local-server-by-ssh-reverse-tunnel</id>
    <content type="html">
参考整理

基本概念

一、反向SSH隧道简介

  1 是什么:
    
      隧道协议(Tunneling protocol):
        
          在当前网络不支持或不提供某种网络服务的情况下，隧道协议允许访问或提供该服务.
        
      
      (正向)SSH隧道:
        
          通过Secure Shell 提供的隧道协议服务
        
      
      反向SSH隧道:
        
          在本地主机与远程VPS建立SSH隧道的情况下，(通过)远程VPS能够通过它反向访...</content>
  </entry>

  <entry>
    <title>CSS 中的居中</title>
    <link href="/2015/08/04/css-center.html"/>
    <updated>2015-08-04T00:00:00+08:00</updated>
    <id>/2015/08/04/css-center</id>
    <content type="html">
一、文本(字)水平居中
* Condition: 
    * 文本、图片、或者强制行级元素等`行内(inline, inline-block)元素`
* Object:
    * 给要居中元素的父类元素添加
* Code: 
    * `text-align:center`


二、定框块级元素水平居中:(block and width)
* Condition:
    * Block 并且 width确定(不论px还是百分比)
* Object:
    * 给要居中的元素本身添加
* Code:
    * `margin: 0 auto;`


三、不定宽块状元素水平居中...</content>
  </entry>

  <entry>
    <title>Great Photos Wall</title>
    <link href="/2015/08/01/great-photos-wall.html"/>
    <updated>2015-08-01T00:00:00+08:00</updated>
    <id>/2015/08/01/great-photos-wall</id>
    <content type="html">
一、知识点

  1 box-shadow:
    
      Function: 给元素边框添加阴影效果
      Syntax: box-shadow: offset-x offset-y blur-radius [spread-radius] color [inset];
        
          offset-x: X轴偏移量
          offset-y: Y轴偏移量
          blur-radius: 阴影模糊半径
          spread-radius: 阴影扩展半径
          color: 阴影颜色
        ...</content>
  </entry>

  <entry>
    <title>Hadoop Getting Started</title>
    <link href="/2015/07/30/hadoop-getting-started.html"/>
    <updated>2015-07-30T00:00:00+08:00</updated>
    <id>/2015/07/30/hadoop-getting-started</id>
    <content type="html">
一、关于 Hadoop

  1 Hadoop是什么:
    
      Hadoop是Apache的开源的分布式存储以及分布式计算平台
      官网
    
  
  2 Hadoop的两个核心组成:
    
      HDFS: 分布式文件系统，存储海量的数据
      MapReduce: 并行处理框架,实现任务分解和调度
    
  
  3 Hadoop的用途:
    
      搭建大型数据仓库,PB级数据的存储、处理、分析、统计等业务.
        
          搜索引擎
          日志分析
          商业智能
   ...</content>
  </entry>

  <entry>
    <title>Java Web (三) 过滤器(Filter)</title>
    <link href="/2015/07/21/java-web-3-filter.html"/>
    <updated>2015-07-21T00:00:00+08:00</updated>
    <id>/2015/07/21/java-web-3---filter</id>
    <content type="html">
一、过滤器简介

  1 含义:
    
      Web过滤器: (过滤源 + 过滤规则 + 过滤结果) 是一个服务器端的组件，它可以截取用户端的请求与响应信息,并对这些信息过滤.
    
  


二、过滤器的工作原理和生命周期

  1 工作原理:
    
      过程: 用户请求 &amp;lt;-&amp;gt; 过滤器 &amp;lt;-&amp;gt; Web资源
    
  
  2 生命周期:
    
      过程:
        
          1 实例化 -&amp;gt; Web.xml : 只一次
          2 实例化 -&amp;gt; 初始化 -&amp;gt; init(...</content>
  </entry>

  <entry>
    <title>Java Web (二) Servlet 基础</title>
    <link href="/2015/07/19/java-servlet.html"/>
    <updated>2015-07-19T00:00:00+08:00</updated>
    <id>/2015/07/19/java-servlet</id>
    <content type="html">
一、什么是Servlet

  1.1 定义
    
      Servlet是在服务器上运行的小程序。一个Servlet就是一个Java类，并且可以通过”请求-响应”编程模型来访问这个主流在服务器内存里的Servlet程序.
    
  


二、Tomcat 容器等级

  2.1 Tomcat的容器分为四个等级，Servlet的容器管理Context容器，一个Context对应一个Web工程.
  2.2 等级:
    
      1 Tomcat – 最外层
        
          2 Container 容器
            
        ...</content>
  </entry>

  <entry>
    <title>Java Web (一) JSP 基础</title>
    <link href="/2015/07/17/jsp-getting-started.html"/>
    <updated>2015-07-17T00:00:00+08:00</updated>
    <id>/2015/07/17/jsp-getting-started</id>
    <content type="html">
四、JSP内置对象

  4.4 Session的生命周期
    
      1 创建:
        
          当客户端第一次访问某个jsp或者Servlet时候，服务器会为当前会话创建一个SessionID, 每次客户端向服务器发送请求是，都会将SessionId携带过去，服务端会对此SessionID进行校验.
        
      
      2 活动:
        
          a. 某次会话当中通过超链接打开的新页面属于同一次会话.
          b. 只要当前会话页面没有全部关闭，重新打开新的浏览器窗口访问同一个项目资源属于同...</content>
  </entry>

  <entry>
    <title>Linux NetWok Bridge(创建网桥)</title>
    <link href="/2015/07/11/linux-netwok-bridge.html"/>
    <updated>2015-07-11T00:00:00+08:00</updated>
    <id>/2015/07/11/linux-netwok-bridge</id>
    <content type="html">
Wiki

一、通过iproute2/ip创建网桥 bridge_name

  1 网桥创建／删除:
    
      创建:
        
          ip link add name bridge_name type bridge
        
      
      删除:
        
          ip link delete bridge_name type bridge
        
      
    
  
  2 IP网段:
    
      设置:
        
          ip addr add 172.2...</content>
  </entry>

  <entry>
    <title>Java Getting Started</title>
    <link href="/2015/07/10/java-getting-started.html"/>
    <updated>2015-07-10T00:00:00+08:00</updated>
    <id>/2015/07/10/java-getting-started</id>
    <content type="html">
一、基础

  1 八个基本数据类型
    
      1 boolean
      2 char
      3 byte
      4 short
      5 int
      6 long
      7 float
      8 double
    
  
  2 数据类型:
    
      float a = 3.14f; // 必须声明为3.14f, 否则3.14为double类型, 出错
    
  


三、面向对象基础:

  默认、abstract、interface、final、static
    
      抽象类 = 抽象方法pu...</content>
  </entry>

  <entry>
    <title>IntelliJ Idea 快捷键(KeyMaps)</title>
    <link href="/2015/07/10/intellij-idea-keymaps.html"/>
    <updated>2015-07-10T00:00:00+08:00</updated>
    <id>/2015/07/10/intellij-idea-keymaps</id>
    <content type="html">
一、相关文件

  官方，快捷键全


二、必须记住

  Ctrl+ShiftSpace 自动补全代码
  Shift+Enter: 创建新行并跳到下一行
  Shift+F10: Run, (我喜欢改成Ctrl+R)
  Ctrl+J: 常用的有fori/sout/psvm+Tab即可生成循环、System.out、main方法等boilerplate样板代码，用Ctrl+J可以查看所有模板
  Ctrl+Alt+O 优化导入的类和包
  Ctrl+X 删除行
  Ctrl+D 复制行
  Ctrl+/ 或 Ctrl+Shift+/  注释（// 或者/…/ ）
  Alt+Ins...</content>
  </entry>

  <entry>
    <title>Eclipse KeyMaps</title>
    <link href="/2015/07/10/eclipse-keymaps.html"/>
    <updated>2015-07-10T00:00:00+08:00</updated>
    <id>/2015/07/10/eclipse-keymaps</id>
    <content type="html">
资源来自网友整理

一、快捷键修改:

  菜单栏中Window–&amp;gt;Preferences–&amp;gt;General–&amp;gt;Keys来查看和修改快捷键绑定。


二、编辑

  Ctrl+1 快速修复（最经典的快捷键,就不用多说了，可以解决很多问题，比如import类、try catch包围等）
  Ctrl+Shift+F 格式化当前代码
  Ctrl+Shift+M 添加类的import导入
  Ctrl+Shift+O 组织类的import导入（既有Ctrl+Shift+M的作用，又可以帮你去除没用的导入，很有用）
  Ctrl+Y 重做（与撤销Ctrl+Z相反）
  Al...</content>
  </entry>

  <entry>
    <title>CSS 布局解决浮动问题</title>
    <link href="/2015/07/09/css-layout-clear-float-method.html"/>
    <updated>2015-07-09T00:00:00+08:00</updated>
    <id>/2015/07/09/css-layout-clear-float-method</id>
    <content type="html">
一、问题(Question):

  浮动脱离文档流，导致无法撑开DIV解决:


二、解决办法(Solution):

  在父DIV中加入
    
      1 声明该DIV的伪类选择器divName::after (divName只是标识，泛指能找到DIV的选择器名)
      2 必须是block
      3 高度必须为0
      4 内容随意，但必须有
      5 清楚两边浮动: clear: both
      6 overflow: hidden;
    
  


三、CSS　实现代码(Implement Code)

    divName::a...</content>
  </entry>

  <entry>
    <title>Oracle Database</title>
    <link href="/2015/07/08/oracle-database.html"/>
    <updated>2015-07-08T00:00:00+08:00</updated>
    <id>/2015/07/08/oracle-database</id>
    <content type="html">
一、Orcle Database 数据库客户端的安装

  安装
  概述
    
      数据库 &amp;lt;-1—–n-&amp;gt; 表空间
      表空间 &amp;lt;-1—–n-&amp;gt; 表+索引+视图等
    
  


二、表空间(tablespace)及用户管理(grant/revoke)

  1 TableSpace


-- 1. Create TableSpace
    CREATE TABLESPACE tablespace_name
    DATAFILE &apos;path/to/database_file&apos;
    SIZE size;

    -- Ex
...</content>
  </entry>

  <entry>
    <title>恢复 Grub 引导</title>
    <link href="/2015/07/07/recover-grub.html"/>
    <updated>2015-07-07T00:00:00+08:00</updated>
    <id>/2015/07/07/recover-grub</id>
    <content type="html">
问题描述:

  原本多系统(Win + Linuxs)，但windows坏了，要重装，但想保留Ubuntu等
  安装完Win8后, Grub没了，想要恢复Grub引导


方法(推荐): LiveCD 进入(大部分Linux发行版都行)

  步骤:
    
      1 查看系统分区(一般是sda, 由于多系统, 找到其中一个linux根目录所在的分区/sda/sdaX)
        
          sudo fdisk -l :
          这里假设: Ubuntu 分区为 /dev/sda6
        
      
      2 将根分区/de...</content>
  </entry>

  <entry>
    <title>Html CSS 基础</title>
    <link href="/2015/07/05/html-css-basic-1.html"/>
    <updated>2015-07-05T00:00:00+08:00</updated>
    <id>/2015/07/05/html-css-basic-1</id>
    <content type="html">`
`

第三章 html表格应用和布局

table

  标签
    
      tr td th
      thead tbody tfoot (逻辑分类)
    
  
  属性
    
      填充
        
          cellspacing: 单元格与边框、单元格与单元格, cellspacing=”5”
          cellpadding: 单元格内边框与内容 cellpadding=”10”;
        
      
      跨行列(td)
        
          colspan: 跨X列, colspan...</content>
  </entry>

  <entry>
    <title>MySQL (五) 函数和操作符</title>
    <link href="/2015/06/21/mysql-learning-notes-5-FUNCTION.html"/>
    <updated>2015-06-21T00:00:00+08:00</updated>
    <id>/2015/06/21/mysql-learning-notes-5-FUNCTION</id>
    <content type="html">
导航

一、操作符

  1 操作符优先级



  
    
      操作符
      优先级
    
  
  
    
      BINARY, COLLATE
      15
    
    
      !
      14
    
    
      -(一元减号), ~(一元比特取反)
      13
    
    
      ^
      12
    
    
      *, /, DIV, %, MOD
      11
    
    
      -, +
      10
    
    
      «, »
    ...</content>
  </entry>

  <entry>
    <title>MySQL (四) 数据控制语言(DCL): CREATE USER/GRANT/REVOKE ..</title>
    <link href="/2015/06/20/mysql-learning-notes-4-DCL.html"/>
    <updated>2015-06-20T00:00:00+08:00</updated>
    <id>/2015/06/20/mysql-learning-notes-4-DCL</id>
    <content type="html">
MySQL 数据库管理语句: 数据控制语言(DCL): Data Control Language

  CREATE/DROP USER
  GRANT + REVOKE
  SET PASSWORD
  SHOW …


一、CREATE USER 语法

  CREATE USER Syntax:


    CREATE USER username [IDENTIFIED BY [PASSWORD] &apos;password&apos;]
        [, username [IDENTIFIED BY [PASSWORD] &apos;password&apos;] ...];



  CREATE US...</content>
  </entry>

  <entry>
    <title>MySQL (三) 数据操作语言DML: JOIN/UNION/TRUNCATE ...</title>
    <link href="/2015/06/20/mysql-learning-notes-3-DML-2.html"/>
    <updated>2015-06-20T00:00:00+08:00</updated>
    <id>/2015/06/20/mysql-learning-notes-3-DML-2</id>
    <content type="html">
MYSQL 数据操作语法: Data Manipulate Language

一、JION 语法

  
    
      JOIN Syntax
    
  


MySQL支持以下JOIN语法，主要用于SELECT语句的table_references部分
    和 多表 DELETE 和 UPDATE 语句

table_references:
    table_reference [, table_reference ...]

table_reference:
      table_factor
    | join_table

table_factor:
 ...</content>
  </entry>

  <entry>
    <title>MySQL (二) 数据操作语言(DML): INSERT DELETE UPDATE SELECT</title>
    <link href="/2015/06/18/mysql-learning-notes-2-DML.html"/>
    <updated>2015-06-18T00:00:00+08:00</updated>
    <id>/2015/06/18/mysql-learning-notes-2-DML</id>
    <content type="html">
数据操纵语言(DML): Data Manipulate Language

一. INSERT

  1 语法


Syntax 1:
    INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
        [INTO] tbl_name [(col_name, ...)]
        VALUES ({expr | DEFAULT}, ....), ({expr | DEFAULT}, ...), ...
        [ON DUPLICATE KEY UPDATE col_name = expr, ...]...</content>
  </entry>

  <entry>
    <title>MySQL (一) 数据库定义语言(DDL) CREATE/DROP/ALTER</title>
    <link href="/2015/06/18/mysql-learning-notes-1-DDL.html"/>
    <updated>2015-06-18T00:00:00+08:00</updated>
    <id>/2015/06/18/mysql-learning-notes-1-DDL</id>
    <content type="html">
MYSQL 之 数据定义语言(结构定义): Data Definition Language

第一: 创建CREATE

  1 创建数据库/模式: CREATE DATABASE/SCHEME 语法


Syntax:
    create {database | schema} [IF NOT EXISTS] db_name
        [create_specification [, create_specification] ...];

    create_specification 选项:
        [DEFAULT] CHARACTER SET charse...</content>
  </entry>

  <entry>
    <title>CSS3 基础</title>
    <link href="/2015/06/01/css3-getting-started.html"/>
    <updated>2015-06-01T00:00:00+08:00</updated>
    <id>/2015/06/01/css3-getting-started</id>
    <content type="html">
一、初识CSS3

  1.1 在编写CSS3样式时，不同的浏览器可能需要不同的前缀.



  
    
      前缀
      浏览器
    
  
  
    
      -webkit
      chrome和safari
    
    
      -moz
      firefox
    
    
      -ms
      IE
    
    
      -o
      opera
    
  



  1.2 CSS3 能做: 圆角、图片边框、文字阴影和盒阴影、过渡、动画
    
      选择器: class id tag...</content>
  </entry>

  <entry>
    <title>重新捡起 virtualenv and virtualenvwrapper</title>
    <link href="/2015/05/19/revise-virtualenv-and-virtualenvwrapper.html"/>
    <updated>2015-05-19T00:00:00+08:00</updated>
    <id>/2015/05/19/revise-virtualenv-and-virtualenvwrapper</id>
    <content type="html">
官方文档

  virtualenv
  virtualenvwrapper


一 virtualenv

  What:
    
      virtualenv 是一个隔离Python环境的工具.
    
  
  Why:
    
      virtualenv 可以让你在同一个操作系统上建立多个不同的Python环境.
      如一个Python2, 另一个Python3,　还有Django1.2 和 Django1.5
      项目Python环境互不相同，互不干涉.
    
  
  How: (So Easy)
    
      Install:
...</content>
  </entry>

  <entry>
    <title>linux web nginx practice</title>
    <link href="/2015/05/03/linux-web-nginx-practice.html"/>
    <updated>2015-05-03T00:00:00+08:00</updated>
    <id>/2015/05/03/linux-web-nginx-practice</id>
    <content type="html">
一、参考

  实验室
  官网


二、安装 nginx (ubuntu)

  方法一: sudo apt-get install nginx
  方法二: 脚本
  以下配置根据方法一


三、NGINX实践: LNMP

  
    
      nginx
        
          安装: sudo apt-get install nginx
          启动: sudo service nginx start 或 sudo /etc/init.d/nginx start
          停止: sudo service nginx stop
   ...</content>
  </entry>

  <entry>
    <title>docker 问题汇总(持续更新)</title>
    <link href="/2015/04/28/docker-problems-set.html"/>
    <updated>2015-04-28T00:00:00+08:00</updated>
    <id>/2015/04/28/docker-problems-set</id>
    <content type="html">
1. 非root身份运行Docker

  你需要将自己添加到docker群组，那样才能以非root用户的身份来运行Docker
  解决方法:
    
      
        
          将当前用户加入docker组: sudo usermod -a -G docker $USER
        
      
      
        
          创建个新docker组用户: sudo useradd –create-home –shell /bin/bash –user-group –groups docker,adm,sudo YOUR_USE...</content>
  </entry>

  <entry>
    <title>docker getting started</title>
    <link href="/2015/04/27/docker-getting-started.html"/>
    <updated>2015-04-27T00:00:00+08:00</updated>
    <id>/2015/04/27/docker-getting-started</id>
    <content type="html">
参考

  Docker —— 从入门到实践
  Docker中文教程
  Docker中文指南
  官方 UserGuide


Getting Started

一 Ubuntu 安装 Docker

  方法一
  方法二 推荐
    
      wget -qO- https://get.docker.com/ | sh
    
  


二 命令集合

  常用命令: docker –help
    
      
        
          docker pull [OPTIONS] IMAGENAME[:TAG|@DIGEST] # 拉取名叫IMAGEN...</content>
  </entry>

  <entry>
    <title>linux mysql5.5 不能显示中文问题解决办法</title>
    <link href="/2015/04/19/linux-mysql-character-set.html"/>
    <updated>2015-04-19T00:00:00+08:00</updated>
    <id>/2015/04/19/linux-mysql-character-set</id>
    <content type="html">
问题: mysql 不能正确显示中文

  
    
      mysql5.5 默认字符集是 latin1 :
        
          查看: show variables like ‘character%’;
        
      
    
  
  
    
      注意
        
          请确保在把character_set_database 和
character_set_server的字符集改为utf8以后再写数据,
否则数据以latin1字符集存入，永远无法正确显示
        
      
    
  


...</content>
  </entry>

  <entry>
    <title>gulp 入门</title>
    <link href="/2015/04/18/gulp-getting-started.html"/>
    <updated>2015-04-18T00:00:00+08:00</updated>
    <id>/2015/04/18/gulp-getting-started</id>
    <content type="html">
参考

  不错的入门教程
  Gulp API 文档
  Gulp 较完整的配置, 可以直接使用


一. 安装: gulp

  (npm 模块管理器安装)
  -g 全局安装


sudo npm install -g gulp


二. 实习开始
// 进入或创建项目地址:

// 实验一 begin: 使用gulp入门
// 在项目根目录新建 gulpfile.js 文件
// 获取 gulp
gulp = require(&apos;gulp&apos;);

// 获取 uglify 模块, 用于压缩JS
// 提前安装: npm install uglify
// 在项目目录下安装即可，不...</content>
  </entry>

  <entry>
    <title>PHP CodeIgniter Framework Study 2</title>
    <link href="/2015/04/14/php-codeigniter-study-2.html"/>
    <updated>2015-04-14T00:00:00+08:00</updated>
    <id>/2015/04/14/php-codeigniter-study-2</id>
    <content type="html">
Course 5 SESSION机制和登陆验证

  
    
      利用SESSION进行登陆验证的原理:
        
          
            
              基本流程:
            
          
        
        
          
            
              客户端登陆: 用户输入用户名密码
            
          
          
            
              服务端验证: 验证用户名和密码
         ...</content>
  </entry>

  <entry>
    <title>PHP CodeIgniter Framework Study</title>
    <link href="/2015/04/12/php-codeigniter-study.html"/>
    <updated>2015-04-12T00:00:00+08:00</updated>
    <id>/2015/04/12/php-codeigniter-study</id>
    <content type="html">
Course 1. Entrance To CodeIgniter

  
    
      MVC简单介绍:
        
          
            
              解释:
            
          
        
        
          M: Model (数据模型)
          V: View (用户界面)
          C: Controller (控制器)
    * 2.
        
      
    
  
  
    
      CI的简单介绍
    
  
 ...</content>
  </entry>

  <entry>
    <title>Tmux 初识</title>
    <link href="/2015/04/11/tmux.html"/>
    <updated>2015-04-11T00:00:00+08:00</updated>
    <id>/2015/04/11/tmux</id>
    <content type="html">
Tmux: Terminal Multiplexer

linux安装tmux最新版脚本

1. 基本命令

  
    
      新建一个无名session:
        
          tmux
        
      
    
  
  
    
      显示有多少个session:
        
          tmux list-session
        
      
    
  
  
    
      新建有名字 sessionName 的session:
        
          tmux new-sess...</content>
  </entry>

  <entry>
    <title>Linux 高级网络配置</title>
    <link href="/2015/04/11/linux-network-settings.html"/>
    <updated>2015-04-11T00:00:00+08:00</updated>
    <id>/2015/04/11/linux-network-settings</id>
    <content type="html">
1. 网卡高级命令

  
    
      查看物理网卡状态:
        
          sudo mii-tool eth0
        
      
    
  
  
    
      查看物理网卡配置:
        
          ethtool eth0 查看网卡特性
          ethtool -i eth0 查看驱动信息
          ethtool -S eth0 查看网卡状态
        
      
    
  


2. IP 别名

  Linux 支持在一个物理网卡上配置多个IP地址
用来实现类是子...</content>
  </entry>

  <entry>
    <title>apache2.4: You don't have permission to access / on this server.</title>
    <link href="/2015/04/11/apache24-403-forbidden.html"/>
    <updated>2015-04-11T00:00:00+08:00</updated>
    <id>/2015/04/11/apache24-403-forbidden</id>
    <content type="html">
1. 檢查權限

  
    
      用戶和組的配置
```bash
 sudo vim /etc/apache2/apache2.conf 找到 User 和 Group
发现配置用户和组的文件在/etc/apache2/envvars
      第一种强制方法就是将User ${APACHE_RUN_USER}改为 User ubuntu, 将Group ${APACHE_RUN_GROUP}改为Group ubuntu (其中ubuntu是web根目录(DocumentRoot)权限用户)
      第二种方法是修改/etc/apache2/envvars
    将...</content>
  </entry>

  <entry>
    <title>LVM: Logical Volume Manager</title>
    <link href="/2015/04/10/lvmlogical-volume-manager.html"/>
    <updated>2015-04-10T00:00:00+08:00</updated>
    <id>/2015/04/10/lvmlogical-volume-manager</id>
    <content type="html">
LVM: 逻辑卷管理

1. 概念
|缩写|全称|中文|
|:—|:—|:—|
|PE|Physical Extend|物理扩展|
|PV|Physical Volume|物理卷|
|VG|Volume Group|卷组|
|LV|Logical Volume|逻辑卷|

2. 顺序 or 层次
|Module|Direction|Module|
|:—-:|:——-:|:—-:|
|PV|&amp;lt;—-|PE|
|向下组成||向下组成|
|VG|&amp;lt;—-|PE Pool|
|向下组成||向下组成|
|LV|&amp;lt;—-|PE|

3. 顺序创建

  
    
      将物理...</content>
  </entry>

  <entry>
    <title>Iptables 基础</title>
    <link href="/2015/04/08/iptables-basic.html"/>
    <updated>2015-04-08T00:00:00+08:00</updated>
    <id>/2015/04/08/iptables-basic</id>
    <content type="html">
参考

  Man Page
  Arch Wiki


1. IPTABLES 命令的基础

One IPTABLES 规则的基本格式:

  iptables [-t table] command [match] [target/jump]
  
    
      
        table 默认为 filter 表
      
    
    
      
        没有人要求target 必须放在 command 后面，但是最好这样。
      
    
    
      
        match : 细致的描述了包的某个特点,以使这个包区别于其他...</content>
  </entry>

  <entry>
    <title>Linux Shadowsocks 全局代理</title>
    <link href="/2015/04/07/shadowsocks-global-by-iptables.html"/>
    <updated>2015-04-07T00:00:00+08:00</updated>
    <id>/2015/04/07/shadowsocks-global-by-iptables</id>
    <content type="html">
Linux用 iptables + ss-redir 为 Shadowsocks 全局代理 Shell脚本下载地址

1. create new chain on nat table

  iptables -t nat -N SHADOWSOCKS


2. Ignore shdowsocks’s address, avoid loop

  iptables -t nat -A SHADOWSOCKS -d YOUR-SERVER-IP -j RETURN


3. Ignore LANs and any other addresses you’d like to bypass t...</content>
  </entry>

  <entry>
    <title>为 ubuntu 14.04 上 4.0 kernel</title>
    <link href="/2015/04/07/renew-ubuntu-14-04-kernel.html"/>
    <updated>2015-04-07T00:00:00+08:00</updated>
    <id>/2015/04/07/renew-ubuntu-14-04-kernel</id>
    <content type="html">
原因:

  内核太老，强迫症，想换内核，但是又不想自己编译，毕竟对内核不了解，并且编译过程中有各种问题…所以，就从官方已经编译打包好的包来安装…


1. 下载 需要的 image, header等文件(3个):

  linux-headers-4.0.0-040000rc7_4.0.0-040000rc7.201504061936_all.deb
  linux-headers-4.0.0-040000rc7-generic_4.0.0-040000rc7.201504061936_amd64.deb
  linux-image-4.0.0-040000rc7-generic_4...</content>
  </entry>

  <entry>
    <title>adb 简单运用之启动LinuxOnAndroid</title>
    <link href="/2015/04/05/linux-on-android.html"/>
    <updated>2015-04-05T00:00:00+08:00</updated>
    <id>/2015/04/05/linux-on-android</id>
    <content type="html">
0. 原因: LinuxOnAndroid
&amp;gt; 主要是因为自己有架Android手机主板出问题了，屏幕一直花屏，就想拿来玩玩LinuxOnAndroid, 但是屏幕花屏严重，基本看不了，但是偶尔恢复，所以就想从adb shell 来启动LinuxOnAndroid, 我用的是Ubuntu12.04版本, 适合android4.0-4.2, 可以拿来玩服务。。。


1. 手机:
* 1. 打开Debug模式，并用数据线连接电脑
* 2. 最好确保手机已经root


2. Ubuntu 14.04:
* 1. 将/path/to/sdk/platform-tools加入/etc/...</content>
  </entry>

  <entry>
    <title>PHP 面向对象</title>
    <link href="/2015/04/04/PHP-Object-Oriented.html"/>
    <updated>2015-04-04T00:00:00+08:00</updated>
    <id>/2015/04/04/PHP-Object-Oriented</id>
    <content type="html">
1. 面向对象(Object Oriented)基本概念

  
    
      对象的定义:
        
          世间万物皆对象: 可见和不可见之物
        
      
    
  
  
    
      对象的基本组成, 包含两部分:
        
          
            
              (属性，成员变量)对象的组成元素:
            
          
        
        
          是对象的数据模型，用于描述对象的数据
          又被称为对象的属...</content>
  </entry>

  <entry>
    <title>Ubuntu Server 配置 LAMP</title>
    <link href="/2015/04/02/Ubuntu-LAMP.html"/>
    <updated>2015-04-02T00:00:00+08:00</updated>
    <id>/2015/04/02/Ubuntu-LAMP</id>
    <content type="html">
1. Environment

  
    
      Ubuntu 14.10 Server
    
  
  
    
      LAMP = Linux + Apache + Mysql/MariaDB + PHP
    
  


2. INSTALLATION

  
    
      Apache:
        
          sudo apt-get install apache2
          查看版本: apache2 -v # 这里已经上 2.4版本，和2.2不同
        
      
    
  
  
    
   ...</content>
  </entry>

  <entry>
    <title>Linux Tar</title>
    <link href="/2015/04/01/linux-tar.html"/>
    <updated>2015-04-01T00:00:00+08:00</updated>
    <id>/2015/04/01/linux-tar</id>
    <content type="html">
Tar 用法:
* 虽然一直都在用这个命令，但是一般也只是解压、压缩，并没有用到其他
* 今天好好写点常用的的用法


先讲讲常用选项:
* -c 创建一个新归档，也就是压缩啦
* -x 从归档中抽取文件，也就是解压整个压缩包所有文件
* -C 指定文件被解压文件存放的文件夹(必须已存在)，一般和-x一起使用; 可选项
* -v 显示文件归档进度，也就是压缩／解压等过程
* -f (用于指定压缩或解压等具体文件名, 一般不独立使用):
    * 当与-c一起使用时，-f用于指定常见压缩文件的文件名，没有-f或报错: 压缩文件不存在
    * 当与-x一起使用时，-f指定要被压缩的文...</content>
  </entry>

  <entry>
    <title>Gitcafe Pages</title>
    <link href="/2015/04/01/gitcafe-pages.html"/>
    <updated>2015-04-01T00:00:00+08:00</updated>
    <id>/2015/04/01/gitcafe-pages</id>
    <content type="html">将博客搬到 gitcafe

  
    
      在gitcafe创建一个项目: 和用户名一样, 我的是 whatwewant
    
  
  
    
      必须提交到GitCafe的 gitcafe-pages分支:
        
          git push -u origin master:gitcafe-pages
        
      
    
  
  
    
      访问: whatwewant.gitcafe.io 即可
    
  


一个项目同时使用两个或多个远程仓库

[remote &quot;gitcafe&quot;]
  ...</content>
  </entry>

  <entry>
    <title>Head First Sql</title>
    <link href="/2015/04/01/Head-First-SQL.html"/>
    <updated>2015-04-01T00:00:00+08:00</updated>
    <id>/2015/04/01/Head-First-SQL</id>
    <content type="html">
1. SQL 创建篇

  
    
      创建数据库: CREATE DATABASE dbname;
    
  
  
    
      使用数据库: USE dbname
    
  
  
    
      创建表:
    

       CREATE TABLE tableName
   (
      name VARCHAR(10),
      weight DEC(5, 2)
   );
    
  
  
    
      数据类型: CHAR, VARCHAR, BLOB, INT, DEC, DATE, DATETIME
    ...</content>
  </entry>

  <entry>
    <title>Phpstorm Install And Use</title>
    <link href="/2015/03/30/phpstorm-install-and-use.html"/>
    <updated>2015-03-30T00:00:00+08:00</updated>
    <id>/2015/03/30/phpstorm-install-and-use</id>
    <content type="html">Ubuntu14.04 下 PHPStorm 的安装与使用

1. 下载安装包:

  官网: https://www.jetbrains.com/phpstorm/
  Version: 8.0.3
  Tar.gz address: http://120.192.76.118/cache/download.jetbrains.com/webide/PhpStorm-8.0.3.tar.gz?ich_args=9fd2851c9cfc749a6559bc79da0a2afd_1_0_0_2_9f03a674e5a343c018824d475fe8fee3f0d70d2696fcc531...</content>
  </entry>

  <entry>
    <title>Php Start Note</title>
    <link href="/2015/03/29/php-start-note.html"/>
    <updated>2015-03-29T00:00:00+08:00</updated>
    <id>/2015/03/29/php-start-note</id>
    <content type="html">
PHP 入门篇

1.语法

  
    
      PHP代码卸载&amp;lt;?php 和 ?&amp;gt;之间, 但注意后面的 ?&amp;gt; 是可以省略的;
    
  
  
    
      Echo 语句: 注意php语句以 ; 结束
        
          作用: 1. 输出字符串: echo “Hello”; 2. 输出表达式结果: echo 23+56;
        
      
    
  
  
    
      字符串:
        
          
            
              可以用单引号，也可以用双引...</content>
  </entry>

  <entry>
    <title>Android 封装getpost</title>
    <link href="/2015/03/29/android-%E5%B0%81%E8%A3%85GetPost.html"/>
    <updated>2015-03-29T00:00:00+08:00</updated>
    <id>/2015/03/29/android-封装GetPost</id>
    <content type="html">
为了方便，自己封装了一个

  Google 好像有更好的，还没用起来，先用用自己封装的, 以下是源码


import android.annotation.TargetApi;
import android.os.Build;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.Cook...</content>
  </entry>

  <entry>
    <title>Cole Smith</title>
    <link href="/2015/03/28/cole-smith.html"/>
    <updated>2015-03-28T00:00:00+08:00</updated>
    <id>/2015/03/28/cole-smith</id>
    <content type="html">
Home For Cole Smith
</content>
  </entry>

  <entry>
    <title>Iptables Useage</title>
    <link href="/2015/03/26/iptables-useage.html"/>
    <updated>2015-03-26T00:00:00+08:00</updated>
    <id>/2015/03/26/iptables-useage</id>
    <content type="html">
将来自 10.4.143.0/24 的tcp数据指向 64.111.96.38
iptables -t nat -I PREROUTING -s 10.4.143.0/24 -p tcp -j DNAT --to-destin
ation 64.111.96.38


将来自 10.4.143.0/24 的tcp的http数据指向 123.58.180.106
iptables -t nat -I PREROUTING -s 10.4.143.0/24 -p tcp -m tcp --dport 80 -j DNAT --to-destination 123.58.180.106


...</content>
  </entry>

  <entry>
    <title>Linux Scanning Technique</title>
    <link href="/2015/03/26/Linux-Scanning-Technique.html"/>
    <updated>2015-03-26T00:00:00+08:00</updated>
    <id>/2015/03/26/Linux-Scanning-Technique</id>
    <content type="html">
扫描技术
Study Address

1. 概述

  1.互联网安全: 数据的真实、可靠、完整、可控
  
    
      命令:
        
          tracert
          traceroute:
        
        
          扫描到达目的网络的路由
          例如: traceroute www.baidu.com #　将可以看到所经过的路由
    * nmap:
          端口范围扫描, 批量主机服务扫描
    * nc:
          任意IP地址端口扫描
        
    ...</content>
  </entry>


</feed>
