我有一个相当复杂的多线程应用程序(服务器),由于断言,有时会崩溃:
/usr/include/boost/smart_ptr/shared_ptr.hpp:418: T* boost::shared_ptr< <template-parameter-1-1> >::operator->() const [with T = msg::Player]: Assertion `px != 0' failed.
Run Code Online (Sandbox Code Playgroud)
我一直无法确定原因,并想知道这是一个问题与boost :: shared_ptr或它是我吗?
我尝试了g ++ 4.4.3-4ubuntu5和llvm-g ++(GCC)4.2.1优化而没有优化和libboost1.40-dev(= 1.40.0-4ubuntu4).
这么多的选项和很少的时间来测试它们......我想知道是否有人有分布式文件系统的视频流和存储/编码经验.
我有很多巨大的视频文件(50GB到250GB),我需要存储在某个地方,能够将它们编码为mp4并从几个Adobe FMS服务器流式传输.处理所有这一切的唯一方法是使用分布式文件系统,但现在的问题是哪个?
到目前为止我的研究告诉我:
到目前为止,Lustre似乎是赢家,但我希望听到我所拥有的特定应用的真实体验.
此外,Hadoop,Redhat GFS,Coda和Windows DFS也可作为选项,因此欢迎任何体验.如果有人有基准,请分享.
经过一些实际经验后,这就是我所学到的:
定论:
不幸的是,结论是"没有单一的银弹".
目前,我们将Gluster3.2中的媒体文件放在复制卷中以进行存储和转码.只要您没有很多服务器,就可以避免地理复制和条带卷工作正常.
当我们要传输媒体文件时,我们将它们复制到通过DR:DB复制到第二个光泽卷的光泽卷.然后,wowza服务器从光泽卷中读取媒体文件.
最后,我们使用MogileFS来提供Web应用程序服务器中的缩略图.
由于我仍然需要处理的一些问题,我无法在我的服务器上运行resque-web但我仍然需要在我的resque队列中检查并重试失败的作业.
有没有人有任何关于如何查看失败的作业队列以查看错误是什么以及如何使用redis-cli命令行重试它的经验?
谢谢,
有很多关于如何找到给定值的2的下一个幂的信息(参见参考文献),但我找不到任何以前的2的幂.
到目前为止,我找到的唯一方法是保持一个具有2的所有幂的表,最多2 ^ 64并进行简单的查找.
当实现MessageFactory类来实例化Message对象时,我使用了类似的东西:
class MessageFactory
{
public:
static Message *create(int type)
{
switch(type) {
case PING_MSG:
return new PingMessage();
case PONG_MSG:
return new PongMessage();
....
}
}
Run Code Online (Sandbox Code Playgroud)
这工作正常但每次添加新消息时我都要添加一个新的XXX_MSG并修改switch语句.
经过一些研究后,我发现了一种在编译时动态更新MessageFactory的方法,因此我可以添加任意数量的消息,而无需修改MessageFactory本身.这样可以更简洁,更容易维护代码,因为我不需要修改三个不同的位置来添加/删除消息类:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
class Message
{
protected:
inline Message() {};
public:
inline virtual ~Message() { }
inline int getMessageType() const { return m_type; }
virtual void say() = 0;
protected:
uint16_t m_type;
};
template<int TYPE, typename IMPL>
class MessageTmpl: public Message
{
enum { _MESSAGE_ID = TYPE }; …Run Code Online (Sandbox Code Playgroud) 我在我的一个项目中使用jQuery布局插件和jqGrid插件,除了一些小问题外,它们工作得很好......
我希望jqGrid完全填满包含它的窗格(jQuery布局窗格).调整窗格大小应该调整jqGrid的大小,关闭窗格应该隐藏jqGrid等等.
jqGrid和jQuery Layout都提供回调,但是当我使用它们时,页面布局可怕地破坏.
有没有人有任何经验混合jqGrid与jQuery布局?
我的环境
香草Ubuntu 12.10,没有rvm或renv.
> gem --version
1.8.23
> ruby --version
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
> bundle --version
Bundler version 1.2.1
Run Code Online (Sandbox Code Playgroud)
我的问题
我有一个rake任务来打包我的宝石并将它们上传到我的开发和生产服务器.问题是当Gemfile包含git或path gems时,rake任务失败.Bundler已经支持这些类型的宝石的包装,它在我的终端上工作得很好但是在运行rake任务时失败了,我找不到原因.
我的佣金任务
> cat lib/tasks/upload.rake
namespace :deploy do
desc "Package all gems and upload to remote server"
task :upload => [:environment] do |t, args|
if ! system("bundle package --all")
raise "TOTAL FAIL"
end
# Magic method to upload vendor/cache to remote server
end
end
Run Code Online (Sandbox Code Playgroud)
我的尝试
在终端中运行捆绑包工作:
> bundle package --all
....
Using bson (1.7.0) …Run Code Online (Sandbox Code Playgroud) 有这么多的插件/宝石,但它们必须有过时的文档或根本没有文档.
从我所看到的有Rails openid,Eastmedia openid,Authlogic openid,rails kit openid插件和gem搜索我们有rails_openid,pelle-ruby-openid,rack-openid,openid_auth,openid_fu_generator,openid_login_generator等等.
某些博客中记录的那些插件在rails 2.3.5/ruby 1.9.1上对我不起作用,而且我总是在某些时候陷入困境.我可以通过宝石安装所有插件,但文档让我想知道如何在我的Rails应用程序中使用它们.
那么什么是最好的插件/ gem或更好的最近教程如何使用Restful Open ID身份验证实现Rails 2.3.5/Ruby 1.9.1应用程序?如果插件/ gem支持OpenID/Oauth混合会更好,因为我计划添加OAuth后来在我的几个应用程序之间共享内容.
寻找一个线程安全的随机生成器我找到了一个mersenne twister生成器类,作者说如果线程安全:
http://www.umiacs.umd.edu/~yangcj/mtrnd.html
但在研究了代码后,我看不出它是安全的线程.在那里没有任何类型的锁或类似锁变量的任何东西.
这个实现真的是线程安全吗?如果是这样,那魔术是什么?
algorithm ×1
boost-thread ×1
bundle ×1
c++ ×1
command-line ×1
jqgrid ×1
jquery ×1
microsoft-distributed-file-system ×1
openid ×1
rake-task ×1
redis ×1
resque ×1
ruby ×1
shared-ptr ×1
streaming ×1
templates ×1
video ×1