小编Fir*_*Dib的帖子

socket.io仅向位于房间A和B的用户广播

是否可以对位于A房间和B房间的名称空间的所有用户进行socket.io广播,而不是那些只在A房间或B房间的用户?

如果没有,我将如何自己实施?有没有办法检索位于给定房间的命名空间中的所有用户?

我在节点中使用socket.io 1.0

编辑:如果没有本机方法,我将如何创建自己的语法,如: socket.broadcast.in('room1').in('room2').emit(...)

javascript sockets node.js socket.io

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

减少.NET编译为Wasm的占用空间

我正在使用Mono将C#编译为Wasm,以便在浏览器中使用它。运行以下命令会生成一堆DLL,一个wasm文件和一些JS文件。

csc /target:library -out:regex101.dll \
    /noconfig /nostdlib \
    \
    /r:$WASM_SDK/wasm-bcl/wasm/mscorlib.dll \
    /r:$WASM_SDK/wasm-bcl/wasm/System.dll \
    /r:$WASM_SDK/wasm-bcl/wasm/Facades/netstandard.dll \
    /r:$WASM_SDK/framework/WebAssembly.Bindings.dll \
    \
    regex101.cs

mono $WASM_SDK/packager.exe \
    --copy=always --out=./publish \
    regex101.dll
Run Code Online (Sandbox Code Playgroud)

如果将这些生成的js文件包含在网页中,则可以在浏览器中运行已转换的代码。但是,最终的大小(大约23个dlls + JS + Wasm)总共约为15mb,这非常大,我相信这是因为没有运行消除死代码的情况,并且包含了框架的很大一部分。

建议我运行一个链接器(请参阅https://github.com/firasdib/Regex101/issues/156#issuecomment-497281517)以执行无效代码消除,但是作为我的.NET新手,我不知道。不知道该怎么做。

任何帮助将非常感激。

.net c# mono webassembly

6
推荐指数
0
解决办法
208
查看次数

在textarea的Mimicng插入符号

我试图模仿textarea的插入符号,目的是创建一个非常轻量级的丰富文本区域.我不想使用像codemirror或任何其他大型库那样的东西,因为我不会使用它们的任何功能.

我有一个<pre>位于具有透明背景的textarea后面,所以我可以模拟文本中的突出显示效果.但是,我也希望能够更改字体颜色(因此它并不总是相同).所以我尝试color: transparent了textarea,它允许我以任何我想要的方式设置文本样式,因为它只出现在<pre>textarea后面的元素上,但插入符号消失了.

我已经让它工作得相当好,虽然它并不完美.主要的问题是当你按下一个键并且垃圾邮件那个角色时,插入符似乎总是落后于一个角色.不仅如此,它似乎相当资源丰富..

如果您在代码中看到需要改进的任何其他内容,请随时对此进行评论!

这是代码的小提琴:http://jsfiddle.net/2t5pu/25/

对于那些因任何原因不想访问jsfiddle的人来说,这里是完整的代码:

CSS:

textarea, #fake_area {
    position: absolute;
    margin: 0;
    padding: 0;
    height: 400px;
    width: 600px;
    font-size: 16px;
    font: 16px "Courier New", Courier, monospace;
    white-space: pre;
    top: 0;
    left: 0;
    resize: none;
    outline: 0;
    border: 1px solid orange;
    overflow: hidden;
    word-break: break-word;
    padding: 5px;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    -ms-box-sizing: border-box;
    box-sizing: border-box;
}
#fake_area {
    /* hide */
    opacity: 0;
}
#caret {
    width: 1px;
    height: …
Run Code Online (Sandbox Code Playgroud)

javascript textarea richtextbox caret

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

在 contenteditable div 中的 Enter 键上插入换行符

当我在可编辑的 div 中按 Enter 键时,我试图插入一个换行符,而不是浏览器想要插入的任何内容。

我当前的代码如下所示:

if (e.which === 13) {
        e.stopPropagation();
        e.preventDefault();

        var selection = window.getSelection(),
            range = selection.getRangeAt(0),
            newline = document.createTextNode('\n');

        range.deleteContents();
        range.insertNode(newline);
        range.setStartAfter(newline);
        range.setEndAfter(newline);
        range.collapse(false);
        selection.removeAllRanges();
        selection.addRange(range);
    }
Run Code Online (Sandbox Code Playgroud)

这似乎在 Chrome、Firefox 和 Safari 中有效,但在 Internet Explorer 中失败。

