有没有一种简单的方法可以使用Avalon编辑来突出显示匹配的括号和其他字符,如{}""?
我正在使用这个库进行会话.
https://github.com/codegangsta/martini-contrib/tree/master/sessions
它说:
建议使用32或64字节的身份验证密钥.加密密钥(如果已设置)必须为16,24或32字节才能选择AES-128,AES-192或AES-256模式.
我如何生成一个64字节的密钥,它是否直截了当[]byte"64characterslongstring",我认为它并不总是这么直接?
我已经为独立和嵌入式使用创建了一个"基础"存储库结构(例如,使用CustomerRepository),以避免不断检查错误,并为Gorp(数据库工具包)创建抽象,并创建一个更多的API我很喜欢.
我检查了这个基本结构中的错误,如果发现了一个就发生了恐慌,就像我认为它确实存在一样,然后它表示一个dev错误,代码可能也会出现恐慌,因为在数据进入存储库之前会发生验证等问题. .
我发现了这个问题Go Error Handling Techniques,但它没有涵盖像我一样在基础结构中包装错误而只是恐慌.
我做了什么惯用Go?
package repositories
import (
"github.com/coopernurse/gorp"
)
type Repository struct {
Gorp gorp.SqlExecutor
}
func (r *Repository) GetById(i interface{}, id int) interface{} {
obj, err := r.Gorp.Get(i, id)
if err != nil {
panic(err)
}
return obj
}
func (r *Repository) Get(holder interface{}, query string, args ...interface{}) interface{} {
if err := Gorp.SelectOne(holder, query, args); err != nil {
panic(err)
}
}
func (r *Repository) Select(i interface{}, query string, args ...interface{}) …Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用vagrant在Windows上为Rails开发设置一个Ubuntu虚拟机.
我所做的就是先创建一个"普通" VM和SSHed进去,然后跑了,我需要这样的所有命令sudo易于得到安装apache,以确保他们的工作(这是他们所做的),将它们放入一个前壳脚本.
当我尝试使用我所做的shell脚本运行vagrant时,它会出现一个非常长的错误消息,例如stdin:不是tty和其他同样神秘的错误消息.
我的流浪文件看起来像这样:
Vagrant.configure("2") do |config|
config.vm.box = "precise32"
config.vm.provision :shell, :path => "Vagrant.sh"
config.vm.network :forwarded_port, host: 3003, guest: 3000, auto_correct: true
end
Run Code Online (Sandbox Code Playgroud)
我的shell脚本在这里(因为它有点长,GitHub提供语法高亮):https: //gist.github.com/leebrooks0/5477591
和控制台输出在这里:https: //gist.github.com/leebrooks0/5477627
任何帮助将不胜感激.
经过艰难的我已经意识到,甚至没有从流浪汉文档演示脚本(http://docs.vagrantup.com/v2/getting-started/provisioning.html)的作品,这是很奇怪的,因为该脚本绝对昨天工作时我开始做这个工作并试了一下.
我正在使用Gorp进行数据库访问,Gorp有一个标准DbMap类型,以及Transaction当你想要回滚时的类型.两种类型都实现了SqlExecutor接口.
因此,我正在编程SqlExecutor接口,所以我可以使用事务,如果我想要,而无需更改我的代码.
然后我初始化Gorp DbMap或者Transaction将其作为字段属性传递.问题是我需要一个指向Gorp"对象"的指针,否则如果我使用一个Transaction如果Gorp"对象"通过值而不是引用传递,我将如何能够回滚.
然后我收到一条消息,如
r.Gorp.Get undefined (type *gorp.SqlExecutor has no field or method Get)
Run Code Online (Sandbox Code Playgroud)
当我尝试使用我的代码.我该如何调用这些方法?
代码示例如下.
package repositories
import (
"github.com/coopernurse/gorp"
)
type Repository struct {
Gorp *gorp.SqlExecutor // <<<< Need pointer so I can rollback
}
func (r *Repository) GetById(i interface{}, key interface{}) interface{} {
obj, err := r.Gorp.Get(i, key)
if err != nil {
panic(err)
}
return obj
}
Run Code Online (Sandbox Code Playgroud) 根据这个答案,他们是,但随后海报说JRuby中的事情有所不同,所以我很困惑?
我正在使用类实例变量实现多租户解决方案,因此我使用的Ruby实现或Web服务器无关紧要,我需要确保数据不会被泄露.
这是我的代码:
class Tenant < ActiveRecord::Base
def self.current_tenant=(tenant)
@tenant = tenant
end
def self.current_tenant
@tenant
end
end
Run Code Online (Sandbox Code Playgroud)
我需要做些什么才能确保无论发生什么(更改Ruby实现,更改Web服务器,新的Ruby线程功能等),我的代码都是线程安全的?
如果一个人正在使用数据库,一个Null*类型对大多数情况都很有用,因为通常不希望"零"值通过,你想要NOT NULL约束等,并提醒你没有传入所有必要的数据.
因此,您创建如下所示的结构:
type Role struct {
Id sql.NullInt64
Code sql.NullString
}
Run Code Online (Sandbox Code Playgroud)
多数民众赞成,但现在你无法直接访问这些属性并且必须同时使用Role.Id.Value以获取和设置,当你每次想要访问的时候都需要额外的步骤时,这将在大型应用程序中变得相当老旧.属性.
如果你可以直接分配,那将是很好的.Role.Code = "Fsfs",并且能够做Role.Code.IsNull你喜欢null检查的事情.这样的事情可能吗?
如何在Go中进行后台处理/排队?
例如,用户注册,并向您发送确认电子邮件 - 您希望在后台发送确认电子邮件,因为它可能很慢,邮件服务器可能已关闭等等.
在Ruby中,一个非常好的解决方案是DelayedJob,它将您的工作排队到关系数据库(即简单可靠),然后使用后台工作程序来运行任务,并在作业失败时重试.
我正在寻找一个简单可靠的解决方案,如果可能的话,不是低级别的.
该fmt包具有一些字符串格式化功能.
Sprint*我很确定代表字符串打印.
Print*写给STDOUT F这些Fprint*功能代表什么?
我有一些代码可以使用 Omniauth 为 Oauth 查找用户。
如果用户在第 1 天使用 Facebook 登录,在第 2 天使用 FB 更改他们的电子邮件地址并在第 3 天重新登录我的应用程序,我想更新存档的电子邮件地址。
下面的代码应该同步电子邮件地址。我使用 AwesomePrint 将电子邮件地址写入控制台,它们是不同的。但是 save 返回 true 但电子邮件地址没有更新?
def self.find_or_create_for_oauth(auth)
social_identity = SocialIdentity.find_for_oauth(auth.provider, auth.uid)
email = auth.info.email
if social_identity.nil?
user = find_by_email(email)
if user.nil?
# create user for email with random password
end
social_identity = user.social_identities.create!(
provider: auth.provider,
uid: auth.uid
)
end
user = social_identity.user
ap user.email # email address 1
ap email # email address 2
if user.email != email
user.email = email
ap …Run Code Online (Sandbox Code Playgroud)