小编tom*_*umb的帖子

window.setInterval是否有最大延迟限制

今天我遇到了window.setInterval的一个有趣问题.当使用足够大的延迟(在这种情况下是30天内的毫秒数)时,它每秒执行一次而不是每30天执行一次.在最新的Chrome和Firefox中测试过.

jsFiddle链接

window.setInterval(function() {
    document.getElementById("first").innerHTML = new Date().toString();
}, 5000);
window.setInterval(function() {
    document.getElementById("second").innerHTML = new Date().toString();
}, 2592000000);
Run Code Online (Sandbox Code Playgroud)

我在setInterval中找不到关于延迟最大值的任何权威文档,MDN文档没有提到任何内容.其他在线资料表明,延迟应该能够容纳任何带符号的32位整数.

window.setInterval中的delay参数是否具有最大值,它是什么?

javascript setinterval

14
推荐指数
1
解决办法
1169
查看次数

HTML5 Server-Sent Events原型设计 - 模糊错误和重复轮询?

我想它们符合我的要求完美,看起来他们应该是简单的实现获得与服务器端事件交手,但我不能让过去一个模糊的错误,什么样子反复被关闭了连接并重新-opened.我尝试的一切都基于这个和其他教程.

PHP是一个单独的脚本:

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

function sendMsg($id, $msg) {
  echo "id: $id" . PHP_EOL;
  echo "data: $msg" . PHP_EOL;
  echo PHP_EOL;
  ob_flush();
  flush();
}

$serverTime = time();
sendMsg($serverTime, 'server time: ' . date("h:i:s", time()));
?>
Run Code Online (Sandbox Code Playgroud)

并且JavaScript看起来像这样(在身体负载上运行):

