2018年2月28日星期三

开源美图 2018 03 01


Linuxeden 开源社区 --

The post 开源美图 2018 03 01 appeared first on Linuxeden开源社区.

http://ift.tt/2sZtEwY

PHP 5.6.34, 7.0.28, 7.2.3 和 7.1.15 正式发布,多项内容修复


Linuxeden 开源社区 --PHP
PHP

PHP 5.6.34, 7.0.28, 7.1.15, 7.2.3 正式发布了。PHP(PHP:Hypertext Preprocessor)是一种在电脑上执行的脚本语言,主要是用途在于处理动态网页,也包含了命令列执行接口(command line interface),或者产生图形使用者接口(GUI)程式。

版本主要还是修复 bug,改进日志如下:

PHP 7.2.3

– Core:
. Fixed bug #75864 (“stream_isatty” returns wrong value on s390x). (Sam Ding)

– Apache2Handler:
. Fixed bug #75882 (a simple way for segfaults in threadsafe php just with
configuration). (Anatol)

– Date:
. Fixed bug #75857 (Timezone gets truncated when formatted). (carusogabriel)
. Fixed bug #75928 (Argument 2 for `DateTimeZone::listIdentifiers()` should
accept `null`). (Pedro Lacerda)
. Fixed bug #68406 (calling var_dump on a DateTimeZone object modifies it).
(jhdxr)

– LDAP:
. Fixed bug #49876 (Fix LDAP path lookup on 64-bit distros). (dzuelke)

– libxml2:
. Fixed bug #75871 (use pkg-config where available). (pmmaga)

– PGSQL:
. Fixed bug #75838 (Memory leak in pg_escape_bytea()). (ard_1 at mail dot ru)

– Phar:
. Fixed bug #54289 (Phar::extractTo() does not accept specific directories to
be extracted). (bishop)
. Fixed bug #65414 (deal with leading slash while adding files correctly).
(bishopb)
. Fixed bug #65414 (deal with leading slash when adding files correctly).
(bishopb)

– ODBC:
. Fixed bug #73725 (Unable to retrieve value of varchar(max) type). (Anatol)

– Opcache:
. Fixed bug #75729 (opcache segfault when installing Bitrix). (Nikita)
. Fixed bug #75893 (file_get_contents $http_response_header variable bugged
with opcache). (Nikita)
. Fixed bug #75938 (Modulus value not stored in variable). (Nikita)

– SPL:
. Fixed bug #74519 (strange behavior of AppendIterator). (jhdxr)

– Standard:
. Fixed bug #75916 (DNS_CAA record results contain garbage). (Mike,
Philip Sharp)
. Fixed bug #75981 (Prevent reading beyond buffer start in http wrapper).
(Stas)

PHP 7.1.15

– Apache2Handler:
. Fixed bug #75882 (a simple way for segfaults in threadsafe php just with
configuration). (Anatol)

– Date:
. Fixed bug #75857 (Timezone gets truncated when formatted). (carusogabriel)
. Fixed bug #75928 (Argument 2 for `DateTimeZone::listIdentifiers()` should
accept `null`). (Pedro Lacerda)
. Fixed bug #68406 (calling var_dump on a DateTimeZone object modifies it).
(jhdxr)

– PGSQL:
. Fixed #75838 (Memory leak in pg_escape_bytea()). (ard_1 at mail dot ru)

– ODBC:
. Fixed bug #73725 (Unable to retrieve value of varchar(max) type). (Anatol)

– LDAP:
. Fixed bug #49876 (Fix LDAP path lookup on 64-bit distros). (dzuelke)

– libxml2:
. Fixed bug #75871 (use pkg-config where available). (pmmaga)

– Phar:
. Fixed bug #65414 (deal with leading slash when adding files correctly).
(bishopb)

– SPL:
. Fixed bug #74519 (strange behavior of AppendIterator). (jhdxr)

– Standard:
. Fixed bug #75916 (DNS_CAA record results contain garbage). (Mike,
Philip Sharp)
. Fixed bug #75981 (stack-buffer-overflow while parsing HTTP response). (Stas)

PHP 7.0.28

– Standard:
. Fixed bug #75981 (stack-buffer-overflow while parsing HTTP response). (Stas)

PHP 5.6.34
– Standard:
. Fixed bug #75981 (stack-buffer-overflow while parsing HTTP response). (Stas)

下载连接:

http://php.net/distributions/php-5.6.34.tar.gz
http://php.net/distributions/php-7.0.28.tar.gz
http://php.net/distributions/php-7.1.15.tar.gz
http://php.net/distributions/php-7.2.3.tar.gz