我的要求是它适用于最新版本的 Chrome/FF 和类似版本(几个版本也不错)和 IE10+。

我尝试了很多不同的东西,但似乎无法让它发挥作用。

任何帮助深表感谢!

编辑:为了澄清,我在 IE 中的错误是插入换行符时插入符不会移动,而是换行符似乎是在插入符之后添加的,这是奇怪的行为。但是,如果我按 Enter 一,然后使用箭头键向下移动到该行,然后再次开始按 Enter,它就会按预期工作。不能告诉我在这里做错了什么。

html javascript css jquery contenteditable

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

Webpack + postcss +主题+热重装

我想允许用户在我的网站上选择主题,他们将通过下拉菜单来做.我目前无法弄清楚如何支持这个功能,但没有编写愚蠢的代码.

我目前使用css-modules和postcss来让我的生活更轻松.Webpack用于将所有内容捆绑在一起.我在开发过程中使用热重新加载,在此期间我使用样式加载器.

完整配置如下所示

{
  test: /\.css$/,
  loader: !isDev
    ? ExtractTextPlugin.extract('style-loader', 'css-loader?sourcemap&minimize&modules&importLoaders=1&localIdentName=[name]-[local]-[hash:base64:5]!postcss-loader')
    : 'style-loader!css-loader?sourcemap&minimize&modules&importLoaders=1&localIdentName=[name]-[local]-[hash:base64:5]!postcss-loader'
},
Run Code Online (Sandbox Code Playgroud)

解决方案1

在body标记上放置一个classname以确定加载了哪个主题.然后,这用于从每个组件css内部选择正确的主题.这是非常乏味的,我想避免的,但它看起来像这样:

.myComponent {
  margin: 10px;
  width: 100px;
}

:global(.theme1) {
  .myComponent {
    background: $theme1_myComponent_background;
  }
}

:global(.theme2) {
  .myComponent {
    background: $theme2_myComponent_background;
  }
}
Run Code Online (Sandbox Code Playgroud)

这很快就会变成难以扩展和不可维护的东西,这就是为什么我要避免它.

解决方案2

为css生成预定义的静态包.当用户请求/main.css时,服务器上的处理程序确定要发送的主题(也许查询字符串),并将它们发送theme1-main.csstheme2-main.css或类似的规定.问题是我不知道如何支持开发环境.

关于这一点的好处是我的css文件不需要任何额外的和难以维护的逻辑:

.myComponent {
  margin: 10px;
  width: 100px;
  background: $myComponent_background;
}
Run Code Online (Sandbox Code Playgroud)

解决方案3

使用本机css变量.然后可以在运行时更新这些内容,这将反映已经加载的css并在生产和开发环境中正常工作.我的组件也看起来像(或类似)解决方案2.这里的问题是它们本身并没有得到广泛支持,我不确定是否有任何值得研究的polyfill会为我做这类事情.


总而言之,这些是我的想法.我还没有得出任何明确的结论,并希望得到关于如何解决这个问题的所有反馈.也许我正在考虑这一切都错了,并且有更好的方法来做我想做的事情.

提前致谢!

css themes reactjs webpack postcss

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

InfluxDB“按时间分组”移动时间

我有一个问题,这限制了我很多。我们正在尝试通过对时间进行分组来对我们的数据进行采样。我们有数百万个点,并希望在给定的间隔内获取每第 N 个点。我们已经实施了一个解决方案,该解决方案计算此间隔中的时间差,然后根据它进行分组以接收正确的点数。

SELECT last(value) as value FROM measurement WHERE time >= '...' AND time <= '...' GROUP BY time(calculated_time) fill(none)

返回的点数似乎是正确的,但日期不正确。

查看以下结果:

无采样

> SELECT value FROM "measurement" WHERE time >= '2016-01-01T00:00:00Z' AND time <= '2017-01-01T00:00:00Z' LIMIT 5;
name: measurement
time                 value
----                 -----
2016-01-01T00:00:00Z 61.111
2016-01-01T01:00:00Z 183.673
2016-01-01T02:00:00Z 200
2016-01-01T03:00:00Z 66.667
2016-01-01T04:00:00Z 97.959
Run Code Online (Sandbox Code Playgroud)

带采样

> SELECT last(value) as value FROM "measurement" WHERE time >= '2016-01-01T00:00:00Z' AND time <= '2017-01-01T00:00:00Z' GROUP BY time(23m) fill(none) LIMIT 5;
name: measurement
time …
Run Code Online (Sandbox Code Playgroud)

database sample time-series influxdb

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

是否可以在 React 中创建自定义事件?

我们在反应事件方面遇到了一个特定问题,这与不同设备和浏览器上可用的不同事件类型有关。目前,我们必须在每个组件上附加多个事件来填补空白,例如onMouseMoveonTouchMove等。

新的 PointerEvents 应该可以解决这个问题,但它们在旧版浏览器中不可用,这意味着我们无法使用它们。

是否有可能以某种方式创建我们自己的事件类型,我们将其附加到我们的反应组件,该组件在后台处理这个逻辑?

<Element onCustomEvent={...} />

谢谢!

javascript events reactjs

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

突出显示输入框内的括号

我试图根据括号的级别以及它们是否匹配来突出显示括号。所以第一级得到下面的类paren_1,第二级得到paren_2,依此类推。我还想突出显示插入符号旁边的一组括号(如果有的话)。这意味着如果括号旁边有插入符号(左括号或右括号),它应该突出显示该括号及其对应的括号。我的(损坏的)实现如小提琴所示。

这效果相当好。问题如下

  1. 如果输入字符串中有 HTML,那么一切都会崩溃。我尝试在使用 发送 html 之前对其进行转义jQuery('<div />').text(text).html(),这有效,但破坏了插入符位置。
  2. 如果“同一级别”上有多个括号,并且插入符号位于一组括号旁边,则它会突出显示超出应有的内容。
  3. 如果有不匹配的括号,则应以红色或类似的颜色突出显示。这也不起作用,我不知道如何实现它。我已经尽力了,但一切都失败了。

JSFiddle: http: //jsfiddle.net/yWzWV/1/

请大家注意:我对 javascript 或 jquery 都不太擅长,所以如果这段代码让你眼睛流血,请原谅我。

提前致谢!

javascript jquery syntax-highlighting parentheses

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

python(flask)中函数的最大执行时间

我试图限制允许函数在python(flask)中运行的时间.它看起来像这样:

def my_function:
    try:
        long_function_time()
    catch TimeOutException:
        return "Function took too long to execute"

def long_function_time:
    #stuff here
Run Code Online (Sandbox Code Playgroud)

我最初尝试使用信号,但被告知这不是一个好方法,因为烧瓶在线程环境中运行.我希望最大执行时间灵活,以便我可以轻松地更改它.

我目前使用的代码(有时不起作用,不知道为什么):

class TimedOutExc(Exception):
  pass

def deadline(timeout, *args):
  def decorate(f):
    def handler(signum, frame):
      signal.alarm(0)
      raise TimedOutExc()

    def new_f(*args):

      signal.signal(signal.SIGALRM, handler)
      signal.alarm(timeout)
      return f(*args)

    new_f.__name__ = f.__name__
    return new_f
  return decorate
Run Code Online (Sandbox Code Playgroud)

提前致谢!

python flask

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

如何将用python编写的函数编译成JavaScript(emscripten)?

我有一个用python编写的简单函数,我想将其移植到javascript.

我已经将python 2.7编译成.so库,所以这不是问题.

我遇到的问题是,在用cython编译我的程序后,函数名称变得全乱,这意味着我不知道如何在运行emcc时保留这些函数.

有没有人有任何使用emscripten编译python程序到js的经验?

任何信息,将不胜感激.

注意:我想保留python的确切功能,我不想要将python程序转换为javascript的东西.

javascript python cython emscripten

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

计算文本选择的xy位置

我正在尝试使用DOM元素创建自己的文本选择.是的,我的意思是当您在此元素中选择它时,您在文本后面看到的蓝色背景.我们的想法是暂停默认行为(蓝色)并使用我自己的元素来完成工作,方法是找到选择的xy位置,然后放置绝对定位元素.我希望能够定期做到这一点div.

我想我需要3个元素.一个用于顶行(可能是不完整的),一个用于中间块,​​一个用于最后一个(与顶部相同).这是一张可以帮助您理解的图片: 图像显示了所需的选择元素

我一直在考虑捕捉mouseup/down然后mousemove再检查,window.getSelection()但到目前为止,我无法到达任何地方.

使用CSS ::selection将无法工作,因为该元素将没有焦点.

我感谢所有帮助!提前致谢.

编辑:偶然发现https://code.google.com/p/rangy/可能会有所帮助?有这个插件经验的人吗?

Edit2:需要跨浏览器支持.

html javascript textselection

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