小编Suz*_*ron的帖子

静态函数帮助C++

我无法解决这个问题.这是一个简单的例子:

class x
{
    public:
    void function(void);

    private:
    static void function2(void);
};

void x::function(void)
{
    x::function2(void);
}

static void function2(void)
{
     //something
}
Run Code Online (Sandbox Code Playgroud)

我得到错误,其中抱怨function2是私有的.如果我把它公开(我真的不想这样做),我会得到关于对function2的未定义引用的错误.我究竟做错了什么?谢谢!

c++ static-functions

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

使用.htaccess禁用目录的所有CGI(php,perl,...)

我有一个用户可以上传文件的目录.

为了避免安全问题(例如有人上传恶意php脚本),我目前通过附加.data来更改文件的扩展名,但是在下载文件时,他们必须手动删除.data.

另一个常见的解决方案是将文件上传到Apache不提供的目录中,并使用php脚本通过调用来管理所有下载readfile().

我想做的是简单地禁止在upload文件夹中执行任何脚本(php,perl,cgi脚本,以及我将来可能安装的任何脚本).这个SO答案建议.htaccess在该文件夹的文件中添加以下行:

SetHandler default-handler
Run Code Online (Sandbox Code Playgroud)

但是,在我的情况下,这没有任何效果(我放在该文件夹中的示例php脚本仍然执行).我究竟做错了什么?

Apache配置

这台机器是运行的VPS(虚拟专用服务器)Debian GNU/Linux 6.0.7 (squeeze),据我所知(我记下我在该服务器上运行的所有命令,因此我的"内存"应该非常准确),我不会改变apache2中的任何内容配置,运行appart sudo apt-get install php5,以及/etc/apache2/sites-enabled/mysite.com使用以下内容创建文件:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  ServerName  mysite.com
  ServerAlias www.mysite.com

  DocumentRoot /home/me/www/mysite.com/www/
  <Directory />
    Options FollowSymLinks
    AllowOverride All 
  </Directory>
  <Directory /home/me/www/mysite.com/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All 
    Order allow,deny
    allow from All
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log

  # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg. …
Run Code Online (Sandbox Code Playgroud)

apache security .htaccess

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

git svn clone --password pass给出"未知选项:密码"

我想使用git克隆一个svn存储库,并在命令行中给出用户名和密码.

我可以写:

svn checkout --username user --password pass svn://server/repo
Run Code Online (Sandbox Code Playgroud)

但我不能用--passwordgit svn clone:

git svn clone --username user --password pass svn://server/repo
Unknown option: password
Run Code Online (Sandbox Code Playgroud)

如何git svn clone在命令行上输入密码?

或者,是否有一种--svn-options切换到git-svn?

P.-S. 请注意,我需要在命令行中指定它,因为在此服务器上有多个repos,具有不同的user/pass,并且svn愚蠢地假设所有repos使用相同的用户名/密码,所以有一半的时间我得到svn: Authorization failed,没有它要求输入密码,即使我使用--username它(有时似乎要求输入密码,但它不够强大,无法在脚本中使用).

svn passwords git-svn

16
推荐指数
2
解决办法
3万
查看次数

将StringIO用作Popen的stdin

我有以下我想用Python编写的shell脚本(当然grep .实际上是一个更复杂的命令):

#!/bin/bash

(cat somefile 2>/dev/null || (echo 'somefile not found'; cat logfile)) \
| grep .
Run Code Online (Sandbox Code Playgroud)

我尝试了这个(cat logfile无论如何都缺少相同的东西):

#!/usr/bin/env python

import StringIO
import subprocess

try:
    myfile = open('somefile')
except:
    myfile = StringIO.StringIO('somefile not found')

subprocess.call(['grep', '.'], stdin = myfile)
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误AttributeError: StringIO instance has no attribute 'fileno'.

我知道我应该使用subprocess.communicate()而不是StringIO来向grep进程发送字符串,但我不知道如何混合字符串和文件.

python subprocess

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

嵌套类构造函数的可见性

有没有办法限制C#中嵌套类的实例化?我想防止嵌套类从除嵌套类之外的任何其他类实例化,但允许从其他代码完全访问嵌套类.

c# constructor visibility nested-class

11
推荐指数
3
解决办法
4055
查看次数

如何知道.pem文件是否包含公钥或私钥?

我有一个.pem文件(base64编码的加密信息).我应该使用什么OpenSSL命令行来检测它是否包含公钥或私钥?

正如StackOverflow问题中所解释的那样,.pem可以包含两者.

由于该文件的内容是juste乱码base64,当将.pem证书发送到其他机器时,我想确保我导出公钥而不是发出我的私钥.

openssl pem public-key private-key

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

Racket中的模块元语言

我正在尝试在Racket中编写一个模块元语言mylang,它接受第二种语言传递修改后的正文,这样:

(module foo mylang typed/racket body)
Run Code Online (Sandbox Code Playgroud)

相当于:

(module foo typed/racket transformed-body)
Run Code Online (Sandbox Code Playgroud)

当然,typed/racket部件可以用任何其他模块语言替换.

我尝试了一个简单的版本,让身体保持不变.它在命令行上运行正常,但在DrRacket中运行时出现以下错误:

/usr/share/racket/pkgs/typed-racket-lib/typed-racket/typecheck/tc-toplevel.rkt:479:30: require: namespace mismatch;
 reference to a module that is not available
  reference phase: 1
  referenced module: "/usr/share/racket/pkgs/typed-racket-lib/typed-racket/env/env-req.rkt"
  referenced phase level: 0 in: add-mod!
