我有一个"mm/yyyy"形式的字符串,我想将它与本地系统的日期进行比较.
我想过要在我的月份和日历中的MONTH字段之间使用转换表,例如:
Calendar cal = Calendar.getInstance();
String date = "07/2014";
String month = date.subString(0, 2);
int monthToCompare;
if (month.equals("01"))
monthToCompare = cal.JANUARY;
if (month.equals("02"))
monthToCompare = cal.FEBRUARY;
...
Run Code Online (Sandbox Code Playgroud)
然后手动比较if.我不喜欢它,因为我觉得这么简单的操作太长了.
我想到的另一个选择是获取当前Date()和使用该 before()方法.这意味着将我的日期转换为日期格式,但是不推荐使用简单的方法,我必须指定毫秒数,我不知道如何轻松地做到这一点(考虑到闰年,日历更正等等)自1970年以来).
我在使用format看起来像Python字典的字符串时遇到问题.
我想生成以下字符串:{"one":1}
如果我尝试这样做:
'{"one":{}}'.format(1)
Run Code Online (Sandbox Code Playgroud)
解释器抛出一个KeyError:
>>> a = '{"one":{}}'.format(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: '"one"'
Run Code Online (Sandbox Code Playgroud)
据我所知,这个问题大概在该字符串中包含的事实围绕{,可以用混淆format的{}.为什么会发生这种情况,如何解决?
我知道百分比格式,但我想找到一个不涉及开沟的解决方案format().
我继承了一段 C++ 代码,它有许多#ifdef分支来根据平台调整行为(#ifdef __WIN32,#ifdef __APPLE__。该代码在当前形式下不可读,因为这些预处理器指令是嵌套的,出现在函数中间,甚至出现在多行语句中间。
我正在寻找一种以某种方式指定一些预处理器标签并获取代码副本的方法,就好像代码已使用这些标志进行了预处理一样。不过,我希望 #include 指令保持不变。例子:
#include <iostream>
#ifdef __APPLE__
std::cout << "This is Apple!" << std::endl;
#elif __WIN32
std::cout << "This is Windows" << std::endl;
#endif
Run Code Online (Sandbox Code Playgroud)
会变成:
#include <iostream>
std::cout << "This is Apple!" << std::endl;
Run Code Online (Sandbox Code Playgroud)
处理后:tool_i_want example.cpp __APPLE__ .
我已经编写了一个快速脚本来执行类似的操作,但我想知道经过更好测试和更彻底的工具。我正在运行 Linux 发行版。
我决定不只运行 C 预处理器,因为如果我没有记错的话,它会扩展头文件,这将使所有内容变得更加难以阅读。
我正在尝试在 Java 中执行相互身份验证。我试图实现的结构是:具有自签名证书的服务器充当 CA,对客户端证书进行签名。因此,这是我保存在每个密钥库/信任库中的内容:
客户:
密钥库:
信任库:
服务器
密钥库:
信任库:
我能够执行服务器的身份验证,但是当我在服务器上启用 setNeedClientAuth(true) 时,我在日志中收到以下错误:http ://pastebin.com/raw.php?i=P52Qq89z 所以服务器似乎进行了身份验证但是客户端无法提供 CA 链,这可能是其密钥库内容的问题吗?
我使用 openSSL 生成密钥和证书,使用 KeyStore Explorer 创建密钥库(在使用 keytool 几天后不成功)和 JDK 1.7.0_51
更新:问题已按照以下说明解决:https : //stackoverflow.com/a/12150604/2891462 CA 自签名证书的创建方式存在问题(显然只是 JDK 1.7 中的一个问题)。
我想验证客户端针对CRL提供的X509证书,看看它是否已被撤销.我已成功实现了一个java.security.cert.X509CRL,但我在检索会话证书时遇到问题:
try {
SSLSocket s = (SSLSocket) serverSocket.accept();
s.setSoTimeout(TIMEOUT_RW * 1000);
s.startHandshake();
SSLSession session = s.getSession();
X509Certificate[] cert = session.getPeerCertificateChain();
if (crl.isRevoked(cert[0])) {
System.err.println("Attempted to stablish connection using revoked certificate");
} else {
...
}
} catch (Exception ex) {
System.err.println("Something went wrong");
}
Run Code Online (Sandbox Code Playgroud)
SSLSession属于javax.net.ssl 包,其方法getPeerCertificateChain()返回一个javax.security.cert.X509Certificate[],无法转换为java.security.cert.X509Certificate[]我需要提供的包java.security.cert.X509CRL.怎么做到呢?
我知道这几个问题已经分别问了几次,而且我发现的大多数答案都是"Python不容易混淆,因为这是语言的本质.如果你真的需要混淆,请使用其他工具"并且"在某些时候你需要权衡"(请参阅如何保护Python代码以及如何保护OAuth使用者的安全,以及如何在受到危害时做出反应?).
但是,我刚刚制作了一个小型的Python应用程序,它利用了Twitter的API(因此需要OAuth).OAuth需要消费者秘密,远离用户.应用程序需要该信息,但用户不应轻易访问它.如果无法保护该信息(我将混淆和保护用作同义词,因为我不知道其他任何方式),那么首先为Python提供OAuth API有什么意义呢?
那么问题是:
我也看过评论说应该对这些关键部分使用C/C++扩展,但我对此一无所知,所以如果这是答案,我会欣赏一些额外的信息.
我承认:我爱上了可选的概念.自从我发现它以来,我的代码质量已经提高了很多.明确变量是否有效比明确错误代码和带内信令要好得多.它还让我不必担心必须阅读文档中的合同,或担心它是否是最新的:代码本身就是合同.
也就是说,有时我需要处理std::unique_ptr.此类型的对象可能为null或不为null; 在代码中的给定点,不可能知道是否std::unique_ptr应该有值; 从代码中知道合同是不可能的.
我想以某种方式混合optional(可能与boost::optional)和std::unique_ptr,以便我有一个动态分配的对象具有范围破坏和正确的复制/移动行为,明确表明它可能没有值.这样,我可以使用这种新类型来明确表示需要检查值并避免对plain进行不必要的检查std::unique_ptr.
在C++ 11标准中是否有这样的工具,boost或者是一个足够流行的库?我可以接受为此定义我自己的类,但这将是最不受欢迎的方法(由于缺乏彻底的测试).
在我的个人 Ubuntu 机器上,我有一个目录,其中包含我所有的专业项目。我想为他们使用不同的 git 配置(主要是不同的用户名和电子邮件)。这以前似乎有效,但现在不再有效了。
〜/.gitconfig
[user]
email = personal@email.me
name = personalname
[core]
preloadindex = true
trustctime = false
[includeIf "gitdir:~/professional/"]
path = ~/professional/gitconfig
Run Code Online (Sandbox Code Playgroud)
〜/专业/gitconfig
[user]
email = corporate@email.corp
name = corporatename
[core]
preloadindex = true
trustctime = false
Run Code Online (Sandbox Code Playgroud)
每当我启动/克隆 git 存储库时,~/professional我都会在该存储库的配置中设置我的公司名称和电子邮件。对于新存储库来说,情况不再是这样:在git config --list其中执行操作时,不会出现专业配置参数的痕迹;相反,我的个人电子邮件和用户名已设置。我不知道我做了什么(如果有的话)来阻止它工作。
环境
我实现了一个非常简单的类,该类Enigma具有一个对称密钥和两个方法:byte[] encryptString(String strToEncrypt)和String decryptBytes(byte[] arrayToDecrypt)。
我正在尝试为该方法编写一些测试。我已经考虑过测试,加密和解密方法彼此相反,但这并不能单独说明它们。我想按原样使用这些方法来获取一组输入输出,并将其设置为测试(我知道这不是理想的方法,但是这些测试的目的是为了确保该函数在将来能够像它那样运行今天,不是说加密/解密就不错了)。
但是,我不知道如何获取字节数组输出的表示形式,byte[] encryptString(String strToEncrypt)以便可以在测试类中对其进行硬编码。
有任何想法吗?
我在C中使用switch表达式来评估errno变量.根据手册页send():
EAGAIN或EWOULDBLOCK
Run Code Online (Sandbox Code Playgroud)The socket is marked nonblocking and the requested operation would block. POSIX.1-2001 allows either error to be returned for this case,and does not require these constants to have the same value, so a portable application should check for both possibilities.
由于我的申请必须是便携式的,我必须这样做:
switch (errno):
case EWOULDBLOCK:
case EAGAIN:
//do whatever
break;
case EINTR:
//...
Run Code Online (Sandbox Code Playgroud)
问题是,对于某些平台,EWOULDBLOCK和EAGAIN确实具有相同的值,因此在编译时我得到:
Run Code Online (Sandbox Code Playgroud)connection.cxx:190:5: error: duplicate case value case EWOULDBLOCK: ^ connection.cxx:189:5: error: previously used here case EAGAIN: ^
所以我想我可以使用一个宏宏,取决于EWOULDBLOCK和EAGAIN是否具有相同的值,平台将该行添加到代码中或省略它.
有关如何编写该宏的任何想法?
java ×4
c++ ×2
python ×2
ssl ×2
bytearray ×1
c ×1
c++11 ×1
calendar ×1
date ×1
git ×1
junit ×1
junit4 ×1
keytool ×1
macros ×1
oauth ×1
obfuscation ×1
optional ×1
python-3.x ×1
security ×1
string ×1
ubuntu-16.04 ×1
unique-ptr ×1
unit-testing ×1
x509 ×1