我知道如何在Bash脚本中编写多行命令,但是如何在多行命令中为每一行添加注释?
CommandName InputFiles \ # This is the comment for the 1st line
--option1 arg1 \ # This is the comment for the 2nd line
--option2 arg2 # This is the comment for the 3nd line
Run Code Online (Sandbox Code Playgroud)
但不幸的是,继续角色之后的评论\将打破命令.
我正在使用Boost程序选项库来解析命令行参数.
我有以下要求:
我怎么处理这个?这是我的代码处理这个,我发现它非常多余,我认为必须有一个容易做的,对吧?
#include <boost/program_options.hpp>
#include <iostream>
#include <sstream>
namespace po = boost::program_options;
bool process_command_line(int argc, char** argv,
std::string& host,
std::string& port,
std::string& configDir)
{
int iport;
try
{
po::options_description desc("Program Usage", 1024, 512);
desc.add_options()
("help", "produce help message")
("host,h", po::value<std::string>(&host), "set the host server")
("port,p", po::value<int>(&iport), "set the server port")
("config,c", po::value<std::string>(&configDir), "set the config path")
;
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
if (vm.count("help"))
{
std::cout << desc << "\n";
return false;
}
// There …Run Code Online (Sandbox Code Playgroud) 我有ObservableCollection<T>集合,我想用新的元素集合替换所有元素,我可以这样做:
collection.Clear();
Run Code Online (Sandbox Code Playgroud)
要么:
collection.ClearItems();
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,这两种方法有什么区别?)
我也foreach可以collection.Add一个接一个地使用,但这会多次发射
添加元素集合时也一样.
编辑:
我在这里找到了一个很好的库:增强的ObservableCollection能够延迟或禁用通知,但它似乎不支持silverlight.
这是我的cron工作:
plee@dragon:~$ crontab -l
* * * * * /bin/bash -l -c 'source ~/.bashrc; echo $EDITOR > /tmp/cronjob.test'
Run Code Online (Sandbox Code Playgroud)
和内部~/.bashrc文件,我有export EDITOR=vim,但在最终/tmp/cronjob.test文件中,它仍然是空的?
那么如何获取环境变量(在.bashrc文件中设置)并在我的cron作业中使用它?
plee@dragon:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04 LTS
Release: 12.04
Codename: precise
plee@dragon:~$ uname -a
Linux dragon 3.2.0-26-generic-pae #41-Ubuntu SMP Thu Jun 14 16:45:14 UTC 2012 i686 i686 i386 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
如果使用这个:
* * * * * /bin/bash -l -c -x 'source ~/.bashrc; echo $EDITOR …Run Code Online (Sandbox Code Playgroud) 如何在以下示例中获取所有匹配项:
// Only "abcd" is matched
MatchCollection greedyMatches = Regex.Matches("abcd", @"ab.*");
// Only "ab" is matched
MatchCollection lazyMatches = Regex.Matches("abcd", @"ab.*?");
// How can I get all matches: "ab", "abc", "abcd"
Run Code Online (Sandbox Code Playgroud)
PS:我希望以通用方式获得所有比赛.上面的例子只是一个例子.
我已经被CMake-CPack感到沮丧了将近一周.
不好的是CMake-CPack在线文档没有很好地记录这部分内容.
谷歌搜索后,我发现这个变量使用:
CPACK_PACKAGING_PREFIX # NOT documented
CMAKE_INSTALL_PREFIX # Documented, but the behavior seems weird
CPACK_INSTALL_PREFIX # NOT documented
CPACK_PACKAGE_INSTALL_DIRECTORY # Documented, but this variable does NOT work as the online document described
CPACK_PACKAGING_INSTALL_PREFIX # NOT documented
Run Code Online (Sandbox Code Playgroud)
我想要做的是:打包Debian软件包fakeroot make package,当安装软件包时,使用子目录sudo dpkg -i MyProgramPackageName安装它.也就是说,应该安装所有文件./usr/localMyProgramPackageName/usr/local/MyProgramPackageName-V.1.2.3
我一直在尝试(CMake 2.8.3和CMake 2.8.5)来调整这些变量.我尝试了很多组合,但都失败了.
唯一成功的方法是:
Set(CPACK_PACKAGING_INSTALL_PREFIX /usr/local/MyProgramPackageName-V.1.2.3)
Run Code Online (Sandbox Code Playgroud)
但是这个变量甚至没有记录,并且无法保证行为.如果您对我的问题感到困惑,请告诉我何时使用CPACK_PACKAGE_INSTALL_DIRECTORY?因为关于这个变量的文档描述真的很有吸引力,而且它确实是我想要的,但我无法让它工作.
请建议我.
彼得
它可能与其他问题重复,但我发誓我搜索了很多并在StackOverflow.com上搜索了很多,我找不到我的问题的答案:
在C#.Net应用程序中,存储保护试用信息的位置,例如到期日期,使用次数?
据我所知,各种软件保护策略都可以被一个狡猾的黑客破解(因为他们几乎总能绕过到期检查步骤).但我现在要做的只是以合理的方式保护它,使"普通"/"高级"用户无法搞砸.
好的,为了证明我在StackOverflow.com上搜索了很多搜索,我列出了我得到的所有策略:
首先,一些用户可能无法访问甚至读取Registry表.
其次,如果我们将保护试用信息放在注册表项中,则用户可以通过比较软件安装之前和之后的差异来始终找到它.他们可以简单地改变它.
好的,您可能会说我们应该加密保护试用信息,是的,我们可以做到这一点.但是如果用户在安装之前只更改了系统日期呢?
好吧,你可能会说我们也应该把最后使用的日期,如果出现问题,最后使用的日期可以作为保护指南.但是,如果用户只是卸载软件并删除与该软件相关的所有注册表项,然后重新安装软件,该怎么办?
我不知道如何处理这个问题.请帮忙.
首先,有一些地方放普通文件:
同样,用户可以卸载软件并删除这些普通文件,然后重新安装软件.
如果我们将保护试用信息(到期日期,我们不能将使用次数)放在软件本身中,它仍然容易受到我上面提到的情况的影响.此外,这样做甚至都不酷.
它的工作方式类似于许可过程,也就是说,我们将试用信息放入RSA签名的字符串中.但是,要求用户尝试使用该软件需要太多步骤(他们可能会失去耐心):
现在,服务器记录了用户的用户名或硬件信息,因此用户将被拒绝请求第二次审判.收集硬件信息是否合法?
总之,用户必须再做一个额外的步骤(请求试用产品密钥)只是为了尝试使用该软件,这并不酷(将自己视为用户).
注意:此问题与许可无关,而是与存储试用信息的位置有关.试用期结束后,用户应该要求许可证(CD-Key/Product-Key).我将使用RSA签名(绑定到用户硬件)
PS:我的软件将针对中国市场,其软件市场与美国不同.在中国大多数人,他们只购买硬件,他们通常不会购买Micosoft Windows/Office等软件(他们只使用盗版).但是,一些针对特定领域的专业软件,研究人员仍然愿意购买它,如果没有破解版本或破解版本很难安装.
首先,我了解几乎所有应用程序都可以被破解(特别是用C#编写).我的问题是让它更难破解.
假设用户已将Application文件保存在Application.StartupPath下,所有用户都可以读取该文件.
然后,每次应用程序启动时,它都会检查是否可以找到并验证许可证文件.
如果应用程序可以查找和验证,我们让用户继续使用全部功能.
如果没有,我们会提示MessageBox显示"未许可,继续使用试用版,功能有限".
我的问题是,如果我是黑客/黑客,我会尝试绕过或绕过许可检查而不是破解许可文件,因为,如果我们使用RSA签名,则很难破解许可文件.
那么我们应该在哪里进行许可检查?
PS:而且,如果我设置一个全局变量IsLicensed(true/false)来限制功能,它是否安全?黑客是否容易改变IsLicensed = true?
当然,我知道无符号整数(uint)和有符号整数()之间的基本区别int.
我注意到在.NET公共类中,一个被调用的属性Length总是使用有符号整数.
也许这是因为无符号整数不符合CLS.
但是,例如,在我的静态函数中:
public static double GetDistributionDispersion(int tokens, int[] positions)
Run Code Online (Sandbox Code Playgroud)
参数tokens和所有元素positions都不能为负数.如果它是否定的,最终结果是无用的.因此,如果我同时使用intfor tokens和positions,我必须在每次调用此函数时检查值(如果发现负值,则返回非感知值或抛出异常),这很乏味.
好的,那么我们应该使用uint两个参数.这对我来说真的很有意义.
然而,我发现,在许多公共API中,它们几乎总是在使用int.这是否意味着在他们的实现中,他们总是检查每个值的负面(如果它应该是非负的)?
总而言之,我该怎么办?
我可以提供两种情况:
我们应该对这两种情况使用不同的方案吗?
彼得
PS:我做了很多研究,仍然没有理由说服我不要使用uint:-)
我正在开发一个项目,需要通过HTTP向/从服务器流式传输音频数据.
我们需要使用SPEEX压缩音频数据.
在Flash中,我们可以使用Alchemy和LibSpeex,但我们如何在JavaScript中完成它.可以使用HTML5.
谢谢.
彼得