小编scu*_*bbo的帖子

为所有子文件夹设置git配置值

我知道可以设置覆盖用户级配置的每个repo配置(即/path/to/my/repo/.gitconfig覆盖~/.gitconfig).是否可以设置git配置覆盖给定文件夹的所有子文件夹的用户级设置?即,我有

|--topLevelFolder1
|--\
|   ---.gitconfig_override
|--\
|   ---childFolder1
|       \---[...]
|--\
|   ---childFolder2
|       \---[...]
Run Code Online (Sandbox Code Playgroud)

我希望定义的设置.gitconfig_override适用于childFolder1childFolder2.

我的动机如下:我有一台工作笔记本电脑,我也在业余时间用于个人项目.我的所有工作代码都嵌套在一个文件夹中.当我推动工作git repos时,我需要用我的工作角色 - 工作登录而不是名字,以及工作电子邮件.当我推送到我自己的个人(github)回购时,我想用我的真实姓名和个人电子邮件这样做.

我想到的其他可能的解决方案(和问题):

  • 为"工作"和"播放"创建单独的用户,适当地设置他们的用户级设置,并在切换上下文时以适当的用户身份登录(麻烦,加上我很容易忘记切换)
  • 创建一个脚本,在"workFolder"中搜索git repos,并添加/更新他们的.gitconfig文件以保存相应的详细信息(如果我创建一个repo并忘记在推送之前运行脚本,我将推送错误的人)
  • "hack"git,这样每次创建一个repo时,它都会检查文件路径,并在适当的情况下更新.gitconfig文件(复杂,混乱,几乎可以肯定是错误的方法 - 加上,我不会第一个线索如何去做!)

我检查了这个问题,它似乎只包含单个回购的解决方案,而不是多个.希望有人会看到错过那个问题的这个问题!

git

50
推荐指数
4
解决办法
7209
查看次数

在docker中安装pip

我无法在Docker中安装pip.

这是我的Dockerfile:

FROM ubuntu:14.04

# Install dependencies
RUN apt-get update -y
RUN apt-get install -y git curl apache2 php5 libapache2-mod-php5 php5-mcrypt php5-mysql python3.4 python-pip
Run Code Online (Sandbox Code Playgroud)

建设时,我得到:

Sending build context to Docker daemon 109.6 kB
Step 1 : FROM ubuntu:14.04
 ---> b549a9959a66
Step 2 : RUN apt-get update -y
 ---> Using cache
 ---> 84577471562c
Step 3 : RUN apt-get install -y git curl apache2 php5 libapache2-mod-php5 php5-mcrypt php5-mysql python3.4 python-pip
 ---> Running in 49252a6d0eb1
Reading package lists...
Building dependency tree...
Reading state …
Run Code Online (Sandbox Code Playgroud)

python pip docker

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

什么:q1在Vim中做什么?

我刚刚注意到,输入:q1关闭了我目前打开的文件(我通过拼写找到了这个:q!)

基于诸如2dd(删除两行)或2j(向下移动两行)之类的命令,我本来期望:2q"退出两个文件"(但是,如果我打开两个文件vi -O testfile1 testfile2,:2q 关闭其中一个 - 同样如此:q2).

:q简单丢弃后的数字是多少?或者它是否有一些我无法确定的效果?

而且,更一般地说 - 我怎么能为自己回答这个问题?我检查usr_21.txt| Go away and come back了Vim帮助,但没有发现这种行为.我甚至检查了这个着名的问题,但没有人提到过这个问题.

vim

14
推荐指数
1
解决办法
750
查看次数

为什么Java中没有实例级的Stream.concat方法?

我知道Stream.concat存在(doc)来连接两个流.但是,我遇到了需要在现有流中添加"更多"项目,然后继续处理它的情况.在这种情况下,我本来希望能够将以下方法联系在一起:

getStream(someArg)
  .map(Arg::getFoo)
  .concat(someOtherStreamOfFoos) // Or append, or...
  .map(...)
Run Code Online (Sandbox Code Playgroud)

但是,不存在这种实例级可链接append/concat方法.

这不是一个问题,要求解决这个问题,或更优雅的方法(虽然我当然会感激任何其他观点!).相反,我问的是导致这一决定的设计因素.我相信,Stream界面是由一些非常聪明的人设计的,他们都知道最小惊讶原则 - 所以,我必须假设他们决定省略这个(对我来说)直观明显的方法,这意味着该方法是一个反模式,或由于某些技术限制而无法实现.我很想知道原因.

java java-8 java-stream

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

Python对象持久性

我正在寻求有关在Python中实现对象持久性的方法的建议.更确切地说,我希望能够将Python对象链接到文件,使得打开该文件表示的任何Python进程共享相同的信息,任何进程都可以更改其对象,并且更改将传播到其他进程,即使关闭"存储"对象的所有进程,该文件仍将保留,并可由另一个进程重新打开.

