<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>chareice</title>
    <link>https://ruby-china.org/chareice</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>今年的 RubyConf China 怎么一点消息也没有了</title>
      <description>&lt;p&gt;😅都去搞区块链了吗&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Wed, 18 Jul 2018 22:22:58 +0800</pubDate>
      <link>https://ruby-china.org/topics/37188</link>
      <guid>https://ruby-china.org/topics/37188</guid>
    </item>
    <item>
      <title>寻求前后端兼职 (HTML\Ruby\Python\PHP)</title>
      <description>&lt;p&gt;最近因为空闲时间比较多（实际上因为穷），想挣些钱养家糊口，有兼职项目的可以与我联系，十分感谢～&lt;/p&gt;

&lt;p&gt;本人可以承接的技术类型：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ruby、Python、PHP 的后端开发&lt;/li&gt;
&lt;li&gt;Web 项目的前端开发&lt;/li&gt;
&lt;li&gt;微信开发&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;联系扣扣：81376258，微信：chareice&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Sun, 06 Mar 2016 11:40:56 +0800</pubDate>
      <link>https://ruby-china.org/topics/29225</link>
      <guid>https://ruby-china.org/topics/29225</guid>
    </item>
    <item>
      <title>酷盘关闭？</title>
      <description>&lt;p&gt;&lt;a href="https://kanbox.com/news/201508032254" rel="nofollow" target="_blank"&gt;https://kanbox.com/news/201508032254&lt;/a&gt;
其实一直在用酷盘，一直在等酷盘的一些新功能，比如共享文件夹，现在貌似因为政策原因关闭了，现在想想之前的共享文件夹是不是也是因为政策原因而没有开放，而丢出的声明却是系统正在升级。。。&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Tue, 04 Aug 2015 13:54:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/26763</link>
      <guid>https://ruby-china.org/topics/26763</guid>
    </item>
    <item>
      <title>苹果也用 Rails</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/90b2823b54d18517ec56464968c32f56.jpg" title="" alt=""&gt;
今天在用 &lt;a href="https://beta.apple.com/" rel="nofollow" target="_blank" title=""&gt;Apple Beta&lt;/a&gt;的时候，报了个错，让我微微一颤。。。这不是 Rails 么。。。&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Fri, 10 Jul 2015 14:26:38 +0800</pubDate>
      <link>https://ruby-china.org/topics/26425</link>
      <guid>https://ruby-china.org/topics/26425</guid>
    </item>
    <item>
      <title>关于 Rails Controller params 的参数内容</title>
      <description>&lt;p&gt;前端使用 Angular Resource 传参数进来，本来是没有 operation_user 这个参数的。
