小编And*_*lli的帖子

了解CBAdvertisementDataServiceUUIDsKey

根据苹果的文档,当调用CBPeripheralManager-startAdvertising:方法,有可选的关键CBAdvertisementDataServiceUUIDsKey,其规定如下:

CBAdvertisementDataServiceUUIDsKey键的值中包含的任何服务通用唯一标识符(UUID)不适合分配的空间,将添加到特殊的"溢出"区域; 它们只能由显式扫描它们的iOS设备发现.

什么是溢出区域,它有多大?我可以在那里安装多少个UUID?最重要的是,这个溢出区域只适用于iOS还是来自BLE规范?正如他们所说的那样

它们只能由显式扫描它们的iOS设备发现

ios core-bluetooth

5
推荐指数
0
解决办法
764
查看次数

使用@link和Xcode 6

我正在使用HeaderDoc来记录我的代码,我想链接到文档中的其他方法.我不是想生成HTML(至少目前为止),但我确实希望它出现在Xcode的右侧面板中.以下是-applicationDidEnterBackground:Xcode中出现的文档.我想实现那些引用我自己编写的其他方法的蓝色链接:

在此输入图像描述

文档说要使用@link,但它似乎不起作用:

这是我试过的:

/**
 *  @abstract   Returns an array with a copy of all elements in the heap in sorted order.
 *
 *  @discussion The original heap remains unchanged. This getter uses Heap Sort which takes O(n log n),
 *              although it copies the heap first (in linear time). If losing the elements on the heap is
 *              acceptable you should use @link -removeAllObjectsWithArray: @/link instead, which is faster.
 */
Run Code Online (Sandbox Code Playgroud)

这是结果:

在此输入图像描述

你可以看到它没有正确渲染.我在这里读到的内容@link已经破了,但评论可以追溯到2013年.有没有修复?我做错了吗? …

xcode headerdoc

5
推荐指数
0
解决办法
489
查看次数

Django中的HTTP_AUTHORIZATION标头

我在Django中写了一个简单的检查,要求在某些请求中传递访问令牌(我正在使用装饰器)。

    authorization = request.META.get('HTTP_AUTHORIZATION', None)

    # Forbid access when no access token, or an invalid one, is provided
    form = AccessTokenForm({ 'access_token': authorization })
    if not form.is_valid():
        raise exceptions.HttpDeniedException()
Run Code Online (Sandbox Code Playgroud)

这在django的开发服务器上运行良好,但是最近我使用Apache进行了部署,现在由于authorisation变量为,它不再起作用None。有人遇到过类似的事情吗?客户端将标头传递为Authorization; 再次,这在本地主机上工作正常,但在远程服务器上却没有。

编辑:我发现了这个,似乎应该可以,但是没有。实际上,我什至没有一个.htaccess文件,添加一个文件似乎一点也没有效果。这里是内容:

RewriteEngine On
RewriteRule ^(media/.*)$ - [L]
RewriteRule ^(static/.*)$ - [L]
RewriteCond %{REQUEST_URL} !(dispatch.fcgi)
RewriteRule ^(.*)$ dispatch.fcgi/$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Run Code Online (Sandbox Code Playgroud)

关键是,我什至不确定Apache是​​否正在使用它。

python apache django

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

makefile 中的符号链接

考虑以下 makefile:

SHELL = /bin/sh

MY_DIR := $(realpath ./)

BASE_DIR := $(realpath ../..)
BASE_SRC_DIR = $(BASE_DIR)/src
BASE_INC_DIR = $(BASE_DIR)/include

HUL_DIR = $(MY_DIR)/hul

JNI_DIR = $(HUL_DIR)/jni
JNI_SRC_DIR = $(JNI_DIR)/src
JNI_INC_DIR = $(JNI_DIR)/include

dirs: $(JNI_SRC_DIR) $(JNI_INC_DIR)

$(JNI_SRC_DIR): $(JNI_DIR)
    ln -s $(BASE_SRC_DIR) $@

$(JNI_INC_DIR): $(JNI_DIR)
    ln -s $(BASE_INC_DIR) $@

$(JNI_DIR):
    mkdir -p $(JNI_DIR)
Run Code Online (Sandbox Code Playgroud)

该 makefile 创建两个符号链接(JNI_SRC_DIRJNI_INC_DIR)并将 a 设置JNI_DIR为它们的依赖项。一切都很好,除了一件事:调用make dirs两次创建链接,然后在这些文件夹内创建链接。我知道这是对已存在的文件夹进行符号链接时的标准ln行为,我只是不知道有任何ln选项标志可以阻止它而不会出现错误(-n是否有错误)。无论如何,我想改变的是make第二次运行规则。显然它也遵循符号链接,但我只想检查它们是否存在:

