<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>alanlong (alanlong)</title>
    <link>https://ruby-china.org/alanlong</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>[微软内推] 北京上海苏州无锡 大量职位招人，hc 多多！！！</title>
      <description>&lt;p&gt;公司现在有大量职位招人（软件开发工程师，硬件工程师 [服务器整体性能方面的验证和 driver 方向]，技术支持工程师，项目经理，架构师等）不同级别都有，不同技术都需要（C#, Java, Linux, SQL, 前端，Azure, Python 等），工作地点有在北京、上海、苏州、无锡、广州！欢迎中英文简历丢过来或者咨询！
社招内推 (微软校招有专门的渠道)，要求一年及以上工作经验。&lt;/p&gt;

&lt;p&gt;如果你厌烦了现在的 996，如果你不再想修福报，如果你想 work life balance，拥有更多自己的时间，去看书、打球，去徒步、旅行，去追求诗与远方，请将简历发送到 julong@microsoft.com.&lt;/p&gt;

&lt;p&gt;对于内推候选人，我会帮你跟 hr 沟通选择最 match 的职位，面试准备以及后续流程也会实时跟进帮你分析面试结果，直到您入职。&lt;/p&gt;

&lt;p&gt;您也可以通过下面的链接搜索合适的岗位，然后把岗位、您的相关信息以及简历发送给我。
&lt;a href="https://careers.microsoft.com/us/en" rel="nofollow" target="_blank"&gt;https://careers.microsoft.com/us/en&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;微软这个公司就不用多介绍了，互联网 996 大家都知道吧，微软在 955.WLB repo 稳居前三（堪称 IT 界的养老院），不敢说微软不加班。这事具体还是看组看团队。不过确实加班的人很少，有些还是因为跨国团队协作的原因。&lt;/p&gt;

&lt;p&gt;福利待遇：&lt;/p&gt;

&lt;p&gt;• 15 天全薪年假，15 天全薪病假，家人看护假 4 周，产假 20 周，陪产假 6 周，志愿者假 3 天......&lt;/p&gt;

&lt;p&gt;• 五险一金＋补充医疗保险＋补充公积金＋免费洗牙 1 次/年&lt;/p&gt;

&lt;p&gt;• 茶水间各式饮料牛奶酸奶咖啡小吃不限量免费供应，每天会有两波水果，都是阿姨帮忙剥好皮或洗好了，直接吃。每周三提供甜品&lt;/p&gt;

&lt;p&gt;• 一流的工作环境：surface 顶配电脑，两台高清显示器，高性能台式机&lt;/p&gt;

&lt;p&gt;• 一流的休闲环境：园区内有健身房，定期举办各种健身课瑜伽课格斗课等；有足球场/ 篮球场 / 网球场；游戏室有街机厅，K 歌房、跳舞机，台球、乒乓球、xbox&lt;/p&gt;

&lt;p&gt;• 厚道的 955，真正的 work life balance。如果有工作需要节假日加班是按照劳动法 2 倍或 3 倍工资&lt;/p&gt;

&lt;p&gt;• 健身补贴 1800 元/年。&lt;/p&gt;

&lt;p&gt;• 教育费用 3300 元/年。&lt;/p&gt;

&lt;p&gt;• ......&lt;/p&gt;</description>
      <author>alanlong</author>
      <pubDate>Sat, 14 Dec 2019 20:30:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/39336</link>
      <guid>https://ruby-china.org/topics/39336</guid>
    </item>
    <item>
      <title>Apache benchmark 测试并发情况下的缓存使用情况，感觉缓存的应用并没有起到多大作用</title>
      <description>&lt;p&gt;采用的是 redis 服务器作为缓存服务器，今天做了对比实验，一组采用了 fragment cache 缓存，一组没有做缓存。用 Apache benchmark 做的并发测试。
服务器的配置：内存：8G; 
                                CPU : 双核;
                                系统：CentOS;
            测试机：Windows 7;
采用的是内网测试，网络延时基本不会存在。
下表是得出的数据
&lt;img src="https://l.ruby-china.com/photo/2015/fc72c56ce8bdcdd223a5280c52caf9ae.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;然后在往上测并发 1000+ 的时候就不行了。就这些数据分析，感觉缓存的作用并不是很大。
按照正常的思路，采用缓存之后，每次加载页面都是直接从 redis 服务器的内存中读取的。
那么，当并发数大了之后，应该会明显感觉速度比不使用缓存时的速度快很多才是的 ( ⊙ o ⊙ )！
为什么会出现这种情况呢？是并发数太少，还是本身页面缓存的作用就不是很大？求大神帮忙解释下呗╮(╯_╰)╭
PS: 本地单机测试，不使用缓存加载时间平均时间大概在 400-600ms 之间；使用缓存的情况下，项目首页的加载时间平均在 200-250ms 之间。
使用缓存后页面加载的时间比不使用的情况下快了 200-300ms。&lt;/p&gt;</description>
      <author>alanlong</author>
      <pubDate>Fri, 03 Jul 2015 01:00:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/26297</link>
      <guid>https://ruby-china.org/topics/26297</guid>
    </item>
    <item>
      <title>Rails polymorphic 和 touch 混用，touch 功能失效</title>
      <description>&lt;p&gt;在 model 层 polymorphic 可以实现多态关联的功能，如网上这个比较简单的例子：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;lass Person &amp;lt; ActiveRecord::Base  
  has_one :address, :as =&amp;gt; :addressable  
