小编min*_*hua的帖子

git shallow clone(clone --depth)错过了远程分支

克隆远程存储库后,它不会通过-a选项显示任何远程分支.可能是什么问题呢?怎么调试呢?在此片段中,未显示两个远程分支:

$ git clone --depth 1 git://git.savannah.gnu.org/pythonwebkit.git
$ cd pythonwebkit
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
$ git --version
git version 1.8.3.1
Run Code Online (Sandbox Code Playgroud)

在另一台机器上尝试相同的命令,它运作良好:

$ git clone --depth 1 git://git.savannah.gnu.org/pythonwebkit.git
Receiving objects: 100% (186886/186886), 818.91 MiB | 3.44 MiB/s, done.
$ cd pythonwebkit/
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/debian
  remotes/origin/master
  remotes/origin/python_codegen
$ git --version
git version 1.7.1
Run Code Online (Sandbox Code Playgroud)

尝试克隆另一个回购,它运作良好.虽然我可以在这台机器上再试一次,但最好知道什么是错的.

任何建议或提示都将受到欢迎.

编辑:答案摘要:从git版本1.8.3.2开始,需要同时使用"--depth"和"--no-single-branch"来获得与以前相同的行为.这被视为错误修复.

git branch shallow-clone

76
推荐指数
3
解决办法
4万
查看次数

如何运行服务于特定路径的http服务器?

这是我的Python3项目hiearchy:

projet
  \
  script.py
  web
    \
    index.html
Run Code Online (Sandbox Code Playgroud)

script.py,我想运行一个服务该web文件夹内容的http服务器.

这里建议这段代码运行一个简单的http服务器:

import http.server
import socketserver

PORT = 8000
Handler = http.server.SimpleHTTPRequestHandler
httpd = socketserver.TCPServer(("", PORT), Handler)
print("serving at port", PORT)
httpd.serve_forever()
Run Code Online (Sandbox Code Playgroud)

但这实际上是服务project,而不是web.如何指定要提供的文件夹的路径?

python simplehttpserver python-3.x

39
推荐指数
7
解决办法
4万
查看次数

Dockerfile将主机用户UID和GID复制到映像

类似于关于从主机复制容器中的UID/GIDSO帖子,但是如何使用具有复制UID和GID的用户构建映像?最好,你如何使用dockerfile做到这一点?

我可以使用bash脚本来完成它:

#!/bin/bash

# current uid and gid
curr_uid=`id -u`
curr_gid=`id -g`

# create bb.dockerfile:
cat << EOF1 > bb.dockerfile
 FROM ubuntu:xenial-20170214
 ARG UNAME=testuser
EOF1

 echo ARG UID=${curr_uid} >> bb.dockerfile
 echo ARG GID=${curr_gid} >> bb.dockerfile

cat << EOF2 >> bb.dockerfile
 RUN groupadd -g \$GID \$UNAME
 RUN useradd -m -u \$UID -g \$GID -s /bin/bash \$UNAME
 USER \$UNAME
 CMD /bin/bash
EOF2

docker build -f bb.dockerfile -t testimg .
Run Code Online (Sandbox Code Playgroud)

这个bash将生成一个docker文件,如下所示并在其上构建.

 FROM ubuntu:xenial-20170214
 ARG UNAME=testuser
 ARG UID=1982
 ARG GID=1982 …
Run Code Online (Sandbox Code Playgroud)

permissions docker dockerfile

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

GDB-Python脚本:迭代C/C++结构域的任何样本

新的GDB-Python脚本API看起来非常强大,应该非常有用.但是,编写一个有用的脚本来迭代C或C++结构中的字段并非易事.有没有人知道一些确切的样品呢?

提前致谢.


更新最终样本:替换_print_fields()早期样本.

    if l.type.code == gdb.TYPE_CODE_STRUCT:
        print "Found a struct  %s " % n
        #self._print_fields(n, t)
        self._print_deep_items(n, t, l)
    else:
        print "Found no struct"

