我在课堂上经常使用这个方案
typealias nullHandle = ()->Void
var runOnLoad: nullHandle?
Run Code Online (Sandbox Code Playgroud)
因此,当我创建该类的实例时,我会...
let object = MyClass()
object.runOnLoad = { ()->Void in
// do something
}
Run Code Online (Sandbox Code Playgroud)
在类内部,我总是必须在运行该闭包之前执行此操作:
if self.runOnLoad != nil {
self.runOnLoad()!
}
Run Code Online (Sandbox Code Playgroud)
因为我不能保证它runOnLoad
不是nil,如果我尝试运行nil runOnLoad
,它将崩溃。
在使用Objective-C编程一个世纪之后,我是个新手。我正在迅速使用此模式,因为这是我在Objective-C中要做的。
在Swift中有没有更好的方法来完成这件事?
谢谢
我想在不使用内置 cv2 库的情况下旋转图像。所以我看到了这个方程
但我不知道如何将其应用到我的代码中。
//编辑
我正在尝试使用 Autofac(最新的 NuGet 包)设置 MassTransit,但似乎无法在该ContainerBuilder
级别注册消费者。有没有人设法将 MassTransit 与 Autofac 一起使用,尤其是模块?
在下面的示例中,无法解析 DoSomethingConsumer,除非我取消注释该x.AddConsumer
行并在构建器上注释注册。
builder.RegisterType<BusControlHostedService>().As<IHostedService>();
builder.RegisterType<DoSomethingConsumer>().AsSelf().AsImplementedInterfaces();
builder.AddMassTransit(x =>
{
//x.AddConsumer<DoSomethingConsumer>();
x.AddBus(componentContext => Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Host("host", "vhost", h =>
{
h.Username("user");
h.Password("password");
});
cfg.UseExtensionsLogging(componentContext.Resolve<ILoggerFactory>());
cfg.ConfigureEndpoints(componentContext);
}));
x.AddRequestClient<DoSomethingRequest>();
});
Run Code Online (Sandbox Code Playgroud)
https://masstransit-project.com/MassTransit/usage/containers/autofac.html 上的文档似乎是错误的。.AddConsumer
构建器上没有扩展方法。
我希望从模块注册消费者,并能够按照约定(如上面的示例)或使用.RegisterEndpoint
.
对此的任何帮助将不胜感激。
我正在尝试使用休息后端进行身份验证来设置半径服务器。我以以下项目为例:https : //github.com/fgsants/REST-API-FreeRADIUS
一切都已经设置好了,如果我使用以下命令来模拟在 radius 上的登录,一切都可以正常工作:
radtest bar passwd 127.0.0.1 10 testing123
其余后端接收/user/:username/mac?action=authorize
然后/user/:username/mac?action=authenticate&password=passwd
.
当我将 AP 配置为使用此半径服务器时,请求似乎与预期不同并且身份验证失败。这是尝试通过 AP 登录时半径服务器的输出:
(0) Received Access-Request Id 105 from 172.21.0.1:46358 to 172.21.0.3:1812 length 126
(0) User-Name = "bar"
(0) NAS-IP-Address = 192.168.0.21
(0) NAS-Identifier = "RalinkAP1"
(0) NAS-Port = 0
(0) Called-Station-Id = "1A-0D-2C-1B-49-11"
(0) Calling-Station-Id = "D4-9A-20-70-F4-0E"
(0) Framed-MTU = 1400
(0) NAS-Port-Type = Wireless-802.11
(0) EAP-Message = 0x0201000801626172
(0) Message-Authenticator = 0xbffda6639904c9026259be2a45b378c4
(0) # Executing section authorize from …
Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个函数,该函数将返回不带重音的给定字符串,但是iconv的//TRANSLIT
选项似乎只将重音和字母分开,而没有去除重音。
这是我的功能:
<?php
function strRemoveAccents($str)
{
return iconv(mb_detect_encoding($str), 'us-ascii//TRANSLIT', $str);
}
Run Code Online (Sandbox Code Playgroud)
这是我的结果:
测试1
测试2
测试3
一些精度:
mb_detect_encoding
对于我的所有测试,返回“ UTF-8”,并且用返回值替换该函数不会更改任何内容。LC_COLLATE=C;LC_CTYPE=French_France.1252;LC_MONETARY=C;LC_NUMERIC=C;LC_TIME=C
en_US.UTF-8
(我检查过:语言环境已成功更新),但是函数的返回值仍然相同c/fr_FR.UTF-8/c/c/c/c
的问题仍然相同。我可能会丢失一些东西,但我看不到。
编辑:正如@jasonwubz在回答中提到的那样,仅在使用libinconv时出现问题,而在使用glibc时不存在。使用这些实现中的任何一种时,是否有办法使其工作?
所以我只是想修改家庭成员手机上的主机文件。我已将手机置于调试模式并提取主机文件,对其进行编辑,但是当我尝试推送它时,我收到消息“adb:错误:无法将‘D:/hosts\hosts’复制到‘/system’ /etc/hosts/hosts':远程无法创建文件:不是目录”
这是我使用过的命令:
adb pull /system/etc/hosts D:\hosts
/system/etc/hosts: 1 file pulled. 0.0 MB/s (56 bytes in 0.003s)
adb push D:\hosts /system/etc/
adb: error: failed to copy 'D:\hosts\hosts' to '/system/etc/hosts/hosts': remote couldn't create file: Not a directory
Run Code Online (Sandbox Code Playgroud)
这是我第一次使用 android debug/adb,我读过的其他内容都没有帮助。提前致谢。
编辑:所以我取得了一些进展。我意识到主机文件不在主机目录中,所以我将其更改为adb push D:\hosts /system/etc
仍然不起作用,但adb push D:\hosts\hosts /system/etc
给了我响应adb: error: failed to copy 'D:\hosts\hosts' to '/system/etc/hosts': remote couldn't create file: Read-only file system
所以看起来我的问题现在在adb shell chmod
EDIT2:所以经过一些更多的研究,我在 Android 上发现了这个只读文件系统。当我尝试时,mount -o rw,remount /system
我得到了mount: …
我仔细阅读了下一个路由系统的文档。它只提到我可以像这样实现动态路由:
http://localhost:3000/level1/dynamicSlug
但我正在努力实现这样的目标:
http://localhost:3000/level1/level2/dynamicSlug
我也想动态创建 level2
非常感谢 !
我正在尝试解决 Java 中字符串操作的编码问题。问题是
给定两个由数字和小写字母组成的字符串 S 和 T,您只能从任一字符串中删除一位数字,计算有多少种删除方式可以使 S 按字典顺序小于 T。
我自己想出了这个测试用例。如果 s = '3ab' 且 t = 'cd',则返回 1。如果 s = '123ab' 且 t = '423cd',则返回 6。
我的想法是使用 2 个 for 循环并通过检查字符是否为数字来遍历每个字符串,将其删除并与其他字符串进行比较。
private static int numSmaller(String s, String t){
int ways = 0;
for(int i = 0; i < s.length(); i++){
StringBuilder sbs = new StringBuilder(s);
if(Character.isDigit(s.charAt(i))){
sbs.deleteCharAt(i);
String sub = sbs.toString();
if(sub.compareTo(t) < 0) {
ways++;
}
}
}
for(int i = 0; i < t.length(); i++){
StringBuilder sbt …
Run Code Online (Sandbox Code Playgroud) 我在 etl 工作(第一次),我需要从客户端的 SFTP 中提取一些文件。我的问题是,文件数量是可变的,所以我需要检查,如果文件中存在,并得到它,该文件格式,如“_文件YYYY-MM-DD -number- ñ ”,其中YYYY-MM-DD
是当前的日期和n
是文件的编号,因此如果有 7 个文件,我必须查找:
直到现在我发现我可以做这样的事情
cnopts = pysftp.CnOpts()
with pysftp.Connection(host=host, port=port, username=username, password=password, cnopts=cnopts) as sftp:
files = sftp.listdir(directory)
Run Code Online (Sandbox Code Playgroud)
我如何在那里的文件中找到?
我正在尝试在 Centos 7 上安装 Kuberentes 1.15,但 Kubeadm init 在等待 kubelet 作为静态 Pod 从目录“/etc/kubernetes/manifests”启动控制平面时一直失败
[root@kmaster manifests]# kubeadm init
--apiserver-advertise-address=10.0.15.10 --pod-network-cidr=10.244.0.0/16 [init] Using Kubernetes version: v1.15.3 [preflight] Running pre-flight checks
[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 19.03.1. Latest validated version:
18.09 [preflight] Pulling images required for setting up a Kubernetes cluster [preflight] This might take …
Run Code Online (Sandbox Code Playgroud)