转自 http://ift.tt/2F9G8XZ

The post PHP 5.6.34, 7.0.28, 7.2.3 和 7.1.15 正式发布,多项内容修复 appeared first on Linuxeden开源社区.

http://ift.tt/2F1uNWE

ECharts 4.0.4 发布,修正柱状图布局的问题


Linuxeden 开源社区 --ECharts
ECharts

ECharts 4.0.4 已发布,这是一个小的 bug 修复版本:

  • 修正柱状图布局的问题。参见 #7831

ECharts 是一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari 等),底层依赖轻量级的矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。

ECharts 4.0 带来了许多“黑科技”:

  • 千万级数据可视化渲染能力
  • SVG + Canvas 双引擎动力更佳
  • 数据样式分离及扁平配置让开发更便捷
  • 首创无障碍访问支持
  • 微信小程序、PPT,哪里都能用

下载地址:

转自 http://ift.tt/2F0dGIK

The post ECharts 4.0.4 发布,修正柱状图布局的问题 appeared first on Linuxeden开源社区.

http://ift.tt/2CQn6k0

Facebook 构建高性能 Android 视频组件实践之路


Linuxeden 开源社区 --

作者 Udi Cohen     ,译者 孙浩

随着移动设备视频消费的快速增长,为了更高效地呈现内容,Facebook 的移动工程师们面临着新的挑战。比起文本和图片这样的简单 UI 元素,视频需要更多的资源。视频解码器会消耗很多 CPU 资源,创建视频时还需要分配大量内存,同时他们会使用更多的网络带宽来从服务器下载视频数据。在可滚动的容器中播放视频其实是有一定难度的——对设备资源的压力可能会导致视频丢帧,这会使滚动效果变的很差。此外,我们不希望用户等待视频加载,我们也不希望它在播放中碰到缓冲,因此视频播放器需要快速启动并流畅运行。纵观市场上的各种设备,这些问题在 Android 上的挑战还是很大的。

我们最近完成了 Android 平台的 新闻提要技术迁移 ,由我们的开源 UI 渲染框架 Litho 提供技术支持。Litho 支持异步布局和细粒度的回收利用,这不仅有助于优化新闻提要使其更有效地渲染内容,而且可以使我们的代码更健壮、更易于扩展。我们希望将这些改进带到视频功能上来,以改善 Facebook 用户的播放体验,同时也为设计新用例的工程师们提供帮助。

构建一个视频 UI 元素比我们所做的其他 UI 组件更具挑战性。视频组件使用了 Litho 的一些其他组件不需要的高级特性,同时也促使 Litho 创建了一些新的特性。新的 Litho 视频组件引入了一些改进,从新闻提要的滚动性能到更灵活的设计,这些设计可以很容易地在不同的视频功能中重用。这篇文章描述了我们在 Android 应用程序中重写视频播放器时所面临的挑战,以及 Litho 如何帮助克服这些困难的。

视频新闻

新闻提要支持多种视频新闻类型。有些类型的行为和外观与其他的有所不同。视频附件是一种常见的新闻类型,其中有常规视频、Facebook Live 视频、360 度视频、gif 或其他类型的视频,它们会附在一个普通的文章上。

其他的视频新闻类型可以播放生成的视频,赞助商的信息,或者短动画。

想要支持所有这些变种会导致代码难以维护和测试。我们提供视频附件使用的主视频视图类叫 VideoAttachmentView。对于一些新闻类型,我们必须扩展这个视图,以便重用和定制它来适应设计的需要。在某些情况下,我们不能在派生类中进行所有的更改,只能创建一个单独的视图类,这意味着需要将通用逻辑移到帮助类中。这进一步使代码复杂化了。

新闻提要的滚动性能也会受到影响。RecyclerView 仅从相同类的类型中回收视图,这意味着不能为常规视频附件新闻类型回收像 SponsoredVideoAttachmentView 这样的视图,尽管 SponsoredVideoAttachmentView 继承至 VideoAttachmentView。由于这种低效率的原因,RecyclerView 需要分配更多的视图来容纳不同的新闻类型,从而导致了更多的内存占用。另外,在视频视图展现在屏幕上之前,分配行为就要被触发,这增加了它无法及时完成的可能性,甚至可能会导致丢帧。即使在一个新的布局中重用相同的 VideoAttachmentView 来优化它的表现,我们也需要创建一个新的视图类型。因为我们另外添加了一层,这也使得视图层次结构变的更深了。视图层次越深,渲染的时间就越长。

设计视频组件