我在Python的发行版中找到了三个主要的候选者 - anydbm,pickle和shelve(dbm似乎很完美,但它只是Unix,我在Windows上).但是,它们都有缺陷:

  • anydbm只能处理字符串值的字典(我正在寻找存储字典列表,所有字典都有字符串键和字符串值,但理想情况下我会寻找一个没有类型限制的模块)
  • 搁置要求在更改传播之前重新打开文件 - 例如,如果两个进程A和B加载相同的文件(包含搁置的空列表),并且A将一个项添加到列表并调用sync(),B将在重新加载文件之前,仍然会将列表视为空.
  • pickle(我目前用于我的测试实现的模块)具有与shelve相同的"重载要求",并且也不会覆盖以前的数据 - 如果进程A将15个空字符串转储到文件上,然后字符串'hello',进程B必须加载文件十六次才能获得'hello'字符串.我目前正在处理这个问题,通过重复读取的任何写操作,直到文件结束("在写入之前擦除平板"),并使每次读取操作重复直到文件结束,但我觉得必须有更好的方法.

我的理想模块的行为如下("A >>>"表示进程A执行的代码,"B >>>"进程B执行的代码):

A>>> import imaginary_perfect_module as mod
B>>> import imaginary_perfect_module as mod
A>>> d = mod.load('a_file') 
B>>> d = mod.load('a_file')
A>>> d
{}
B>>> d
{}
A>>> d[1] = 'this string is one'
A>>> d['ones'] = 1   #anydbm would sulk here
A>>> d['ones'] = 11 
A>>> d['a dict'] = {'this dictionary' : 'is arbitrary', 42 : 'the answer'}
B>>> d['ones']   #shelve would raise a KeyError here, unless A …
Run Code Online (Sandbox Code Playgroud)

python persistence

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

如何在CDK中为基于Lambda的APIGateway提供自定义域名?

出于此问题的目的,假设我example.org在 Route53 中已经有一个托管区域(当然,我的实际区域是不同的)

使用以下 CDK 应用程序:

export class MyExampleStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);
    
    const backend = new Function(this, 'backendLambda', {
      code: new AssetCode("lambda/"),
      handler: "index.handler",
      runtime: Runtime.PYTHON_3_8
    });

    apiDomainName = 'api.test.example.org'
    const api = new LambdaRestApi(this, 'api', {
      handler: backend,
      proxy: true,
      deploy: true,
      domainName: { 
        domainName: apiDomainName,
        certificate: new Certificate(this, 'apiCertificate', {
          domainName: apiDomainName
        })
      }
    });

  }
}
Run Code Online (Sandbox Code Playgroud)

,当我运行时cdk deploy,部分输出如下:

Outputs:
MyExampleStack.apiEndpoint0F54D2EA = https://<alphanumericId>.execute-api.us-east-1.amazonaws.com/prod/
Run Code Online (Sandbox Code Playgroud)

,事实上,当我访问 …

amazon-web-services amazon-route53 aws-api-gateway aws-cdk

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

UPnP检测延迟

我在Raspberry Pi上安装了RaspBMC,在Window笔记本电脑上安装了XBMC,在我的Android设备上安装了UPnPlay.Raspberry Pi始终处于打开状态,旨在充当系统的服务器.

IP地址涉及:

  • 192.168.0.18:RPi

  • 192.168.0.13:笔记本电脑

  • 192.168.0.1:路由器

当我将Android设备连接到WiFi并打开UPnPlay或在笔记本电脑上启动XBMC时,之前在Raspberry Pi出现在设备列表中之前会有5-10分钟的延迟.然而,在过去的几周里,除非我在其他服务(XBMC或UPnPlay)运行时重启它,否则Pi根本不会出现.我可以ssh和sftp到Pi,并且可以从两个设备访问RaspBMC的Web界面,没有任何问题.

是否可能以某种方式丢失或阻止UPnP网络发现/通知消息?我该怎么调查这个?我对网络的了解仅限于端口转发.

我对UPnP的替代协议的建议持开放态度 - 我遇到的第一个很简单,它在我之前的设置(桌面上的XBMC将媒体发送到Apple TV)上工作得很好.


编辑:

在笔记本电脑上使用Wireshark进行的一些分析显示笔记本电脑的行为符合预期 - 通过SSDP定期发送M-SEARCH和NOTIFY数据包到239.255.255.250(我认为是多播地址).但是,RPi不仅没有响应这些带有单播数据包的数据包(正如维基百科建议的那样),而且除了在启动时它也没有发送任何SSDP数据包.

我对Wireshark和网络分析一般都很陌生,但我真的很感激你能给出的任何指导或建议.

