CN107947897A - 用于网络传输的信息编码方法和装置 - Google Patents
用于网络传输的信息编码方法和装置 Download PDFInfo
- Publication number
- CN107947897A CN107947897A CN201711020634.3A CN201711020634A CN107947897A CN 107947897 A CN107947897 A CN 107947897A CN 201711020634 A CN201711020634 A CN 201711020634A CN 107947897 A CN107947897 A CN 107947897A
- Authority
- CN
- China
- Prior art keywords
- array
- data
- byte type
- information
- type data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0078—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
- H04L1/0083—Formatting with frames or packets; Protocol or part of protocol for error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
Abstract
本发明揭示了一种用于网络传输的信息编码方法,包括获取客户端录入的不同类别的信息,将获取的信息转换为对应的字节型数据,对转换得到的字节型数据进行编码,得到预设数据格式的编码数据,编码数据包括长度数组、标记数组、布尔数组和值数组,长度数组用于存储字节型数据的字节数,标记数组用于标记字节型数据的类别,值数组用于存储字节型数据,布尔数组用于标记编码数据是否为嵌套结构。通过对信息进行字节型数据编码,不但使信息在网络传输中占用较少的字节,节省网络带宽资源,而且极大的提高了信息在网络传输过程中的保密性。
Description
技术领域
本公开涉及互联网应用技术领域,特别涉及用于网络传输的信息编码方法和装置。
背景技术
随着互联网应用技术的发展,在Internet环境中以独立于应用程序或服务提供商的方式描述和交换信息,实现信息的跨平台、分布式处理,显得越来越重要。
现有技术中,通过XML(Extensible Markup Language,可扩展标记语言) 或者JSON(Java Script Object Notation,JS对象标记)对客户端或服务器端的信息进行编码,获得易于在客户端或服务器端之间传输的编码数据。XML或者 JSON作为一种信息编码格式,具有结构简洁、层次清晰以及可扩展性强等优点。
由于XML或者JSON均采用字符编码的方式对信息进行编码,导致获得的编码数据的构造复杂,并包括较多的冗余数据,浪费网络带宽资源。同时,由于编码数据是可读性较强的字符,造成信息在网络传输过程中的保密性较差。
发明内容
为了解决相关技术中存在的信息在网络传输中的保密性较差的技术问题,本公开提供了一种用于网络传输的信息编码方法及装置。
一种用于网络传输的信息编码方法,所述方法包括:
获取客户端录入的不同类别的信息;
将获取的所述信息转换为对应的字节型数据;
对转换得到的所述字节型数据进行编码,得到预设数据格式的编码数据,所述编码数据包括长度数组、标记数组、布尔数组和值数组,所述长度数组用于存储所述字节型数据的字节数,所述标记数组用于标记所述字节型数据的类别,所述值数组用于存储所述字节型数据,所述布尔数组用于标记所述编码数据是否为嵌套结构。
在其中一个示例性实施例中,通过所述布尔数组标记的所述编码数据是嵌套结构,所述值数组的数据格式和所述编码数据的所述预设数据格式一样,所述值数组还包括次级长度数组、次级标记数组、次级布尔数组和次级值数组。
在其中一个示例性实施例中,通过所述布尔数组标记的所述编码数据是非嵌套结构,所述值数组仅包括具有非嵌套结构的字节型数据。
在其中一个示例性实施例中,所述值数组包括至少一个所述字节型数据,同一个所述值数组中的所述字节型数据具有相同的数据格式。
在其中一个示例性实施例中,所述长度数组包括两个字节,所述长度数组的值可以是0至65535中任意一个整数。
在其中一个示例性实施例中,所述标记数组包括两个字节,所述标记数组的值可以是0至65535中任意一个整数。
在其中一个示例性实施例中,所述布尔数组包括一个字节,所述布尔数组的值可以是0或者1,值为0的所述布尔数组标记的所述编码数据是嵌套结构;值为1的所述布尔数组标记的所述编码数据是非嵌套结构。
在其中一个示例性实施例中,所述对转换得到的所述字节型数据进行编码,得到预设数据格式的编码数据之后,所述方法还包括:
将所述编码数据上传到服务器,通过所述服务器对所述编码数据进行解析,得到由所述客户端录入的所述信息。
一种用于网络传输的信息编码装置,所述方法包括:
获取模块,用于获取客户端录入的不同类别的信息;
转换模块,用于将获取的所述信息转换为对应的字节型数据;
编码模块,用于对转换得到的所述字节型数据进行编码,得到预设数据格式的编码数据,所述编码数据包括长度数组、标记数组、布尔数组和值数组,所述长度数组用于存储所述字节型数据的字节数,所述标记数组用于标记所述字节型数据的类别,所述值数组用于存储所述字节型数据,所述布尔数组用于标记所述编码数据是否为嵌套结构。
在其中一个示例性实施例中,所述装置还包括:
上传模块,用于将所述编码数据上传到服务器,通过所述服务器对所述编码数据进行解析,得到由所述客户端录入的所述信息。
本公开的实施例提供的技术方案可以包括以下有益效果:获取客户端录入的不同类别的信息,将获取的信息转换为对应的字节型数据,对转换得到的字节型数据进行编码,得到预设数据格式的编码数据,编码数据包括长度数组、标记数组、布尔数组和值数组,长度数组用于存储字节型数据的字节数,标记数组用于标记字节型数据的类别,值数组用于存储字节型数据,布尔数组用于标记编码数据是否为嵌套结构,通过字节型数据对信息进行转换,并通过由字节型数据构成的数组对信息进行编码,由于字节型数据是不易读取的二进制数据,能够极大提升信息在网络传输过程中的保密性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。
图1是一示例性实施例示出的用于网络传输的信息编码方法的流程图。
图2是根据图1对应实施例示出的方法获得的编码数据的拓扑图。
图3是编码数据中的长度数组的取值范围的示意图。
图4是编码数据中的标记数组的取值范围的示意图。
图5是编码数据中的布尔数组的取值范围的示意图。
图6是一示例性实施例示出的用于网络传输的信息编码装置的框图。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1是一示例性实施例示出的用于网络传输的信息编码方法的流程图。如图1所示,该方法包括以下步骤:
在步骤110中,获取客户端录入的不同类别的信息。
客户端,是指与服务器相对应,为用户提供本地服务的程序。例如,万维网使用的网页浏览器,电子邮件客户端,即时通讯的客户端软件,网页游戏提供的web客户端通过动态页面技术提供的客户端软件。
在一个具体的实施例中,用户通过网页游戏客户端客户端录入不同类别的信息,包括该用户的用户ID和密码,用户进入游戏之后选择的游戏服务器区域,游戏人物角色和任务设定等不同类别的信息。这些信息被录入到游戏客户端以后,都需要通过网络传输给游戏服务器端。通过获取已经录入到游戏客户端的不同类别的信息,后续通过对信息进行编码获得特定数据格式的编码数据,以使得这种特定数据格式的编码数据能够非常适合在客户端到服务器端之间进行网络传输。
在步骤130中,将获取的信息转换为对应的字节型数据。
字节型数据,计算机中用于存放二进制数据类型的一种数据。其中,字节是指计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。
通常,用户录入到客户端的信息可以是通过键盘或者其它人机交互界面输入到客户到的信息。
在一个具体的应用场景中,用户输入用户ID和密码到一个游戏客户端的登录界面进行游戏登录。当进入游戏以后,开始选择游戏的网络服务器分区以及用户在游戏中的人物角色和游戏任务。
表1为录入到游戏客户端的不同类别的信息。如表1所示,录入到游戏客户端的不同类别的信息包括用户登录游戏客户端的用户ID和用户密码,用户选择的服务器分区号,用户在游戏中设定的人物角色和游戏任务的代号。
信息 | 长度数组 | 标记数组 | 布尔数组 | 值数组 |
用户ID | 12 | 1 | 1 | testnickname |
用户密码 | 11 | 2 | 1 | TEST0000004 |
服务器分区号 | 12 | 3 | 1 | ecf70033c581 |
人物角色代号 | 12 | 4 | 1 | ecf70033c583 |
游戏任务代号 | 11 | 5 | 1 | ecf70033c587 |
表1
在步骤150中,对转换得到的字节型数据进行编码,得到预设数据格式的编码数据。
数据格式,是指数据按一定的顺序和结构进行编排的构成方式。例如,编码数据由四个按顺序排列的字节型数组构成的数据格式。
图2是根据图1对应实施例示出的方法获得的编码数据的拓扑图。
如图2所述,对转换得到的字节型数据进行编码,得到预设数据格式的编码数据100。其中,该预设数据格式的编码数组100包括长度数组A、标记数组A、布尔数组A和值数组A四个字节型数组。其中,字节型数组由字节型数据构成。长度数组用于存储字节型数据的字节数,标记数组用于标记字节型数据的类别,值数组用于存储字节型数据,布尔数组用于标记编码数据是否为嵌套结构。
嵌套结构,是指数据的组成部分具有和该数据一样的数据格式。
优选地,布尔数组A标记的字节型数据是嵌套结构,值数组A是具有嵌套结构的字节型数组,具有和编码数据100一样的预设数据结构。值数组A包括长度数组B、标记数组B、布尔数组B和值数组B四个字节型子数组。
优选地,布尔数组B标记的编码数据是嵌套结构,值数组B是具有嵌套结构的字节型数组,值数组B具有和编码数据100一样的预设数据结构。值数组B包括长度数组C、标记数组C、布尔数组C和值数组C四个字节型子数组。
优选地,布尔数组C标记的所述字节型数据是非嵌套结构,值数组C的数据格式是不具有嵌套结构的的普通型字节型数据格式。
普通型字节型数据格式,即数据的组成部分不会同该数据具有相同的数据格式,例如,一个单一的字节型数据。
优选地,值数组可以存储至少一个字节型数据,同一个值数组存储的字节型数据具有相同的数据格式。例如,值数组B中除了可以包括长度数组C、标记数组C、布尔数组C和值数组C四个字节型子数组之外,还可以包括四个数据结构分别和长度数组C、标记数组C、布尔数组C和值数组C一样的字节型数组。
图3是编码数据中的长度数组的取值范围的示意图。
优选地,如图3所示,长度数组是一个包括两个字节的二进制字节数组,长度数组存储的数据的取值范围为0000到FFFF(十六进制),换算成十进制即为0至65535,为表述简洁,本文通过十六进制表示二进制数据,下同。
图4是编码数据中的标记数组的取值范围的示意图。
优选地,如图4所示,标记数组是一个包括两个字节的字节数组,标记数组存储的数据的取值范围为0000到FFFF(十六进制),换算成十进制即为0至 65535。
图5是编码数据中的布尔数组的取值范围的示意图。
优选地,如图5所示,布尔数组是一个包括一个字节的字节数组,布尔数组的取值范围为0至1。值为0的布尔数组标记的编码数据是嵌套结构;值为1 的布尔数组标记的编码数据是非嵌套结构。
在一个具体的应用场景中,用户通过输入用户ID和密码登录到一个客户端游戏登录界面,然后选择游戏的网络服务器分区以及用户在游戏中的人物角色和本次游戏的游戏任务。
其中,表2是对应不同类别信息的字节型数据(通过十六进制表示的二进制数据)。如表2所示,长度数组用于记录数据长度;标记数组用于记录信息的类别,例如,用户ID被预先定义为第一类别,密码为第二类别等;值为1的布尔数组表示该编码数据为非嵌套结构;值数组用于存储不同类别信息对应的字节型数据,例如,用户ID对应的字节型数据“656366373030333363353837”、密码对应的字节型数据“5445535430303030303034”。
信息 | 长度数组 | 标记数组 | 布尔数组 | 值数组 |
用户ID | 000C | 1 | 1 | 656366373030333363353837 |
密码 | 000B | 2 | 1 | 5445535430303030303034 |
服务器分区号 | 000C | 3 | 1 | 656366373030333363353837 |
人物角色号 | 000C | 4 | 1 | 656366373030333363353833 |
游戏任务号 | 000B | 5 | 1 | 656366373030333363353831 |
表2
在一示例性实施例示出的用于网络传输的信息编码方法,对转换得到的字节型数据进行编码,得到预设数据格式的编码数据之后,所述方法还包括将编码数据上传到服务器,通过服务器对编码数据进行解析,得到由客户端录入的信息。
图6是一示例性实施例示出的用于网络传输的信息编码装置的框图。如图6 所示,该装置包括但不限于:获取模块610,转换模块630,编码模块650。
获取模块610,用于获取客户端录入的不同类别的信息;
转换模块630,用于将获取的信息转换为对应的字节型数据;
编码模块650,用于对转换得到的字节型数据进行编码,得到预设数据格式的编码数据,编码数据包括长度数组、标记数组、布尔数组和值数组,长度数组用于存储字节型数据的字节数,标记数组用于标记字节型数据的类别,值数组用于存储字节型数据,布尔数组用于标记编码数据是否为嵌套结构。
另一示例性实施例示出的用于网络传输的信息编码装置还包括上传模块,用于将编码数据上传到服务器,通过服务器对所述编码数据进行解析,得到由客户端录入的信息。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (10)
1.一种用于网络传输的信息编码方法,其特征在于,所述方法包括:
获取客户端录入的不同类别的信息;
将获取的所述信息转换为对应的字节型数据;
对转换得到的所述字节型数据进行编码,得到预设数据格式的编码数据,所述编码数据包括长度数组、标记数组、布尔数组和值数组,所述长度数组用于存储所述字节型数据的字节数,所述标记数组用于标记所述字节型数据的类别,所述值数组用于存储所述字节型数据,所述布尔数组用于标记所述编码数据是否为嵌套结构。
2.根据权利要求1所述的方法,其特征在于,通过所述布尔数组标记的所述编码数据是嵌套结构,所述值数组的数据格式和所述编码数据的所述预设数据格式一样,所述值数组还包括次级长度数组、次级标记数组、次级布尔数组和次级值数组。
3.根据权利要求1所述的方法,其特征在于,通过所述布尔数组标记的所述编码数据是非嵌套结构,所述值数组仅包括具有非嵌套结构的字节型数据。
4.根据权利要求1所述的方法,其特征在于,所述值数组包括至少一个所述字节型数据,同一个所述值数组中的所述字节型数据具有相同的数据格式。
5.根据权利要求1至4任意之一所述的方法,其特征在于,所述长度数组包括两个字节,所述长度数组的值可以是0至65535中任意一个整数。
6.根根据权利要求1至4任意之一所述的方法,其特征在于,所述标记数组包括两个字节,所述标记数组的值可以是0至65535中任意一个整数。
7.根据权利要求1至4任意之一所述的方法,其特征在于,所述布尔数组包括一个字节,所述布尔数组的值可以是0或者1,值为0的所述布尔数组标记的所述编码数据是嵌套结构;值为1的所述布尔数组标记的所述编码数据是非嵌套结构。
8.根据权利要求1所述的方法,其特征在于,所述对转换得到的所述字节型数据进行编码,得到预设数据格式的编码数据之后,所述方法还包括:
将所述编码数据上传到服务器,通过所述服务器对所述编码数据进行解析,得到由所述客户端录入的所述信息。
9.一种用于网络传输的信息编码装置,其特征在于,所述方法包括:
获取模块,用于获取客户端录入的不同类别的信息;
转换模块,用于将获取的所述信息转换为对应的字节型数据;
编码模块,用于对转换得到的所述字节型数据进行编码,得到预设数据格式的编码数据,所述编码数据包括长度数组、标记数组、布尔数组和值数组,所述长度数组用于存储所述字节型数据的字节数,所述标记数组用于标记所述字节型数据的类别,所述值数组用于存储所述字节型数据,所述布尔数组用于标记所述编码数据是否为嵌套结构。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
上传模块,用于将所述编码数据上传到服务器,通过所述服务器对所述编码数据进行解析,得到由所述客户端录入的所述信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711020634.3A CN107947897A (zh) | 2017-10-27 | 2017-10-27 | 用于网络传输的信息编码方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711020634.3A CN107947897A (zh) | 2017-10-27 | 2017-10-27 | 用于网络传输的信息编码方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107947897A true CN107947897A (zh) | 2018-04-20 |
Family
ID=61935713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711020634.3A Pending CN107947897A (zh) | 2017-10-27 | 2017-10-27 | 用于网络传输的信息编码方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107947897A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109697280A (zh) * | 2018-12-27 | 2019-04-30 | 北京中电普华信息技术有限公司 | 一种大并发自动编码生成方法及系统 |
CN110120819A (zh) * | 2019-04-26 | 2019-08-13 | 矩阵元技术(深圳)有限公司 | 一种布尔电路编码方法、装置及系统 |
CN112417815A (zh) * | 2020-11-18 | 2021-02-26 | 红有软件股份有限公司 | 一种大数据处理中类别组合数据的动态编码方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1288342A (zh) * | 2000-10-24 | 2001-03-21 | 深圳黎明电脑网络有限公司 | 移动增值业务的动态实现方法及装置 |
CN102750268A (zh) * | 2012-06-19 | 2012-10-24 | 山东中创软件商用中间件股份有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
CN104199927A (zh) * | 2014-09-03 | 2014-12-10 | 腾讯科技(深圳)有限公司 | 数据处理方法及数据处理装置 |
US8996578B1 (en) * | 2007-08-02 | 2015-03-31 | Amazon Technologies, Inc. | High efficiency binary encoding |
CN105531672A (zh) * | 2013-07-12 | 2016-04-27 | 起元科技有限公司 | 解析器生成 |
CN106681968A (zh) * | 2016-12-21 | 2017-05-17 | 桂林力港网络科技股份有限公司 | 一种批量数值型数据的传输方法、接收终端及发送终端 |
-
2017
- 2017-10-27 CN CN201711020634.3A patent/CN107947897A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1288342A (zh) * | 2000-10-24 | 2001-03-21 | 深圳黎明电脑网络有限公司 | 移动增值业务的动态实现方法及装置 |
US8996578B1 (en) * | 2007-08-02 | 2015-03-31 | Amazon Technologies, Inc. | High efficiency binary encoding |
CN102750268A (zh) * | 2012-06-19 | 2012-10-24 | 山东中创软件商用中间件股份有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
CN105531672A (zh) * | 2013-07-12 | 2016-04-27 | 起元科技有限公司 | 解析器生成 |
CN104199927A (zh) * | 2014-09-03 | 2014-12-10 | 腾讯科技(深圳)有限公司 | 数据处理方法及数据处理装置 |
CN106681968A (zh) * | 2016-12-21 | 2017-05-17 | 桂林力港网络科技股份有限公司 | 一种批量数值型数据的传输方法、接收终端及发送终端 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109697280A (zh) * | 2018-12-27 | 2019-04-30 | 北京中电普华信息技术有限公司 | 一种大并发自动编码生成方法及系统 |
CN110120819A (zh) * | 2019-04-26 | 2019-08-13 | 矩阵元技术(深圳)有限公司 | 一种布尔电路编码方法、装置及系统 |
CN110120819B (zh) * | 2019-04-26 | 2023-07-21 | 矩阵元技术(深圳)有限公司 | 一种布尔电路编码方法、装置及系统 |
CN112417815A (zh) * | 2020-11-18 | 2021-02-26 | 红有软件股份有限公司 | 一种大数据处理中类别组合数据的动态编码方法 |
CN112417815B (zh) * | 2020-11-18 | 2024-01-23 | 红有软件股份有限公司 | 一种大数据处理中类别组合数据的动态编码方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10503834B2 (en) | Template generation for a conversational agent | |
CN103077185B (zh) | 一种基于对象的自定义扩展信息的方法 | |
CN102750268A (zh) | 一种对象序列化方法、对象反序列化方法、装置及系统 | |
CN107947897A (zh) | 用于网络传输的信息编码方法和装置 | |
Grigorchuk et al. | Spectra of Schreier graphs of Grigorchuk’s group and Schroedinger operators with aperiodic order | |
CN111090417B (zh) | 二进制文件解析方法、装置、设备及介质 | |
CN105260354A (zh) | 一种基于关键词字典树构造的中文ac自动机工作方法 | |
US20190236155A1 (en) | Feedback for a conversational agent | |
CN101526963A (zh) | 网页编码识别方法、装置和终端设备 | |
CN103543980B (zh) | 数字数据处理的方法及装置 | |
CN112882974A (zh) | 一种json数据转换方法、装置、计算机设备和存储介质 | |
CN107220274A (zh) | 一种可视化数据接口集市实现方法 | |
EP3486842A1 (en) | Template generation for a conversational agent | |
CN105022619A (zh) | 一种代码数据处理方法及装置 | |
CN102708106B (zh) | Exi 编码器 | |
CN104750468B (zh) | 一种服务端拓扑数据转换方法和转换装置 | |
CN108366050A (zh) | 一种通用通信协议处理方法 | |
CN102033959A (zh) | 一种分布式计算系统中对象传递的方法 | |
CN114443592A (zh) | 数据存储方法、装置、电子设备和存储介质 | |
CN101617307B (zh) | 编解码设备和方法 | |
Levitin et al. | M/n CCS: Linear consecutively connected systems subject to combined gap constraints | |
CN101261643A (zh) | 网站页面信息统计方法及装置 | |
CN104756138B (zh) | 信息编码方法、系统以及设备 | |
CN105793842B (zh) | 序列化消息之间的转换方法和装置 | |
US20120110487A1 (en) | Numerical graphical flow diagram conversion and comparison |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180420 |
|
RJ01 | Rejection of invention patent application after publication |