<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>zhangzitao (zitao)</title>
    <link>https://ruby-china.org/zhangzitao</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>练手做的一个 Rails 5 项目 Airoom，开源中</title>
      <description>&lt;p&gt;17 年中旬练手做的一个项目，模仿 airbnb 的基本功能。没有分离前后端，带 view，前端样式完全使用 bootstrap 4。&lt;/p&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;p&gt;&lt;em&gt;注意，因为使用了谷歌 api，想要完整查看的话，先科学上网吧&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;已经部署到境外服务器，&lt;a href="http://23.106.145.156" rel="nofollow" target="_blank" title=""&gt;地址在这儿&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;代码开源地址： &lt;a href="https://github.com/zhangzitao/airtry" rel="nofollow" target="_blank"&gt;https://github.com/zhangzitao/airtry&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;看完别忘了加星 :)&lt;/p&gt;

&lt;p&gt;附图：
&lt;img src="https://l.ruby-china.com/photo/2018/b8c1e662-2284-49a4-9421-9462dc8dbb95.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2018/c888d80d-c41b-441c-96cd-4000b157d368.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2018/4d7f7e4f-8aa8-4fc2-9a3d-3dc4064f9907.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2018/41dc0e13-7828-4157-812e-5b465e8f9804.png!large" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>zhangzitao</author>
      <pubDate>Wed, 07 Mar 2018 10:48:40 +0800</pubDate>
      <link>https://ruby-china.org/topics/35186</link>
      <guid>https://ruby-china.org/topics/35186</guid>
    </item>
    <item>
      <title>Rails 5.2.0 beta 版已发出</title>
      <description>&lt;blockquote&gt;
&lt;p&gt;Rails 5.2.0 beta: Active Storage, Redis Cache Store, HTTP/2 Early Hints, CSP, Credentials&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://weblog.rubyonrails.org/2017/11/27/Rails-5-2-Active-Storage-Redis-Cache-Store-HTTP2-Early-Hints-Credentials/" rel="nofollow" target="_blank" title=""&gt;官网链接&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5.2 增加了 Active Storage 框架，之前上传文件需要借助插件，现在直接集成在框架里了&lt;/p&gt;</description>
      <author>zhangzitao</author>
      <pubDate>Tue, 28 Nov 2017 17:17:57 +0800</pubDate>
      <link>https://ruby-china.org/topics/34649</link>
      <guid>https://ruby-china.org/topics/34649</guid>
    </item>
    <item>
      <title>扁平化作用域的简单解释</title>
      <description>&lt;p&gt;刚写的一个小测试，记录下来&lt;/p&gt;

&lt;p&gt;我们知道&lt;code&gt;module class def&lt;/code&gt;这样的关键字会封闭变量的作用域&lt;/p&gt;

&lt;p&gt;当需要在另一个类里直接调用外部变量时，可以使用&lt;strong&gt;扁平化作用域&lt;/strong&gt;的编写方式：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Try&lt;/span&gt;
  &lt;span class="no"&gt;MyClass1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Class&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&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;ef&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;ffff&lt;/span&gt;
      &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="s2"&gt;"ffff"&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="n"&gt;my&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;MyClass1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;

  &lt;span class="no"&gt;MyClass2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Class&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&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;ef&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="n"&gt;define_method&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:gggg&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;args&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="k"&gt;defined?&lt;/span&gt; &lt;span class="n"&gt;my&lt;/span&gt;
      &lt;span class="n"&gt;my&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ffff&lt;/span&gt;
      &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="no"&gt;MyClass2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;gggg&lt;/span&gt;
  &lt;span class="c1"&gt;#=&amp;gt; "local-variable"&lt;/span&gt;
  &lt;span class="c1"&gt;#=&amp;gt; "ffff"&lt;/span&gt;
  &lt;span class="c1"&gt;#=&amp;gt; nil&lt;/span&gt;
  &lt;span class="no"&gt;MyClass2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt; &lt;span class="ss"&gt;:gggg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;123&lt;/span&gt;
  &lt;span class="c1"&gt;#=&amp;gt; "local-variable"&lt;/span&gt;
  &lt;span class="c1"&gt;#=&amp;gt; "ffff"&lt;/span&gt;
  &lt;span class="c1"&gt;#=&amp;gt; 123&lt;/span&gt;

  &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyClass3&lt;/span&gt;
    &lt;span class="n"&gt;define_method&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:gggg&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;args&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="k"&gt;defined?&lt;/span&gt; &lt;span class="n"&gt;my&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="no"&gt;MyClass3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;gggg&lt;/span&gt;
  &lt;span class="c1"&gt;#=&amp;gt; nil&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用关键字定义时，my 是未定义的变量&lt;/p&gt;

&lt;p&gt;使用块扁平化作用域时，my 是同一个作用域内的&lt;strong&gt;局部变量&lt;/strong&gt;&lt;/p&gt;</description>
      <author>zhangzitao</author>
      <pubDate>Fri, 03 Nov 2017 10:15:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/34502</link>
      <guid>https://ruby-china.org/topics/34502</guid>
    </item>
  </channel>
</rss>