Litho 用一种叫做“组件”的单位来定义 UI。它支持两种主要类型的组件:MountSpec 和 LayoutSpec。MountSpec 定义了一个 UI 构建块,例如一个文本或图像组件。LayoutSpec 定义一个包含一个或多个组件的布局。在 Litho 中,使用组件结构来构造更复杂的组件是很常见的做法。LayoutSpec 可以定义一个包含其他 LayoutSpec 和 MountSpec 组件的布局,MountSpec 可以呈现一个特定的视图或绘制视图。

视频组件是一个 UI 构建块,这意味着我们需要一个 MountSpec 来定义它。一种方法是创建一个 MountSpec 来呈现 VideoAttachmentView,但我们还需要为其它扩展视图创建另一个 MountSpec, 如 SponsoredVideoAttachmentView。虽然这做也是可行的,但最终我们还会遇到相同的重用性和可维护性的问题。另一种方法是创建一个 MountSpec 只呈现简单的视频视图而不是 VideoAttachmentView,并将其添加到一个特定的新闻类型的 LayoutSpec 中。下图演示了新组件之间的关系:

CoreVideoComponent 是一个有着最简特性的任何视频新闻都需要的 MountSpec。

@MountSpec
public class CoreVideoComponentSpec {
      
  @OnCreateMountContent
  static SimpleVideoView onCreateMountContent(ComponentContext context) {
    return new SimpleVideoView(context);
  }
      
  @OnPrepare
  static void onPrepare(
      ComponentContext context,
      @Prop VideoParams videoParams) {
    prefetchVideo(videoParams);
  }
      
  @OnMount
  static void onMount(
      ComponentContext context,
      SimpleVideoView videoView,
      @Prop VideoParams videoParams) {
    initVideoPlayback(videoView, videoParams);
  }
      
  @OnUnmount
  static void onUnmount(
      ComponentContext context,
      SimpleVideoView videoView,
      @Prop VideoParams videoParams) {
    cleanupVideoPlayback(videoView, videoParams);
  }
  ...
}

CoreVideoComponent 是 AutoplayVideoComponent 的子类,该组件是一个用于在新闻提要中注册视频的 LayoutSpec。所有新闻提要中的视频都是在自动播放管理器上注册的,但并不是所有的视频都需要自动播放功能 (例如,全屏视频播放器中的视频)。

@LayoutSpec
public class AutoplayVideoComponentSpec {
      
  @OnCreateLayout
  static Component onCreateLayout(
      ComponentContext c,
      @Prop VideoParams videoParams) {
    registerVideoForAutoplay(videoParams);
      
    return CoreVideoComponent.create(c)
        .videoParams(videoParams)
        .build();
  }
  ...
}

最后, 我们将自动播放组件作为子类添加到 VideoAttachmentComponent 中。这个组件将一个视频附件数据结构转换为一个通用的视频组件都能理解的属性。

@LayoutSpec
public class VideoAttachmentComponentSpec {
      
  @OnCreateLayout
  static Component onCreateLayout(
      ComponentContext c,
      @Prop VideoAttachmentInfo videoAttachmentInfo) {
    final VideoParams videoParams = createVideoParams(videoAttachmentInfo);
      
    return AutoplayVideoComponent.create(c)
        .videoParams(videoParams)
        .build();
  }
  ...
}

与 VideoAttachmentView 相比,这个设计提供了更多的灵活性。这些组件中的任何一个都可以添加到另一个 LayoutSpec 中,创建一个更复杂的组件并扩展它的功能或 UI 设计。Litho 鼓励使用嵌套组件,以及组件组合,以构建更强大的功能。Litho 以最优的渲染性能优化了布局树,构建出了扁平的视图结构。

下面是一个创建视频附件组件的示例,该组件显示底部的水印:

@LayoutSpec
public class WatermarkVideoAttachmentComponentSpec {
    
  @OnCreateLayout
  static Component onCreateLayout(
      ComponentContext c,
      @Prop VideoAttachmentInfo videoAttachmentInfo) {
    
    return Column.create(c)
        .flexShrink(0)
        .alignContent(YogaAlign.FLEX_START)
        .child(
            VideoAttachmentComponent.create(c)
                .videoAttachmentInfo(videoAttachmentInfo))
        .child(
            Text.create(c)
                .text("Powered by Litho")
                .textColorRes(android.R.color.holo_green_light)
                .textSizeDip(25)
                .paddingDip(YogaEdge.LEFT, 5)
                .positionType(YogaPositionType.ABSOLUTE)
                .positionDip(YogaEdge.BOTTOM, 0)
                .positionDip(YogaEdge.START, 0))
        .build();
  }
}

新组件通过将其添加为子组件来重新使用视频附件组件的所有代码和 UI。

性能改进

