我看到当我尝试在onpaste调用其函数时从textarea字段读取值时,我得到字段的旧值(粘贴操作之前的值),而不是新值(粘贴操作之后的值).
以下是此行为的演示:http://jsfiddle.net/qsDnr/
代码的副本如下:
<!DOCTYPE html>
<html>
<head>
<title>On Paste</title>
<script type="text/javascript">
var textareaElement;
var previewElement;
function update()
{
previewElement.innerHTML = textareaElement.value;
}
window.onload = function() {
textareaElement = document.getElementById('textarea');
previewElement = document.getElementById('preview');
textareaElement.onpaste = update
}
</script>
</head>
<body>
<textarea id="textarea">
</textarea>
<div id="preview">
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
您可以使用以下步骤确认行为.
foo到剪贴板.foo出现在div元素中.因为我想要的div元素始终显示什么是与粘贴操作textarea元素更新,所需的输出foo,并foo foo在步骤2和步骤分别3.
我设法获得所需输出的一种方法是通过延迟update()函数调用window.setTimeout(),而不是
textareaElement.onpaste = update
Run Code Online (Sandbox Code Playgroud)
我有
textareaElement.onpaste = function() {
window.setTimeout(update, …Run Code Online (Sandbox Code Playgroud) 我的Windows系统有多个以太网适配器.鉴于以太网适配器的名称,我需要找到它的IP地址.
例如,ipconfig我系统的命令输出是:
Ethernet adapter GB1:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 0.0.0.0
Subnet Mask . . . . . . . . . . . : 0.0.0.0
Default Gateway . . . . . . . . . :
Ethernet adapter SWITCH:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 10.200.1.11
Subnet Mask …Run Code Online (Sandbox Code Playgroud) 我有以下shell脚本.
$ cat foo.sh
foo()
{
A=$(uname)
printf "hello "
bogus
}
echo output: "$(foo 2>&1)"
Run Code Online (Sandbox Code Playgroud)
它以bash,zsh,dash和posh生成以下输出.这是有道理的,因为bogus在系统上没有调用这样的命令.
$ bash foo.sh
output: hello foo.sh: line 5: bogus: command not found
$ zsh foo.sh
output: hello foo:4: command not found: bogus
$ dash foo.sh
output: hello foo.sh: 5: foo.sh: bogus: not found
$ posh foo.sh
output: hello foo.sh:8: bogus: not found
Run Code Online (Sandbox Code Playgroud)
但是在Debian上的ksh中,由于调用bogus命令,它不会打印错误消息.
$ ksh foo.sh
output: hello
Run Code Online (Sandbox Code Playgroud)
什么地方出了错?
如果您想了解系统详细信息和shell的版本详细信息,请参阅以下输出.
$ uname -a
Linux debian1 3.16.0-4-amd64 #1 SMP Debian …Run Code Online (Sandbox Code Playgroud) 考虑我打算在任何符合POSIX.1-2004标准的 shell 上运行的以下shell脚本.
log()
{
echo debug: "$*"
}
A=foo:bar:baz
IFS=:
for i in $A
do
log token ">> >>" "$i"
done
unset IFS
# Do more stuff here
Run Code Online (Sandbox Code Playgroud)
我想循环冒号分隔值.在循环中,我想调用一个日志函数,它应该能够回显传递给它的所有参数,并保留每个参数中的多个空格.当我运行此代码时,这是我得到的输出.
debug: token:>> >>:foo
debug: token:>> >>:bar
debug: token:>> >>:baz
Run Code Online (Sandbox Code Playgroud)
好消息是,在这两个空间">> >>"都被保存下来,因为使用的"$*",即引述特殊参数星号作为定义第2.5.2节特殊参数 POSIX.1-2004的.
但坏的是,由于相同的用法,传递给它的三个参数log现在用冒号(the IFS)分隔.
我解决了这个问题unset婷IFS的内for循环.
log()
{
echo debug: "$*"
}
A=foo:bar:baz
IFS=:
for i in $A
do
unset IFS
log token ">> >>" "$i" …Run Code Online (Sandbox Code Playgroud) 我看到当我在'onfocus'功能的帮助下在文本框中选择文本时,我没有得到我期望的行为.
这是演示网址:http://jsfiddle.net/BquZz/
代码的副本如下:
<!DOCTYPE html>
<html>
<head>
<title>Select all</title>
<script type="text/javascript">
var text;
var log;
function select()
{
text.select();
log.innerHTML += ' - select';
}
window.onload = function() {
text = document.getElementById('text');
log = document.getElementById('log');
log.innerHTML = 'start';
text.onfocus = select;
}
</script>
</head>
<body>
<input type="text" id="text" readonly="readonly" value="hello, world">
<div id="log">
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我多次重复以下实验.
我希望每次在第2步结束时,都应该选择文本框中的字符串"hello,world".但是,这不是我观察到的.使用Debian GNU/Linux(Wheezy)上的Iceweasel 11.0,在替代实验结束时,"hello,world"未被选中.在剩下的实验中,有时候我会看到字符串"hello,world"被完全选中,有时候会被部分选中.使用Debian GNU/Linux(Wheezy)上的Chrome 18.0.1025.33测试版,我很少得到理想的结果.大多数时候,没有选择任何东西.
我知道解决这个问题的方法.更改text.onfocus = select到text.onclick = select.使用select()调用的函数onclick,我得到预期的结果.这是一个演示URL,使用'onclick'显示所需的结果: …
如何在将输出重定向到文件的同时"foo 1"使用echo命令回显字符串,以便将整个字符串写入文件?
C:\>echo foo 1>foo.txt
C:\>type foo.txt
foo
C:\>xxd -g1 a.txt
0000000: 66 6f 6f 20 0d 0a foo ..
Run Code Online (Sandbox Code Playgroud)
上面的实验表明只有"foo "写入文件,因为"1"命令中的命令被解释为重定向操作符的一部分,1>.请注意,这echo foo 1 > foo.txt不是解决方案,因为它会"foo 1 "在字符串中写入带有不必要的尾随空格的文件.
请考虑以下Windows批处理脚本.
@echo off
call :log "start script"
call :log "foo"
call :log "end script"
goto :eof
:log
echo %~1>>log.txt
goto :eof
Run Code Online (Sandbox Code Playgroud)
当我执行此脚本时,它的行为符合要求,即在log.txt中写入三行日志.
C:\>foo
C:\>type log.txt
start script
foo
end script
Run Code Online (Sandbox Code Playgroud)
现在考虑以下脚本,其中第二行日志已被修改"foo"为"foo 1". …
我试图显示从容器div元素的一个边缘到另一个边缘均匀展开的三个div元素.
这是HTML代码.
<body>
<div id="container" width="50%">
<div>foo</div>
<div>bar</div>
<div>baz</div>
<div class="stretch"></div>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
这是CSS代码.
#container {
margin: 10%;
background: lightblue;
text-align: justify;
}
#container div {
display: inline-block;
width: 30%;
background: gray;
}
#container div.stretch {
width: 100%;
height: 0;
}
Run Code Online (Sandbox Code Playgroud)
这可以正常工作,如下所示:http://jsfiddle.net/zVf4j/
但是,当我尝试使用以下JavaScript更新容器div时,子div元素不再从容器div元素的边缘展开.
var containerDiv = document.getElementById('container')
containerDiv.innerHTML =
'<div>fox</div>' +
'<div>bay</div>' +
'<div>baz</div>' +
'<div class="stretch"></div>'
Run Code Online (Sandbox Code Playgroud)
text-align: justify;在这种情况下,CSS中的属性似乎没有任何效果.这个问题可以在这里看到:http://jsfiddle.net/b5gBM/
我有两个问题.
以下代码是有效的Java程序.
public class Foo
{
public static void \u006d\u0061\u0069\u006e(String[] args)
{
System.out.println("hello, world");
}
}
Run Code Online (Sandbox Code Playgroud)
的main识别符是使用Unicode转义序列写入.它编译并运行良好.
$ javac Foo.java && java Foo
hello, world
Run Code Online (Sandbox Code Playgroud)
虽然这个问题可能不需要以下细节,但我会分享它,以防有人对此感到好奇.我在Debian 8.0上使用OpenJDK的Java编译器,但我在这个问题中要求的应该适用于任何Java编译器.
$ javac -version
javac 1.7.0_79
$ readlink -f $(which javac)
/usr/lib/jvm/java-7-openjdk-amd64/bin/javac
Run Code Online (Sandbox Code Playgroud)
下面的程序是一个错误,因为以前写的转义序列m中main是无效的.
public class Foo
{
public static void \u6d\u0061\u0069\u006e(String[] args)
{
System.out.println("hello, world");
}
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨非法的unicode序列.
$ javac Foo.java && java Foo
Foo.java:3: error: illegal unicode escape
public static void \u6d\u0061\u0069\u006e(String[] args)
^
Foo.java:3: error: invalid method …Run Code Online (Sandbox Code Playgroud) 在macOS High Sierra(版本10.13.6)中,我运行一个Python程序,该程序执行以下操作:
multiprocessing.Queue。requests包发送HTTP请求,即,它进行了requests.get()调用。满足上述条件的程序将导致工作进程崩溃,并显示以下错误:
objc[24250]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called.
objc[24250]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
Run Code Online (Sandbox Code Playgroud)
我已阅读以下主题:
这些线程专注于用户的解决方法。解决方法是定义此环境变量:
OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
Run Code Online (Sandbox Code Playgroud)
在这个问题中,我想理解为什么只有某些条件会产生错误,而其他条件却没有,并且如何解决此问题而不给OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES用户增加定义环境变量的负担。
import multiprocessing as mp
import …Run Code Online (Sandbox Code Playgroud) python fork python-multithreading python-requests macos-high-sierra
我目前正在获得md5校验和,如下所示:
>>> import hashlib
>>> f = open(file)
>>> m = hashlib.md5()
>>> m.update(f.read())
>>> checksum = m.hedxigest()
Run Code Online (Sandbox Code Playgroud)
我需要返回大型视频文件的校验和,这需要几分钟才能生成.如何实现百分比计数器,以便在运行时打印每个百分比的完成百分比.就像是:
>>> checksum = m.hedxigest()
1% done...
2% done...
etc.
Run Code Online (Sandbox Code Playgroud) 在目录中有以下格式的文件:*-foo-bar.txt.
示例目录:
$ ls *-*
asdf-foo-bar.txt ghjk-foo-bar.txt l-foo-bar.txt tyui-foo-bar.txt
bnm-foo-bar.txt iop-foo-bar.txt qwer-foo-bar.txt zxcv-foo-bar.txt
Run Code Online (Sandbox Code Playgroud)
所需目录:
$ ls *.txt
asdf.txt bnm.txt ghjk.txt iop.txt l.txt qwer.txt tyui.txt zxcv.txt
Run Code Online (Sandbox Code Playgroud)
我想到的第一个解决方案看起来有点像这个丑陋的黑客:
ls *-* | cut -d- -f1 | sed 's/.*/mv "\0-foo-bar.txt" "\0.txt"/' > rename.sh && sh rename.sh
Run Code Online (Sandbox Code Playgroud)
上面的解决方案动态创建一个脚本来重命名文件.ls根据http://mywiki.wooledge.org/ParsingLs,该解决方案还尝试解析其输出不是一件好事.
使用像这样的shell脚本可以更优雅地解决这个问题:
for i in *-*
do
mv "$i" "`echo $i | cut -f1 -d-`.txt"
done
Run Code Online (Sandbox Code Playgroud)
上述解决方案使用循环重命名文件.
有没有办法在一行中解决这个问题,这样我们就不必显式编写循环脚本,或生成脚本,或调用新的或当前的shell(即避免使用sh,bash ,.等命令) ?
我正在尝试为 Windows 系统编写一个交换A和B键的程序,即当我按下该A键时,B就会输入内容,反之亦然。
为此,我首先将A键映射为与键类似的行为B。这是我写的代码。
#include <stdio.h>
#include <windows.h>
HHOOK hook;
LRESULT CALLBACK keyboardHook(int nCode, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT *p = (KBDLLHOOKSTRUCT *) lParam;
DWORD newVkCode;
INPUT inputs[1];
UINT ret;
char wParamStr[16];
char vkStr[16] = "";
if (wParam == WM_KEYDOWN)
strcpy(wParamStr, "KEYDOWN");
else if (wParam == WM_KEYUP)
strcpy(wParamStr, "KEYUP");
else if (wParam == WM_SYSKEYDOWN)
strcpy(wParamStr, "SYSKEYDOWN");
else if (wParam == WM_SYSKEYUP)
strcpy(wParamStr, "SYSKEYUP");
else
strcpy(wParamStr, "UNKNOWN");
if …Run Code Online (Sandbox Code Playgroud) 引用PHP flock文档:
因为flock()需要一个文件指针,你可能必须使用一个特殊的锁文件来保护对你想要截断的文件的访问,方法是在写模式下打开它(fopen()带有"w"或"w +"参数).
引用PHP fopen文档:
'c' - 打开文件只写.如果该文件不存在,则创建该文件.如果存在,则既不截断(与'w'相反),也不会调用此函数失败(如'x'的情况).文件指针位于文件的开头.如果在尝试修改文件之前需要获取咨询锁(请参阅flock()),这可能很有用,因为使用'w'可能会在获取锁之前截断文件(如果需要截断,则ftruncate()可以在请求锁之后使用).
我试图flock通过fopen在'w'模式下打开文件来解决文件被截断后获取咨询锁的问题.在什么情况下,人们会想要使用一个特殊的锁文件来保护对一个打算在写入模式下打开它的文件的访问?