为什么要说‘即使’,太 tough 了吧
你们觉得不值,是你们本来就有这样的学习能力,和理性思维能力吧
能花 5w 块钱去,可以学到一点学习能力,学到理性思维,甚至可以看眼看一下世界,我觉得是挺值得(前提是你没有这个能力,比如上面的某个妹子),而且越早学越好
有个相关问题,如何能交到层次比较高的朋友呢?
我有一些层次比较低的朋友(这么说可能不对,姑且这么理解吧),从我这里得到很多,价值上的,观念上的,甚至经济上的,有的时候他们都会说和我在一起学到很多,但我自己也想交到这样能学到很多的朋友。
说实话我身边的人,除了几个同事;就算是以前在大学最认真的女生,现在也很少学习,看书,甚至不思考,知识水平永远在高三的巅峰停滞不前。真的觉得是不是自己的交友圈太 low 了,以至于经常会怀疑自己。总结下来感觉自己总是在进步,心理上有点看不起毕业了就再无寸进的人,但是交友上也很难上升一个层次,导致我现在反而怀疑我身边的朋友是不是觉得我是个怪人...
大概就是不断膨胀的文化需要,和低下的交友能力之间的矛盾,偏偏我还是一个喜欢聊天的人,真是蛋蛋疼
#11 楼 @ruby_sky #8 楼 @tzwm 想彻底解决问题
#10 楼 @MrPasserby 我也这么想 present records, with API::Entities::Records 改成 present [], with API::Entities::Records 内存就增长很慢,而且有回收的迹象,但是也看不出什么,补充一下这块的代码:
module API
module Entities
class Records < Base
expose :comments_count
expose :followers, using: API::Entities::Users
expose :cells, unless: :without_cells do |instance, options|
self.cells(options[:columns] || self.columns)
end
def columns
object.sheet.columns
end
def cells(columns)
{}.tap do |cells_hash|
raw_cells = object.cells
columns.each do |column|
value = raw_cells[column.column_id]
case column.type
when 'date'
value = value.try(:iso8601, 3)
when 'metadata'
meta_type = column.config['type']
value = object.try(meta_type)
if %w(created_at updated_at).include?(meta_type)
value = value.try(:iso8601, 3)
end
end
cells_hash[column.column_id] = value
end
end
end
end
end
end
#7 楼 @jicheng1014 唉,超级厉害,如果一直访问几万条数据的 api,分分钟钟跑满了,现在换成 4G 要稍稍好一些,但是内存还是一直上涨
主要泄露部分的代码 @huacnlee 能否帮 review 下
get 'records' do
view = View.find(params[:view_id])
# 省略鉴权部分
# view.records_list_ids 是一个大数组,直接从 redis 中拿出来的,可能高达2万个字段,paginate_ids代码见下方
records_ids = paginate_ids(view.records_list_ids)
records = Record.where(id: { '$in' => records_ids })
# where in 之后的排序,O(n)算法,应该没问题
records = view.sort_records(records)
present records, with API::Entities::Records
end
def paginate_ids(collection)
return [] if collection.blank?
base_record_index = collection.find_index(params[:from])
if params[:direction] == 'forward'
res = collection.slice(base_record_index, params[:limit])
else
offset = base_record_index - params[:limit]
res = if offset >= 0
collection.slice(offset, params[:limit] + 1)
else
collection.slice(0, base_record_index + 1)
end
end
end
rspec 的 receive 方法似乎无法获取到
想了一个办法,在 broadcast_to 方法上记录下接受的参数,在 rspec 那边读取,可以实现测试了,感谢
@hfpp2012 楼主大大,你对 actioncable 的单元测试有没有经验?
原以为很简单,搞了一天才发现掉坑里了
查了一下 ruby-china 源码的 actioncable 部分也没有写单元测试
前端调用
away: ->
# Calls `AppearanceChannel#away` on the server
@perform("away")
可以调用 AppearanceChannel#away,但是调用之后,如果 AppearanceChannel#away 想再给这个 sender 回一个消息,就做不到了。
而 socket.io 可以这样
socket.on('records', function(sheet_id){
records = Record.all
//直接返回records给sender
socket.emit('records', records);
});
actioncable 有办法这样做吗?
也就是说有什么办法能 perform 之后收到一个后端的返回?
好像只能在每个 perform 后带一个 uuid,后端接到后都 stream_from uuid,处理好结果后返回给 uuid,前端收到一次数据后断开
最近也在使用 actioncable,但是发现 actioncable 似乎没办法实现 socket.io 里比较简单的几个方法:
// sending to sender-client only
socket.emit('message', "this is a test");
// sending to all clients except sender
socket.broadcast.emit('message', "this is a test");
// sending to individual socketid
socket.broadcast.to(socketid).emit('message', 'for your eyes only');
不知道有无办法解决?
这浑水没必要趟吧?
#8 楼 @qinfanpeng #7 楼 @kikyous 我试了下汉子好的,但是数字又被 cut 不输出了,有没有同时输出汉子,数字,英文不 cut 的方案?
我是这样写的 @messages && @messages.xxxx
#1 楼 @qinfanpeng 嗯,但是没办法,如果直接搜中文就会这样。