<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>winterwhisper (winterwhisper)</title>
    <link>https://ruby-china.org/winterwhisper</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>[成都] 每日经济新闻报社云网客事业部招聘 Ruby 后端工程师</title>
      <description>&lt;h2 id="关于我们"&gt;关于我们&lt;/h2&gt;
&lt;p&gt;《每日经济新闻》是由国家新闻出版总署批准成立，是中国首份专注于公司新闻和投资理财资讯的都市财经日报，面向全国发行。&lt;/p&gt;

&lt;p&gt;我们是云网客事业部，云网客是一个主要面向中小型企业，利用现有新媒体资源，帮助企业实现快速推广的产品。因为业务快速发展，诚邀各位加入我们。&lt;/p&gt;
&lt;h2 id="职位描述"&gt;职位描述&lt;/h2&gt;
&lt;p&gt;目前我们招 Ruby 工程师初、中级各 1 名，负责公司现有产品及新产品的研发维护，要求如下：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;熟悉 Ruby 语言，及 Ruby on Rails 框架&lt;/li&gt;
&lt;li&gt;熟悉类 Unix 系统的基本操作及常用命令，熟悉 git 的使用&lt;/li&gt;
&lt;li&gt;良好的编程习惯，追求优雅的代码，了解常见的编程最佳实践&lt;/li&gt;
&lt;li&gt;良好的英文阅读能力&lt;/li&gt;
&lt;li&gt;大学本科及以上学历&lt;/li&gt;
&lt;li&gt;中级岗位 2 年以上互联网项目开发经验，初级岗位并不强制要求工作经验，只要了解 Ruby 或者 Rails 即可，当然有工作经验优先 :-)&lt;/li&gt;
&lt;li&gt;熟悉前端相关知识（加分项）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;但其实我们更注重以下几点：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;发自内心对技术的狂热和执着，善于学习，乐于分享&lt;/li&gt;
&lt;li&gt;为人靠谱，诚实，勇于担当&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="福利待遇"&gt;福利待遇&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;月薪税前初级 4-6k，中级 8-10k，有年终&lt;/li&gt;
&lt;li&gt;六险一金，公积金按成都最高标准 12% 缴存&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;blockquote&gt;
&lt;p&gt;虽然我们不提供 MacBook，但我们使用 Mac mini 办公，且提供双屏&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="工作地点"&gt;工作地点&lt;/h2&gt;
&lt;p&gt;成都市锦江区书院西街 1 号亚太大厦 6 楼（邻近 2 号线春熙路站，3、4 号线市二医院站）&lt;/p&gt;
&lt;h2 id="联系方式"&gt;联系方式&lt;/h2&gt;
&lt;p&gt;简历请发至 winterwhisper.dev@gmail.com&lt;/p&gt;

&lt;p&gt;第一次发招聘帖，如有不对的地方望各位见谅，请大家多多支持，谢谢。 &lt;img title=":smile:" alt="😄" src="https://twemoji.ruby-china.com/2/svg/1f604.svg" class="twemoji"&gt; &lt;img title=":smile:" alt="😄" src="https://twemoji.ruby-china.com/2/svg/1f604.svg" class="twemoji"&gt; &lt;img title=":smile:" alt="😄" src="https://twemoji.ruby-china.com/2/svg/1f604.svg" class="twemoji"&gt; &lt;/p&gt;</description>
      <author>winterwhisper</author>
      <pubDate>Mon, 06 Mar 2017 16:54:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/32462</link>
      <guid>https://ruby-china.org/topics/32462</guid>
    </item>
    <item>
      <title>Nginx 反向代理回来会将 etag、last_modified header 删除</title>
      <description>&lt;p&gt;已知 nginx 1.7.3 以下的版本会在 gzip 的过程中 remove 掉 etag，已经将 nginx 升级到 1.8.0，rails 后端返回的也是 weak etag。&lt;/p&gt;

&lt;p&gt;用浏览器访问（get 请求）观察 nginx debug 日志发现如下&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy status 200 "200 OK "
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Etag: W/"89a9be4e07c81409d305591384a34d8f""
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Last-Modified: Thu, 19 Nov 2015 02:37:54 GMT"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Content-Type: text/html; charset=utf-8"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Cache-Control: max-age=0, private, must-revalidate"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "X-Ua-Compatible: IE=Edge"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "X-Request-Id: b84d7a6314f2010e93e0d01684ec8bf5"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "X-Runtime: 0.048106"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Server: WEBrick/1.3.1 (Ruby/2.0.0/2014-10-27)"
2015/11/20 11:54:43 [debug] 16796#0: *573 posix_memalign: 00007FC78105FE00:4096 @16
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Date: Fri, 20 Nov 2015 03:54:43 GMT"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Content-Length: 9756"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Connection: close"
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上面是 webrick 返回给 nginx 的，然后 nginx 返回给 client 的就变成&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Server: nginx/1.8.0^M
Date: Fri, 20 Nov 2015 03:54:43 GMT^M
Content-Type: text/html; charset=utf-8^M
Transfer-Encoding: chunked^M
Connection: keep-alive^M
Cache-Control: max-age=0, private, must-revalidate^M
X-Ua-Compatible: IE=Edge^M
X-Request-Id: b84d7a6314f2010e93e0d01684ec8bf5^M
X-Runtime: 0.048106
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但用 curl 发一个 head 请求发现没有问题，存在 etag 和 last_modified&lt;/p&gt;

