在 Golang 中检查字符串中的所有字符是大写还是小写的一种简单方法是什么?
另外,如何处理字符串有标点符号的情况?
请参阅以下示例:
package main
import (
"fmt"
"unicode"
)
func main() {
s := "UPPERCASE"
fmt.Println(s.IsUpper()) // Should print true
s = "lowercase"
fmt.Println(s.IsUpper()) // Should print false
s = "lowercase"
fmt.Println(s.IsLower()) // Should print true
s = "I'M YELLING AT YOU!"
fmt.Println(s.IsUpper()) // Should print true
}
Run Code Online (Sandbox Code Playgroud)
注意: s.IsUpper() 和 s.IsLower() 并不真正存在,但最好能找到等价物。
我正在kind本地 Macbook 上运行测试 kubernetes 集群。
我发现其中一个节点的状态为NotReady:
$ kind get clusters
mc
$ kubernetes get nodes
NAME STATUS ROLES AGE VERSION
mc-control-plane Ready master 4h42m v1.18.2
mc-control-plane2 Ready master 4h41m v1.18.2
mc-control-plane3 Ready master 4h40m v1.18.2
mc-worker NotReady <none> 4h40m v1.18.2
mc-worker2 Ready <none> 4h40m v1.18.2
mc-worker3 Ready <none> 4h40m v1.18.2
Run Code Online (Sandbox Code Playgroud)
唯一有趣的kubectl describe node mc-worker是 CNI 插件未初始化:
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
MemoryPressure False Tue, 11 Aug …Run Code Online (Sandbox Code Playgroud) 在Python unittest模块中,在以下情况下使用assertTrue()vs. 是否有任何优点或缺点assertEqual()?
self.assertTrue(a == b)
self.assertEqual(a, b)
Run Code Online (Sandbox Code Playgroud) 假设我刚刚安装了 Kubernetes CNI 插件之一,例如:
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
Run Code Online (Sandbox Code Playgroud)
我可以查看或列出已安装的 CNI 插件吗?
安装后我怎么知道它的运行?或者如果我 'kubectl delete' 插件我怎么知道它被删除了?
安装插件后,我有点希望看到为这个插件创建的一些对象。这样如果我想删除它,那么我就不必记住我用来安装的确切 URL,我可以查找对象名称并删除它。
我正在运行 CentOS Linux。
我使用专有文件系统创建如下目录:
$ mkdir fooDir
Run Code Online (Sandbox Code Playgroud)
首先,我使用“ls -ldi”检查 inode 值:
$ ls -ldi
total 4
9223372036854783200 drwxrwxrwx 2 root root 4096 Jan 6 20:58 fooDir
Run Code Online (Sandbox Code Playgroud)
然后,我确认'stat'正在报告相同的inode:
$ stat /fooDir
File: `/fooDir'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 14h/20d Inode: 9223372036854783200 Links: 2
Access: (0777/drwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-01-06 20:58:13.000000000 +0000
Modify: 2016-01-06 20:58:13.000000000 +0000
Change: 2016-01-06 20:58:23.000000000 +0000
Run Code Online (Sandbox Code Playgroud)
但随后我切换到在 python 的交互式提示中运行并针对目录运行 om.stat:
$ python
Python 2.6.6 (r266:84292, Jun 18 2012, …Run Code Online (Sandbox Code Playgroud) 我有一个类(Bar)嵌入在另一个类(Foo)中.
class Foo():
class Bar():
def __init__(self):
self.a = 1
self.b = 2
...
self.z = 26
def __init__(self):
self.bar = Bar()
Run Code Online (Sandbox Code Playgroud)
要访问类Bar的属性,用户需要执行以下操作:
>>> f = Foo()
>>> f.bar.a
1
Run Code Online (Sandbox Code Playgroud)
如何设置短点表示法以便用户可以同时使用:
>>> f.bar.a
1
Run Code Online (Sandbox Code Playgroud)
和
>>> f.a
1
Run Code Online (Sandbox Code Playgroud)
在我的例子中,我试图证明Bar类有很多变量.所以我不想手动为每个人编写一个getter/setter.所以我想在这样的for循环中使用property():
def __init__(self):
self.bar = Bar()
# Allow shorter dot notation
for parm in self.bar.__dict__:
setattr(self, i, getattr(bar, i))
self.i = property(...)
Run Code Online (Sandbox Code Playgroud)
但我不确定如何在此上下文中使用属性而无需手动编写多个setter函数.
有关如何允许访问更短和更长记号的任何建议?
我有 2 个 gmail 帐户,每个帐户与 2 个单独的 GCP 帐户相关联。为了从命令行切换帐户,过去两周左右我一直在使用这两个命令:
$ gcloud config configurations activate ACCT_NAME
$ kubectl config set-context CONTEXT
Run Code Online (Sandbox Code Playgroud)
注意:我也一直在使用“kubectx”,它比使用“kubectl config set-context”更容易切换上下文;基本上它的打字少了一点。'kubectl config set-context' 和 'kubect' 过去都工作过(我认为)。
直到今天早上,这种方法似乎一直运行良好。我尝试从上下文 A 切换到上下文 B,但现在我收到如下错误:
$ kubectl get pods -A
Error from server (Forbidden): pods is forbidden: User "<my_email_address>" cannot list resource "pods" in API group "" at the cluster scope: Required "container.pods.list" permission.
Run Code Online (Sandbox Code Playgroud)
显示的电子邮件地址用于上下文 A,而不是上下文 B。我检查了以下命令以验证当前(或活动)上下文和电子邮件帐户是否正确:
$ kubectl config current-context
$ gcloud config configurations list
Run Code Online (Sandbox Code Playgroud)
所以当前的上下文、帐户和关联的电子邮件地址是正确的。我不清楚为什么 kubectl 仍在尝试使用来自上下文 A(而不是上下文 B)的电子邮件帐户访问 GKE。
有什么想法吗?
google-cloud-platform gcloud google-kubernetes-engine kubectl
我有一个Python 程序,它被设计为仅在某些Linux 发行版(即CentOS、Ubuntu 等)中运行。我想让它在 CentOS7 容器内运行,但它失败了,因为以下返回“4.9.49-moby”:
import platform
platform.release()
Run Code Online (Sandbox Code Playgroud)
该程序期望找到 Linux 内核版本,即“3.10.0-327.el7.x86_64”。
假设我无法修改程序的源代码。
我可以做哪些事情来解决这个问题?
我尝试围绕“uname -r”编写一个包装脚本来返回我想要的内容。但这并没有帮助,因为显然 Python 是直接从内核获取它的。
python ×4
cni ×2
kubectl ×2
kubernetes ×2
linux ×2
containers ×1
docker ×1
filesystems ×1
gcloud ×1
go ×1
inode ×1
kind ×1
lowercase ×1
python-2.7 ×1
stat ×1
string ×1
uname ×1
unit-testing ×1
uppercase ×1