小编Dig*_*Man的帖子

是否有Linux命令行开关和参数的标准?

这更多是关于程序的调用,而不是任何语言或解析器(尽管我确信选择的解析器库可以依赖于此).看,我使用了很多Linux命令行实用程序.并且有一些明显的模式; ' - '在单个字母前面用于短选项,不带参数的多个选项可以组合,' - '在长版本的选项之前,依此类推.

但是,在某些情况下,大写用于反转选项.因此,' - d'可能意味着作为守护进程运行,但' - D'将不会作为守护进程运行.(如果你不想要它,为什么不省略选项?这一点从来都不清楚,但它实际上相当普遍,所以我认为必定有一些原因.)但在某些程序中,资本是完全不相关的选择; 如果'-d'作为守护进程运行,' - D'可能是启用调试模式.这背后是否有某种首要原则,哪种选择最好?或者我们只是处理"无论什么工作"?

除了(或代替)带参数的选项之外,还有一些命令只需要单独的参数.cp就是一个很好的例子; 除了一对很少使用的切换之外,它接收的最后一个参数被假定为目的地,并且选项列表和目的地之间的任何参数都被认为是源.是否有经验法则依赖于这样的顺序"好",而不是使用带参数的显式选项标志?

linux coding-style command-line-interface

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

C#/ WPF - 获取ScrollViewer滚动位置?

好的,所以,每个人都知道如何设置ScrollViewer的滚动位置.已经写了整篇论文和博客文章ScrollViewer.ScrollToVerticalOffset(),这里有几百个问题的答案.

所以,我输入:

myScrollViewer.ScrollToVerticalOffset(280);
Run Code Online (Sandbox Code Playgroud)

......它如此亲切地滚动到那个位置.

问题是,什么属性现在包含280,所以我可以在以后检索它?

(提示:myScrollViewer.VerticalOffset并且ContentVerticalOffset都是0; myScrollViewer.ScrollInfo只是普通不存在.)

编辑:显然我需要更详细的演示.

private void btnTest_Click(object sender, RoutedEventArgs e) {
  double scrollTarget = 280;
  MessageBox.Show("Target: " + scrollTarget.ToString());
  myScrollViewer.ScrollToVerticalOffset(scrollTarget);
  MessageBox.Show("Now: " + myScrollViewer.VerticalOffset);
}
Run Code Online (Sandbox Code Playgroud)

我必须重申,这确实按预期滚动.向我正确的方向前进.但是,myScrollViewer.VerticalOffset设置为0.

c# wpf

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

X11/GLX - 全屏模式?

我想创建一个Linux应用程序-屏幕保护程序,在这种情况下-这被证明是非常难以找到制作窗口全屏简单的任务信息.即使现有屏保的代码也没有提及他们如何管理它,我还没有看到任何明显的功能XRemoveDecoration().

经过多次摸索后,我确实设法创建了一个与桌面大小相同的窗口,其中:

Window win = DefaultRootWindow(disp);
XWindowAttributes getWinAttr;
XGetWindowAttributes(disp, win, &getWinAttr);
win = XCreateWindow(disp, win, 0, 0, getWinAttr.width, getWinAttr.height, 0, vInfo->depth, InputOutput, vInfo->visual, CWBorderPixel|CWColormap|CWEventMask|CWOverrideRedirect, &winAttr );
Run Code Online (Sandbox Code Playgroud)

但这并没有做任何事情来摆脱标题栏和边界.我知道有一种方法,显然 - 但是我还没有找到任何指向那个方向的东西,它不依赖于其他一些大型库被抛到顶部(现有的屏保不会使用).

编辑:请不要删除我的帖子中的信息.有一个很好的理由我明确指出现有的屏保没有使用可选库,这是因为我在过去的大部分时间里一直在分析源代码.

我选择了最直接回答问题的答案,并且适用于一般的应用程序.

如果你发现这个问题研究xscreensavers ......同样仍然适用.是的,xscreensaver有自己的API - 这很复杂,实际上涉及编写更多行代码(是的,认真的).如果您想在屏幕保护程序中使用OpenGL,则需要通过另一个 API(xlockmore,一个竞争系统)和一个将其转换为xscreensaver的兼容层.

但是,xscreensaver能够运行任何可以使用虚拟根窗口(查看vroot.h)作为屏幕保护程序的程序.所以我的建议就是这样做 - 你将拥有更多控制权,没有限制性API,以及更高的可移植性.(我看过的一个例子甚至可以编译为Linux或Windows,使用相同的文件!)

c++ linux x11 opengl glx

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

libc ++ - 停止std重命名为std :: __ 1?

经过大量努力,让clang和libc ++编译,运行,与NetBeans集成,甚至交叉编译到32位机器,我想我已经弄明白了!所以我去使用libstdc ++没有的一些功能(将我的开发环境颠倒过来的全部原因),并发现......我实际上无法做到这一点.

