要不 wx 给你发简历?
发了简历但是没有任何回复,是我邮件也没法出去吗?
我自己的网络,rubygems.org 需要至少半个小时...
也不必这么绝对,招聘贴,招 java、前端还有其他语言的,找合伙人的也不是没有
5 年多 ruby 经验,可以联系我,时间充裕,微信同电话 18821768701
后面可以加上,不是问题
感觉做验证码加上箭头,会不会太好识别了(形状固定,距离圆心位置固定,只要调整角度),通过程序识别箭头,调整角度,直接调接口
我感觉应该把箭头去掉才是验证码
我也复现了,在该页面点击其他的元素,只有 url 变了,页面还是 404,需要刷新整个页面
修改 default_scope + select
换个思路,把这些逻辑代码抽到一个类里面,可以放在 app/services/下,然后rake调用这个类,controller也可以调用这个类
感谢提示,换个思路,把局部变量换成方法,问题解决了。
l = -> { puts c }
define_method(:c) { 3 }
l.call
ps: 通过实例变量可以绕过这个我知道,但是写起来就不太雅观~
最开始用 vim,后用 rubymine(方便跳转),后回归到 neovim(解决了代码跳转的痛点,另外原生 vim 剪贴板不好用,还有各种乱七八糟原因,选择了 neovim 代替 vim)
现在用的 neovim,代码跳转使用 ctag(方法,类跳转,甚至一些 rails 的东西也能跳转,比如 has_many,scope :xxx, -> {}),深入使用还发现支持跳转到 gem 内部,基本解决了跳转的问题,不过类型推断还是有点弱。另外一些插件比如 rails.vim 实现 controller 到 view 的互相跳转,加上 key mapping 挺香的。
至于 ctrlp,nerdtree 什么也不说了,熟悉 vim 的应该都知道,下面贴个图,当我在 find_by! 方法上按下 ctrl + ],ctag 自动替我找到 gem 内部的 find_by! 方法
代码补全用 YCM(现在被 TabNine 代替),如下是补全效果
wsl 是可以运行 windows 可执行程序的,比如 ipconfig.exe、qq.exe,甚至 windows 的程序可以结合 linux 的管道以及其他命令来使用。
另外也不麻烦,推荐装一个 cmder,zsh,拥有比较良好的终端界面。通过设置以后,打开终端可以直接进入 wsl。
三、WSL 和 RubyInstaller
前者在虚拟机中运行,后者在本机中运行,它们的比较最终要看用途,比如在本机运行的 Ruby 可以做一些在 Windows 上的日常管理工作。
这里我有个问题,WSL 可以运行 windows 的 exe,并且文件共享。WSL 里的 ruby,应该也可以做 Windows 上的日常管理工作。
看到提供的 api,提个建议,提供更优雅的元编程方法,达到如下效果:
class User < ActiveRecord::Base
action_store :like, :post
action_store :block, :user
end
使用:
user = User.first
post = Post.first
user2 = User.last
user.like post
user.like? post # user.liked? post
user.unlike post
user.block user2
user.block? user2 # user.blocked? user2
user.unblock user2
这个应该搞 monorepo,放一个 git repo 里
即使是这样,ruby 的特性也决定了,你并不能直接跳转到调用服务的定义处,只能通过 复制 -> 搜索 -> 粘贴 -> 选择
除了有网络 IO,用起来就跟普通函数调用没啥区别。java 强类型的,屏蔽底层细节之后,RPC 调用之后返回值是一个具体的对象(但是本质上是个接口,一堆 getter 方法)。
一个人维护多个微服务不是问题,问题取决于生态。
之前写 JAVA spring boot 微服务,一个大项目(按团队/业务部门)下有 N 个 module,每个 module 容器化独立部署微服务。
module 之间通过 RPC 调用,但因为 controller 遵循接口的方式去实现。用 IDE,RPC 调用端可以直接跳转到代码的实现,进行修改。
体验就是,跟正常的单体应用开发区别不是很大,微服务只是一种解耦的方式而已,好处就是便于维护(解耦的本质),写的也很爽。
但是 ruby 做微服务,如果在 N 个项目跳来跳去的,简直是一种灾难。
1.安装 ctag,ctrl-] 跳转到定义,ctags --recurse . `bundle show --paths`
生成索引之后,函数/类的定义可以跳转到 gem 里
我也用的 vue + element,解决方式是自己构造 formData,把 object 传进去
append(formData, obj, prefix) {
if (Array.isArray(obj)) {
for (const item of obj) {
this.append(formData, item, `${prefix}[]`);
}
} else if (typeof obj === 'object') {
var isObject = false
for(var prop in obj) {
if (obj.hasOwnProperty(prop)) {
isObject = true
}
}
if (isObject) {
for (const key in obj) {
var value = obj[key];
if (value === null || value === undefined) {
continue;
}
this.append(formData, value, `${prefix}[${key}]`);
}
} else {
formData.append(prefix, obj);
}
} else {
formData.append(prefix, obj);
}
},
用的时候
var formData = new FormData();
this.append(formData, this.obj, "obj");
this.fileList.map(item => {
if (item.status === "ready") {
formData.append("obj[your_attach_association][]", item.raw);
}
});
使用中遇到一个问题,使用了 rvm,在不同项目下会自动切换 ruby 版本。
当进入一个其他 ruby 版本项目的时候:
/Users/tiny/.local/share/ecdict/ecrepl:13:in `require': cannot load such file -- sqlite3 (LoadError)
from /Users/tiny/.local/share/ecdict/ecrepl:13:in `<main>'
现在的问题要得到解决,需要我在每个 ruby 版本的 gems 都去 bundle install 一下
这种情况下,是不是可以通过 sh 脚本来做一些优化...
搞定了,没什么特别喜欢的头像,就一直用的这个~
export PATH="~/.local/share/ecdict:$PATH"
试了一下,这里要换成具体路径,比如/Users/xxx
,不能用~
,我是 mac
然后这几步应该之前都执行过了,没有问题
chmod +x ecdict.rb
chmod +x ecrepl.rb
mv ecdict.rb ecdict
mv ecrepl.rb ecrepl
重开 shell 也一样
puts caller
JMX,加@ManagedResource注解即可
如果你用了 springboot,可以在 springboot admin 后台直接执行
命令行的话,有几个jmx 客户端
ps:本地的话,还可以用 jconsole,可以对现有线程的方法进行调用
可以加一个字段,比如 should_delete
然后对Tagging.where(tag_id: delete_tag_ids)
做批量更新
冲突时update should_delete = 1
,然后再Tagging.where(should_delete:1).delete
利用第二篇文章,做到了,非常感谢,很有用!
2.try(:test1)
2&.test1
后者会抛出 NoMethodError
我就用的 ctag,vim 下 ctrl + ] 可以跳转