小编Mev*_*via的帖子

谷歌Chrome控制台,打印图像

大约一年前,我创建了一个增强控制台日志的插件,主要思想是在控制台中打印图像,例如,您可以添加一些图标或字形.

它工作得非常好,我看到现在有许多在线可用.问题是他们都没有工作.

我认为,在最后一次Chrome更新后我注意到了它.目前我有版本49.0.2623.112.

包括我在内的所有插件都以相同的方式工作:

console.log("%c" + dim.string, dim.style + "background: url(" + url + "); background-size: " + (this.width * scale) + "px " + (this.height * scale) + "px; color: transparent;");
Run Code Online (Sandbox Code Playgroud)

例如这一个:github上的插件链接

有谁知道我们如何在较新版本的chrome中在控制台中打印图像?

javascript google-chrome

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

使用 plugin-transform-runtime 后未定义 require

我正在尝试创建一个简单的 ui 窗口,我可以在其中快速测试 React 代码。所以这个想法是我在窗口中输入 react jsx 代码,而在另一个窗口中,我正在从该代码渲染应用程序。

输入(带有 react jsx 代码)被发送到 nodejs 进程,该进程将其转换为可以在浏览器 react 库中处理的普通 js 代码。我遇到的问题是这个错误regeneratorRuntime is not defined

我目前的代码:

const babel = require("@babel/core");

// body comes from window input

console.log(
    babel.transform(body, {
        "presets": ["@babel/env", "@babel/react"],
        "plugins": ["@babel/plugin-proposal-class-properties"]
    }).code
);
Run Code Online (Sandbox Code Playgroud)

我读了几个关于这个错误的主题,大多数似乎建议添加 "@babel/plugin-transform-runtime"

所以它变成:

console.log(
    babel.transform(body, {
        "presets": ["@babel/env", "@babel/react"],
        "plugins": ["@babel/plugin-proposal-class-properties", "@babel/plugin-transform-runtime"]
    }).code
);
Run Code Online (Sandbox Code Playgroud)

但是此时 babel 转换返回的代码在开头包含这些:

"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));

var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));

var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));

var …
Run Code Online (Sandbox Code Playgroud)

node.js reactjs babeljs

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

node.js只强制一个线程执行代码

当我启动我的应用程序时node app.js,运行的进程只有一个线程.无论运行的时间越长,为该进程制作的线程越多.问题是,当我想执行这样的特定代码时:

var io = require('socket.io')(process.env.PORT);
Run Code Online (Sandbox Code Playgroud)

它失败是因为信号是从多个线程发送的,因此代码未成功执行.

简单测试,如果这样做:

var io = require('socket.io')(9001);
var io = require('socket.io')(9002);
var io = require('socket.io')(9003);
var io = require('socket.io')(9004);
Run Code Online (Sandbox Code Playgroud)

它工作正常,但这段代码:

var cPort = 9001;
setInterval(function() {
    var io = require('socket.io')(cPort);
    cPort++;
}, 1000 * 60 * 2); // 1 sec * 60 seconds * 2 = 2 minutes interval
Run Code Online (Sandbox Code Playgroud)

不会被执行,因为2分钟后节点将有许多线程,他们都试图执行代码 - 因此你会看到error: address in use.

因此,尽管运行相同文件的多线程进程,我怎么能强制节点只执行一次这个代码?

06.11.2017编辑----

澄清问题:

我在问题中的意思是,我没有资源问题,如果我一次启动所有服务器(例如40台服务器),它们都已成功启动并无限期地工作.如果我只启动一个服务器,然后运行在需要时自动启动更多的代码,则会出现问题.在那一点上我总是看到address in use错误,显然地址在代码执行的时刻没有被使用.目前,我必须在周末手动启动更多服务器,因为有更多人在一周的其他日子使用服务和更少的服务器,我想创建基于人口启动和关闭服务器的自动化系统.

这是服务器启动的代码:

var cp = require('child_process'),
    servers = [], …
Run Code Online (Sandbox Code Playgroud)

javascript multithreading node.js socket.io

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

php,strpos从字符串中提取数字

我有一个巨大的HTML代码来扫描.到目前为止,我一直在使用preg_match_all从中提取所需的部件.从一开始的问题是它耗费了极大的CPU时间.我们最终决定使用其他一些方法进行提取.我读了一些preg_match可以在性能上进行比较的文章strpos.他们声称strpos击败正则表达式扫描仪的效率高达20倍.我以为我会尝试这种方法,但我真的不知道如何开始.

让我说我有这个HTML字符串:

<li id="ncc-nba-16451" class="che10"><a href="/en/star">23 - Star</a></li>
<li id="ncd-bbt-5674" class="che10"><a href="/en/moon">54 - Moon</a></li>
<li id="ertw-cxda-c6543" class="che10"><a href="/en/sun">34,780 - Sun</a></li>
Run Code Online (Sandbox Code Playgroud)

我想只从每个id中提取数字,只从a标签内容中提取文本(字母).所以我做这个preg_match_all扫描:

'/<li.*?id=".*?([\d]+)".*?<a.*?>.*?([\w]+)<\/a>/s'

在这里你可以看到结果:LINK

现在,如果我想将我的方法替换为strpos功能,该方法将如何?据我所知,strpos返回匹配发生的起始索引.但我怎么能用它来:

  • 获得所有可能的匹配,而不仅仅是一个
  • 从字符串中的所需位置提取数字或文本

感谢您的所有帮助和提示;)

php regex strpos

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

将带有缓冲区的着色器程序从 Shaderoy 移植到 Three.js