function init() {

    var source;
    if (!!window.EventSource) {
        source = new EventSource('events.php');
        source.addEventListener('message', function(e) {
            document.getElementById('output').innerHTML += e.data + '<br />';
        }, false);
        source.addEventListener('open', function(e) {
            document.getElementById('output').innerHTML += 'connection opened<br />';
        }, false);
        source.addEventListener('error', function(e) {
            document.getElementById('output').innerHTML += 'error<br />'; …
Run Code Online (Sandbox Code Playgroud)

apache html5 server-push server-sent-events

13
推荐指数
1
解决办法
1万
查看次数

在Windows PHP 5.3.5中使用php_fileinfo.dll和finfo_open

我在使用PHP 5.3.5和IIS 6在Windows Server 2003上运行的PHP脚本中调用finfo_open时遇到问题.调用始终返回致命错误:在...中调用未定义函数finfo_open()

通过一点阅读,我知道在Windows PHP安装中默认不包含fileinfo功能,但我尝试的任何东西都不能正常工作.评论#3中的说明:http://www.php.net/manual/en/fileinfo.installation.php没有帮助,这是我能找到的官方最正式的解释.有很多关于在网络上需要mime_magic dll的信息,但似乎从5.3开始就不再需要了.此外,我在http://pecl.php.net/package/Fileinfo上读到"从PHP 5.3.0开始,此扩展默认启用".这是怎么回事?

此问题在测试服务器上.在我的本地机器上我有xampp和PHP 5.3.1并且调用工作正常,所以我也尝试将php_fileinfo.dll从本地复制到php\ext进行测试,但这也没有任何区别(我知道版本是不同,但我读到5.3是重要的一点).

对此的任何建议将不胜感激!

    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    $mime = finfo_file($finfo, $filepath);
Run Code Online (Sandbox Code Playgroud)

php iis fileinfo mime-types

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

Apache mod_deflate不压缩json输出

我已经按照多个教程中的所有步骤在Apache中启用mod_deflate但是当我向本地Web服务器发出json(通过PHP脚本)请求时,我仍然没有看到压缩(在Fiddler中).我的浏览器不需要压缩到localhost,但我的机器会定期通过慢速VPN暴露,所以我想使用它.

来自httpd.conf:

LoadModule deflate_module modules/mod_deflate.so (没有注释掉)

mod_deflate.so存在于Apache2/modules中

PHP脚本在运行时立即设置以下标头: header('Content-Type: application/json');

application/json 存在于Apache2/conf/mime.types中

这是httpd.conf中关于应该压缩的mime类型的相关部分:

Alias /mapguide "C:/Program Files/OSGeo/MapGuide/Web/www/"
<Directory "C:/Program Files/OSGeo/MapGuide/Web/www/">
  AllowOverride All
  Options All -Indexes
  Order allow,deny
  Allow from all

...

  # Content compression
  AddType text/javascript js jgz
  AddOutputFilterByType DEFLATE text/javascript application/json text/html

  RewriteEngine on
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
</Directory>
Run Code Online (Sandbox Code Playgroud)

当我向服务器发出请求时,请求标头包括Accept-Encoding: gzip, deflate,但响应未经压缩返回.每次.conf更改后我都重启了Apache.

任何建议都非常欢迎!

php apache mod-deflate deflate httpd.conf

7
推荐指数
1
解决办法
9322
查看次数

Pydantic 防止错误类型的转换

当属性的类型不是预期的类型时,Pydantic 似乎会执行自动类型转换。我相信这就是为什么(方便地)可以通过原始 int 值来分配类的 int 枚举属性的值。

但是,我有一个场景,我想避免这种行为,如果属性不属于预期类型,则会收到验证错误。请参见以下示例:

from pydantic import BaseModel
from typing import List

class Common(BaseModel):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        print(f"created {self.__class__.__name__} with {kwargs}")

class Child(Common):
    child_prop: int = None

class Parent(Common):
    child: Child

class Imposter(Common):
    imposter_prop: int

parent = Parent(
    child=Imposter(imposter_prop=0)
)
print(f"is child: {isinstance(parent.child, Child)}")
Run Code Online (Sandbox Code Playgroud)

执行该模块的输出:

created Imposter with {'imposter_prop': 0}
created Child with {'imposter_prop': 0}
created Parent with {'child': Imposter(imposter_prop=0)}
is child: True
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,Pydantic 很高兴地允许我为应该是的属性创建Parent一个对象。它通过使用 的属性创建一个来支持这一点。我不希望这种事发生。ImposterChildChildImposter

我浏览了 Pydantic 文档,但没有一个配置选项让我想到可以改变这种行为。我可以采取什么措施来阻止这种类型转换尝试?

python-3.x pydantic

7
推荐指数
1
解决办法
7922
查看次数

Apache不会加载PHP MySQL扩展,但IIS会加载

我对Windows Server 2008 R2上的PHP有一个非常恼人的问题.IIS和Apache正在同一台机器上运行(Apache嵌入了另一个产品,而且我没有选择它).

IIS配置为能够使用多个版本的PHP,并且没有安装Windows安装程序的PHP版本(因此路径中不存在php.exe).

Apache使用一个特定版本的PHP(5.2.5线程安全 - 再次我无法改变这一点,因为第三方应用程序具有针对此版本编译的PHP扩展).

如果我在我的Apache站点中检查phpinfo()它没有MySQL的条目,即使在php.ini中启用了php_mysql.dll并且它存在于\ ext目录中.如果我(暂时)将此版本的PHP(相同目录,相同的php.ini)添加到IIS并使用phpinfo()设置测试站点,它会正确列出MySQL.我知道这不仅仅是phpinfo的一个奇怪的问题,因为我有一个基于MySQL的PHP​​站点在Apache中运行而且它失败了Call to undefined function mysql_connect()

有人建议我将libmysql.dll从PHP目录复制到C:\ Windows\System32,但这并没有什么区别.由于服务器上有多个版本的PHP,我认为可能是加载了错误版本的libmysql.dll,但PATH不包含任何包含libmysql.dll的目录.

IIS和Apache正在查看完全相同的PHP安装,php.ini和ext目录,但只有IIS可以加载MySQL扩展.Apache位于默认的系统帐户上,因为它看起来像System可以访问所有DLL.

Apache日志没有说明任何DLL无法加载.我在事件日志中记录了PHP错误,但没有报告这些扩展.

在谷歌搜索问题后,我在Windows服务器上发现了PHP中其他突然发生的问题,但通常的解决方案 - 重建php.ini,重启IIS,重启服务器 - 没有帮助.

关于下一步看哪里的任何建议都非常感谢!

php apache windows-server-2008-r2

6
推荐指数
1
解决办法
2509
查看次数

LINQ - '无法翻译表达式'与以前使用和验证的查询条件

我是LINQ的新手,无法解决一些行为上的不一致问题.任何知识渊博的输入将非常感激.我在SO和其他地方看到类似的问题,但它们似乎没有帮助.

我有一个非常简单的设置 - 公司表和地址表.每个公司可以有0个或更多地址,如果> 0,则必须指定一个地址.我正在尝试处理有0个地址的情况,使用外连接并相应地更改select语句.

请注意我目前正在将输出绑定到GridView,所以我想在查询中保留所有处理.

下面DOES工作

IQueryable query =
    from comp in context.Companies
    join addr in context.Addresses on comp.CompanyID equals addr.CompanyID into outer   // outer join companies to addresses table to include companies with no address
    from addr in outer.DefaultIfEmpty()
    where (addr.IsMain == null ? true : addr.IsMain) == true    // if a company has no address ensure it is not ruled out by the IsMain condition - default to true if null
    select new {
        comp.CompanyID, …
Run Code Online (Sandbox Code Playgroud)

linq asp.net linq-to-sql

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

来自同一存储库中 Dockerfile 的 Github Action Service 容器

我正在学习 Github Actions 并设计一个需要Service Container 的作业的工作流程。

文档指出配置必须指定“用作运行操作的服务容器的 Docker 映像。该值可以是 Docker 基本映像名称或公共 docker Hub 或注册表”。文档中的所有示例都使用公开可用的 Docker 映像,但是我想从我的存储库中包含的 Dockerfile 创建服务容器。

是否可以使用本地 Dockerfile 创建服务容器?

由于作业依赖于服务容器,因此该映像在作业开始时必须存在,因此无法通过同一作业中的较早步骤创建该映像。该图像可以在单独的作业中构建,但由于作业在单独的运行程序中执行,我相信作业 2 将无法访问作业 1 中创建的图像。如果这是真的,那么我可以遵循这种方法,使用上传/下载-那么将作业 1 的图像提供给作业 2 吗?

如果一切都失败了,我可以让作业 1 创建映像并将其上传到 Docker Hub,然后让作业 2 从 Docker Hub 下载它,但肯定有更好的方法。

github-actions building-github-actions

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

诗歌在同一环境中安装多个项目

我正在尝试解决我认为是诗歌的常见问题,但无法找到相关文档。我的项目包含多个包,并使用 pyproject.toml 和诗歌来管理此结构的依赖关系

/pyproject.toml
/poetry.lock

/package1/pyproject.toml
/package1/poetry.lock
/package1/src/package1/...
Run Code Online (Sandbox Code Playgroud)

/package1/pyproject.toml包含 pypi 依赖项并将[tool.poetry.dependencies]可构建包定义为

packages = [
    { include = "package1", from = "./src" },
]
Run Code Online (Sandbox Code Playgroud)

/pyproject.toml参考文献package1

[tool.poetry.dependencies]
package1 = { path = "./package1", develop = true }
Run Code Online (Sandbox Code Playgroud)

最后,我的 Dockerfile 使用以下命令安装应用程序

WORKDIR /app/package1
RUN poetry install
WORKDIR /app
RUN poetry install
Run Code Online (Sandbox Code Playgroud)

问题在于,Poetry 将每个“项目”(由 pyproject.toml 文件标识)安装在单独的虚拟环境中,并且似乎不支持在同一环境中安装这两个项目。当我执行应用程序时,它可以找到package1但没有找到任何package1依赖项。

如何将所有内容安装在同一环境中?

我该如何处理这种情况?

python-poetry pyproject.toml

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

在VM共享目录中安装npm模块和grunt问题

我正在尝试整合开发环境,而npm正在给我带来麻烦.这是我的场景:

我有一台运行Windows和VMWare Player的开发机器.我有一个配置了Apache,PHP,NodeJS等的Ubuntu Server VM(没有UI).由于VM没有UI,我想使用主机OS进行开发.我设置了一个共享目录,该目录在VM中作为/ mnt/hgfs/source/<项目名称>进行访问.

当我尝试npm install在此目录中运行时出现问题.我看到很多错误Error: UNKNOWN, symlink '../requirejs/bin/r.js'.我知道我的package.json文件没问题,因为如果我将所有文件从共享中复制到常规的unix目录(/ var/www/<项目名称>),则npm install可以正常工作.所以npm在共享目录中安装模块时遇到问题.

我想我可以通过全局安装节点包来解决这个问题,但无论出于何种原因,GruntJS爱好者不喜欢这样,它必须在本地存在.然后我尝试创建一个从全局到本地的npm链接,但这只会导致一个新的错误:Error: May not delete: /usr/lib/node_modules/grunt.我对/ usr/lib/node_modules目录和所有子目录拥有完全权限.

我真的不想在VM中使用命令行文本编辑器编写整个项目,但看起来我不能将我的代码库放在主机和客户操作系统通过VMWare可用的目录中.

我非常感谢有关如何1)允许在我的共享目录中安装npm模块,2)全局运行Grunt,或3)解决我看到的npm链接错误的任何建议.

编辑:发布后不久,我意识到这里的根本问题 - 当主机操作系统是Windows时,无法在VM共享目录中创建符号链接.由于npm install默认情况下使用符号链接,因此它不起作用,这就是接受的解决方案确实有效的原因.

vmware node.js npm gruntjs

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