除了支持更加灵活的设计之外,Litho 还提供了一些属性和特性,帮助我们优化新闻提要中的视频播放和整个应用的整体性能。

资源回收利用

Android 内置的 RecyclerView 可以基于视图的类型将其保存在不同的缓存池中,这对于创建了很多不同类型视图的用户界面来说可能会是一个问题。

相比之下,Litho 的回收系统复用了更小的用户界面构建模块,比如文本或图片,而不是整个视图。通过使用一个核心视频组件,同样的视图可以被循环使用于所有的视频新闻类型。更有效的回收利用减少了对象的分配,进而提高了滚动性能。

预分配

新闻提要的第一个视频新闻不能循环使用预先存在的视频视图,因为之前没有视图。当两个视频新闻同时出现在屏幕上时也需要注意:一个视频视图可以从以前的新闻中回收,但是第二个视图需要新建。当 RecyclerView 需要分配一个新的视图对象,特别是像视频视图那样的复杂视图时,会带来丢帧的风险。我们希望优化这种情况,因此我们在 Litho 中创建了 预分配功能

通过向 MountSpec 注解中添加一些属性,我们可以让 Litho 提前创建一些实例。当滚动浏览新闻提要中的第一个视频新闻时,预分配的视频视图可以极大地提高滚动性能。

@MountSpec(poolSize = 3, canPreallocate = true)
public class CoreVideoComponentSpec {
   ...
}

生命周期

MountSpec 有一些实用且简单的生命周期回调方法。这些足以让我们将大部分视频播放逻辑封装在组件中。在 Litho 之前,这个逻辑会被分散到不同的类中,由一个单独的控制器触发。视频组件中的主要回调方法包括:

  • onPrepare-开始预取视频。在视频组件出现之前,在后台线程上触发。
  • onMount-初始化视频播放器。组件首次配置其视图属性时触发。
  • onUnmount-清除视频播放器,为下一次使用做准备。当视频滚动走时被触发。

LayoutSpec 有一个主要的回调:onCreateLayout()。它的主要目的是构造 LayoutSpec 的布局,但是它也可以为其子组件准备资源。例如,封面照片 LayoutSpec 可以在上面创建一个带有视频和封面照片的布局,同时还可以触发封面照片的预抓取,所有这些都是在同一个回调方法中进行的。

MountSpec 还支持另一个实用的回调:shouldUpdate()。当 RecyclerView 的适配器被更新时,它可以重新绑定所有的子视图,并获得所有可见的组件并重新加载 (触发 onUnmount 和 onMount)。对于简单的组件,这没有明显的影响,但是重新配置一个视频播放器就会是一个比较繁重的操作。这个回调是在 Litho 重新加载组件之前调用的,如果你觉得它没有必要的话 (例如,加载相同的视频),我们可以选择跳过它。

@ShouldUpdate(onMount = true)
static boolean shouldUpdate(@Prop Diff<VideoParams> videoParamsDiff) {
  return videoParamsDiff.getNext().videoId != videoParamsDiff.getPrevious().videoId;
}

可测试性

新组件的模块化有助于更轻松地测试视频播放逻辑。Litho 提供了一个 测试框架 ,可以在单元测试中模拟组件的生命周期。通过将更多的视频播放逻辑封装在这些组件中,我们可以测试和验证我们以前无法使用的复杂场景。此外,通过使用组合而不是继承来扩展功能,会更安全、更容易维护。

结论

通过使用传统的 Android 视图,Litho 帮助我们通过一次构建就可以提升视频实现的性能、效率、可扩展性和可维护性。该视频组件在整个 Facebook 的 Android 应用程序中提升了 20%的滚动性能,同时也改善了我们的冷启动时间,使我们的内存崩溃率降低了 2.5%,这都是更有效的内存管理的结果。代码的改进不仅改善了 Facebook 的体验,还让工程师有了更多在 Facebook 应用中创建新的视频体验的余地。

Litho 允许我们在 Android 上编写高度优化的 UI。Litho 于 2017 年 4 月开源,此后一直在成长。在去年年底,我们启动了 Sections 项目,它是基于 Litho 构建的用于编写高度优化的列表界面的 API。转换到 Litho 和 Sections 后,通常会有大幅度的性能提升,比如 滚动性能提升可能高达 42%。使用 Litho 很简单并且文档丰富。可以查看 Litho 网站GitHub 页面 上的代码示例、教程和高级指南。

英文原文链接:Improving Android video on News Feed with Litho

转自 http://ift.tt/2oEX4va

                      

The post Facebook 构建高性能 Android 视频组件实践之路 appeared first on Linuxeden开源社区.

http://ift.tt/2F1FUmp

