Articles of ios模拟器

Git仓库软件项目和伴随服务器代码的理想工作stream程?

我使用Git来pipe理我的(iOS)项目的源代码,我已经做了一段时间,这很好。 不过,我现在开始添加一个服务器端组件,并且我想确保服务器端代码保存在同一个仓库中,但与主代码分离 – 并在Web服务器上设置这样整个代码库和历史将不可访问。 使用两台计算机上的代码库(一个本地服务器和一个坐在Web服务器上)的理想Git工作stream程是什么? (顺便说一下,我使用的是Nginx,如果在设置服务器configuration来隐藏Git文件和历史logging方面有什么不同的话)。

ASIFormDataRequest为空的POST请求

我使用ASIFormDataRequest将多部分POST数据发送到运行nginx + php-fpm的服务器。 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; [request setPostValue:sessionKey forKey:@"session"]; [request setPostValue:secret forKey:@"secret"]; [request setPostValue:@"test" forKey:@"description"]; [request setFile:filePath forKey:@"image"]; [request setTimeOutSeconds:120]; [request setDelegate:self]; [request startAsynchronous]; 然而,偶尔发生(非常随机地发生,很难重现)一个空的请求到达服务器,我使用相同的文件进行所有testing。 ASIHTTPRequest执行requestFinished,就像一切正常。 没有生成服务器端错误,我检查日志。 有没有人有过这个问题?

如何在nginx中设置向前保密,以便具有默认ATS设置的iOS9(Xcode7)应用程序可以连接到我的服务器?

