several gems' errors when using rails 5.1

Published on:

最近 rails 5.1.0 出来了,目前发现有两个常用的gem 在安装的时候,会出现错误,分别是 devise 和 simple_form,这些都可以在gem 的 github 的 issues 版块看到,其他欢迎留言补充。

1. Devise

devise 是我们最常用gem之一, 用来打造会员系统。

在 rails 5.1版本下,安装会出现类似这样的错误:

目前可行的解决方法是使用master 分支。

即在 Gemfile 中加入:

Gemfile
gem 'devise', github: 'plataformatec/devise'

2. Simple_form

simple_form 也是相当常用的 gem,原生的 form_for 写起表单来太麻烦, simple_form 写起来简单清晰。

在 rails 5.1版本下,安装时如果需要套用 bootstrap 会无法成功:

目前可行的解决方法是使用其他人做好的分支。

即在 Gemfile 中加入:

Gemfile
gem 'simple_form', github: 'elsurudo/simple_form', branch: 'rails-5.1.0'

3. dropdown

bootstrap dropdown功能的实现需要 jQuery 的支持,但5.1 不再预安装 Jquery,所以需要自己手动安装。

首先加入jquery-rails这个 gem:

Gemfile
gem 'jquery-rails'

然后再 js 文件中引用:

application.js
//= require jquery

//= require jquery_ujs

其他运行在5.1版本的安装错误,欢迎留言补充。

For more information, please click the links below:

Devise 4.0 does not work install on Rails 5.1.0 · Issue #4518 · plataformatec/devise · GitHub

Rails 5.1: Relax version spec in gemspec · Issue #1485 · plataformatec/simple_form · GitHub

Are they awake in somewhere?

Published on:

平时我们想知道另外一个时区的人那里是几点,睡了没有? 一般人会根据本地时区的时间去推导,聪明一点的会直接打开 google,搜索:what’s the time in New York

但我最近看到一个很好玩的网站: Are they awake?

首页是酱紫:

选择一个国家或地区之后是酱紫:

嗯,你说了这么多,这到底有什么卵用?

呵呵,好玩呗。

RoR第17周周记

Published on:

1. 本周学到的最好的工具

本周学到最好的工具是 voicetube


最近在新大上上王秒老师的21天 TED 精炼团的课程,也是在这个课程上知道了voicetube 这个网站,这是一个很好地学英语的网站。
支持跟读,部分视频支持quiz,还支持查字幕。。。
更多好玩的用法还在摸索中。。。

2. 本周学到的最好的概念

最好的概念是每天看一个 TED。
趁着 TED 课程,现在每天都能在 voicetube 上看一个 TED 视频,除了学习了英语之外,还可以跟着演讲人的节奏,感受演讲的魅力,还能收到直接的干货,真是太值得了。

3. 本周遇到最大的坑

最大的坑是看不了netflix。
好入容易在linode 上部署了一个 NJ 的 vpn, 没想到打开视频,却提示错误看不了,真是想打人。

RoR第16周周记

Published on:

1. 本周学到的最好的工具

最好的工具是rails 百宝箱,学到了一个重要的安全观念,网址如果允许用户输入 html,就必须要对其进行白名单性质,以免被人恶意使用 js攻击。
使用两个gem:

gem 'redcarpet'
gem 'coderay'

可以把用户输入的 markdown 转化成 html。

2. 本周学到的最好的概念

最好的概念是天气越来越暖和了,再也没有理由不运动了,开始跑步,频率两天一次,傍晚江边,和夕阳一起。

3. 本周遇到最大的坑

最大的坑是有时候会忘记很简单的道理:
不要用未知去解释已知,一个东西一小时内研究不出来,就暂时把他摆在一边。

让用户的输入内容支持 markdown

Published on:

上次,我写过一篇 文章 ,探讨如何才能让用户的输入内容支持html语法?

结论是使用sanitize 配合设置白名单使用。

最近,我又开始考虑如何才能让用户的输入内容支持 markdown,这应该对于热衷使用 Markdown来写字的用户来说,体验会比较好。

一开始,我以为这个想法操作起来会比较复杂,实际上相当简单。

因为,我们有现成的包好的 gem,啊,真是好幸福。

以下是具体步骤:


  1. install gem

    Gemfile
    gem 'redcarpet'
    gem 'coderay'
    
  2. define markdown

    app/helpers/application_helper.rb
    module ApplicationHelper
    class CodeRayify < Redcarpet::Render::HTML
    def block_code(code, language)
    language ||= :plaintext
    CodeRay.scan(code, language).div
    end
    end

    def markdown(text)
    coderayified = CodeRayify.new(:filter_html => true, :hard_wrap => true)
    options = {
    :fenced_code_blocks => true,
    :no_intra_emphasis => true,
    :autolink => true,
    :strikethrough => true,
    :lax_html_blocks => true,
    :superscript => true
    }
    markdown_to_html = Redcarpet::Markdown.new(coderayified, options)
    markdown_to_html.render(text).html_safe
    end
    end


    3.convert md to html

    For example, there is a post table which has comment column in it, and you wanna convert the comment which is written by user to html, you can do this like it below:

    <%= markdown(@post.comment) %>
    

    好了,到此为止,已经完成了。

    事实上,还有很多的用法,就看你的想象力了。

    哦对了,欢迎扫码订阅我的微信公众号,每周更新4-5篇我的学习日志。

    For more information, please refer to these links below:
    GitHub - vmg/redcarpet: The safe Markdown parser, reloaded.
    GitHub - rubychan/coderay: Fast and easy syntax highlighting for selected languages, written in Ruby.
    Code Fellows | How to create a Markdown-friendly blog in a Rails app

