在当前的项目中,我正在使用jQuery.我只是想知道为什么会这样,
$('#homeIcon').hover(function(){
document.getElementById('homeIcon').src = "pic/home-icon_hover.png";
})
Run Code Online (Sandbox Code Playgroud)
但这不会:
$('#homeIcon').hover(function(){
$(this).src = "pic/home-icon_hover.png";
})
Run Code Online (Sandbox Code Playgroud)
这些方法不应该完全一样吗?
FYI homeIcon是<img>.
在编写代码时,我经常在代码中放置调试消息.调试消息由记录器类处理,记录器类以调试模式将消息输出到文件,并在释放模式下丢弃它们.
它看起来像这样:
class Logger : IDisposable
{
private StreamWriter m_Logger = null;
public void Start(string logFile)
{
m_Logger = new StreamWriter(logFile);
m_Logger.AutoFlush = true;
}
public void Dispose()
{
if (m_Logger != null) m_Logger.Dispose();
}
public void WriteLine(string message)
{
if (m_Logger != null) m_Logger.WriteLine(message);
}
}
Run Code Online (Sandbox Code Playgroud)
实例在启动时创建,可从Program类中访问.然后我检查这样的调试:
#if DEBUG
Program.Log.Start("app.log");
#endif
Run Code Online (Sandbox Code Playgroud)
这很好用,因为它在调试模式下转储调试信息,而不是在发布模式下.但是,如果我通过实用程序运行发布可执行文件strings,我仍然可以看到调试字符串.我宁愿让它们完全脱离发布版本,以帮助防止逆向工程.
到目前为止,我发现的唯一解决方案是将所有调试消息包装在预处理器条件中:
// < some code here >
#if DEBUG
Program.Log.WriteLine("Some debug message.");
#endif
// < more code here >
Run Code Online (Sandbox Code Playgroud)
这非常乏味和丑陋.我的第一个想法是使用某种预处理器宏,但C#不支持它们.有没有比我现在使用的更优雅的解决方案?
为什么要在具有两个以上级别的继承层次结构中声明非虚函数?有人可以给我一个例子吗?
我知道区别是什么和发生了什么,但我无法真正理解为什么以及何时想要这样做.
我正在寻找一种以会话风格生成人类可读日期引用的方法,如下所示:
diff( '2012-05-15', '2012-05-21' ) == "last Tuesday"
diff( '2012-05-15', '2012-05-16' ) == "yesterday"
diff( '2012-05-15', '2012-05-17' ) == "on Tuesday"
diff( '2012-04-11', '2012-05-21' ) == "on the 11th of April"
Run Code Online (Sandbox Code Playgroud)
我调查了一下strtotime(),这似乎与我想要的相反.该解决方案不需要使用未来的日期,只需要过去的日期.我看到另一个问题在JavaScript中为未来日期提出同样的问题,但它并没有真正解决我的问题.
有任何想法吗?
我正在尝试使用Microsoft加密API来计算MD5哈希值,但是我得到的哈希值不正确:
#include <windows.h>
#include <stdio.h>
#include <wincrypt.h>
char* HashMD5(char* data, DWORD *result)
{
DWORD dwStatus = 0;
DWORD cbHash = 16;
int i = 0;
HCRYPTPROV cryptProv;
HCRYPTHASH cryptHash;
BYTE hash[16];
char *hex = "01234567879abcdef";
char *strHash = "00000000000000000000000000000000";
if(!CryptAcquireContext(&cryptProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
{
dwStatus = GetLastError();
printf("CryptAcquireContext failed: %d\n", dwStatus);
*result = dwStatus;
return NULL;
}
if(!CryptCreateHash(cryptProv, CALG_MD5, 0, 0, &cryptHash))
{
dwStatus = GetLastError();
printf("CryptCreateHash failed: %d\n", dwStatus);
CryptReleaseContext(cryptProv, 0);
*result = dwStatus;
return NULL;
}
if(!CryptHashData(cryptHash, …Run Code Online (Sandbox Code Playgroud) c ×1
c# ×1
c++ ×1
cryptoapi ×1
cryptography ×1
date ×1
datediff ×1
inheritance ×1
javascript ×1
jquery ×1
logging ×1
md5 ×1
php ×1
virtual ×1
winapi ×1