问题列表 - 第14309页

使用GCC,如何仅导出静态库中的某些功能?

我在GCC中创建了一个静态库,但是我想隐藏大部分符号.

例如,test1.c:

extern void test2(void);
void test1(void) {
  printf("test1: ");
  test2();
}
Run Code Online (Sandbox Code Playgroud)

test2.c中:

extern void test1(void);
void test2(void) {
  printf("test2\n");
}
Run Code Online (Sandbox Code Playgroud)

library_api.c:

extern void test1(void);
extern void test2(void);
void library_api(void) {
  test1();
  test2();
}
Run Code Online (Sandbox Code Playgroud)

现在编译:

gcc -c test1.c -o test1.o
gcc -c test2.c -o test2.o
gcc -c library_api.c -o library_api.o
ar rcs libapi.a test1.o test2.o library_api.o
Run Code Online (Sandbox Code Playgroud)

如何仅显示"library_api()"函数以显示:

nm libapi.a
Run Code Online (Sandbox Code Playgroud)

而不是函数"test1()","test2()"和"library_api()"?换句话说,如何隐藏"test1()"和"test2()"从显示和可调用到libapi.a的外部用户?我不希望外部用户知道任何有关内部测试功能的信息.

c static

9
推荐指数
1
解决办法
9798
查看次数

需要支持HTTPS的Python XML-RPC服务器

我已经在Python中有一个非常简单的线程XML-RPC服务器:

from SocketServer import ThreadingMixIn
class AsyncXMLRPCServer(ThreadingMixIn, SimpleXMLRPCServer):
    pass

server = AsyncXMLRPCServer(('localhost', 9999))
server.register_instance(some_object())
server.serve_forever()
Run Code Online (Sandbox Code Playgroud)

现在我想通过https专门访问它.我该怎么办?

python ssl https xml-rpc

0
推荐指数
1
解决办法
1784
查看次数

img标签母版页中的相对路径

我在母版页中有一个标签.我在许多文件夹中使用此母版页.因此,每个文件夹的标记的src路径应该不同.这是我的代码:

<img src="images/1.gif" />
Run Code Online (Sandbox Code Playgroud)

我有一个名为"images"的文件夹和一个名为"Users"的文件夹.母版页位于根目录中,但我在"用户"文件夹中使用它.

如何为src设置动态地址?

asp.net master-pages relative-path

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

Java Enums:两个枚举类型,每个类型包含对彼此的引用?

有没有办法解决因两个相互引用的枚举导致的类加载问题?

我有两组枚举,Foo和Bar,定义如下:

public class EnumTest {

  public enum Foo {
    A(Bar.Alpha),
    B(Bar.Delta),
    C(Bar.Alpha);

    private Foo(Bar b) {
      this.b = b;
    }

    public final Bar b;
  }

  public enum Bar {
    Alpha(Foo.A),
    Beta(Foo.C),
    Delta(Foo.C);

    private Bar(Foo f) {
      this.f = f;
    }

    public final Foo f;
  }

