今天我遇到了window.setInterval的一个有趣问题.当使用足够大的延迟(在这种情况下是30天内的毫秒数)时,它每秒执行一次而不是每30天执行一次.在最新的Chrome和Firefox中测试过.
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参数是否具有最大值,它是什么?
我想它们符合我的要求完美,看起来他们应该是简单的实现获得与服务器端事件交手,但我不能让过去一个模糊的错误,什么样子反复被关闭了连接并重新-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) 我在使用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) 我已经按照多个教程中的所有步骤在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.
任何建议都非常欢迎!
当属性的类型不是预期的类型时,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 文档,但没有一个配置选项让我想到可以改变这种行为。我可以采取什么措施来阻止这种类型转换尝试?
我对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,重启服务器 - 没有帮助.
关于下一步看哪里的任何建议都非常感谢!
我是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) 我正在学习 Github Actions 并设计一个需要Service Container 的作业的工作流程。
文档指出配置必须指定“用作运行操作的服务容器的 Docker 映像。该值可以是 Docker 基本映像名称或公共 docker Hub 或注册表”。文档中的所有示例都使用公开可用的 Docker 映像,但是我想从我的存储库中包含的 Dockerfile 创建服务容器。
是否可以使用本地 Dockerfile 创建服务容器?
由于作业依赖于服务容器,因此该映像在作业开始时必须存在,因此无法通过同一作业中的较早步骤创建该映像。该图像可以在单独的作业中构建,但由于作业在单独的运行程序中执行,我相信作业 2 将无法访问作业 1 中创建的图像。如果这是真的,那么我可以遵循这种方法,使用上传/下载-那么将作业 1 的图像提供给作业 2 吗?
如果一切都失败了,我可以让作业 1 创建映像并将其上传到 Docker Hub,然后让作业 2 从 Docker Hub 下载它,但肯定有更好的方法。
我正在尝试解决我认为是诗歌的常见问题,但无法找到相关文档。我的项目包含多个包,并使用 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依赖项。
如何将所有内容安装在同一环境中?
我该如何处理这种情况?
我正在尝试整合开发环境,而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默认情况下使用符号链接,因此它不起作用,这就是接受的解决方案确实有效的原因.
apache ×3
php ×3
asp.net ×1
deflate ×1
fileinfo ×1
gruntjs ×1
html5 ×1
httpd.conf ×1
iis ×1
javascript ×1
linq ×1
linq-to-sql ×1
mime-types ×1
mod-deflate ×1
node.js ×1
npm ×1
pydantic ×1
python-3.x ×1
server-push ×1
setinterval ×1
vmware ×1