噗
都写在源码里面了
我觉得把需求贴出来大家好评判一点。
设备 <-----> 设备,之间的通讯方式有很多,自己封装或者用现成的模块/库都行,需要一个带网卡的网关,把采集上来的数据传输给云端。
设备 <-----> 服务器,设备上报信息给服务器是一个难点,如果你的设备量小、实时性低、不需要服务器实时操作设备的话,可以直接用 http 协议。如果量大,而且需要用服务器远程控制设备,可以用 MQTT 协议,很多国内厂商的模块都支持。但是 Ruby 的 MQTT client 库只支持 MQTT 协议中的 QOS0 发送方式,可能需要根据自己业务调整用其他完善的 MQTT client。或者说自己有精力,也可以自己封装一个自己私有 socket 协议。
总的来说就是设备不断的 publish 消息到服务器,然后服务器收到消息后将数据持久化。
最后将持久化的数据展示到网页上去。如果网页也需要实时显示的话,可以用 Websocket 连接 MQTT Server,监听相应设备的消息。
网页图表显示之类的,github js 库很多了。
有 wifi 模块吗?或者带 wifi 的设备?
给之前的版本提过 issue 的表示,文档提升了一个档次。
lambda is first class
是这个意思吗
应该是 namespace 的问题,这个问题之前也困扰了我一段时间
ruby 中 class
、module
这两个关键字的含义可以仔细思考一下。
在其他的编程语言中可以简单的理解为定义或声明一个类、模块。
但在 ruby 中,你最好理解为声明并打开一个类、模块。
回到你的问题上面来,我猜测你 99% 有一个 model 叫做
class User < ActiveRecord::Base # 声明并打开一个名叫 User 的类
end
class User::FeedbacksController < BasesController
end
# 这个代码等价于
module User # 声明并打开一个名叫 User 的模块
class FeedbacksController < BasesController # 在里面声明一个FeedbacksController的类
end
end
说到这里你可能多少理解了一点点,ruby 不能判断到底应该把 User 当做一个 class 还是 module 你可以在 irb 里面试试声明同名 class、module
irb(main):001:0> module User
irb(main):002:1> end
=> nil
irb(main):003:0> class User
irb(main):004:1> end
TypeError: User is not a class
from (irb):3
from /usr/bin/irb:12:in `<main>'
irb(main):005:0>
你就会发现打开 User class 失败。
很多语言当中,都有类似的问题,都算是 namespace 命名空间的问题,C++ 有 include 和 namespace,java 有 import 和 package,objective-C 两个不同 SDK 引入了相同的库的时候,也只能改掉其中一个,erlang 同名 module 直接就报错,只能手动把每个 module 加上特殊的前缀。
其实 ruby 中的做法已经足够使用了,一个 require 和 module,尽量不 require 同名类能解决大部分问题了,再加上一个 namespace,基本上不会出现问题。虽然你的 user/application_controller.rb 中没有 require,但是 rails 的 autoload 已经帮你引入了 model 中所有的类,在你访问 user_feedbacks_path 这个时候,正好懒加载了 module User
,所以每次重启到这里就报错了。
可以参考下: http://guides.rubyonrails.org/autoloading_and_reloading_constants.html
签到
第一阶段:卧槽,微软这个牛逼,微人希,测试版出来我就去下一个 第二阶段:咦,怎么有点问题,跟 XX 怎么不一样,是不是用微软自己内部的方法实现的,还是说测试版有点小 bug,先切回之前的平台用一下吧。 第三阶段:也不知道微软那个项目搞得怎么样了,上次发布会都好几年了,什么?已经不更新/Pass 了?好可惜啊,正式版都没出几个月。 第四阶段:微软将在 XXXX 年发布一项新的技术,这项技术会彻底改变人类的生活,卧槽,微软牛逼。
kik 的事情在推上疯狂嘲讽
node-ruby,react-ruby,react-native-ruby,coffeeruby 正在蓄势待发
不会
可以搞个智能摄像头来面试,可以对讲,也看得清面试官的脸,消除面试者的误会。
这样写新 dom 要重新绑定事件,有时候会很麻烦。
#9 楼 @rogerluo410 (目前) 是最好的,event loop 处理连接,多线程分发重 IO 的任务。
哎,做的好多东西都停留在 10 分阶段
说句实话,每次进杉果游戏的网站,给我的感觉就不像是卖正版的,单纯的吐槽设计风格
同样不写测试,但是换个角度去想,站在管理者的角度,手下人的水平参差不齐,合作开发项目质量得不到(心理上)保证,所以就有了 UT 这一出啊,也可以解释为什么很多人测试走过场。
如果有人问我写测试吗?我的回答是:自己写的 lib 会写点,业务相关的逻辑一律不写,现在需求变的太快了,写不过来。
我觉得人肉测试的技巧,可以去隔壁学学 https://testerhome.com/topics 专业的测试人员找出的 bug,比 UT 来的多。
可以试试 rabbitmq
手打的,不一定对
require 'eventmachine'
class EmConnection < EventMachine::Connection
def self.❨╯°□°❩╯︵┻━┻
puts "Calm down, yo."
end
# 打开链接时 callback
def open_conn
p 'open it !'
end
# TODO 心跳发送数据包
def send_tck
self.send_data('你的心跳数据格式')
end
end
EM.epoll? ? EM.epoll : EM.kqueue
EM.run {
@connection = EM.connect('你的socket链接地址', '端口', EmConnection)
EM.add_periodic_timer(3) { @connection.send_tck }
EM.error_handler { |e| p e.message }
}
Passerby 应该先公开一下抽奖的算法,免得到时候要 review
rails s -b 0.0.0.0
#2 楼 @lanjingyu 你用了 sidekiq,异步任务的进程和 rails 的进程也不同
进程不同吧
#74 楼 @lithium4010 等于说你用 ruby 工资还倒退了?
蛮有意思的