package main
import (
"bytes"
"code.google.com/p/go.net/html"
"fmt"
"log"
"strings"
)
func main() {
s := "Blah. <b>Blah.</b> Blah."
n, err := html.Parse(strings.NewReader(s))
if err != nil {
log.Fatalf("Parse error: %s", err)
}
var buf bytes.Buffer
if err := html.Render(&buf, n); err != nil {
log.Fatalf("Render error: %s", err)
}
fmt.Println(buf.String())
}
Run Code Online (Sandbox Code Playgroud)
输出:
<html><head></head><body>Blah. <b>Blah.</b> Blah.</body></html>
Run Code Online (Sandbox Code Playgroud)
有没有办法阻止html.Parse从制作出文档片段(即避免添加<html>,<body>等等)?我知道html.ParseFragment但它似乎表现出相同的行为.
您可以通过使用父元素包装要解析的文本来解决它,例如,<span>然后执行以下操作:
n = n.FirstChild.LastChild.FirstChild
Run Code Online (Sandbox Code Playgroud)
但至少可以说,这似乎很糟糕.
理想情况下,我想:接受输入,操作或删除其中的节点,并将结果写回字符串,即使结果是不完整的文档.
我知道可以使用外部库来宣传 Mongo的Node驱动程序.我很想知道是否可以使用ES6承诺MongoClient.connect,所以我尝试了这个(使用Babel 5.8.23进行转换):
import MongoClient from 'mongodb';
function DbConnection({
host = 'localhost',
port = 27017,
database = 'foo'
}) {
return new Promise((resolve, reject) => {
MongoClient.connect(`mongodb://${host}:${port}/${database}`,
(err, db) => {
err ? reject(err) : resolve(db);
});
});
}
DbConnection({}).then(
db => {
let cursor = db.collection('bar').find();
console.log(cursor.count());
},
err => {
console.log(err);
}
);
Run Code Online (Sandbox Code Playgroud)
输出是{Promise <pending>}.与游标有关的任何事情似乎都会产生类似的结果.有没有办法解决这个问题,还是我完全咆哮错误的树?
编辑:节点版本4.1.0.
所以我想知道如何包含另一个JavaScript文件.很像PHP的include函数/关键字.我不是在寻找这个export功能,因为它只允许你使用其他文件中的变量.
我正在使用vue init webpack my-project.
这是我基本上拥有的(Vue):
mounted () {
socket = io("http://localhost:8081")
socket.connect()
// ensure server has actually put us in a room
socket.on("find game", () => {
this.gameSearch = "finding"
})
...
}
Run Code Online (Sandbox Code Playgroud)
所以基本上我有一大堆socket.on我想进入另一个文件.我想知道如何能够将它们包含在原样中以便它们可以像代码已经插入那样工作(就像PHP一样include)
它最终会是什么样子:
mounted () {
<socket.js file>
}
Run Code Online (Sandbox Code Playgroud)
socket.js
socket = io("http://localhost:8081")
socket.connect()
// ensure server has actually put us in a room
socket.on("find game", () => {
this.gameSearch = "finding"
})
...
Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用 Terraform 重新创建现有基础设施,所需的服务之一是 S3 存储桶,其中应包含可公开访问的图像。
这是存储桶的 Terraform 代码:
resource "aws_s3_bucket" "foo_icons" {
bucket = join("-", [local.prefix, "foo", "icons"])
tags = {
Name = join("-", [local.prefix, "foo", "icons"])
Environment = var.environment
}
}
resource "aws_s3_bucket_acl" "icons_bucket_acl" {
bucket = aws_s3_bucket.foo_icons.id
acl = "public-read"
}
Run Code Online (Sandbox Code Playgroud)
存储桶的填充方式如下:
resource "aws_s3_object" "icon_repository_files" {
for_each = fileset("../files/icon-repository/", "**")
bucket = aws_s3_bucket.foo_icons.id
key = each.value
source = "../files/icon-repository/${each.value}"
etag = filemd5("../files/icon-repository/${each.value}")
}
Run Code Online (Sandbox Code Playgroud)
我在控制台上看到的结果是,该存储桶实际上是可公开访问的,但根据显示的 ACL,该存储桶中的每个对象都不是公开的。我也无法通过显示的 url 访问 S3 对象:这会导致访问被拒绝。
在 Terraform 中创建包含可公开访问的对象的存储桶的最佳方法是什么?我读到 ACL 不再“现代”,所以如果有更好的方法来实现这一点,我会很高兴听到。
我在Internet Explorer 7中遇到问题.
当我有一个包含两个或更多 的表单input[type=text]并按Enter键时,事件按以下顺序发生:
onClick)onSubmit)示例代码:
<form onSubmit="{alert('form::onSubmit'); return false;}">
<input type="text">
<input type="text">
<input type="submit" onClick="{alert('button::onClick');}">
</form>
Run Code Online (Sandbox Code Playgroud)
如果我只有一个 input[type=text]而且我按下输入提交按钮onClick事件不会触发.示例代码:
<form onSubmit="{alert('form::onSubmit'); return false;}">
<input type="text">
<input type="submit" onClick="{alert('button::onClick');}">
</form>
Run Code Online (Sandbox Code Playgroud) MySQL服务器版本5.0.45.考虑以下:
( SELECT CASE
WHEN t.group_id = 12 THEN 'yes'
ELSE 'no'
END
FROM sample_table t
WHERE t.user_id = 2
AND t.group_id = 12 ) as foo
Run Code Online (Sandbox Code Playgroud)
这个较大语句的子查询符合我的预期,大部分时间都会产生"是"或"否"字符串值.这不是理想的,但这就是你在别人的代码上工作所得到的!
但是,有时select可以合法地返回一个空集,在这种情况下foo设置为NULL.这实际上并没有破坏应用程序,但它令人恼火.有没有办法可以保证foo总是'yes'或'no',即使表中没有匹配的行?
我正在从一个看起来像这样的数组中播种我的数据库(单词和定义有多对多关系):
var seeds = [
{
"word": "Click",
"definitions": ["Computer", "Mouse", "Tasto", "Pulsante", "Selezionare"]
}, {
"word": "Galoppo",
"definitions": ["Cavallo", "Andatura", "Trotto", "Ippica", "Passo"]
}, {
"word": "Raggio",
"definitions": ["Sole", "Bicicletta", "Diametro", "Luce", "Laser"]
}, {
.
.
.goes on for 1089 objects
Run Code Online (Sandbox Code Playgroud)
这是我试过的:
exports.seed = function (knex, Promise) {
var promises = seeds.map(function (seed) {
return knex('words').insert({
word: seed.word
}, 'id').then(function (word_id) {
var promises = seed.definitions.map(function (definition) {
return knex('definitions').insert({
definition: definition
}, 'id').catch(function (err) {
if (err.code …Run Code Online (Sandbox Code Playgroud) 我安装了 deoplete 并且它对我有用,但是默认情况下,只要您键入内容,它就会打开一个弹出窗口。这是不可取的。我希望弹出窗口仅在我点击Ctrl+时显示N。所以我禁用自动完成:
let b:deoplete_disable_auto_complete = 1
Run Code Online (Sandbox Code Playgroud)
但这使得Ctrl+ 的N行为与 deoplete 之前一样,即使用缓冲区中的所有单词作为完成源。
我也尝试从文档中添加代码,但无济于事:
inoremap <silent><expr> <TAB>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ deoplete#mappings#manual_complete()
function! s:check_back_space() abort "{{{
let col = col('.') - 1
return !col || getline('.')[col - 1] =~ '\s'
endfunction"}}}
Run Code Online (Sandbox Code Playgroud)
它重新映射 Tab 键,而不是Ctrl+ N。是否可以通过按Ctrl+来显示 Deoplete 手动完成N?
我正在考虑在ReactJS中针对特定用例执行嵌套错误边界:
<ErrorBoundary1>
<ErrorBoundary2><child1 /></ErrorBoundary2>
<ErrorBoundary2><child2 /></ErrorBoundary2>
</ErrorBoundary1>
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这样做,但是当发生错误时,似乎没有通过父错误边界。我可以componentDidCatch对内部错误边界进行抛出,但这将使其陷入无限循环。
有什么建议吗?
我在Go中编写了一个URL监控程序,但经过一段时间后,我发现了很多ESTABLISHED条目netstat -nao|grep 80.
getHttpStatusCode函数:
HttpClient = &http.Client{
Transport: &http.Transport{
Dial: func(netw, addr string) (net.Conn, error) {
deadline := time.Now().Add(30 * time.Second)
c, err := net.DialTimeout(netw, addr, 20*time.Second)
if err != nil {
return nil, err
}
c.SetDeadline(deadline)
c.SetReadDeadline(deadline)
c.SetWriteDeadline(deadline)
return c, nil
},
},
}
// ...
func getHttpStatusCode(url string) int {
if url == "" {
return 200
}
req, err := http.NewRequest("GET", url, nil)
if err != nil {
return 0
}
req.Close = true
req.Header.Add("User-Agent", …Run Code Online (Sandbox Code Playgroud)