我正在尝试将数据传递到“剪切”中,例如剪切掉文本的第一列。这有效
$ cat test.txt | cut -d\ -f2-
Run Code Online (Sandbox Code Playgroud)
从stdin读取也可以:
$ cut -d\ -f2- -
? doc/html/analysis.html
? doc/html/classxytree-members.html
<CTRL+D>
Run Code Online (Sandbox Code Playgroud)
但是,一旦涉及到管道,它就不再接受我<CTRL+D>,并且我也无法发出“文件结束”的信号:
$ cut -d\ -f2- - | xargs echo
Run Code Online (Sandbox Code Playgroud)
更新:这显然是旧版本bash(3.00.15)中的错误。它确实可以在较新的版本中运行(尝试4.0.33和3.2.25)。不过,最好有一些解决方法,因为我无法轻松升级。
背景:我有一个脚本/脚本,它以格式提供了我的压缩输出cvs status(我知道,CVS ...)
? filename
Run Code Online (Sandbox Code Playgroud)
例如,对于尚未提交的文件。我希望能够复制并粘贴该命令的输出部分,并将其用作另一个命令的输入,该命令会将这些文件添加到cvs。说:
$ cut -d\ -f2- | xargs cvs add
<paste lines>
<CTRL-D> # <-- doesn't work
Run Code Online (Sandbox Code Playgroud)
有想法吗?
我的某个端口有问题。它编译安装好(port install webkit-gtk),实际问题出现在后面(某个符号没有编译到库中,但这里的细节无关紧要)。
为了调试和修复这个问题,我想在安装之前对 webkit-gtk 源进行一些更改。使用 apt-get,我可以做类似apt-get source packagename.
我发现我可以打电话
sudo port fetch webkit-gtk
sudo port extract webkit-gtk
sudo port patch webkit-gtk
sudo port configure webkit-gtk
Run Code Online (Sandbox Code Playgroud)
执行安装的各个步骤。但是,在对源进行更改后,我无法继续,因为我收到错误消息。我认为权限有问题,因为我只能以 root 身份编辑文件(自言自语会破坏构建过程,我不能su macports出于某种原因)。
我想做的是在配置步骤之前进行一些更改,然后像往常一样安装带有更改的端口。我怎样才能做到这一点?
我有一个unsigned char[16]字段的结构,我想初始化为零.以下(强烈简化的)代码使用clang(OS X)编译良好:
struct GUID {
unsigned char bytes[16];
GUID() : bytes("\0\0\0\0""\0\0\0\0""\0\0\0\0""\0\0\0") {};
}
Run Code Online (Sandbox Code Playgroud)
注意我使用15 \0秒,因为16th是字符串文字的零终止符,如果你初始化一个字节太多的字符串,clang会抱怨.
现在,当我尝试使用GCC 4.5.3(cygwin)进行编译时,我得到:
error: incompatible types in assignment of 'const char [16]' to 'unsigned char [16]'
Run Code Online (Sandbox Code Playgroud)
为什么它不起作用,我怎样才能使它工作?(我显然可以在构造函数中遍历数组,但是如果可能的话我想使用初始化列表,并且我想了解它为什么在一个编译器中工作,而不是另一个编译器.)
如何在各处使用另一个对象替换python对象?
我有两个课,SimpleObject和FancyObject。我创建了一个SimpleObject,并且有多个引用。现在,我想创建一个FancyObject,并使所有这些引用都指向新对象。
a = SimpleObject()
some_list.append(a)
b = FancyObject()
Run Code Online (Sandbox Code Playgroud)
a = b不是我想要的,只是改变了要指向的内容。我阅读了以下内容,但没有用。我收到一个错误“属性__dict__不可写”:
a.__dict__ = b.__dict__
Run Code Online (Sandbox Code Playgroud)
我想要的是(pseudo-C)的等效项:
*a = *b
Run Code Online (Sandbox Code Playgroud)
我知道这很骇人,但是有什么办法可以做到这一点?
如何使python"构造函数""私有",以便只能通过调用静态方法创建其类的对象?我知道Python中没有类似C++/Java的私有方法,但我正在寻找另一种方法来阻止其他人调用我的构造函数(或其他方法).
我有类似的东西:
class Response(object):
@staticmethod
def from_xml(source):
ret = Response()
# parse xml into ret
return ret
@staticmethod
def from_json(source):
# parse json
pass
Run Code Online (Sandbox Code Playgroud)
并希望以下行为:
r = Response() # should fail
r = Response.from_json(source) # should be allowed
Run Code Online (Sandbox Code Playgroud)
使用静态方法的原因是我总是忘记构造函数采用的参数 - 比如JSON或已经解析过的对象.即便如此,我有时会忘记静态方法并直接调用构造函数(更不用说使用我的代码的其他人).记录这份合同对我的遗忘无益.我宁愿用断言强制执行它.
与一些评论者相反,我认为这不是单一的 - "显性比隐性更好","应该只有一种方法".
当我做错时怎么能得到温柔的提醒?我更喜欢一个解决方案,我不需要更改静态方法,只需一个装饰器或构造函数的单行插件就可以了.一个la:
class Response(object):
def __init__(self):
assert not called_from_outside()
Run Code Online (Sandbox Code Playgroud) 我想为python创建一个替代品list,这样我就可以知道添加或删除项目的时间.列表的子类或实现列表接口的东西也同样适用.我更喜欢一个解决方案,我不必重新实现列表的所有功能.有一种简单的+ pythonic方式吗?
伪代码:
class MyList(list):
# ...
def on_add(self, items):
print "Added:"
for i in items:
print i
# and the same for on_remove
l = MyList()
l += [1,2,3]
# etc.
Run Code Online (Sandbox Code Playgroud) 我正在尝试编译gtk堆栈(最后一个gtk2版本,2.24),我得到了一堆似乎相关的错误.也就是说,__locale_t无法从string.h和time.h LC_ALL_MASK中找到它,也找不到(应该在locale.h中).
我发现所有这些问题都与__USE_XOPEN2K8#defined不相关.什么是__USE_XOPEN2K8,我怎样才能设置属性?
例如,我是否必须将标志传递给./configure以用于glib,gtk,...或者在构建gcc或glib c时是否必须更改某些内容?我不想只是#define __USE_XOPEN2K8在不知道它做什么的情况下撒到我的来源.注意我正在使用安装在非标准前缀中的gcc-4.6.3和glibc-2.16.0,因为我试图让gtk库在仅包含旧版本的旧版CentOS(5.8)上运行.
还要注意__locale_t在几个地方提到缺失,例如这个bug报告.我可以添加#include <xlocale.h>一些文件,但似乎正确的解决方案__USE_XOPEN2K8是设置.
编辑:我发现这个线程描述了这个问题.显然,主机系统的头文件被"fixincluded"放入新编译器的头文件中.链接的帖子建议编辑features.h.有谁知道我之后是否必须重新编译gcc/glibc(以及如何让它获取新的features.h,而不是覆盖它)?
我有一堆的类型,PixelMeasure,PointMeasure,CentimeterMeasure等等,这表示与一个单元的值.我希望他们有
Measure并且可以对它进行操作,而不知道它是什么类型的.我还希望能够将多个不同的Measures放入容器中.看来这些在C++中是互斥的.对于多态,我需要使用指针或引用.
我看到两个选择:
shared_ptr.这给了我想要的行为(安全,没有原始指针,但是多态调度).缺点是:
shared_ptr<PixelMeasure>)的副本将共享相同的底层指针.我仍然可以假装它具有值语义 - 如果我使接口不可变,那应该没关系.有任何想法吗?
首先,我知道在空指针上调用方法是未定义的行为.我也知道,因为这不应该发生,编译器可以(并且确实)假设this总是非空.
但在实际代码中,您有时会意外地执行此操作.通常,它没有任何不良影响,除了当然this在方法中为null,并且事情可能会崩溃.
作为一个调试辅助工具,并且本着崩溃早期的精神,我提出assert(this != 0)了一个方法,我之前曾经多次调用空指针.它似乎有效,但clang抱怨:
warning: 'this' pointer cannot be null in well-defined C++ code; comparison may be
assumed to always evaluate to true [-Wtautological-undefined-compare]
assert (this ! = 0);
^~~~ ~
Run Code Online (Sandbox Code Playgroud)
我想知道检测到的最佳(最不正确)方法this是什么.可以优化简单的比较.
this来尝试欺骗编译器,或强制它将指针视为整数.memcmp.另外一个问题是,在继承的情况下,"null"这个指针可能实际上是类似的0x00000004,所以处理这种情况也会很好.我对Clang,MSVC或GCC的解决方案感兴趣.
微软最近透露了他们的新“流畅”设计语言,其中一部分是“丙烯酸”材料。此效果使元素透明并模糊背景。可以将其应用于窗口,以使基础窗口的某些部分可以通过(背景丙烯酸)发光,也可以应用于窗口中的各个元素,以便其他控件可以通过(应用程序内的丙烯酸)发光。从概念和视觉上讲,它与macOS上的活力非常相似。
它在XAML中作为特殊的画笔实现,但我想知道是否可以在常规Win32应用程序中使用它(背景丙烯酸)吗?这种效果看起来与应用于开始菜单和任务栏的模糊效果(由SetWindowCompositionAttribute处理)非常相似,这使我相信可以通过类似的标记将其激活。
一个子问题:我想知道它是如何实现的?仅仅是可以在窗口上设置然后在DWM中应用的标志(例如SetWindowCompositionAttribute或Vista和7中的Aero Glass)吗?还是UWP可以控制DWM,并且可以设置着色器来控制其渲染方式?在Vista下,首次引入DWM时,它与WPF具有通用代码,并且实际上共享(类似于DirectX的)缓冲区和场景图,因此可以实现类似的技巧。magifier实用程序可以像矢量图像一样将WPF应用程序急剧放大,但后来该功能丢失了。MS在该页面上显示“丙烯酸”的方式(作为不同的层,并实现为XAML画笔),使我认为您必须以某种方式将层注入DWM场景图中,这将使它变得更难或更不可能使用从Win32。
c++ ×3
python ×3
python-2.7 ×2
bash ×1
c-strings ×1
cut ×1
dwm ×1
gcc ×1
glibc ×1
list ×1
macports ×1
pipe ×1
polymorphism ×1
uwp ×1
value-type ×1