我需要在我的C程序中创建一个临时文件,向其中写入一些数据,然后调用外部命令(通过exec或system)对我刚创建的文件进行一些处理.我没有编写外部命令,也不可能将它集成到我的程序中,因此我认为我不能与它共享已打开的描述符.因此,我需要知道创建的临时文件的名称.
tempname()函数执行此操作,但不幸的是,它建议您不要使用它自己,因为获取名称和打开文件之间可能存在竞争条件,并且它建议的任何函数(tmpfile和mkstemp)都没有提供方法找出创建的文件的实际名称.
我已经计划了的PendingIntent带AlarmManager.当AlarmManager交付时Intent,我能够获得getExtras()我最初发送的所有数据.
但是,有时我会Intent在AlarmManager火灾发生之前获得我希望传递的其他数据.我的想法是,我会得到Intent像我要取消它,但然后取消它,更新额外的并重新安排它AlarmManager,如下所示:
Intent i=new Intent(this, MyReceiver.class);
Bundle b = i.getExtras();
PendingIntent pi=PendingIntent.getBroadcast(this, id,i, 0);
if (b == null) b = i.getExtras(); // in case I can't get it before calling getBroadcast
// now add a key to b, put it in a new intent, schedule it, and cancel the old one?
Run Code Online (Sandbox Code Playgroud)
我正在getBroadcast()使用与我之前安排的相同ID进行呼叫.唯一的问题是,当我调用getExtras()它时总是返回null.这似乎与我经常看到的问题相反,其中一个Intent将被缓存,这是不希望的.在这种情况下,我实际上想要获得缓存Intent并获取它的值,并且因为它Intent正在等待它应该仍然存在. …
我在别人的网站上工作,它有一个非常愚蠢的逻辑!无论如何,有一个php变量,其中包含一个来自数据库的字符串.
$x = ' aaaa
bbb
ccc
gggg ';
Run Code Online (Sandbox Code Playgroud)
我需要将此字符串提供给javascript函数:
<script>
var x = "<?php echo $x ; ?>";
some_function(x);
</script>
Run Code Online (Sandbox Code Playgroud)
如您所知,我最终得到一个错误,因为javascript变量不能包含多行而不将它们连接在一起,如下所示:
var x = ' i '+
' have '+
' different lines';
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?如果它删除行或正确格式化无关紧要,我只是想摆脱这个错误.
我试图用几个软件包设置开发环境,因此,我需要手动安装一些依赖项。更具体地说,在将它们推送到github之前,我需要测试几个软件包中的一些本地更改,因此我不能只是npm install顶层,因为它不会吸收这些更改。因此,我首先npm install对缺少的程序包手动运行,然后尝试运行我的节点代码,查看仍然缺少的程序包,然后尝试npm install说明缺少的程序包。
但是,当我去安装第二个软件包时,它最终显示以下消息:
added 3 packages from 4 contributors, removed 799 packages and audited 3 packages in 4.197s
Run Code Online (Sandbox Code Playgroud)
第二次安装删除了几乎所有已安装的软件包!我直到第三次才意识到这一点,当时我意识到自己似乎一遍又一遍地安装相同的东西。
但是,我是否可以防止这种特别顽皮的行为,并强制npm 仅安装我告诉它的内容,而不管其他所有内容?
我正在尝试在 TinyMCE 中创建一个简单的测试插件。首先,文档似乎没有页面告诉我们如何准确地执行此操作。
我通过 Google 搜索找到了v4 的此页面,该页面已过时,尽管据称它位于“高级主题”下,但那里的链接都没有指向此页面!但是,它会引发我可以使用的异常。它告诉我我需要更换“编辑器”。到“editor.ui.register”。这使得异常消失,但我的工具栏和菜单项没有出现在任何地方!
我尝试在页面上切换到 v5 并搜索并找到了这个示例。再次,它引导我到一个页面,在适当的区域没有链接到它。
我“按原样”尝试了示例代码,并在没有“ui.registry”的情况下得到了有关过时用法的相同异常!但我修复了这个问题,然后得到了这个异常:
Uncaught Error: Errors:
Failed path: (toolbarbutton)
Could not find valid *strict* value for "onAction" in {
"type": "button",
"text": "My button",
"icon": false
},Failed path: (toolbarbutton > icon)
Expected type: string but got: boolean
Input object: {
"type": "button",
"text": "My button",
"icon": false
}
at theme.min.js:9
at Object.getOrDie (theme.min.js:9)
at theme.min.js:9
at theme.min.js:9
at Object.fold (theme.min.js:9)
at theme.min.js:9
at Object.fold (theme.min.js:9)
at dE (theme.min.js:9) …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个解决方案,允许直接在Android平板电脑上完整调试javascript代码.这是一个在标准移动浏览器(如Chrome或Firefox)中运行的HTML5应用,需要调试."完全"是指需要设置断点并逐步执行代码(in,over,out)的能力.
能够直接在设备上进行调试对于远程调试的PC不可用的现场情况非常重要.在某些时候,将需要调试具有脱机功能的Web应用程序的能力,代理服务器将不必执行任何操作,假设前端代码已经加载到浏览器中和/或在丢失网络连接之前缓存在设备上,但这不是这个问题的焦点.
我能够得到一个Weinre解决方案,但发现Weinre没有设置断点或单步执行代码的能力.然后我发现了jsHybugger应用程序,一个付费产品,我可以在平板电脑上运行,代理请求到服务器,然后提供调试界面,我可以使用同一个Android平板电脑设备上的不同浏览器选项卡实际查看.
我遗漏的部分是jsHybugger不支持https,因此不会与提供要调试的代码的服务器通信.使用https而不是http非常重要,因为在服务器和浏览器之间传递敏感信息.由于调试是在现场进行的,因此不像在局域网上缺少https并不那么重要.总是可以在更受控制的设置中进行一些调试,但是在现场中不可避免地会出现错误,这需要使用真实(非虚拟或消毒的http)数据进行"紧急调试".
我知道有反向代理 - 例如我可以很容易地将代理https反向到apache中的http.但问题是,由于平板电脑和服务器之间的连接需要加密,我不能在服务器上进行代理,而且由于另一个(非Android)设备并不总是可用,我需要在平板电脑.到目前为止,我还没有发现任何应用程序显然看起来他们会做我需要的.例如,我看过i-Jetty,因为我已经读过Jetty(基于它)可以做我正在寻找的东西,但我在代理上看到的所有例子都是Java代码,我想避免需要为此自己编写任何代码.我也看过Fiddler,但它似乎没有在Android上运行,尽管大胆宣称它是"任何浏览器,系统或平台的免费网络调试代理".显然,无论您使用什么平台或语言开发,"Fiddler都会随时为您提供帮助".在这种情况下是错误的.我还查看了Google Play商店中的各种应用,却没有找到任何内容.也许这个功能并没有突出显示,我错过了它.希望有一些应用程序已经做了我需要的最少的配置摆弄.理想情况下它不需要root; 如果它确实不是一个显示停止,但它不太优选作为生根只是为了能够调试可能是一个麻烦,因为我们没有其他任何需要它,并且一些设备比其他设备更加繁琐.
或者,如果有更好的方法来完成我想要做的事情,我会接受这个作为答案.
我的页面中有一个可滚动的DIV,而页面上没有其他元素.(页面布局固定在DIV本身上方和下方的控件上.)我希望箭头键和页面向上/向下翻页以在所有情况下滚动DIV,但除非DIV实际上具有焦点,否则我似乎无法这样做.其他DIV中还有其他输入字段,通常具有焦点.我已经尝试在文档级捕获箭头键和页面/向上/向下'keydown'事件并直接模拟相同的事件(使用此问题的答案)到需要滚动的DIV,但不会发生滚动.我知道正在调度该事件,因为如果我附加一个事件处理程序,我会看到它,但由于某种原因它不会导致任何滚动.我也试过设置DIV的"tabIndex"属性没有区别.
如何指定特定元素来接收这样的特定键?当某些键只能对页面上的单个元素有意义时,要求特定元素专注于某些键才能工作,这对用户来说是非常不友好的.不得不经常将焦点从另一个元素切换到可滚动区域以滚动和返回以输入数据.
我已经看到了可以通过其他方式模拟滚动的建议,但我想避免使用该路由,因为这并不总是产生相同的结果,并且我还希望将其推广到除滚动之外的其他类型的关键事件和动作.
在本页面的顶部,据说有关如何创建工具栏以控制字体,大小,粗体,斜体,下划线,删除线,文本颜色,背景颜色,列表,项目符号和文本对齐的说明.
但是,当我使用示例HTML代码时,我得到一个带有字体大小的下拉菜单,一个没有文本或图像的空白按钮,没有其他控件.
如何在上面的页面和主页面上完全复制完整的工具栏?我不想要"Bold","Italic"等字样.我想要的图标完全如图所示.该文档没有提供任何关于如何完成此任务的线索.在直接查看页面源时,似乎屏幕后面有一些添加的CSS来记录这一点,但尝试对其进行逆向工程并不会削减它.
此外,是否可以以编程方式生成此工具栏,而无需设置具有类和标题的复杂系列嵌套标记,还有其他方法呢?我使用Javascript生成DOM,尝试将精确的HTML格式转换为相应的构造函数调用非常繁琐.
我已经看到了有关创建用于加密的初始化向量(IV)的其他问题,并且似乎使用随机值是一个选项.但是,我需要生成用于解密的IV,因此我必须使用与基于某些盐加密数据相同的IV.
node.js加密函数createDecipher说:
crypto.createDecipher()的实现使用OpenSSL函数EVP_BytesToKey导出密钥,摘要算法设置为MD5,一次迭代,无盐.
为了向后兼容其他软件加密的资产,我需要不同的迭代次数和我指定的salt.
继续阅读文档,它进一步说:
在与OpenSSL的推荐使用PBKDF2,而不是EVP_BytesToKey线,建议开发者得到自己使用crypto.pbkdf2()键和IV和使用crypto.createDecipheriv()创建欲海对象.
好的,听起来不错.我需要解密的数据使用EVP_BytesToKey进行加密以获取密钥和IV,因此我需要与之兼容.
无论如何,crypto.pbkdf2函数似乎采用了我需要的所有参数,但问题是,它似乎没有创建初始化向量.
执行解密的相应C代码需要兼容,如下所示:
// parameters to function:
// unsigned char *decrypt_salt
// int nrounds
// unsigned char *decrypt_key_data <- the password
// int decrypt_key_data_len <- password length
// the following is not initialized before the call to EVP_BytesToKey
unsigned char decrypt_key[32], decrypt_iv[32];
EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), decrypt_salt, decrypt_key_data,
decrypt_key_data_len, nrounds, decrypt_key, decrypt_iv);
Run Code Online (Sandbox Code Playgroud)
我试图用来crypto.pbkdf2复制这种行为:
crypto.pbkdf2(password, salt, nrounds, 32, "md5", (err, derivedKey) => {
if (err) throw err
console.log(derivedKey.toString("hex"))
}) …Run Code Online (Sandbox Code Playgroud) 我有一个由pm2 管理的nodejs 服务器,但它以不同的用户身份运行(www-data,通过su)。我需要启动第二个服务器作为我自己的用户 ID 运行,但是当我尝试启动它时,我收到访问错误,因为 ~/.pm2 归 www-data 所有,而不是我自己。我尝试使用--logpm2 选项,但这不允许我设置全局 pm2 目录,只能设置日志文件。
如何指定 pm2 使用不同的目录?