我有一个 UIPageControl,过去 6 个月在我的生产应用程序中运行良好。但是,在将所有测试设备更新到 iOS 14 并将 Xcode 更新到 v12 后,我在 tableView 单元格中的 UIPageControl 不再可见。
我的代码中没有任何更改,这只是由于软件更新而自发发生的。我知道 Apple 已经更改了 UITableView 的视图层次结构,并且还修改了页面控件。有谁知道为什么这个页面控件被正确定位但仍然不可见?
以 Instagram 这样的 iOS 应用为例。Instagram 从根本上说是一个实时应用程序,只要用户与您交互,它就会更新其 UI。例如,如果有人喜欢您的帖子并且您正在使用该应用程序,则 UI 会更新以触发多巴胺释放并通知您您的一个帖子发生了某些事情。同样,当有人在 Instagram 上向您发送直接消息时,在使用该应用程序时,您会看到消息从顶部实时弹出。
在实现这样的实时功能方面,很明显,简单的 HTTPS 轮询方法效率太低了。因此,这留下了两种策略:
1.) APNS 推送通知:
当用户喜欢帖子、发送直接消息、评论(等)、向后端服务器发送 HTTP POST 时,后端服务器将更新数据库并向收件人的设备发送静默 Apple 推送通知。使用该应用程序的接收者将接收推送的有效负载,并将向后端服务器发送 HTTP GET 以获取所需的数据(即发送的直接消息的内容)。用户界面准“实时”更新。
2.) 网络套接字:
每当任何用户打开 iOS 应用程序时,通过 websocket 将用户连接到服务器。这意味着,当前使用该应用程序的所有用户都通过他们自己的 websocket 连接到服务器。当用户喜欢帖子、发送直接消息、评论(等)时,应用程序通过套接字向服务器发送一条消息,指示操作。服务器在更新数据库之前,找到与接收者关联的套接字,并通过套接字将消息转发给接收者。收到消息后,实时更新UI
这些方法中哪一种是可扩展的并且更适合生产环境?
push-notification apple-push-notifications websocket ios socket.io
我知道在 MySQL 索引 (A,B,C) 中,使用 |A|、|A、B|、|A、B、C| 的 ANDed WHERE 子句受益。这使得看起来拥有索引 (A,B,C) 意味着在 (A) 上拥有单个索引或在 (A,B) 上拥有复合索引是没有意义的。
1. 这是真的吗?
2. 当你已经有 (A,B,C) 的索引时,在 (A) 上维护索引只是一种浪费吗?
我有一个 USERSEARCH 表,应该用于快速搜索用户的子字符串。此功能用于在有人输入用户名或姓名时进行自动完成搜索。但是,我感兴趣的查询只会显示搜索者关注的用户子集的匹配项。这可以在 USERRELATIONSHIP 表中找到。
USERSEARCH
-----------------------------------------------
user_id(FK) username_ngram name_ngram
1 "AleBoy leBoy eBoy..." "Ale le e"
2 "craze123 raze123 ..." "Craze raze aze ze e"
3 "john1990 ohn1990 ..." "John ohn hn n"
4 "JJ_1 J_1 _1 1" "JJ"
USERRELATIONSHIP
-----------------------------------------------
user_id(FK) follows_id(FK)
2 1
2 3
Run Code Online (Sandbox Code Playgroud)
当有人刚刚输入“Al”(不考虑用户关系)时,会发出这样的查询:
SELECT * FROM myapp.usersearch where username_ngram like 'Al%'
UNION DISTINCT
SELECT * FROM myapp.usersearch where name_ngram like 'Al%'
UNION DISTINCT
SELECT * FROM myapp.usersearch
WHERE MATCH (username_ngram, name_ngram) AGAINST ('Al')
LIMIT …
Run Code Online (Sandbox Code Playgroud) 执行以下查询时,是否有一种机制可以返回已删除对象的“id”列表?
>>> MyModel.objects.all().delete()
>>> (430, {'myapp': 430})
Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码为 mp4 视频生成缩略图:
import cv2 as cv
from PIL import Image
vidcap = cv.VideoCapture(videoPath)
vidcap.set(cv.CAP_PROP_POS_MSEC, millisecond)
#Turn video frame into numpy ndarray
success, image = vidcap.read()
cv.imwrite('fromImage.jpg', image) #line to be replaced
Run Code Online (Sandbox Code Playgroud)
由高预算、专业拍摄的视频生成的缩略图如下所示:
不幸的是,在我的应用程序上下文中,我无法将图像帧直接写入文件。相反,我必须将 cv 生成的图像数组转换为 PIL 图像,然后从那里开始。它看起来像这样:
# Turn numpy ndarray int PIL image
img = Image.fromarray(image)
img.save('fromArray.jpg') #Saving it for stackoverflow
Run Code Online (Sandbox Code Playgroud)
但是从同一个 mp4 视频输出的缩略图完全失真,因为它似乎已经交换了红色和蓝色,看起来像这样:
谁或什么是这种图像失真的罪魁祸首?
在 Python 中,空列表被视为 Falsey 值
因此,事情应该是这样的:
>>> [] and False
False
Run Code Online (Sandbox Code Playgroud)
但实际上,python 返回一个空列表。
>>> [] and False
[]
Run Code Online (Sandbox Code Playgroud)
这是故意的还是错误?