小编Ran*_*ook的帖子

C回调如何通过userdata指针返回Objective-C对象?

我正在使用第三方库,需要在iOS程序中进行C回调.回调提供了一个void*我可以随意使用的userdata参数.在这个回调中,我想创建一个NSData对象,该对象返回到调用最终调用回调的API的代码.例如:

// C callback:
static void callback(int x, void* userdata)
{
    if (userdata)
    {
        // This gives an error:
        // Pointer to non-const type 'NSData*' with no explicit ownership
        NSData** p = (NSData**)userdata;

        *p = [NSData init:...];
    }
}

// main code:
NSData* d = ...;  // sometimes valid, sometimes nil
library_api(callback, &d);  // have the callback initialize or replace d
if (d)
{
    [d doSomthing:...];
}
Run Code Online (Sandbox Code Playgroud)

我正在使用ARC,我认为这是问题的根源.我想过使用一个结构来保存NSData*,但ARC禁止在结构或联合中使用Objective-C对象.可能有一些变体__bridge可能有所帮助,但我不确定哪个.我已经查看了很多SO问题并阅读了Apple文档,但我不清楚如何对其进行编码.

理想情况下,如果在调用回调时d不是nil,则会释放其当前值,并且新的NSData对象将替换它.换句话说,当library_api完成时,d总是保存由回调创建的NSData对象,并且任何先前保持的值都将被正确释放.

我想我可以将Objective-C代码保留在回调之外,只是malloc()一个缓冲区来存储数据,然后将其复制到主代码中的NSData对象,但我希望我能避免这一额外的步骤.

objective-c callback ios automatic-ref-counting

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

有没有办法在设置dpkg控制文件时自动确定依赖项?

dpkg(Debian)控制文件中的大多数字段都很简单.棘手的是确定依赖项列表(取决于:).我希望dpkg-gencontrol可以通过查看包目录中可执行文件的ldd输出来为我做这个.也许它可以,但我无法让它发挥作用.

如果这是dpkg-gencontrol为了什么,我得到的错误是:

dpkg-gencontrol: error: syntax error in control_template at line 7: first block lacks a source field.
Run Code Online (Sandbox Code Playgroud)

作为参考,命令是dpkg-gencontrol -v1.1 -ccontrol_template -lchangelog -Pdebian.control_template文件包含:

Package: my-package
Maintainer: Joe Coder <joe@coder.com>
Description: The my-package system
 A longer description that runs to the end of one line and then 
 extends to another line.
Priority: optional
Run Code Online (Sandbox Code Playgroud)

如果这不是什么意思dpkg-gencontrol,有没有人对我能做什么有任何建议,或建议如何设置依赖列表,理想情况下自动?

不可否认,以一般方式推断依赖性可能是一个非常困难的问题,特别是如果您将搜索扩展到脚本和其他程序.我希望有一些工具可以在大多数时间使用.

请注意,这仅适用于内部分发.我没有构建一个程序包进入Linux发行版,甚至没有公众下载,所以我很乐意在需要时修改/破坏标准规则.

linux ubuntu debian dpkg package

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

如何在 HTML 中使用代码块

我需要发表一些博客文章。为此,我需要粘贴我的程序的一些代码。

我想利用与此类似的代码块

Similar to this
Run Code Online (Sandbox Code Playgroud)

我尝试使用codepre但它没有产生相同的输出。

如何在 HTML 中做到这一点?

html css

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

android.net vs java.net和不同的URI类

我正在编写一个带有模型对象的应用程序,它将Restful接口暴露给某些Web服务.我注意到在Android中有一个java.net.URI和一个android.net.URI类.使用一个与另一个有什么好处?有没有其他人遇到这个并发现一个比另一个更好?

在下面的代码中,我将URI的各个部分解析为java.net URI对象,然后我可以调用httpGet(URI uri).但是,使用android.net类或只调用httpGet(String url)会有任何性能优势或任何好处吗?

