小编rsk*_*k82的帖子

函数是否可以仅接受给定参数的有限类型集?

我知道如何使用模板的任何数据类型:

template<typename T>
T myFunc(T data) { ... }
Run Code Online (Sandbox Code Playgroud)

但是,有没有办法设定的允许的类型缩小到例如intcharstd::stringstd::wstring,所以编译器将抛出一个错误,遇到不允许参数类型的时候,我会得到编译时间,而不是运行时错误?

编辑:非常感谢ecatmur,现在我理解了整个概念.

template<typename itemA_type, typename itemB_type>
typename std::enable_if<
  (
    std::is_same<itemA_type, int>::value ||
    std::is_same<itemA_type, char>::value) &&
  (
    std::is_same<itemB_type, std::string>::value ||
    std::is_same<itemB_type, std::wstring>::value ||
    std::is_same<itemB_type, const char*>::value ||
    std::is_same<itemB_type, const wchar_t*>::value
  ) ,
  void
>::type
myFunction(itemA_type itemA, itemB_type itemB) {
  using namespace std;
  cout << itemA << itemB << endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism templates function c++11

4
推荐指数
3
解决办法
1179
查看次数

有没有办法使用rss/atom或其他类似方式检查特定npm包的更新?

当用户提出类似问题但没有回答时,我发现只有这个帖子.(https://github.com/npm/npm-registry-couchapp/issues/17)

我知道两个站点是NPM包的存储库:

而且我找不到像github或sourceforge那样获取单个包的rss的方法:

  • https://github.com/<author_name>/<package_name>/releases.atom
  • http://sourceforge.net/projects/<project_name>/rss?limit=20

是的,我知道我可能会检查给定NPM的github存储库是什么,并以这种方式执行,但我特别要求从某种NMP存储库中获取此信息的方法,该存储库跟踪给定包是否更改了其git地址(不一定这两个我在这里作为例子添加.)

谷歌很难找到这些技巧,因为它认为我正在寻找某种处理RSS/ATOM的NPM包.

rss node.js npm atom-feed

4
推荐指数
1
解决办法
677
查看次数

将html表转换为php数组的最快方法是什么?

是否有最新版本的PHP中的功能,专门用于帮助完成此任务?

html php arrays html-table

3
推荐指数
1
解决办法
1万
查看次数

这个基于xor的加密功能安全吗?

我在这里尝试做的是创建一个函数,每次调用它时都会将相同的输入加密为完全不同的输出.这个函数的基础是xor,但是为了防止在字符串中容易发现重复模式.我根据时间和字符串的一部分添加了随机散列,以便在解密时进行自我验证.

我要求的是,如果我在这里犯了任何错误,可以向有经验的人透露隐藏的文字而不对字符串施加暴力.(我知道php有一个模块只是用于加密,但这是一个糟糕的勒芒版本,以防加密模块不可用.)第二:我不要求你重写这个功能或为我写一些东西,我要求的是我做错了一个简单的指导.我知道一个可能的安全漏洞是我默认使用salsa,这对于空字符串都是零,但优点是这是php中可用的最长哈希,其次,傻瓜会使用空密码来保护他们的数据?

function crapt($str,$pass,$hmac = false,$meth = 'salsa20') {
   $hash = pack('H*',($hmac===false) ? hash($meth,$pass) : hash_hmac($meth,$pass,$hmac));
   $str = gzdeflate($str,9);
   $tmphash = pack('H*',sha1(sin(microtime(1))));
   $str = $tmphash.((string)$str ^ (string)str_repeat($tmphash,strlen($str)/strlen($tmphash)+1));
   $str .= pack('H*',sha1($str));
   return (string)$str ^ (string)str_repeat($hash,strlen($str)/strlen($hash)+1);
}

function decrapt($str,$pass,$hmac = false,$meth = 'salsa20') {
  $hash = pack('H*',($hmac===false) ? hash($meth,$pass) : hash_hmac($meth,$pass,$hmac));
  $str = (string)$str ^ (string)str_repeat($hash,strlen($str)/strlen($hash)+1);
  $check = substr($str,-20);
  $str = substr($str,0,strlen($str)-20);
  if(pack('H*',sha1($str))!==$check) return false;
  $tmphash = substr($str,0,20);
  $str = substr($str,20);
  return gzinflate((string)$str ^ (string)str_repeat($tmphash,strlen($str)/strlen($tmphash)+1));
}

var_dump(decrapt(crapt('sometext','secretpassword'),'secretpassword'));
Run Code Online (Sandbox Code Playgroud)

php cryptography xor

3
推荐指数
2
解决办法
1277
查看次数

会话中的对象:致命错误:在第0行的"未知"中没有堆栈帧时抛出异常

session_start();
$_SESSION['dbo'] = NEW PDO('sqlite:database.db3');
Run Code Online (Sandbox Code Playgroud)

得到:

Fatal error: Exception thrown without a stack frame in Unknown on line 0

但把它放到普通变量没有错误.我尝试做的就是将对象放入会话中,以便初始化一次.

php session object

3
推荐指数
1
解决办法
2442
查看次数

如何在Chrome扩展程序中停用相同的来源政策?

也许有一些设置可以在扩展上下文中禁用它.由于我正在开发一个扩展,我自己的责任是不要射击我自己的目标.在开发浏览器扩展时,完全不合理的安全事项是非常令人沮丧的.

我不想通过全局禁用它来使整个浏览器不安全.仅适用于manifest.json中"content_scripts"部分中设置的脚本

google-chrome same-origin-policy google-chrome-extension

3
推荐指数
1
解决办法
3514
查看次数

如何同时选择给定元素及其所有子元素?

好的,我知道如何分别做这两件事:

#elemID {  } /* selects only one element */
#elemID * {  } /* selects all its children elements but not the element itself */
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样做:

#elemID, #elemID * { }
Run Code Online (Sandbox Code Playgroud)

但有没有办法避免这种重复?

css css-selectors

3
推荐指数
1
解决办法
2290
查看次数

3
推荐指数
2
解决办法
9566
查看次数

包括stdio在调用WriteConsole时导致错误

#include <stdio.h>
#include <windows.h>

using namespace std;

int main() {
  char s[] = "Hello\n";
  HANDLE stdout = GetStdHandle(STD_OUTPUT_HANDLE);
  unsigned long cChars;
  WriteConsole(stdout, s, lstrlen(s), &cChars, NULL);
}
Run Code Online (Sandbox Code Playgroud)

结果: error: declaration of '_iob' as array of references

但是当我评论出来时stdio.h,它编译好了.这有什么不对?

编译器是MinGW.

c++ console winapi mingw

3
推荐指数
1
解决办法
375
查看次数

使用WH_KEYBOARD的SetWindowsHookEx对我不起作用,我有什么不对?

#include <iostream>
#include <fstream>
#define _WIN32_WINNT 0x501
#include <windows.h>

using namespace std;

HHOOK hKeyboardHook = 0;
LRESULT CALLBACK KeyboardCallback(int code,WPARAM wParam,LPARAM lParam) {  
  cout << "a key was pressed" << endl;
  ofstream myfile;
  myfile.open ("hookcheck.txt", ios::ate | ios::app);
  myfile << "a key was pressed\n";
  myfile.close();
  return CallNextHookEx(hKeyboardHook,code,wParam,lParam);
}

int main() {

  HWND consoleWindow = GetConsoleWindow();
  HINSTANCE hInstCons = (HINSTANCE)GetWindowLong( consoleWindow, GWL_HINSTANCE );
  hKeyboardHook = SetWindowsHookEx( WH_KEYBOARD, (HOOKPROC)KeyboardCallback, (HINSTANCE)consoleWindow, GetCurrentThreadId());

  MessageBox(NULL, "It is keyboard time!", "Let's Go", MB_OK);

}
Run Code Online (Sandbox Code Playgroud)

循环进行时每次按键时此代码都应该在控制台上打印消息并创建一个文件,但什么也没发生.我错了什么?

c++ windows console winapi keyboard-hook

3
推荐指数
1
解决办法
4879
查看次数