小编Ulr*_*rik的帖子

具有笛卡尔坐标系的简单可扩展SVG图

我是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)

html svg transformation graph cartesian

6
推荐指数
1
解决办法
2905
查看次数

使用 socat 进行原始串行连接

目标是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在那里失败。所以我的想法是绑定ttyS2cons0,但后来我发现了许多问题,如无法退出(ctr+cctr+q ctr+]甚至esc无法正常工作),backspacedelete没有工作,来信使一些试验和错误后输入两次,等等,我想出了这个:

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 option
  • echo=0两侧防止key press加倍
  • crnl两侧防止enter key press加倍
  • escape=0x03允许我quitctr+c

问题是,当我退出时,我cons0全神贯注,好像它以某种方式保留了raw,echo=0,crnl设置。我知道这个问题对于我的场景来说可能太具体了,但我只需要一种简单的方法来像我一样将击键发送到串行putty(这在我的平台上不可用)。我使用socat它是因为它非常轻量级,不需要任何额外的库,并且因为显示的命令是使用expect.

任何想法和建议都非常感谢。

linux bash serial-port socat

6
推荐指数
1
解决办法
9370
查看次数

通过 tftp 访问符号链接

我正在使用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 可以处理符号链接吗?我究竟做错了什么?

linux symlink inetd tftp

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

Bash间接引用关联数组

在这个非常简单的示例中,我需要解决数组元素的键和值:

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)

该函数必须以与之前的示例循环相同的格式显示输出,并且它应该接收数组名称,键列表或值,所有这些都是我尝试过的,但没有成功.任何建议都非常感谢.

arrays bash pointers associative-array key

5
推荐指数
2
解决办法
1544
查看次数

使用JavaScript XHR列出服务器目录

当我问问题可以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)

html javascript xml lighttpd xmlhttprequest

5
推荐指数
1
解决办法
3258
查看次数

JavaScript对整个元素类的高效样式更改

在一个非常常见的场景示例中,我们需要更改整个元素类的样式,我们有一个(简化的和通用的)代码,如下所示:

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)

被检查的代码是完全相同的,但是对于性能,我可能需要让它改变数千个元素的样式,以便我可以测量任何显着的差异.是否有任何好的,充分论证的理由为什么我们应该支持一种方法而不是另一种方法呢?

html javascript css element

5
推荐指数
1
解决办法
158
查看次数

在期望脚本中等待提示

我需要一个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>" ].

prompt telnet expect

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

打破循环的 Bash 函数

我做了一个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 倍以上的情况下解决此问题?

linux bash loops function break

4
推荐指数
2
解决办法
2420
查看次数

两个分隔符之间的grep子字符串

我有很多bash脚本使用perl表达式grep来提取两个分隔符之间的子字符串.例:

echo BeginMiddleEnd | grep -oP '(?<=Begin).*(?=End)'
Run Code Online (Sandbox Code Playgroud)

问题是,当我将这些脚本移植到运行的平台时busybox,"集成" grep无法识别-P开关.是否有一种干净的方法来使用grepregular expressions

编辑:没有perl,sedawk在该平台上.这是一个轻量级linux.

regex bash perl grep busybox

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

RSA_private_encrypt中可能存在的错误

在下面的示例中,我们使用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 …

c linux encryption openssl rsa

2
推荐指数
1
解决办法
307
查看次数