https://ruby-china.org/topics/42140
依稀记得,后来给我个笔试题,我用了个红黑树的 gem 解决,写了几个的 minitest.
之后就没有之后了,和我说 [“你用了别人的东西”, “没写 spec", "没写注释“].
可能是想让我手写红黑树吧
"If a server receives a request with a stale term number, it rejects the request." 过期的 term 是不是应当直接无视?
如果 test case 不同的随机种子下能运行 15 次都没 bug, 那基本上就是没 bug 了,这种分布式的和时间差有关的代码不好 debug.
里面的问题,按你目前的设计,是不是不只是可能需要选举,甚至可能几分钟都没有 leader? 比如 candidates 在等票的时候收到了老 leader 的 AE RPC, 而 candidate 返回给老 leader 的 term 因为网络防火墙原因被老 leader 丢掉,这样老 leader 一直发,而 candidates 一直变回 follower, 每次都没选举成功。
应该可以,但是可能没有做到 DRY? 这个问题不大的,怎么实现都行。
不用检查,因为先执行 all server 的 term 检查,如果 leader 自己 term 比 reply 的 term 小了,leader 直接就 convert 到 follower 了,就不继续进行 leader 的工作了。如果没 convert 到 follower 就还是 leader.
你要严格执行它论文的每一个检查,一条都不能漏,不能换,不然,相信我,肯定出 bug
1 的问题,new leader 是指老 leader 离线了之后,出了若干个 candidates, 这 1 波/几波 election 之后定下来的 leader, 成了 leader 才能发 Append Entries RPC, candidates 收到的 AE RPC 可能是离线了那个老 leader 又上线了发的 (才睡醒,不知道它自己已经下台了,还在发 AE RPC), 也可能是新选出来的 leader 发的,那么这时候老 leader 的 term 肯定小于 candidate 的,这时候这个 candidate 就不能 convert 到 follower, 时间到了还要发起 election, 如果你把它直接不管 term 是大还是小都 convert 成 follower 了,那可能有这么一段时间所有人都成不了 leader(假设老 leader 的网卡坏了,只能发不能收), 导致这段时间将无 leader 可用。
2 的问题,Heartbeat 实际上就是空 entries 的 AppendEntriesRPC, 如果近段时间发过带 entries 的 RPC 就不用发 HB 了,否则就要发 HB, 以防 follower 觉得现在没有 leader. 所以你的问题的答案是,heartbeat 不带 entries, 但如果发现有 follower 缺 entries 了,那么下次就给这个 follower 单独发带 entries 的 (AE RPC), 给其他 followers 发不带 entries 的 (AE RPC, 也叫 heartbeat).
3 的问题,要检查 follower 发给 leader 的所有信息的 term, 当然也包含 AE RPC 的 reply 的 term. 因为 Leader 首先属于 All servers, 要先执行 all servers 的规定,而后才执行 leader 的规定。
上次看这篇论文还是在 19 年,可能记不太清了
是大佬,我当时没有搜到您做的 Gem
我做了 Steam 的和 Nintendo 的,感觉就是 Steam 的各个区很统一,各种 API 也很统一,但 Nintendo 就分了好多好多区,每个区都不一样,还总变,有些是从 HTML 里面找的某个 div id 拿到 CODE 去查询价格,一旦网页改了,查 CODE 的代码就得重写。像港区还有韩国区都不知道怎么弄,美区也是从 Algolia 的数据搜索里面一点点导出来
https://store.nintendo.com.hk/games/all-released-games?product_list_order=release_date_asc
港服只能找到它官网卖激活码的那种,然后挨个爬,解析 HTML, 找到 CODE.
港服那些其他的在 NS 上可以直接购买的小游戏没有找到好办法,你看我的港服 Store 也是只有 500 多个游戏
@crazyjacky 是作者 我帮你 at 他啦
正经的信息网站,做的太花哨反而会让大伙觉得是假的,我感觉你做的就挺好的 (有一个小小的建议导航栏按钮.nav-item .active 有 border radius, 但是按钮 hover 的时候非.active 没有圆角,感觉可以加一下)
Hey 谢谢!受了你的 Immigration 站很大启发
请教一下,我知道 Ransack 本身是利用 SQL 的 ILIKE 来搜索的,这种搜索只能从头连续匹配吧?比如说Ransack组合条件搜索实现
这个标题,我用ransack (空格) 搜索
, 是搜不出来的吧?
render :new
改成:
else
render :new, status: :unprocessable_entity
end
参考:https://guides.rubyonrails.org/getting_started.html
按我的理解:turbo 启用了之后要发一个 http 状态码回来,否则按 turbo stream 处理。
另:
def destroy
redirect_to root_url, status: :see_other
end
哈哈是啊!
是 API, rate limit 5 分钟 200 次请求
按 Reddit 创始人的说法:"just use the d*mn library". Devise 在 Rails 6 的时候不得不承认是很好用的,一两天就能搞懂基本用法,比如密码登录发邮件之类的。Rails7 加了 Hotwire 之后,devise 的作者一直没处理这些 Turbo 引入的不匹配情形,虽然已经有很多人比如 Go rails 的 Chris 和其他人 patch 了一下之后能用了,但是还是不够 out of box. 我个人目前在用 Sorcery 做简单的密码认证登录,我之前还录过一个小视频介绍, 你可以试试 sorcery 满不满足你的需求。高安全要求也许没那么重要,真的做到那种程度的时候你应该会有一个 Team 专门做认证系统了,在那之前我个人觉得“build the features users really want, just use the d*mn library"比较经济。
你说的二级目录是二级域名吗?subdomain? 比如www.example.com
和api.example.com
?
还是说 routes.rb 里面配置的路由?namespace :api do ... end?
如果你说的是 subdomain 的话,只要在 DNS 解析指向 A 记录 IP, 然后dokku domains:set sample-app api.example.com
就好了
如果你说的是 routes.rb 里配置的路由,这个就和 dokku 没啥关系了,在 Rails 里搞就好了。
或者你是写了两个 Rails App? 这个我就没想过了。
大部分情况下是可以的,但是有的时候自己写不一定那么面面俱到。举个例子比如说,如果攻击者猜的 email 系统内没有,那么后端也不会运行 password 的加密算法,所以返回结果是很快的,阻止了登录。但是这种快速的响应会让攻击者知道这个 email 系统内是没有的,那么它就可以很快的去尝试下一个 email. 而 Devise 或者 Sorcery 都会处理这个情况,即使 email 是不存在的,它们还是会打一个时间差,不会马上返回结果,这样攻击者就无法猜出 email 是有还是没有 当然了如果是内部系统啥的,这些就不必考虑,自己 roll 一个 has_secure_password 的认证系统就可以了!
研究了两天,感觉 Dockerfile 的写法,大家都不太一样,不知道哪种是最佳实践,坑比较少。早上找了一个 3 小时的教程直接学一下 Docker. 您的意思是,还是用 Dokku 的 Dockerfile 方式部署,不是纯用 Docker 部署,还是完全抛弃 Dokku 啦?
这个头一次听说,看起来也不错呀!
我没有研究过 Docker 的用法,看了一下还得花点时间才能看懂。请问您现在不用“BUILDPACK_VENDOR_URL”环境变量指向国内文件存储镜像这种加速方式了吗?
我以前也投过一次,一开始说是没有通过笔试所以被拒绝了。而我都没有收到过笔试题。后面又沟通了一下,说是因为想招经验比较丰富的。
你俩说的不是一本,他说那本是以前出的。话说你这本感觉咋样?
真是不容易呀,我还以为是容器的问题,要是一开始知道 AS 没问题的话就不会怀疑 storage 了。破案了就好
这个跟 Action Text 没关系,取决于你的 storage, 你用的是 Disk, 在本地就是一直存在的,但是 Docker 容器重新部署时候 Disk 也是新的,以前存的就没了,和 Heroku 是一样的。你换成 AWS s3 这些服务就好了。https://edgeguides.rubyonrails.org/active_storage_overview.html
惭愧,只会点很初级的英语,以前看美音的电视剧比较多,也没有特意去学,读得多听得多就潜移默化的学会了点儿。 目前没有在国外团队工作。
字体是小,下次我会换一个桌面分辨率。但不应该尺寸小,1080P 也不会模糊。是不是您那边高清版本没有加载完毕?请问您方便截个图我看一下吗?
很棒!捉个虫:“desc "Rum yarn install"” -> desc "Run yarn install"
您不用客气!! 我刚好看到别人问了这个问题,然后看到了另一个人的回答才学会的,现学现卖😄
bin/dev是有了bundling方案之后才开始用的, 以前我也是用 rails s, 你可以关注下 DHH 的推特,他有时候发布新的 gem 的时候会出一个演示视频,我记得我是从他的视频里学的,也就是最近几个月发的。
stimulus 来处理“are you sure?"也是一个方案,我以前也是那么写的,后来才知道可以用 Turbo, 惭愧惭愧!
button_to , disable_with: "loading..."这个,目前我没有看到比较好的像 ujs 一样方便的方案,但是有一个用 CSS 来处理的方法:https://github.com/hotwired/turbo/pull/386. 估计以后可能慢慢完善了也能有像以前那么方便的方法吧!
Hey! 我试了一下,你的代码是没问题的,可以弹出are you sure?
你试一下:删除 Gemfile.lock, 先 gem uninstall turbo-rails. 选 all versions, 把本地的 turbo-rails 都删了,然后重新 bundle install. 另外我把 debug gem 也删了 (因为我这没有 debug gem).
这么做的原因是,我发现你的 turbo-rails gem 里面的版本是 turbo-rails-7.1.1, 但是谷歌了一下,这个版本被 yank 了 (https://discuss.hotwired.dev/t/fyi-turbo-rails-gem-version-7-1-1-was-yanked/3452). 现在的版本是 turbo-rails 1.0.0.
然后你再bin/dev
试一下,看看有没有弹出are you sure
不行的话再回复看看还有啥问题,应该是可以的。
如果用 cssbundling-rails 和 jsbundling-rails 这两个 gem 的话,启动 rails 就不要用 rails s
了,不知道你有没有试一下用bin/dev
? 应该是不需要手动 yarn 的。