<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>crayon (蜡笔)</title>
    <link>https://ruby-china.org/crayon</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>[广州] BestApp 招聘有经验的 Rails 工程师 (8k-15k)</title>
      <description>&lt;h2 id="关于BestApp"&gt;关于 BestApp&lt;/h2&gt;
&lt;p&gt;BestApp 工作室成立于 2012 年，一直专注于移动互联网产品设计、开发及用户运营，曾为众多知名企业提供专业高效的线上解决方案和技术支持，是广州领先的移动互联网开发商和服务商。同时，我们内部也曾孵化出去多个创业团队，在票务娱乐、车联网、穿戴设备、聚合支付、旅游住宿、美食、健康等领域均有涉猎，积累了丰富的相关经验和技术知识，为珠三角培养了大批相关行业的优秀移动互联网人才。目前外包业务，专注于酒店、航空、旅游领域，产品形态有 App、微信公众号、小程序等。依托于服务酒店行业的多年经验，已拓展了新的酒店行业大数据产品线。&lt;/p&gt;
&lt;h2 id="职位要求"&gt;职位要求&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;至少 1 年以上的 Rails 开发经验&lt;/li&gt;
&lt;li&gt;熟悉关系型及非关系型数据库：Redis, MongoDB, PostgreSQL, MySQL 等;&lt;/li&gt;
&lt;li&gt;熟悉 Linux 环境、能独立部署项目&lt;/li&gt;
&lt;li&gt;熟悉使用 Git 版本管理工具&lt;/li&gt;
&lt;li&gt;熟悉 HTML, CSS, Javascript，能独立完成基本的前端页面&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;拥有 Hadoop、Hbase 等大数据的存储经验&lt;/li&gt;
&lt;li&gt;拥有前端框架的开发经验，如 Vue、React&lt;/li&gt;
&lt;li&gt;拥有爬虫经验&lt;/li&gt;
&lt;li&gt;有 github 账号/技术博客&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="福利待遇"&gt;福利待遇&lt;/h2&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;h2 id="联系信息"&gt;联系信息&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;公司地址：广州市海珠区新港东路 2433 号启盛会展产业园 110&lt;/li&gt;
&lt;li&gt;我们在上海有分部，同样接受投递。上海地址：徐汇区 漕宝路 124 号 &lt;/li&gt;
&lt;li&gt;简历投递邮箱：hi@bestapp.us&lt;/li&gt;
&lt;li&gt;简历砸来吧！&lt;img title=":grinning:" alt="😀" src="https://twemoji.ruby-china.com/2/svg/1f600.svg" class="twemoji"&gt; &lt;/li&gt;
&lt;/ul&gt;</description>
      <author>crayon</author>
      <pubDate>Mon, 22 Apr 2019 10:58:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/38435</link>
      <guid>https://ruby-china.org/topics/38435</guid>
    </item>
    <item>
      <title>[广州 / 上海] BestApp 招聘有经验的 Rails 工程师 (8k-15k)</title>
      <description>&lt;h2 id="关于BestApp"&gt;关于 BestApp&lt;/h2&gt;
