小编UsA*_*R33的帖子

什么是可以通过S3 rest API访问的有效S3密钥名称?

从AWS文档中,我理解:

  • S3密钥名称可以是任何UNICODE名称<1024个字符
  • 使用GET OBJ时,我需要对密钥名称进行URL编码以访问它.

但是,这些规则似乎过于宽松.

例如,如果我创建一个名为"../../d"的密钥,当我尝试使用GET OBJECT API访问它时会发生400 ERROR.有趣的是,访问'../d'没问题.

是否有文件说明什么是合法的?

amazon-s3

45
推荐指数
2
解决办法
4万
查看次数

如何以编程方式确定是否可以在当前设备上安装Play商店中的应用程序?

在我的应用程序中,我推荐相关的应用程序,但只想推荐它们,如果它们实际上可以安装在设备上(例如相关应用程序的目标国家/地区的设备,正确的操作系统版本等).请参阅https://developer.android.com/google/play/filters.html

  1. 是否有任何API允许我通过链接到market来查询我推荐的给定应用程序:// details?id = package_name可以安装在本地设备上吗?
  2. 如果没有,我可以在我自己的应用程序中手动存储其他应用程序的要求.但是,如何确定用户的Play商店所关联的国家/地区等项目?

android google-play google-play-services

18
推荐指数
1
解决办法
2873
查看次数

如何防止在标签完成时替换字符完成bash完成

我正在为一个工具构建一个bash完成脚本,该脚本与curl共享文件上传语义.

使用curl,您可以:

curl -F var = @ file

上传文件.

我的应用程序具有类似的语义,我希望能够在按下'@'后显示可能的文件.不幸的是,这证明是困难的:

cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
if [[ "$cur" == @* && "$prev" == '=' ]]; then
    COMPREPLY=( $(compgen -f ${cur:1}) )
    return 0
fi 
Run Code Online (Sandbox Code Playgroud)

因此,如果命令(到目前为止)以以下结尾:

abc=@
Run Code Online (Sandbox Code Playgroud)

将显示当前目录中的文件.

 var=@/usr/                                                                                                                       
 /usr/bin      /usr/games 
Run Code Online (Sandbox Code Playgroud)

问题是,如果我真的按Tab键完成,'@'就会消失!

 var=/usr/bin
Run Code Online (Sandbox Code Playgroud)

所以看起来bash用标签式COMPREPLY替换整个当前单词.