end  

class Company &amp;lt; ActiveRecord::Base  
  has_one :address, :as =&amp;gt; :addressable  
end  

class Address &amp;lt; ActiveRecord::Base  
 belongs_to :addressable, :polymorphic =&amp;gt; true  
end  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样 Address 有 adressable_id addressable_type 其中，addressable_type 可以为 Company 或者 Person。
而 touch 则能实现当子表的记录更新或增加时，父表的记录更新，如&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;  
  &lt;span class="n"&gt;has_one&lt;/span&gt; &lt;span class="ss"&gt;:address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:as&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:addressable&lt;/span&gt;  
&lt;span class="k"&gt;end&lt;/span&gt;  

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Address&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;  
 &lt;span class="n"&gt;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:addressable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:touch&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;  
&lt;span class="k"&gt;end&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样，当 person.addresses.first update, person.updated_on 会更新。
但是当 polymorphic 和 touch 同时使用，即 如果将第一段代码中&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Address&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;  
 &lt;span class="n"&gt;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:addressable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:polymorphic&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;  
&lt;span class="k"&gt;end&lt;/span&gt;  
&lt;span class="c1"&gt;## 改成&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Address&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;  
 &lt;span class="n"&gt;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:addressable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:polymorphic&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:touch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;的时候，父表记录中的 updated_on 是不会更新的。[PS: 应该是编译器不知道如何去找父表]
请问有什么方法可以在实现多态关联的前提下更新父表的记录吗？ 
谢谢！&lt;/p&gt;</description>
      <author>alanlong</author>
      <pubDate>Wed, 24 Jun 2015 10:24:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/26149</link>
      <guid>https://ruby-china.org/topics/26149</guid>
    </item>
    <item>
      <title>使用 redis 服务器做页面缓存，当用户量大的时候会不会出现内存爆掉的现象</title>
      <description>&lt;p&gt;最近想用 redis 做缓存服务器，看了 Tower 的缓存方针，想做页面缓存。但是发现了这样一个问题。当代码如下时：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;% cache &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:courses_jours_list&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="vi"&gt;@course&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="vi"&gt;@jour.maximum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:updated_on&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="sx"&gt;%&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;每次只要 jour 列表有更新，就会生成一个新的缓存片段【views/courses_jours_list/updated_on 时间】。
那么如果这种情况很多的话，当某一段时间网站访问量很大时，生成了很多的缓存片段，单纯的靠 redis 的 lru 机制，很有可能会误删除有用的缓存页面，而且内存可能一直处于爆满的状态。
请问各位大神，有没有好一点的解决方案。 
PS:尝试过在更新时进行缓存过期操作，但是当有很多页面都牵扯到某一个表单时，很可能会漏掉写缓存过期。&lt;/p&gt;</description>
      <author>alanlong</author>
      <pubDate>Mon, 15 Jun 2015 17:40:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/26026</link>
      <guid>https://ruby-china.org/topics/26026</guid>
    </item>
    <item>
      <title>Redis 做缓存，fragment cache 如何缓存过期</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/f13bc3da443ea3e934018f55eb9a3a25.png" title="" alt=""&gt;
如图所示，对红色框框的区域做缓存，但是里面的数字是发生变化的。
是直接使用 rails 的 fragment 页面片段缓存还是使用数据库缓存？如果是 fragment 缓存，如何设置缓存过期比较好？
求大神解释，最好能给出个小的 demo，谢谢！！！
PS: 用的 redis 缓存服务器，新手，第一次搭建，还在摸索阶段，对缓存这块真心不太熟。&lt;/p&gt;</description>
      <author>alanlong</author>
      <pubDate>Thu, 28 May 2015 00:02:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/25778</link>
      <guid>https://ruby-china.org/topics/25778</guid>
    </item>
    <item>
      <title>using memcache with ruby</title>
      <description>&lt;p&gt;install memcache 时发生错误，错误信息如下&lt;/p&gt;

&lt;p&gt;/home/alan/.rvm/rubies/ruby-2.0.0-p481/bin/ruby extconf.rb 
checking for sasl/sasl.h... no
Please install SASL to continue. The package is called libsasl2-dev on Ubuntu and cyrus-sasl on Gentoo.
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.&lt;/p&gt;

&lt;p&gt;Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/home/alan/.rvm/rubies/ruby-2.0.0-p481/bin/ruby&lt;/p&gt;

&lt;p&gt;extconf failed, exit code &lt;/p&gt;

&lt;p&gt;哪位大神帮忙解决下，非常感谢。祝大家新年快乐。&lt;/p&gt;</description>
      <author>alanlong</author>
      <pubDate>Fri, 20 Feb 2015 22:07:40 +0800</pubDate>
      <link>https://ruby-china.org/topics/24315</link>
      <guid>https://ruby-china.org/topics/24315</guid>
    </item>
  </channel>
</rss>
