小编Jos*_*ong的帖子

从github项目分发二进制文件的最佳实践是什么?

从github项目分发二进制文件的最佳实践是什么?

我能想到:

  • 在项目中创建一个bin文件夹,您可以在其中保留二进制文件的副本.但是,github用于存储源代码而不是二进制文件存储大量且经常更改的二进制文件可能是昂贵的季节空间和带宽?
  • 将二进制文件的副本上载到项目的github页面,或使用单独的网站来托管二进制文件.但是,这并不总是可行的,并且需要更多(手工)工作来保持二进制文件是最新的,我宁愿让二进制文件自动更新或使用单个操作.

binary github distribute

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

javascript剪切/复制/粘贴到剪贴板:谷歌是如何解决它的?

是的,这个问题一再被问到:如何使用javascript从系统剪贴板复制和粘贴到系统剪贴板?到目前为止,我发现只有部分解决方案和黑客攻击.之前经常被问到的原因是仍然没有可行的解决方案.但是,我看到Google Docs现在实际上有一个适用于键盘事件和按钮的工作解决方案.所以,这是可能的,但他们是如何做到的?软件沙拉文章,使用JavaScript访问系统剪贴板 - 圣杯?,给出了一个很好的问题概述(但它已经有几年了).

简而言之:

  • 您可以使用键盘事件ctrl + x,ctrl + c,ctrl + v来复制带有准备数据的隐藏文本区域中的文本,或者在隐藏字段中捕获粘贴文本然后使用它执行某些操作

  • 您可以通过Flash或Java Applet使用一些黑客将某些内容复制到系统剪贴板,而无需用户批准.

  • 你可以使用一个"真实"的解决方案,其中包含用于IE的clipboardData.setData和用于其他浏览器的execCommand,这取决于用户的批准.

知道Google如何解决剪贴板问题吗?

javascript clipboard copy paste

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

杰克逊的readValue和readTree:何时使用哪个?

我刚刚开始使用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遇到的解决方案,甚至更多的选择... …

java json jackson

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

将javascript和css内联放在一个缩小的html文件中以提高性能?

典型的网站包含一个index.html文件和一堆javascript和css文件.为了提高网站的性能,我们可以:

  • 缩小javascript和css文件,以减小文件大小.
  • 将javascript文件连接成一个文件,类似于css文件,以减少对服务器的请求数.对于像jquery这样的常用(和共享)库,将它们留在外部是有意义的,允许浏览器缓存库并在不同的Web应用程序中重用它.

我想知道将串联的javascript和css文件内联到单个html文件中是否有意义,这将进一步减少请求的数量.这会改善您网站的效果吗?或者它会反转,使浏览器无法缓存任何内容?

html javascript css performance minify

15
推荐指数
2
解决办法
6123
查看次数

在node.js中导出原型:module.exports = Prototype或exports.Prototype = Prototype?

在node.js中导出原型的首选方法是什么?您可以采取两种方法:

  1. 导出原型本身

    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)
  2. 将包含原型的对象导出为属性

    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对象的担忧.哪两个最好用,为什么?

prototype module export require node.js

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

计算数字有效位数的最快方法是什么?

计算数字有效位数的最快方法是什么?

我有以下功能,它可以工作,但由于字符串操作很慢.

/**
 * 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)

javascript

6
推荐指数
2
解决办法
3142
查看次数

是否在package.json中使用确切的版本号?

对于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.jsonpackage-lock.json,当今处理依赖版本号的最佳策略是什么?是否使用确切的版本?如果嵌套依赖项没有升级,我该如何处理它们的安全性问题?

node.js npm

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

SolidJS:输入字段在键入时失去焦点

我有一个关于 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)

arrays focus input solid-js

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

git是否巧妙地处理了一个zip存档,其中只有一个文件经常更改?

在我的一个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文件的情况吗?

git zip commit archive

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

如何使用hammer.js 2获得正确的事件传播?

我正在使用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 touch event-propagation hammer.js

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