public class RestMethods {
    private String protocol;
    private String host;
    private Integer port;
    private URI uri;

    public String restGet(String path) throws MalformedURLException, InterruptedException, ExecutionException{
        StringBuilder builder = new StringBuilder();
        try {
            // Execute HTTP Post Request
            HttpClient httpclient = new DefaultHttpClient();
            HttpGet httpget = new HttpGet(uri);
            HttpResponse response = httpclient.execute(httpget);
            BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
            for (String line = null; (line = reader.readLine()) != null;) {
                builder.append(line).append("\n");
            }
        } catch (ClientProtocolException …
Run Code Online (Sandbox Code Playgroud)

android

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

关于电视(TV)视频的实时像素级分析的建议

[注意:这是对先前被认为不合适且已关闭的问题的重写.]

我需要对电视(电视)视频进行像素级分析.这种分析的确切性质并不相关,但它主要涉及从MPEG-2传输流开始查看电视视频每帧的每个像素.主机平台将是服务器级,多处理器64位Linux机器.

我需要一个可以处理传输流解码的库,并实时向我提供图像数据.OpenCV和ffmpeg是我正在考虑进行这项工作的两个库.OpenCV很吸引人,因为我听说它具有易于使用的API和丰富的图像分析支持,但我没有使用它的经验.我过去曾使用ffmpeg从文件中提取视频帧数据进行分析,但它缺乏图像分析支持(尽管英特尔的IPP可以补充).

除了针对此问题的方法的一般建议(不包括实际的图像分析),我还有一些更具体的问题可以帮助我开始:

  1. ffmpeg或OpenCV是否在工业中常用作实时视频分析的基础,还是我还应该关注其他什么?
  2. OpenCV可以实时解码视频帧,还是留下足够的CPU来进行非平凡的图像分析,也是实时的吗?
  3. 足以使用ffpmeg进行MPEG-2传输流解码,或者直接使用MPEG-2解码库(如果是,哪一个)更好?
  4. 输出帧是否有特定的像素格式,ffmpeg或OpenCV在生成时特别有效(如RGB,YUV或YUV422等)?

linux video opencv ffmpeg signal-processing

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

如何在Python中删除Riak存储桶?

我想删除一个Riak存储桶,以清除系统中的旧数据.我知道没有单一的Riak API来执行此操作,而是删除存储桶中的所有密钥,从而有效地删除它.Riak确实提供了一个API来获取所有密钥,因此这非常简单.

我在网上发现了一些代码,但它是用JavaScript编写的,并在Node下运行.我想要一些Python的东西.这可能是一件简单的事情.有没有人有任何例子?

python riak

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

使用带打印的*(splat)运算符

我经常使用Python的print语句来显示数据.是的,我知道'%s %d' % ('abc', 123)方法,'{} {}'.format('abc', 123)方法和' '.join(('abc', str(123)))方法.我也知道splat operator(*)可以用来将iterable扩展为函数参数.但是,我似乎无法用print声明做到这一点.使用列表:

>>> l = [1, 2, 3]
>>> l
[1, 2, 3]
>>> print l
[1, 2, 3]
>>> '{} {} {}'.format(*l)
'1 2 3'
>>> print *l
  File "<stdin>", line 1
    print *l
          ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

使用元组:

>>> t = (4, 5, 6)
>>> t
(4, 5, 6)
>>> print t
(4, 5, 6)
>>> '%d %d …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

sprintf格式化double值

在UNIX 中将double值转换为字符串时,我有一个特定的问题sprintf().

例如,我有两个值:

double a = 0.009984354523452;
double b = 0.01;
Run Code Online (Sandbox Code Playgroud)

转换时,我正在使用:

sprintf(somestringvar, "Double value : %.15f \n", a);
sprintf(diffstringvar, "Double value : %.15f \n", b);
Run Code Online (Sandbox Code Playgroud)

转换为字符串.

我的问题是'a',值正确打印但是对于'b'的值,在尾端附加0.请提供任何常用的方法来表示'a'和'b'作为确切的值.

c c++ unix printf

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

如何仅在使用CMake的Linux版本上使用特定于Linux的API和库?

我有一个项目,我在Linux(主要)上运行,但有时在Darwin/Mac OS X上运行.我使用CMake在Linux上生成Makefiles,在Mac OS X上生成Xcode项目.到目前为止,这个项目运行良好.

现在我想使用一些特定于Linux的函数(clock_gettime()和相关函数).我尝试使用时在Mac OS X上出现链接器错误clock_gettime(),因此我认为它仅适用于Linux.我准备在.c文件中引入有条件编译的代码,以便clock_gettime()在Linux 上使用,clock()在Mac OS上使用普通的代码.(顺便说一句,我打算使用#include <unistd.h>#if _POSIX_TIMERS > 0作为预处理器表达式,除非有人有更好的选择.)

当谈到CMakeLists.txt文件时,事情变得棘手.仅在跨平台CMake项目中的Linux构建下引入与特定于Linux的API的链接的首选方法是什么?

注意:此问题的早期版本包含对glibc的引用,这些内容过于具体且令人困惑.问题实际上是在跨平台CMake项目中使用特定于Linux的API和库的正确方法.

c linux macos cross-platform cmake

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

将tar.gz打包到shell脚本中

我想知道如何将tar.gz文件打包到shell脚本中,就像idk **。bin一样。因此,我可以将程序放在一个shell文件中而不是tar.gz中。

linux shell installation installer tar

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

android-我需要设计180度图(半饼图)

我需要在Android中设计半饼图,我搜索了很多但找不到任何解决方案.有没有想过图书馆这样做?或者我可以手动制作吗?

先感谢您.

在此输入图像描述

android graph

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

连接纯文本字符串和二进制数据

我的目标是手动创建一个 HTTP 请求(标头和正文)。它必须看起来像这样:

Some-Header1: some value1
Some-Header2: some value2
Some-Header3: some value3

-------------MyBoundary
Content-Disposition: form-data; name="file_content_0"; filename="123.pdf"
Content-Length: 93
Content-Type: application/pdf
Content-Transfer-Encoding: binary

  ==== here is the binary data of 123.pdf ====
  ==== here is the binary data of 123.pdf ====
  ==== here is the binary data of 123.pdf ====
  ==== here is the binary data of 123.pdf ====

-------------MyBoundary--
Run Code Online (Sandbox Code Playgroud)

我发现这是通过其 API 将文件发送到 Web 服务的唯一方法,因为我在 Ruby 中嗅探了执行此操作的脚本的流量,结果看起来就像我上面显示的那样。

因此,诸如“Some-Header1”和 other 之类的标题是纯文本标题。请注意,“ -------------MyBoundary--”后面也有“ ==== here is the binary data …

python

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

Blasted java.lang.NullPointerException

我的应用程序旨在将正好1500个项目的现有文本文件(一行一行)读入一个项目类对象数组中.目标是将数据放入数组中,这样我就可以将此应用程序用作转换存档以获取我正在编写的新程序的起点.

package sandboxPackage;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class mainClass {
    public static void main(String[]args) throws FileNotFoundException, IOException {
    InputStream in = new FileInputStream(new File("C:\\Documents and Settings\\Adam\\Desktop\\Cloud Project\\MasterIndex.library"));
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    StringBuilder out = new StringBuilder();
    String line;
    itemClass[] m = new itemClass[1500];
    int i = 0;
    while ((line = reader.readLine()) != null) {
        m[i].index = line;       // crash is here
        m[i].location = reader.readLine();
        m[i].item = reader.readLine(); …
Run Code Online (Sandbox Code Playgroud)

java nullpointerexception java-io

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