小编Nic*_*tte的帖子

DNS名称的最大长度是多少

我看到几个提到DNS名称(域名)的最大字符串长度是253个字符.维基百科似乎在引用这篇旧博文:

https://en.wikipedia.org/wiki/Hostname http://blogs.msdn.com/b/oldnewthing/archive/2012/04/12/10292868.aspx

另一方面,如果我理解RFC,那么这篇文章就错了.DNS名称最大字符串长度应为250个ASCII字符,而不是253,基于以下字节序列,根据RFC1035最多为255个字节:

为了简化实现,域名的总长度(即,标签八位字节和标签长度八位字节)被限制为255个八位字节或更少.

根据RFC1035,域名的组成如下:

域名表示为标签序列,其中每个标签由长度八位字节后跟该八位字节数组成.域名以根的空标签的零长度八位字节终止.注意,该字段可以是奇数个八位字节; 没有使用填充.

这意味着以下字段构成域名:

  1. 标签长度(LL):1个字节
  2. 标签名称(LN):63字节(最大值),因为标签长度最大值只能是00111111(因为两个第一位是为指针等特殊功能保留的)
  3. 空标签(NL):1个字节(表示根域)

格式应始终是(与博客文章不同):

LL + LN [ LL + LN ...] + NL

这意味着最大长度应为(1字节= 1个字符= 1个八位字节):

LL(1)+ LN(63)+ LL(1)+ LN(63)+ LL(1)+ LN(63)LL(1)+ LN(61)+ NL(1)= 255字节

因此,如果我们仅计算字符串部分(LN s),我们得到:

63 + 63 + 63 + 61 =最多250个字符.

我错过了什么,或者我们应该更新一些维基百科的参考文献?我不确定的唯一部分是关于Null标签是255字节的一部分.

dns hostname rfc rfc1035

25
推荐指数
2
解决办法
3万
查看次数

QD在DNS RFC1035中代表什么?

我只是对DNS的RFC中某些变量的命名法感到好奇:https://www.ietf.org/rfc/rfc1035.txt