我使用的Wireshark过滤器是"(udp.dstport == 1900或ip.addr == 192.168.0.18)和!(ip.src == 192.168.0.1)",其中192.168.0.18是我的RPi地址 - 我相信这是正确的,但正如我所说,我对Wireshark很新 - 请纠正我,如果我犯了错误!特别是,我假设RPi对M-SEARCH的多播响应会有ip.src = 192.168.0.18,但我不确定(可能是192.168.0.1或239.255.255.250)


编辑2:

这篇文章的指导下,我跑了/sbin/route -n,并获得了以下输出.

pi@raspbmc:~$ /sbin/route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
Run Code Online (Sandbox Code Playgroud)

我不知道如何解释这个,但是,从链接线程中的其他注释来看,这似乎缺少多播条目.再一次,根据链接线程的建议,我运行sudo route add -net 239.0.0.0 netmask 255.0.0.0 eth0,添加了这个 …

upnp xbmc raspberry-pi

8
推荐指数
1
解决办法
5601
查看次数

让 lighttpd 监听多个端口

我有一个在 AWS EC2 实例上运行的 lighttpd 服务器。它可以在端口 80(或任何其他端口,如果我更改 /etc/lighttpd/lighttpd.conf 中的 server.port)上提供服务,没有任何问题。但是,当我在不同的端口(例如 8080)上提供替代文档根目录时,浏览器永远无法连接到服务器。

我的 lighttpd.conf 文件的相关部分:

server.port = 80

##
## Use IPv6?
##
server.use-ipv6 = "disable"

##
## bind to a specific IP
##
#server.bind = "localhost"

##
## Run as a different username/groupname.
## This requires root permissions during startup. 
##
server.username  = "lighttpd"
server.groupname = "lighttpd"

## 
## enable core files.
##
#server.core-files = "disable"

##
## Document root
##
server.document-root = server_root + "/release"
$SERVER["socket"] == ":8080" { …
Run Code Online (Sandbox Code Playgroud)

lighttpd

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

pip uninstall上的自定义代码

我想在运行时运行一些自定义代码pip uninstall,清理在安装时创建的文件.我该怎么办呢?

我在setup.py中使用以下命令运行自定义安装代码:

from setuptools import setup
from setuptools.command.install import install

class CustomInstallCommand(install):
  def run(self):
    #Custom code here
    install.run(self)
...
setup(
  ...
  cmdclass = {
    'install':CustomInstallCommand
  }
)
Run Code Online (Sandbox Code Playgroud)

但尝试类似的setuptools.command.uninstallfrom setuptools.command.install import uninstall失败的东西,因为那些模块/名称不存在.

python pip setuptools setup.py

8
推荐指数
1
解决办法
523
查看次数

“ * p +++ c&63”在C ++中是什么意思?

我是Hitman游戏(一种隐身暗杀游戏)的粉丝。

在针对最新挑战的电影中,我发现了以下类似代码的代码段。我没有C ++经验,也没有在系统上安装C工具,因此我在这里尝试将其复制到REPL中,但是始终出现错误*

这是我对代码的转录:

#include<stdio.h>
void main(int,char**a){for(char*p="25YZ[<TT];SR^2]W+%'C^,X-0?0&__V[!;TT];D+ #.A3,A+ 4C,$!_.",c=a[1][0];*p;putc(c=(*p+++c&63)+32,stdout));}
Run Code Online (Sandbox Code Playgroud)

(本文后面重新格式化以提高可读性)。

据我所知,这意味着要成为一个密码(“获取的每个字符cipher,将其传递通过转换,然后将其打印出来”),但是我既无法执行它,也无法充分理解它来翻译它转换成我熟悉的Python语言:我知道这*p+++c&63意味着什么。我的猜测是应该将其分解如下:

  • *p++-采取下一个字符*p...
  • + -...并将其(整数表示形式)添加到...
  • c-...的先前设置的值c(来自循环的上一迭代,或来自的初始化c=a[1][0])...
  • &63- ...做点什么?看起来像位运算符
  • +32 -将结果加32

此外,的初始值a似乎是解密密钥-但我已经搜索了视频的其余部分,并且找不到任何暗示。

我试图将其翻译为Python(以所有字母和数字为键),如下所示:

import string

cipher = "25YZ[<TT];SR^2]W+%'C^,X-0?0&__V[!;TT];D+ #.A3,A+ 4C,$!_."

def printout(c):
  plaintext = ""
  for p in cipher:
    c = chr(ord(p) + ((ord(c) & 63)) + 32)
    plaintext += c
  print(plaintext)

for c in string.letters + …
Run Code Online (Sandbox Code Playgroud)

c

8
推荐指数
1
解决办法
252
查看次数