用 Prettier 格式化 JavaScript 代码


Linuxeden 开源社区 --

作者 Saransh Kataria ,译者 孙浩

假如你有过编程经验的话,你应该很清楚,很难做到既让代码简洁明了,又使不同的代码书写风格在一个项目中保持一致性。即便你花了很多时间达到了这个目的,其它的开发者也会提交他们的修改或者禁用某些标志以方便他们快速提交代码,从而让你的努力功亏一篑。

在格式化代码上浪费时间是一件很枯燥的事情,Prettier 的目标便是解决这个问题。它将用简单的设置来帮助你克服格式化带来的困扰。

Prettier 可以做什么?

Prettier 是一个很有特色的代码格式化工具,它可以使整个代码库的格式化过程自动化。因此在设置好 Prettier 之后,你不再需要与同事讨论代码格式化规则、分号、换行符等问题了。它会导入你所有代码,删除所有格式,并根据其样式规则重新格式化代码。

在 Prettier 环境下,所有的 javascript 代码都会转换为抽象语法树,然后被重新格式化。因此,它确保不会对编写的代码进行任何破坏更改。对你来说,所有的东西都会被神奇地格式化,这你并不用担心。

例如:

foo(reallyLongArg(), omgSoManyParameters(), IShouldRefactorThis(), isThereSeriouslyAnotherOne());

会被被格式化为

foo(
  reallyLongArg(),
  omgSoManyParameters(),
  IShouldRefactorThis(),
  isThereSeriouslyAnotherOne()
);

如果你想让体验一下,可以使用 playground 来试试。总结一下:

与 ESLint 的差异

这是最常见的问题之一,简明的回答是 ESLint 只是一个代码质量工具 (确保没有未使用的变量、没有全局变量,等等)。而 Prettier 只关心格式化文件 (最大长度、混合标签和空格、引用样式等)。你可以将 ESLint 和 Prettier 结合起来使用,以获得双赢的组合。

Editorconfig 的作用

Prettier 1.9 版本之前会从 editorconfig 中读取配置值,推荐的配置选项包括:indent_style、indent_size/tab_width 和 max_line_length。

如何设置

如上所述,Prettier 的自动化程序会将整个代码库格式化。以下是你可以使用 Prettier 的场景:

  • 编辑器插件
  • CLI
  • Pre-commit hooks

在编辑器中使用

进入 网站的交互页面 并下载相应的插件,在你的 IDE/编辑器中安装它。这应该是一个非常简单的过程。对于 Visual Studio Code,你只需要从市场下载便可。之后,在用户设置中添加了一个首选项 (“editor.formatOnSave”: true)。这样便可以起效了。我还根据我的需要设置了”prettier.singleQuote”: true,其它的编辑器属性也可以在这里设置。

在项目中使用

你需要先安装 Prettier 的 CLI。我们将把它添加为 dev 依赖项, (yarn add prettier –dev –exact or npm install –save-dev –save-exact prettier)。Prettier 推荐在项目中安装恰当的版本,因为 Prettier 会在补丁发布时引入代码格式的变化。安装成功后,要针对某个特定文件运行的话,只需要运行命令 yarn prettier –write index.js,这样便可在当前目录生成 index.js 文件。

你可以根据需要配置 Prettier 的其他选项,通常使用配置文件来做。也可以将这些添加到.prettierrc 文件中并放置在项目的根文件夹下。可用 选项 可以在网站上找到。

然后,你可以将这个命令添加到你的 NPM 脚本中,并将 src 文件夹作为一个 glob 传递给它,而不是一个单独的文件。格式化脚本是这样的:prettier –write ‘./src/**/*.{ts,js,css,json}’。

如果你没有使用这种复杂的配置,也没用.prettierrc 文件,你也可以使用命令行参数指定选项配置。

然后你可以将其作为构建步骤的一部分进行调用。所有的改变也都会生效的。

在项目中,你可以更进一步将 Prettier 代码整合为一个 pre-commit hook。你需要安装 husky 来配合 lint-stage /pretty-quick 使用 (如果你正在使用其他工具,比如 ESLint,请使用 lint-stage)。从 NPM 安装这些包作为 dev 依赖项之后,你可以将以下配置添加到 package.json 文件中:

pretty-quick:

"scripts": {
    "precommit": "pretty-quick --staged”
  }

lint-staged:

"scripts": {
   "precommit": "lint-staged",
   "lint-staged": {
    "*.{ts,js,css,json}": [
       "prettier --write", 
       "git add"
     ]
  }
}

