从github项目分发二进制文件的最佳实践是什么?
我能想到:
是的,这个问题一再被问到:如何使用javascript从系统剪贴板复制和粘贴到系统剪贴板?到目前为止,我发现只有部分解决方案和黑客攻击.之前经常被问到的原因是仍然没有可行的解决方案.但是,我看到Google Docs现在实际上有一个适用于键盘事件和按钮的工作解决方案.所以,这是可能的,但他们是如何做到的?软件沙拉文章,使用JavaScript访问系统剪贴板 - 圣杯?,给出了一个很好的问题概述(但它已经有几年了).
简而言之:
您可以使用键盘事件ctrl + x,ctrl + c,ctrl + v来复制带有准备数据的隐藏文本区域中的文本,或者在隐藏字段中捕获粘贴文本然后使用它执行某些操作
您可以通过Flash或Java Applet使用一些黑客将某些内容复制到系统剪贴板,而无需用户批准.
你可以使用一个"真实"的解决方案,其中包含用于IE的clipboardData.setData和用于其他浏览器的execCommand,这取决于用户的批准.
知道Google如何解决剪贴板问题吗?
我刚刚开始使用Jackson JSON库.杰克逊是一个非常强大的库,但它有一个非常广泛的API.很多事情可以通过多种方式完成.这使得很难在杰克逊找到自己的方式 - 如何知道什么是正确/最好的做事方式?
我为什么要使用这个解决方案:
String json = "{\"a\":2, \"b\":\"a string\", \"c\": [6.7, 6, 5.6, 8.0]}";
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readValue(json, JsonNode.class);
if (node.isObject()) {
ObjectNode obj = mapper.convertValue(node, ObjectNode.class);
if (obj.has("a")) {
System.out.println("a=" + obj.get("a").asDouble());
}
}
Run Code Online (Sandbox Code Playgroud)
通过这样的解决方案:
String json = "{\"a\":2, \"b\":\"a string\", \"c\": [6.7, 6, 5.6, 8.0]}";
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(json);
if (node.isObject()) {
ObjectNode obj = (ObjectNode) node;
if (obj.has("a")) {
System.out.println("a=" + obj.get("a").asDouble());
}
}
Run Code Online (Sandbox Code Playgroud)
或者我使用JsonFactory和JsonParser遇到的解决方案,甚至更多的选择... …
典型的网站包含一个index.html文件和一堆javascript和css文件.为了提高网站的性能,我们可以:
我想知道将串联的javascript和css文件内联到单个html文件中是否有意义,这将进一步减少请求的数量.这会改善您网站的效果吗?或者它会反转,使浏览器无法缓存任何内容?
在node.js中导出原型的首选方法是什么?您可以采取两种方法:
导出原型本身
function A () {
}
module.exports = A;
Run Code Online (Sandbox Code Playgroud)
用作:
var A = require('./A.js');
var a = new A();
Run Code Online (Sandbox Code Playgroud)将包含原型的对象导出为属性
function A () {
}
exports.A = A;
Run Code Online (Sandbox Code Playgroud)
用作:
var A = require('./A.js').A;
var p = new A();
Run Code Online (Sandbox Code Playgroud)第一个解决方案对我来说看起来更方便,但我知道有关于替换exports对象的担忧.哪两个最好用,为什么?
计算数字有效位数的最快方法是什么?
我有以下功能,它可以工作,但由于字符串操作很慢.
/**
* Count the number of significant digits of a number.
*
* For example:
* 2.34 returns 3
* 0.0034 returns 2
* 120.5e+3 returns 4
*
* @param {Number} value
* @return {Number} The number of significant digits
*/
function digits (value) {
return value
.toExponential()
.replace(/e[\+\-0-9]*$/, '') // remove exponential notation
.replace( /^0\.?0*|\./, '') // remove decimal point and leading zeros
.length
};
Run Code Online (Sandbox Code Playgroud)
有更快的方法吗?
更新:此处列出了测试正确运行的断言:
assert.equal(digits(0), 0);
assert.equal(digits(2), 1);
assert.equal(digits(1234), 4);
assert.equal(digits(2.34), 3);
assert.equal(digits(3000), 1); …
Run Code Online (Sandbox Code Playgroud) 对于package.json中npm依赖项的版本号,通常的做法是输入确切的版本号(例如1.2.4
),而不是输入不准确的版本号(例如^1.2.4
,这样可以安装bug修复版本1.2.5
),以确保以后的安装不会因更改而中断依赖关系(例如,参见本文)。
使用确切的版本号有一个缺点,即您不能自动更新依赖项的错误修复版本。当它的嵌套依赖项具有安全修复程序或错误修复程序时,这是一个问题。例如,此时程序包karma-browserstack-launcher
使用browserstack
,它使用的版本已https-proxy-agent
包含安全漏洞。这现在变得非常明显,npm audit
这要归功于它在依赖项中查找安全性问题。
一段时间以来,我们有了package-lock.json
,用于锁定所有依赖项的版本号。这可能会改变我们处理中确切或不准确的版本号的方式package.json
。
我的问题是:给定package.json
和package-lock.json
,当今处理依赖版本号的最佳策略是什么?是否使用确切的版本?如果嵌套依赖项没有升级,我该如何处理它们的安全性问题?
我有一个关于 SolidJS 的新手问题。我有一个包含对象的数组,例如待办事项列表。我将其呈现为一个列表,其中包含输入字段以编辑这些对象中的属性之一。当在其中一个输入字段中输入内容时,输入会直接失去焦点。
如何防止输入时失去焦点?
以下是演示该问题的 CodeSandbox 示例:https://codesandbox.io/s/6s8y2x ?file=/src/main.tsx
这是演示该问题的源代码:
import { render } from "solid-js/web";
import { createSignal, For } from 'solid-js'
function App() {
const [todos, setTodos] = createSignal([
{ id: 1, text: 'cleanup' },
{ id: 2, text: 'groceries' },
])
return (
<div>
<div>
<h2>Todos</h2>
<p>
Problem: whilst typing in one of the input fields, they lose focus
</p>
<For each={todos()}>
{(todo, index) => {
console.log('render', index(), todo)
return <div>
<input
value={todo.text}
onInput={event => {
setTodos(todos …
Run Code Online (Sandbox Code Playgroud) 在我的一个git项目中,我有一个zip文件,它捆绑了一组java库.zip文件是4.5MB,包含11个文件.只有一个包含的库定期更改,我正在处理的库(大约50KB).其他库是静态的.
如果git聪明地只更改zip文件中的这个小变化,并且不会在每次提交时替换整个zip文件,那将是很棒的.否则,我的git存储库将会非常迅速地增长.
当我更新我的库并重新创建zip文件,并提交+推送更改时,我注意到git将对象以<100KB的顺序写入服务器,如"编写对象:100%(58/58),77.64 KiB,完成了." .所以它看起来像git聪明地只发送zip的更改部分,而不是一次又一次发送整个4.5MB的zip文件.
确实是git聪明地处理zip文件的情况吗?
我正在使用Hammer.js 2.0.4,我有两个hammerjs实例来监听tap
事件:在父div元素中,在子元素中有一个.我希望在孩子处理时停止事件传播.但是,hammer.js 2不支持.
在下面的示例中,我希望tap
子事件的事件首先触发,然后触发父事件的事件(事件从子节点冒泡到父节点).相反,它看起来像第一个创建的hammer.js 实例的tap
事件首先触发.
尝试以下示例(也在jsbin上):
<!DOCTYPE html>
<html>
<head>
<script src="//cdn.jsdelivr.net/hammerjs/2.0.4/hammer.js"></script>
<style>
#child {
width: 200px;
height: 200px;
background: lightgreen;
}
</style>
</head>
<body>
<p>
See the browser console. Why does the tap event of the parent div fire first?
</p>
<div id="parent">
<div id="child">click here</div>
</div>
<script>
var hammerParent = new Hammer(document.getElementById('parent'));
var hammerChild = new Hammer(document.getElementById('child'));
hammerParent.on('tap', function (event) {
console.log('tap parent');
});
hammerChild.on('tap', …
Run Code Online (Sandbox Code Playgroud) javascript ×4
node.js ×2
archive ×1
arrays ×1
binary ×1
clipboard ×1
commit ×1
copy ×1
css ×1
distribute ×1
export ×1
focus ×1
git ×1
github ×1
hammer.js ×1
html ×1
input ×1
jackson ×1
java ×1
json ×1
minify ×1
module ×1
npm ×1
paste ×1
performance ×1
prototype ×1
require ×1
solid-js ×1
touch ×1
zip ×1