小编Log*_*man的帖子

为iOS创建静态库是否值得?

我想在大多数项目中包含代码.AFNetworking,CoreData类别和单元测试等等.

将所有这些包含在静态库中,然后在每个项目中使用它似乎是合乎逻辑的.我注意到,许多第三方库(如AFNetworking及其前身ASIHTTP)都包含在项目中,方法是复制所有源文件,然后手动将必要的库链接到项目目标.

在我看来,这似乎是最简单的方法.花了相当多的时间来弄清楚如何将现有的静态库包含到项目中.即使我知道如何,对每个新项目来说,这仍然是一件痛苦的事情.此外,您指定的标头搜索路径是具有静态库文件的本地目录.将静态库的文件复制到项目中会不会更容易,有没有办法?这与直接包含类文件的想法相同,就像大多数库似乎已经完成的那样,但它会更有条理,因为所有内容都会被集中到一个库项目中,而不是在任何地方都有类文件,并且必须包含它们中的每一个.

静态库感觉它们应该是正确的方法.创建一个可以与包含每个项目所需的类的所有项目一起使用的库.说得通.我只是冲突,因为看起来正确的方法是将所有内容从"正式"库中删除,而只是复制所有类文件.

我想我只是在寻找经验丰富的开发人员认为最好的选择.

xcode objective-c static-libraries ios

7
推荐指数
1
解决办法
845
查看次数

数据库表的最佳设计是什么,可以由两个不同的资源拥有,因此需要两个不同的外键?

我的应用程序具有可属于组的用户的通知设置.组管理员可以定义整个组的设置,以便在任何用户执行操作时,将通知管理员.管理员还可以定义单个用户的设置,这将覆盖组设置.

现在我有一个包含列的数据库:group_id, action1, action2, action3, ....这些操作是布尔值,用于确定当用户在其组中执行该操作时是否通知管理员.

我可以创建一个由User模型而不是Group模型拥有的单独的表,但是将完全相同的数据存储在一个完全独立的表中并保存更改group_iduser_id.

另一种选择是添加user_id到我已经拥有的表中,并允许空值group_id.在确定用户的通知设置时,应用程序将首先根据用户选择设置,然后回退到group_id非空的设置.这感觉效率低下,因为数据库中会有很多空值,但这对我来说肯定需要的工作量更少.

这种情况的设计是否比我描述的两种设计更有效?

database database-design foreign-keys relational-database

7
推荐指数
1
解决办法
4170
查看次数

使用Pundit gem授权一组ID

我有一个has_many关联的多选框.params进来如下:

foo_ids: ["1", "2", "3"]
Run Code Online (Sandbox Code Playgroud)

使用强参数,我不允许这个属性,因为我想自己授权,所以人们不能只是把它们想要的东西放进去.

def update
  bar.foos = authorized_foos
  bar.update(baz_params)
  respond_with bar
end

private

  def authorized_foos
    foos = Foo.find(params[:baz][:foo_ids])
    foos.each do |foo|
      authorize foo, :manage?
    end
  end
Run Code Online (Sandbox Code Playgroud)

这种方法将迫使我找到所有的foos,循环遍历它们,并单独授权每个foos.是否有更简单的方法来管理has_many授权,最好是使用Pundit gem?

ruby-on-rails strong-parameters ruby-on-rails-4 pundit

7
推荐指数
1
解决办法
1374
查看次数

使用Javascript进行图像处理?

我正在尝试编写一个greasemonkey脚本,它最好能够处理图像(特别是,找到图像中最暗的像素).有办法做到这一点还是我必须嵌入闪存?

javascript greasemonkey image-manipulation

6
推荐指数
1
解决办法
6162
查看次数

确定扑克牌是否是直线的功能?

对于家庭作业,我获得了一个卡类,其中列举了Rank和Suit的类型.我需要比较两个扑克牌(每手牌是ArrayList5张牌)并决定胜者.

这个isStraight()功能真让我烦恼,因为我必须在Ace之后重新计算.例如,

女王,王,ACE,两,三

仍被认为是直的.编写此功能的最佳方法是什么?

这是Rank/Suit枚举类型代码,如果有帮助的话.

public enum Rank
{
    TWO(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8), NINE(9),
    TEN(10), JACK(11), QUEEN(12), KING(13), ACE(14);

    private final int points;

    private Rank(int points)
    {
        this.points = points;
    }

    public int points()
    {
        return this.points;
    }
}

public enum Suit
{
    DIAMONDS, CLUBS, HEARTS, SPADES;
}
Run Code Online (Sandbox Code Playgroud)

java poker performance

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

在数据库中,将时间段存储为开始/结束日期,开始日期和时间长度更好吗?

