我们有一些常见的库(C#,但我想这不是平台或语言特定的),让我们称它们为A,B和C.库A引用了B和C,库B引用了第三方DLL,库C独立.三个独立项目背后的想法是每个库都有不同的功能,但随着时间的推移,库A成为一个或多或少"全能"的公共库,大多数客户端应用程序都引用它.只有少数应用程序在没有A的情况下引用B和/或C.
我们正试图改进我们的源代码控制约定,我们要做的一件事是正确地标记和释放这些库DLL,因此客户端项目文件可以指向代码的静态版本而不是始终更改的主干.这有点令人费解 - 例如,一个引用A和B的客户端项目.A本身引用B,因此技术上有两个来自客户端项目的B引用.
因此,显而易见的事情似乎是将所有内容组合到一个具有组织良好的命名空间的公共/实用程序库中.正如我所说,几乎每个客户端应用程序都引用了这些库中的一个,所以谁在乎呢?这样做不会引入第三方依赖的任何不良情况,并且我们所有的目标机器都是内部的并且维护大致相同的环境/软件配置.
这似乎太容易解决了,所以我想我至少得到第二个意见.另一种方法是使用GAC并强烈签署/版本化所有内容.我在这里错过任何捕获物吗?
我有一个类似这样的Java类
public class MyObjectUtil {
private final MyObject myObject;
public MyObjectUtil (MyObject myObject){
this.myObject = myObject;
}
public boolean isSomeInfoPresentValid() {
return myObject.isSomething();
}
public void modifyMyObjectInSomeWay(String blah) {
myObject.modify(blah);
}
}
Run Code Online (Sandbox Code Playgroud)
每次我都要实例化我的Utility类来与MyObject的特定实例进行交互.
myObject作为Session obj出现
MyObjectUtil myObjUtil = new MyObjectUtil(myObject);
myObjUtil.modifyMyObjectInSomeWay("blah");
boolean valid = myObjUtil.isSomeInfoPresentValid();
Run Code Online (Sandbox Code Playgroud)
为了获得相同的结果,我可以使用静态函数,每次使用myObject作为方法参数执行相同的操作.
public class MyObjectUtil {
public static boolean isSomeInfoPresentValid(MyObject myObject) {
return myObject.isSomething();
}
public static void modifyMyObjectInSomeWay(MyObject myObject, String blah) {
myObject.modify(blah);
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道应该走哪条路.
我在我的控制器中使用Util类,有时我需要针对同一个myObject实例调用几个方法,所以对我来说第一个解决方案似乎更正确.同时,由于myObject与特定的http请求相关,因此我对控制器的请求很多,因此每次都可以创建大量的MyObjectUtil实例.
在我的情况下,我应该选择哪种方式?在其他情况下我应该如何选择?
某些Utilities类(如MyObjectXXXUtil MyObjectYYYUtil)以特定方式使用MyObject.我想从特定的MyObject实现中保留这些Util方法(修改myObject并检查特定状态),因为它们并不特定于此.许多Util函数可以以某种方式与MyObject交互.
我需要找到或创建一个尽可能小的8.5x11英寸空白PDF文件,其中嵌入了最少的信息,但仍然是有效且稳定的PDF文档.如果可能的话,我想在没有Acrobat的情况下这样做.
制作这样一份文件的最佳方法是什么?
我正在寻找一种方法来检查我的C项目,编译成ELF,是否有未使用的函数,并找到它们.这是声明的函数,但在我的代码中没有被调用.
解决方案可以是以下之一:
解决方案不能是以下之一:
gprof(有些函数需要几天才能调用它们,但在代码流中你可以看到它们最终被调用)谢谢
假设我的系统安装了单个GPU,并且还安装了最新版本的CUDA。
我想确定我的GPU的计算能力是什么。如果我可以编译代码,那将很容易:
#include <stdio.h>
int main() {
cudaDeviceProp prop;
cudaGetDeviceProperties(&prop, 0);
printf("%d", prop.major * 10 + prop.minor);
}
Run Code Online (Sandbox Code Playgroud)
但是-假设我想不编译就这样做。我可以吗?我认为nvidia-smi可能会有所帮助,因为它可以让您查询有关设备的各种信息,但似乎并不能让您获得计算能力。也许我还能做些什么?也许通过/proc或系统日志可见的东西?
编辑:这旨在在构建之前在我无法控制的系统上运行。因此,它必须具有最小的依赖性,可以在命令行上运行并且不需要root特权。
出于好奇,我用3种方式实现了vector3实用程序:array(带有typedef),类和结构
这是数组实现:
typedef float newVector3[3];
namespace vec3{
void add(const newVector3& first, const newVector3& second, newVector3& out_newVector3);
void subtract(const newVector3& first, const newVector3& second, newVector3& out_newVector3);
void dot(const newVector3& first, const newVector3& second, float& out_result);
void cross(const newVector3& first, const newVector3& second, newVector3& out_newVector3);
}
// implementations, nothing fancy...really
void add(const newVector3& first, const newVector3& second, newVector3& out_newVector3)
{
out_newVector3[0] = first[0] + second[0];
out_newVector3[1] = first[1] + second[1];
out_newVector3[2] = first[2] + second[2];
}
void subtract(const newVector3& first, const newVector3& …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个实用程序,它将根据解决方案文件的位置自动删除SourceSafe绑定.我发现了几个这个工具的提及:
http://codebetter.com/blogs/darrell.norton/archive/2008/05/16/sourcesafe-binding-remover.aspx
这看起来就像我需要的那样 - 删除.scc文件并修改.sln和.*proj文件.但是,我无法弄清楚如何实际获得该实用程序 - 该帖子上的附件似乎实际上并不存在.
在我自己重写之前,有没有人拥有这个工具的副本或知道我在哪里可以找到类似的东西?我有137个解除绑定的解决方案,因此手动执行此操作并不是一个有吸引力的选择.
该问题是ZipArchive()输出的树形格式问题的广义版本。
在我浪费时间编写此(* nix命令行)实用程序之前,最好先弄清是否有人已经编写了该实用程序。我想要一个实用程序,它将作为其标准输入获得一个列表,例如由返回的列表,find(1)并输出与之相似的列表。tree(1)
例如:
输入:
/fruit/apple/green
/fruit/apple/red
/fruit/apple/yellow
/fruit/banana/green
/fruit/banana/yellow
/fruit/orange/green
/fruit/orange/orange
/i_want_my_mommy
/person/men/bob
/person/men/david
/person/women/eve
Run Code Online (Sandbox Code Playgroud)
输出量
/
|-- fruit/
| |-- apple/
| | |-- green
| | |-- red
| | `-- yellow
| |-- banana/
| | |-- green
| | `-- yellow
| `-- orange/
| |-- green
| `-- orange
|-- i_want_my_mommy
`-- person/
|-- men/
| |-- bob
| `-- david
`-- women/
`-- eve
Run Code Online (Sandbox Code Playgroud)
用法应类似于:
list2tree --delimiter="/" < …Run Code Online (Sandbox Code Playgroud) public static <T> List<T> repeat(T contents, int length) {
List<T> list = new ArrayList<T>();
for (int i = 0; i < length; i++) {
list.add(contents);
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
这是我们的专有公共库中的实用方法.它对于创建列表很有用.例如,我可能想要一个包含68个问号的列表来生成大型SQL查询.这使您可以在一行代码中执行此操作,而不是四行代码.
在java/apache-commons中是否有一个实用程序类已经这样做了?我浏览了ListUtils,CollectionUtils,Arrays,Collections,几乎我能想到的一切,但我无法在任何地方找到它.我不喜欢在我的代码中保留通用实用程序方法,如果可能的话,因为它们通常是apache库的冗余.
我想要一些像以下一样的东西:
cat a > b
prog1 < b
prog2 < b
Run Code Online (Sandbox Code Playgroud)
无需创建临时b文件.
如果我只有一个程序,我可以使用管道:
cat a | prog1
Run Code Online (Sandbox Code Playgroud)
我想知道shell是否具有支持以下内容的语法:
cat a (|prog1) (|prog2)
Run Code Online (Sandbox Code Playgroud)
或者有一个方便的实用程序,可以帮助?就像是:
cat a | fanout prog1 prog2
Run Code Online (Sandbox Code Playgroud)