我正在一个受到严重限制的环境中开发,但开发人员也可以严格控制.
VCRedist_x86.exe - 一个4Mb可再发行 - 没什么好玩的(传输4个小时).我真的更喜欢重新分发MFC90.dll,msvcm90.dll,msvcp90.dll和msvcr90.dll - 这更像是2Mb.但是,重新分发Visual C++文件说:
不支持重新分发在没有清单的情况下构建的C/C++应用程序.如果没有清单将应用程序绑定到这些库,则C/C++应用程序无法使用Visual C++库.有关更多信息,请参阅选择部署方法.
我最初将DLL复制到程序工作目录中的计划似乎不适用于这个勇敢的新的清单世界.
我的下一个猜测是提取填充文件到WinSxS目录所需的注册表项并自己填充(而不是使用4兆程序).
[edit]软件经常更新,因此DLL比静态链接更受欢迎.[/编辑]
如何成功分发必要的文件但保持开销?
首先,两个例子:
// This works
int foo = 43;
long lFoo = foo;
// This doesn't
object foo = (int)43;
long? nullFoo = foo as long?; // returns null
long lFoo = (long)foo; // throws InvalidCastException
if (foo.GetType() == typeof(int))
Console.WriteLine("But foo is an int..."); // This gets written out
Run Code Online (Sandbox Code Playgroud)
现在,我猜测为什么第二个不起作用是因为拳击.此代码背后的目的是实现IComparable.我需要一些方法来强制将对象强制转换为long或ulong,或者如果不是,则抛出错误.我不想为每个基本的数字类型(byte,int,long,ubyte,...)实现检查.我宁愿用最大的数字类型捕获它们并以这种方式处理它.这里所有聪明人的想法?我怎样才能取消打开对象,最好避免反射,但我想如果这是唯一的方法......或者我应该不实现非泛型版本IComparable?
编辑:
这似乎有效,但似乎是一个可怕的黑客围绕这个问题.只有我吗?
long lFoo = long.Parse(foo.ToString());
Run Code Online (Sandbox Code Playgroud) 有一种通用的方法,可以使用位掩码将多个值存储在一个变量中。例如,如果用户对某项具有读,写和执行特权,则可以通过说出read = 4 (2^2), write = 2 (2^1), execute = 1 (2^0)将其转换为单个数字,然后将它们加在一起得到7。
我在几种Web应用程序中使用了此技术,通常将变量存储到一个字段中,并根据不同值的数量为它提供MEDIUMINT或其他类型。
我感兴趣的是,这样存储的值数量是否有实际限制?例如,如果数字超过64,则不能再使用(64位)整数。如果是这样,您将使用什么?它会如何影响您的程序逻辑(即:您是否仍可以使用按位比较)?
我知道一旦您开始获得非常多的值集,一种不同的方法将是最佳解决方案,但是我对这种方法的边界很感兴趣。
我知道要更改rails的索引页面我需要做三件事:删除index.html,使用routes.rb执行某些操作,并可能执行路由指向的操作.这是我有点模糊的细节:-)
Java中的方法签名:
public List<String> getFilesIn(List<File> directories)
Run Code Online (Sandbox Code Playgroud)
类似的红宝石
def get_files_in(directories)
Run Code Online (Sandbox Code Playgroud)
对于Java,类型系统为我提供了有关该方法所期望和提供的信息.在Ruby的情况下,我不知道我应该传递什么,或者我期望收到什么.
在Java中,该对象必须正式实现该接口.在Ruby中,传入的对象必须响应此处定义的方法中调用的任何方法.
这似乎很成问题:
不打算讨论静态打字与鸭子打字,而是希望了解如何维护一个几乎没有能力按合同设计的生产系统.
没有人真正通过这种方法所需的文档来解决方法内部实现的暴露问题.由于没有接口,如果我不期望某个特定类型,我不必逐条列出我可能调用的每个方法,以便调用者知道可以传入什么内容吗?或者这只是一个没有真正出现的边缘情况?
是否存在使用某种Object Store的ActiveRecord的替代品?
我在想像Erlang的MNesia是理想的.
更新
我一直在调查CouchDB,我认为这是我要选择的选项.这是使用CouchRest和ActiveCouch之间的折腾.CouchRest非常成熟,并且在CouchDB peepcode插曲中使用,但它不是ActiveRecord的替代品,这有点不利.
我只想说CouchDB是非常惊人的.
更新(2009年11月10日)
CouchDB并没有真正为我工作.CouchDB并不真正支持任意查询(需要提前编写和编译查询).它还打破了非常大的数据集.
我一直在玩MongoDB,这真的很不可思议.具有查询和索引的无架构JSON数据存储.
我甚至开始为它建立一个名为Ming的管理工具.
我有一个带有UTF-8字符的std :: string。
我想将字符串转换为最接近的ASCII字符。
例如:
?ód?=>罗兹(
LodzAssunção)=>阿松松(
AssuncaoSchloß)=>城堡(Schloss)
不幸的是,ICU库真的很不直观,我还没有找到有关其用法的好的文档,因此花太多时间来学习使用它。我没有时间。
有人可以举个例子说明如何做到这一点吗?
谢谢。
我在Reddit上看到了这个问题,并没有提出积极的解决方案,我认为这是一个完美的问题.这是关于面试问题的一个主题:
编写一个采用大小为m的int数组的方法,如果数组由数字n ... n + m-1组成,则返回(True/False),该范围内的所有数字以及该范围内的数字.不保证数组已排序.(例如,{2,3,4}将返回true.{1,3,1}将返回false,{1,2,4}将返回false.
我遇到的问题是我的采访者一直要求我优化(更快的O(n),更少的内存等),他声称你可以在数组的一次传递中使用恒定量的记忆.从未想过那一个.
除了您的解决方案,请指出他们是否认为该阵列包含唯一的项目.同时指出您的解决方案是否假设序列从1开始.(我稍微修改了一下这个问题以允许它变为2,3,4 ......)
编辑:我现在认为在空间算法中不存在处理重复的线性时间和常数.任何人都可以验证吗?
重复问题归结为测试以查看数组是否在O(n)时间,O(1)空间中包含重复项.如果可以这样做,您可以先测试,如果没有重复,则运行算法.那么你可以在O(n)时间O(1)空间中测试欺骗吗?
特别是,我感兴趣的是:1)建立一个免费的环境设置来完成工作流程.2)如何使用现有的工作流程项/状态以及涉及的内容.
谢谢!