<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>hsl4125 (huangh)</title>
    <link>https://ruby-china.org/hsl4125</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>rails 嵌套 layout 问题</title>
      <description>&lt;p&gt;application.html.erb&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;...
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="s2"&gt;"layouts/header"&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"columns is-centered"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"column is-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"main-container container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="s2"&gt;"layouts/footer"&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;edit.html.erb&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="n"&gt;provide&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"Edit"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"title is-3 has-text-centered"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Edit post&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;

&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="s1"&gt;'post-form'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;post: &lt;/span&gt;&lt;span class="vi"&gt;@post&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;title: &lt;/span&gt;&lt;span class="s2"&gt;"Edit"&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;_post-form.htm.erb&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;
&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form_with&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;model: &lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;local: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"field"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;label&lt;/span&gt; &lt;span class="ss"&gt;:title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;class: &lt;/span&gt;&lt;span class="s2"&gt;"label"&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"control"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;text_field&lt;/span&gt; &lt;span class="ss"&gt;:title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;class: &lt;/span&gt;&lt;span class="s2"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;placeholder: &lt;/span&gt;&lt;span class="s2"&gt;"Please enter Title"&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"field"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;label&lt;/span&gt; &lt;span class="ss"&gt;:content&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;class: &lt;/span&gt;&lt;span class="s2"&gt;"label"&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"control"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;text_area&lt;/span&gt; &lt;span class="ss"&gt;:content&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;class: &lt;/span&gt;&lt;span class="s2"&gt;"textarea"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;placeholder: &lt;/span&gt;&lt;span class="s2"&gt;"please enter content"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;rows: &lt;/span&gt;&lt;span class="s2"&gt;"5"&lt;/span&gt;&lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"stackedit-button-wrapper"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"field buttons is-centered"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"control"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;submit&lt;/span&gt; &lt;span class="ss"&gt;class: &lt;/span&gt;&lt;span class="s2"&gt;"button is-link"&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;"Edit"&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"control"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;link_to&lt;/span&gt; &lt;span class="s1"&gt;'Destroy'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="vi"&gt;@post&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;class: &lt;/span&gt;&lt;span class="s2"&gt;"button is-link"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;method: :delete&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;data: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;confirm: &lt;/span&gt;&lt;span class="s1"&gt;'Are you sure?'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;

&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;javascript_include_tag&lt;/span&gt; &lt;span class="s1"&gt;'stackedit'&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;javascript_include_tag&lt;/span&gt; &lt;span class="s1"&gt;'md-editor'&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;有这样三个 erb 文件，我期待的是 footer 应该出现在 body 的内层，但是 render 的结果：&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;...
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
...
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"columns is-centered"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"column is-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;footer&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"footer"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; 
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;edit 这个用到了两个 erb 模板，我期望首先 render 内部的 form 然后再 render 整体的 application，layout 这部分我还是有点迷糊。感觉应该是连续两次 render 出了问题。这种情况应该怎么做？&lt;/p&gt;</description>
      <author>hsl4125</author>
      <pubDate>Thu, 04 Jul 2019 11:58:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/38784</link>
      <guid>https://ruby-china.org/topics/38784</guid>
    </item>
    <item>
      <title> Let's Encrypt 爬坑记</title>
      <description>&lt;h2 id="Let's Encryptp 爬坑记"&gt;Let's Encryptp 爬坑记&lt;/h2&gt;
&lt;p&gt;个人主页域名申请下来了，下一步就是开启 https。决定用 Let's Encryptp，据说既简单又安全，没想到都是眼泪，于是就有了这篇爬坑记。&lt;/p&gt;

&lt;p&gt;打开&lt;a href="https://letsencrypt.org/" rel="nofollow" target="_blank" title=""&gt;Let's Encrypt 官网&lt;/a&gt;，跟着 Get Started 就到了&lt;a href="https://certbot.eff.org/" rel="nofollow" target="_blank" title=""&gt;certbot&lt;/a&gt;。乍一看很人性化，什么 nginx，ubuntu18.04 剩下的事情就是跟着步骤一路 copy paste 和 Enter 了吧。接下来就发现自己还是太傻太天真了。先选择的是 default 步骤，报错一看大致意思是 DNS provider 这边被拒绝了。还有个 wildcard 方式啊，也发现了 linode 支持在列。又是一通鼓捣，结果在安装 DNS provider 插件的时候坑了。通过 apt-get 安装没有 python3-certbot-dns-linode 这个包。想了一下直接通过 pip 安装：pip install cert-dns-linode。安装成功，开心的进行下一步。又坑了，报错大致上提示 linode 这个插件是 0.35.1 然后我其它的组件都是 0.31.0 的版本，版本不兼容！google 上查了一下，有个和我一样情况的帖子得到了官方人员的回复：大致意思是说 ubuntu 的源不是他们官方维护的人家无能为力，并给推荐了一种通用的方式&lt;a href="https://certbot.eff.org/docs/install.html#id8" rel="nofollow" target="_blank" title=""&gt;Running with Docker&lt;/a&gt;。此时我心中有一万头草泥马在崩腾。官方网站上详细描述了安装步骤，出了问题之后轻描淡写的把这个锅甩给了 ubuntu。我就想弄个 ssl 证书，你跟我扯上 Docker 了。除了“干得漂亮”还能说什么。&lt;/p&gt;