把你的微信好友头像拼接起来,称霸朋友圈

Published on:

今天不小心在简书上看到两篇文章(见文后),大意是使用 python 程序把微信好友的头像串在一起,想想就觉得很有意思啊。

这两篇文章的代码使用的是python3,和两个库 itchat 和 pillow。

说道 python,我想起来,在学 rails 和 ruby 之前,我曾经有过短时间学习 python 的经历,当然只是学了一点简单的python 语法,不过说起来,ruby 和 python 一样都是强类型和动态类型的语言,因此语法有可多相通的地方。

好,废话不多说,以下是一个简单的教程:

1.安装 python3

mac 自带 Python2,python3需要自己安装。
我们在这里使用Homebrew安装,如果没有Homebrew就先去安装一个,这一步省略。

$ brew install python3

执行$ python3 -V,查看版本,如果显示如下,就说明安装成功了。

$ python3 -V
Python 3.5.2

2.安装 itchat 和 pillow

安装这两个必须的库之前,需要安装 pip3,方便的是,如果你已经安装了Homebrew套件,那么 pip3 已经在你安装Homebrew的时候自动帮你安装好了。
接下来我们使用 pip3安装 itchat 和 pillow。

  • install itchat
    $ pip3 install itchat
    最后如果出现这样的字样,就表示安装成功了。

    Successfully installed itchat-1.3.5 pypng-0.0.18 pyqrcode-1.2.1 requests-2.13.0
    
  • install pillow
    $ pip3 install pillow
    最后如果出现这样的字样,就表示安装成功了。

    Successfully installed olefile-0.44 pillow-4.1.0
    

3.编辑python 代码

wechat-avatar.py
 import itchat
  2 import math
  3 import PIL.Image as Image
  4 import os
  5
  6 itchat.auto_login()
  7 friends = itchat.get_friends(update=True)[0:]
  8 user = friends[0]["UserName"]
  9
 10 num = 0
 11 for i in friends:
 12     img = itchat.get_head_img(userName=i["UserName"])
 13     fileImage = open('/Users/your_name/your_filename' + "/" + str(num) + ".jpg",'wb    ')
 14     fileImage.write(img)
 15     fileImage.close()
 16     num += 1
 17
 18 ls = os.listdir('/Users/your_name/your_filename')
 19 each_size = int(math.sqrt(float(640*640)/len(ls)))
 20 lines = int(640/each_size)
 21 image = Image.new('RGBA', (640, 640))
 22 x = 0
 23 y = 0
 24 for i in range(0,len(ls)+1):
 25     try:
 26         img = Image.open('//Users/your_name/your_filename' + "/" + str(i) + ".jpg")
 27     except IOError:
 28         print("Error")
 29     else:
 30         img = img.resize((each_size, each_size), Image.ANTIALIAS)
 31         image.paste(img, (x * each_size, y * each_size))
 32         x += 1
 33         if x == lines:
 34             x = 0
 35             y += 1
 36 image.save('/Users/your_name/your_filename' + "/" + "all.jpg")
 37 itchat.send_image('//Users/your_name/your_filename' + "/" + "all.jpg", 'filehelper')

代码中的5个下面这个文件路径换成自己的:
/Users/your_name/your_filename

至于新建文件和编辑文件,使用你自己喜欢的编辑器就好。

4.运行代码

比如我的 python 文件叫 wechat-avatar.py,那么就执行:

$ python3 wechat-avatar.py

运行的情况会像这样:

当出现 Please scan the QR code to log in.
这个提示的时候,会跳出一个二维码,微信扫一下,就会登录你的微信,接着下载你的所有好友的头像,最后使用 pillow 把所有头像拼接成一张图:all.jpg

终端执行 open .,打开文件夹,就能看到所有的好友头像和拼接图 all.jpg。

5.可能出现的错误

程序运行到最后有可能出现下面这样的错误:

没关系,再重新执行一下 py 程序就好。

我的作品,开玩笑啦😄 :

为了朋友们的头像隐私我就不公布我的啦。

最后,感谢简书上@向右奔跑 的这篇文章,也祝愿看到这篇文章的你借此称霸朋友圈。


For more information,please refer to the link below:

004 - Python微信好友头像拼接图 - 简书
微信好友全头像 - 简书