这是一个示例输出,包含三个调用:

$ make dirs
mkdir -p /Users/fratelli/Documents/hul/platform/android/hul/jni
ln …
Run Code Online (Sandbox Code Playgroud)

makefile ln

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

如何接收和使用NSErrorPointer

我不是问如何将NSErrorPointer传递给函数,而是如何接收它并使用它.我找不到任何关于此的文件.像这样的东西:

func doSomething(error: NSErrorPointer) {
    error = NSError(...);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了

无法分配给'let'值'错误'

nserror swift

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

FBSession.openActiveSessionWithReadPermissions未调用completionHandler

我正在使用Facebook SDK实现OAuth登录,但是FBSession.openActiveSessionWithReadPermissions:allowLoginUI:completionHandler方法没有调用completionHandler,也没有返回"true",这表示缓存的令牌.除此之外,其他一切似乎都很好.这段代码出了什么问题?

    var completionHandler: FBSessionStateHandler = {

        session, status, error in

        NSLog("token not cached");

        if error {

            // Login failed for some reason, so we notify the delegate.
            self.delegate.didFailOpenningSession?(self, withError: ErrorUtility.error(
                code: .FailedOpenningSession,
                withFacebookError: error
            ));

            // Don't proceed on errors
            return;
        }

        // Session is now open, we should notify the delegate
        self.delegate.didOpenSession?(self);
    };

    NSLog("here");

    // Open the session, prompting the user if necessary. This might send the application to the background
    if FBSession.openActiveSessionWithReadPermissions(["public_profile"], allowLoginUI: true, completionHandler: completionHandler) { …
Run Code Online (Sandbox Code Playgroud)

facebook-graph-api ios swift

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

scanForPeripheralsWithServices:options:和CBCentralManagerScanOptionSolicitedServiceUUIDsKey

我通过阅读Apple的文档得到了一个问题.说到CBCentralManagerScanOptionSolicitedServiceUUIDsKeyApple的文档说明:

要扫描的服务UUID(由CBUUID对象表示)的数组(NSArray的实例).

指定此扫描选项会导致中央管理器也扫描外围设备,请求获取阵列中包含的任何服务.

然而,关于scanForPeripheralsWithServices:options:第一个论点:

应用程序感兴趣的一组CBUUID对象.在这种情况下,每个CBUUID对象表示外围设备正在通告的服务的UUID.

那有什么区别?为什么要使用其中一个?

objective-c ios core-bluetooth

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

-[UIView setContentSize:]:无法识别的选择器发送到实例 0x16d3be60

我正在遵循 Apple 的iOS 滚动视图编程指南。它看起来非常简单,但我收到此错误:

-[UIView setContentSize:]: unrecognized selector sent to instance 0x16d3be60 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView setContentSize:]: unrecognized selector sent to instance 0x16d3be60'

我按照在 Interface Builder 中创建滚动视图中的步骤进行操作。很明显,它应该self.view是类型。我控制并从控制器拖动到滚动视图,如教程中所示,滚动视图似乎已注册为该控制器中的视图,如以下屏幕截图所示:UIViewUIScrollView

在此输入图像描述

我尝试单击视图中的“x”,这样滚动视图将只是控制器中的视图,但没有效果(如灰显所示)。

我缺少什么?

顺便说一下,这是崩溃的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Setup scroll size
    UIScrollView *view = (UIScrollView*)self.view;
    view.contentSize = CGSizeMake(self.view.frame.size.width, 960);
}
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uiscrollview uiview ios

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

关于模板类专业化的范例

我目前正在编写一个模板类,用于存档(或序列化)和从二进制格式中取消存档数据.首先,我试图关闭我将使用的模式.我主要倾向于使用模板,因为unarchivers没有方法重载的输入类型.例如,以下示例是正常的:

Archiver ar;
int i;

archive(ar, i);
Run Code Online (Sandbox Code Playgroud)

但它的对手不是:

Unarchiver unar;
int i;

i = unarchive(unar);
Run Code Online (Sandbox Code Playgroud)

我想避免使用函数的名称,例如unarchive_int因为使用模板时会很麻烦.说:

template <class T> class SomeClass
{
public:

   void doSomething()
   {
      // Somewhere
      T value = unarchive(unar);
   }
};
Run Code Online (Sandbox Code Playgroud)

这会使事情变得混乱,因此我真的使用模板,而前一个表达式将是T value = unarchive<T>(ar);.如果第一个或唯一的参数始终是archiver和unarchiver对象,那么写一个全局函数似乎也很愚蠢(可以说); 模板类似乎是有序的:

