我知道Python中的集合是无序的,但我对它们显示的"顺序"感到好奇,因为它似乎是一致的.它们似乎每次都以相同的方式乱序:
>>> set_1 = set([5, 2, 7, 2, 1, 88])
>>> set_2 = set([5, 2, 7, 2, 1, 88])
>>> set_1
set([88, 1, 2, 5, 7])
>>> set_2
set([88, 1, 2, 5, 7])
Run Code Online (Sandbox Code Playgroud)
......和另一个例子:
>>> set_3 = set('abracadabra')
>>> set_4 = set('abracadabra')
>>> set_3
set(['a', 'r', 'b', 'c', 'd'])
>>>> set_4
set(['a', 'r', 'b', 'c', 'd'])
Run Code Online (Sandbox Code Playgroud)
我只是好奇为什么会这样.有帮助吗?
在创建列表时,Vimscript是否允许这种表示法样式?
let mylist = [
"a",
"b",
"c"
]
Run Code Online (Sandbox Code Playgroud)
或者仅限于单行(let mylist = [ "a", "b", "c" ])?我正在编写一个列表,我可以很容易地预见到以后添加元素.
我熟悉for块代码上下文中的循环.例如:
for c in "word":
print c
Run Code Online (Sandbox Code Playgroud)
我刚刚看到一些使用for不同的例子.它们不是从for语句开始,而是在表达式的末尾标记它(并且不涉及缩进的代码块).例如:
sum(x*x for x in range(10))
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我指出一些概述这种用法的文档for吗?我已经找到了例子,但没有解释.for我能够找到的所有文档都描述了之前的用法(块代码示例).我甚至不确定该怎么称呼这个用法,所以如果我的问题的标题不清楚我会道歉.
我从我的管理员帐户安装了Homebrew.如果我brew doctor从该帐户运行,我没有错误,但如果我brew doctor从我的非管理员用户帐户运行,我收到有关几个目录(usr/local及其子目录)不可写的警告,以及我的建议chown.
最近,我从我的非管理员帐户安装了RVM(以确保它对该用户可用并安装在他们的主目录中).然后我跑了rvm install 1.9.3(再次,作为非管理员),并收到一个错误警告我,这usr/local/bin是不可写的,是Homebrew所必需的.跑步rvm requirements产生相同的警告.
我是否应该将RVM安装为非管理员,当我使用 RVM 安装ruby版本时切换到管理员,然后能够从非管理员帐户使用RVM(除了安装之外的所有内容)?或者这里有什么不对吗?
我尝试安装1.9.3时的RVM输出如下:
$ rvm install 1.9.3
Searching for binary rubies, this might take some time.
No binary rubies available for: osx/10.8/x86_64/ruby-1.9.3-p448.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for osx.
ERROR: '/usr/local/bin' is not writable - it is required for Homebrew, try 'brew doctor' to fix …Run Code Online (Sandbox Code Playgroud) 随着时间的推移,我已经使用Homebrew安装了许多软件包,主要来自默认的公式回购(homebrew-core),但有些来自其他地方brew tap.
现在我正在整理一些安装脚本,以使我的开发环境更具可重复性,并且我试图找出哪些软件包可以通过简单安装brew install,哪些需要brew tap预先安装.
查询brew的能力已经证明对于确定我为每个包使用哪些选项很有用,但对于这个与抽头相关的问题却没有用.有没有办法做到这一点,而无需手动浏览每个包并查看它可用的位置?
我正在努力更好地理解模块如何扩展并相互包含.
说我有模块A:
module A
def learned_from_A
true
end
end
A.instance_methods # [:learned_from_A]
Run Code Online (Sandbox Code Playgroud)
我把它的技巧混合成B:
module B
extend A
end
B.learned_from_A # true
Run Code Online (Sandbox Code Playgroud)
我天真地试图给ç一切乙有:
module C
extend B
end
C.learned_from_A # NoMethodError
Run Code Online (Sandbox Code Playgroud)
我想我已经围绕着这个问题.当B扩展A时,A的实例方法的副本通过B的单例类绑定到B:
B.singleton_methods # [:learned_from_A]
Run Code Online (Sandbox Code Playgroud)
虽然:learned_from_A是可调用乙,它不是一个乙的实例方法,所以当Ç延伸乙,:learned_from_A是不复制到Ç.
如果B代替包含 A,那么A的实例方法的副本将被包含在B自己的实例方法中.
module B
include A
end
B.instance_methods # …Run Code Online (Sandbox Code Playgroud) 我在 minikube 中启动了一个 postgresql 服务器,但我很难从集群外部连接到它。
更新
结果发现我的集群遇到了不相关的问题,导致了各种损坏的行为。我结束了整个集群和虚拟机,然后从头开始。现在我开始工作了。我将部署更改为 statefulset,但我认为它可以以任何一种方式工作。
设置和测试:
kubectl --context=minikube create -f postgres-statefulset.yaml
kubectl --context=minikube create -f postgres-service.yaml
url=$(minikube service postgres --url --format={{.IP}}:{{.Port}})
psql --host=${url%:*} --port=${url#*:} --username=postgres --dbname=postgres \
--command='SELECT refobjid FROM pg_depend LIMIT 1'
Password for user postgres:
refobjid
----------
1247
Run Code Online (Sandbox Code Playgroud)
postgres-service.yaml
apiVersion: v1
kind: Service
metadata:
name: postgres
labels:
app: postgres
role: service
spec:
selector:
app: postgres
type: NodePort
ports:
- name: postgres
port: 5432
targetPort: 5432
protocol: TCP
Run Code Online (Sandbox Code Playgroud)
postgres-statefulset.yaml
apiVersion: apps/v1beta2
kind: StatefulSet
metadata:
name: postgres …Run Code Online (Sandbox Code Playgroud) 根据haskeline 文档,输入CTRL+ Y应该从kill-ring中弹出最近的条目(例如我刚刚通过CTRL+ 删除的行U).我找到了它,它暂停了REPL,好像我输入了CTRL+ Z.
作为一个笨拙的解决方法,我发现从杀死环中键入CTRL+ V CTRL+ Ypops作为普通CTRL+ Y应该这样做.
这是一个知道的错误,还是其他什么在起作用?我可以修理吗?我正在运行GHC 8.0.2版.
不确定它是否重要,但我通过堆栈运行GHCi(例如stack ghci),并且我酿造已安装的堆栈(macOS).
我有一个git repo,远程origin镜像在3台主机上.
$ git remote -v
origin git@github.com:username/repo.git (fetch)
origin git@github.com:username/repo.git (push)
origin git@gitlab.com:username/repo.git (push)
origin git@bitbucket.org:username/repo.git (push)
Run Code Online (Sandbox Code Playgroud)
一切,无处不在提交一个.
$ git rev-parse HEAD
A
$ cat .git/refs/remotes/origin/master
A
Run Code Online (Sandbox Code Playgroud)
我作者提交B并推送它.现在大家的在提交乙.
$ git push origin master
To github.com:username/repo.git
A...B master -> master
To gitlab.com:username/repo.git
A...B master -> master
To bitbucket.org:username/repo.git
A...B master -> master
$ git rev-parse HEAD
B
$ cat .git/refs/remotes/origin/master
B
Run Code Online (Sandbox Code Playgroud)
现在我注意到最后一次提交中的错误,所以我修复它并修改提交.这使我与遥控器不同步.
$ git rev-parse HEAD
C
$ cat .git/refs/remotes/origin/master
B
Run Code Online (Sandbox Code Playgroud)
我喜欢避免盲目 …
如果我有:
2.times do
i ||= 1
print "#{i} "
i += 1
print "#{i} "
end
Run Code Online (Sandbox Code Playgroud)
我得到了1 2 1 2,而我正在期待1 2 2 3.i循环重新开始时为什么会丢失它的赋值?如果赋值发生在循环之外,它的行为与预期一致,所以我猜它与范围有关,但我没有意识到循环有自己的范围.有人可以澄清吗?
更新:感谢您的帮助.我的一些困惑源于从Python进入Ruby,它没有块范围(我认为).
ruby ×3
homebrew ×2
python ×2
block ×1
extend ×1
for-loop ×1
ghci ×1
git ×1
haskeline ×1
haskell ×1
kubernetes ×1
module ×1
permissions ×1
postgresql ×1
vim ×1