&lt;img src="https://l.ruby-china.com/photo/2015/538007fb87c85bc5ba85b26f779e047a.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;传到后台之后多出了 operation_user 这个对象。
&lt;img src="https://l.ruby-china.com/photo/2015/61d04b32c035825bb64c310d4a567d2d.png" title="" alt=""&gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I, [2015-05-29T14:48:46.876009 #29335]  INFO -- :   Parameters: {"username"=&amp;gt;"12321312", "phone_number"=&amp;gt;"3123123", "name"=&amp;gt;"123123", "password"=&amp;gt;"[FILTERED]", "operation_user_role_ids"=&amp;gt;["1"], "operation_user"=&amp;gt;{"username"=&amp;gt;"12321312", "phone_number"=&amp;gt;"3123123", "name"=&amp;gt;"123123"}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;关键是 &lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"operation_user"=&amp;gt;{"username"=&amp;gt;"12321312", "phone_number"=&amp;gt;"3123123", "name"=&amp;gt;"123123"}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;多出的这个参数里面没有 password 和 operation_user_role_ids 这两个 key...&lt;/p&gt;

&lt;p&gt;请问各位大神是何原因？&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Fri, 29 May 2015 14:59:02 +0800</pubDate>
      <link>https://ruby-china.org/topics/25807</link>
      <guid>https://ruby-china.org/topics/25807</guid>
    </item>
    <item>
      <title>折扣的数据库表该如何设计。。</title>
      <description>&lt;p&gt;现在有商品，订单表，要在这上面加折扣，什么首单立减五元，满多少减运费，或者单品的优惠。我想的一种方法是在折扣中加入一个类似 DSL 的字段，用户每次结算的时候，服务器都遍历一遍该表，并运行 DSL 来判断是否有相应的折扣。。不知道还有没有更好的设计。。&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Thu, 25 Dec 2014 20:52:13 +0800</pubDate>
      <link>https://ruby-china.org/topics/23404</link>
      <guid>https://ruby-china.org/topics/23404</guid>
    </item>
    <item>
      <title>有没有 Ruby sctp 服务器的示例</title>
      <description>&lt;p&gt;找不到呀找不到。。。&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Fri, 05 Dec 2014 21:37:00 +0800</pubDate>
      <link>https://ruby-china.org/topics/23054</link>
      <guid>https://ruby-china.org/topics/23054</guid>
    </item>
    <item>
      <title>网站的归属或者原创有没有什么法律依据的。。。</title>
      <description>&lt;p&gt;比如现在有个知乎网，小明再去搞一个一模一样的知乎网，名字 Logo 都一样，只是域名不同，知乎网应该怎么维权呢，小明又会受到什么惩罚呢？&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Wed, 26 Nov 2014 13:44:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/22881</link>
      <guid>https://ruby-china.org/topics/22881</guid>
    </item>
    <item>
      <title>有人试过在 win 平板上编程吗</title>
      <description>&lt;p&gt;电脑被偷，暂时还买不起 Mac 系列。。。想搞一台编程机。&lt;/p&gt;

&lt;p&gt;最近很多的 win 系列平板，可以运行 win8 系统的。不知道能不能在上面安装 Ubuntu 或者 Vagrant。&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Tue, 21 Oct 2014 09:36:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/22152</link>
      <guid>https://ruby-china.org/topics/22152</guid>
    </item>
    <item>
      <title>Docker 介绍以及其相关术语、底层原理和技术</title>
      <description>&lt;p&gt;原文发表在 Pilehub &lt;a href="http://pilehub.org/t/docker/23" rel="nofollow" target="_blank"&gt;http://pilehub.org/t/docker/23&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;英文原文：&lt;a href="https://docs.docker.com/introduction/understanding-docker/#the-underlying-technology" rel="nofollow" target="_blank" title=""&gt;Understanding Docker&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="Docker是啥"&gt;Docker 是啥&lt;/h2&gt;
&lt;p&gt;Docker 是一个程序运行、测试、交付的开放平台，Docker 被设计为能够使你快速地交付应用。在 Docker 中，你可以将你的程序分为不同的基础部分，对于每一个基础部分都可以当做一个应用程序来管理。Docker 能够帮助你快速地测试、快速地编码、快速地交付，并且缩短你从编码到运行应用的周期。&lt;/p&gt;

&lt;p&gt;Docker 使用轻量级的容器虚拟化平台，并且结合工作流和工具，来帮助你管理、部署你的应用程序。&lt;/p&gt;

&lt;p&gt;在其核心，Docker 实现了让几乎任何程序都可以在一个安全、隔离的容器中运行。安全和隔离可以使你可以同时在机器上运行多个容器。&lt;/p&gt;

&lt;p&gt;容器轻量级的特性，意味着你可以得到更多的硬件性能。&lt;/p&gt;

&lt;p&gt;围绕着容器的虚拟化工具和平台，可以在以下几个方面为你提供帮助：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;帮助你把应用程序 (包括其余的支持组件) 放入到 Docker 容器中。&lt;/li&gt;
&lt;li&gt;分发和转移你的容器至你的团队其它成员来进行进一步的开发和测试。&lt;/li&gt;
&lt;li&gt;部署这些应用程序至你的生产环境，不论是本地的数据中心还是云平台。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="我可以用Docker做啥"&gt;我可以用 Docker 做啥&lt;/h2&gt;&lt;h3 id="快速交付你的应用程序"&gt;&lt;em&gt;快速交付你的应用程序&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Docker 可以为你的开发过程提供完美的帮助。Docker 允许开发者在本地包含了应用程序和服务的容器进行开发，之后可以集成到连续的一体化和部署工作流中。&lt;/p&gt;

&lt;p&gt;举个例子，开发者们在本地编写代码并且使用 Docker 和同事分享其开发栈。当开发者们准备好了之后，他们可以将代码和开发栈推送到测试环境中，在该环境进行一切所需要的测试。从测试环境中，你可以将 Docker 镜像推送到服务器上进行部署。&lt;/p&gt;
&lt;h3 id="开发和拓展更加简单"&gt;&lt;em&gt;开发和拓展更加简单&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Docker 的以容器为基础的平台允许高度可移植的工作。Docker 容器可以在开发者机器上运行，也可以在实体或者虚拟机上运行，也可以在云平台上运行。&lt;/p&gt;

&lt;p&gt;Docker 的可移植、轻量特性同样让动态地管理负载更加简单。你可以用 Docker 快速地增加应用规模或者关闭应用程序和服务。Docker 的快速意味着变动几乎是实时的。&lt;/p&gt;
&lt;h3 id="达到高密度和更多负载"&gt;&lt;em&gt;达到高密度和更多负载&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Docker 轻巧快速，它提供了一个可行的、符合成本效益的替代基于虚拟机管理程序的虚拟机。这在高密度的环境下尤其有用。例如，构建你自己的云平台或者 PaaS，在中小的部署环境下同样可以获取到更多的资源性能。&lt;/p&gt;
&lt;h2 id="Docker的主要组成有哪些"&gt;Docker 的主要组成有哪些&lt;/h2&gt;
&lt;p&gt;Docker 有两个主要的部件：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker: 开源的容器虚拟化平台。&lt;/li&gt;
&lt;li&gt;Docker Hub: 用于分享、管理 Docker 容器的 Docker SaaS 平台。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="Docker的架构是怎样的"&gt;Docker 的架构是怎样的&lt;/h2&gt;
&lt;p&gt;Docker 使用客户端 - 服务器 (client-server) 架构模式。Docker 客户端会与 Docker 守护进程进行通信。Docker 守护进程会处理复杂繁重的任务，例如建立、运行、发布你的 Docker 容器。Docker 客户端和守护进程可以运行在同一个系统上，当然你也可以使用 Docker 客户端去连接一个远程的 Docker 守护进程。Docker 客户端和守护进程之间通过 socket 或者 RESTful API 进行通信。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://pilehub.org/uploads/default/9/bfa045df20c2541f.png" title="" alt="arch"&gt;&lt;/p&gt;
&lt;h3 id="Docker守护进程"&gt;Docker 守护进程&lt;/h3&gt;
&lt;p&gt;如上图所示，Docker 守护进程运行在一台主机上。用户并不直接和守护进程进行交互，而是通过 Docker 客户端间接和其通信。&lt;/p&gt;
&lt;h3 id="Docker客户端"&gt;Docker 客户端&lt;/h3&gt;
&lt;p&gt;Docker 客户端，实际上是&lt;code&gt;docker&lt;/code&gt;的二进制程序，是主要的用户与 Docker 交互方式。它接收用户指令并且与背后的 Docker 守护进程通信，如此来回往复。&lt;/p&gt;
&lt;h3 id="Docker的内部"&gt;Docker 的内部&lt;/h3&gt;
&lt;p&gt;要理解 Docker 的内部构建，必须知道以下三种部件：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker 镜像 (Docker images)。&lt;/li&gt;
&lt;li&gt;Docker 仓库 (Docker registeries)。&lt;/li&gt;
&lt;li&gt;Docker 容器 (Docker containers)。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="Docker镜像"&gt;Docker 镜像&lt;/h4&gt;
&lt;p&gt;Docker 镜像是一个只读的模板。举个例子，一个镜像可以包含一个运行在 Apache 上的 Web 应用和其使用的 Ubuntu 操作系统。&lt;/p&gt;

&lt;p&gt;镜像是用来创建容器的。Docker 提供了简单的放来来建立新的镜像或者升级现有的镜像，你也可以下载别人已经创建好的镜像。Docker 镜像是 Docker 的 &lt;strong&gt;构造&lt;/strong&gt; 部分。&lt;/p&gt;
&lt;h4 id="Docker仓库"&gt;Docker 仓库&lt;/h4&gt;
&lt;p&gt;Docker 仓库用来保存镜像。可以理解为代码控制中的代码仓库。同样的，Docker 仓库也有公有和私有的概念。公有的 Docker 仓库名字是&lt;a href="http://hub.docker.com/" rel="nofollow" target="_blank" title=""&gt;Docker Hub&lt;/a&gt;。Docker Hub 提供了庞大的镜像集合供使用。这些镜像可以是你自己创建的，或者你也可以在别人的镜像基础上创建。Docker 仓库是 Docker 的 &lt;strong&gt;分发&lt;/strong&gt; 部分。&lt;/p&gt;
&lt;h4 id="Docker容器"&gt;Docker 容器&lt;/h4&gt;
&lt;p&gt;Docker 容器和文件夹很类似。一个 Docker 容器包含了所有的某个应用运行所需要的环境。每一个 Docker 容器都是从 Docker 镜像创建的。Docker 容器可以运行、开始、停止、移动和删除。每一个 Docker 容器都是独立和安全的应用平台。Docker 容器是 Docker 的 &lt;strong&gt;运行&lt;/strong&gt; 部分。&lt;/p&gt;
&lt;h2 id="Docker的工作原理"&gt;Docker 的工作原理&lt;/h2&gt;
&lt;p&gt;到目前为止，我们学习到了：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;我们可以建立一个容纳应用程序的容器。&lt;/li&gt;
&lt;li&gt;我们可以从 Docker 镜像创建 Docker 容器来运行我们的应用程序。&lt;/li&gt;
&lt;li&gt;我们可以通过 Docker Hub 或者我们自己的 Docker 仓库分享 Docker 镜像。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="Docker镜像是如何工作的"&gt;Docker 镜像是如何工作的&lt;/h2&gt;
&lt;p&gt;我们已经看到了，Docker 镜像是 Docker 容器运行时的只读模板。每一个镜像由一系列的层 (layers) 组成。Docker 使用&lt;a href="http://en.wikipedia.org/wiki/UnionFS" rel="nofollow" target="_blank" title=""&gt;UnionFS&lt;/a&gt;来将这些层联合到一二镜像中。Union 文件系统允许独立文件系统中的文件和文件夹 (称之为分支) 被透明覆盖，形成一个单独连贯的文件系统。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;这一段的原文：We've already seen that Docker images are read-only templates from which Docker containers are launched. Each image consists of a series of layers. Docker makes use of union file systems to combine these layers into a single image. Union file systems allow files and directories of separate file systems, known as branches, to be transparently overlaid, forming a single coherent file system.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;正因为有了这些层的存在，Docker 是如此的轻量。当你改变了一个 Docker 镜像，比如升级到某个程序到新的版本，一个新的层会被创建。因此，不用替换整个原先的镜像或者重新建立 (在使用虚拟机的时候你可能会这么做)，只是一个新的层被添加或升级了。现在你不用重新发布整个镜像，只需要升级。层使得分发 Docker 镜像变得简单和快速。&lt;/p&gt;

&lt;p&gt;每个镜像都是从一个基础的镜像开始的，比如&lt;code&gt;ubuntu&lt;/code&gt;，一个基础的 Ubuntu 镜像，或者是&lt;code&gt;fedora&lt;/code&gt;，一个基础的 Fedora 镜像。你可以使用你自己的镜像作为新镜像的基础，例如你有一个基础的安装了 Apache 的镜像，你可以使用该镜像来建立你的 Web 应用程序镜像。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;注：Docker 通常从 Docker Hub 获取基础镜像。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Docker 镜像从这些基础的镜像创建，通过一种简单、具有描述性的步骤，我们称之为 &lt;em&gt;指令 (instructions)&lt;/em&gt;。每一个指令会在镜像中创建一个新的层，指令可以包含这些动作：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;运行一个命令。&lt;/li&gt;
&lt;li&gt;增加文件或者文件夹。&lt;/li&gt;
&lt;li&gt;创建一个环境变量。&lt;/li&gt;
&lt;li&gt;当运行容器的时候哪些程序会运行。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这些指令存储在&lt;code&gt;Dockerfile&lt;/code&gt;文件中。当你需要建立镜像的时候，Docker 可以从&lt;code&gt;Dockerfile&lt;/code&gt;中读取这些指令并且运行，然后返回一个最终的镜像。&lt;/p&gt;
&lt;h2 id="Docker仓库是如何工作的"&gt;Docker 仓库是如何工作的&lt;/h2&gt;
&lt;p&gt;Docker 仓库是 Docker 镜像的存储仓库。你可以推送你的镜像到你的 Docker 仓库中。&lt;/p&gt;

&lt;p&gt;通过 Docker 客户端，你可以从 Docker 仓库中搜索镜像。&lt;/p&gt;
&lt;h2 id="Docker容器是如何工作的"&gt;Docker 容器是如何工作的&lt;/h2&gt;
&lt;p&gt;一个 Docker 容器包含了一个操作系统、用户添加的文件和元数据 (meta-data)。我们可以看到，每个容器都是从镜像建立的。镜像告诉 Docker 容器内包含了什么，当容器启动时运行什么程序，还有许多配置数据。Docker 镜像是只读的。当 Docker 运行一个从镜像建立的容器，它会在镜像顶部添加一个可读写的层，应用程序可以在这里运行。&lt;/p&gt;
&lt;h2 id="当你运行docker容器时发生了什么"&gt;当你运行 docker 容器时发生了什么&lt;/h2&gt;
&lt;p&gt;不论你使用&lt;code&gt;docker&lt;/code&gt;命令或者是 RESTful API，Docker 客户端都会告诉 Docker 守护进程运行一个容器。&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo docker run -i -t ubuntu /bin/bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;让我们来分析这个命令。Docker 客户端使用&lt;code&gt;docker&lt;/code&gt;命令来运行，&lt;code&gt;run&lt;/code&gt;参数表名客户端要运行一个新的容器。Docker 客户端要运行一个容器需要告诉 Docker 守护进程的最小参数信息是：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;这个容器从哪个镜像创建，这里是&lt;code&gt;ubuntu&lt;/code&gt;，基础的 Ubuntu 镜像。&lt;/li&gt;
&lt;li&gt;在容器中要运行的命令，这里是&lt;code&gt;/bin/bash&lt;/code&gt;，在容器中运行 Bash shell。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;那么运行这个命令之后在底层发生了什么？&lt;/p&gt;

&lt;p&gt;按照顺序，Docker 做了这些事情：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;拉取&lt;code&gt;ubuntu&lt;/code&gt;镜像：&lt;/strong&gt; Docker 检查&lt;code&gt;ubuntu&lt;/code&gt;镜像是否存在，如果在本地没有该镜像，Docker 会从 Docker Hub 下载。如果镜像已经存在，Docker 会使用它来创建新的容器。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;创建新的容器：&lt;/strong&gt; 当 Docker 有了这个镜像之后，Docker 会用它来创建一个新的容器。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;分配文件系统并且挂载一个可读写的层：&lt;/strong&gt; 容器会在这个文件系统中创建，并且一个可读写的层被添加到镜像中。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;分配网络/桥接接口：&lt;/strong&gt; 创建一个允许容器与本地主机通信的网络接口。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;设置一个 IP 地址：&lt;/strong&gt; 从池中寻找一个可用的 IP 地址并且服加到容器上。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;运行你指定的程序：&lt;/strong&gt; 运行指定的程序。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;捕获并且提供应用输出：&lt;/strong&gt; 连接并且记录标准输出、输入和错误让你可以看到你的程序是如何运行的。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;你现在拥有了一个运行着的容器！从这里开始你可以管理你的容器，与应用交互，应用完成之后，可以停止或者删除你的容器。&lt;/p&gt;
&lt;h2 id="底层技术"&gt;底层技术&lt;/h2&gt;
&lt;p&gt;Docker 使用 Go 语言编写，并且使用了一系列 Linux 内核提供的性能来实现我们已经看到的这些功能。&lt;/p&gt;
&lt;h2 id="命名空间(Namespaces)"&gt;命名空间 (Namespaces)&lt;/h2&gt;
&lt;p&gt;Docker 充分利用了一项称为&lt;code&gt;namespaces&lt;/code&gt;的技术来提供隔离的工作空间，我们称之为 &lt;em&gt;container(容器)&lt;/em&gt;。当你运行一个容器的时候，Docker 为该容器创建了一个命名空间集合。&lt;/p&gt;

&lt;p&gt;这样提供了一个隔离层，每一个应用在它们自己的命名空间中运行而且不会访问到命名空间之外。&lt;/p&gt;

&lt;p&gt;一些 Docker 使用到的命名空间有：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pid&lt;/code&gt;命名空间：&lt;/strong&gt; 使用在进程隔离 (PID: Process ID)。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;net&lt;/code&gt;命名空间：&lt;/strong&gt; 使用在管理网络接口 (NET: Networking)。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;ipc&lt;/code&gt;命名空间：&lt;/strong&gt; 使用在管理进程间通信资源 (IPC: InterProcess Communication)。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;mnt&lt;/code&gt;命名空间：&lt;/strong&gt; 使用在管理挂载点 (MNT: Mount)。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;uts&lt;/code&gt;命名空间：&lt;/strong&gt; 使用在隔离内核和版本标识  (UTS: Unix Timesharing System)。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="群组控制"&gt;群组控制&lt;/h2&gt;
&lt;p&gt;Docker 还使用到了&lt;code&gt;cgroups&lt;/code&gt;技术来管理群组。使应用隔离运行的关键是让它们只使用你想要的资源。这样可以确保在机器上运行的容器都是良民 (good multi-tenant citizens)。群组控制允许 Docker 分享或者限制容器使用硬件资源。例如，限制指定的容器的内容使用。&lt;/p&gt;
&lt;h2 id="联合文件系统"&gt;联合文件系统&lt;/h2&gt;
&lt;p&gt;联合文件系统 (UnionFS) 是用来操作创建层的，使它们轻巧快速。Docker 使用 UnionFS 提供容器的构造块。Docker 可以使用很多种类的 UnionFS 包括 AUFS, btrfs, vfs, and DeviceMapper。&lt;/p&gt;
&lt;h2 id="容器格式"&gt;容器格式&lt;/h2&gt;
&lt;p&gt;Docker 连接这些组建到一个包装中，称为一个 &lt;em&gt;container format(容器格式)&lt;/em&gt;。默认的容器格式是&lt;code&gt;libcontainer&lt;/code&gt;。Docker 同样支持传统的 Linux 容器使用&lt;a href="https://linuxcontainers.org/" rel="nofollow" target="_blank" title=""&gt;LXC&lt;/a&gt;。在未来，Docker 也许会支持其它的容器格式，例如与 BSD Jails 或 Solaris Zone 集成。&lt;/p&gt;
&lt;h2 id="接下来。。。"&gt;接下来。。。&lt;/h2&gt;
&lt;p&gt;可以实践一些&lt;code&gt;Docker&lt;/code&gt;命令使用：
&lt;a href="http://pilehub.org/t/docker/20" rel="nofollow" target="_blank" title=""&gt;Docker 入门使用教程&lt;/a&gt;
&lt;a href="http://pilehub.org/t/docker-hello-world/28" rel="nofollow" target="_blank" title=""&gt;Docker 化应用：一个 Hello World&lt;/a&gt;
&lt;a href="http://pilehub.org/t/docker/40" rel="nofollow" target="_blank" title=""&gt;与容器同行&lt;/a&gt;&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Mon, 13 Oct 2014 01:03:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/22004</link>
      <guid>https://ruby-china.org/topics/22004</guid>
    </item>
    <item>
      <title>到哪里去买 Ruby 的 T-shirt</title>
      <description>&lt;p&gt;炎炎夏日大家懂的&lt;a href="http://www.rubyrags.com/products/18" rel="nofollow" target="_blank"&gt;http://www.rubyrags.com/products/18&lt;/a&gt;&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Mon, 23 Jun 2014 13:51:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/20119</link>
      <guid>https://ruby-china.org/topics/20119</guid>
    </item>
    <item>
      <title>StackOverflow 宕机中。。。</title>
      <description>&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/2014/e87fa07517140cf2545f6f288ae257d7.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;失去了才懂得 StackOverFlow 的珍贵，且编且珍惜。。。&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Sun, 13 Apr 2014 15:19:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/18575</link>
      <guid>https://ruby-china.org/topics/18575</guid>
    </item>
    <item>
      <title>问数学在编程中的重要性，以及应该学习哪些知识?</title>
      <description>&lt;p&gt;最近在写一款牌类游戏，遇到了一些数学计算的问题。就说癞子斗地主，要写出函数给出手中所有大过上一家出牌的手中牌的组合，如果用一般的遍历来处理情况条件会相当复杂，用集合来做会简单很多。&lt;/p&gt;

&lt;p&gt;在做 Web 开发的时候可能没有觉得数学计算方法的重要性，在做游戏的时候就明显感觉到自身数学能力不够。可是又不知该从何学起，虚心请教各位大大，希望能够得到一个学习的方向。&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Sat, 22 Mar 2014 09:35:09 +0800</pubDate>
      <link>https://ruby-china.org/topics/18086</link>
      <guid>https://ruby-china.org/topics/18086</guid>
    </item>
    <item>
      <title>yield 肿么翻译</title>
      <description>&lt;p&gt;有道词典：
vt. 屈服；出产；放弃
vi. 屈服，投降
n. 产量；收益&lt;/p&gt;

&lt;p&gt;那么 &lt;code&gt;yield i&lt;/code&gt; 应该字面上怎么理解？出产 i？&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Thu, 23 Jan 2014 16:49:33 +0800</pubDate>
      <link>https://ruby-china.org/topics/16956</link>
      <guid>https://ruby-china.org/topics/16956</guid>
    </item>
    <item>
      <title>有兄弟做过这样的东西吗，提取视频中的音频，播放音频时展示对应时刻的频谱图。</title>
      <description>&lt;ol&gt;
&lt;li&gt;提取视频中的音频。&lt;/li&gt;
&lt;li&gt;播放音频时展示对应时刻的频谱图。&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>chareice</author>
      <pubDate>Wed, 15 Jan 2014 11:44:33 +0800</pubDate>
      <link>https://ruby-china.org/topics/16814</link>
      <guid>https://ruby-china.org/topics/16814</guid>
    </item>
    <item>
      <title>RubyMotion 真是太酷了，可以混编 Objective-c。</title>
      <description>&lt;p&gt;&lt;a href="http://clayallsopp.com/posts/mixing-objective-c-and-ruby/" rel="nofollow" target="_blank"&gt;http://clayallsopp.com/posts/mixing-objective-c-and-ruby/&lt;/a&gt;
&lt;img src="//l.ruby-china.com/photo/2014/51f7ec969a769784e3bb7b26764220d7.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Wed, 08 Jan 2014 09:34:29 +0800</pubDate>
      <link>https://ruby-china.org/topics/16685</link>
      <guid>https://ruby-china.org/topics/16685</guid>
    </item>
    <item>
      <title>社会太残酷还是我太软弱</title>
      <description>&lt;p&gt;事情是这样的&lt;/p&gt;

&lt;p&gt;我 12 年 12 月份在南昌找到一份工作，php 程序员，在这里结识了技术部经理 (下面称作 Y)。Y 于 3 月份从公司离职，随后去了深圳。Y 于六月份给我一份校园网站策划书，是深圳 XX 学校 (下面称作 G) 的校园网站需求，我大致看了需求，并不是很难，那段时间刚好在学 Rails，就接下了这个项目。我于 8 月上旬从公司离职，回家一心完成 G 学校的需求。&lt;/p&gt;

&lt;p&gt;大约 13 年九月中旬 (中秋节)，整个系统差不多完工，交给学校验收。功能都是按照 G 学校的需求方案来做的，学校的验收结果却是 20 几条需求之外的需要改动的功能。&lt;strong&gt;因为不敢说不&lt;/strong&gt;，和 Y 讨论之后还是听从 Y 的意见，服从学校的需求，给系统添加新功能。&lt;/p&gt;

&lt;p&gt;这里还有一个关键的人物 L，我也是今天才知道，G 学校是把项目外包给了 XX 公司，XX 公司的法人 L 和 Y 是以前共事的同事，我猜测这两个人在酒桌上就这么一拍一合，最后苦逼 (为什么苦逼，往下看) 的事情就落到了我的身上。&lt;/p&gt;

&lt;p&gt;中秋节的改动大致于国庆完成，国庆后又提交给学校验收，学校依旧给出了十几条改动的意见，我下我才恍然大悟，学校是把我当成他们的劳动力了，我必须得找工作了，这样继续下去，白吃白喝家里的不说，这边和学校沟通也是十分困难，整个项目设计、程序、沟通都是我一个人在做，特别累。&lt;/p&gt;

&lt;p&gt;十月中旬面试成功，悲剧的是胃病又发作了，米汤都喝不下，去医院接受治疗，于 11 月 1 日在新公司入职。&lt;/p&gt;

&lt;p&gt;11 月和 12 月对 G 学校的态度比较强硬，我也想清楚了，我和 Y 沟通，原来做好的新功能就不算了，但是如果再要求加新功能我们就另外收费。&lt;/p&gt;

&lt;p&gt;就在上个星期我提交 G 学校功能的时候，发现系统没了流量，远程到服务器上看了一下就惊呆了，系统换成了一套 Destoon 的框架，配成了 WAMP&lt;code&gt;windows apache mysql php&lt;/code&gt;，前端的设计是照搬 Rails 系统的代码。我和 Y 联系，没有回复，和 L 联系，没有消息。今天 Y 给我回复，说他也没和 L 联系上，但是猜测是学校要求 L 换人，我感觉莫名其妙，都系都做好了为什么又要换人，打 L 的电话 L 也不接，系统的代码在 L 手上有备份。我又明白了，我这几个月的心血全都白费，被 L 欺骗了。&lt;/p&gt;

&lt;p&gt;现在回头想想，几个月的心血没有任何回报，在家做项目的时候亲人朋友看见了都以为这孩子整天抱着电脑，工作也没有，吃家里喝家里的，不务正业。真是太难过了。&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;谢谢大家，看了大家的回复真是太温暖了。这件事我自己总结了一下：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;做东西一定要有合同&lt;/li&gt;
&lt;li&gt;身体最重要&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;通过这个项目入门了 Rails 还是很开心的~&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Fri, 03 Jan 2014 20:27:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/16608</link>
      <guid>https://ruby-china.org/topics/16608</guid>
    </item>
    <item>
      <title>生成 mongoid:config 文件失败</title>
      <description>&lt;p&gt;明明已经在 Gemfile 中添加了 mongoid
&lt;code&gt;Could not find generator mongoid:config.&lt;/code&gt;
&lt;img src="//l.ruby-china.com/photo/199977407a9337b7310dfbde14838e4e.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Tue, 01 Oct 2013 20:14:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/14501</link>
      <guid>https://ruby-china.org/topics/14501</guid>
    </item>
    <item>
      <title>如何使用 ActionMailer 异步发送邮件？</title>
      <description>&lt;p&gt;做用户邮箱验证的时候，当用户填写好了邮箱号码，后台用 ActionMailer 发送邮件，用户需要等待很长的时间才能看到页面刷新的结果。请问如果使 ActionMailer 变为异步发送的？&lt;/p&gt;</description>
      <author>chareice</author>
      <pubDate>Sun, 01 Sep 2013 09:51:57 +0800</pubDate>
      <link>https://ruby-china.org/topics/13794</link>
      <guid>https://ruby-china.org/topics/13794</guid>
    </item>
  </channel>
</rss>