要注意的是,当你将 prettier 作为一个 pre-commit hook 运行时,它会破坏你项目的状态。一个解决方案 (gocarsno 在 Reddit 上建议的) 是在提交之前存储所有尚未载入的变更 (git stash -k)。

你可以更进一步在项目的构建步骤中添加另一个检查。Facebook 是这样做的,我是在一个员工会议演讲中知道这件事的。你可以在文件上的 CI/CD 服务器上运行 Prettier,如果 Prettier 的文件输出与签入的文件不同,那么服务器编译就会失败。你可以选择这样做,这取决于你依赖它的程度。

你还在等什么? 赶紧去配置使用 Prettier 吧!别再人工格式化项目代码了,让机器为你做这事。

分享这篇文章,我也是为了让更多的人发现 Prettier 的魅力。

英文原文链接Using Prettier to format your JavaScript code

转自 http://ift.tt/2ox0oJh

 

The post 用 Prettier 格式化 JavaScript 代码 appeared first on Linuxeden开源社区.

http://ift.tt/2F1ngqQ

调查显示:越来越多的开发者开始使用 Go 语言


Linuxeden 开源社区 --Go
Go

Go 发布的 2017 年用户调查报告显示,越来越多的开发者开始将 Go 语言运用到工作中,并表示了对其的喜爱。

与 2016 年只要用于编写 CLI 工具不同,2017 年 Go 的主要用途是编写 API/RPC 服务。

据该公司称,这两种应用都利用了 Go 的显着特点,并且是云计算的关键要素。 预计随着越来越多的公司采用 Go,该语言的使用将继续增长。

使用场合

使用时间

使用领域

当被问及使用 Go 面临的最大挑战是什么时,用户表示是缺乏依赖管理和缺乏泛型。

64% 的用户在 Linux 上使用 Go,49% 在 MacOS 上使用,18% 在 Windows 上使用。 VSCode 现在是 Go 开发者最流行的编辑器,IntelliJ / GoLand 的用量也在增加。

59% 的受访者有兴趣为 Go 社区做出贡献,自去年以来略有增加。Go 团队表示 2018 年将更加努力。

详情可前往 Go 调查报告 查看

转自 http://ift.tt/2FbZxHx

The post 调查显示:越来越多的开发者开始使用 Go 语言 appeared first on Linuxeden开源社区.

http://ift.tt/2GU0922

WePY 1.7.1 发布,微信小程序组件化开发框架


Linuxeden 开源社区 --wepy
wepy

WePY 1.7.1 已发布,更新内容如下:

  • 修复了 scope 失效的 bug 。ISSUE 963
  • 修复了私有 npm 组件引入报错的 bug 。PR 947
  • 修复了 onPageScroll 会导致页面卡死的 bug 。PR 985

WePY 是腾讯开源的一款让小程序支持组件化开发的框架,通过预编译的手段让开发者可以选择自己喜欢的开发风格去开发小程序。框架的细节优化,Promise,Async Functions 的引入都是为了能让开发小程序项目变得更加简单,高效。

特性:

  • 类 Vue 开发风格
  • 支持自定义组件开发
  • 支持引入 NPM 包
  • 支持 Promise
  • 支持 ES2015+特性,如 Async Functions
  • 支持多种编译器,Less/Sass/Styus、Babel/Typescript、Pug
  • 支持多种插件处理,文件压缩,图片压缩,内容替换等
  • 支持 Sourcemap,ESLint 等
  • 小程序细节优化,如请求列队,事件优化等

转自 http://ift.tt/2FJd5IJ

The post WePY 1.7.1 发布,微信小程序组件化开发框架 appeared first on Linuxeden开源社区.

http://ift.tt/2F0LyRH

TensorFlow 1.6.0 正式发布,带来多项优化和改进


Linuxeden 开源社区 --TensorFlow
TensorFlow

TensorFlow 1.6.0 已正式发布,带来以下突破性改变:

  • 现在预构建的二进制文件是针对 CUDA 9.0 和 cuDNN 7 构建的。
  • 预编译的二进制文件将使用 AVX 指令。这可能会破坏较旧的 CPU 上的 TF 。

主要特性和改进

  • 针对非插槽变量的新的内部优化 API 。
  • tf.estimator.{FinalExporter,LatestExporter} 现在可导出被剥离的 SavedModels 。这改进了 SavedModel 的向前兼容性。
  • FFT 支持添加到 XLA CPU/GPU 。
  • Android TF 现在可以在兼容的 Tegra 设备上使用 CUDA 加速来构建。

Bug 修复和其他更改

  • 文档更新:
    • 针对 ML 新手新增了第二个版本的入门指南。
    • 理清 resize_images.align_corners 参数的文档。
    • TPUs 附加文档。
  • Google Cloud Storage (GCS):
    • 新增 client-side throttle。
    • 将一个 FlushCaches()方法添加到 FileSystem 接口。

