Posts

Showing posts from August, 2019

Confluence 6.15 修改历史(Change-History)宏

Image
修改历史(Change-History)宏显示了页面一个的更新历史:版本号,作者,日期和备注。这些内容将会在同一栏中进行显示。 屏幕截图:Confluence 中的修改历史(Change-History)宏 为了向页面中插入修改历史宏:  从编辑工具栏中,选择 插入( Insert )    >  其他宏(Other Macros) 找到并且选择需要的宏。 可用使用自动完成加快这个过程: 输入  {  然后开始输入你希望插入的宏的名字,你将会看到建议的宏的列表。在这个列表中,我们插入 cheese 宏(cheese macro)。 如果需要对已经存在的宏进行编辑: 单击宏的占位符,然后选择  编辑(Edit) 。这将打开宏的细节,你可以对宏的参数进行编辑。 注意: 这个宏没有参数 Wiki markup example 宏名称: change-history 宏内容: None {change-history} https://www.cwiki.us/display/CONF6ZH/Change-History+Macro

Confluence 6.15 博客页面(Blog Posts)宏参数

参数是让你可以用来控制宏的格式和输出的选项。在 Confluence 存储格式或者 Wiki 标记(wikimarkup)中使用的参数名与在宏浏览器中使用的标签名是不同的,在下面我们将会用括号列出  ( example) 。 参数 是否是必须 默认值 说明 显示的内容类型(Content Type to Display) ( content ) No titles 可用的值: titles  — 在博客页面中仅显示标题。 excerpts  — 为美国博客显示短摘要。如果博客有包含摘要宏,那么博客页面宏将会显示博客摘要中的内容。如果博客没有摘要宏,那么博客页面将会显示博客的前几个句子。 entire  - 为每一个博客显示完整的内容。 时间帧(Time Frame) ( time ) No 无限制 指定 Confluence 在博客中查找的时间范围。 可用的值: m  — 分钟 h  — 小时, 如果你指定为 ' 12h ' 的话,那么将会显示最新 12 个小时添加的博客。 d  — 天,如果你指定为 ' 7d ' 的话,那么将会显示博客最新七天的博客。 w  — 周 标签限制(Restrict to these Labels) (label ) No None 通过标签过来结果。宏将会仅仅显示包含有你指定标签的博客,换句话说就是按照标签过滤。 你可以通过逗号分隔符来指定一个或者多个标签。 如果你希望扩展标签的的匹配内容,你可以在标签名字前加一个横线(-)。例如:如果你指定一个标签的名字为  -badpage  那么你将会找到所有没有标记为 'badpage' 标签的页面。 如果你希望某一个页面 必须包含有 某一个标签值,你需要在标签值之前加一个加号(+)。例如:如果你指定一个标签  +superpage,+goodpage  你将会找到页面至少包含有 2 个标签,而且这些页面的标签中都包含有字符 'superpage' 和 'goodpage'。 作者限制(Restrict to theseAuthors ) (author ) No None 对返...

Confluence 6.15 博客页面(Blog Posts)宏

Image
博客页面宏允许你 Confluence 页面中显示博客页面。通过单击博客的标题将会把你链接到博客页面中。 使用博客页面宏 为了将博客页面宏添加到页面中:  从编辑工具栏中,选择 插入( Insert )    >  其他宏(Other Macros) 找到并且选择需要的宏。 可用使用自动完成加快这个过程: 输入  {  然后开始输入你希望插入的宏的名字,你将会看到建议的宏的列表。在这个列表中,我们插入 cheese 宏(cheese macro)。 如果需要对已经存在的宏进行编辑: 单击宏的占位符,然后选择  编辑(Edit) 。这将打开宏的细节,你可以对宏的参数进行编辑。 https://www.cwiki.us/display/CONF6ZH/Blog+Posts+Macro

Confluence 6.15 附件宏参数

参数 参数名称 默认值 描述 Filename Patterns (patterns ) all   Attachment Labels (labels ) (None) 标签(labels)的列表,用来过滤附件的显示。如果你希望输入多个标签的话,请使用逗号分隔符来分隔需要使用的标签。Confluence 将会仅显示附件,这个附件具有 所有(all) 标记的标签。匹配条件是是 AND 而不是 OR。有关对附件进行标签的相关信息,请参考  Add, Remove and Search for Labels  页面中的内容。 Include Old Attachment Versions (old ) false 如果设置值为  true  的话,将会包含前期的所有版本在列表中。 Sort By (sortBy )   date 为了对附件进行排序,请注意,用户对页面进行查看的时候,用户可以通过单击每一个列表的头部来对列表进行排序。可以进行排序的变量有: 日期(date)  – 对日期进行排序(最新的排在前面) 大小(size) – 按照从大到小的顺序进行排序 名字(name) – 按照字符顺序进行排序 创建日期(created date)  - 按照创建日期的倒序进行排序(最新的排在前面) Sort Order (sortOrder )   ascending 使用组合的 排序( Sort By ) 参数进行排序,来对附件按照升序或者降序进行排序。 Allow Upload (upload )   true 如果被选中,附件的列表将会包含运行用户进行浏览和附加一个新文件的选项。 Page Title (page )   (None) 被用来从其他页面中显示附件。如果你不输入页面的标题的话,宏将会显示附加到当前页面的所有文件。 Show Previews ( preview )   true 被用来显示一个附件文件的预览。如果是 true 的话,当列表项目被展开的时候预览将会显示。 Wiki 标记(markup) 示例 宏名称:   attachme...

Confluence 6.15 使用附件宏

Image
希望添加附件宏到一个页面中: 从编辑工具栏中,选择 插入( Insert )    >  其他宏(Other Macros) 找到并且选择需要的宏。 可用使用自动完成加快这个过程: 输入  {  然后开始输入你希望插入的宏的名字,你将会看到建议的宏的列表。在这个列表中,我们插入 cheese 宏(cheese macro)。 如果需要对已经存在的宏进行编辑: 单击宏的占位符,然后选择  编辑(Edit) 。这将打开宏的细节,你可以对宏的参数进行编辑。 https://www.cwiki.us/display/CONF6ZH/Attachments+Macro

Confluence 6.15 附件(Attachments )宏

Image
附件宏显示添加到一个页面中的所有文件列表。 同时附件宏允许用户(用户需要具有正确的权限)来进行下面的操作: 直接从列表中上传一个文件到页面 编辑附件属性和标签 删除一个附件文件(这个将会删除文件的所有版本) 预览图片附件 下载附加到页面中的所有文件, 注意:如果你的附件非常大的话,你可用使用宏参数来关闭预览功能。 屏幕截图:附件宏显示一个附件的细节 https://www.cwiki.us/display/CONF6ZH/Attachments+Macro

Confluence 6.15 锚点(Anchor)宏

允许你链接到页面的特定部分。有关如何使用锚点的内容,请参考页面  Anchors  页面中的详细内容。 Wiki 标记(markup) 示例 宏名称:   anchor 宏内容: None。 {anchor:here} https://www.cwiki.us/display/CONF6ZH/Anchor+Macro

Confluence 6 评论一个文件

Image
无论是一个图片 —— 例如一个模拟的新市场计划需要反馈,还是一个 PDF 文件,一个演讲稿,或者任何你可以在 Confluence 中预览的文件。你可以在预览的的任何位置放置一个热点然后添加你的评论后开始对话。 希望对一个文件进行评论: 单击文件预览中缩略图或者链。 从预览文件的底部拖动一个热点(Pin)图标放置到任何你希望进行评论的地方。 添加的你评论后  保存(Save) 。 热点的评论与页面的评论是相同的( inline comments )。你可以使用  @mentions  和  links ,然后放置然后数量的热点图标。你甚至可以简单的添加宏  macros ,例如使用 Wiki 标记的自动完成添加代码宏。任何具有对页面添加评论的用户都可以对文件的评论进行操作。 当你对文件进行预览的时候,你可以看到在这个版本文件中已经存在的热点评论。选择一个热点来查看评论。 一旦针对评论的对话完成的话,你可以在查看中关闭评论来隐藏(或者任何回复)。如果你需要再次对评论进行解决,你可以选择重新打他们。在查看视图中进入   >  解决评论(Resolved comments) 。 解决的评论(Resolved comments):  选择 更多选项(more options)按钮来显示或者隐藏已经解决的评论。 评论(Comments): 拖动一个热点到文件中来进行评论。 如果你的文件是存储在 Web 服务器上并且是添加 URL 到 Confluence 中或者你的文件不能够被预览(例如视频,压缩文件和一些其他文件类型),你就不能添加评论到这个文件中你不能添加到文件中。 当你上传文件新版本后,你的评论将会发生什么? 评论只针对一个特定文件中的版本。这个主要是为了避免文件或者图片热点被多次修改二产生的混乱。 为了查看文件前一个版本的列表方式评论: 单击缩略图或者链接来对文件进预览。 在顶部左侧下拉选择中文件名,并且选择前一个版本。 针对前一个版本的的所有热点的评论将会显示出来。 你可以在一个文件中添加多少评论? 实际上,针对 Confluence 的文件评论数量是没有限制的。但是 Confluence 只显示100 条评论。请...

Confluence 6 分享一个文件

Image
协同合作和编辑不仅仅是发生在页面中,很多时候你需要与你的项目小组针对文档,报告,图片,表格进行协同操作。不管是针对性的市场计划或者一个完整的项目计划,你可以在 Confluence 中让你的项目小组成员针对你的文档提供反馈,并让你们能够协同进行工作。 分享一个文件 在一个页面中你可能有很多文件,但是你只希望你的项目小组成员只针对其中的一个文件提供反馈。你可以简单的对需要反馈的文件分享到你的项目小组中。 与分享页面的方法相同: 单击缩略图或者链接来对文件进行预览。 选择  分享(Share) 按钮。 输入一个邮件地址,用户名或者用户组名,然后添加你的消息后单击发送。 你的项目组成员将会获得你的邮件和你的消息,以及分享文件的链接来查看分享的文件。 分享的通知只会通过邮件进行发送,这个通知不会显示在 工作盒(workbox)   中。 https://www.cwiki.us/display/CONF6ZH/Share+and+Comment+on+Files

Confluence 6 在一个空间中查看所有附加的文件

Image
有下面 2 种方法可以让你查看空间的所有附件。你可以: 使用  Space Attachments Macro  来在一个页面中显示列表文件。 进入空间后,然后从边栏的底部选择 空间工具(Space tools)> 内容工具(Content Tools) 。  然后选择 附件(Attachments) 。 你可以对显示的文件进行过滤,仅仅显示具有特定标签或者扩展名的文件。 屏幕截图:空间附件宏 https://www.cwiki.us/display/CONF6ZH/Manage+Files

Confluence 6 编辑一个附加文件的属性

Image
你需要具有空间的 添加附件(Add Attachment)权限来编辑文件的属性。 希望编辑一个附加文件的属性: Go to   >  Attachments 单击你希望编辑附件边上的  属性(Properties) 。 你可以: 修改文件名 修改备注(在文件版本列表中进行使用,同时也会在文件缩略图中使用) 修改 MIME 类型 移动附件到其他页面 添加标签(Label) 修改文件 MIME 类型可能会导致文件显示错误。 https://www.cwiki.us/display/CONF6ZH/Manage+Files

Confluence 6 移动一个文件到其他页面

Image
你需要同时具有 添加页面(Add Page),添加附件(Add Attachment)和删除附件(Remove Attachment)空间权限来移动一个附件文件到其他页面。 希望修改附件附加的页面到其他页面: Go to   >  Attachments 选择你希望移动附件边上的  属性(Properties) 。 输入你希望附件文件移动到新的页面的名字(例如  My Destination Page )。 选择  保存(Save) 。 如果你希望移动文件到其他空间的页面中,在页面名字的前面添加空间的标识(Space Key),例如可以采用下面的个格式  DOC:My Destination Page。 https://www.cwiki.us/display/CONF6ZH/Manage+Files

Confluence 6 上传一个附加文件的新版本

Image
有下面 2 种方法来上传一个附加文件的新版本,你可以: 上传与已有附件具有相同文件名的版本。 使用  上传一个新版本(Upload a new version)     按钮来进行上传(这个在文件预览界面中才能进行上传)不同文件名的附件,这个操作只针对图片和 PDF 文件。 希望查看附件的版本: Go to   >  Attachments 单击附件名字边上的扩展箭头。 所有文件的早期版本都会显示出来。 你不能还原一个文件的早期版本,如果你具有空间管理员权限的话,你可以选择删除一个早期的版本。 https://www.cwiki.us/display/CONF6ZH/Manage+Files

Confluence 6 删除一个附加的文件

Image
你需要具有 删除附件(Delete Attachment)的空间权限来删除一个附加的文件。 希望删除一个附加文件的所有版本: 进入含有附件的页面中。 Go to   >  Attachments 选择你希望删除文件的后面的  删除(Delete) 按钮。 选择  删除(Delete) 来确定你的操作。 删除的文件可以从垃圾箱中进行恢复,你需要具有空间管理员的权限才能进行这个操作。 空间管理员可以删除一个附件的特定版本: Go to   >  Attachments 单击附件名边上的扩展箭头来查看附件的所有版本。 针对需要删除的版本,选择  删除(Delete) 来进行删除。 删除文件的版本是不能从垃圾箱中进行恢复的。 屏幕截图:附件和附件的版本 https://www.cwiki.us/display/CONF6ZH/Manage+Files

Confluence 6 管理文件

Image
文件是被附加到 Confluence 的页面上的。请参考  Upload Files  页面中的内容来了解如何附加文件到页面中。 一旦文件被附加到页面上了,你可以下载,删除和编辑这些文件。例如,你可以根据需要上传一个文件的新版本,或者修改附加的页面为别的页面。 下载附加文件 任何具有查看页面权限的用户同时也可以下载页面中附加的任何文件。 希望下载一个单独的文件: 在文件预览中,单击  下载(Download) Go to   >  Attachments 然后在文件名上单击右键线程保存链接。 希望将页面中附加的所有文件下载成 zip 文件: Go to   >  Attachments 单击  下载全部(Download All) 。 Confluence 没有提供下载一个空间中所有附件的功能。 https://www.cwiki.us/display/CONF6ZH/Manage+Files

MessagePack Jackson 数据大小

我们在使用 MessagePack 对 List 对象数据进行序列化的时候,发现序列化以后的二进制数组数据偏大的情况。 请注意,不是所有的 List 对象都会出现这种情况,这个根据你 List 对象中存储的内容有关。 有关本问题的测试源代码请参考: https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/com/insight/demo/serialize/MessagePackDataTest.java  中的内容。 考察下面的代码: List<MessageData> dataList = MockDataUtils.getMessageDataList(600000); ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()); raw = objectMapper.writeValueAsBytes(dataList); FileUtils.byteCountToDisplaySize(raw.length); logger.debug("Raw Size: [{}]", FileUtils.byteCountToDisplaySize(raw.length)); 我们会发现,针对这个 60 万个对象的 List 的序列化后的数据达到了 33MB。 如果我们再定义  ObjectMapper 对象的时候添加一部分参数,我们会发现大小将会有显著改善。 请参考下面的代码: List<MessageData> dataList = MockDataUtils.getMessageDataList(600000); ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()); objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true); objectMapper.configure(DeserializationF...

MessagePack Java Jackson Dataformat 在 Map 中不使用 String 为 Key 的序列化

当你希望在 Map 中不使用 String 为 Key,那么你需要使用  MessagePackKeySerializer  来为 key 进行序列化。 本测试方法,可以在  https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/com/insight/demo/serialize/MessagePackSerializer.java  中找到。 /** * testMessagePackSerializationMapKey */ @Test @JsonSerialize(keyUsing = MessagePackKeySerializer.class) public void testMessagePackSerializationMapKey() { logger.debug("testMessagePackSerializationNotCloseInputStream"); byte[] bytes = new byte[0]; Integer uuid_a = 101; Integer uuid_b = 102; // Instantiate ObjectMapper for MessagePack ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()); Map<Integer, MessageData> map = new HashMap<>(); MessageData messageData = new MessageData(); // Element A in MAP messageData.setUuid(UUID.randomUUID().toString()); messageData.setName("CWIKI.US - A"); map.put(uuid_a, messageData); // Element B in MAP ...

MessagePack Java Jackson Dataformat 不使用 str8 数据类型的序列化

老的 msgpack-java(例如 0.6.7)并不支持 MessagePack str8 数据类型。 当你的希望的你的应用程序需要支持老的版本的话,你需要禁用这个数据类型,例如使用下面的语句: MessagePack.PackerConfig config = new MessagePack.PackerConfig().withStr8FormatSupport(false); ObjectMapper mapperWithConfig = new ObjectMapper(new MessagePackFactory(config)); // This string is serialized as bin8 type byte[] resultWithoutStr8Format = mapperWithConfig.writeValueAsBytes(str8LengthString); https://www.cwiki.us/display/Serialization/MessagePack+Jackson+Dataformat

MessagePack Java Jackson 在不关闭输入流(input stream)的情况下反序列化多变量

com.fasterxml.jackson.databind.ObjectMapper  在读取输入流变量的时候默认的将会关闭输入流。 如果你不希望关闭输入流,你可以设置  JsonParser.Feature.AUTO_CLOSE_SOURCE  参数为 false。 本测试方法,可以在  https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/com/insight/demo/serialize/MessagePackSerializer.java  中找到。 /** * Serialization Not Close input stream */ @Test public void testMessagePackSerializationNotCloseInputStream() { logger.debug("testMessagePackSerializationNotCloseInputStream"); try { File tempFile = File.createTempFile("messagepack-", "-cwiki.us"); MessagePacker packer = MessagePack.newDefaultPacker(new FileOutputStream(tempFile)); packer.packInt(42); packer.packString("Hello"); packer.close(); FileInputStream in = new FileInputStream(tempFile); ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()); objectMapper.configure(JsonParser.Feature.AUTO_CLOSE_SO...

MessagePack Java Jackson 在不关闭输出流(output stream)的情况下序列化多变量

com.fasterxml.jackson.databind.ObjectMapper  在默认的情况下在写出输入后将会关闭输出流(output stream)。 如果你希望序列化多值变量在同一个输出流的情况下,你不希望在输出完一个就关闭输出流,你可以设置   JsonGenerator.Feature.AUTO_CLOSE_TARGET  参数为 False 。 本测试方法,可以在  https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/com/insight/demo/serialize/MessagePackSerializer.java  中找到。 /** * Serialization Not Close output stream */ @Test public void testMessagePackSerializationNotCloseOutputStream() { logger.debug("testMessagePackSerializationNotCloseOutputStream"); try { File tempFile = File.createTempFile("messagepack-", "-cwiki.us"); OutputStream out = new FileOutputStream(tempFile); ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()); objectMapper.configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false); objectMapper.writeValue(out, 1); objectMapper.writeValue(out, "two"); objectMapper.writeVa...

MessagePack Java Jackson 序列化和反序列化 POJO 为 MessagePack 的数组类型用来与 msgpack-java:0.6 保持兼容性

在 msgpack-java 0.6 或者早期的版本中,POJO 在 MessagePack 中被序列化和反序列化为数组变量。 变量的顺序是基于 Java 类中变量的内部顺序了,这种本来是一种原生的序列化方法,但是会导致一些问题。导致这些问题的原因是在 Java 对象的内部变量的顺序与 Java 实现的顺序不能保证完全的一致。 从另外一个角度来看,使用 jackson-databind 进行的序列化和反序列化方式是基于 POJO 的 Key-Value 对的。因此在 j ackson-dataformat-msgpack  与 POJO 处理的方式是相同的。因此,这就导致了与 msgpack-java:0.6 或者早期的版本在对 POJO 进行序列化和反序列化的时候不兼容。 如果你希望在新的版本中也使用与 msgpack-java:0.6 或者早期版本相同的处理 POJO 的方法,你可以使用  JsonArrayFormat 。具体使用方法如下所示: ObjectMapper objectMapper =  new   ObjectMapper( new   MessagePackFactory()); objectMapper.setAnnotationIntrospector( new   JsonArrayFormat()); https://www.cwiki.us/display/Serialization/MessagePack+Jackson+Dataformat

MessagePack Java Jackson Dataformat - Map 的序列化和反序列化

本测试方法,可以在  https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/com/insight/demo/serialize/MessagePackSerializer.java  中找到。 我们需要定义测试需要的 MAP,定义 Map 的方法你可以在下面的测试程序中找到。 /** * SerializationMap */ @Test public void testMessagePackSerializationMap() { byte[] bytes = new byte[0]; String uuid_a = UUID.randomUUID().toString(); String uuid_b = UUID.randomUUID().toString(); // Instantiate ObjectMapper for MessagePack ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()); Map<String, MessageData> map = new HashMap<>(); MessageData messageData = new MessageData(); // Element A in MAP messageData.setUuid(UUID.randomUUID().toString()); messageData.setName("CWIKI.US - A"); map.put(uuid_a, messageData); // Element B in MAP messageData = new MessageData(); messageData.setUuid(UUID.randomUUID().toString()); messageData.setName("CWIKI.US ...

MessagePack Java Jackson Dataformat - 列表(List)的序列化和反序列化

在本测试代码中,我们定义了一个 POJO 类,名字为 MessageData,你可以访问下面的链接找到有关这个类的定义。 https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/main/java/com/insight/demo/serialize/model/msgpack/MessageData.java 本测试方法,可以在  https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/com/insight/demo/serialize/MessagePackSerializer.java  中找到。 我们需要先定义一个对象的 List 列表。 /** * SerializationList */ @Test public void testMessagePackSerializationList() { byte[] bytes = new byte[0]; String uuid = UUID.randomUUID().toString(); // Instantiate ObjectMapper for MessagePack ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()); List<MessageData> objList = MockDataUtils.getMessageDataList(9); try { // Serialize a Java object to byte array bytes = objectMapper.writeValueAsBytes(objList); logger.debug("Length of Bytes: [{}]", bytes.length); // Deserialize the byte array to a ...

MessagePack Java Jackson Dataformat - POJO 的序列化和反序列化

在本测试代码中,我们定义了一个 POJO 类,名字为 MessageData,你可以访问下面的链接找到有关这个类的定义。 https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/main/java/com/insight/demo/serialize/model/msgpack/MessageData.java POJO 的序列化和反序列化 你仅仅需要对  MessagePackFactory  进行实例化,然后传递参数到  com.fasterxml.jackson.databind.ObjectMapper  的构造方法。 然后你就可以用与  jackson-databind  相同的方法使用  MessagePack  格式化数据。 本测试方法,可以在  https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/com/insight/demo/serialize/MessagePackSerializer.java  中找到。 /** * SerializationPOJO */ @Test public void testMessagePackSerializationPOJO() { byte[] bytes = new byte[0]; String uuid = UUID.randomUUID().toString(); // Instantiate ObjectMapper for MessagePack ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()); MessageData pojo = new MessageData(); pojo.setUuid(uuid); pojo.setName("CWIKI.US"); ...

MessagePack Java Jackson Dataformat - 安装

中文标题【MessagePack 的 Jackson 数据格式】 本页面中的所有示例程序,请到代码库  https://github.com/cwiki-us-demo/serialize-deserialize-demo-java  中下载进行测试。 Jackson 扩展库是一个易读取,同时是使用   MessagePack  创建的组件库,用于从 jackson-databind API 对数据进行编码。 这个组件扩展了标准的 Jackson streaming API ( JsonFactory ,  JsonParser ,  JsonGenerator ), 同时能够更加无缝的集成更加高级别的数据抽象(数据绑定,树模型和插件扩展)。 更多有关 Jackson-annotations 细节,请参考   https://github.com/FasterXML/jackson-annotations 。 这个库针对默认 POJO的序列化/反序列化(serialization/deserialization)不能兼容  msgpack-java v0.6 或者早期的版本。 安装 Maven <dependency>    <groupId>org.msgpack</groupId>    <artifactId>jackson-dataformat-msgpack</artifactId>    <version>(version)</version> </dependency> Sbt libraryDependencies +=  "org.msgpack"   %  "jackson-dataformat-msgpack"   %  "(version)" Gradle repositories {   ...

MessagePack Java 0.6.X 动态类型

我们知道 Java 是一个静态类型的语言。通过输入  Value  MessagePack能够实现动态的特性。 Value  有方法来检查自己的类型( isIntegerType() ,  isArrayType() , 等...),同时也转换为自己的类型 ( asStringValue() ,  convert(Template))。 本代码可以在  https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6DynamicTyping.java  中查看。 package com.insight.demo.msgpack; import org.junit.Test; import org.msgpack.MessagePack; import org.msgpack.type.Value; import org.msgpack.unpacker.Converter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; import static org.msgpack.template.Templates.TString; import static org.msgpack.template.Templates.tList; /**  * MessagePack6Objects  *  * @author yhu  */ public class MessagePack6DynamicTyping {     final Logger logger = LoggerFactory.getLog...

MessagePack Java 0.6.X 可选字段

你可添加一个新的字段来保持可用性。在新字段中使用  @Optional  注解。 @Message public static class MyMessage {     public String name;     public double version;        // new field     @Optional     public int flag = 0; } 如果你尝试反序列化老版本数据的话,可选字段将会被忽略。 https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X

MessagePack Java 0.6.X 不使用注解(annotations)来序列化

如果你不能添加  @Message  到你的定义对象中但是你还是希望进行序列化。你可以使用 register 方法来在类中启用序列化对象。 如下的代码所示: MessagePack msgpack = new MessagePack(); msgpack.register(MyMessage2.class); 例如,如果 MyMessage2 类被包含到了外部的库中了。你没有办法比较容易的编辑源代码,添加  @Message  到源代码中。 register 方法能够允许为 MyMessage2 自动创建一个 serializer 和 deserializer 对。 你可以在执行方面后序列化对象 MyMessage2。 https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X

MessagePack Java 0.6.X List, Map 对象的序列化和反序列化

为了序列化原生的容器对象例如  List 和  Map  对象,你必须使用  Template 。 Template 对象是  serializer 和 deserializer 的配对。例如,为了序列化一个  List  对象,在  List  对象中  Integer  对象为元素,你可以使用下面的方法来创建一个模板对象(Template object)。 Template listTmpl = Templates.tList(Templates.TInteger); 类 tList,   TInteger  是静态方法,字段为  Templates。 一个 List  和  Map  对象的用例如下显示: 本代码可以在  https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Template.java  中查看。 package com.insight.demo.msgpack; import org.junit.Test; import org.msgpack.MessagePack; import org.msgpack.packer.Packer; import org.msgpack.template.Template; import org.msgpack.unpacker.Unpacker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.math.BigInteger; import java.nio.ByteBuffer; import java.util.ArrayList; import java.ut...

MessagePack Java 0.6.X 多种类型变量的序列化和反序列化(serialization/deserialization)

类  Packer / Unpacker  允许序列化和反序列化多种类型的变量,如后续程序所示。这个类启用序列化和反序列化多种类型的变量和序列化主要类型变量以及包装类, String  对象, byte[]  对象,  ByteBuffer  对象等的方法相似。 如上面提示的,你可以序列化和反序列化你自己的对象,前提是你自己的对象需要使用  @Message  注解。 package com.insight.demo.msgpack; import org.junit.Test; import org.msgpack.MessagePack; import org.msgpack.packer.Packer; import org.msgpack.unpacker.Unpacker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.math.BigInteger; import java.nio.ByteBuffer; /** * MessagePack6Types * * @author yhu */ public class MessagePack6Types { final Logger logger = LoggerFactory.getLogger(MessagePack6Types.class); /** * Test MessagePack6Types */ @Test public void testMessagePack6Types() { logger.debug("testMessagePack6Types for Types"); MessagePack msgpack = new MessagePack(); try { // // Serializatio...

MessagePack Java 0.6.X 使用一个消息打包(message-packable)类

使用注解  @Message  来让你可以序列化你自己类中对象的 public 字段。 本代码可以在  https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Object.java  中下载到本地后进行编译测试。 package com.insight.demo.msgpack; import org.junit.Test; import org.msgpack.MessagePack; import org.msgpack.annotation.Message; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.UUID; import static org.junit.Assert.assertEquals; /** * MessagePack6Objects * * @author yhu */ public class MessagePack6Object { final Logger logger = LoggerFactory.getLogger(MessagePack6Object.class); /** * MessageData Message Object */ @Message // Annotation public static class MessageData { // public fields are serialized. public String uuid; public String name; public double version; } /** * Test MessagePack6Objects */ @Test public void testMessagePack6Objects() { ...

MessagePack Java 0.6.X 快速开始指南 - 安装

0.6.x 版本的 MessagePack 已经过期被淘汰了。如果你现在开始使用 MessagePack 话,请不要使用这个版本。 我们再这里保留 0.6.x 版本的内容主要用于参考用途。 最新的 MessagePack 版本请参考: https://github.com/msgpack/msgpack-java  中的项目源代码。 MessagePack 中文文档请参考: http://docs.ossez.com/messagepack-docs/index.html MessagePack 测试和示例源代码: https://github.com/cwiki-us-demo/serialize-deserialize-demo-java 这个指南提供了使用 msgpack-java 的快速指南。在开始的时候,我们将会介绍如何安装 msgpack-java,然后将会运行如何使用 msgpack 来对对象序列化/反序列化(serialize/deserizalize)对象。 安装 你可以使用下面 2 种方法来安装 msgpack-java —— 从 maven 下载或者直接构建 jar 包。 从 Maven2 仓库中进行安装 MessagePack 针对 Java 的使用已经发布到 Maven 的中央仓库中(Maven Central Repository)。你可以使用下面的参数来配置你项目的 pom.xml 文件。 <dependency>      <groupId>org.msgpack</groupId>      <artifactId>msgpack</artifactId>      <version>${msgpack.version}</version> </dependency> 你需要将 ${msgpack.version} 替换为当前的 MessagePack 版本,有关可...

Confluence 6 多媒体文件和在页面中显示文件列表

多媒体文件 文件的预览同时也支持 MP3 音频和 MP4 视频文件。Confluence 使用 HTML 5 来播放附加的音频和视频文件。这个意味着这些文件类型的文件格式,用户可以在支持的浏览器中直接进行播放。 你同时也可以显示其他很多类型的多媒体文件(视频,音频和动画),你需要使用   多媒体(Multimedia)宏 . 显示在线视频(例如 YouTube 或者 Vimeo 视频),你需要使用   组件(Widget)连接器宏 . 在页面中显示文件列表 为了在页面中显示文件列表,我们有多种办法来进行显示,你可以: 使用  附件(Attachments) Macro 来显示当前页面中的附件。 使用  空间附件(Space Attachments) Macro  来显示空间中的所有附件文件。 使用  图片相册(Gallery)Macro  来显示附加到页面中的图片文件的缩略图。 你还可以针对上传,查看,管理文件列表使用  文件列表蓝图(File List blueprint) 。   https://www.cwiki.us/display/CONF6ZH/Display+Files+and+Images

Confluence 6 图片文件

Image
当你对一个页面进行编辑的时候,选择一个图片,将会显示图片属性面板。这个面板允许你设置显示大小,添加边控和特效和链接这个图片到其他页面。 从图片的属性面板,你可以: 为以图片选择一个  显示大小(preset size) 。 为一个图片输入  宽度(width) (输入的宽度在 16px 和 900px 之间 ) 为一个图片添加一个 边框( border ) 链接(Link) 一个图片到页面或者 URL 对齐(Align) 图片(你可以使用左对齐或者右对齐按钮,你也可以为图片选择文字环绕) 添加一个标题,这个标题将会在你鼠标移动到图片上的时候进行显示(进入 属性(Properties) >  标题(Title) ) 添加 alt 文本,这个通常被用来屏幕阅读器,当你的图片不能被显示的时候(进入 属性(Properties) >  标题(Title) ) 为图片来添加  特效(effects)  ,例如阴影或者快照(进入 属性(Properties) >  标题(Title) ) 使用即时照片特效来添加一个图片字幕: 在图片属性面板中 选择  特效(Effects)然后选择插入 即时照片(Instant Camera)  图片特效。 保存页面。 Go to   >  Attachments  进入 'Attachments' 来查看页面。 选择图片文件边上的  属性(Properties) 。 为附件添加  评论(comment) ,这个添加的评论将会显示为图片字幕。 你需要在为你图片每次上传新的版本的时候重新输入评论内容。 请注意:即时照片特效只能够使用拉丁语言文字字符,因为针对多字节语言我们缺少手写样式的字体。 有关图片特效的说明 显示图片特效将会增加 Confluence 的资源消耗。Confluence 限制了针对图片特效使用的线程数量,以保护因为显示了图片特效来拖慢整个 Confluence 站点。 如果 Confluence 已经没有可用的线程来显示图片特效的话,Confluence 页面中有图片特效的内容将不会用特效的方式进行显示。 ...

Confluence 6 Office 和 PDF 文件

插入一个文件到页面中是能够让你将有用的文件,电子表格,幻灯片或者其他可用的文件在你小组中进行分享的好方法。 针对所有的文件类型,你可以选择以链接方式插入一个文件。缩略图将会对文档的内容进行预览同时可以对大小进行调整。 希望你预览一个 Office 或者 PDF 文件,单击链接或者缩略图来显示完整的预览(不需要 Excel,Word 或者 PowerPoint 安装在你的额电脑中)。可选的,在预览界面中选择下载按钮来下载文件后进行离线方式预览。 你甚至可以进行   编辑  和  在 Office 和 PDF 文件中评论 。 https://www.cwiki.us/display/CONF6ZH/Display+Files+and+Images

Confluence 6 预览一个文件

Image
当你浏览一个页面的时候,单击一个图片,文件缩略图或者链接将会运行预览。 预览视图包括了从远程 Web 页面导入的图片文件和已经附加到页面中的文件(尽管有可能这些文件没有在页面中显示)。 在预览中你可以: 现在图片文件。 上传一个文件的新版本(仅针对附件)。 评论一个文件。 通过选择桌面应用编辑一个文件。 在你浏览器中放大和缩小图片文件。 像幻灯片一样来进行浏览,使用前后箭头按钮。 查看附件到页面中的其他文件,和选择缩略图来预览这些文件。 切换到全屏显示模式。 很多文件类型都可以被预览,包括有 Office 文件, PDFs 和其他多种图片类型。   那些文件可以被预览? 图片文件 Office 文件 其他文件 JPEG PNG TIFF PSD WMF EMF ICO ICNS DOC DOCX PPT PPTX XLS XLSX PDF MP3 MP4 查看更多文件(See more files):  显示其他附加到本页面中的文件。 管理这个文件(Manage this file): 下载文件,上传一个文件的新版本或者在你的项目组中分享。 添加一个评论(Add a comment): 拖动 pin 来对文件进行评论。 https://www.cwiki.us/display/CONF6ZH/Display+Files+and+Images

Confluence 6 插入一个文件到你的页面

Image
文件可以在页面中以缩略图或者链接的方式显示。我们有多种办法能够上传文件,请参考  Upload Files  页面。 你可以控制文件如何在你的页面中显示。文件在页面中显示的可用方法与你的文件类型有关。 插入一个文件到你的页面 我们有下面几种办法能够插入一个文件到你的页面中: 在编辑器的工具栏中选择  插入(Insert) >  文件(Files) ,然后选择任何一个前期已经上传到页面中的文件。 直接拖动文件到编辑器(这个方法将会让上传和插入一次完成),或者 输入 ! 然后从自动显示的下拉选择中选择一个附加到页面中的附件。 你的文件将会在你的页面中以缩略图的方式进行显示,单击缩略图可以对缩略图进行大小调整或者显示为链接。 插入一个附加到其他页面中的文件 你可以显示在同一个 Confluence 站点中附加到其他页面中的文件,前提是你需要知道这个文件的名字。 希望显示一个附加到其他页面中的图片 进入  插入(Insert)>文件(Files) 然后选择  搜索其他页面(Search on other pages) 。 输入文件名。 选择在当前空间中进行查找或者搜索  所有空间(All Spaces) 然后选择  搜索(Search) 。 从搜索结果中选择文件,然后选择  插入(Insert) 。 从网页(web)上插入一个图片文件 你可以在 Confluence 中显示一个远程 web 页面中的图片,而不需要讲文件下载后上传到你的 Confluence 站点中。你需要知道远程图片的 URL 地址,而不是远程 Web 页面的地址。 这种方式仅仅针对图片文件有效,不能插入其他类型的文件(例如文档)。 希望从远程 web 页面中显示一个图片: 在你对 Confluence 页面进行编辑的时候,将光标移动到你希望插入远程图片的位置。 选择  插入(Insert) > 文件(Files)  然后选择  远程 web 的图片(Images from the web) 。 输入图片的 URL (例如: http://atlassian.wpengine.netdna-cdn.com/wp-c...