小编iva*_*van的帖子

无序Python集的"顺序"

我知道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)

我只是好奇为什么会这样.有帮助吗?

python python-internals

47
推荐指数
2
解决办法
9436
查看次数

Vimscript:可以将列表创建拆分为多行吗?

在创建列表时,Vimscript是否允许这种表示法样式?

let mylist = [
               "a",
               "b",
               "c"
             ]
Run Code Online (Sandbox Code Playgroud)

或者仅限于单行(let mylist = [ "a", "b", "c" ])?我正在编写一个列表,我可以很容易地预见到以后添加元素.

vim

35
推荐指数
1
解决办法
3870
查看次数

Python`for`语法:块代码与单行生成器表达式

我熟悉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我能够找到的所有文档都描述了之前的用法(块代码示例).我甚至不确定该怎么称呼这个用法,所以如果我的问题的标题不清楚我会道歉.

python for-loop

29
推荐指数
2
解决办法
7万
查看次数

Homebrew Permissions一团糟

我从我的管理员帐户安装了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)

ruby permissions homebrew

22
推荐指数
1
解决办法
2万
查看次数

Homebrew:列出从水龙头安装的软件包?

随着时间的推移,我已经使用Homebrew安装了许多软件包,主要来自默认的公式回购(homebrew-core),但有些来自其他地方brew tap.

现在我正在整理一些安装脚本,以使我的开发环境更具可重复性,并且我试图找出哪些软件包可以通过简单安装brew install,哪些需要brew tap预先安装.

查询brew的能力已经证明对于确定我为每个包使用哪些选项很有用,但对于这个与抽头相关的问题却没有用.有没有办法做到这一点,而无需手动浏览每个包并查看它可用的位置?

homebrew

15
推荐指数
2
解决办法
5562
查看次数

Ruby:扩展/包含模块的模块

我正在努力更好地理解模块如何扩展并相互包含.

说我有模块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)

ruby module extend

13
推荐指数
1
解决办法
2096
查看次数

从 Kubernetes 集群外部连接到 postgres 时遇到问题

我在 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)

postgresql kubernetes

12
推荐指数
1
解决办法
2万
查看次数

Haskell:GHCi像Ctrl-Z一样对待Ctrl-Y

根据haskeline 文档,输入CTRL+ Y应该从kill-ring中弹出最近的条目(例如我刚刚通过CTRL+ 删除的行U).我找到了它,它暂停了REPL,好像我输入了CTRL+ Z.

作为一个笨拙的解决方法,我发现从杀死环中键入CTRL+ V CTRL+ Ypops作为普通CTRL+ Y应该这样做.

这是一个知道的错误,还是其他什么在起作用?我可以修理吗?我正在运行GHC 8.0.2版.

不确定它是否重要,但我通过堆栈运行GHCi(例如stack ghci),并且我酿造已安装的堆栈(macOS).

haskell ghci haskeline

11
推荐指数
1
解决办法
151
查看次数

Git: - force-with-lease和multiple pushurls

我有一个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)

我喜欢避免盲目 …

git

10
推荐指数
1
解决办法
1127
查看次数

块中局部变量的范围

如果我有:

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 block variable-assignment

8
推荐指数
2
解决办法
4369
查看次数