API 更改

  • 为向后兼容,将 prepare_variance 布尔值默认设置为 False 。
  • move layers_dense_variational_impl.py to layers_dense_variational.py

完整更新内容和下载地址请查阅发行列表

转自 http://ift.tt/2FEw7ja

The post TensorFlow 1.6.0 正式发布,带来多项优化和改进 appeared first on Linuxeden开源社区.

http://ift.tt/2sZkqRm

vlayout 1.2.11 发布,阿里 LayoutManager 定制化布局


Linuxeden 开源社区 --

vlayout(VirtualLayout)是阿里开源的一个针对 RecyclerView 的 LayoutManager 扩展,主要提供一整套布局方案和布局间的组件复用的问题。

vlayout 1.2.11 已发布,该版本修复了以下问题:

  • #295 升级后出现 onBindViewHolder 未分发的问题
  • #304 DelegateAdapter 中的 onViewAttachedToWindow(onViewDetachedFromWindow) bug

设计思路

通过定制化的 LayoutManager,接管整个 RecyclerView 的布局逻辑;LayoutManager 管理了一系列 LayoutHelper,LayoutHelper 负责具体布局逻辑实现的地方;每一个 LayoutHelper 负责页面某一个范围内的组件布局;不同的 LayoutHelper 可以做不同的布局逻辑,因此可以在一个 RecyclerView 页面里提供异构的布局结构,这就能比系统自带的 LinearLayoutManager、GridLayoutManager 等提供更加丰富的能力。同时支持扩展 LayoutHelper 来提供更多的布局能力。

主要功能

  • 默认通用布局实现,解耦所有的 View 和布局之间的关系: Linear, Grid, 吸顶, 浮动, 固定位置等。
    • LinearLayoutHelper: 线性布局
    • GridLayoutHelper: Grid 布局, 支持横向的 colspan
    • FixLayoutHelper: 固定布局,始终在屏幕固定位置显示
    • ScrollFixLayoutHelper: 固定布局,但之后当页面滑动到该图片区域才显示, 可以用来做返回顶部或其他书签等
    • FloatLayoutHelper: 浮动布局,可以固定显示在屏幕上,但用户可以拖拽其位置
    • ColumnLayoutHelper: 栏格布局,都布局在一排,可以配置不同列之间的宽度比值
    • SingleLayoutHelper: 通栏布局,只会显示一个组件 View
    • OnePlusNLayoutHelper: 一拖 N 布局,可以配置 1-5 个子元素
    • StickyLayoutHelper: stikcy 布局, 可以配置吸顶或者吸底
    • StaggeredGridLayoutHelper: 瀑布流布局,可配置间隔高度/宽度
  • 上述默认实现里可以大致分为两类:一是非 fix 类型布局,像线性、Grid、栏格等,它们的特点是布局在整个页面流里,随页面滚动而滚动;另一类就是 fix 类型的布局,它们的子节点往往不随页面滚动而滚动。
  • 所有除布局外的组件复用,VirtualLayout 将用来管理大的模块布局组合,扩展了 RecyclerView ,使得同一 RecyclerView 内的组件可以复用,减少 View 的创建和销毁过程。

Demo

转自 http://ift.tt/2FfNqJw

The post vlayout 1.2.11 发布,阿里 LayoutManager 定制化布局 appeared first on Linuxeden开源社区.

http://ift.tt/2F1lpSU

多媒体播放器 VLC 3.0.1 发布:改进 Chromecast 支持


Linuxeden 开源社区 --VLC media player
VLC media player

多媒体播放器 VLC 3.0.1 已发布,该版本将提供更好的 VLC Chromecast 支持,在本地内容和 Chromecast 播放之间切换时,播放器还会具有更明显的过渡效果。

其他更改:

  • 修复 Core 崩溃
  • 改进 MKV 寻找速度
  • 修复字幕搜索
  • 增加 4K 流的 TS 探测量
  • 改善 HiDPI 显示器的缩放比例

了解更多内容可查阅发行说明

源码下载:https://www.videolan.org/vlc/download-sources.html

安装包下载:https://www.videolan.org/vlc/

转自 http://ift.tt/2oyL2nP

The post 多媒体播放器 VLC 3.0.1 发布:改进 Chromecast 支持 appeared first on Linuxeden开源社区.

http://ift.tt/2F5V0Dr

Simditor v2.3.12 发布,简单快速的富文本编辑器


Linuxeden 开源社区 --Simditor
Simditor