安装了libc ++,它可以运行,编译后的程序(当它工作时)确实需要它.但是,编译器仍然试图通过搞乱命名空间来抓住每个机会使用libstdc ++版本.std::__1::map,std::__1::basic_string等等.现在,我从这个问题中知道为什么会发生这种情况,以及为什么libc ++会这样做.我只需要知道如何删除它,因为它完全不适用 - 我真的,确实想要使用libc ++版本,我的代码中没有任何内容需要两种类型共存.

我已经尝试从包含路径中取出libstdc ++文件夹,并且失败了,这使得它们完全无法访问.没运气.我没有使用任何附加库,只使用内置的Linux/POSIX头文件(errno,socket,syslog,fcntl).

编辑:错误消息:

CoreCache.cpp:61:12: error: no member named 'emplace' in 'std::__1::map<std::__1::basic_string<char>, CacheEntry, std::__1::less<std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, CacheEntry> > >'
Run Code Online (Sandbox Code Playgroud)

libstdc ++地图没有emplace().libc中++版本.

从命令行调用以下似乎有效:

clang++ -o stachecache -I /usr/local/lib/clang/3.1/include/ -I /usr/include/c++/v1/ -std=c++0x -stdlib=libc++ ./*.cpp
Run Code Online (Sandbox Code Playgroud)

NetBeans中的调用不会:

clang++ -stdlib=libc++ -O3   -c -O3 -Werror -MMD -MP -MF build/Release/clang-Linux-x86/CoreCache.o.d -o build/Release/clang-Linux-x86/CoreCache.o CoreCache.cpp
Run Code Online (Sandbox Code Playgroud)

c++ std clang libc++

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

Linux中JDK 1.7/1.8缺少JavaFX?

我有一个据称不可能的问题,所以我很想找到答案.

我有最新版本的NetBeans 7.4,运行在完全更新的Fedora 20 x64上.正式来说,这可以与JavaFX一起使用.期.我有来自repo(1.7.something)的JDK和我能找到的最新版本(1.8.0).正式地说,这些都有JavaFX.期.

如果我尝试创建一个新的JavaFX项目,它有这样的说法:

无法自动设置JavaFX平台.请转到Platform Manager,创建一个非默认的Java SE平台,然后转到JavaFX选项卡,启用JavaFX并填写有效JavaFX SDK和JavaFX Runtime的路径.注意:JavaFX SDK可以从JavaFX网站下载.

好吧,我已经习惯了困惑的事情,我想我可以解决这个问题.去创建一个新平台,并且...没有"JavaFX"选项卡.甚至花了一些研究来找出它在说什么,在这个过程中我发现该标签实际上已经从7.4中删除了.因为NetBeans 7.4绝对可以自动识别JavaFX.期.

转到实际的JavaFX站点告诉我,正如预期的那样,它与我已经拥有的Java SE 7 JDK捆绑在一起.期.

由于我可以通过将一个JavaFX组件集成到我的Swing应用程序中来实现最终结果,但我尝试了这一点,但NetBeans仍然无法找到与JavaFX相关的任何内容,因此如果我尝试导入这样的东西,就会对我大吼大叫.

所以,鉴于那些本来应该只是简单明了的事情并不是......我在哪里可以离开这里?

linux netbeans javafx-2 netbeans-7.4

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

为什么这个析构函数会在创建后立即被调用?

我有以下课程:

class FixedByteStream {
public:
FixedByteStream() : size(0), address(NULL), existing(false) {}
FixedByteStream(int length) : existing(false) {
    size = length;
    address = new char[length];
}
FixedByteStream(int length, char* addr) : existing(true) {
    size = length;
    address = addr;
}
FixedByteStream(string* str, bool includeNull = false) : existing(true) {
    size = (*str).length();
    address = const_cast<char*>((*str).c_str());
    if (includeNull){
        ++size;
    }
}
~FixedByteStream() {
    if (existing == false) {
        delete [] address;
    }
    address = NULL;
}
int getLength() {
    return size;
}
char* …
Run Code Online (Sandbox Code Playgroud)

c++ constructor destructor class

8
推荐指数
3
解决办法
5675
查看次数

缺少std :: map :: emplace() - 过时的库?

我正在尝试使用地图的C++ 11 emplace()函数,但NetBeans说地图没有这样的功能.看看标题,它是"正确的" - 没有提到(在Fedora 16上)的emplace().哪一切都很好,你知道......但我有点想使用emplace().

如何启用此功能?我知道它自去年3月以来可能存在,可能更早.彻底的搜索显示,emplace()基本上只存在于我的系统中的列表和向量的标题中.由于近十年来没有对C++进行过重大修改,如果库"错误",我没有找到关于该怎么做的文档.

c++ c++11

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

如何在多个连接之间进行 epoll 切换?

我正在以我认为是 TCP 套接字的典型方式使用 epoll(主要基于此示例,但稍微适应了 C++);一个主侦听套接字绑定到该端口,并且每个新的连接套接字(来自 accept())也被添加以在准备接收 recv() 时发出警报。我创建了一个测试脚本,基本上用连接和发送/接收来锤击它。当任何单个客户端连接时,它将无休止地完美运行。

但是,添加第二个同时测试客户端将导致其中一个挂起并失败。经过几天的调试,我终于决定让它把它正在使用的套接字 ID 吐出到一个文件中,我对我发现的东西感到困惑。

当一个脚本启动时,我只得到一个流,在这种情况下是 6。然而,当第二个脚本启动时,我得到一个 7 流。只有7。它保持在 7,专门与第二个客户端通信,完全忽略第一个,直到第一个超时并关闭。(然后,当客户端 2 重新连接时,它会获得 ID 6。)

值得注意的是,这个测试脚本没有使用持久连接,它会在来回几次消息后断开连接并重新连接(为了更准确的模拟)。但即使如此,客户端 1 也被忽略。如果我将超时设置得足够高,客户端 2 实际上有时间退出,它仍然不会从客户端 1 恢复,因为它等待的任何东西都会丢失。

这是正常行为吗,epoll(或一般的套接字)在新任务出现时完全放弃之前的任务?有什么我必须指定的选项吗?

编辑:这是我可以展示的尽可能多的代码;我不一定期望“这是你做错了”,更多的是“这些是一些会破坏/修复类似情况的东西”。

#define EVENTMODE (EPOLLIN | EPOLLET | EPOLLRDHUP | EPOLLHUP)
#define ERRCHECK (EPOLLERR | EPOLLHUP | EPOLLRDHUP)

//Setup event buffer:
struct epoll_event* events = (epoll_event*)calloc(maxEventCount, sizeof(event));

//Setup done, main processing loop:
int iter, eventCount;
while (1) {

    //Wait for events indefinitely:
    eventCount = …
Run Code Online (Sandbox Code Playgroud)

c++ sockets epoll

5
推荐指数
1
解决办法
4812
查看次数

libc ++ - bind()的命名冲突?

在经历了令人惊讶的小黑客之后,我设法在我的Linux机器上安装了libc ++(因为libstdc ++缺少了东西).不幸的是,由于具有相同名称的功能,我现有的一些代码现已破裂.

通常,以我需要的方式,bind()与套接字相关.但是,libc ++带有自己的bind()函数,基本上就是这个,但没有方便的命名空间来分隔它们.根据墨菲定律,编译器尝试使用错误的函数,并吐出错误.NetBeans没有看到任何问题,因为它实际上是在查看sys/socket.h文件,因为它应该是.

因此,如果这两个函数基本上超出了我的控制范围,那么我如何告诉编译器(clang ++)它应该在特定的头文件中查找而在该函数的其他地方?

c++ clang libc++

4
推荐指数
1
解决办法
2091
查看次数

概率超过100%的算法

对于某种概率......我需要一种算法(在Java中,但理论应该是非常通用的).我甚至不知道该怎么称呼它,这就是为什么我没有任何运气谷歌搜索.

为了更好地描述,我有一个任务需要在调用函数时执行X次.有时候,只有十分之一的机会发生这种情况,这意味着(大约)每10次执行一次该函数的任务将实际执行 - 这对随机()很容易.有时它会是2中10,或者甚至10中10.仍然很容易,直接有条件,即使它并不总是"十分之十"

问题是,它可以有更大的比1 1的机会.它可能是十分之一 - 一半运行一次,其余运行两次.或者10比5,每次调用时运行两次(大约).正如您所看到的,现在已经从简单的不等式测试中脱颖而出.

所以,我正在寻找的是一些算法,基于随机数,将根据频率(10%,200%,0.75,无论什么格式有效)返回运行计数.如果有人可以在此提供任何线索 - 例如,可能是一个实际的搜索词 - 那将非常感谢!

编辑:难怪我找不到很多结果,每个人都像我一样困惑!

首先,没有真正的"最大"价值.没有正式定义.如果算法可以从它收到的概率值中提取出来,那就很好了.

它也肯定需要是随机的,这使它本身就不完美.如果你翻了10次硬币,你可能最终得到8个头,即使它理论上应该完全均匀!那没关系.事实上,这是重点.

我可以告诉你为什么我需要它...但这将违反适当的面向对象的模块化实践:)外部各方只需要知道接口; 它接受一个值(可能是一个浮点数,"0.75"似乎效果最好)并返回一个int.如果你将它调用100次,概率为1/5,则其返回值的总和应平均为20.

java language-agnostic algorithm probability

3
推荐指数
1
解决办法
788
查看次数