小编Jos*_*ley的帖子

在Windows中创建临时目录?

在Windows中获取临时目录名称的最佳方法是什么?我看到我可以使用GetTempPathGetTempFileName创建一个临时文件,但有没有相当于Linux/BSD mkdtemp函数来创建一个临时目录?

.net c# windows temporary-directory

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

帮助C#generics错误 - "类型'T'必须是不可为空的值类型"

我是C#的新手,不明白为什么以下代码不起作用.

public static Nullable<T> CoalesceMax<T>(Nullable<T> a, Nullable<T> b) where T : IComparable
{
    if (a.HasValue && b.HasValue)
        return a.Value.CompareTo(b.Value) < 0 ? b : a;
    else if (a.HasValue)
        return a;
    else
        return b;
}

// Sample usage:
public DateTime? CalculateDate(DataRow row)
{
    DateTime? result = null;
    if (!(row["EXPIRATION_DATE"] is DBNull))
        result = DateTime.Parse((string)row["EXPIRATION_DATE"]);
    if (!(row["SHIPPING_DATE"] is DBNull))
        result = CoalesceMax(
            result
            DateTime.Parse((string)row["SHIPPING_DATE"]).AddYears(1));
    // etc.
    return result;
}
Run Code Online (Sandbox Code Playgroud)

它在编译期间出现以下错误:

类型'T'必须是非可空值类型,以便在泛型类型或方法'System.Nullable <T>'中将其用作参数'T'

c# generics

96
推荐指数
3
解决办法
6万
查看次数

在TypeScript箭头函数中指定返回类型

我正在使用React和Redux并将操作类型指定为接口,以便我的Reducer可以利用标记的联合类型来提高类型安全性.

所以,我有类似的声明,如下所示:

interface AddTodoAction {
    type: "ADD_TODO",
    text: string
};

interface DeleteTodoAction {
    type: "DELETE_TODO",
    id: number
}

type TodoAction = AddTodoAction | DeleteTodoAction
Run Code Online (Sandbox Code Playgroud)

我想制作创建这些动作的辅助函数,我倾向于使用箭头函数.如果我写这个:

export const addTodo1 = (text: string) => ({
    type: "ADD_TODO",
    text
});
Run Code Online (Sandbox Code Playgroud)

编译器无法提供任何帮助以确保它是有效的,AddTodoAction因为未明确指定返回类型.我可以通过这样做明确指定返回类型:

export const addTodo2: (text: string) => AddTodoAction = (text: string) => ({
    type: "ADD_TODO",
    text
})
Run Code Online (Sandbox Code Playgroud)

但是这需要两次指定我的函数参数,所以它的冗长和难以阅读.

有没有办法在使用箭头符号时明确指定返回类型?

我想过尝试这个:

export const addTodo3 = (text: string) => <AddTodoAction>({
    type: "ADD_TODO",
    text
})
Run Code Online (Sandbox Code Playgroud)

在这种情况下,编译器现在推断返回类型,AddTodoAction但它不验证我返回的对象是否具有所有适当的字段.

我可以通过切换到不同的函数语法来解决这个问题:

export const addTodo4 = function(text: …
Run Code Online (Sandbox Code Playgroud)

typescript

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

清理Eclipse索引,它与代码不同步

我通过Linux上的链接资源使用Eclipse和C++代码.代码分析索引似乎已损坏(Goto定义使光标接近但未定义)刷新资源无法修复它,也不会重新启动Eclipse.

有没有办法刷新索引并重建它?

c++ eclipse eclipse-cdt

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

自动扩展验证(EV)代码签名

我们最近购买了DigiCert EV代码签名证书.我们可以使用signtool.exe来签署.exe文件.但是,每次我们签署文件时,都会提示输入SafeNet eToken密码.

如何在没有用户干预的情况下通过在某处存储/缓存密码来自动执行此过程?

passwords code-signing authenticode code-signing-certificate

60
推荐指数
8
解决办法
2万
查看次数

在VideoView中定位视频

所以我扩展了VideoView的onMeasure以扩展视频以适应全屏视图.

这是如何:

public void setVideoAspect(int w,int h){
    wVideo=w;
    hVideo=h;
    onMeasure(w, h);
}
 @Override
 protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
 {
     super.onMeasure(widthMeasureSpec, heightMeasureSpec);
     if(wVideo!=0 && hVideo!=0)
     setMeasuredDimension(wVideo,hVideo);
 }
Run Code Online (Sandbox Code Playgroud)

我使用屏幕的显示指标(宽度,高度)调用setVideoAspect().问题是这种方法会拉伸视频以适应屏幕内部.我希望能够保持纵横比.(我有4:3的视频和3:2的屏幕尺寸.)我使用下面的代码给视图保留比率测量值:

int height =  (int) (metrics.widthPixels*3/(float)4);
                        int width=  metrics.widthPixels;   
                        mVideoView.setVideoAspect(width,height);
Run Code Online (Sandbox Code Playgroud)

所以这可以完成这项工作,但是有一个问题:它给了我一个4:3的视频,屏幕的宽度和正确的比例,但它不会使视频居中.(它只是播放视频的底部而不是顶部和底部.)我有一个包含VideoView的相对布局,VideoView的重力设置为居中.

layout android android-videoview

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

使用GPL第三方代码进行内部闭源项目

如果我在我的内部/闭源应用程序中使用GPL软件,我是否必须公开提供该来源?在互联网上说?

licensing gpl

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

为什么这个使用统一初始化的代码片段用g ++ 4.6而不是g ++ 4.7编译?

注意派生使用C++ 11统一初始化语法来调用基类构造函数.

class base
{
    protected:
        base()
        {}
};

class derived : public base
{
    public:
        derived()
            : base{} // <-- Note the c++11 curly brace syntax
                     // using uniform initialization. Change the
                     // braces to () and it works.
        {}
};

int main()
{
    derived d1;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

g ++ 4.6编译它,但是g ++ 4.7没有:

$ g++-4.7 -std=c++11 -Wall -Wextra -pedantic curly.cpp -o curly
curly.cpp: In constructor ‘derived::derived()’:
curly.cpp:4:13: error: ‘base::base()’ is protected
curly.cpp:19:24: error: within this context …
Run Code Online (Sandbox Code Playgroud)

c++ gcc g++ uniform-initialization c++11

47
推荐指数
1
解决办法
1916
查看次数

在C++中使用NaN?

在C++中使用NaN的最佳方法是什么?

我发现std::numeric_limits<double>::quiet_NaN()std::numeric_limits<double>::signaling_NaN().我想signaling_NaN用来表示一个未初始化的变量,如下所示:

double diameter = std::numeric_limits<double>::signaling_NaN();
Run Code Online (Sandbox Code Playgroud)

但是,这会在分配时发出信号(引发异常).我希望它在使用时引发异常,而不是在赋值时引发异常.

有没有办法在signaling_NaN没有提出转让例外的情况下使用?是否有一个好的,可移植的替代品signaling_NaN会在使用时引发浮点异常?

c++ floating-point nan

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

谷歌测试:代码覆盖率

是否可以使用谷歌测试框架通过测试完成代码覆盖?

c++ code-coverage googletest

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