我是SVG的新手,所以请耐心等待.我阅读了很多关于这个主题的文章,每个人都指向像d3.js这样的解决方案,在我看来,这对于我所拥有的简单任务来说是复杂的.
我需要用笛卡尔坐标系制作图形,其中(0,0)位于左下角.它需要具有以百分比表示的宽度,高度和数据,因此所有内容都与页面一致.
所以,这是我的代码(为了简单起见,只有部分图表在那里):
<style>
.grid {stroke: white; stroke-width: 1; stroke-dasharray: 1 2}
.label{font-family: courier new; fill: white; font-size: 14px}
.data {stroke: white; stroke-width: 1}
</style>
<svg width="100%" height="100%">
<g class="x grid">
<line x1="0%" x2="0%" y1="80%" y2="100%"></line>
<line x1="10%" x2="10%" y1="80%" y2="100%"></line>
<line x1="20%" x2="20%" y1="80%" y2="100%"></line>
</g>
<g class="y grid">
<line x1="0%" x2="20%" y1="80%" y2="80%" ></line>
<line x1="0%" x2="20%" y1="90%" y2="90%" ></line>
<line x1="0%" x2="20%" y1="100%" y2="100%"></line>
</g>
<g class="x label">
<text x="10%" y="100%"> 1 minute </text>
<text x="20%" y="100%"> …Run Code Online (Sandbox Code Playgroud) 目标是embedded使用serial接口连接到设备。到目前为止,我已经使用了:
stty -F /dev/ttyS2 115200 cs8 ixoff
socat readline,history=/etc/socat.history /dev/ttyS2,raw,echo=0
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但后来我发现在system boot此期间有一些选项需要您按一个键而不按enter,并且readline在那里失败。所以我的想法是绑定ttyS2到cons0,但后来我发现了许多问题,如无法退出(ctr+c,ctr+q ctr+]甚至esc无法正常工作),backspace并delete没有工作,来信使一些试验和错误后输入两次,等等,我想出了这个:
socat /dev/cons0,raw,echo=0,crnl /dev/ttyS2,raw,echo=0,escape=0x03,crnl
Run Code Online (Sandbox Code Playgroud)
raw两侧允许单个key press触发boot optionecho=0两侧防止key press加倍crnl两侧防止enter key press加倍escape=0x03允许我quit按ctr+c问题是,当我退出时,我cons0全神贯注,好像它以某种方式保留了raw,echo=0,crnl设置。我知道这个问题对于我的场景来说可能太具体了,但我只需要一种简单的方法来像我一样将击键发送到串行putty(这在我的平台上不可用)。我使用socat它是因为它非常轻量级,不需要任何额外的库,并且因为显示的命令是使用expect.
任何想法和建议都非常感谢。
我正在使用GNU inetdand tftpd(在 下cygwin,但这并不重要),并且我需要有许多符号链接仅指向几个不同的文件,这些文件应该可以通过tftp.
tftp 目录如下所示:
lrwxrwxrwx 1 12 Jun 4 21:29 link.bin -> file.bin
-rw-r--r-- 1 6 Jun 2 01:38 file.bin
Run Code Online (Sandbox Code Playgroud)
tftp 是这样说的:
tftp> get link.bin
Error code 1: File not found
Run Code Online (Sandbox Code Playgroud)
我用了ln -s file.bin link.bin
tftpd 可以处理符号链接吗?我究竟做错了什么?
在这个非常简单的示例中,我需要解决数组元素的键和值:
declare -A writer
writer[H.P.]=Lovecraft
writer[Stephen]=King
writer[Clive]=Barker
writer[Jack]=Ketchum
for i in ${!writer[@]}
do
echo "$i ${writer[$i]}"
done
fullname()
{
pointer=$1[@]
for i in "${!pointer}"
do
echo "? $i"
done
}
fullname writer
Run Code Online (Sandbox Code Playgroud)
该函数必须以与之前的示例循环相同的格式显示输出,并且它应该接收数组名称,键列表或值,所有这些都是我尝试过的,但没有成功.任何建议都非常感谢.
当我问问题可以javascript在服务器上列出文件时,每个人都回答" javascript无法访问服务器文件系统,因为它是一个client-side scripting language".但我认为答案只是部分正确,因为浏览器可以列出服务器目录的内容(如果dirlisting已启用).因此,我决定尝试解析该输出 - cgi当您已经可以在xml格式中看到所需的数据时,无需使用.所以这就是我所做的:
我正在使用lighttpd,重要的条目lighttpd.conf是:
dir-listing.activate = "enable" #enables directory listing
dir-listing.auto-layout = "disable" #simplifies the list style
mimetype.assign = ( ".xml" => "text/xml" ) #deals with xmls
Run Code Online (Sandbox Code Playgroud)
test.xml用于测试XHR看起来像这样:
<?xml version="1.0"?>
<anchors>
<a>foo</a>
<a>bar</a>
</anchors>
Run Code Online (Sandbox Code Playgroud)
目录列表页面,创建者lighttpd mod_dirlisting.so:
<?xml version="1.0" encoding="iso-8859-1"?>
<h2>Index of /directory/</h2>
<div class="list">
<table summary="Directory Listing" cellpadding="0" cellspacing="0">
<thead><tr><th class="n">Name</th><th class="m">Last Modified</th><th class="s">Size</th><th class="t">Type</th></tr></thead>
<tbody>
<tr><td class="n"><a …Run Code Online (Sandbox Code Playgroud) 在一个非常常见的场景示例中,我们需要更改整个元素类的样式,我们有一个(简化的和通用的)代码,如下所示:
var elements = document.getElementsByTagName('div');
for (var i = 0; i < elements.length; i++)
if (elements[i].className == 'HideMe')
elements[i].style.visibility = 'hidden';
Run Code Online (Sandbox Code Playgroud)
它div从文档中获取所有元素,循环遍历它们,并将具有"HideMe"类的元素的可见性更改为"隐藏".另一方面,这段代码:
document.innerHTML.replace(/class="HideMe"/mg, 'class="HideMe" style="visibility: hidden"');
Run Code Online (Sandbox Code Playgroud)
将隐身样式插入到具有"HideMe"类的所有内容中.我是新手JavaScript,并且不会误解我的意思,但是每个例子,我到目前为止看到的每个教程,都教导了第一种方法.不应该是一个单行,一个函数调用,一个由更聪明的人创建的替换算法,比任何类型的循环都更快,更少资源密集if吗?问题实际上是更普遍的问题,为什么不这样做:
document.innerHTML.replace('id="foo"', 'id="bar"');
Run Code Online (Sandbox Code Playgroud)
代替:
document.getElementById('foo').id = 'bar';
Run Code Online (Sandbox Code Playgroud)
被检查的代码是完全相同的,但是对于性能,我可能需要让它改变数千个元素的样式,以便我可以测量任何显着的差异.是否有任何好的,充分论证的理由为什么我们应该支持一种方法而不是另一种方法呢?
我需要一个expect脚本来等待已发出的命令完成,然后从中注销telnet.这是脚本:
spawn telnet host
send "username\r"
send "password\r"
sleep 3
send "custom_command\r"
while {???}
{
sleep 1
}
send "logout\r"
expect eof
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么说的部分是???.我基本上只需要等待prompt显示,一旦显示,脚本应该结束.我猜它应该是这样的[gets line != "prompt>" ].
我做了一个bash function看起来像这样的:
keystroke()
{
read -s -n1 -t0.1 key #Read a single keystroke for 0.1 seconds
[ "$key" = $'\e' ] && #If the pressed key is escape
{
echo Aborted by user #Display message
break #Break parent loop
}
}
Run Code Online (Sandbox Code Playgroud)
每当我需要loop在其他bash函数中优雅地结束 a时,我都会调用 keystroke。我不再能够这样做,因为bashv4.4.0 说:
-bash: break: only meaningful in a `for', `while', or `until' loop
Run Code Online (Sandbox Code Playgroud)
如何在不重复复制相同代码 10 倍以上的情况下解决此问题?
我有很多bash脚本使用perl表达式grep来提取两个分隔符之间的子字符串.例:
echo BeginMiddleEnd | grep -oP '(?<=Begin).*(?=End)'
Run Code Online (Sandbox Code Playgroud)
问题是,当我将这些脚本移植到运行的平台时busybox,"集成" grep无法识别-P开关.是否有一种干净的方法来使用grep和regular expressions?
编辑:没有perl,sed或awk在该平台上.这是一个轻量级linux.
在下面的示例中,我们使用an RSA 256-bit private key来加密32字节的消息而不填充,并将结果存储在同一个内存块中.
#include <openssl/ssl.h>
unsigned char err[256],
msg[] = "This is a message of some sort.",
key[] = "-----BEGIN RSA PRIVATE KEY-----\n"\
"MIGrAgEAAiEA6sZFpHqqFkpskc2GNMl6RHdiEuOqlX3LcW1TnYVgQFECAwEAAQIh\n"\
"AKqoe8FHJVJUwTzvMAo5FrU/t6Cc6GwYDELpU3xxs4nBAhEA+TwHM5ArwBgTtB2y\n"\
"AKlEKQIRAPElwlKWyde1KqHRCjOWX+kCEQDqWYZP9rUcp8cHKpDwTDiZAhBPldOd\n"\
"KDCzJRJN10yTm/RJAhANYsX4BteC/W7VRUjV5jSH\n"\
"-----END RSA PRIVATE KEY-----\n";
void main()
{
//msg[0] = 255;
if (RSA_private_encrypt(32, msg, msg,
PEM_read_bio_RSAPrivateKey(BIO_new_mem_buf(key, -1), NULL, NULL, NULL),
RSA_NO_PADDING) != 32)
{
ERR_load_crypto_strings();
ERR_error_string(ERR_get_error(), err);
puts(err);
}
}
Run Code Online (Sandbox Code Playgroud)
当我们通过删除注释来更改第0个消息字符的值时,加密失败并显示以下消息:
rsa routines:RSA_EAY_PRIVATE_ENCRYPT:data too large for modulus
Run Code Online (Sandbox Code Playgroud)
请注意,非常短的RSA密钥和硬编码的消息长度仅用于演示问题.密钥是使用openssl二进制生成的,并且function失败的密钥也不同(对于4096位密钥,the msg[0] = 192导致失败).
似乎函数将消息的开头解释为长度描述符,即使RSA_NO_PADDING …
bash ×4
linux ×4
html ×3
javascript ×2
arrays ×1
break ×1
busybox ×1
c ×1
cartesian ×1
css ×1
element ×1
encryption ×1
expect ×1
function ×1
graph ×1
grep ×1
inetd ×1
key ×1
lighttpd ×1
loops ×1
openssl ×1
perl ×1
pointers ×1
prompt ×1
regex ×1
rsa ×1
serial-port ×1
socat ×1
svg ×1
symlink ×1
telnet ×1
tftp ×1
xml ×1