小编Cod*_*key的帖子

MySQL引用,以避免重复自己?

我有这个片段:

SELECT 
    CASE WHEN
        AVG(UNIX_TIMESTAMP(tDone)-UNIX_TIMESTAMP(tIPN))/3600 >= 10
    THEN
        ROUND(AVG(UNIX_TIMESTAMP(tDone)-UNIX_TIMESTAMP(tIPN))/3600,0)
    ELSE
        ROUND(AVG(UNIX_TIMESTAMP(tDone)-UNIX_TIMESTAMP(tIPN))/3600,1)
    END 
FROM
    ...
Run Code Online (Sandbox Code Playgroud)

我可以做任何事情来删除重复吗?沿着这些方向的东西,例如:(假设代码如下):

SET var = AVG(UNIX_TIMESTAMP(tDone)-UNIX_TIMESTAMP(tIPN))/3600
SELECT 
    CASE WHEN
        var > 10
    THEN
        ROUND(var,0)
    ELSE
        ROUND(var,1)
    END 
FROM
    ...
Run Code Online (Sandbox Code Playgroud)

mysql

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

当覆盖锚标记时,更改innerHTML会破坏parentNode吗?怎么修?

我为click事件设置了两个事件处理程序.一个在<th>表中的所有s上,另一个在文档上的通用的.

<th>处理程序中的部分代码更改了单击元素的innerHTML.至关重要的是,我认为标签内部有一个锚th标签.

文档处理程序中的部分代码检查单击元素的parentNode.

似乎是这两个事实导致一个问题.如果我注释掉innerHTML修改行,一切正常.如果我把它留在里面,我会得到元素的"null" parentNode.

这是一个已知的问题,如果是这样的解决方案是什么?这是Chrome中的错误,还是JavaScript/DOM因某种原因而导致的行为?

function isInside(eChild, eParent) {
  alert('element is ' + eChild);
  if (eChild === eParent) {
    return true;
  }

  if (eChild === document) {
    return false;
  }

  return isInside(eChild.parentNode, eParent);
}

function init1() {
  document.getElementById('th').addEventListener('click', function(e) {
    document.getElementById('th').innerHTML = '<a href="#">Changed</a>';
  });
}

function init2() {
  document.addEventListener('click', function(e) {
    if (isInside(e.target, document.getElementById('table'))) {
      alert('found in table');
    } else {
      alert('not found in table');
    }
  });
}

init1();
init2(); …
Run Code Online (Sandbox Code Playgroud)

javascript dom

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

延迟加载 facebook 客户聊天插件 - 我可以强制打开聊天对话吗?

我正在尝试延迟加载 facebook 客户聊天插件,以避免对每个页面加载的性能造成影响。

我的想法是,与其在客户可能想要与聊天互动的机会的每个页面上都包含 FB sdk,我可以只拥有一个用户单击的聊天图标,然后加载 sdk。

对我来说似乎很有意义。

加载 javascript 时有一点延迟,但没关系,我在聊天图标上放了一些脉动动画,让用户知道发生了什么事。

问题是如果他们已经在某个时候关闭了一个聊天对话,它就不会重新打开:

来自https://developers.facebook.com/docs/messenger-platform/discovery/customer-chat-plugin

默认情况下,问候对话框将显示在桌面上并在移动设备上最小化。用户还可以单击以显示或最小化对话框。在页面会话期间(包括页面重新加载),此状态会缓存在浏览器上。

那第一部分是好的-我可以设置greeting_dialog_display'show'非常容易。但是如果他们已经关闭了前一页上的聊天窗口,那么该状态的缓存就会成为一个问题;他们点击了我的假聊天图标,SDK 加载...然后什么也没有发生——他们必须再次点击该图标才能打开聊天窗口。根本不是很好的用户体验。

我能做些什么来解决这个问题吗?我已经使用 devtools 查看了幕后的代码,但坦率地说,我无法理解它,即使可以,我也不确定我是否可以与它进行交互,因为聊天的主体小部件似乎在 iframe 中?

这是我的代码,并不是大部分与问题非常相关:

HTML/JS:

<img id="fake-chat" onclick="loadRealChat();" src="/img/facebook-chat.svg">

<div class="fb-customerchat" page_id="293008574697" greeting_dialog_display="show"></div>