RoR第15周周记

Published on:

1. 本周学到的最好的工具

最好的工具是图片压缩工具 imageoptim,写公众号的题图不能超过2M,否则传不上去,mac 貌似并不自带压缩图片工具,而imageoptim这个工具可以快速的帮我压缩得到2m 以内的图片,支持无损压缩。

2. 本周学到的最好的概念

最好的概念是每天写一篇小短文。
每天敲代码,也会觉得累,这时候需要干点其他的事情换换脑,写写随笔对我来说是一个不错的选择。

具体做法是:
每天临睡前听半小时至一小时得到专栏,以1.5-2倍的速度的速度播放,听得过程中会有一些自己的思考和想法。
第二天起床后稍作调整,就开始写随机,主要根据从专栏中得到的启发,结合自己的思考,写下一篇小短文。
目前已更新公众号一周,欢迎扫码订阅。

3. 本周遇到最大的坑

最大的坑是本周有点焦虑,看到二期的魔改作品都很棒,比我当初的作品真真是好多了,真是羡慕。

Awesome drawing to play

Published on:

事实上,绘画这件事还真的是挺难的,特别是像我这样的手残党,几乎是画什么不像什么,我是酱紫,估计全世界跟我一样的人应该也很多,那我们还有救吗?

有,必须有。

今天偶然间,看到Google+推荐的一个小游戏,试玩了一下,一上午就过去了,真的十分有趣,特地拿来推荐给大家。

这个游戏叫——Autodraw

这是Google最近推出的一个新实验,原理是使用机器学习的算法将信手涂鸦与专业的绘画匹配起来,一切都感觉是用户自己完成的一样。

使用上也相当简单,你可以在任何终端上使用AutoDraw,你只需要按你自己的想法随便涂鸦,完成一个大概的轮廓,google的算法就会尝试找出你要绘制的是什么,原理是将你的涂鸦与数据库中的绘画相匹配,如果找到任何可能的匹配项,它将会提示你并显示出可能的匹配项,如果你发现其中的一个选项是你想要的结果,你只需要点击它,AutoDraw就会使用专业的绘画取代你的涂鸦,点击几下还可以为你的绘画配上你喜欢的颜色,只需要一会儿的功夫,你就可以完成一个满意的作品。

官网是AutoDraw.com,快来尝试一下吧,点击阅读原文还可以看youtube的介绍。

最后,附上我的一个作品的制作过程。

欢迎扫描下方二维码关注我的公众号 XD

避免nil error

Published on:

rails101做到5-4的时候,给group增加user_id之后,会出现这个报错。

教程给出的解决方法是Group.detele_all

实际上,使用这个方法是挺危险的,好不容易产生的Group数据就这样被删除了,特别是production环境下的真实用户数据。

这个问题,baohua写过一篇提供了终极的解决方案,详情见下方链接:

无主群组的另类解决方法(不用delete_all删除) « 保华的Rails学习笔记

意思是既然user是nil,那重新给赋值就可以完美解决问题。

进入rails c,执行以下4行指令

Group.all.each do |group|
    group.user_id = User.ids.sample
    group.save
end

但如果你只是想避免nil错误,其实有更好的解决方法:
使用try

即修改
<td> <%= group.user.try(:email) %> </td>

是不是很神奇。

同样的道理,在初级练习加分题中,try也有神奇的用处。

初级练习加分题,解决增加减分按钮 « Yammy’s way to full-stack

RoR第14周周记

Published on:

1. 本周学到的最好的工具

最好的工具是财富报表知识、部署指南教程和nearlock。
多谢@邢杨杨 的财务报表知识的分享,让我明白了如何正确去看上市公司的报表,收获很大。
部署指南推迟到现在做,是因为不急着找工作(这个借口真不错,完美)。其中,linode服务器部署,参考了多位同学的logdown,没遇到什么大的问题;阿里云部署,由于经典网络卖光了(是不是都被全栈营的同学买光了),买了专有网络,结果进行不下去了。。。
nearlock是一款用iphone解锁mac的应用,只需像解锁手机一样按一下指纹,就能顺利解锁,真是不要太方便。

2. 本周学到的最好的概念

最好的概念是本周开始践行用付费的方式筛选一些急需要加速度脱离低水平的的二期同学,帮他们0时差debug并改正一些不好的编程习惯。
这些东西他们迟早会学会的,那就趁现在。
大家都知道,注意力才是一个人最宝贵的财富,所以这件事说到底就是用钱来换取他们的注意力和时间丢失。

3. 本周遇到最大的坑

最大的坑是这周时间被分割的很散,几乎没有大块的时间来完成整个的项目作业。

4. 本周遇到最大惊喜

最大的惊喜是收到得到充值卡,终于可以任性买买买了,一口气订阅多个专栏的感觉真好,有种知识被我牢牢抓紧的错觉。
目前专栏的学习方法是每天睡前听30分钟专栏语音随时听,现在需要补充的是,早上起来之后,做笔记。