传统上,模板类型的名称只是一个大写字母:
template<class A, class B, class C>
class Foo {};
Run Code Online (Sandbox Code Playgroud)
但我犹豫不决,因为它是非描述性的,因此难以阅读.所以,这样的事情会不会更好:
template<class AtomT, class BioT, class ChemT>
class Foo {};
Run Code Online (Sandbox Code Playgroud)
我也倾向于认为以下不是一个坏主意:
template<class ATOM, class BIO, class CHEM>
class Foo {};
Run Code Online (Sandbox Code Playgroud)
它使它们脱颖而出(而且,它又是大写字母).你怎么看?
基本上我正在尝试在我的.NET应用程序中打开一个URL.这可以通过以下方式轻松实现:
Process.Start("http://www.google.com")
Run Code Online (Sandbox Code Playgroud)
但是在我的情况下,URL可以由外部用户控制,因此我不希望它们通过注入元字符等来在系统中执行命令.
安全的方式是:
New Process()使用默认浏览器的可执行文件创建 在实现这个之前,我只想确定我不会使这个过于复杂.你怎么看?
我并不热衷于对输入实施过滤,这只是一个肮脏的解决方案
我即将决定如何处理基于XML的UI描述格式的国际化.
格式通常如下所示:
...
<devif>
<screen id="scr1" title="Settings for this and that">
<header text="Climate readings"/>
<rd setp="123" text="Air temperature" unit="°C"/>
<rd setp="234" text="Humidity" unit="%RH"/>
<rd setp="345" text="CO2" unit="ppm"/>
<header text="Settings"/>
<wr setp="567" text="Air temperature demand" unit="°C"/>
</screen>
...
</devif>
Run Code Online (Sandbox Code Playgroud)
每个文件都包含大量屏幕,最多可包含10,000行,我们的应用程序中有十几个这样的文件.
我仍然可以改变格式以最好地满足我们的需求.那么你将如何翻译呢?
我一直在考虑一些可能的方法来解决这个问题:
第一种解决方案存在的问题是,根据上下文,英文文本可能会被翻译成不同的消息.
第二种解决方案使源文件的可读性降低(尽管不是很多),并且它不能轻松处理属性的转换.
一旦将文件翻译成5-6种语言,第三种解决方案就会使文件变得非常庞大和繁琐.
有没有办法从关联中急切加载named_scope?
我有我的文章模型:
class Article < ActiveRecord::Base
has_many :comments
end
Run Code Online (Sandbox Code Playgroud)
和我的评论模型:
class Comment < ActiveRecord::Base
belongs_to :article
named_scope :approved, :conditions => { :approved => true }
named_scope :unapproved, :conditions => { :approved => false }
end
Run Code Online (Sandbox Code Playgroud)
我可以急切地加载文章的所有评论:
@article = Article.find(params[:id], :include => :comments)
Run Code Online (Sandbox Code Playgroud)
我怎样才能这样做,但仅限于批准的评论?
我正在撰写观点,不太热衷于立即编写模板.
但我需要通过提交帖子请求来测试我的程序.
我如何在django视图中模拟HTTP Post
我知道python的urllib2和httplib模块允许很多选项,但我正在寻找优雅地集成到django视图中的东西.
你会创建一个执行post的方法,你会在哪里调用它?
更新:一些答案通过向我的应用程序发送POST来处理测试.如果我想POST到外部服务并处理POST响应,该怎么办?如何在不编写模板的情况下完成.
在C#中,我使用的是Blowfish.NET 2.1.3的BlowfishECB.cs文件(可以在这里找到)
在C++中,它是未知的,但它是相似的.
在C++中,Initialize(blowfish)过程如下:
void cBlowFish::Initialize(BYTE key[], int keybytes)
Run Code Online (Sandbox Code Playgroud)
在C#中,Initialize(河豚)程序是相同的
public void Initialize(byte[] key, int ofs, int len)
Run Code Online (Sandbox Code Playgroud)
这就是问题:
这是在C++中初始化密钥的方式
DWORD keyArray[2] = {0}; //declaration
...some code
blowfish.Initialize((LPBYTE)keyArray, 8);
Run Code Online (Sandbox Code Playgroud)
如您所见,密钥是两个DWORDS的数组,总共8个字节.
在C#我声明它,但我收到一个错误
BlowfishECB blowfish = new BlowfishECB();
UInt32[] keyarray = new UInt32[2];
..some code
blowfish.Initialize(keyarray, 0, 8);
Run Code Online (Sandbox Code Playgroud)
错误是:
参数'1':无法从'uint []'转换为'byte []'
我究竟做错了什么?
提前致谢!
我正在寻找一个集合,Dictionary(OF Key, Value)但我实际上并不需要一个关键和价值.钥匙本身就足够了.所以像Collection(Key).它不应该接受重复的密钥.
我在.NET Framework中查找了几个集合但找不到我想要的东西.目前我一直在滥用Dictionary(OF String, String)和设置价值Nothing.
我要继续滥用词典(OF T,T)吗?
我在C#中编写了一个应用程序,它将jpgs从一组目录同时移动到另一组目录(每个固定子目录一个线程).代码看起来像这样:
string destination = "";
DirectoryInfo dir = new DirectoryInfo("");
DirectoryInfo subDirs = dir.GetDirectories();
foreach (DirectoryInfo d in subDirs)
{
FileInfo[] files = subDirs.GetFiles();
foreach (FileInfo f in files)
{
f.MoveTo(destination);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,应用程序的性能是可怕的 - 大量的页面错误/秒.每个子目录中的文件数量可能会非常大,所以我认为一个很大的性能损失来自一个上下文切换,它不能同时将所有不同的文件阵列保存在RAM中,这样它就会进入磁盘几乎每一次.
我能想到两种不同的解决方案.第一种是用C或C++重写它,第二种是使用多个进程而不是多线程.
编辑:文件根据时间戳命名,它们移动到的目录基于该名称.因此,它们被移动到的目录将对应于它创建的小时; 例如3-27-2009/10.
我们正在为每个目录创建一个后台工作程序用于线程.
有什么建议?
.net ×2
c# ×2
blowfish ×1
byte ×1
c++ ×1
collections ×1
dictionary ×1
django ×1
http ×1
localization ×1
performance ×1
process ×1
security ×1
sqlite ×1
svn ×1
templates ×1
tortoisesvn ×1
uint32 ×1
unit-testing ×1
xml ×1