我需要帮助访问跨 DLL/主程序的全局函数。我有一个班级基地
基数
#ifdef MAIN_DLL
#define DECLSPEC __declspec(dllexport)
#else
#define DECLSPEC __declspec(dllimport)
#endif
class Base {
private:
DECLSPEC static Filesystem * filesystem;
DECLSPEC static Logger * logger;
DECLSPEC static System * system;
public:
static void setFilesystem(Filesystem * filesystem_);
static void setApplication(Application * application_);
static void setLogger(Logger * logger_);
static void setSystem(System * system_);
static Filesystem * fs() { return filesystem; }
static Logger * log() { return logger; }
static System * sys() { return system; }
};
Run Code Online (Sandbox Code Playgroud)
main.cpp(主应用程序)(此处预定义了 MAIN_DLL) …
我想创建一个函数,通过一次调用更改元组内的多个值.
template<class... Args>
class EventN {
public:
std::tuple<Args...> mArgs;
EventN(Args... args) : mArgs(args) {}
EventN() {}
template<size_t N> void set(typename std::tuple_element<N-1,Tuple>::type value) {
std::get<N-1>(mArgs) = value; //I use N-1, to start from '1'
}
};
Run Code Online (Sandbox Code Playgroud)
上面的set函数按我的预期工作:
auto event = new EventN<String,int>();
event->set<1>("testEvent");
event->set<2>(12);
Run Code Online (Sandbox Code Playgroud)
现在,我想将功能扩展到:
event->set<1,2>("testEvent", 12);
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?有没有办法制作std::tuple_element<N-1,Tuple>::type变量?
我想通过以下方式在 Symfony 中创建一条路由:/admin/_api/*和/admin/*。所以,总的来说,我想要一个如下的配置:
/admin/_api/users
/admin/_api/posts
/admin/_api/comments
/admin/_api/* -> (AdminBundle:Error:api)
/admin/* -> (AdminBundle:Error:html)
Run Code Online (Sandbox Code Playgroud)
根据给定的配置,如果用户访问/admin/_api/test,路由器将调度到ErrorController::apiAction。如果用户访问,/admin/users它将分派到ErrorController:htmlAction。
有办法实现这一点吗?
我是Jekyll的新手,我无法找到更改以下内容的配置:
我使用Jekyll构建了一个基本的Jekyll站点jekyll new .并运行jekyll serve以学习和构建布局.基本测试网站为我提供了以下帖子:/jekyll/update/2016/01/30/welcome-to-jekyll.html.这样的URL是因为我正在运行jekyll serve而不是jekyll build吗?我想从URL路径中删除jekyll/update,因此我的帖子的最终URL如下所示:/2016/01/30/welcome-to-jekyll.html.
我希望我的页面存储在一个单独的目录_pages而不是根目录中.我怎样才能做到这一点?
有没有办法预先添加从特定目录加载的文件的路径?例如,我想创建一个/ _projects目录.然后使用以下永久链接添加文件:/ prj-test1,/ prj-test2,/ prj-test3.编译时,我想获得以下URL:/ projects/prj-test1,/ projects/prj-test2,/ projects/prj-test3.这可能吗?
我是 docker 的新手,我一直在单个服务器中对我的所有应用程序进行 dockerizing。到目前为止,一切都很好并且工作正常。然而,我不明白一件事。我对所有内容都使用 docker-compose(我还没有为我的项目创建 dockerfile)并且 docker ports-compose 中有这个属性。如果我写这样的东西:
ports:
8085:80
Run Code Online (Sandbox Code Playgroud)
它将侦听 0.0.0.0:8085,这意味着外部世界可以访问我的服务器。经过一些讨论和 google-ing,我发现我可以在我的 docker 网桥网络中获取 IP 地址并轻松进行端口映射:
ports:
172.17.0.1:8085:80
Run Code Online (Sandbox Code Playgroud)
这将仅在 172.17.0.1:8085 上侦听,这很好,因为它仅在内部侦听并且我的 nginx 将流量代理到必要的端口。(例如proxy_pass http://172.17.0.1:8085)。在进一步了解 docker 并了解它们的工作原理后,我意识到所有这些容器都有自己的 IP 地址,端口仅暴露给这些地址。例如,我的一个“web”容器的 IPv4 地址为 172.17.0.10,并且暴露了端口 80。如果我docker inspect在这些容器之一上执行操作,我将看到容器的 IP 地址。
现在,我想在我的 nginx 中使用这些 IP 地址。而不是proxy_pass http://172.17.0.1:8085,我想做http://172.17.0.10。我个人认为这是一个非常优雅的界面,但有一点让我担心。如果我重新启动机器会发生什么?所有容器都将以某种顺序启动。如果我有 5 个 Web 容器并且它们以随机顺序启动,我可以确定这些容器的 IP 是相同的吗?或者他们会改变吗?我应该总是ports在 docker-compose 中使用以供 nginx 使用吗?如果是,我如何为每个容器使用不同的 IP 而不是具有相同 IP 的不同端口?如果我创建另一个 docker 网络接口(假设在子网 172.17.1.0 中),并将该接口的不同 IP 分配给公开的“公共”端口,是否可以?我的意思是基本上172.17.1.1:80:80在一个容器中使用,172.17.1.2:80:80 在另一个等
我有一个我不知道如何使其工作的问题。
urls.py:
urlpatterns = [
url(r'athletes/search$', SearchAthletes.as_view()),
url(r'athletes/([0-9]+)$', ViewAthlete.as_view())
]
Run Code Online (Sandbox Code Playgroud)
views.py:
class ViewAthlete(APIView):
def get(self, request, id, format=None):
athlete = Athlete.objects.get(id=id)
serializer = AthleteSerializer(athlete)
return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)
test.py:
def test_view_athlete(self):
tmp = Athlete.objects.order_by('?')[0]
request = self.factory.get('/_api/v1/athletes/' + str(tmp.id))
request.user = AnonymousUser()
response = ViewAthlete.as_view()(request)
self.assertEquals(response.data.id, tmp.id)
Run Code Online (Sandbox Code Playgroud)
我不断收到以下错误:
追溯(最近一次通话最后一次):文件“ /tests.py”,第44行,在test_view_athlete中,响应= ViewAthlete.as_view()(request)
文件“ /venv/lib/python3.5/site-packages/django/views/decorators/csrf.py”,第58行,在wrapped_view中返回view_func(* args,** kwargs)
文件“ /venv/lib/python3.5/site-packages/django/views/generic/base.py”,第68行,在视图中返回self.dispatch(request,* args,** kwargs)
文件“ /venv/lib/python3.5/site-packages/rest_framework/views.py”,行474,调度响应= self.handle_exception(exc)
文件“ /venv/lib/python3.5/site-packages/rest_framework/views.py”,行471,在调度响应= handler(request,* args,** kwargs)中TypeError:get()缺少1个必需的位置参数: 'ID'
据我了解,问题在于没有id参数传递给视图类的get函数ViewAthelete。这是什么原因呢?在开发环境(而非测试)中,它显示数据,但是测试环境无法识别路由中的参数。
我正在尝试单元测试UITableView,但我不知道该怎么做.我有一个视图控制器,其中有一个表视图.每个原型单元都有一个自定义表视图单元类,其上连接有插座.
现在,我想分别测试这两个组件.首先,我想通过单独创建原型单元来测试表视图单元格内的数据是否正确.其次,我想用随机数据填充我的表视图并测试对象是否正确等.我怎样才能做到这两个?
为了测试单元本身,我不知道如何单独创建单元并通过向其发送数据来检查它.因此,我的自定义类具有将数据设置为单元格的小功能,而不是直接将数据分配给标签,按钮,图像.我想测试那些功能.但是,如果我没有渲染它,我无法检查它.
为了测试组件,我的问题是不同的,我想改变即将发生的数据.因此,我不想从API中读取数据,而是想要正常读取它,但我不知道如何更改viewDidLoad为使用本地对象而不是网络对象.
我有一个基于 Python 的存储库,我正在尝试设置 Gitlab CI 以使用 Dockerfile 构建 Docker 映像并将该映像推送到 Gitlab 的注册表。
在构建 Docker 映像并将其部署到注册表之前,我想使用 Python 运行单元测试。这是我当前仅进行测试的 gitlab-ci.yml 文件:
image: python:3.7-slim
before_script:
- pip3 install -r requirements.txt
test:
variables:
DJANGO_SECRET_KEY: some-key-here
script:
- python manage.py test
build:
DO NOT KNOW HOW TO DO IT
Run Code Online (Sandbox Code Playgroud)
我正在检查 Gitlab 网站上的一些模板,并找到了一个适用于 Docker 的模板:
# This file is a template, and might need editing before it works on your project.
# Official docker image.
image: docker:latest
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" …Run Code Online (Sandbox Code Playgroud)
我对我的一段代码感到担忧.我有组件和存储组件的对象.问题是在组件可以告知从对象中删除组件的更新期间.但它从另一个功能调用.
void Object::update() { //using std::map here
for(ComponentMap::iterator i = components.begin(); i != components.end(); ++i) {
(*i).second->update();
}
}
void HealthComponent::update() {
if(health <= 0) object->removeComponent("AliveComponent"); //this is wrong logic. but its just an example :D
}
void Object::removeComponent(string component) {
ComponentMap::iterator i = components.find(component);
if(i == components.end()) return;
components.erase(i);
}
Run Code Online (Sandbox Code Playgroud)
并假设我有很多组件 - 健康,活着,图形,物理,输入等.
我试过这样的东西(带有一些测试组件)并且在更新期间没有错误.但我真的很担心.它可以在将来给我一个错误吗?如果是的话,如何解决?
提前谢谢,
Gasim
我有一个存储在向量中的函数列表:
std::vector<std::function<void(uint32_t)>> mFunctions;
Run Code Online (Sandbox Code Playgroud)
我想添加一个函数作为公共 API,它接受不同的参数,但将其转换为 uint32_t:
enum class MyHandle : uint32_t { Null = 0; };
void addFunction(std::function<void(MyHandle)> &&fn) {
mFunctions.push_back(fn);
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能实现这个目标?