&lt;p&gt;BestApp 工作室成立于 2012 年，一直专注于移动互联网产品设计、开发及用户运营，曾为众多知名企业提供专业高效的线上解决方案和技术支持，是广州领先的移动互联网开发商和服务商。同时，我们内部也曾孵化出去多个创业团队，在票务娱乐、车联网、穿戴设备、聚合支付、旅游住宿、美食、健康等领域均有涉猎，积累了丰富的相关经验和技术知识，为珠三角培养了大批相关行业的优秀移动互联网人才。目前外包业务，专注于酒店航空领域，产品形态有 App、微信公众号、小程序等。依托于服务酒店行业的多年经验，已拓展了新的酒店行业大数据产品线。&lt;/p&gt;
&lt;h2 id="职位要求"&gt;职位要求&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;至少 1 年以上的 Rails 开发经验&lt;/li&gt;
&lt;li&gt;熟悉关系型及非关系型数据库：Redis, MongoDB, PostgreSQL, MySQL 等;&lt;/li&gt;
&lt;li&gt;熟悉 Linux 环境、能独立部署项目&lt;/li&gt;
&lt;li&gt;熟悉使用 Git 版本管理工具&lt;/li&gt;
&lt;li&gt;熟悉 HTML, CSS, Javascript，能独立完成基本的前端页面&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;拥有 Hadoop、Hbase 等大数据的存储经验&lt;/li&gt;
&lt;li&gt;拥有前端框架的开发经验，如 Vue、React&lt;/li&gt;
&lt;li&gt;拥有爬虫经验&lt;/li&gt;
&lt;li&gt;有 github 账号/技术博客&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="福利待遇"&gt;福利待遇&lt;/h2&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;h2 id="联系信息"&gt;联系信息&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;公司地址：广州市海珠区新港东路 2433 号启盛会展产业园 110&lt;/li&gt;
&lt;li&gt;上海地址：徐汇区 漕宝路 124 号 &lt;/li&gt;
&lt;li&gt;简历投递邮箱：hi@bestapp.us&lt;/li&gt;
&lt;li&gt;简历砸来吧，广州/上海两地都可以！&lt;img title=":smiling_imp:" alt="😈" src="https://twemoji.ruby-china.com/2/svg/1f608.svg" class="twemoji"&gt; &lt;/li&gt;
&lt;/ul&gt;</description>
      <author>crayon</author>
      <pubDate>Wed, 21 Mar 2018 18:03:14 +0800</pubDate>
      <link>https://ruby-china.org/topics/35283</link>
      <guid>https://ruby-china.org/topics/35283</guid>
    </item>
    <item>
      <title>动态 CDN+ 负载均衡网络条件下，Rails 获取用户真实 IP 的问题</title>
      <description>&lt;h4 id="背景"&gt;背景&lt;/h4&gt;
&lt;p&gt;有人刷登录、注册、短信等接口，而且量还比较大，需要根据 IP，进行访问次数的限制。在没有 CDN 的情况下，获取用户 IP 还比较好办，有了动态 CDN，获取到的就基本都是 CDN 统一出口的 IP 了。这时候根据 IP 进行访问次数限制，就非常容易造成误伤。&lt;/p&gt;
&lt;h4 id="Rails获取用户IP"&gt;Rails 获取用户 IP&lt;/h4&gt;
&lt;p&gt;大部分情况下，以下两行代码就够用了：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ip&lt;/span&gt;
&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;remote_ip&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;request.ip，这个很多情况下可能会取到内网 IP，要看服务器机房的网络架构，但 request.remote_ip 肯定就能取到外网 IP 了。内网 IP 和外网 IP，大家一眼就能看出来，各取所需就行。&lt;/p&gt;
&lt;h4 id="3种由简入繁的网络请求情况"&gt;3 种由简入繁的网络请求情况&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;无 CDN 无负载均衡&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2016/1006d486cfc994009dc2ed4de975c2a3.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;这种情况最好办，request.ip 就拿到外网 IP 了；&lt;/p&gt;

&lt;p&gt;如果拿不到，用 request.remote_ip，我就用这个&lt;img title=":sweat_smile:" alt="😅" src="https://twemoji.ruby-china.com/2/svg/1f605.svg" class="twemoji"&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;无 CDN 有负载均衡&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2016/bc1a7db1ef1fd1b20bdf0de2b521cca3.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;这种情况，你就安心的用 request.remote_ip 吧&lt;img title=":laughing:" alt="😆" src="https://twemoji.ruby-china.com/2/svg/1f606.svg" class="twemoji"&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;有 CDN 有负载均衡&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2016/ff40ab298111cc9749448f00c892d6c5.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;这种情况，request.remote_ip 获取到的是 CDN 的 IP，不是用户的&lt;img title=":triumph:" alt="😤" src="https://twemoji.ruby-china.com/2/svg/1f624.svg" class="twemoji"&gt;&lt;/p&gt;
&lt;h4 id="我的项目部署情况"&gt;我的项目部署情况&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Ruby 2.3.0&lt;/li&gt;
&lt;li&gt;Rails 4.2.5&lt;/li&gt;
&lt;li&gt;nginx 1.8.1&lt;/li&gt;
&lt;li&gt;Phusion Passenger 5.0.26&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="用户真实IP在哪里？"&gt;用户真实 IP 在哪里？&lt;/h4&gt;
&lt;p&gt;我的 CDN 服务提供商，把用户真实 IP 放在下面这个请求头里：&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;Headers['Cdn-Src-Ip']&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;问一下自己的 CDN 服务提供商，或者用抓包工具抓一下，就可以确认了。请求头里没有的情况，我没遇到，暂时不知道如何解决，大家轻拍...&lt;img title=":cry:" alt="😢" src="https://twemoji.ruby-china.com/2/svg/1f622.svg" class="twemoji"&gt;&lt;/p&gt;
&lt;h4 id="nginx里的处理"&gt;nginx 里的处理&lt;/h4&gt;
&lt;p&gt;首先，我们要确认一下，nginx 里到底有没有这个东西？打印出来看看&lt;img title=":sunglasses:" alt="😎" src="https://twemoji.ruby-china.com/2/svg/1f60e.svg" class="twemoji"&gt;&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;sudo vi /etc/nginx/nginx.conf&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 log_format 里，添加以下变量：&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;$http_cdn_src_ip&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后，保存配置，重启 nginx，去 access.log 里面看看是否打印出来了&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;tail -100f /var/log/nginx/access.log |more&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;nginx 里，是有用户的真实 IP 了；但是，Rails 里是没有 headers['Cdn-Src-Ip'] 的，想办法传过去！&lt;/p&gt;

