在我的iOS应用程序中,我使用的是UIWebView和自定义协议(使用我自己的NSURLProtocol实现).我一直非常小心确保每当我加载一个url时,我将这样的内容加载到我的UIWebView中:
myprotocol:// MYSERVER/mypath中
在我的NSURLProtocol实现中,我获取NSURLRequest的可变副本,将URL转换为http:并将其发送到我的服务器.
一切都适用于HTTP GET请求.我遇到的问题是POST请求.如果请求使用我的自定义协议,似乎UIWebView没有正确编码HTTPBody中的表单数据.
一个解决方法,因为我使用HTTPS来处理我的服务器请求,就是我注册我的协议处理程序来拦截http:而不是myprotocol:我可以将所有调用转换为https:这个其他问题,在这里,我指向了解:
但我想知道是否有任何替代和/或更好的方式来实现我想要的东西.
我们正在构建一个针对平板电脑开发的HTML5/JavaScript应用,我们希望在横向和纵向方面对屏幕进行不同的布局.
最初,我们正在捕捉方向变化通知,并跟踪当前方向(通常报告为0,90,-90或180度 - 请参阅此问题).不幸的是,不同的设备将不同的方向报告为"0".该链接认为这是一个错误,但有一些证据证明这是按设计工作的 - 例如,本文建议"横向"是默认方向,并且这些设备在横向保持时会报告方向为"0"模式.
我们接下来试着只看实际的屏幕尺寸,假设当宽度大于高度时,我们处于横向模式.但是当显示屏幕键盘时,此算法会混淆 - 当显示键盘时,将返回可见区域的尺寸.严格来说,当设备处于纵向模式时,但是屏幕未被键盘遮挡的部分比它高.
对这个问题的回答很古老.这仍然是最好的答案吗?有没有人有一个好的算法,考虑键盘可见性?
我有一个非常粗糙的技术问题,我希望可能会有一些Webkit专家.我正在为客户端开发iOS应用程序.大多数应用程序是在UIWebView控制器中提供的HTML5内容.
大约一周前,QA团队开始报告应用程序崩溃.我们上周一天收到大约1份崩溃报告.不幸的是,它们是一种崩溃,在这种情况下,无法确定可以始终如一地重现崩溃的明确步骤.奇怪的是,其中一些崩溃报告一直在使用旧版本的iOS代码库 - 几个月来成功运行的代码,没有人注意到这种崩溃行为.
但是所有崩溃情况的共同之处在于它们都是针对提供最新版HTML网页应用页面的更新后端运行的.所以我们似乎已经在服务器端做了一些新的东西,它会触发iOS代码中的某些东西崩溃.
崩溃日志非常一致.这是符号化的日志:
0 WebCore 0x33147ab0 WebCore::FrameLoader::cancelledError(WebCore::ResourceRequest const&) const + 4
1 WebCore 0x33070fbe WebCore::ResourceLoader::init(WebCore::ResourceRequest const&) + 166
2 WebCore 0x33070e66 WebCore::SubresourceLoader::startLoading() + 14
3 WebCore 0x33070c4e WebCore::ResourceLoadScheduler::servePendingRequests(WebCore::ResourceLoadScheduler::HostInformation*, WebCore::ResourceLoadPriority) + 46
4 WebCore 0x33076508 WebCore::ResourceLoadScheduler::servePendingRequests(WebCore::ResourceLoadPriority) + 36
5 WebCore 0x32fd38c8 WebCore::ThreadTimers::sharedTimerFiredInternal() + 92
Run Code Online (Sandbox Code Playgroud)
(在WebCore中讨论崩溃的大多数问题的答案是建议你在dealloc方法中将webview.delegate设置为nil.这似乎不是我们的问题).
现在我有一个理论(我将在稍后讨论),但我没有的是明确的证据.所以我抓住了webkit.org的源代码,并试图阅读足够的内容来了解WebKit在崩溃时正在做什么.我不认为我使用的是与iOS设备完全相同的WebKit源版本(我们在5.0.1和5.1.1设备中看到过这一点),关键方法似乎似乎引用了下载资源(如CSS和图像)但似乎涉及到一个空URL,所以我们最终调用cancelledError方法.
然后FrameLoader执行此操作:
ResourceError FrameLoader::cancelledError(const ResourceRequest& request) const
{
ResourceError error = m_client->cancelledError(request);
error.setIsCancellation(true);
return error;
}
Run Code Online (Sandbox Code Playgroud)
并且在这种方法中应用程序崩溃:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000008
Run Code Online (Sandbox Code Playgroud)
这告诉我m_client没有指向有效的东西.
现在,我确实有一个关于发生了什么的理论,只是基于直觉和间接证据.
我们的UIWebView有一个委托,用于评估加载到Web视图中的URL.在某些情况下,我们决定在单独的ViewController中启动新的URL,如下所示:
- (BOOL)webView:(UIWebView *)source shouldStartLoadWithRequest:(NSURLRequest …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 GKE 上托管 Jenkins 映像以运行构建。大多数情况下,我已经按照Google 的教程在 Kubernetes 中设置 Jenkins。我有一个相当基本的设置,有一个运行构建的主节点。
我还希望能够在 Jenkins 环境中使用 Docker,因此我进入了 Jenkins 的全局工具配置并添加了一个 Docker 实例。我还在部署文件中映射了 docker.sock 以绕过“无法连接到 unix:///var/run/docker.sock 上的 Docker 守护进程。docker 守护进程是否正在运行?” 问题。
我当前的部署如下所示:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: jenkins
namespace: jenkins
spec:
replicas: 1
template:
metadata:
labels:
app: master
spec:
containers:
- name: master
image: jenkins/jenkins:2.95
ports:
- containerPort: 8080
- containerPort: 50000
readinessProbe:
httpGet:
path: /login
port: 8080
periodSeconds: 10
timeoutSeconds: 5
successThreshold: 2
failureThreshold: 5
env:
- name: JENKINS_OPTS
valueFrom:
secretKeyRef:
name: …Run Code Online (Sandbox Code Playgroud) Apple AppleTV应用程序(如电影和电视节目)的常见行为之一是它们以可见的UITabBar开头,并且所有视图的内容都在标签栏下方的空间中呈现.一旦焦点从标签栏移动到屏幕上的某些内容,标签栏就会从屏幕顶部滑出,内容会向上移动/向上滚动以填充现在可用的空间.如果标签栏重新出现,此过程将自行反转.
有没有一种简单的方法来完成这种行为(如复选框或其他东西?),或者我必须didUpdateFocusInContext:withAnimationCoordinator:在各个地方实现该方法,并手动调整框架或滚动内容或东西?
我正在使用Jenkins管道构建Docker镜像(使用由JHipster自动生成的管道脚本).我想将最终的docker镜像推送到Google Container Registry.
这就是我所做的:
docker.build('us.gcr.io/[my-project-id]/[my-artifact-id]', 'target/docker')(嗯.在子弹正确格式化后需要额外的文本行)
docker.withRegistry('https://us.gcr.io', '[my-credential-id]') {
dockerImage.push 'latest'
}
Run Code Online (Sandbox Code Playgroud)
但是构建失败了:
ERROR: Could not find credentials matching [my-credential-id]
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)
我基本上认为这些插件在管道世界中不起作用,但我想我会问是否有人完成了这个并且可以给我一些指示.
我正在尝试在 Google 的容器引擎 (GKE) 上部署我的 Spring Boot/JHipster 应用程序。我已经弄清楚了大部分事情,但是我的数据库实例(一个在 Google Cloud SQL 上运行的 PostgreSQL 实例,带有 Google SQL 代理)有问题。
deployment.yaml 片段:
- image: gcr.io/cloudsql-docker/gce-proxy:1.09
name: cloudsql-proxy
command: ["/cloud_sql_proxy", "--dir=/cloudsql",
"-instances=[my-project]:us-central1:[my-sql-instance-id]=tcp:5432",
"-credential_file=/secrets/cloudsql/credentials.json"]
Run Code Online (Sandbox Code Playgroud)
最后,我更新了我的 Spring Boot 配置 yaml 文件,如下所示:
datasource:
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:postgresql://google/[my-database]?socketFactory=com.google.cloud.sql.postgres.SocketFactory&socketFactoryArg=[my-project]:us-central1:[my-sql-instance-id]
username: ${DB_USER}
password: ${DB_PASSWORD}
Run Code Online (Sandbox Code Playgroud)
当 …
java google-cloud-sql spring-boot kubernetes google-kubernetes-engine
docker ×2
ios ×2
kubernetes ×2
uiwebview ×2
android ×1
apple-tv ×1
focus ×1
iphone ×1
java ×1
javascript ×1
jenkins ×1
spring-boot ×1
tvos ×1
webkit ×1