&lt;p&gt;感觉像是 nginx 在 webrick 返回过来的途中把 etag、Last-Modified 给 drop 掉了，求问各位有没有碰到过类似情况。&lt;/p&gt;</description>
      <author>winterwhisper</author>
      <pubDate>Fri, 20 Nov 2015 11:58:44 +0800</pubDate>
      <link>https://ruby-china.org/topics/28126</link>
      <guid>https://ruby-china.org/topics/28126</guid>
    </item>
    <item>
      <title>请教下一般这种情况下大家会如何组织代码</title>
      <description>&lt;p&gt;假设系统有三种角色的用户（甚至更多），分别是 Foo、Bar、Baz，系统有 Post 模型，三种角色都要对 Post 数据进行 CRUD 处理，相同动作（例如 index）相互之间展示的样式也不同&lt;/p&gt;

&lt;p&gt;我能想到的组织代码的方法有两种&lt;/p&gt;

&lt;p&gt;第一种，创建一个&lt;code&gt;posts_controller&lt;/code&gt;如下&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# posts_controller.rb&lt;/span&gt;
&lt;span class="c1"&gt;# ...&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;index&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;is_foo?&lt;/span&gt;
    &lt;span class="n"&gt;get_posts_for_foo&lt;/span&gt;
    &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="n"&gt;foo_posts&lt;/span&gt;
  &lt;span class="k"&gt;elsif&lt;/span&gt; &lt;span class="n"&gt;is_bar?&lt;/span&gt;
    &lt;span class="n"&gt;get_posts_for_bar&lt;/span&gt;
    &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="n"&gt;bar_posts&lt;/span&gt;
  &lt;span class="k"&gt;elsif&lt;/span&gt; &lt;span class="n"&gt;is_baz?&lt;/span&gt;
    &lt;span class="n"&gt;get_posts_for_baz&lt;/span&gt;
    &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="n"&gt;baz_posts&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="c1"&gt;# ...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;第二种，如下树形结构为每个角色创建单独的&lt;code&gt;posts_controller.rb&lt;/code&gt;，然后再在其对应的 controller 中维护单独的逻辑&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;controllers
  |
  foo
    |
    posts_controller.rb
  |
  bar
    |
    posts_controller.rb
  |
  baz
    |
    posts_controller.rb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;第一种方法，逻辑一旦复杂，角色一多的话，即使把该封装的语句封装成方法，action 的代码也会越来越多；第二种方法又会出现很多 DRY&lt;/p&gt;

&lt;p&gt;所以想请教下大家，觉得这两种方法哪种更好，还是有更好的方法？&lt;/p&gt;</description>
      <author>winterwhisper</author>
      <pubDate>Wed, 02 Sep 2015 14:57:44 +0800</pubDate>
      <link>https://ruby-china.org/topics/27166</link>
      <guid>https://ruby-china.org/topics/27166</guid>
    </item>
    <item>
      <title>[已解决] 进 resque-web 报 undefined method `workers' for Resque:Module</title>
      <description>&lt;p&gt;按 github 上在中写了&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;##### routes.rb&lt;/span&gt;
&lt;span class="n"&gt;mount&lt;/span&gt; &lt;span class="no"&gt;ResqueWeb&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Engine&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"/resque_web"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但进 web 的时候报&lt;/p&gt;

&lt;p&gt;&lt;code&gt;undefined method ‘workers’ for Resque:Module&lt;/code&gt;&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;##### workersresque-web (0.0.2) app/helpers/resque_web/working_helper.rb&lt;/span&gt;
&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;ResqueWeb&lt;/span&gt;
  &lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;WorkingHelper&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;workers&lt;/span&gt;
      &lt;span class="vi"&gt;@workers&lt;/span&gt; &lt;span class="o"&gt;||=&lt;/span&gt; &lt;span class="no"&gt;Resque&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;workers&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;jobs&lt;/span&gt;
      &lt;span class="vi"&gt;@jobs&lt;/span&gt; &lt;span class="o"&gt;||=&lt;/span&gt; &lt;span class="n"&gt;workers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="ss"&gt;:job&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;求问各位有没有遇到过相同的问题&lt;/p&gt;</description>
      <author>winterwhisper</author>
      <pubDate>Mon, 23 Sep 2013 18:04:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/14325</link>
      <guid>https://ruby-china.org/topics/14325</guid>
    </item>
  </channel>
</rss>