def _print_deep_items (self, n_, type_, instance_):
    for fld in type_.fields():
        fn = fld.name
        ft = fld.type
        fv = instance_[fn]
        if fv.type.code == gdb.TYPE_CODE_STRUCT:
            print "  Found a sub struct  %s " % fn
            self._print_deep_items(fn, ft, fv)
        else:
            print "    Field %s " % fn, " type %s " % ft.tag, " …
Run Code Online (Sandbox Code Playgroud)

c c++ python scripting gdb

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

C++使用boost fusion adapt_struct迭代到嵌套的struct字段中

两个stackoverflow 答案建议使用fusion adapt_struct迭代结构字段的方法.这种方法看起来不错.但是,如何迭代到一个本身就是结构的字段?

根据之前的答案,我想出了下面的代码.问题出在代码无法编译的"#if 0"子句中.作为替代解决方案,我创建了"decode()"函数来获取指向目标参数的void指针.这有效,但在编译时丢失了类型信息.有更好的解决方案吗?

struct Foo_s { int i; };
BOOST_FUSION_ADAPT_STRUCT( Foo_s,  (int, i) )

struct Bar_s { int v; Foo_s w; };
BOOST_FUSION_ADAPT_STRUCT( Bar_s, (int, v)  (Foo_s, w) )

