小编Sté*_*hen的帖子

JavaScript/HTML5中的音效

我正在使用HTML5来编写游戏; 我现在遇到的障碍是如何播放声音效果.

具体要求很少:

  • 播放和混合多种声音,
  • 多次播放相同的样本,可能重叠播放,
  • 在任何点中断播放样本,
  • 最好播放包含(低质量)原始PCM的WAV文件,但我当然可以转换它们.

我的第一种方法是使用HTML5 <audio>元素并在我的页面中定义所有声音效果.Firefox播放WAV文件只是很好,但#play多次调用并不能真正多次播放样本.根据我对HTML5规范的理解,该<audio>元素还可以跟踪播放状态,因此可以解释原因.

我的直接想法是克隆音频元素,所以我创建了以下微小的JavaScript库来为我做(取决于jQuery):

var Snd = {
  init: function() {
    $("audio").each(function() {
      var src = this.getAttribute('src');
      if (src.substring(0, 4) !== "snd/") { return; }
      // Cut out the basename (strip directory and extension)
      var name = src.substring(4, src.length - 4);
      // Create the helper function, which clones the audio object and plays it
      var Constructor = function() {};
      Constructor.prototype = this;
      Snd[name] = function() {
        var clone = …
Run Code Online (Sandbox Code Playgroud)

javascript html5

314
推荐指数
5
解决办法
27万
查看次数

没有这样的文件加载 - readline

我收到以下错误:

$script/console
Loading development environment (Rails 2.2.2)
/opt/ruby-enterprise-1.8.6-20080709/lib/ruby/1.8/irb/completion.rb:10:in `require': no such file to load -- readline (LoadError)
Run Code Online (Sandbox Code Playgroud)

我在哪里可以获取该文件以及它应该进入哪个目录?

谢谢!

ruby ruby-on-rails

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

activerecord发现所有未包含在数组中

我从代码的另一部分有一系列团队名称,我想找到不在该数组中的所有团队.我尝试过以下内容并不起作用.

@team_exclude_list = ['Team 1', 'Team 2', 'Team 3']
@teams = Team.where("name != ?", @team_exclude_list)
Run Code Online (Sandbox Code Playgroud)

这是在Rails 3中,Googles并没有给我太多的爱.

activerecord ruby-on-rails ruby-on-rails-3

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

为什么"TranslateMessage"和"DispatchMessage"会分开调用?

我见过的大多数Win32主循环都是这样的结构:

while (GetMessage(&message, NULL, 0, 0) > 0) {
  TranslateMessage(&message);
  DispatchMessage(&message);
}
Run Code Online (Sandbox Code Playgroud)

有人指出,MsgWaitForMultipleObjects可以用来为主循环添加一些变化.但有地方之间做一些场景GetMessage,TranslateMessageDispatchMessage实际上是有用的?

winapi

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

为什么enable_shared_from_this有一个非虚拟析构函数?

我有一个宠物项目,我用它来试验C++ 11的新功能.虽然我有C的经验,但我对C++还不熟悉.为了训练自己进入最佳实践,(除了阅读很多),我已经启用了一些严格的编译器参数(使用GCC 4.4.1):

-std=c++0x -Werror -Wall -Winline -Weffc++ -pedantic-errors
Run Code Online (Sandbox Code Playgroud)

这对我来说很好.到现在为止,我已经能够解决所有障碍.但是,我有需要enable_shared_from_this,这给我带来了问题.编译我的代码时可能会收到以下警告(在我的情况下是错误的)(可能由触发器引发-Weffc++):

base class ‘class std::enable_shared_from_this<Package>’ has a non-virtual destructor
Run Code Online (Sandbox Code Playgroud)

所以基本上,我对这个实现有点疑虑enable_shared_from_this,因为:

  • 这是一个类的析构函数预期为子类应该始终是虚拟的,恕我直言.
  • 析构函数是空的,为什么要它呢?
  • 我无法想象有人会想通过引用删除他们的实例enable_shared_from_this.

但我正在寻找解决这个问题的方法,所以我的问题是,是否有正确的方法来解决这个问题?并且:我认为这个析构函数是假的,或者它有真正的目的吗?

c++ gcc boost shared-ptr c++11

18
推荐指数
2
解决办法
4420
查看次数

从std :: exception的`what`返回一个动态字符串

在这一点上我确信我应该std::exception为我的所有异常抛出需求创建子类.现在我正在研究如何覆盖该what方法.

我面临的情况,如果字符串what返回是动态的,那将非常方便.例如,某些代码解析XML文件,并向错误消息添加位置或行号对我很有用.

我试图遵循Boost Exception处理指南.

我想知道的是什么:

  • what返回一个const char *,这意味着任何捕手都可能不会释放该字符串.所以我需要一些其他的地方来存储结果,但那会是哪里?(我需要线程安全.)

  • what还包括throw()其签名.虽然我可以阻止我what扔任何东西,但在我看来,这种方法真的不适合任何过于动态的东西.如果what不是正确的地方,那么我应该在哪里做这个呢?


从我到目前为止得到的答案看来,实现这一目标的唯一方法是将字符串存储在异常中.Boost指南建议不要这样做,这对我来说很困惑,因为std::runtime_error就是这样.

即使我使用的是C字符串,我也必须使用静态大小的缓冲区,或者进行内存管理也会失败.(我想知道这实际上是否是std::string复制构造函数中唯一可能出错的东西.这意味着我不会使用动态分配的C字符串获得任何东西.)

还有其他选择吗?

c++ const exception

18
推荐指数
2
解决办法
9911
查看次数

如何以最小的停机时间移交TCP侦听套接字?

虽然这个问题被标记为EventMachine,但任何语言的通用BSD套接字解决方案也非常受欢迎.


一些背景:

我有一个应用程序侦听TCP套接字.它使用常规的System V样式初始化脚本启动和关闭.

我的问题是它在准备好为TCP套接字服务之前需要一些时间来启动.它不会太长,也许只有5秒,但是在工作日需要重启时,这个时间太长了5秒.现有连接保持打开并正常完成也很重要.

重新启动应用程序的原因是补丁,升级等.不幸的是,我发现自己的位置,每隔一段时间,我就需要在生产中做这种事情.


问题:

我正在寻找一种方法来完成从一个进程到另一个进程的TCP侦听套接字的整齐移交,因此只能获得一秒钟的停机时间.我希望现有的连接/套接字保持打开状态并在旧进程中完成处理,而新进程开始为新连接提供服务.

是否有一些经过验证的方法使用BSD套接字执行此操作?(EventMachine解决方案的奖励积分.)

是否有可能实现这一点的开源库,我可以按原样使用,还是用作参考?(同样,非Ruby和非EventMachine解决方案也很受欢迎!)

sockets high-availability eventmachine

8
推荐指数
1
解决办法
4103
查看次数

跳过某些目标的makefile依赖项生成(例如`clean`)

我有几个C和C++项目都遵循我已经使用了一段时间的基本结构.我的源文件进入src/*.c,中间文件进入obj/*.[do],顶级目录中的实际可执行文件.

我的makefile大致遵循这个模板:

# The final executable
TARGET := something
# Source files (without src/)
INPUTS := foo.c bar.c baz.c

# OBJECTS will contain: obj/foo.o obj/bar.o obj/baz.o
OBJECTS := $(INPUTS:%.cpp=obj/%.o)
# DEPFILES will contain: obj/foo.d obj/bar.d obj/baz.d
DEPFILES := $(OBJECTS:%.o=%.d)

all: $(TARGET)

obj/%.o: src/%.cpp
    $(CC) $(CFLAGS) -c -o $@ $<

obj/%.d: src/%.cpp
    $(CC) $(CFLAGS) -M -MF $@ -MT $(@:%.d=%.o) $<

$(TARGET): $(OBJECTS)
    $(LD) $(LDFLAGS) -o $@ $(OBJECTS)

.PHONY: clean
clean:
    -rm -f $(OBJECTS) $(DEPFILES) $(RPOFILES) $(TARGET)

-include …
Run Code Online (Sandbox Code Playgroud)

debian dependencies makefile gnu-make

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

克隆相当于fork?

我想使用该clone函数的命名空间功能.阅读该联机帮助页,似乎clone有许多我需要担心的错综复杂的细节.

有没有相同的clone调用好'ol' fork()

我已经熟悉了fork,并且相信如果我有一个起点clone,我可以从那里添加标志和选项.

c linux fork

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

为什么我要恢复迁移?

在Rails中,down默认情况下,迁移具有恢复迁移的方法.但是,在什么情况下我还想恢复迁移?

一些想法:

无论是在开发还是生产中,在我运行迁移之前,我总是会有一个我的数据库快照.特别是对于执行数据转换的迁移,我发现在大多数情况下恢复快照甚至比恢复迁移更快.(所以我绝不会急于做!)

如果迁移失败,它将:

  • 在非事务性数据库上发生异常失败,从而使数据库损坏,或者
  • 失败并发生异常并回滚事务,因此不需要以其他方式还原.

如果所做的更改是在生产中(或在开发的后期),后来证明是一个错误,我会在新的迁移中修复我的错误.我不会还原旧的.在开发中,我只是删除迁移.

我还发现down方法引入了额外的代码,我重复自己,因此可能会引入新的bug.这违反了DRY原则.

所以我对职业选手很好奇,因为我想不到任何优点.

migration ruby-on-rails

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

Perl相当于Ruby的`拒绝!`?

我需要遍历一个数组,并在Perl中有条件地删除元素.我知道slice,但不知道如何在foreach上下文中使用它.

在Ruby中,有reject!:

foo = [2, 3, 6, 7]
foo.reject! { |x| x > 3 }
p foo   # outputs "[2, 3]"
Run Code Online (Sandbox Code Playgroud)

是否有Perl等价物?

ruby arrays perl

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

Blob 数据驻留在哪里?

我最终可能会在长时间运行的 Web 应用程序中处理以 Blob 为代表的大量数据。其中一些使用 XHR(缓存友好)获得,其他使用new Blob(...).

  • 现在,如果我的阅读正确的话,Blob 是由磁盘还是内存支持的?
  • 这是如何决定的?(浏览器遵循相同的规则吗?)
  • 有没有办法强制或保证某些行为?

我主要关心的是如何管理这些斑点。我最初的想法是保留一些参考资料。但如果在应用程序的整个生命周期中将大量数据保留在内存中,那就很糟糕了。

html javascript blob html5-filesystem

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

Rails模型和独特的组合

我有一个Rails应用程序,其中有一个名为friendrequests.它看起来像这样:

user1_id:integer user2_id:integer hasaccepted:boolean
Run Code Online (Sandbox Code Playgroud)

我正在创建添加朋友的选项,但是朋友请求只能发送一次.所以你不能在数据库的数据中有这样的东西:

user1_id | user2_id | hasaccepted
       1 |        2 |       false
       1 |        2 |       false
Run Code Online (Sandbox Code Playgroud)

要么

user1_id | user2_id | hasaccepted
       1 |        2 |       false
       2 |        1 |       false
Run Code Online (Sandbox Code Playgroud)

user1_id/user2_id组合必须是唯一的,而不是列本身,所以这是可能的:

user1_id | user2_id | hasaccepted
       1 |        2 |       false
       1 |        3 |       false
Run Code Online (Sandbox Code Playgroud)

是否可以在模型中定义它?我怎样才能做到这一点?

model ruby-on-rails

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