<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>wonderful60 (莲子汤)</title>
    <link>https://ruby-china.org/wonderful60</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>[Activeadmin] 宿舍水电煤气费用结算系统实现</title>
      <description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;我住在一个由多个人 (目前只有 3 人&lt;img title=":smile:" alt="😄" src="https://twemoji.ruby-china.com/2/svg/1f604.svg" class="twemoji"&gt; ) 合租的合租房里面，大家指定我来缴纳水电煤气费用，目前持续半年是使用 excel 来管理，后面感觉 excel 太 low，所以承诺室友 (都是非计算机行业) 抽空给大家编写一个 web 系统来管理并定期将人均费用账单邮件给大家。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="需求"&gt;需求&lt;/h2&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;管理"缴纳账号"模块实现&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;/li&gt;
&lt;li&gt;管理"室友状态"模块实现&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="选择后台模板Activeadmin"&gt;选择后台模板 Activeadmin&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;控制面板：register_page=&amp;gt;content+column&lt;/li&gt;
&lt;li&gt;其他页面：register=&amp;gt;index+filter+form+sidebar&lt;/li&gt;
&lt;li&gt;中文化：i18n&lt;/li&gt;
&lt;li&gt;主题：active_admin_theme&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="实现代码"&gt;实现代码&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/wonderful60/sdmq102" rel="nofollow" target="_blank"&gt;https://github.com/wonderful60/sdmq102&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="待完成和完善"&gt;待完成和完善&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;邮件功能：用于人均费用账单通知发送&lt;/li&gt;
&lt;li&gt;RBAC：角色分管理员和普通用户 (只能使用"控制面板"和"通知信息"模块)&lt;/li&gt;
&lt;li&gt;考虑添加功能：水电煤气使用量分析，并给出分析报告和建议；水电煤气费用目前是手工录入，后面希望能找到免费的水电煤气查询 API 进行自动查询录入&lt;img title=":wink:" alt="😉" src="https://twemoji.ruby-china.com/2/svg/1f609.svg" class="twemoji"&gt; &lt;/li&gt;
&lt;/ul&gt;</description>
      <author>wonderful60</author>
      <pubDate>Fri, 29 Jul 2016 11:23:27 +0800</pubDate>
      <link>https://ruby-china.org/topics/30667</link>
      <guid>https://ruby-china.org/topics/30667</guid>
    </item>
    <item>
      <title>[net-ping] 使用 net-ping 搭建简易版拨测系统</title>
      <description>&lt;h2 id="需求"&gt;需求&lt;/h2&gt;
&lt;p&gt;对各主机网络的连通信以及服务端口状态做定期检测，如有异常报短信和邮件通知&lt;/p&gt;
&lt;h2 id="具体功能"&gt;具体功能&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;实现 icmp ping&lt;/li&gt;
&lt;li&gt;实现 tcp 端口状态检查 (类似 telnet)&lt;/li&gt;
&lt;li&gt;实现 udp 端口状态检查 (类似 nc)&lt;/li&gt;
&lt;li&gt;实现 http web 服务状态检查&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="选择net-ping"&gt;选择 net-ping&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ping::TCP&lt;/li&gt;
&lt;li&gt;Ping::UDP&lt;/li&gt;
&lt;li&gt;Ping::External&lt;/li&gt;
&lt;li&gt;Ping::HTTP&lt;/li&gt;
&lt;li&gt;Ping::ICMP&lt;/li&gt;
&lt;li&gt;Ping::WMI&lt;/li&gt;
&lt;li&gt;Ping::LDAP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;详情:
&lt;a href="https://github.com/chernesk/net-ping/blob/master/doc/ping.txt" rel="nofollow" target="_blank"&gt;https://github.com/chernesk/net-ping/blob/master/doc/ping.txt&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="实现代码"&gt;实现代码&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/wonderful60/simple_host_monitor" rel="nofollow" target="_blank"&gt;https://github.com/wonderful60/simple_host_monitor&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="后话"&gt;后话&lt;/h2&gt;
&lt;p&gt;楼主是 rails 新手，这次做这个简易系统主要是为了结合工作需求顺便练习一下 rails，类似需求用 zabbix 等监控系统来实现会更简单方便。&lt;/p&gt;</description>
      <author>wonderful60</author>
      <pubDate>Thu, 21 Jul 2016 10:31:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/30584</link>
      <guid>https://ruby-china.org/topics/30584</guid>
    </item>
    <item>
      <title>使用 163 邮箱的 SMTP 需要开启授权码，不知道 ActionMailer 是否有对应的授权码参数</title>
      <description>&lt;p&gt;报错信息：535 Error: authentication failed。&lt;/p&gt;

