小编Dav*_*ell的帖子

有没有一种很好的方法来检测MySQL是"准备好了吗?"

我不是MySQL专家.

我有一个脚本安装MySQL,启动mysqld,然后用于mysql进行一些初始化.

目前,为了完成这项工作,我进入一个循环(为混合多种语言的伪代码道歉):

mysqld_safe /* ... */ & /* ampersand to start in background so we can continue */
while(fileDoesNotExist("/tmp/mysql.sock")) {
    sleepFor100ms();
}
mysql -u root /* and so forth */ initialize.sql
Run Code Online (Sandbox Code Playgroud)

这似乎工作(!)但有多个问题:

  • 民意调查有趣,
  • 我对MySQL不够聪明,不知道看看那个硬编码的路径名/tmp/mysql.sock是否很聪明.

然而,它比尝试(例如)消费和解析stdout(或者是stderr?)mysqld_safe来判断服务器是否已经启动要容易得多.

我的一个狭隘的问题是,是否有一种方法可以发出阻止启动mysqld:我可以发出任何阻塞直到数据库启动的命令,然后退出(并分离,可能会留下一个PID文件),并有一个伴随停止命令吗?(或者可能允许我读取PID文件并发出我自己的SIGTERM?)

我的更广泛的问题是,我是在正确的轨道上,还是有一些完全不同和更容易(对我来说"更容易"它必须是轻量级的;我对安装一堆像Puppet这样的工具不感兴趣DbMaintain/Liquibase或其他什么方法解决我所阐述的问题?也就是说,从.gz包含MySQL 的文件开始,安装userland MySQL并初始化数据库?

mysql

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

为什么 DOMParser 会改变空格?

为什么以下使用 DOMParser 会导致 HTML 与用作输入的 HTML 不同?它删除 DOCTYPE 和顶级元素之间的空格,删除文档元素 和 之间的空格head,并在 之前添加换行符</body>

我已经在 Google Chrome、Firefox 和 Safari 中对此进行了测试;我还使用JSoup运行了类似的代码,并得到了完全相同的结果。所以我很确定这不是一个错误。我目前的理论是,这是由某处规范中的某种深奥解析规则引起的。但可能还有其他我误解的事情。

const html = `<!DOCTYPE html>
<html>
  <head>
    <title>1</title>
  </head>
  <body>
    <div>
      Hello, World!
    </div>
  </body>
</html>`;

const setText = function(id,string) {
  document.getElementById(id).appendChild(document.createTextNode(string));
};

const documentToString = function(d) {
  return Array.prototype.slice.call(d.childNodes).map(function(node) {
    if (node.nodeType == node.ELEMENT_NODE) return node.outerHTML;
    if (node.nodeType == node.DOCUMENT_TYPE_NODE) return new XMLSerializer().serializeToString(node);
    throw new TypeError("" + node);
  }).join("");
};

setText("raw", html);
var parsed = …
Run Code Online (Sandbox Code Playgroud)

html javascript domparser

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

有没有办法指示 Visual Studio Code 跳过 git commit 挂钩(即提供 -n 参数)?

我希望能够安装预提交钩子,但也能够在某些情况下(例如,WIP)即使在钩子失败时也能够提交。我可以从命令行使用git commit --no-verify( git commit -n)轻松完成此操作。但是除了提交消息的文本字段之外,我找不到任何可以影响 VSCode 中提交的内容。

我错过了它,还是它不存在?

git visual-studio-code

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

可以 git stash;git checkout 主要;git 合并起源/主;git stash pop 可以简化吗?

我发现自己,作为工作流程的一部分,经常这样做:

  • 我在一个分支上(我们称之为topic
  • 我向 CI 发送提交,topic以便将其合并
  • 我想做另一轮改变,所以我继续努力topic
  • mainCI同时合并更改(在 GitHub 上,这意味着在我的情况下进行合并提交 - GitHub 显然不会在这里进行快进合并;请参阅此答案
  • 所以我想重新进行main我一直在进行的更改的更新
  • 我尝试查看,它的内容与现在main相同,但是topic
  • git抱怨我的本地更改将被覆盖,因为我在本地修改了一些与上次提交相同的文件,所以我必须:
  • git stash
  • git checkout main
  • git fetch; git merge origin/main
  • git stash pop

我知道git命令有很多选项。有没有一种方法可以一步完成上述四步过程,或者更少的步骤(无需编写脚本)?合并总是干净利落地应用,因为origin/main和 的topic内容相同(但git历史不同)。

这个悬而未决的问题表明也许整个序列可以被替换为git checkout -m。那是对的吗?

git github

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

标签 统计

git ×2

domparser ×1

github ×1

html ×1

javascript ×1

mysql ×1

visual-studio-code ×1