<script>
    function loadRealChat() {
    _('fake-chat').style.animation='pulse 0.5s linear 6';

    _('fake-chat').insertAdjacentHTML('afterend', '<div class="fb-customerchat" page_id="PAGE_ID" greeting_dialog_display="hide"></div>');

    window.fbAsyncInit = function() {
        FB.init({
            appId            : 'APP_ID',
            autoLogAppEvents : true,
            xfbml            : true,
            version          : 'v3.0'
        });
    };

    (function(d, s, id){
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) {return;} …
Run Code Online (Sandbox Code Playgroud)

javascript facebook

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

系统配置文件(nginx/php.ini 等)的 git 存储库的最佳实践

我在 CentOS 6 机器上有一个相当(我认为)正常的设置。

我的网站位于 /var/www/sites 中。

  • /var/www/sites/site1
  • /var/www/sites/site2
  • ETC...

我为每个文件夹中的每个文件夹都有一个 git 存储库。

我想为各种配置文件创建一个 git 存储库:

  • /etc/nginx.conf
  • /etc/nginx/可用站点/
  • /etc/php.ini
  • /etc/my.cnf
  • ETC...

我觉得我可以在 /etc/ 文件夹中创建一个 git 存储库,使用带有 * 通配符的 .gitignore 来忽略所有文件,然后强制添加我感兴趣的特定文件。这是不好的做法吗?感觉有点“脏”。

如果我决定 /etc/ 之外有一个我想要的重要文件,也许某些配置最终位于 /opt/ 中,该怎么办?所以也许我应该在 / 上创建一个存储库。嗯,开始感觉更脏了,特别是因为这个存储库将“包含”我的网站存储库......即使它们通过通配符 .gitignore 被排除在外 - 这似乎有点......错误。是吗?

我想另一种方法是创建一个 /config/ 目录,其中包含一个存储库,将所有相关文件移至其中,然后添加文件所在位置的符号链接。不知道这是否会导致不必要的并发症/问题?

想必我不是第一个想要“配置存储库”的人 - 大多数人最终会做什么?

谢谢

git

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

使用 CSS,当容器从 1000px 缩小到 600px 时,如何平滑地将 div 的宽度从容器的 80% 更改为容器的 100%?

当宽度为 1000px 或更大时,我希望 div 为其容器宽度的 80%。

当宽度为 600px 或更小时,我希望它是容器宽度的 100%。

在中间,我希望它在中间。

http://jsfiddle.net/ayjtr1q4/9/

div {
  background: #def;
  height: 100px;
  margin: 0 auto;
}

@media screen and (min-width: 1000px) {
  div {
    width: 80%
  }
}

@media screen and (min-width: 601px) and (max-width: 999px) {
  div {
    /* what goes in here? */
  }
}

@media screen and (max-width: 600px) {
  div {
    width: 100%
  }
}
Run Code Online (Sandbox Code Playgroud)
<div>
  As you resize the screen this snaps from 80% to 100%. I'd like to …
Run Code Online (Sandbox Code Playgroud)

css

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

如何在无头Chrome实例上设置缩放级别?

我想模仿用户在查看我的网页时缩小到80%的情况。遵循以下原则

`google-chrome --headless --disable-gpu --screenshot --zoom=0.8 --window-size=1920,1080 http://www.example.com/`
Run Code Online (Sandbox Code Playgroud)

但是“ zoom”属性不存在,在此列表中我找不到任何可比的东西:

https://peter.sh/experiments/chromium-command-line-switches/

对于人们来说,这肯定是一件很平常的事情,所以我觉得我一定错过了一些简单的事情……

google-chrome-headless

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

为什么 PDO 将我的 bool(false) 参数转换为 string('')?

我在安装新的 MariaDB 10.5.8 时遇到问题。 STRICT_TRANS_TABLES已设置,当我尝试使用$sql

'INSERT INTO test (flag) VALUES (?)'
Run Code Online (Sandbox Code Playgroud)

(其中flag定义为tinyint(1)),var_dump($params)显示为:

array(1) {
  [0]=>
  bool(false)
}
Run Code Online (Sandbox Code Playgroud)

我收到这条消息:

Incorrect integer value: '' for column `mydb`.`test`.`flag` at row 1
Run Code Online (Sandbox Code Playgroud)

相反,如果我这样做:

'INSERT INTO test (flag) VALUES (false)'
Run Code Online (Sandbox Code Playgroud)

没有参数,它按预期工作。

这是我连接到数据库的方式:

$this->PDO = new PDO('mysql:host=' . DB_SERVER . ';dbname=' . DB_NAME . ';charset=utf8mb4', DB_USER, DB_PASSWORD, [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
    PDO::ATTR_STRINGIFY_FETCHES  => false,
]);

$this->PDO->query("SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'");
Run Code Online (Sandbox Code Playgroud)

这就是我将查询/参数发送到 …

php mysql pdo mariadb

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

imagick :: INTERLACE_JPEG/INTERLACE_PLANE/INTERLACE_LINE之间的实际差异是什么?

ImageMagick中有很多"隔行"选项,但我并不真正理解其中的区别.标题中的所有选项似乎都会生成一个类似的JPG文件 - 也许如果我有一个较慢的/受限制的连接,我可以辨别出差异.

有什么实际区别吗?应该选择一个吗?

谢谢

php imagemagick imagick

4
推荐指数
1
解决办法
848
查看次数

如何在dispatchEvent上使用preventDefault()?

我在表单上有一个提交事件处理程序(用于捕获提交表单的人,有时我需要通过dispatchEvent手动触发(由用户点击提交按钮以外的其他内容触发).

希望它实际提交表单,但是一旦dispatchEvent被解雇了,我似乎无法取消它?

myForm.addEventListener('submit', function(e) {
    e.preventDefault();
    console.log(e.defaultPrevented); // false
});

myForm.dispatchEvent(new Event('submit', {'detail': 'mydetail'}));
Run Code Online (Sandbox Code Playgroud)

在Chrome中,这仍然会输出false,但表单不会提交(所需的行为).事实上,即使我删除了preventDefault()行,它仍然没有提交?

但是,Firefox是一个不同的故事,并始终提交表单.

我怎么能改变这个?

javascript

4
推荐指数
1
解决办法
761
查看次数

如何以编程方式创建 APNG 文件?

一般来说,我使用 PHP 和 ImageMagick,但据我所知,ImageMagick 组似乎拒绝实现创建/理解动画 PNG 文件的能力?

我可以使用什么工具来获取十几个 JPEG 文件并从中创建动画 PNG?我更喜欢 PHP api,但如果需要,我可以扩展到另一种语言!

谢谢

imagemagick apng

4
推荐指数
1
解决办法
3271
查看次数