Run Code Online (Sandbox Code Playgroud)

这是整个代码:

#lang racket

(module mylang racket
  (provide (rename-out [-#%module-begin #%module-begin]))
  (require (for-syntax syntax/strip-context))
  (define-syntax (-#%module-begin stx)
    (syntax-case stx ()
      [(_ lng . rest)
       (let ([lng-sym (syntax-e #'lng)])
         (namespace-require `(for-meta -1 ,lng-sym))
         (with-syntax ([mb (namespace-symbol->identifier '#%module-begin)])
           #`(mb . …
Run Code Online (Sandbox Code Playgroud)

metalanguage require racket

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

从DataTrigger在WPF TreeViewItem上设置IsExpanded

我正在尝试使用条件模板设置IsExpanded我的TreeView项目的属性,在XAML:

<DataTrigger Binding="{Binding MyStatus}" Value="Opened">
    <Setter TargetName="MyTextBlock" Property="Foreground" Value="Green"/>
    <Setter Property="TreeViewItem.IsExpanded" Value="True" />
</DataTrigger>
Run Code Online (Sandbox Code Playgroud)

当我MyStatus从C#代码设置属性时,颜色会更改(因此DataTrigger工作),但节点不会展开.

_myItems[0].MyStatus = MyStatus.Opened;
Run Code Online (Sandbox Code Playgroud)

如何设置TreeViewItem.IsExpanded属性DataTrigger

当我启动应用程序时,颜色已正确设置,但绿色节点未展开:

启动应用程序后的屏幕截图

而改变的值之后_myItems[0].MyStatus_myItems[1].MyStatus,颜色也会随之改变,但绿点仍然没有展开.

单击Button1后的屏幕截图

完整代码(XAML)

完整的代码有点长,但它是90%的样板.

<Window x:Class="WpfApplication6.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="150" Width="250">
    <DockPanel>
        <DockPanel.Resources>
            <HierarchicalDataTemplate ItemsSource="{Binding SubItems}" x:Key="MyTemplate">
                <StackPanel Orientation="Horizontal">
                    <!-- ... -->
                    <TextBlock x:Name="MyTextBlock" Foreground="Green" Text="{Binding Name}" />
                </StackPanel>

                <HierarchicalDataTemplate.Triggers>
                    <DataTrigger Binding="{Binding MyStatus}" Value="Closed">
                        <Setter TargetName="MyTextBlock" Property="Foreground" Value="Red"/>
                        <Setter Property="TreeViewItem.IsExpanded" Value="False" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding …
Run Code Online (Sandbox Code Playgroud)

c# wpf treeview xaml treeviewitem

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

如何在 NixOS 中将文本附加到 /etc/... 配置文件?

[披露:我早些时候在 NixOS 频道上问过这个问题,但 30 分钟后没有得到答复,这是一个繁忙的频道。如果我在那里得到一个,我会在这里复制它]

我正在尝试向 NixOS 中的配置文件添加一些行(例如/etc/pam.d/sudo)。pam.nix 中可用的配置选项不包括我要添加的行(在本例中为account requisite pam_time.so),也不包括extraConfig选项。

我知道我可以使用它来创建新的配置文件,environement.etc.filename.text所以我继续使用它,但sudo nixos-rebuild switch后来抱怨它有两个配置文件的来源,官方的和我的 ( mismatched duplicate entry /nix/… <-> /nix/…):

environment.etc."pam.d/sudo".text = ''blah'';
Run Code Online (Sandbox Code Playgroud)

在 NixOS 中是否有附加到 /etc/ 配置文件(或修补它)的通用方法?

或者是修改系统 .nix 文件的唯一方法(例如修改pam.nix,我不愿意这样做,因为它会与未来的更新发生冲突)?

config pam nixos

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

从Interlocked变量中读取最新值,只对变量进行一次写入

我想用两种方法创建一个类:

  • void SetValue(T value) 存储一个值,但只允许存储单个值(否则会抛出异常).
  • T GetValue() 检索值(如果还没有值,则抛出异常).

我有以下愿望/约束:

  • 读取价值应该便宜.
  • 写入价值可能(适度)成本高昂.
  • GetValue()只有在最新值不存在时才抛出异常(null):null在调用SetValue()另一个线程后,它不应该基于陈旧值抛出异常.
  • 该值仅写入一次.GetValue()如果值不为null,则表示不需要刷新值.
  • 如果可以避免完全的内存屏障,那么(更好).
  • 我得到的无锁并发性更好,但我不确定这是否是这种情况.

我提出了几种实现这一目标的方法,但我不确定哪些是正确的,哪些是有效的,为什么它们(正确)和(有效),以及是否有更好的方法来实现我想要的东西.

方法1

  • 使用非易失性字段
  • 使用Interlocked.CompareExchange写入场
  • 使用Interlocked.CompareExchange从外地来读
  • 这依赖于(可能是错误的)假设,即在Interlocked.CompareExchange(ref v, null, null)对字段执行操作后将导致下一次访问获得的值至少与Interlocked.CompareExchange看到的值相同.

代码:

public class SetOnce1<T> where T : class
{
    private T _value = null;

    public T GetValue() {
        if (_value == null) {
            // Maybe we got a stale value (from the cache or compiler optimization).
            // Read an …
Run Code Online (Sandbox Code Playgroud)

c# volatile interlocked lock-free

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