Simditor v2.3.12 已发布,更新内容:

  • FIX:粘贴表格后,导致已有的表格无法再调整列宽
  • FIX:粘贴时会出现大量无用的 span 标签
  • FIX:将字体从其它大小设置为「正常大小」时,会导致文本的其它样式丢失

Simditor 是一个基于浏览器的所见即所得的文本编辑器。相比传统的编辑器它的特点是:

  • 功能精简,加载快速
  • 输出格式化的标准 HTML
  • 每一个功能都有非常优秀的使用体验

转自 http://ift.tt/2FfN0mq

The post Simditor v2.3.12 发布,简单快速的富文本编辑器 appeared first on Linuxeden开源社区.

http://ift.tt/2F2Isga

Wekan 0.77 发布,基于 Meteor 的看板管理应用


Linuxeden 开源社区 --Wekan
Wekan

Wekan 是模仿 Trello 且最接近其的开源 KanBan 管理应用,它的前端后端都是用 JavaScript 写的,基于 Meteor 框架。Wekan 简化界面、支持中文、拒绝其他花哨的功能。项目管理所需的标签、注释、添加成员等功能 Wekan 都有,而且它还有一个免费托管的 demo 站点,你除了可以下载安装使用外,也可以将 Wekan 通过 Dockerfile 镜像在一个容器里安全运行。

Wekan 0.77 新增了以下特性:

  • 在打开的看板上新增卡片标题和描述搜索按钮
  • 新增保加利亚语

以及:

  • 服务生命周期改进
  • Wekan 帮助文本更改和调整

并修复了页面向下滚动时,卡片阴影遮挡页面的问题。

更多详情可查阅更新日志。

源码下载:

转自 http://ift.tt/2F0IHrP

The post Wekan 0.77 发布,基于 Meteor 的看板管理应用 appeared first on Linuxeden开源社区.

http://ift.tt/2oxmz29

Spring Security 5.0.3 发布,Spring 安全框架


Linuxeden 开源社区 --Spring Security
Spring Security

Spring Security 5.0.3 已发布,此版本主要为 Spring Security WebFlux 提供了显著的性能改进。同时,它还包含依赖项更新以准备迎接即将到来的 Spring Boot 2.0.0 正式版:

源码下载:

转自 http://ift.tt/2oFzApL

The post Spring Security 5.0.3 发布,Spring 安全框架 appeared first on Linuxeden开源社区.

http://ift.tt/2F3G7pe

GNU Automake 1.16 发布,Makefile 自动生成工具


Linuxeden 开源社区 --

GNU Automake 1.16 已发布,Automake 是一款自动生成符合 GNU 编码标准的 Makefile.in 文件的工具。它是自由软件基金会发起的 GNU 计划的其中一项,作为 GNU 建构系统的一部分。Automake 需要和 GNU Autoconf 一起使用。

上一次版本发布时 8 个月前的 Automake 1.15.1 ,新版本包含一些 Bug 修复,并新增了部分特性,详细的更新内容可查阅:

下载地址:

转自 http://ift.tt/2t1ADFZ

The post GNU Automake 1.16 发布,Makefile 自动生成工具 appeared first on Linuxeden开源社区.

http://ift.tt/2F2f6CE

Codeception 2.4.0 发布,兼容 PHPUnit 7.x


Linuxeden 开源社区 --

Codeception 2.4.0 已发布,更新内容如下:

  • 兼容 PHPUnit 7.x
  • 不再支持 PHP 5.4 和 PHP 5.5
  • 内部 API 重构:
    • 内部使用的现代 PHP 类名称
    • 将 PHPUnit 相关的类移到了 codeception / phpunit-wrapper 包中。
  • Cest hooks 行为调整:
    • 当测试失败时调用 _failed
    • 当测试成功时调用 _passed
    • 测试成功或失败均调用 _after

更多详情可查阅更新日志。

Codeception 是一个全堆栈的 PHP 测试框架,测试示例:

<?php
class UserControllerCest {
    public $class = 'UserController';

    public function createAction(CodeGuy $I)
    {
        $I->haveFakeClass($userController = Stub::make('UserController'));
        $I->executeTestedMethodOn($userController, array('username' => 'MilesDavis', 'email' => 'miles@davis.com'))
            ->seeResultEquals(true)
            ->seeMethodInvoked($userController, 'renderHtml')
            ->seeInDabatase('users', array('username' => 'MilesDavis'));
    }
}
?>

源码下载:

转自 http://ift.tt/2F3ryOn

The post Codeception 2.4.0 发布,兼容 PHPUnit 7.x appeared first on Linuxeden开源社区.

http://ift.tt/2oylJlF