小编Las*_*ssi的帖子

<button type ="button">有什么意义?

是否<button type="button>有一个简单<button>的空白或缺少type属性?MDN和HTML5规范说,这type=button是用于触发自定义JavaScript的按钮,但是<button>默认情况下这不是什么?

html javascript

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

在Racket程序中使用Scheme库

我用Racket编写了一个程序(源代码在顶部的.rkt文件中#lang racket)。我还用(主要)便携式R7RS Scheme写了一个库。我可以以干净的方式在程序中使用该库吗?

我的目标是使该库在Scheme实现之间具有广泛的可移植性(至少是与R7RS兼容的实现,理想情况下还应是其他实现)。Racket有一个第三方R7RS填充程序,但据我所知,它要求我#lang r7rs在源文件的顶部键入内容。我猜想该#lang指令会使Racket之外的Scheme感到困惑。

我可以将库的核心放在一个或多个可移植的.scm源文件中,然后.rkt使用#lang r7rs指令告诉Racket以某种方式包括可移植文件的文件来包含一个文件吗?Racket是否了解某种库定义文件,例如.sld用在雪地上的库定义文件?

我试图浏览整个Racket文档,但在任何地方都找不到。我也没有找到通用的计划可移植性常见问题解答或最佳做法文档。

scheme racket

8
推荐指数
1
解决办法
273
查看次数

有没有没有文件名的 shm_open() 之类的东西?

POSIXshm_open()函数返回可用于访问共享内存的文件描述符。这非常方便,因为可以使用所有传统的控制文件描述符的机制来控制共享内存。

唯一的缺点是shm_open()总是需要一个文件名。所以我需要这样做:

// Open with a clever temp file name and hope for the best.
fd = shm_open(tempfilename, O_RDWR | O_CREAT | O_EXCL, 0600);

// Immediately delete the temp file to keep the shm namespace clean.
shm_unlink(tempfilename);

// Then keep using fd -- the shm object remains as long as there are open fds.
Run Code Online (Sandbox Code Playgroud)

这种使用tempfilename很难便携和可靠地进行。文件名的解释(命名空间是什么,权限的处理方式)因系统而异。

在许多情况下,使用共享内存对象的进程不需要文件名,因为只需将文件描述符从一个进程传递到另一个进程,就可以更简单、更安全地访问该对象。那么有没有类似shm_open()但可以在不触及共享内存文件名命名空间的情况下使用的东西?

mmap()withMAP_ANON|MAP_SHARED很棒,但它不是文件描述符,而是提供了一个指针。指针不能在 exec 边界上存活,也不能像文件描述符那样通过 Unix 域套接字发送到另一个进程。

shm_open()默认情况下,由 返回的文件描述符也不会在 exec 边界中存活:POSIX 定义表示设置了与新文件描述符关联的 FD_CLOEXEC …

unix posix shared-memory

8
推荐指数
1
解决办法
1887
查看次数

从 JavaScript 加载图像时出现 304 Not Modified

在我的页面上,我有以下使用 jQuery 的 JavaScript:

$("#my-div").append($("<img>", {src: "/api/userimage/"+imageHash}));
Run Code Online (Sandbox Code Playgroud)

当服务器返回200 OK图像时它工作正常,但当它返回时则不行304 Not Modified。在后一种情况下,浏览器仅显示“损坏的图像”占位符。

如何让浏览器在出现 304 错误时从缓存中获取图像?我不想使用技巧来绕过缓存,因为缓存未更改的图像正是我想要的。

对于其他资源(.js 和 .css 文件),服务器还会返回 304。这些工作正常,因为它们直接来自静态 HTML 标记,而不是来自 JavaScript。如果重要的话,我正在使用 HTTPS。

如果从上述描述中解决方案不明显,我可以提供更多详细信息。

javascript jquery http http-status-codes browser-cache

5
推荐指数
0
解决办法
1637
查看次数

存在哪些 GZip 额外字段子字段?

RFC 1952(GZIP 文件格式规范第 2.3.1.1 节内容如下:

2.3.1.1. Extra field

   If the FLG.FEXTRA bit is set, an "extra field" is present in
   the header, with total length XLEN bytes.  It consists of a
   series of subfields, each of the form:

      +---+---+---+---+==================================+
      |SI1|SI2|  LEN  |... LEN bytes of subfield data ...|
      +---+---+---+---+==================================+

   SI1 and SI2 provide a subfield ID, typically two ASCII letters
   with some mnemonic value.  Jean-Loup Gailly
   <email@hidden> is maintaining a registry of subfield
   IDs; please send …
Run Code Online (Sandbox Code Playgroud)

gzip file-format

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

在Emacs中正确缩进Clojure的"匹配"

我正在使用Clojure-mode和CIDER运行Emacs 24.5,而match来自core.match的宏是自动缩进的.

匹配子句被推到了极右,就像普通的函数参数一样:

(match [1 2]
       [1 _] "one"
       :else "two")
Run Code Online (Sandbox Code Playgroud)

短2空格缩进会更好:

(match [1 2]
  [1 _] "one"
  :else "two")
Run Code Online (Sandbox Code Playgroud)

什么是正常的方式使Emacs缩进match(和其他常见的特殊情况)?

emacs clojure

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

在 RISC-V 上在大端和小端之间转换

在汇编语言级别处理 RISC-V 中大端值的最简单方法是什么?也就是说,如何将内存中的 big-endian 值加载到寄存器中,以 native-endian(little-endian)的形式处理寄存器值,然后以 big-endian 的形式将其存储回内存。16、32 和 64 位值用于许多网络协议和文件格式。

我找不到一个字节交换指令(相当于BSWAP对ARM x86或REV)的手册中,也没有任何关于大端加载和存储。

assembly endianness riscv

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

为什么Clojure中没有多个返回值

Clojure中缺少多重回报价值支持的理由是什么?(Clojure似乎与Common Lisp的values/ 相似multiple-value-bind

在函数式编程风格中,显式解构是否被认为更惯用了?它是否与JVM有关,还是仅仅是因为它太复杂而得不到什么收益?

clojure

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

是否可以编写一个在迭代器上折叠的const函数?

是否可以编写一个在迭代器上折叠的const函数?当我尝试:

const fn foo(s: &str) -> u64 {
    return s.chars().fold(0, |accumulator, char| -> u64 {
        return accumulator ^ (char as u64);
    });
}
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误:

const fn foo(s: &str) -> u64 {
    return s.chars().fold(0, |accumulator, char| -> u64 {
        return accumulator ^ (char as u64);
    });
}
Run Code Online (Sandbox Code Playgroud)

我想我的匿名函数|x, y| -> x { ... }是作为函数指针传递给的fold(),这就是导致错误的原因。

我可以传递给fold这里某种类型的const lambda吗,还是可以只使用for循环并在可变变量中累积结果,然后从foo函数中返回?我完全没有Rust的经验...

const rust

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