<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>hxh1246996371 (笔墨伺候)</title>
    <link>https://ruby-china.org/hxh1246996371</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>分享个 JSON 小工具</title>
      <description>&lt;p&gt;拿到一坨 JSON 找个线上工具格式化其实是很多前后端开发者习惯性的操作了，除了大家常用的 json.cn 今天给大家推荐一个新的在线 JSON 格式化工具选择：&lt;a href="https://www.jsont.run/" rel="nofollow" target="_blank"&gt;https://www.jsont.run/&lt;/a&gt;，无广告、大文件解析快、一键分享、高效编辑、多种格式互转等功能，感兴趣的同学可以瞧瞧。&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Sun, 27 Mar 2022 18:11:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/42261</link>
      <guid>https://ruby-china.org/topics/42261</guid>
    </item>
    <item>
      <title>开放搜索服务哪个便宜</title>
      <description>&lt;p&gt;想知道有没有比较便宜一点的搜索服务，就我目前所知道的，阿里云以及各种云服务提供的搜索都比较贵，leacncloud 貌似比较便宜，但是速度慢。algolia 很快，但是有免费的额度限制，满了还是得给钱，而且不便宜。&lt;/p&gt;

&lt;p&gt;不知道大家有没有好的选择&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Mon, 14 Nov 2016 18:06:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/31591</link>
      <guid>https://ruby-china.org/topics/31591</guid>
    </item>
    <item>
      <title>关于 MySQL 的 utf8mb4 插入某些表情字符的时候就报错了</title>
      <description>&lt;p&gt;事情是这样的，最近尝试往数据库插入某些表情字符的时候就报错了，类似 &lt;code&gt;(Mysql2::Error: Incorrect string value: '\xF0\x9F\x91\x93'&lt;/code&gt;。然后查找资料后发现是 utf8 编码的问题，于是乎我就将数据库、以及相关表和字段的编码从 utf8 改成了 utf8mb4，但是发现仍然插入报错，不知道如何解决这个问题，想请教一下各位&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Sun, 28 Aug 2016 15:55:58 +0800</pubDate>
      <link>https://ruby-china.org/topics/30920</link>
      <guid>https://ruby-china.org/topics/30920</guid>
    </item>
    <item>
      <title>没错，所有开源 Web 视频播放器都在这里</title>
      <description>&lt;p&gt;这是 Github 上开源的 web 视频播放器的集合【&lt;a href="https://www.awesomes.cn/subject/videos" rel="nofollow" target="_blank"&gt;https://www.awesomes.cn/subject/videos&lt;/a&gt;】，以及视频背景解决方案，包含各自的功能特性、趋势和热度。此外还一有些与视频处理相关的库。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2016/06a31d7125f9d8043cd15a24d3b83944.png!large" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Mon, 11 Jul 2016 12:23:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/30495</link>
      <guid>https://ruby-china.org/topics/30495</guid>
    </item>
    <item>
      <title>GitHub 上开源的后台模板列表，让后台页面也漂亮一点</title>
      <description>&lt;p&gt;这里是 Github 上免费开源的后台模板列表，目前我们公司用的是最流行的 &lt;a href="https://www.awesomes.cn/repo/almasaeed2010/adminlte" rel="nofollow" target="_blank" title=""&gt;Adminlte&lt;/a&gt;比原生 Bootstrap 漂亮，基本上很少需要写自己的样式了。&lt;/p&gt;

&lt;p&gt;后台模板完整列表地址：&lt;a href="https://www.awesomes.cn/subject/admins" rel="nofollow" target="_blank" title=""&gt;https://www.awesomes.cn/subject/admins&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2016/aca9d5018b0107825384a5aaa2163e29.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Mon, 27 Jun 2016 09:10:09 +0800</pubDate>
      <link>https://ruby-china.org/topics/30371</link>
      <guid>https://ruby-china.org/topics/30371</guid>
    </item>
    <item>
      <title>怪异的跨域 Ajax 请求</title>
      <description>&lt;p&gt;事情是这样的，我们目前的开发模式是前端发请求到后端的 API，而且是跨域的，然后在每个请求中的携带了一些自定义的 header，于是乎就需要在服务端配置 &lt;code&gt;Access-Control-Allow-Headers&lt;/code&gt; 来允许这些自定义 header 的传递。而且在请求每个 API 之前都会发一个 &lt;code&gt;options&lt;/code&gt;请求&lt;/p&gt;

&lt;p&gt;在 chrome 下没有任何问题，然后到了 IE 下，注意是 IE10 和 IE11（下面的版本没测）都报了奇葩的错误&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Access-Control-Allow-Headers 列表中不存在请求标头 x-dp-key
XMLHttpRequest: 网络错误 0x80070005, 拒绝访问。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个确实有点过分，然后我看了一下请求的详情，只有一个 &lt;code&gt;options&lt;/code&gt;请求：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;请求 URL: http://192.168.1.120/openapi/api/1.0/classes/pre_selectable_states?limit=200&amp;amp;where={}&amp;amp;include={}
请求方法: OPTIONS
状态码: 200 / OK
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Request headers: &lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Accept: */*
Accept-Encoding: gzip, deflate
Access-Control-Request-Headers: accept, x-dp-key, x-dp-id
Access-Control-Request-Method: GET
Cache-Control: no-cache
Connection: Keep-Alive
Content-Length: 0
Host: 192.168.1.120
Origin: http://192.168.26.128:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Response headers: &lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Access-Control-Allow-Headers: Origin ,X-Requested-With ,Content-Type ,Accept ,X-DP-Key ,X-DP-ID ,X-DP-Token ,Access-Control-Request-Method
Access-Control-Allow-Methods: GET ,POST ,OPTIONS ,PUT ,PATCH ,DELETE
Access-Control-Allow-Origin: *
Connection: Keep-Alive
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Date: Mon, 16 May 2016 07:05:59 GMT
Keep-Alive: timeout=5, max=100
Server: Apache/2.4.10 (Unix) OpenSSL/1.0.1j PHP/5.6.3 mod_perl/2.0.8-dev Perl/v5.16.3
X-Powered-By: PHP/5.6.3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;很明显，上面的 &lt;code&gt;Access-Control-Allow-Headers&lt;/code&gt; 中已经包含了我要传递的 3 个 header &lt;code&gt;X-DP-Key ,X-DP-ID ,X-DP-Token&lt;/code&gt;，但是 IE 就是给我报这个错误，不知道大家有没有遇到类似的问题。&lt;/p&gt;

&lt;p&gt;我的请求方法是：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$.ajax({
      type: method,
      url: url,
      data: data,
      crossDomain: true,
      headers: {
        "X-DP-Key":  "XXX",
        "X-DP-ID": "XXX",
        "X-DP-Token": Cookies.get('token')
      },
      success: successHandler,
      error: errorHandler
    })
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Mon, 16 May 2016 15:38:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/30028</link>
      <guid>https://ruby-china.org/topics/30028</guid>
    </item>
    <item>
      <title>来看看 GitHub 上排名前 100 的前端项目有哪些</title>
      <description>&lt;p&gt;可以参考一下 &lt;a href="http://top.awesomes.cn" rel="nofollow" target="_blank"&gt;http://top.awesomes.cn&lt;/a&gt; 有热度和趋势的排行，每日更新&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Fri, 13 May 2016 17:55:50 +0800</pubDate>
      <link>https://ruby-china.org/topics/30011</link>
      <guid>https://ruby-china.org/topics/30011</guid>
    </item>
    <item>
      <title>如何实现邮件订阅</title>
      <description>&lt;p&gt;类似 javascript weekly &lt;a href="http://javascriptweekly.com/issues/279" rel="nofollow" target="_blank"&gt;http://javascriptweekly.com/issues/279&lt;/a&gt; 这样的邮件订阅功能是怎么实现的呢？不会是自己每周给用户发邮件吧，那么多用户&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Mon, 18 Apr 2016 20:18:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/29763</link>
      <guid>https://ruby-china.org/topics/29763</guid>
    </item>
    <item>
      <title>�ElasticSearch 服务主动停止</title>
      <description>&lt;p&gt;最近用 elasticsearch 做了一个搜索，是按照这个教程来做的 &lt;a href="http://haoduoshipin.com/v/104" rel="nofollow" target="_blank"&gt;http://haoduoshipin.com/v/104&lt;/a&gt; 。 &lt;/p&gt;

&lt;p&gt;但是遇到一个很奇怪的问题，开始好好的，运行了一会 elasticsearch 服务就自动关闭了，导致搜索页报错 &lt;a href="https://www.awesomes.cn/search?q=%E5%B9%BB%E7%81%AF%E7%89%87" rel="nofollow" target="_blank"&gt;https://www.awesomes.cn/search?q=%E5%B9%BB%E7%81%AF%E7%89%87&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;开始以为是内存问题，但是发现 2G 内存还剩余很多。不知道大家有没有遇到类似的问题。&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Fri, 08 Apr 2016 01:42:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/29625</link>
      <guid>https://ruby-china.org/topics/29625</guid>
    </item>
    <item>
      <title>[已解决] Let's encrypt 更新后仍然无法访问</title>
      <description>&lt;p&gt;不知道为什么，今天证书过期了，然后我又重新注册了一下，告诉我续期成功：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/awesomes.cn/fullchain.pem. Your cert will
   expire on 2016-07-02. To obtain a new version of the certificate &lt;span class="k"&gt;in
   &lt;/span&gt;the future, simply run Let&lt;span class="s1"&gt;'s Encrypt again.
 - If you like Let'&lt;/span&gt;s Encrypt, please consider supporting our work by:

   Donating to ISRG / Let&lt;span class="s1"&gt;'s Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是就是访问不了，有童鞋遇到这种情况吗？是不是有什么缓存之类的。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.awesomes.cn/" rel="nofollow" target="_blank"&gt;https://www.awesomes.cn/&lt;/a&gt;&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Sun, 03 Apr 2016 22:05:37 +0800</pubDate>
      <link>https://ruby-china.org/topics/29534</link>
      <guid>https://ruby-china.org/topics/29534</guid>
    </item>
    <item>
      <title>关于 rvm gemset 的路径问题</title>
      <description>&lt;p&gt;今天遇到一个很蛋疼的问题，当我执行下面的命令：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;which rvm   &lt;span class="c"&gt;#/usr/local/rvm/bin/rvm&lt;/span&gt;
which ruby   &lt;span class="c"&gt;# /usr/local/rvm/rubies/ruby-2.0.0-p643/bin/ruby&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后我执行&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rvm gemset create &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ruby-2.0.0-p643 - #gemset created /root/.rvm/gems/ruby-2.0.0-p643@test
ruby-2.0.0-p643 - #generating test wrappers..............
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;事实上应该生成的是这个路径  &lt;code&gt;/usr/local/rvm/gems/ruby-2.0.0-p643@test&lt;/code&gt;，为什么会跑到 &lt;code&gt;/root/.rvm/gems/&lt;/code&gt; 这个路径下来了呢？&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Wed, 06 Jan 2016 15:45:44 +0800</pubDate>
      <link>https://ruby-china.org/topics/28628</link>
      <guid>https://ruby-china.org/topics/28628</guid>
    </item>
    <item>
      <title>关于 Nginx 的跳转配置</title>
      <description>&lt;p&gt;最近在折腾 https，期间遇到了一些重定向问题（导致某些地址不能访问，百度收录瞬间降了很多），所以在此记录一下。&lt;/p&gt;

&lt;p&gt;其实我最终要实现的是，访问下面中的每个地址都会跳转到 &lt;a href="https://www.awesomes.cn" rel="nofollow" target="_blank"&gt;https://www.awesomes.cn&lt;/a&gt; （后面的子路径就省略了）&lt;/p&gt;

&lt;p&gt;&lt;a href="http://awesomes.cn" rel="nofollow" target="_blank"&gt;http://awesomes.cn&lt;/a&gt;
&lt;a href="http://www.awesomes.cn" rel="nofollow" target="_blank"&gt;http://www.awesomes.cn&lt;/a&gt;
&lt;a href="https://awesomes.cn" rel="nofollow" target="_blank"&gt;https://awesomes.cn&lt;/a&gt;
&lt;a href="https://www.awesomes.cn" rel="nofollow" target="_blank"&gt;https://www.awesomes.cn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;最终的配置如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="o"&gt;....&lt;/span&gt;

   &lt;span class="c1"&gt;#屏蔽IP访问&lt;/span&gt;
    &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;listen&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt; &lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;rewrite&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="p"&gt;(.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="ss"&gt;:/&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;awesomes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cn&lt;/span&gt; &lt;span class="n"&gt;permanent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

   &lt;span class="c1"&gt;#https 配置&lt;/span&gt;
   &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;listen&lt;/span&gt; &lt;span class="mi"&gt;443&lt;/span&gt; &lt;span class="n"&gt;ssl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="n"&gt;ssl_protocols&lt;/span&gt; &lt;span class="no"&gt;TLSv1&lt;/span&gt; &lt;span class="no"&gt;TLSv1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="no"&gt;TLSv1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="n"&gt;server_name&lt;/span&gt;  &lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;awesomes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cn&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="o"&gt;.....&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;#https 跳转&lt;/span&gt;
   &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;listen&lt;/span&gt;  &lt;span class="mi"&gt;443&lt;/span&gt; &lt;span class="n"&gt;ssl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="n"&gt;server_name&lt;/span&gt;    &lt;span class="n"&gt;awesomes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cn&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="n"&gt;rewrite&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="p"&gt;(.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;  &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="ss"&gt;:/&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;awesomes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cn&lt;/span&gt;&lt;span class="vg"&gt;$1&lt;/span&gt; &lt;span class="n"&gt;permanent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

   &lt;span class="c1"&gt;#http 跳转&lt;/span&gt;
  &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;listen&lt;/span&gt;  &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="n"&gt;server_name&lt;/span&gt;    &lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;awesomes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cn&lt;/span&gt;  &lt;span class="n"&gt;awesomes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cn&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="n"&gt;rewrite&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="p"&gt;(.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;  &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="ss"&gt;:/&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;awesomes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cn&lt;/span&gt;&lt;span class="vg"&gt;$1&lt;/span&gt; &lt;span class="n"&gt;permanent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;


   &lt;span class="o"&gt;....&lt;/span&gt;



&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="关于禁止IP访问"&gt;关于禁止 IP 访问&lt;/h3&gt;
&lt;p&gt;其实之前我也知道，默认情况下，IP 是可以访问 Nginx 配置中的第一个 80 server 的（显示声明&lt;code&gt;listen 80 default&lt;/code&gt; 除外）。但是考虑到没啥大问题，用 IP 访问我又咋样呢，对吧。直到今天，同事有多个域名都指向了同一台阿里云服务器，但只是做了域名解析，并没有在配置中做 &lt;code&gt;server_name&lt;/code&gt;  声明，居然也能访问站点。&lt;/p&gt;

&lt;p&gt;奇怪了，找了半天答案，才想到应该是所有域名其实就相当于访问这个 IP，有指定 &lt;code&gt;server_name&lt;/code&gt;  的就访问相应的站点，没有指定的肯定就走默认站点了。&lt;/p&gt;

&lt;p&gt;这导致的后果就是，假如百度没有做 IP 禁止访问的话，那我完全可以在没有限制的条件下把我的域名指向百度的 IP 了。&lt;/p&gt;
&lt;h3 id="关于https的跳转"&gt;关于 https 的跳转&lt;/h3&gt;
&lt;p&gt;上面有一段是 https 跳转，为什么要加这个呢？如果不加的话，&lt;a href="https://awesomes.cn" rel="nofollow" target="_blank"&gt;https://awesomes.cn&lt;/a&gt; 和 &lt;a href="https://www.awesomes.cn" rel="nofollow" target="_blank"&gt;https://www.awesomes.cn&lt;/a&gt; 是两个不同的地址，而处于某些原因，是否应该将其指向一个地址？（这里我不确定该不该这样做，或者该这样做是什么原因，SEO 吗？有知道的同学麻烦提示一下）因为我看了一下，很多知名站点（不包括 Ruby China）是跳到一个地址的：&lt;/p&gt;

&lt;p&gt;百度 *  -&amp;gt; &lt;a href="https://www.baidu.com/" rel="nofollow" target="_blank"&gt;https://www.baidu.com/&lt;/a&gt;
Github * -&amp;gt; &lt;a href="https://github.com/" rel="nofollow" target="_blank"&gt;https://github.com/&lt;/a&gt;
淘宝 *  -&amp;gt; &lt;a href="https://www.taobao.com/" rel="nofollow" target="_blank"&gt;https://www.taobao.com/&lt;/a&gt;
producthunt * -&amp;gt;&lt;a href="https://www.producthunt.com/" rel="nofollow" target="_blank"&gt;https://www.producthunt.com/&lt;/a&gt;&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Tue, 05 Jan 2016 14:06:11 +0800</pubDate>
      <link>https://ruby-china.org/topics/28613</link>
      <guid>https://ruby-china.org/topics/28613</guid>
    </item>
    <item>
      <title>撸了个 Letter avatar</title>
      <description>&lt;p&gt;最近没事，就用 Node 写了个字符头像的服务，可以根据昵称（中英文）来获取一个不同背景色、尺寸和字体的头像。下面是多种字体的效果：&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2016/a8622a12309f9d228a4433941673bec7.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;源码在 &lt;a href="https://github.com/awesomes-cn/svpa" rel="nofollow" target="_blank"&gt;https://github.com/awesomes-cn/svpa&lt;/a&gt;  是基于 koajs 的，感兴趣的同学可以看看（感觉写 Node 真是比 Ruby 痛苦多了啊）。&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Fri, 01 Jan 2016 22:59:51 +0800</pubDate>
      <link>https://ruby-china.org/topics/28586</link>
      <guid>https://ruby-china.org/topics/28586</guid>
    </item>
    <item>
      <title>分享一个利用命令行学习的工具</title>
      <description>&lt;p&gt;发现了一个利用命令行学习的工具 &lt;a href="http://nodeschool.io/zh-cn/" rel="nofollow" target="_blank"&gt;http://nodeschool.io/zh-cn/&lt;/a&gt; 里面有很多教程，还可以发布自己的。mark 一下&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/cfe27b0243ded1d6fa2a49ae67788f79.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/b5182f6d791a2c709b37b64968f5bbc8.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/72ed41bf89a66e55feb28175e5e384ae.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Tue, 22 Dec 2015 11:58:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/28486</link>
      <guid>https://ruby-china.org/topics/28486</guid>
    </item>
    <item>
      <title> 用上 Let's Encrypt  了，记录一下</title>
      <description>&lt;p&gt;今天听说网站使用 https，google 会优先展示，于是就尝试了一下 Let's Encrypt，Mark 一下。&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/letsencrypt/letsencrypt
&lt;span class="nb"&gt;cd &lt;/span&gt;letsencrypt
./letsencrypt-auto certonly &lt;span class="nt"&gt;-d&lt;/span&gt; your.domain.name
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一路一下来，遇到了 &lt;code&gt;urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from&lt;/code&gt; 这个问题&lt;/p&gt;

&lt;p&gt;然后查了一下。好像是文件执行权限问题，然后就 &lt;code&gt;chmod 0777 /&amp;lt;网站目录&amp;gt;/.well-known/acme-challenge&lt;/code&gt; 再次执行，居然就行了。&lt;/p&gt;

&lt;p&gt;最后就是配置 Nginx&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;server &lt;span class="o"&gt;{&lt;/span&gt;
     listen 443 ssl&lt;span class="p"&gt;;&lt;/span&gt;
     ssl_certificate  /etc/letsencrypt/live/www.awesomes.cn/fullchain.pem&lt;span class="p"&gt;;&lt;/span&gt;
     ssl_certificate_key  /etc/letsencrypt/live/www.awesomes.cn/privkey.pem&lt;span class="p"&gt;;&lt;/span&gt;
    ...
    &lt;span class="o"&gt;}&lt;/span&gt;
    server &lt;span class="o"&gt;{&lt;/span&gt;
      listen      80&lt;span class="p"&gt;;&lt;/span&gt;
      server_name    www.awesomes.cn,awesomes.cn&lt;span class="p"&gt;;&lt;/span&gt;
      rewrite ^&lt;span class="o"&gt;(&lt;/span&gt;.&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nv"&gt;$ &lt;/span&gt; https://&lt;span class="nv"&gt;$host$1&lt;/span&gt; permanent&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="o"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;OK 了，现在访问 www.awesomes.cn 就可以自动跳到 https 页面了&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Sun, 20 Dec 2015 23:39:29 +0800</pubDate>
      <link>https://ruby-china.org/topics/28471</link>
      <guid>https://ruby-china.org/topics/28471</guid>
    </item>
    <item>
      <title>中字全集：奥巴马挑战《荒野求生》</title>
      <description>&lt;p&gt;等了这么久终于出来了，&lt;a href="http://video.sina.com.cn/p/news/w/v/2015-12-19/000865154745.html" rel="nofollow" target="_blank"&gt;http://video.sina.com.cn/p/news/w/v/2015-12-19/000865154745.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;（会被删不？）&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/242e5dd20b6c6d9634762d9eecf13ac1.jpg" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Sat, 19 Dec 2015 12:27:57 +0800</pubDate>
      <link>https://ruby-china.org/topics/28461</link>
      <guid>https://ruby-china.org/topics/28461</guid>
    </item>
    <item>
      <title>[已解决] 关于 Node 包内部文件路径的问题</title>
      <description>&lt;p&gt;是这样的，我写了一个 Node 命令行工具，在我的包中有一个文件夹&lt;code&gt;struct&lt;/code&gt;，我想在执行命令的时候把这个文件夹复制到目标项目中。所以我这样写&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;copyAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./struct&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;当前目录&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;本地测试是没问题的，但当我发布后，就被告知找不到  &lt;code&gt;struct&lt;/code&gt; 文件夹了，其实也好理解，因为在其它目录下执行这样一个全局命令肯定是找不到这个文件夹的，实际上它也许跑到 &lt;code&gt;:/usr/local/lib/node_modules/包名&lt;/code&gt; 下面去了。&lt;/p&gt;

&lt;p&gt;不知道 Node 有没有提供这样一个方法来获取包中的某个文件在用户机器上的实际路径呢。&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Wed, 16 Dec 2015 21:44:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/28417</link>
      <guid>https://ruby-china.org/topics/28417</guid>
    </item>
    <item>
      <title>Nodejs 文件不执行</title>
      <description>&lt;p&gt;我的 Nodejs 环境是&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;which node
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出 &lt;code&gt;/usr/local/bin/node&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;然后我创建了一个 &lt;code&gt;index.js&lt;/code&gt; 文件&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cp"&gt;#!/usr/local/bin node
&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x index.js

./index.js
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是并没有像我期待的那样打出 hello 来，直接过去了，没输出任何信息，也没报错，但是我看很多文章上面写的都能输出信息。&lt;/p&gt;

&lt;p&gt;有遇到过这个问题的同学吗？&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Sun, 13 Dec 2015 23:45:50 +0800</pubDate>
      <link>https://ruby-china.org/topics/28374</link>
      <guid>https://ruby-china.org/topics/28374</guid>
    </item>
    <item>
      <title>[已解决] 关于 gulp 的依赖问题</title>
      <description>&lt;p&gt;我建了如下的一个 &lt;code&gt;gulpfile.js&lt;/code&gt; 文件&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;...&lt;/span&gt;

&lt;span class="nx"&gt;gulp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;task&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;styles&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
  &lt;span class="nx"&gt;gulp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;src&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./src/sass/*.scss&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pipe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;sass&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pipe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;autoprefixer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;last 2 version&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pipe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;concat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tmp.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pipe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gulp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./build/css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pipe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;notify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Styles task complete&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="nx"&gt;gulp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;task&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;styles&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cb&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
  &lt;span class="nf"&gt;del&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./build/css/tmp.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="nx"&gt;cb&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="p"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上面的意思是在执行&lt;code&gt;css&lt;/code&gt;任务之前先执行 &lt;code&gt;styles&lt;/code&gt; 任务。 &lt;code&gt;styles&lt;/code&gt; 任务是生成 &lt;code&gt;./build/css/tmp.css&lt;/code&gt; 文件，而  &lt;code&gt;css&lt;/code&gt; 任务则是删除该文件。按道理说最终应该是没有这个文件的。&lt;/p&gt;

&lt;p&gt;但事实上这个文件仍然存在了，也就是说并没有保证在执行 &lt;code&gt;css&lt;/code&gt; 之前已经执行完了 &lt;code&gt;styles&lt;/code&gt; 。为什么会这样呢？&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Fri, 04 Dec 2015 01:11:06 +0800</pubDate>
      <link>https://ruby-china.org/topics/28271</link>
      <guid>https://ruby-china.org/topics/28271</guid>
    </item>
    <item>
      <title>Rails 的 ENV 到底在 哪儿</title>
      <description>&lt;p&gt;这篇文章 &lt;a href="http://railsapps.github.io/rails-environment-variables.html" rel="nofollow" target="_blank"&gt;http://railsapps.github.io/rails-environment-variables.html&lt;/a&gt; 讲解了如何在 Rails 中 设置环境变量，不管采用哪种方式都没问题&lt;/p&gt;

&lt;p&gt;在程序中访问&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"VAR"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;是没有任何问题的。&lt;/p&gt;

&lt;p&gt;但是问题来了，当我尝试在 shell 中访问 &lt;code&gt;echo $VAR&lt;/code&gt; 时就返回空了。可见这并非是持久化在系统的环境变量中了，和系统本身的环境变量还是有区别。那么它到底存放在哪儿了呢？&lt;/p&gt;

&lt;p&gt;为什么会问这个问题，我想在 Node.js 中访问同一份环境变量，所以我希望在系统中能够真实存在。&lt;/p&gt;</description>
      <author>hxh1246996371</author>
      <pubDate>Thu, 26 Nov 2015 14:14:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/28201</link>
      <guid>https://ruby-china.org/topics/28201</guid>
    </item>
  </channel>
</rss>