iOS9的应用程序传输安全性指出,不符合特定要求的连接将失败。 以下是Apple的文档( https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html )引用的要求。 服务器必须至less支持传输层安全性(TLS)协议版本1.2。 连接密码仅限于提供前向保密的密码(请参阅下面的密码列表)。 证书必须使用SHA256或更大的签名散列algorithm进行签名,并使用2048位或更大的RSA密钥或者256位或更大的椭圆曲线(ECC)密钥。 我已经检查过我的服务器确实正在使用带有2048位RSA密钥的证书,并使用SHA256哈希algorithm进行签名。 无论如何,我的Xcode7构build的应用程序无法连接到我的服务器的默认ATS设置。 但是,在应用程序的Info.plist中将NSExceptionRequiresForwardSecrecy设置为NO后,连接成功。 所以看起来我的服务器没有正确configuration正向保密密码。 以下是我在nginx.conf中的当前设置: ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; 我的证书由Comodo发布,我上面使用的设置也来自Comodo的支持文档( https://support.comodo.com/index.php?/Default/Knowledgebase/Article/View/789/37/certificate-installation- nginx )。 根据苹果的文件,在默认的ATS设置下,可接受的密码包括: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (似乎我的nginx的ssl_ciphers设置有这些密码。) 如果NSExceptionRequiresForwardSecrecy在应用程序的设置中设置为NO ,那么下面的密码也将被接受: LS_RSA_WITH_AES_256_GCM_SHA384 TLS_RSA_WITH_AES_128_GCM_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_WITH_AES_128_CBC_SHA 有了这个设置为NO ,我的应用程序成功连接到我的服务器,虽然原因仍然不知道我。 所以我的问题是,我应该如何设置nginx的前向保密密码,以便具有默认ATS设置的iOS9(Xcode7)应用程序可以连接成功? 更新: 根据@keno提供的build议,我按照https://weakdh.org/sysadmin.html中的指导重新configuration了我的服务器。 我使用以下命令重新生成一个新的DH组: openssl dhparam -out dhparams.pem […]

全球favicon.ico和iOS图标

我正在寻找在我configuration的nginx服务器上设置域的图标。 这个网域上有很多不同的url,无论url是什么,都需要显示相同的图标/图标。 我正在寻找一些实施build议。

AFNetworking 2.2使用自签名证书的SSL固定

我想阻止我的应用程序/服务器通信从一个MITM攻击,所以我想设置SSL固定,但我有问题使用自签名证书AFNetworking 2.2工作。 我认为这主要是我如何生成证书的问题。 我首先尝试根据这些说明生成自签名证书: 生成私钥: sudo openssl genrsa -des3 -out server.key 2048 生成签名请求,并在询问通用名称时使用域名: sudo openssl req -new -key server.key -out server.csr 生成证书: sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 最后,将其转换为der格式(因为AFNetworking 需要它 ) sudo openssl x509 -outform der -in server.crt -out server.der 服务器是Ubuntu 12.04,运行ngninx + passenger来提供一个Rails 4应用程序。 这里是我的nginx服务器configuration打开SSL的位: server { listen […]

使用AFNetworking 3.1.0的iOS 10.2上的HTTP2内存泄漏

我有一个上传服务,我最近转换到HTTP2。 该服务使用NodeJS构build,而nginx是应用程序服务器的代理。 在切换到HTTP2后不久,我们注意到使用上传服务的iOS应用程序中的崩溃。 我们发现了以下结果: 启用HTTP2时,应用程序在上传大文件(1GB +)时耗尽内存。 对于上面的图片,我们上传了同样的video3次 – 前两次,http2被启用。 对于第三次上传,我们对该设置进行的唯一更改是禁用了http2,并且重新启动了Web服务器以反映该状态。 这看起来像是在iOS或AFNetworking中的一个bug(内存泄漏),但是我们还没有把它搞定。 有没有人观察过这样的事情? 有没有解决方法? 版本: nginx版本:nginx / 1.10.0(Ubuntu) Ubuntu 16.04.1 iOS 10.2 AFNetworking 3.1.0 编辑 似乎AFNetworking是罪魁祸首:

GitLab Ci Runner错误“bash:行21:xcodebuild:命令未find”

我在Linux上有一个gitlab-ci服务 ,这里是信息 Linux DevOps 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 我按照这个教程https://about.gitlab.com/2016/03/10/setting-up-gitlab-ci-for-ios-projects/ ,之前的部分如何触发构build一切正常,唯一不同的是操作系统“El Capitan”和“Linux”的环境 。 当我尝试混帐推然后出现错误,我不知道热点解决这个….

BlueZ:通过它的mac地址获取设备名称

背景:我正在iOS设备和embedded式Linux板之间进行OOB配对(通过USB) 。 目前,在Linux端,我正在接收蓝牙linkkey(未来连接需要)和mac地址 。 ps:如果你对这个主题很熟悉,请看看这个问题 。 我目前的实现,使用MAC地址作为设备的名称(详细信息 – 请参阅上述问题的链接),这是第二次bluetoothd服务重新启动后解决。 问题 :是否有一种方法获得设备的蓝牙名称,它只有在BlueZ的帮助下才是mac? 我将在C代码中使用它来访问BlueZ的DBus接口。

安装Google的ios-webkit-debug-proxy

我试图让我的笔记本电脑上工作谷歌的iOS的WebKitdebugging代理,运行的Ubuntu 15.04。 https://github.com/google/ios-webkit-debug-proxy 我尽可能地遵循了他们的安装说明。 但是,我对web开发和linux ./autogen.sh ,在运行./autogen.sh的步骤中遇到了./autogen.sh 。 它运行了一段时间的检查,但后来从terminal收到以下错误: 检查libimobiledevice …没有configuration:错误:未满足软件包要求(libimobiledevice-1.0> = 1.2.0): 请求'libimobiledevice-1.0> = 1.2.0',但libimobiledevice的版本是1.1.6 如果您安装了非标准前缀的软件,请考虑调整PKG_CONFIG_PATH环境variables。 或者,您可以设置环境variableslibimobiledevice_CFLAGS和libimobiledevice_LIBS以避免需要调用pkg-config。 请参阅pkg-config手册页以获取更多详细信息。 我已经试过我的运气与自己的故障排除,但无法弄清楚。 那里有人熟悉这个错误,并且想要我做什么? 是我的文件path搞砸了,还是我需要不同版本的libimobiledevice(我相信我有最新的)?

可以POSIX / Linux完全免费的文件入口链接吗?

POSIX着名的做法是允许进程重命名和取消链接文件条目,而不考虑使用它们对其他人的影响,而Windows默认会产生一个错误,如果你甚至尝试触摸一个文件句柄在内部深处打开的文件句柄的时间戳。 不过Windows并不需要这么保守。 如果使用FILE_FLAG_BACKUP_SEMANTICS和FILE_SHARE_DELETE打开所有文件句柄,并且在标记删除之前注意将文件重命名为随机名称,那么您将获得POSIX语义,包括对操作包含打开文件句柄的文件path没有限制。 Windows可以做的一件非常漂亮的事情就是只使用一个打开的文件描述符来执行重命名,删除和硬链接,因此可以删除一个文件,而不必担心另一个进程是否已经重命名了它或者前面path中的任何目录该文件的位置。 这个工具可以让你完全无竞争的文件删除 – 一旦你有一个开放的文件处理正确的文件,你可以停止关心什么其他进程正在做的文件系统,至less删除(这是最重要的,因为它隐含地涉及销毁数据)。 这提出了什么关于POSIX的问题? 在POSIX上,unlink()需要一个path,在使用/ proc / self / fd / x或F_GETPATH获取文件描述符的当前path并调用unlink()时,某人可能已经改变了该path,因此可能导致错误的文件没有链接,数据丢失。 一个相当安全的解决scheme是这样的: 使用/ proc / self / fd / x或F_GETPATH获取打开文件描述符的当前path之一 打开其包含的目录。 在打开的文件描述符的leafname的包含目录中执行statat(),检查设备ID和索引是否匹配。 如果匹配,请执行unlinkat()以删除叶名。 这是从父目录向上的种族安全,尽pipe您删除的硬链接可能不是预期的。 但是,如果在包含目录中,第三方进程将文件重命名为其他内容,并在检查inode等同性和调用unlinkat()之间重命名另一个文件到叶节点名称,则不是竞赛安全。 这里错误的文件可能被删除,数据丢失。 因此,我提出这样一个问题:POSIX,或者任何特定的POSIX实现,例如Linux,是否允许程序完全无竞争地取消链接文件条目? 一种解决scheme可能是通过打开的文件描述符来取消链接文件条目,另一种解决scheme可能是通过inode取消链接文件条目,但谷歌尚未解决任何一个解决scheme。 有趣的是,除了通过打开的文件句柄进行删除之外,NTFS 还允许您通过selectinode或GUID进行删除(是的,NTFS确实提供了inode,您可以从NT内核中获取它们),但在这里没有多大的帮助。 如果这似乎太深奥的问题,这个问题会影响拟议的Boost.AFIO ,我需要确定什么文件系统比赛我可以减轻,我不能作为其logging的硬性行为保证的一部分。 编辑:澄清,没有一个打开的文件描述符的规范当前path,并在这个用例我们不在乎 – 我们只是想取消链接文件的某个链接。