  public static void main (String[] args) {
    for (Foo f: Foo.values()) {
      System.out.println(f + " bar " + f.b);
    }
    for (Bar b: Bar.values()) {
      System.out.println(b + " foo " + b.f);
    }
  } …
Run Code Online (Sandbox Code Playgroud)

java oop enums classloader cyclic-reference

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

单元测试私有代码

我目前正在使用C#进行开发 - 这里有一些背景知识:我们用我们的客户端应用程序实现MVP,并且我们有一个循环规则,它规定没有方法应该具有大于5的圈复杂度.这会导致许多小的私有方法这通常是一件事.

我的问题是关于单元测试一个类:

通过公共方法测试私有实现都很好......我没有遇到实现这个问题的问题.

但是......以下情况如何:

示例1.处理异步数据检索请求的结果(回调方法不应仅供公开测试)

示例2.执行操作的事件处理程序(例如更新View标签的文本 - 我知道的愚蠢示例......)

示例3.您正在使用第三方框架,该框架允许您通过覆盖受保护的虚拟方法进行扩展(从公共方法到这些虚拟方法的路径通常被视为黑盒编程,并且将具有框架提供的各种依赖性你不想知道)

上面的例子在我看来并不是设计不佳的结果.他们似乎也没有成为单独进行单独测试的候选人,因为这样的方法会失去他们的背景.

没有人对此有任何想法吗?

干杯,杰森

编辑: 我认为我在原始问题中不够清楚 - 我可以使用访问器测试私有方法,并使用TypeMock模拟调用/方法.那不是问题.问题是测试不需要公开或不公开的东西.

我不想为了测试而公开代码,因为它可能会引入安全漏洞(只发布一个接口来隐藏它不是一个选项,因为任何人都可以将对象强制转换回其原始类型并获取访问权限我不希望他们)

被重构到另一个类进行测试的代码很好 - 但可能会失去上下文.我一直认为让'辅助'类可以包含一堆没有特定上下文的代码是不好的做法 - (在这里思考SRP).我真的不认为这适用于事件处理程序.

我很高兴被证明是错的 - 我只是不确定如何测试这个功能!我一直认为,如果它可以破坏或改变 - 测试它.

干杯,杰森

c# testing methods tdd private

15
推荐指数
3
解决办法
5559
查看次数

不应该返回T-SQL查询返回项目

这是场景.有问题的列称为'datein',它的类型是'datetime'.对于'datein',我有三行,值为'2009-10-01 00:00:00.000'.为什么此查询返回上述行?

SELECT  *
FROM    t_call AS tc
WHERE   tc.datein >= '2009-09-30 00:00:00.000'
        AND tc.datein <= '2009-09-30 23:59:59.999'
Run Code Online (Sandbox Code Playgroud)

运用

SELECT  *
FROM    t_call AS tc
WHERE   tc.datein BETWEEN '2009-09-30 00:00:00.000'
        AND '2009-09-30 23:59:59.999'
Run Code Online (Sandbox Code Playgroud)

返回相同的结果

sql t-sql sql-server sql-server-2000

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

__FILE__是什么意思?

我有来自Codeigniter的以下代码 index.php

我的理解是,

如果/在字符串中的位置$system_folder(在这种情况下CIcore_1_7_1)是false,如果realpath函数存在AND(?)不false, $system_folder被分配到(?) /$system_folder.其他$system_folder被分配给$system_folder替换\\/.

Q1.realpath函数意味着什么?

Q2.这是什么意思?

@realpath(dirname(__FILE__))
Run Code Online (Sandbox Code Playgroud)

Q3.我对吗?我有任何误解吗?

Q4.您需要以下哪种情况?

str_replace("\\", "/", $system_folder)
Run Code Online (Sandbox Code Playgroud)
$system_folder = "CIcore_1_7_1";

/*
|---------------------------------------------------------------
| SET THE SERVER PATH
|---------------------------------------------------------------
|
| Let's attempt to determine the full-server path to the "system"
| folder in order to reduce the possibility of path problems.
| Note: We only attempt this if the user hasn't specified a …
Run Code Online (Sandbox Code Playgroud)

php codeigniter constants path

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

什么文件`make install` copy,以及在哪里?

有没有办法获得make install复制到文件系统的文件名/路径列表?有些软件包附带了一个MANIFEST文件,但不是我正在使用的文件.

install makefile

12
推荐指数
3
解决办法
8369
查看次数

如何运行多个Tornado进程/线程/前端?

在龙卷风文件中,他们展示了如何从4个前端获得非常大的吞吐量.我想以相同的方式运行一个应用程序,并希望前端运行作为使用init.d脚本*管理的守护程序进程.

我是Python的新手,所以不知道从哪里开始.目前我正在终端手动启动Tornado服务器,每次都传入一个新的端口号.

我已经尝试将python-daemon包lockfile包一起使用,但是创建的lockfiles中没有进程ID,我看不出如何在以后优雅地终止进程.

我真的不知道从哪里开始,Tornado文档在部署方面留下了很大一部分.

*如果有更好的方法来管理流程,以便可以作为一个组进行监控和管理,那么请告诉我.

python deployment tornado

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

HTML的XML序列化

好的,这个就行了!感谢大家!

public class Result
{
    public String htmlEscaped
    {
        set;
        get;
    }

    [XmlIgnore]
    public String htmlValue
    { set; get; }

    [XmlElement("htmlValue")]
    public XmlCDataSection htmlValueCData
    {
        get
        {
            XmlDocument _dummyDoc = new XmlDocument();
            return _dummyDoc.CreateCDataSection(htmlValue);
        }
        set { htmlValue = (value != null) ? value.Data : null; }
    }
}

    Result r = new Result();
    r.htmlValue = ("<b>Hello</b>");
    r.htmlEscaped = ("<b>Hello</b>");
    XmlSerializer xml = new XmlSerializer(r.GetType());
    TextWriter file = new StreamWriter(Environment.CurrentDirectory + "\\results\\result.xml", false, System.Text.Encoding.Default);
    xml.Serialize(file, r);
    file.Close();
Run Code Online (Sandbox Code Playgroud)

结果:

<?xml version="1.0" …
Run Code Online (Sandbox Code Playgroud)

html c# xml-serialization cdata

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