&lt;p&gt;吐槽无用，想一下怎么解决吧。cerbot 提供的功能无非就是申请好证书，然后再配置 nginx（apache）之类的服务器，把这些繁琐的工作工具化。捷径走不通那就一步步的通过源码来解决问题吧。这次终于成功了。先说一下前提，我的服务器是&lt;strong&gt;ubuntu 18.04 LTS（在 linoe 上）&lt;/strong&gt;，nginx 是通过 apt-get 安装的，事先也需要安装好 git，并把你的源更新到最新：sudo apt update &amp;amp;&amp;amp; sudo apt upgrade。&lt;/p&gt;

&lt;p&gt;接下来说一下用 certbot 生成证书步骤（使用时请将 example.com 替换成自己的域名）：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clone cerbot &lt;a href="https://github.com/certbot/certbot" rel="nofollow" target="_blank" title=""&gt;repository&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;git clone https://github.com/certbot/certbot /opt/letsencrypt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd /opt/letsencrypt&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;运行 letsencrypt-auto 脚本（进行这一步之前先停止 nginx 或 apache 服务器，否则会提示你 80 或 443 端口被占用）：&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo -H ./letsencrypt-auto certonly --standalone -d example.com -d www.example.com&lt;/code&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;接下来一通 Enter 即可。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;此时你网站的域名应该有了，验证一下：&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo ls /etc/letsencrypt/live&lt;/code&gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;生成证书：&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;./certbot-auto certificates&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
      Found the following certs:
      Certificate Name: example.com
      Domains: example.com www.example.com
      Expiry Date: 2019-09-27 20:49:02+00:00 (VALID: 89 days)
      Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
      Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem
&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Let's Encryptp 证书有效期为 90 天，这一步搞定自动续期：&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;./letsencrypt-auto renew&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo crontab -e&lt;/code&gt;&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;0 0 1 &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; /opt/letsencrypt/letsencrypt-auto renew
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt; 同理如果你想自动更新 cerbot repository：&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo crontab -e&lt;/code&gt;&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;0 0 1 &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; /opt/letsencrypt &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git pull
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;至此证书的生成就完成了，有了证书配置 nginx 就简单许多了，接下来说一下 nginx 配置步骤 (可以参考&lt;a href="http://nginx.org/cn/docs/http/configuring_https_servers.html" rel="nofollow" target="_blank" title=""&gt;Configuring HTTPS servers &lt;/a&gt;)：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; 告诉你的 server 哪有证书（/etc/nginx/sites-enabled/example.conf）：&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt; http server 优化配置（/etc/nginx/nginx.conf）&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http {
    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 10m;
    ...
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt; 重启 nginx，享受 https 带来的快乐：&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo systemctl restart nginx&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;最后还可以去&lt;a href="https://www.ssllabs.com/ssltest/" rel="nofollow" target="_blank" title=""&gt;SSL Server Test&lt;/a&gt;验证一下 SSL 是否已经生效了。&lt;/p&gt;

&lt;p&gt;原文在&lt;a href="https://www.huanghai.icu/posts" rel="nofollow" target="_blank" title=""&gt;博客&lt;/a&gt;，刚刚弄好的主页，有点丑，大家凑合看。web 开发我还是个小白，这个项目用来练手，现在 github 上还只是个 private repository。还在持续改进中，过些天会开放出来。&lt;/p&gt;</description>
      <author>hsl4125</author>
      <pubDate>Thu, 27 Jun 2019 22:08:20 +0800</pubDate>
      <link>https://ruby-china.org/topics/38756</link>
      <guid>https://ruby-china.org/topics/38756</guid>
    </item>
  </channel>
</rss>