&lt;p&gt;看了一下 ActionMailer 的 API，好像没有类似授权码的参数，不知道大家是否遇到过这个问题，不知道是如何解决的 (除了换邮箱)。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2016/c090780992abc611d606ff37dde597dc.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>wonderful60</author>
      <pubDate>Mon, 27 Jun 2016 18:01:48 +0800</pubDate>
      <link>https://ruby-china.org/topics/30377</link>
      <guid>https://ruby-china.org/topics/30377</guid>
    </item>
    <item>
      <title>[boostrap-sass] 使用 Rails 改写 Bootstrap 的官方样例</title>
      <description>&lt;h2 id="【boostrap-sass】使用rails改写bootstrap的官方样例"&gt;【boostrap-sass】使用 rails 改写 bootstrap 的官方样例&lt;/h2&gt;
&lt;hr&gt;

&lt;p&gt;我是一个 rails 初学者，还请各位大神指正。最近刚学习 boostrap-sass，记得 bootstrap 官网有一些 example，所以就想通过修改这些样例来练习一下。此次通过 rails 修改 bootstrap 样例，学习如下几个知识点：&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/twbs/bootstrap-sass" rel="nofollow" target="_blank" title=""&gt;bootstrap-sass&lt;/a&gt;的安装&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://guides.ruby-china.org/asset_pipeline.html" rel="nofollow" target="_blank" title=""&gt;Asset Pipeline&lt;/a&gt;的学习 (特别是&lt;a href="http://stackoverflow.com/questions/21911620/rails-bootstrap-sass-assets-compilation-error-undefined-variable-alert-padding" rel="nofollow" target="_blank" title=""&gt;针对控制器的样式表和 JS 文件在相应的控制器中引入&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://stackoverflow.com/questions/13016295/add-css-class-to-rails-link-to-helper" rel="nofollow" target="_blank" title=""&gt;link_to&lt;/a&gt;、&lt;a href="http://stackoverflow.com/questions/7414842/rails-3-link-to-with-image-tag-text" rel="nofollow" target="_blank" title=""&gt;image_tag&lt;/a&gt;、&lt;a href="http://stackoverflow.com/questions/9901910/how-to-add-favicon-in-rails-3-2" rel="nofollow" target="_blank" title=""&gt;favicon_link_tag&lt;/a&gt;的学习&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src="http://7xtlfa.com1.z0.glb.clouddn.com/static/images/example.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;代码：&lt;a href="https://github.com/wonderful60/rails-bootstrap-example.git" rel="nofollow" target="_blank"&gt;https://github.com/wonderful60/rails-bootstrap-example.git&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="1. bootstrap-sass的安装"&gt;1. &lt;a href="https://github.com/twbs/bootstrap-sass" rel="nofollow" target="_blank" title=""&gt;bootstrap-sass&lt;/a&gt;的安装&lt;/h3&gt;
&lt;p&gt;a.更新 Gemfile&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'bootstrap-sass'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'~&amp;gt; 3.3.6'&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'sass-rails'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'&amp;gt;= 3.2'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;b.执行&lt;code&gt;bundle install&lt;/code&gt; 并重启 web 服务&lt;/p&gt;

&lt;p&gt;c.更新 &lt;code&gt;app/assets/stylesheets/application.scss&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="c1"&gt;// "bootstrap-sprockets" must be imported before "bootstrap" and "bootstrap/variables"&lt;/span&gt;
&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="s2"&gt;"bootstrap-sprockets"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="s2"&gt;"bootstrap"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：&lt;code&gt;bootstrap-sprockets&lt;/code&gt; 必须在 &lt;code&gt;bootstrap&lt;/code&gt; 上面字体才能被引入。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;d.确保样式表文件后缀是 &lt;code&gt;.scss&lt;/code&gt; 或 &lt;code&gt;.sass&lt;/code&gt; (Sass syntax)。新增 rails 项目时，默认会生成 application.css，还请做如下修改：&lt;/p&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;mv &lt;/span&gt;app/assets/stylesheets/application.css app/assets/stylesheets/application.scss
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;e.从 application.scss 中删除 &lt;code&gt;*= require_self&lt;/code&gt; 和 &lt;code&gt;*= require_tree .&lt;/code&gt; 而换作 &lt;code&gt;@import&lt;/code&gt; 来引入 Sass 文件。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;注意：不要再 sass 和其他样式表文件中使用&lt;code&gt;*= require&lt;/code&gt; ,否则 Bootstrap 的 mixins 和 variables 将失效。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;f.更新 &lt;code&gt;app/assets/javascripts/application.js&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//= require jquery&lt;/span&gt;
&lt;span class="c1"&gt;//= require bootstrap-sprockets&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：&lt;code&gt;bootstrap-sprockets&lt;/code&gt; 和 &lt;code&gt;bootstrap&lt;/code&gt; 不能同时被包含再 &lt;code&gt;application.js&lt;/code&gt;中.
&lt;code&gt;bootstrap-sprockets&lt;/code&gt; 只提供个别的 Bootstrap js (例如：&lt;code&gt;alert.js&lt;/code&gt; 或 &lt;code&gt;dropdown.js&lt;/code&gt;), 而
&lt;code&gt;bootstrap&lt;/code&gt; 会提供一个包含所有 Bootstrap js 的文件。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="2. 针对控制器的样式表和 JS文件在相应的控制器中引入"&gt;2. &lt;a href="http://stackoverflow.com/questions/21911620/rails-bootstrap-sass-assets-compilation-error-undefined-variable-alert-padding" rel="nofollow" target="_blank" title=""&gt;针对控制器的样式表和 JS 文件在相应的控制器中引入&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;a.更新/app/views/layouts/application.html.erb：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%= stylesheet_link_tag    'application', params[:controller], media: 'all', 'data-turbolinks-track' =&amp;gt; true %&amp;gt;
&amp;lt;%= javascript_include_tag 'application', params[:controller], 'data-turbolinks-track' =&amp;gt; true %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;b.更新/config/initializers/assets.rb：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rails.application.config.assets.precompile += [/^[-_a-zA-Z0-9]*\..*/]
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="3. link_to、image_tag、favicon_link_tag的学习"&gt;3. &lt;a href="http://stackoverflow.com/questions/13016295/add-css-class-to-rails-link-to-helper" rel="nofollow" target="_blank" title=""&gt;link_to&lt;/a&gt;、&lt;a href="http://stackoverflow.com/questions/7414842/rails-3-link-to-with-image-tag-text" rel="nofollow" target="_blank" title=""&gt;image_tag&lt;/a&gt;、&lt;a href="http://stackoverflow.com/questions/9901910/how-to-add-favicon-in-rails-3-2" rel="nofollow" target="_blank" title=""&gt;favicon_link_tag&lt;/a&gt;的学习&lt;/h3&gt;
&lt;p&gt;a.link_to 和 image_tag&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%= link_to image_tag("starter-template.jpg", :alt =&amp;gt; "Starter template example"), starter_template_index_path, :class =&amp;gt; "thumbnail" %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：&lt;code&gt;:class&lt;/code&gt;一定要在&lt;code&gt;xxx_path&lt;/code&gt;后面，否则会报语法错误。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;b.favicon_link_tag.更新/app/views/layouts/application.html.erb:&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%= favicon_link_tag 'favicon.ico' %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>wonderful60</author>
      <pubDate>Fri, 24 Jun 2016 16:34:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/30361</link>
      <guid>https://ruby-china.org/topics/30361</guid>
    </item>
  </channel>
</rss>
