小编gmo*_*ore的帖子

去错误处理技术

我刚刚开始使用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团队想出更好的东西.我问的是我做得对,还是我错过了社区提出的一些技巧.谢谢大家.

go

106
推荐指数
3
解决办法
2万
查看次数

我的pidfile必须位于/ var/run中吗?

我在两种情况下都要求:技术上和风格上.

我的应用程序/守护程序可以保留pidfile /opt/my_app/run/吗?

这样做真的很糟糕吗?

我的需要是这样的:我的守护进程在特定用户下运行,并且实现者必须mkdir一个新的目录/var/run,chown和chgrp它以使我的守护进程运行.似乎更容易将pidfile保持为本地(对守护进程).

unix linux ubuntu pid

70
推荐指数
4
解决办法
5万
查看次数

我为什么要使用Asset Pipeline来提供图像?

它说,在资产管道的Ruby on Rails指南中

公共场所下的任何资产都将由应用程序或Web服务器作为静态文件提供.您应该将app/assets用于必须在提供之前进行一些预处理的文件.

http://guides.rubyonrails.org/asset_pipeline.html

对我来说,这表示图像应该保存在公共目录中,因为它们可以由我的Web服务器静态提供,不需要预处理.

放置图像有什么好处assets/吗?

ruby-on-rails asset-pipeline

12
推荐指数
1
解决办法
318
查看次数

使用IN的JPA EntityManager createQuery()不起作用

这是失败的:

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使用 …

java orm hibernate jpa

7
推荐指数
2
解决办法
4万
查看次数

确保EntityManager连接关闭的正确方法是什么?

我们的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错了吗?我怎么能关闭连接?

mysql hibernate jpa jersey entitymanager

5
推荐指数
2
解决办法
8707
查看次数

使用bcrypt-ruby使用版本$ 2y验证散列密码

我们需要使用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)?

php ruby bcrypt bcrypt-ruby

3
推荐指数
1
解决办法
1525
查看次数

根据Rails中has_many关系的计数选择流行的模型

我有两个型号:

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上,但这似乎违反了某些事情(惯例,规范化,我的灵魂).

ruby-on-rails

2
推荐指数
1
解决办法
495
查看次数