我刚刚开始使用Go.我的代码开始有很多这样的:
if err != nil {
//handle err
}
Run Code Online (Sandbox Code Playgroud)
或这个
if err := rows.Scan(&some_column); err != nil {
//handle err
}
Run Code Online (Sandbox Code Playgroud)
在Go中检查和处理错误是否有一些很好的习语/策略/最佳实践?
编辑澄清:我不是在追逐或暗示Go团队想出更好的东西.我问的是我做得对,还是我错过了社区提出的一些技巧.谢谢大家.
我在两种情况下都要求:技术上和风格上.
我的应用程序/守护程序可以保留pidfile /opt/my_app/run/吗?
这样做真的很糟糕吗?
我的需要是这样的:我的守护进程在特定用户下运行,并且实现者必须mkdir一个新的目录/var/run,chown和chgrp它以使我的守护进程运行.似乎更容易将pidfile保持为本地(对守护进程).
它说,在资产管道的Ruby on Rails指南中
公共场所下的任何资产都将由应用程序或Web服务器作为静态文件提供.您应该将app/assets用于必须在提供之前进行一些预处理的文件.
http://guides.rubyonrails.org/asset_pipeline.html
对我来说,这表示图像应该保存在公共目录中,因为它们可以由我的Web服务器静态提供,不需要预处理.
放置图像有什么好处assets/吗?
这是失败的:
List<String> names = new ArrayList<String>();
names.add("sold");
Query query = em.createQuery("FROM PropField propField WHERE propField.name IN (?)");
query.setParameter(1, names);
List<PropField> fields = query.getResultList();
Run Code Online (Sandbox Code Playgroud)
这是这样的:
List<String> names = new ArrayList<String>();
names.add("sold");
Query query = em.createQuery("FROM PropField propField WHERE propField.name IN (?)");
query.setParameter(1, names.toArray());
List<PropField> fields = query.getResultList();
Run Code Online (Sandbox Code Playgroud)
这个也是:
List<String> names = new ArrayList<String>();
names.add("sold");
Query query = em.createQuery("FROM PropField propField WHERE propField.name IN ?");
query.setParameter(1, names.toArray());
List<PropField> fields = query.getResultList();
Run Code Online (Sandbox Code Playgroud)
以及其他每一种排列.检查了文档,它说第一个选项应该有效.这是最好的例外.
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String
at org.hibernate.type.StringType.toString(StringType.java:67)
Run Code Online (Sandbox Code Playgroud)
Hibernate的HQL使用 …
我们的DAO层有19种方法,每种方法都有一些变化:
public TicketProp saveTicketProp(TicketProp prop) {
EntityManager em = this.emf.createEntityManager();
try {
em.getTransaction().begin();
prop = (TicketProp) em.merge(prop);
em.getTransaction().commit();
return prop;
} finally {
em.close();
}
}
Run Code Online (Sandbox Code Playgroud)
含义:在每个方法中,我们处理自己的事务并在finally块中关闭它.我们正在测试Jersey应用程序,因此我们的JUnit测试扩展了JerseyTest.每个测试方法都实例化一个Grizzly容器,运行测试,然后关闭容器.EntityManagerFactory由spring注入.我们使用JPA而不是Hibernate.
我正在监视与MySQL测试数据库的连接,它们总是很高.一个测试单独运行MySQL"Max_used_connections"变量为38.为了好玩,我去了所有em.close()调用注释,测试仍然使用38个连接.
我正在使用Hibernate的内置连接池(我知道不是用于prod使用).我仍然期待某种智能池化.
我处理EntityManager错了吗?我怎么能关闭连接?
我们需要使用Ruby来针对现有的用户数据库授权用户.用户的密码都是使用password_compat PHP库生成的.所有哈希密码都以$ 2y开头.
我一直在使用bcrypt-ruby来尝试验证用户,但我没有找到任何成功.
#This user's password is "password"
irb(main):041:0> g = BCrypt::Password.new("$2y$10$jD.PlMQwFSYSdu4imy8oCOdqKFq/FDlW./x9cMxoUmcLgdvKCDNd6")
=> "$2y$10$jD.PlMQwFSYSdu4imy8oCOdqKFq/FDlW./x9cMxoUmcLgdvKCDNd6"
irb(main):042:0> g == "password"
=> false
irb(main):044:0> g.version
=> "2y"
irb(main):045:0> g.cost
=> 10
irb(main):046:0> g.salt
=> "$2y$10$jD.PlMQwFSYSdu4imy8oCO"
irb(main):047:0> g.hash
=> -219334950017117414
Run Code Online (Sandbox Code Playgroud)
我对bcrypt或加密一般都不是很熟悉.bcrypt-ruby可以处理$ 2y吗?我查看了源代码,但我认为不可以.这是底层操作系统的故障(我使用OS X)?
我有两个型号:
Novel has_many :pages
Page belongs_to :novel
Run Code Online (Sandbox Code Playgroud)
我想根据页数列出流行的小说.从本质上讲,我希望从此查询的结果中加载Novel模型:
select p.novel_id, count(*) as count
from pages p
GROUP BY p.novel_id
ORDER BY count DESC
Run Code Online (Sandbox Code Playgroud)
我确信使用named_scope在Rails 2.3中有一些可爱的方法,但我无法让它工作.另外,如果它确实有效,它会变慢狗吗?
我已经考虑过将page_count保留在Novel上,但这似乎违反了某些事情(惯例,规范化,我的灵魂).