struct AppendToTextBox {
    template <typename T> void operator()(T& t) const {
        int status = 0;
        const char *realname = abi::__cxa_demangle(typeid(t).name(), 0, 0, &status);
        printf("  typename: %s  value: %s  realname: %s\n", typeid(t).name(),
               boost::lexical_cast<std::string>(t).c_str(), realname);
        std::string rn(realname);
        if ( rn.rfind("_s") == rn.size()-2 ) {
#if 0 /* this can …
Run Code Online (Sandbox Code Playgroud)

c++ reflection introspection boost-fusion template-meta-programming

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

什么dbus性能问题可以阻止它嵌入式系统?

从我的阅读中看,由于存在守护进程,dbus性能应该比其他消息传递ipc机制慢两倍.

在讨论这样的问题时,Linux IPC技术使用某些人提到了性能问题.除了两倍慢的因素外,您是否看到性能问题?您是否看到阻止dbus在嵌入式系统中使用的问题?

据我所知,dbus是否适用于小消息.如果需要传递大量数据,其中一个解决方案是将数据放入共享内存或堆中,然后使用dbus进行通知.根据所讨论的其他ipc机制正在考虑的是:信号,匿名管道,命名管道或FIFO,SysV消息队列,POSIX消息队列,SysV共享内存,POSIX共享内存,SysV信号量,POSIX信号量,FUTEX锁,文件 - 支持和匿名共享内存使用mmap,UNIX域套接字,Netlink套接字,网络套接字,Inotify机制,FUSE子系统,D-Bus子系统.

我应该提一个列出要求的问题(尽管它以apache为中心):

  • 分组/消息导向
  • 能够处理点对点和一对多通信
  • 没有层次结构,没有服务器和客户端
  • 如果一个端点崩溃,则必须通知其他端点
  • 来自现有Linux发行版的良好支持
  • 为了创建动态页面,Apache存在"绑定" - 这个太具体了,在一般的嵌入式dbus使用讨论中可以忽略它

然而,关于性能的另一个问题,所以提到的技术来提高性能.考虑到这一切,我想在嵌入式系统中使用dbus时应该有更少的问题或缺点.

embedded performance ipc dbus c-api

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

亚马逊 AWS Kinesis Video Boto GetMedia/PutMedia

有谁知道如何使用 boto3 sdk 将视频发送到 kinesis 视频流的完整示例?

最初针对 GetMedia 和 PutMedia 都提出了这个问题。现在我已经得到了 GetMedia 部分的示例代码:

client = boto3.client('kinesisvideo')
response = client.get_data_endpoint(
    StreamName='my-test-stream',
    APIName='GET_MEDIA'
)
print(response)
endpoint = response.get('DataEndpoint', None)
print("endpoint %s" % endpoint)

if endpoint is not None:
    client2 = boto3.client('kinesis-video-media', endpoint_url=endpoint)
    response = client2.get_media(
        StreamName='my-test-stream',
        StartSelector={
            'StartSelectorType': 'EARLIEST',
        }
    )
    print(response)

    stream = response['Payload'] # botocore.response.StreamingBody object
    while True:
            ret, frame = stream.read()
            print(" stream type ret %s frame %s" % (type(ret), type(frame)))
Run Code Online (Sandbox Code Playgroud)

您如何访问 PutMedia?从之前的文章“ Amazon Kinesis Video GetMedia/PutMedia ”来看,您似乎必须为 PutMedia …

python amazon-web-services amazon-kinesis boto3

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

什么是dbus守护进程以及为什么vlc需要它

我使用buildroot交叉编译VLC(版本2.1.2)媒体播放器用于扶手板.我已经使用串行电缆将电路板连接到我的linux PC.当我尝试在minicom中使用"vlc"命令运行播放器时,该命令位于我的根文件系统的/ usr/bin中.我收到以下错误:

禁止接口错误:无法连接到D-Bus会话守护程序:/ usr/bin/dbus-launch异常终止,出现以下错误:自动启动错误:X11初始化失败.

任何人都可以澄清这个错误的含义,也可以告诉我什么是dbus以及为什么我的VLC播放器需要它.

谢谢你的帮助.

linux x11 dbus embedded-linux buildroot

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

git标签不在分支上

我从https://github.com/eclipse/mosquitto克隆了mosquitto repo .它包含一个标签v1.4.9.然而,它看起来不像是在一个分支上.

怎么会发生这种情况?作者是否真的在自己的仓库中保留了一个分支,但只将标签从该分支推送到github?或者他只是提交标签?

我把标签变成了一个本地分支:

$ git checkout -b work149 v1.4.9
Run Code Online (Sandbox Code Playgroud)

并查看了分支上的最后一次提交:

$ git log -1
commit 91bfd82491f90e24b6fe9c036f0b04a1f5c14a89
Merge: bf959ef 2d0af73
Author: Roger A. Light <roger@atchoo.org>
Date:   Thu Jun 2 22:05:34 2016 +0100

    Merge branch 'fixes'
Run Code Online (Sandbox Code Playgroud)

此提交不仅仅是fixes分支.

或者git log --graph我可以看到同一分支上的早期提交(不是fixes分支,而是我试图理解的分支):

* |   commit bf959ef9b0ae0e4d74bf80158ffb0b7c69da533d
|\ \  Merge: 646e0a0 5cca6b4
| |/  Author: Roger A. Light <roger@atchoo.org>
| |   Date:   Sun Feb 14 14:38:42 2016 +0000
| |
| |       Merge …
Run Code Online (Sandbox Code Playgroud)

tags git github git-branch

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

printf()由gcc检查的包装器参数

当C printf()及其系列由命令行编译gcc-Wall在命令行上使用时,编译器会根据正在使用的格式字符串警告错误的参数.作为一个例子,下面的代码会得到一条错误消息,说明格式指定了3个参数,但实际上你只传递了两个.

printf("%d%d%d", 1, 2);
Run Code Online (Sandbox Code Playgroud)

在编写包装器时printf(),如何保留此功能?一种功能或宏的形式将是我能想到的.但是简单的解析器也是可以接受的.

可以在stackoverflow上找到编写printf包装器的几种方法.两种常见的方法是使用vprintf和varargs,并使用__builtin_apply.我试过这两种方法,都没有用.

c printf gcc warnings wrapper

6
推荐指数
1
解决办法
1366
查看次数