这是一个完全假设的问题:假设我有一个数据库,我需要为用户存储会员资格,这可以持续一段特定的时间(1个月,3个月,6个月,1年等).

有一个Memberships包含字段的表(每个日期存储为unix时间戳)是否更好?

user_id INT,start_date INT,end_date INT

或者将其存储为:

user_id INT,start_date INT,length INT

无论哪种方式,您都可以查询具有活动成员资格的用户(例如).对于后一种情况,每次运行查询时都需要执行算术,而前一种情况只需要计算一次结束日期(插入时).从这个角度来看,似乎前者的设计更好 - 但它有什么缺点吗?是否存在可以通过存储长度来避免的常见问题,这是通过存储日期无法避免的?

此外,unix时间戳是存储时间/日期数据时的方式,还是像DATETIME首选的那样?我遇到了两种数据类型(过多的转换)的问题,但通常会解决unix时间戳问题.如果首选像DATETIME这样的东西,这会如何改变我以前的设计问题的答案?

database database-design

6
推荐指数
1
解决办法
2926
查看次数

使用TinyMCE 4进入onExecCommand事件

我正在使用TinyMCE 4,但文档很糟糕.我试图在另一个div(编辑器之外)中提供内容的实时预览.现在我正在听这些事件:

$(document).on('tinymce:changed tinymce:init', ...)
Run Code Online (Sandbox Code Playgroud)

这在输入文本时有效,但在执行命令时不会触发(例如,将现有文本更改为粗体).

看起来在TinyMCE 3.x中有一个onExecCommand事件可以完成我想要的事情.但我找不到任何关于如何监听全局jQuery事件的文档,就像我正在使用change和init一样.有谁知道它正在发射什么事件?

tinymce tinymce-4

6
推荐指数
1
解决办法
3250
查看次数

来自Bundler的新鲜Ruby gem - 无法加载我的version.rb文件?

我想制作一个新的Ruby应用程序,所以我决定用bundle gem foo它来做.这给了我整体:

lib/
  foo/
    version.rb
  foo.rb
Gemfile
Rakefile
foo.gemspec
README.md
Run Code Online (Sandbox Code Playgroud)

结构体.现在,当我跑步时ruby foo.rb,我得到:

`require': cannot load such file -- foo/version (LoadError)
Run Code Online (Sandbox Code Playgroud)

foo.rb只是默认值:

require 'foo/version'

module Foo
end
Run Code Online (Sandbox Code Playgroud)

宝石可以不靠自己跑吗?我希望我不必将我的宝石包含在一个示例应用程序中,只是为了测试它?

ruby gem rubygems

6
推荐指数
1
解决办法
1023
查看次数

是否可以将新的测试版APK上传到Google Play并删除现有的制作APK?

我想停用制作APK,上传测试版APK,保存更改并发布.

现在我处于无法获得beta测试链接的情况,因为我的应用程序未发布.我很喜欢发布,但我不希望我的生产应用程序与它一起发布.这就是我想停用生产APK的原因.

Google Play不允许我保存更改.它说'检查表单中的错误'(没有错误).我发现当我离开制作APK并且只上传新的测试版APK时,我可以保存更改(再次 - 这不是我想要的).

我是否遗漏了某些东西,或者在上传虚拟制作APK或制作全新的应用程序之外这是不可能的?

android google-play

6
推荐指数
1
解决办法
1004
查看次数

餐饮哲学家在Java中的信号量问题

我正在努力学习餐饮哲学家问题中信号量的基本要点.现在,我有一个类Chopstick,每个Chopstick都有一个信号量,有1个可用的许可证:

public class Chopstick
{
    Thread holder = null;
    private Semaphore lock = new Semaphore(1);

    public synchronized void take() throws InterruptedException
    {
        this.lock.acquire();
        holder = Thread.currentThread();

    }

    public synchronized void release()
    {   
        this.lock.release();
        holder = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

holder变量用于我不确定需要的函数:

public synchronized void conditionalRelease()
{
    if (holder == Thread.currentThread())
    {
        holder = null;
        this.lock.release();
    }
}
Run Code Online (Sandbox Code Playgroud)

该程序编译并运行,但似乎在释放筷子时遇到一些麻烦.有时,筷子会被释放,有时则不会.当他们不释放时,当所有的筷子被拿走并且一个哲学家饿了时,程序最终会挂断.

这是Philosopher类中的代码,用于在随机的时间之后释放筷子:

System.out.println(this.name + " is eating");
Thread.sleep(this.getRandTime());
System.out.println(this.name + " has finished eating");

rightChopstick.release();
System.out.println(this.name + " has released the right chopstick");
leftChopstick.release();
System.out.println(this.name …
Run Code Online (Sandbox Code Playgroud)

java multithreading semaphore locking

5
推荐指数
1
解决办法
7200
查看次数