在这篇文章中,我们将为您详细介绍swift(Vapor)中的最终类和继承的内容,并且讨论关于oc继承swift类的相关问题。此外,我们还会涉及一些关于docker镜像中的Vapor`Public`目录
在这篇文章中,我们将为您详细介绍swift (Vapor) 中的最终类和继承的内容,并且讨论关于oc继承swift类的相关问题。此外,我们还会涉及一些关于docker 镜像中的 Vapor `Public` 目录没有暴露、iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts
- swift (Vapor) 中的最终类和继承(oc继承swift类)
- docker 镜像中的 Vapor `Public` 目录没有暴露
- iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts
- Laracon 2019 第一天亮点 Laravel 6 和 Vapor
- Laravel Vapor - 在公共开发数据库上创建用户失败并显示错误:需要 jumpbox
swift (Vapor) 中的最终类和继承(oc继承swift类)
如何解决swift (Vapor) 中的最终类和继承
首先我知道 final 类的目的:没有其他类应该继承它。它还提供了一些额外的速度,因为编译器可以进行直接调用。
我正在用 Swift 网络框架 Vapor 编写一个项目。我想把项目拆分成可重用的模块,这样我就可以在以后的项目中使用它们,并且可以更轻松地维护它们。这些模块之一是 usermodel。 usermodel 的实现在数据库中创建一个表,将演示用户播种到表中,进行身份验证... 我想保持模型尽可能纯净,只添加用户名和密码作为变量
class usermodel {
var userName: String
var password : String
some functions...
}
当时我的计划是在我的项目中创建一个继承自 usermodel 的 User 模型:
class User : usermodel {
var language : String
var companyName : String
...
}
添加特定于此项目的变量(并在此处使用迁移将额外字段添加到数据库,覆盖演示用户播种功能...
到目前为止一切顺利,对我来说似乎是合乎逻辑的一种好方法。
然而,Vapor 要求我采用 usermodel 的 Content 协议
final class usermodel {
...
}
并采用该协议要求我将 usermodel 类设为 final! (或者我最终会出现编译器错误:Protocol ''RequestDecodable'' 要求 ''decodeRequest'' 不能被非最终类(''usermodel'')满足,因为它在非参数中使用了 ''Self'',非-结果类型位置
所以我最终得到:
final class usermodel
我不能继承
有人可以给我指出一种不是继承的方法,我仍然可以保留一个简单的可重用 usermodel 但为此项目添加特定字段... 我正在寻找一种以一种很好的、结构化的方式来实现这一点的方法,而不是一种 hack ......(除非它是一个可以接受的 hack ;))
docker 镜像中的 Vapor `Public` 目录没有暴露
如何解决docker 镜像中的 Vapor `Public` 目录没有暴露
我在 Mac 上使用 Xcode 运行 Vapor 4.3 和 Leaf,没有任何问题。
公共目录中间件已启用:
let fileMW = FileMiddleware(publicDirectory: directory)
app.middleware.use(fileMW)
一旦我使用默认的 dockerfile
构建图像并在 docker 上运行它,css 和所有图像文件就不再加载。
注意:dockerfile
与 vapor new
命令附带的完全相同。 (更新到写这篇文章的日期)
Safari 显示此错误:
[Error] Did not parse stylesheet at ''http://127.0.0.1/styles/index.css'' because non CSS MIME types are not allowed in strict mode.
Chrome 显示此警告:
Resource interpreted as Stylesheet but transferred with MIME type text/plain: "http://127.0.0.1/styles/index.css".
我错过了什么?
解决方法
看起来这是一个区分大小写的问题! Mac 可以找到有此问题的文件,但 Linux 没有!
⚠️ 即使你已经设置了:app.routes.caseInsensitive = true
,也不会影响你的资源请求。
因此请确保您已完全按照 pwd
命令中显示的方式设置所有路径。
iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts
如何解决iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1>
我不断收到来自随机用户的随机崩溃报告。不幸的是,我无法定期重现这一点。用户说崩溃是在 discussionViewController
中随机发生的。所有崩溃报告都有类似的内容:
0 libswiftCore.dylib 0x00000001a53face4 swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1> >::incrementSlow(swift::RefCountBitsT<(swift::RefCountInlinedness)1>,unsigned int) + 60 (atomic:1003)
1 libswiftCore.dylib 0x00000001a53c59e0 swift_retain + 124 (RefCount.h:813)
2 libswiftCore.dylib 0x00000001a5401d60 swift_bridgeObjectRetain + 56 (SwiftObject.mm:585)
3 APPNAME 0x0000000102b59734 closure #1 in discussionViewController.fetchPostData() + 7916
这是完整的崩溃日志和崩溃的线程:
Hardware Model: iphone11,6
Process: APPNAME [11770]
Path: /private/var/containers/Bundle/Application/.../APPNAME.app/APPNAME
Identifier: ----
Version: 62 (62)
AppStoretools: 12E262
AppVariant: 1:iphone11,6:13
Code Type: ARM-64 (Native)
Role: Foreground
Parent Process: launchd [1]
Coalition: ---- [1824]
Date/Time: 2021-06-17 12:07:01.4346 +1000
Launch Time: 2021-06-17 12:06:56.4993 +1000
OS Version: iPhone OS 14.6 (18F72)
Release Type: User
Baseband Version: 3.04.01
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x8000000000000010 -> 0x0000000000000010 (possible pointer authentication failure)
VM Region Info: 0x10 is not in any region. Bytes before following region: 4339515376
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
UNUSED SPACE AT START
--->
__TEXT 102a7c000-102a94000 [ 96K] r-x/r-x SM=COW ...APPNAME.app/APPNAME
Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL,Code 0xb
Terminating Process: exc handler [11770]
Triggered by Thread: 3
Thread 3 name:
Thread 3 Crashed:
0 libswiftCore.dylib 0x00000001a53face4 swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1> >::incrementSlow(swift::RefCountBitsT<(swift::RefCountInlinedness)1>,unsigned int) + 60 (atomic:1003)
1 libswiftCore.dylib 0x00000001a53c59e0 swift_retain + 124 (RefCount.h:813)
2 libswiftCore.dylib 0x00000001a5401d60 swift_bridgeObjectRetain + 56 (SwiftObject.mm:585)
3 APPNAME 0x0000000102b59734 closure #1 in discussionViewController.fetchPostData() + 7916
4 APPNAME 0x0000000102ad09d4 thunk for @escaping @callee_guaranteed (@guaranteed Data?,@guaranteed NSURLResponse?,@guaranteed Error?) -> () + 132 (<compiler-generated>:0)
5 CFNetwork 0x00000001a1b0a3dc __40-[__NSURLSessionLocal taskForClassInfo:]_block_invoke + 540 (LocalSession.mm:687)
6 CFNetwork 0x00000001a1b1c768 __49-[__NSCFLocalSessionTask _task_onqueue_didFinish]_block_invoke + 244 (LocalSessionTask.mm:584)
7 libdispatch.dylib 0x00000001a10d1a84 _dispatch_call_block_and_release + 32 (init.c:1466)
8 libdispatch.dylib 0x00000001a10d381c _dispatch_client_callout + 20 (object.m:559)
9 libdispatch.dylib 0x00000001a10db004 _dispatch_lane_serial_drain + 620 (inline_internal.h:2557)
10 libdispatch.dylib 0x00000001a10dbc34 _dispatch_lane_invoke + 456 (queue.c:3862)
11 libdispatch.dylib 0x00000001a10e64bc _dispatch_workloop_worker_thread + 764 (queue.c:6589)
12 libsystem_pthread.dylib 0x00000001ed04a7a4 0x1ed047000 + 14244
13 libsystem_pthread.dylib 0x00000001ed05174c 0x1ed047000 + 42828
我已验证 discussionViewController.fetchPostData()
不会强制解开任何可选选项,没有 try!
并且在任何地方都使用 [weak self]
和 self?
。该函数非常大,所以我很难缩小崩溃发生的范围。
Laracon 2019 第一天亮点 Laravel 6 和 Vapor
文章转发自专业的Laravel开发者社区,原始链接:https://learnku.com/laravel/t...
第一天的Laracon已经结束,有许多嘉宾进行了演讲!真是充满了精彩的演讲,精彩的人和新闻的一天!
集锦:
- Laravel 社区
- Justin Jackson 关于心理健康的演讲
- Laravel 6 和 新的品牌
- Vapor
- *
社区
整个社区的生态环境是十分棒的, 这里的人超级友好跟热情,而且已经开启了很多新的问题和讨论过的话题。
空气中弥漫着合作共赢的气息, 社区成员愿意换帮互助,分享资料,构建开源项目和共度美好的时光。
- *
Justin 的谈话
我会说这段谈话在本次活动中得到了很多的关注。
他所提到的一些主要的内容:
「你采取的每一个行动,都会为 你想成为的人 投上一票」 James Clear「我们每个人都背负着心理包袱,如果未能够及时发现它,它可能会导致我们陷入破坏性的行为的状态」 Jerry Colonna
重要提示:
1- 寻求专业的帮助。\
2- 承担你生命的所有权。\
3- 反复的,做一些对你和他人有益的事情。\
4- 摆脱你的坏习惯。\
5- 迷失自我
在技术会议上听到心理健康讲座并不常见。但对于这项倡议的热烈掌声,让我相信这对人们的健康至关重要。
- *
Laravel 6 & 新类型
- 将于 8 月发布。
- 新的全职后端开发人员将于下周加入该团队。
- 新 Logo。
- 新官网。
- *
Vapor
"令人难以置信的简单的扩大你的规模."
Laravel Vapor 是由 AWS 驱动,可以对 Laravel程序进行无服务器部署的一项服务。使用 Vapor 部署你的 Laravel项目你会深深的爱上这种简便快捷的无服务。
主要特点
- 购买一个许可即可创建无限的团队和项目
- 临时和正式域名
- 执行部署简单的命令
- 通过图形化界面回滚
- 零宕机时间
- 简单的维护模式
- 环境变量管理
- 很多有用的统计指标
- 通过
email
和Slack
告警 - 日志查看
- 数据库管理
- 使用
DynamoDB
或Redis
自动缓存 -
Serverless
和 自动伸缩 - 队列处理
还有更多特性...
Laravel Vapor - 在公共开发数据库上创建用户失败并显示错误:需要 jumpbox
如何解决Laravel Vapor - 在公共开发数据库上创建用户失败并显示错误:需要 jumpbox
Laravel Vapor 数据库文档说明:
要快速创建性能等级最低的可公开访问的数据库,您可以在创建数据库时使用 --dev
标志。这些经济实惠的小型数据库非常适合测试或暂存环境
我使用建议的 vapor database dev-db --dev
命令创建了一个开发数据库,并且在 AWS 中创建了一个公共 db.t3.micro
,但是当我使用 {{1 }} 命令我收到一个错误,需要一个 jumpBox:
哎呀!您的请求存在一些问题。
- 创建数据库用户需要一个 jumpBox。
关于私有/公共数据库的文档说明:
此外,这些数据库可能是公开访问的(使用 Vapor 自动分配的长随机密码)或私有的。通常不能从公共 Internet 访问私有数据库。要从本地计算机访问它们,您需要创建一个 Vapor jumpBox。
既然 vapor database:user dev-db user1
数据库创建命令创建了一个可公开访问的数据库,为什么会返回一个错误,指出需要一个 jumpBox?
解决方法
这听起来像是一个错误,除非您尝试在数据库完成配置之前创建用户
关于swift (Vapor) 中的最终类和继承和oc继承swift类的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于docker 镜像中的 Vapor `Public` 目录没有暴露、iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts
本文标签: