小编Bra*_*roy的帖子

具有变量,事件和DOM操作的多个jQuery实例

我正在开发一个项目,最初只是构建一个带有参数(XML文件)的函数,并将其转换为HTML/CSS结构(此处可以找到早期版本).这很有效.但是,我想实现更多选项和更多灵活性.我读过的主题(如1,2,3),但我不能换我的头周围.

我的插件有很多特定于实例的需求:

  • 变量
  • 选项
  • 事件处理程序

并且有一些重要的选择:

  • 显示全屏版本
  • 显示正常版本(附带"打开fs版本"按钮)
  • 指定正常版本的容器
  • 设置普通版本的fontsize
  • 为fs版本设置可能的字体大小(用于放大和缩小树)
  • 设置一个类,当用户单击具有该类的元素时,将打开fs版本

我将描绘插件当前状态的基本结构.

两个第一选项是最重要的选项.但默认为true,如果用户同时打开它们false,则插件将不会执行.

然后,插件会分配全局变量,并根据此信息创建新的DOM元素.在实践中它看起来像这样(注意全局变量在我的脚本的顶部声明).

function initVars(args) {
    fontsizes = fsFontSizes;
    errorContainer = $(".tv-error");
    var trees = [],
        tooltips = [];

    if (args.normalView) {
        normalView = true;
        $(args.container).append('<div id="tree-visualizer" style="display: none"></div>');
        SS = $("#tree-visualizer");
        var SSHTML = '<div class="tv-error" style="display: none"><p></p></div>' +
            '<div class="tree" style="font-size: ' + args.fontSize + 'px;"></div>' +
            '<aside class="tooltip" style="display: none"><ul></ul>' +
            '<button>&#10005;</button></aside>';
        if …
Run Code Online (Sandbox Code Playgroud)

jquery global-variables instance-variables jquery-plugins

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

即使内容的大小不同,也请使用flexbox并保持1:1的宽高比

关于维护元素的宽高比(使用flexbox或不使用),有很多问题.但是,我的问题略有不同,因为我想覆盖子图像元素的宽高比:

  1. 确保图像object-fit: cover完全覆盖元素()
  2. 确保元素为1:1(即完美的圆圈)
  3. 确保隐藏溢出的图像

换句话说,图像必须表现得好像它是一个元素的背景(我不能用它们作为背景图像),其纵横比总是1:1 并且响应.

在下面的例子中,一切正常,除了<a>元素适应他们的图像后代.但我希望他们保持1:1的比例,这样我就能得到完美的圆圈.(不过,第一行的中间一行必须大于其余部分.)

HTML无法更改,但我可以使用现代CSS属性,如object-fit和flexbox.(只要最新版本的Chrome/Firefox支持它.)

*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

.img-gallery {
  background: #fafafa;
  padding: 24px;
  min-width: 320px;
  width: 90%;
  margin: 0 auto;
}

.img-gallery .row {
  display: flex;
  flex-wrap: nowrap;
  justify-content: space-around;
  align-items: center;
}

.img-gallery a {
  display: block;
  text-decoration: none;
  background-image: linear-gradient(60deg, #004494 0%, #7db9e8 78%, #c2dfed 100%);
  overflow: hidden;
  border-radius: 50%;
  padding: 3px;
  flex: 1;
  margin: 0 24px;
  transition: padding 200ms; …
Run Code Online (Sandbox Code Playgroud)

css aspect-ratio css3 flexbox responsive-design

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

使用 pyproject.toml 中的 setuptools 添加 py.typed 作为包数据

根据我的阅读,为了确保代码的类型信息与代码一起分发以供 linter 读取,该py.typed文件应该是您的分发的一部分。

我找到了如何将这些添加到setup.py的答案,但我不清楚 1. 是否应将其包含在 pyproject.toml 中(使用 setuptools),2. 如果是,应如何添加。

搜索他们的 github 存储库,似乎这不会自动添加,所以问题仍然是我应该如何将它添加到我的 pyproject.toml 中。我发现了这个一般性讨论,package_data但它包括对include_package_data和 a 的引用MANIFEST.in,从那里开始,什么应该去哪里会让人感到困惑。

Tl;dr:使用 setuptools 时应该如何包含py.typed在 pyproject.toml 中?

python setuptools typed pyproject.toml

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

在grep中,"'\''是一个无法识别的逃脱"

我在R中的一些项目中使用grep(使用perl=TRUE标志)并且在我的生活中我无法弄清楚为什么R不断抛出错误.我的查询如下:

d$SomeColumn[grep("(?ix)<VNW[^;]*;(dis|dat)> \w*<N\(", d$Right, perl=TRUE)] <- 1
Run Code Online (Sandbox Code Playgroud)

但是,R抛出以下错误:

Error: '\w' is an unrecognized escape in character string starting ""<VNW[^;]*;(dis|dat)> \w"
Run Code Online (Sandbox Code Playgroud)

regex grep pcre r

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

pipenv 选项来模拟 pip -f 选项

在 pip 中有一个-f选项可以执行以下操作:

-f, --find-links: 如果是 html 文件的 url 或路径,则解析指向档案的链接。如果本地路径或file://url 是目录,则在目录列表中查找档案。

这是安装 PyTorch 的首选方式,通过设置指向其概览网站的链接,例如:

pip3 install torch===1.3.0 -f https://download.pytorch.org/whl/torch_stable.html
Run Code Online (Sandbox Code Playgroud)

对于我使用的虚拟环境,pipenv但我还没有找到与-f. 同时,我可以查找与我的系统相关的软件包的直接链接,但这很麻烦。

pipenv 是否提供了一种方法来做与 pip 的 -f 相同的事情?

pip package-managers pipenv

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

在特定单词后打破字符串并将其保留在新行(正则表达式)

假设我有一个文本字段,用户可以在其中提交代码片段.我想检测字符串中何时出现特定单词,然后对该单词后面的单词/字符执行某些操作.

假设我们有一个字符串,在单词睡衣之后我想在没有缩进的新行上启动其余代码.(非常类似于代码美化器的工作方式.)输出将在内部呈现pre,因此我不需要任何<br>标记或其他HTML标记.

虽然有一些捕获量.

  1. 一个单词(睡衣)之后的所有内容都必须在与之前一行相同的"级别"(同样数量的制表符缩进)的新行上开始.
  2. 逗号应始终以新行开头,并使用制表符反向缩进
  3. 当有另一个字符时,让我们说一个感叹号!,下面的代码必须从一个新的行开始,并以制表符作为缩进.

例:

输入:

Bananas! Apples and pears walk down pyjamas the street! and they say pyjamas hi to eachother, pyjamas But then! some one else comes pyjamas along pyjamas Who is he?, pyjamas I don't know who! he is pyjamas whatever,,
Run Code Online (Sandbox Code Playgroud)

输出:

Bananas!
    Apples and pears walk down pyjamas
    the street!
        and they say pyjamas
        hi to eachother
    , pyjamas
    But …
Run Code Online (Sandbox Code Playgroud)

html javascript regex string jquery

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

根据Google优化CSS交付

所以我通过Google的PageSpeed Insights运行我的网站,它告诉我,我可以通过延迟加载非关键资源来改善CSS交付.特别是它引用了包含字体真棒:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
Run Code Online (Sandbox Code Playgroud)

我想我可以通过简单地将它放在关闭body标签之前的脚本之前来延迟它的负载,如下所示:

  ...
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
  <script src="js/min/scripts.min.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

然而!在查看Google 关于交付速度文档时,我发现了两种不同的解决方案.

用我的母语(荷兰语;你可以在右下角更改文档的语言)文档声明我应该将非必要的CSS 放在结束的html标记之下.这对我来说似乎很奇怪.在尝试通过JS访问文件时,这会不会复杂化? 你为什么不把它放在关闭身体标签之前?

  ...
  </body>
</html>
<link rel="stylesheet" href="small.css">
Run Code Online (Sandbox Code Playgroud)

但是,在英文文档中,事情变得更复杂并需要JavaScript:

    ...
    <script>
      var cb = function() {
        var l = document.createElement('link'); l.rel = 'stylesheet';
        l.href = 'small.css';
        var h = document.getElementsByTagName('head')[0]; h.parentNode.insertBefore(l, h);
      };
      var raf = requestAnimationFrame || mozRequestAnimationFrame ||
          webkitRequestAnimationFrame || msRequestAnimationFrame;
      if (raf) raf(cb);
      else window.addEventListener('load', cb);
    </script>
  </body>
</html> …
Run Code Online (Sandbox Code Playgroud)

css performance pagespeed

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

资源提示的奇妙但令人困惑的想法:(a)同步?

我一直在阅读谷歌的幻灯片,以进行所谓的预优化.(对于那些感兴趣的人或那些不知道我在说什么的人,这张幻灯片总结了它.)

在HTML5中,我们可以预取和预呈现link元素中的页面.这是一个概述.我们可以使用reldns-prefetch,subresource,prefetchprerender.

第一个令人困惑的事情是,显然只有prefetch规范的HTML5(和5.1),但没有其他人的.(然而!)第二,浏览器支持对于(dns-)是好的,prefetch但对其他人来说非常糟糕.特别是Firefox缺乏支持prerender令人讨厌.

第三,我问自己的问题是:浏览器读取行后是否会发生预取(或任何其他方法)(然后阻止当前页面加载),或者等待加载在当前页面完全加载之前的后台资源?

如果它以阻塞方式同步加载,有没有办法异步或在页面加载后执行此操作?我想这样的JS解决方案,但我不确定它会异步运行.

var pre = document.createElement("link");

pre.setAttribute("rel", "prerender prefetch");
pre.setAttribute("href", "next-page.php");

document.head.appendChild(pre);
Run Code Online (Sandbox Code Playgroud)

如果适用,请回答这两个问题!

编辑9月17日

阅读编辑的资源提示草案后,我发现了以下内容(强调我的):

由于CPU,GPU,内存和网络资源的额外争用,下一次导航可能需要的资源提取可能会对当前导航上下文的性能产生负面影响.为解决此问题,用户代理应实现逻辑以减少和消除此类争用:

  • 下一导航所需的资源提取应具有较低的相对优先级,并且不应阻止或干扰当前导航上下文所需的资源提取.
  • 启动下一导航所需的资源获取的最佳时间取决于协商的传输协议,用户当前连接配置文件,可用设备资源和其他上下文特定变量.留下用户代理以确定启动提取的最佳时间 - 例如,用户代理可以决定等待直到所有其他下载完成,或者如果协商的协议支持必要的原语,则可以选择具有低优先级的流水线请求.或者,由于资源约束,用户偏好或其他因素,用户代理可以选择退出启动提取.

请注意用户代理可以执行此操作的程度.我真的担心这将导致不同浏览器的不同实现,这将导致再次分歧.

问题仍然存在.我不清楚是否通过使用prefetch或其他方式同步加载外部资源(因此,当放入头部时,在加载内容之前),或者异步(具有较低优先级).我猜测后者,虽然我不明白这是怎么可能的,因为link规范中没有任何内容可以允许异步加载链接元素的内容.

html5 prefetch prerender

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

将dict构造函数转换为Pandas MultiIndex数据帧

我有很多数据要在Pandas数据帧中构建.但是,我需要一个多索引格式.Pandas MultiIndex功能一直困扰着我,而且这次我无法理解它.

我构建了结构,因为我想要它作为一个字典,但因为我的实际数据要大得多,我想用Pandas代替.以下代码是dict变体.请注意,原始数据包含更多标签和更多行.

这个想法是原始数据包含具有索引的任务行,该索引Task_n由具有索引的参与者执行Participant_n.每都是一个段.即使原始数据没有这种区别,我想将其添加到我的数据帧中.换一种说法:

Participant_n | Task_n | val | dur
----------------------------------
            1 |      1 |  12 |   2
            1 |      1 |   3 |   4
            1 |      1 |   4 |  12
            1 |      2 |  11 |  11
            1 |      2 |  34 |   4
Run Code Online (Sandbox Code Playgroud)

上面的例子包含一个参与者,两个任务,分别有三个两个段(行).

在Python中,dict结构如下所示:

import pandas as pd

cols = ['Participant_n', 'Task_n', 'val', 'dur']

data = [[1,1,25,83], …
Run Code Online (Sandbox Code Playgroud)

python dictionary dataframe python-3.x pandas

8
推荐指数
2
解决办法
416
查看次数

通过 Huggingface Transformer 更新 BERT 模型

我正在尝试使用内部语料库更新预训练的 BERT 模型。我查看了 Huggingface Transformer 文档,但正如您将在下面看到的那样,我有点卡住了。我的目标是使用余弦距离计算句子之间的简单相似性,但我需要为我的特定用例更新预训练模型。

如果您查看下面的代码,它恰好来自 Huggingface 文档。我正在尝试“重新训练”或更新模型,我假设 special_token_1 和 special_token_2 代表我的“内部”数据或语料库中的“新句子”。这样对吗?总之,我喜欢已经预先训练好的 BERT 模型,但我想更新它或使用另一个内部数据集重新训练它。任何线索将不胜感激。

import tensorflow as tf
import tensorflow_datasets
from transformers import *

model = BertModel.from_pretrained('bert-base-uncased')
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

SPECIAL_TOKEN_1="dogs are very cute"
SPECIAL_TOKEN_2="dogs are cute but i like cats better and my 
brother thinks they are more cute"

tokenizer.add_tokens([SPECIAL_TOKEN_1, SPECIAL_TOKEN_2])
model.resize_token_embeddings(len(tokenizer))
#Train our model
model.train()
model.eval()
Run Code Online (Sandbox Code Playgroud)

nlp spacy tensorflow pytorch huggingface-transformers

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