虽然我能找到大多数其他缩略词:

  • AN在ANCOUNT似乎代表一种 swer
  • NS在NSCOUNT代表ñ AME 小号 erver
  • AR在ARCOUNT代表一个 dditional [R的eCord

我想知道" QD COUNT" 中" QD "代表什么?

dns rfc nomenclature rfc1035

15
推荐指数
2
解决办法
1545
查看次数

如何在 TypeScript (Node.js) 包中包含全局文件类型声明

我正在开发一个包,计划在 npmjs 上公开发布。我们称之为“文本包”。

我希望默认情况下安装该软件包时,您可以.txt直接导入文件并获取正确的类型(开箱即用),如下所示:

import text from './file.txt'
Run Code Online (Sandbox Code Playgroud)

text变量将是类型,string因为包已经定义了它的类型,使用类似这样的东西(在 global.d.ts 中):

declare module '*.txt' {
    export const text: string;
    export default text;
}
Run Code Online (Sandbox Code Playgroud)

如果我将 global.d.ts 包含在我的包中,并且从该包中导入某些内容,那么在导入文件时我将自动获得正确的类型.txt

但问题是有时我只需要导入一个.txt文件,而不需要从“文本包”导入任何内容,这就是为什么我想知道是否有某种方法,当您安装一个包来安装一个全局类型时,该全局类型不会需要导入其他任何内容才能应用该类型。

换句话说,一旦您安装了我的“txt 包”,它将立即declare module '*.txt'适用于我的整个项目。

有没有办法做到这一点,或者安装我的包的人必须声明自己的全局类型(例如,declarations.d.ts)才能.txt全局导入文件?

我知道即使导入类型有效,它仍然需要 Webpack 或其他捆绑器才能真正工作,但这个问题只是关于类型。

javascript types node.js typescript webpack

13
推荐指数
2
解决办法
7161
查看次数

使用 Node.js 的类似 PHP 的自动加载器

我正在慢慢地从 PHP 过渡到 Node.js,并试图找到类似于composer dumpautoload. 多亏了PSR-4,当use在每个文件的开头使用带有简单语句的命令时,可以很容易地访问 PHP 中任何文件中的任何类。

npm似乎在管理包和依赖项方面做得很好,但是在您自己的项目中具有相同的灵活性将避免创建require在文件更改路径时很容易中断的语句。

我要查找的示例 - 同一文件夹中的 2 个文件:

一些 testClass.js(类文件)

var testClass = {
    sayHello: function () {
        console.log('this is a test');
    }
};

module.exports = testClass ;
Run Code Online (Sandbox Code Playgroud)

通常这是您将放在另一个文件 index.js 文件中的内容:

var testClass = require('./testClass');

testClass.sayHello();
Run Code Online (Sandbox Code Playgroud)

但是想象一下,您可以使用一些应用程序或命令(例如 PHPcomposer dumpautoload并简单地运行以下命令)为所有类预先编制索引:

var testClass = require('testClass');

testClass.sayHello();
Run Code Online (Sandbox Code Playgroud)

我找不到任何似乎可以实现这一目标的解决方案。

我错过了什么?

php dependency-management autoloader node.js npm

9
推荐指数
1
解决办法
3585
查看次数

MySQL Workbench连接编码

在测试一些代码时,我偶然发现了以下MySQL错误:

Error Code: 1267. Illegal mix of collations (utf8_general_ci,IMPLICIT) and ( utf8mb4_general_ci,COERCIBLE) for operation '='
Run Code Online (Sandbox Code Playgroud)

我在标准的MySQL UTF-8整理列上使用WHERE语句,该列包含一个使用4个字节的字符.除非我误解,在阅读时,我发现了以下信息:

  • MySQL的原始UTF-8实现不完整(支持最大3个字节)
  • 解决这个问题的方法是一个名为utf8mb4的新排序规则,它绝不是一个新的编码,而只是由MySQL用来修补它们的原始错误.

在我看来,我认为没有理由使用原始的MySQL UTF-8实现,因为它不完整.所以我做了一些服务器端配置,以确保所有默认值都指向utf8mb4.一切似乎都很好,但现在我的应用程序:我可以使用我的表单中的字符,而不必担心MySQL.

我的问题现在仍然是当我连接MySQL Workbench时,似乎编码被强制为UTF-8.因此,即使我的应用程序正常运行,如果我想直接在MySQL Workbench中运行测试,我会得到"非法混合排序"错误,除非我在启动应用程序后运行此修复程序(在Workbench中):

SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'
Run Code Online (Sandbox Code Playgroud)

我发现这个老问题(MySQL Workbench charset)似乎无法覆盖设置,但即使我花了太多时间搜索配置,我也不敢相信这仍然是这样的情况?

mysql unicode utf-8 character-encoding mysql-workbench

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

如何在 Cypress 10+ 中扩展 Webpack 配置

我正在尝试扩展 Cypress 10.8.0 中的 Webpack 配置,但我能找到的唯一文档是指“遗留插件文件”: https: //github.com/cypress-io/cypress/tree/master/npm /webpack-预处理器#修改默认选项

我想有一种方法可以直接在cypress.config文件中执行此操作,但是如何呢?

cypress

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

@aws-sdk/client-ses 和 @aws-sdk/client-sesv2 有什么区别?

AWS 的 JavaScript SDK 第 3 版似乎有 2 个不同的简单电子邮件服务 (SES) 客户端。

我意识到我一直在使用 @aws-sdk/client-sesv2 但是:

  • 他们的 GitHub 存储库上的实际文档确实很难理解(请参阅v1v2
  • 在 Github 示例中没有任何地方显示发送电子邮件的示例或为什么有 2 个版本
  • 我发现这个更有用的文档,但他们甚至没有提到 v2?

我们应该使用 v1 还是 v2 ?两者有什么区别?

amazon-web-services amazon-ses aws-sdk-js

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

当高度为100%时显示表CSS的IE 10错误?

我已经尝试了3天以避免在我的新响应式设计中使用表格,主要是因为每个人都说他们是邪恶的.另一方面,在对SEO和桌子进行更多研究的同时,有些人甚至说它提高了他们的知名度.

在任何情况下,div和HTML5的语义都要好得多,所以我真的希望以下示例有效.主要问题是在IE9和10中,由于"高度100%"值,"节行"将溢出.所有其他浏览器似乎反应良好.

有谁知道如何解决这个问题(理想情况下没有Javascript?):

JSFiddle:http://jsfiddle.net/fvqvdske/1/

IE10仿真模式下测试的全尺寸页面:http://jsfiddle.net/fvqvdske/1/show

唯一的问题是溢出和IE9,10 -中间行需要填补的页眉和页脚剩下的全部空间(和页眉和页脚需要可以调整高度,以适应其内容动态例如,没有固定的,没有绝对的位置).

HTML

<body>
<header role="banner">
    <div>
        <div>
            This is the top banner
        </div>
    </div>
</header>
<section role="main">
    <div>
        <div>
            <div>
               <div>
                   <div style="border: 2px solid red;">
                        This is the content<br/>
                        This is the content<br/>
                        This is the content<br/>
                        This is the content<br/>
                        This is the content<br/>
                   </div>
                </div>
            </div>
        </div>
    </div>
</section>
<footer role="contentinfo">
    <div>
        <div>
            This is the footer
        </div>
    </div>
</footer> …
Run Code Online (Sandbox Code Playgroud)

html css html5 internet-explorer css-tables

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

使用 iOS Stringsdict 文件的显式复数字符串

我开始学习iOS Stringsdict 文件,并在使用以下语法的项目中找到了一些现有代码:

<key>zero</key>
<string>You no message.</string>
Run Code Online (Sandbox Code Playgroud)

根据 CLDR,zero在英语中是无效的复数​​形式,我们希望使用明确的复数规则(=0使用 ICU MessageFormat 时)

我试图找到如何在 iOS Stringsdict 文件中使用显式复数规则,但找不到任何方法来实现这一点。有人可以确认这是否受支持吗?


解决方案示例(我无法测试它们,但也许有人可以?)

<key>0</key>
<string>You no message.</string>
Run Code Online (Sandbox Code Playgroud)

或者

<key>=0</key>
<string>You no message.</string>
Run Code Online (Sandbox Code Playgroud)

关于 ICU MessageFormat 的 CLDR 实现的显式复数规则部分的额外参考:

https://formatjs.io/guides/message-syntax/#plural-format

=value 这用于匹配特定值,而不管当前语言环境的多个类别。

localization internationalization messageformat ios cldr

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

有什么方法可以访问 Next.js 中的 `__filename` 吗?

我正在开发一个自定义 i18n 模块,并且希望替换此代码(这是一个“关于我们”页面):

  const messages = (await import(`./about-us.${locale}.json`))
    .default as Messages;
Run Code Online (Sandbox Code Playgroud)

经过

  const messages = (
    await import(`./${__filename.replace('.tsx', `.${locale}.json`)}`)
  ).default as Messages;
Run Code Online (Sandbox Code Playgroud)

不幸的__filename/index.js(我猜是因为 Webpack?) - 有什么方法可以实现我在示例中尝试做的事情,或者需要直接内置 Next.js 才能工作?

javascript node.js typescript reactjs next.js

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