我最近正在尝试和学习 webgl 和着色器,因为我正在尝试为网站背景构建动画。我能够将简单的示例从 Shaderoy 移植到 Three.js 中来使用它。现在我试图更好地理解更高级的示例,并且我正在努力解决这个特定的示例:

https://www.shadertoy.com/view/4sfBWj

我知道要将着色器程序移植到 Three.js,您需要:

  1. 创建三个.js 基本设置new THREE.PlaneGeometry()
  2. iTime为和制作制服iResolution
  3. 创建顶点和片段着色器脚本标签
  4. 使用shadertoy内容填充片段着色器(图像部分)
  5. 使用通用脚本填充顶点着色器
  6. 将名称更改为gl_FragColorgl_FragCoord
  7. 将函数名称更改为void main(void)

如果一个或多个通道中使用了某种纹理,那么

  1. 加载纹理并new THREE.TextureLoader()为其创建统一的iChannel0

基本的例子可以很好地配合上面的例子。然而我链接的有:

  • 缓冲液A
  • 缓冲液B

这两个都还包括着色器程序和运行它们的主要函数,我该如何处理它才能将其移植到 Three.js?

我目前的进展:

var container;
var camera, scene0, scene1, scene2, renderer;
var uniforms0, uniforms1, uniforms2;
var startTime;
var renderTarget0, renderTarget1;

var clock = new THREE.Clock();

init();
animate();

function init() {
	container = document.getElementById( 'container' );
	startTime = Date.now();
	camera = new THREE.Camera();
	camera.position.z = …
Run Code Online (Sandbox Code Playgroud)

javascript shader glsl webgl three.js

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

PHP逻辑运算符"&&"和"||" 同时构建简单的安全功能

几天前,我开始为我的项目实现简单的安全功能,以防止用户查看其他用户添加到数据库的客户.当我这样做时,我感到困惑,因为我意识到标准的逻辑运算符以奇怪的方式工作.

这是我最初写的代码:

if($current_user_id != $session_user_id || access_level($session_user_id) != 3) {
    header('Location: logout.php');
    exit();
}
Run Code Online (Sandbox Code Playgroud)

这意味着,如果您尝试查看的存储客户不属于您或您的访问级别不是3(管理员),您将被注销.它应该按照这样工作:

http://www.w3schools.com/php/php_operators.asp

他们说这||意味着"如果条件1或条件2都是真的则为真",所以如果任何条件没有失败,它应该允许访问.当然不是,脚本表现为只写入第一个条件,这意味着如果您是管理员,那么您的访问级别为3而您正在查看的不是您的客户 - 您仍然会被注销.

这是一个小的修改,开始工作:

if($current_user_id != $session_user_id && access_level($session_user_id) != 3) {
    header('Location: logout.php');
    exit();
}
Run Code Online (Sandbox Code Playgroud)

切换到&&"如果条件1和条件2都为真,则为真",它开始正常工作,这意味着您可能不是客户的所有者,但如果您是管理员,您将被允许访问而不会注销.

在这一点上,我害怕我向后理解它,有人可以解释为什么它看起来不合逻辑吗?它究竟是如何工作的?先感谢您.

php

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

输入的 jQuery 事件处理程序(类型文本)

我试图准备一些功能来过滤和排序通过 ajax 从数据库返回的数据,但我无法解决一个问题。

我在许多网站和 Web 应用程序上看到过非常有趣的处理文本输入字段的方式,它的工作方式就像你输入一些内容,当你输入时什么也没有发生,但如果你停下来 3 秒钟,它就会启动并执行 ajax 请求,所以我开始尝试许多内置 jquery 函数,但似乎没有一个是这样工作的。

keyup激发你提供给现场的每个角色,因此不行

change需要您单击字段外部才能启动,这是糟糕的解决方案

mouseleave不适用于文本输入字段,当您离开输入时什么也不会发生

mouseout好吧,这个有效,当我将鼠标移出字段时,它会启动,但每次用户调整他的研究以将鼠标移入和移出时,它仍然需要用户,这比change方法更糟糕

input, keypress,keydown工作原理相同,因为keyup它们只是外观上的差异,但方法保持不变,所以不用去

因此,我想要实现的方法是在您停止打字后一段时间启动的方法,并且不需要任何鼠标移动或单击,尽管我不知道如何处理它。

超文本标记语言

<input type="text" class="adjust" />
Run Code Online (Sandbox Code Playgroud)

JavaScript

$('.adjust').on('change', function() {
    alert('event has fired');
});
Run Code Online (Sandbox Code Playgroud)

如果有人愿意帮忙,我准备了一些初步的 jsfiddle 来进行实验:

http://jsfiddle.net/eag9e/

jquery

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

等待Promises.all SyntaxError

根据这篇文章:https://medium.com/@bluepnume/learn-about-promises-before-you-start-using-async-await-eb148164a9c8

似乎可以使用以下语法:

let [foo, bar] = await Promise.all([getFoo(), getBar()]);
Run Code Online (Sandbox Code Playgroud)

用于多个承诺执行.但是在使用它的时候我得到了Uncaught SyntaxError: Unexpected identifier.

我如何使用async/awaitpromise.all实现多个同时执行的操作,并通过响应解决.

----- EDITED

我在里面使用的功能promise.all就是这个:

async function getJson(callback) {
    try {
        let response = await fetch('URL_LINK_HERE');
        let json = await response.json();
        return json;
    } catch(e) {
        console.log('Error!', e);
    }
}
Run Code Online (Sandbox Code Playgroud)

作为测试领域,我正在使用谷歌浏览器版本 60.0.3112.113

javascript async-await

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