template <class T> class Archiver
{
public:

    void archive(T obj);
};
Run Code Online (Sandbox Code Playgroud)

这样可行,但归档方法始终复制其输入对象.对于POD数据类型,这是可以的,但不是那么多类.解决方案似乎很明显,而是使用const引用void archive(const T & obj),但现在通过引用传递整数,浮点数和其他POD似乎也很愚蠢.虽然我对这个解决方案感到满意,但我还是试着进一步让对象做出区分.我的第一种方法是std::enable_if,默认情况下假设一个副本(对于所有非类成员)并提供类特化,其中archive方法通过引用获取其输入.它不起作用.这是代码:

template <class T, class E = void>
class Archiver
{
public:

    // By default, obj …
Run Code Online (Sandbox Code Playgroud)

c++ templates template-specialization c++11

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

Android BLE:了解GattServer端的MTU

我已经在Android上实现了BLE通信。我正在使用requestMtu在客户端协商MTU 。由于客户端在onMtuChanged上获得了MTU更改,因此效果很好。但是,我仍然没有办法知道服务器端的MTU,只有客户端。我有时会发送合理数量的数据,因此会实现自己的分段/分段机制。我想根据MTU大小对数据进行分段,以加快通信速度。我目前正在服务器端一次发送20个字节,虽然可以,但速度较慢。有没有办法在服务器上获取MTU?

android bluetooth bluetooth-lowenergy

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

子模型中的 Django 用户模型

在我当前的项目中,我正在替换默认的 django 用户模型。随着模型数量开始增长,我决定将实现分成几个文件夹,但现在 django 找不到我的用户模型。

我有这个,它有效:

djutils
    models.py
        UserManager
        User
Run Code Online (Sandbox Code Playgroud)

我改成了这个,它不再工作了

djutils
    models
        __init__.py
            from djutils.models.user import UserManager, User
        user.py
            UserManager
            User
Run Code Online (Sandbox Code Playgroud)

它不应该仍然导入模型吗?我得到:

CommandError: One or more models did not validate:
auth.user: Model has been swapped out for 'djutils.User' which has not been installed or is abstract.
Run Code Online (Sandbox Code Playgroud)

我的 settings.py 中有这个

AUTH_USER_MODEL = 'djutils.User'
Run Code Online (Sandbox Code Playgroud)

(注意第一种情况有效)

请指教!问候

编辑

djutils
    models
        __init__.py
            from __future__ import absolute_import

            from djutils.models.base import Manager, PrivateModel, Model
            from djutils.models.user import UserManager, User
            from djutils.models.passwordrecovery import PasswordRecoveryManager, PasswordRecovery

        user.py …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-authentication python-3.x

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

Android Studio Java反编译器

我最近发现了有关Android Studio的反编译器的信息,由于我目前正在参与一个Android项目,所以出现了一些问题。我只是尝试了一下,并且令人惊讶地生成了接近完美的代码。

如今的Java反编译器有多好?是否有防止反编译的保护机制?有什么安全隐患吗?

最好。

java decompiling decompiler

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

完全专业化的模板功能

我有一个在头文件中声明的函数模板.该函数是一个归档程序,它应该支持通过项目实现的其他几种类型(类).我们的想法是拥有一个基本模板声明,然后每个类专门针对它自己的类型.

// Archiver.h
template <class T> void archive(Archiver & archiver, const T & obj);
Run Code Online (Sandbox Code Playgroud)

此方法没有实现.现在我创建一个类(比方说Header),我希望它可以存档.因此,我打算专门研究这种方法.这就是我现在拥有的:

// Header.h
extern template void archive(Archiver & archiver, const Header & obj);
Run Code Online (Sandbox Code Playgroud)

我声明该函数是extern因为我在.cpp文件中实现它

// Header.cpp
template <> void archive(Archiver & archiver, const Header & obj)
{
 // Code here
}
Run Code Online (Sandbox Code Playgroud)

这给了specialization after instantiation.我也尝试过其他组合:

  1. 直接在头文件中实现,通常建议用于模板:我得到"多重定义"
  2. 在头文件中没有声明的.cpp文件中的实现:我undefined reference从另一个编译单元调用该方法时得到

那么实现这个是正确的呢?

编辑:

最初我决定使用模板,因为反向过程,unarchiving.基本上我可以写,unarchive<Header>()而不是unarchive_header()似乎更合适.

我相信我还应该提到我正在使用Android Studio和Gradle构建系统编译它,这就是为什么我使用gcc而不是g ++.我还给了gcc以下编译器标志:

-std=gnu++11 -fexceptions -fpermissive -lstdc++
Run Code Online (Sandbox Code Playgroud)

-fpermissive 是一种绝望的行为.

c++ gcc templates template-instantiation

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