&lt;p&gt;Google 出来的，基本都是用这个方法：&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;proxy_set_header&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;看了好多国内外文章，经历过了 N 次配置和重启，都无效，真是想死的心都有，在线上生产环境，每次都要配好多台服务器......&lt;img title=":joy_cat:" alt="😹" src="https://twemoji.ruby-china.com/2/svg/1f639.svg" class="twemoji"&gt; &lt;/p&gt;

&lt;p&gt;后来，在 Passenger 旧版的官方文档里，发现了相关的东西，然后又找到了新版的文档，终于解决！&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passenger 5 设置额外 headers 的方法&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;passenger_set_header&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;nginx 配置文件里，参考设置如下：&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;server {&lt;/span&gt;
    &lt;span class="s"&gt;listen 80;&lt;/span&gt;
    &lt;span class="s"&gt;server_name  192.168.0.xxx;&lt;/span&gt;
    &lt;span class="s"&gt;root /www/project-name/production/current/public;&lt;/span&gt;
    &lt;span class="s"&gt;rails_env production;&lt;/span&gt;
    &lt;span class="s"&gt;passenger_enabled on;&lt;/span&gt;
    &lt;span class="s"&gt;passenger_set_header X-Real-IP $http_cdn_src_ip;&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;保存设置，重启 nginx，去 Rails 里看看去！&lt;/p&gt;
&lt;h4 id="Rails里的处理"&gt;Rails 里的处理&lt;/h4&gt;
&lt;p&gt;因为我设置了：&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;passenger_set_header X-Real-IP $http_cdn_src_ip;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;所以，我在 Rails 里是这么取的：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'X-Real-IP'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;现在，总算是拿到用户的真实 IP 了！&lt;img title=":clap:" alt="👏" src="https://twemoji.ruby-china.com/2/svg/1f44f.svg" class="twemoji"&gt;&lt;/p&gt;

&lt;p&gt;这个问题，搞了挺久，分享出来，希望以后的人，少走弯路。有其他解决方法的，也欢迎分享出来！&lt;/p&gt;</description>
      <author>crayon</author>
      <pubDate>Wed, 16 Nov 2016 02:24:09 +0800</pubDate>
      <link>https://ruby-china.org/topics/31608</link>
      <guid>https://ruby-china.org/topics/31608</guid>
    </item>
    <item>
      <title>[广州] BestApp 招聘 Rails 开发工程师 (同时收 Ruby 和 iOS 实习生)</title>
      <description>&lt;p&gt;&lt;strong&gt;公司简介&lt;/strong&gt;
&lt;a href="http://www.bestapp.us/" rel="nofollow" target="_blank" title=""&gt;BestApp&lt;/a&gt; 成立于 2012 年，是一家专注于移动互联网产品设计和开发的公司，已从最初的 5 人发展到现在的 100 多人，旗下拥有&lt;a href="http://www.dan-che.com/" rel="nofollow" target="_blank" title=""&gt;单车电影&lt;/a&gt; 、&lt;a href="http://www.yeye.so/" rel="nofollow" target="_blank" title=""&gt;夜夜&lt;/a&gt;、客如归、&lt;a href="http://www.glassx.cn/" rel="nofollow" target="_blank" title=""&gt;GlassX&lt;/a&gt; 等多个独立产品团队。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BestApp 为高质量大客户服务&lt;/strong&gt;
合作过的客户有中国电信、如家酒店集团、宝洁、欧普照明等。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BestApp 追求小而美的公司结构&lt;/strong&gt;
目前已孵化了电影、美食、客栈旅行和 Google Glass 及智能硬件相关的多个团队。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BestApp 是一家有理想的公司&lt;/strong&gt;
我们利用『20%』业余时间研发的关注空气质量的产品 &lt;a href="http://www.pm25.in/" rel="nofollow" target="_blank" title=""&gt;PM25.in&lt;/a&gt;，上线之初就受到 &lt;a href="http://www.36kr.com/p/201895.html" rel="nofollow" target="_blank" title=""&gt;36Kr&lt;/a&gt; 关注。目前已是全国最大的空气质量数据开放平台，为国内各大互联网公司及其他个人开发者提供服务。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BestApp 有你喜欢的圈子&lt;/strong&gt;
如果你是技术宅，Ruby、Node.js、Python、Go、iOS、Android 你都能找到圈子；若你喜欢运动，每周的篮球、羽毛球少不了，跑步、骑行、旅游、夏天还有游泳 (美女同事组织哦)；二次元，乐高、模型、摇滚……各种兴趣爱好的都有，德州扑克不定期举行。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;公司地址&lt;/strong&gt;
广州市 海珠区 新港东路 2433 号 启盛会展产业园 115（黄埔村牌坊对面），近黄埔古港，吃货有福了！&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;公司照片&lt;/strong&gt;
&lt;img src="https://l.ruby-china.com/photo/2015/c528da7fbc8920ae1b02e4248d43572a.jpg" title="" alt=""&gt;
正门&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/d8bbdf0e33629413abf8b7823a71963e.jpg" title="" alt=""&gt;
办公区&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/bada02327fdba83ee71458701f24432a.jpg" title="" alt=""&gt;
休息区，可看电视和玩游戏&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/036b10d2953a8c22c4f2df8c4f7a4919.jpg" title="" alt=""&gt;
书架，有各类技术书籍，购买新的还可以报销&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/4c2ca4904142f0e9240a860581d97907.jpg" title="" alt=""&gt;
来一局桌球？&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/1a6ef7cb9a40543355f6a665b0e9378a.jpg" title="" alt=""&gt;
比一下飞镖？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;招聘要求&lt;/strong&gt;
薪资范围:6-10K&lt;/p&gt;

&lt;p&gt;基本要求&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Rails 开发经验&lt;/li&gt;
&lt;li&gt;熟悉 HTML CSS JavaScript jQuery 等&lt;/li&gt;
&lt;li&gt;熟悉 git&lt;/li&gt;
&lt;li&gt;熟悉 Linux&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;加分项&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;有独立技术博客&lt;/li&gt;
&lt;li&gt;有 github 账号&lt;/li&gt;
&lt;li&gt;有参与开源项目并贡献过代码&lt;/li&gt;
&lt;li&gt;熟悉 SASS 和 CoffeeScript&lt;/li&gt;
&lt;li&gt;熟悉前端 MVC 框架，如 Ember.js、Angular.js 等&lt;/li&gt;
&lt;li&gt;有独立部署 web 应用经验&lt;/li&gt;
&lt;li&gt;有基于微信开发经验&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;工作方向&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;酒店行业移动端产品线，APP 端与微信端&lt;/li&gt;
&lt;li&gt;跨国大型连锁机构移动端产品等&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;以上职位，也欢迎应届实习生投递。
同时招收 iOS 实习生。
我们会的不多，但愿意倾囊相授！&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;简历投递邮箱&lt;/strong&gt;: hi@bestapp.us&lt;/p&gt;

&lt;p&gt;过往招聘：&lt;a href="https://ruby-china.org/topics/8101" title=""&gt;帖一&lt;/a&gt;、&lt;a href="https://ruby-china.org/topics/15330" title=""&gt;帖二&lt;/a&gt;、&lt;a href="https://ruby-china.org/topics/17449" title=""&gt;帖三&lt;/a&gt;&lt;/p&gt;</description>
      <author>crayon</author>
      <pubDate>Sat, 28 Feb 2015 17:10:28 +0800</pubDate>
      <link>https://ruby-china.org/topics/24395</link>
      <guid>https://ruby-china.org/topics/24395</guid>
    </item>
  </channel>
</rss>