避免这种情况的唯一方法是这样做:

        COMPREPLY=( $(compgen -f ${cur:1}) )
        for (( i=0; i<${#COMPREPLY[@]}; i++ )); 
        do 
            COMPREPLY[$i]='@'${COMPREPLY[$i]} 
        done                                                                                                                       
Run Code Online (Sandbox Code Playgroud)

但是现在标签的完成看起来很奇怪:

@/usr/bin      @/usr/games
Run Code Online (Sandbox Code Playgroud)

反正有没有显示正常的文件标签完成(没有'@'前缀)但在点击标签时保留'@'?

bash bash-completion

16
推荐指数
1
解决办法
1054
查看次数

什么条件导致打开的非阻塞命名管道(fifo)对于读取"不可用"?

情况:

new_pipe = os.open(pipe_path, os.O_RDONLY | os.O_NONBLOCK) # pipe_path points to a FIFO
data = os.read(new_pipe, 1024)
Run Code Online (Sandbox Code Playgroud)

读取偶尔会引发错误-11:资源暂时不可用.

什么时候出现这个错误?这似乎非常罕见,因为常见情况返回数据:

  • 如果没有编写器打开管道,则返回空的str('').
  • 如果编写器已打开管道,但fifo中没有数据,则还会返回空的str('')
  • 当然,如果作者将数据放入fifo中,那么将读取该数据.

python linux named-pipes fifo mkfifo

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

TCP ack中的数据有效负载

我正在筛选一些网络跟踪,并在我自己的机器上注意到,当我通过HTTP连接时,数据包看起来像:

client --> server: GET
server --> client: tcp ack
server --> client: HTTP response
client --> server: tcp ack
Run Code Online (Sandbox Code Playgroud)

但是,我查看了几年前我保存的一些CIFS(SMB)跟踪.我看到的东西是:

client --> server: Create Request 
server --> client: Create response (This packet also acks the request)
Run Code Online (Sandbox Code Playgroud)

在高层次上,我想知道为什么差异 - 导致不同行为的原因是什么?什么控制应用程序响应是否放在请求ack或其他数据包上:应用程序还是操作系统?

tcp

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

Python的子进程popen中的死锁

我有一个问题,popen是死锁.具体来说,运行popen的线程(不是主线程)被卡在:

File: "/usr/lib/python2.7/subprocess.py", line 679, in __init__
  errread, errwrite)
File: "/usr/lib/python2.7/subprocess.py", line 1224, in _execute_child
  data = _eintr_retry_call(os.read, errpipe_read, 1048576)
File: "/usr/lib/python2.7/subprocess.py", line 478, in _eintr_retry_call
  return func(*args)
Run Code Online (Sandbox Code Playgroud)

使用ps,我可以看到python进程已经自行分叉,但它还没有运行os.execvp.通过检查ps可以看出这一点,我看到主进程的子进程具有相同的名称.杀死该进程会导致父进程中的卡住线程恢复.

据我所知,子进程(将execvp)锁定在其创建和运行os.execvp之间的50行中的某个位置.使事情复杂化的情况很少见; 也许100个popens中有1个.这种锁定怎么会发生?我如何解决它?(我不能在一个简单的python程序中重现这种行为).

我应该注意,虽然这个程序是令人难以置信的多线程(运行数百个线程),但没有其他线程分叉或使用popen.许多其他线程正在使用文件描述符(主要是套接字).

技术说明:

  • 在Amazon EC2上运行
  • ubuntu 11.10中的Linux 3.0.0-14-virtual x86_64
  • python 2.7.2解释器.
  • 使用包括paramiko和boto在内的几个库

linux subprocess popen python-2.7

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

为什么rsyslogd找不到libgcc_s.so.1?

场景:在Ubuntu 12.4 lxc主机上运行debootstrapped Ubuntu 11.4 lxc guest虚拟机(均为64位)

在lxc guest中,rsyslogd经常与SIGABRT崩溃,说明:

libgcc_s.so.1 must be installed for pthread_cancel to work
0334.380551272:7f4128a84700: 
Signal 6 (SIGABRT) occured, execution must be terminated.
Run Code Online (Sandbox Code Playgroud)

我不确定为什么找不到libgcc_s.so.1.如果我运行ldconfig -p:

$# ldconfig -p | grep libgcc
        libgcc_s.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libgcc_s.so.1
        libgcc_s.so.1 (libc6) => /usr/lib32/libgcc_s.so.1
Run Code Online (Sandbox Code Playgroud)

它被列出.这两个链接都是有效的.

我该如何解决这个问题?

编辑:objdump -T输出请求:

/lib/x86_64-linux-gnu/libgcc_s.so.1:     file format elf64-x86-64

DYNAMIC SYMBOL TABLE:
00000000000025d8 l    d  .init  0000000000000000              .init
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.2.5 memset
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.2.5 abort
0000000000000000  w   D  *UND*  0000000000000000              __gmon_start__
0000000000000000  w   D …
Run Code Online (Sandbox Code Playgroud)

ubuntu gcc rsyslog lxc libgcc

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

为什么python正则表达式在Linux上编译而不是Windows?

我有一个正则表达式来检测unicode字符串中的无效xml 1.0字符:

bad_xml_chars = re.compile(u'[^\x09\x0A\x0D\u0020-\uD7FF\uE000-\uFFFD\U00010000-\U0010FFFF]', re.U)
Run Code Online (Sandbox Code Playgroud)

在Linux/python2.7上,这非常有效.在Windows上引发以下内容:

  File "C:\Python27\lib\re.py", line 190, in compile
    return _compile(pattern, flags)
  File "C:\Python27\lib\re.py", line 242, in _compile
    raise error, v # invalid expression
  sre_constants.error: bad character range
Run Code Online (Sandbox Code Playgroud)

任何想法为什么这不是在Windows上编译?

python regex

10
推荐指数
2
解决办法
1016
查看次数

如何在Linux中自动创建锁定文件?

场景:我有很多进程需要通过网络获取文件.如果文件已经下载,我希望它缓存在磁盘上.如果另一个进程正在下载该文件,则阻止直到完成下载.

我一直在努力寻找最简单的方法.显而易见的方法是:

create file w/ an exclusive lock active on it only if it doesn't exist (O_CREAT | O_EXCL)
if file exists already:
   open file and acquire exclusive lock
else:
   download to newly created file
release lock
Run Code Online (Sandbox Code Playgroud)

该系统通过(看似)没有竞争条件来实现上述目标

不幸的是,我找不到有关如何使用open()等创建一个在Linux中锁定的文件的文档.如果我将创建步骤拆分为:

open w/ O_CREAT | O_EXCL
flock
Run Code Online (Sandbox Code Playgroud)

现在,创建和锁定之间存在竞争条件(非创建进程在创建者执行之前获取锁定).

我意识到我可以在每个文件中使用一个外部锁定文件(例如filename +'.lock),这是我在尝试创建文件名之前获得的,但这感觉...不优雅(我现在需要担心如何实际拥有一个文件.lock后缀!)

反正原子创建和锁定它(如Windows提供)或外部锁定文件方法几乎是标准/必需的?

linux file-io flock fcntl

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

如何防止sphinx将url作为超链接?

在我的文档中,我偶尔会使用"垃圾"网址作为示例,并且不希望它们成为无处的超链接.是否有任何语法使这些网址不是超链接?

restructuredtext python-sphinx

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