News stories from Thursday 22 June, 2017

Favicon for 开源中国社区最新新闻 08:27 翻译 | 关于 ASP.NET 内存缓存你需要知道的 10 点 » Post from 开源中国社区最新新闻 Visit off-site link

缓存机制的主要目的是提高应用程序的性能。作为 ASP.NET 开发人员,你可能会意识到 ASP.NET Web 窗体以及 ASP.NET MVC 可以使用 Cache 对象缓存应用程序的数据。这通常被称为服务器端数据缓存,并且常作为框架的内置功能。虽然 ASP.NET Core 中并没有这样的 Cache 对象,但是你可以很容易地实现内存缓存。本文将向你说明如何实现。

Favicon for 开源中国社区最新新闻 08:25 码云推荐 | 用于快速访问 iPhone 模拟器的开发者工具 » Post from 开源中国社区最新新闻 Visit off-site link

TySimulator 是一个 iOS 开发者工具, 用于快速访问 iPhone 模拟器。它可以快速访问应用程序的Documents目录和模拟器的Media目录,操纵运行当前或指定的模拟器。


Favicon for 开源中国社区最新新闻 08:22 每日一博 | 深入浅出 spring-data-elasticsearch » Post from 开源中国社区最新新闻 Visit off-site link

本文提纲:一、spring-data-elasticsearch-crud 的工程介绍;二、运行 spring-data-elasticsearch-crud 工程;三、spring-data-elasticsearch-crud 工程代码详解

Favicon for 开源中国社区最新新闻 08:19 ZanPHP —— 有赞基于 PHP 协程的网络服务框架 » Post from 开源中国社区最新新闻 Visit off-site link

Zan PHP Framework 是有赞开源的基于 PHP 协程的网络服务框架,提供最简单的方式开发面向 C10K+ 的高并发SOA服务和RPC服务。该项目每天为2,000+个服务提供300,000,000+次访问量支持,广泛应用于有赞各项业务。

Favicon for 开源中国社区最新新闻 08:19 OSC 周四乱弹 ——雷军成为乒乓球学会副主席兼秘书长 » Post from 开源中国社区最新新闻 Visit off-site link

看见儿子正拿着手机百无聊赖,我问他:要不要跟爸爸一起打把农药?儿子开心的答应了。现在他一边哭着一边跟我在田里给白菜打农药。

Favicon for 开源中国社区最新新闻 08:16 Oracle 计划升级 JVM 以更好地支持多核处理器 » Post from 开源中国社区最新新闻 Visit off-site link

Infoworld 消息,Oracle 正计划对 Java 虚拟机进行更新,以支持 direct-value class types ,而这也正是现代多核处理器所需的服务。不过目前尚未有具体的更新时间表。

Oracle Java 平台组软件开发副总裁 Georges Saab 表示:“在 Java 中支持 value types 的提案是为了让开发者放弃 identity 或 polymorphism ,以便运行时可以以更小巧的方式表现底层数据,更适合大批量操作的处理。”

Saab 还解释说,Java 在 1995 年创建之初,就在内存访问和 CPU 指令上花费了相同的时间。此后,多核处理器的推出提升了 CPU 指令的速度,但也给存储器本地化(memory locality)带来了挑战。

JVM 期望几乎所有的类型检查都在运行时前完成,且最好是由编译器完成而不是由 JVM 本身。因此,direct values 将不需要被标记或以其他方式检查,以在运行时确定其类型或与 reference values 分开。

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 08:15 OTP 20.0 发布,Erlang 应用服务器 » Post from 开源中国社区最新新闻 Visit off-site link

OTP 20.0 发布了,OTP (Open Telecom Platform) 是一个开源的 Erlang 分发和一个用 Erlang 编写的应用服务器。

Erlang / OTP 20.0是一个新的主要版本,新增了一些新功能,不少(特征)改进。与第二个候选版本相比的变化如下:

  • ERTS:In the OTP 20 release candidates the function erlang:term_to_binary/1 changed the encoding of all atoms from ATOM_EXT to ATOM_UTF8_EXT and SMALL_ATOM_UTF8_EXT. This is now changed so that only atoms actually containing unicode characters are encoded with the UTF8 tags while other atoms are encoded ATOM_EXT just as before.

主要更新内容:

Erts:

  • Dirty schedulers enabled and supported on VM with SMP support.

  • support for “dirty” BIFs and “dirty” GC.

  • erlang:garbage_collect/2 for control of minor or major GC

  • Erlang literals are no longer copied when sending messages.

  • Improved performance for large ETS tables, >256 entries (except ordered_set)

  • erlang:system_info/1 atom_count and atom_limit

  • Reduced memory pressure by converting sub-binaries to heap-binaries during GC

  • enif_select, map an external event to message

  • Improvements of timers internally in the VM resulting in reduced memory consumption and more efficient administration for timers

Compiler:

  • Code generation for complicated guards is improved.

  • Warnings for repeated identical map keys. #{'a'=>1, 'b'=>2, 'a'=>3} will warn for the repeated key a.

  • By default there is now a warning when export_all is used. Can be disabled

  • Pattern matching for maps is optimized

  • New option deterministic to omit path to source + options info the BEAM file.

  • Atoms may now contain arbitrary unicode characters.

  • compile:file/2 has an option to include extra chunks in the BEAM file.

……

完整更新内容请查看发行首页

下载地址:

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 08:14 微信小程序新增三大能力:小程序可互相跳转 » Post from 开源中国社区最新新闻 Visit off-site link

微信小程序于昨晚再次开放三项新能力:

与同一公众号关联的小程序之间可相互跳转,门店小程序可添加视频宣传门店形象,同时提供接口批量管理门店。

两个小程序互相跳转

两个小程序互相跳转的前提是,必须关联同一个公众号。也就是说,同一个公众号关联的10个同主体小程序和三个非同主体小程序之间可以互相跳转。小程序的体验更流畅。

iOS用户需要更新微信6.5.9版本才可体验新能力,安卓用户需等待微信版本更新。

具体开发方法详见《小程序开发文档》

视频走进门店小程序

为了方便宣传门店形象,门店小程序的门店页可添加视频。

添加视频方式有两种:

1、进入公众号后台—门店小程序,将视频上传到公众号素材库后,可直接通过素材库进行视频添加;

2、通过输入视频链接或者含有视频的图文消息的链接进行视频添加。

081329_EXWM_2896879.png

批量管理门店小程序

小程序为商家提供了创建商家,新增、查询、修改和删除门店等接口,还支持第三方接口的授权,更加方便商家管理门店。

具体指引详见《微信门店小程序接口文档》

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 08:09 Jspxcms 8.0.1 发布,国内开源 Java CMS » Post from 开源中国社区最新新闻 Visit off-site link

    Jspxcms-8.0.1-release今天正式发布。

    改进(Improvement)

  1.             在站点设置里可以增加手机模板主题修改,不用到站点管理里修改。

  2.             sql脚本增加commit语句,避免因为执行脚本时为提交导致数据没有正确插入。

  3.             pom.xml里增加tomcat7启动插件,方便希望使用tomcat7插件启动的用户。

  4.             文档管理自动获取描述长度增加到最长的450字符。

  5.             友情链接列表logo限制大小,避免logo尺寸过大导致页面显示不好看。

  6.             InfoPage和NodePage标签增加p0参数。

  7.             升级MySQL驱动,支持MySQL5.7。

    缺陷(Bug)

  1.             修复:后台右上角小房子图标的前台首页链接在多站点情况下,切换站点后无变化。

  2.             修复:文档管理标题图、属性图、图集在火狐下点击上传按钮无反应。

  3.             修复:文件管理搜索功能没有保留当前文件夹路径。

  4.             修复:后台左侧菜单没有屏蔽无权限的菜单。

  5.             修复:开启页面静态化后,某些栏目生成了HTML,但还会显示HTML待更新。

  6.             修复:文档管理doc上传按钮位置不正确。

  7.             修复:有上下文路径时,站点静态首页地址多了一个上下文路径。

  8.             修复:谷歌某些版本的浏览器点击文档管理图片选择按钮无效。

  9.             修复:后台任务管理翻页列表固定不变。

  10.             修复:修改组织报错。

    后端技术

    SpringBoot:提供了对Spring开箱即用的功能。简化了Spring配置,提供自动配置 auto-configuration功能。

    Spring:是提供了IoC等功能,是目前最流行的Java企业级开发框架。

    SpringMVC:MVC框架,使用方便,Bug较少。

    JPA:持久化框架。属于JSR标准,JPA实现选择最常用的Hibernate。

    SpringDataJPA:对JPA封装,大部分查询只需要在接口中写方法,而不需要实现改方法,极大开发效率。

    QueryDSL:实现类型安全的JPA查询,使用对象及属性实现查询,避免编写jpql出现的拼错字符及属性名记忆负担。

    FreeMarker:模板组件。

    Shiro:安全组件。配置简便。

    Lucene:全文检索组件。实现对中文的分词搜索。

    Ehcache:缓存组件。主要用在JPA二级缓存、Shiro权限缓存。

    Quartz:定时任务组件。

    前端技术

    jQuery:JavaScript库。

    Bootstrap:响应式设计前端框架。

    AdminLTE:后台管理平台开源框架。

    jQuery UI:基于jQuery的UI框架。

    jQuery Validation:基于jQuery的表单校验框架。

    UEditor:Web富文本编辑器。

    Editor.md:基于Markdown语法的Web文本编辑器。

    ECharts:用于生成图标的组件。

    My97DatePicker:日期组件。

    zTree:树组件。

无侵入式二次开发:

    支持无侵入式插件和二次开发,无需修改系统原有代码,即可无缝整合Entity、Service、Controller、功能菜单、权限、标签、国际化等功能。查看教程

可独立管理的站群:

    支持多组织、多站点、独立管理的网站群,各个站点可以有独立的管理员,对本站用户、组织、模型、栏目等信息进行独立管理,互不干扰。

高并发:

    jspxcms有近乎完美的性能表现,在没有做特殊优化、纯动态页下,支持高并发访问。

    对 http://demo.jspxcms.com/ 测试结果简要描述:5000次请求,500次并发,全部成功,总耗时31.124秒,每秒处理160.65个请求,每个请求耗时6.225毫秒。

    对 http://demo.jspxcms.com/node/40 测试结果简要描述:5000次请求,500次并发,全部成功,总耗时11.969秒,每秒处理417.73个请求,每个请求耗时2.394毫秒。

    详细测试报告http://www.jspxcms.com/documentation/329.html

百万级数据支持:

    很多cms在小数据量下可以运行的不错,但在日积月累的数据量增加,会让这些cms运行缓慢、不堪重负。

    jspxcms在不需要任何特殊处理和优化的情况下,轻松支持百万级数据量,且在纯动态页访问的情况下,一样快速如飞。

    百万级数据演示站:http://big.jspxcms.com/

全站静态化:

    可以对所有的首页、栏目页、详细页做静态化处理,极大的提高网站负载能力。在数据量大的情况下,可以设置栏目列表前n页静态化(列表前几页访问量较大),n页后为动态页(列表页n页后较少人访问,可以使用动态页),避免生成静态页时耗费太多时间。

下载及演示:

    下载地址:http://www.jspxcms.com/

    演示站前台:http://demo.jspxcms.com/ 使用手机访问或者浏览器手机模式访问前台,会自动呈现手机页面。(如浏览器从PC模式切换到手机模式,需按F5刷新页面)

    演示站后台:http://demo.jspxcms.com/cmscp/index.do

功能列表:

  1.             文档管理。(新闻、图集、下载、视频、作品、文库、招聘等,支持doc导入)

  2.             栏目管理。(支持多种模型的栏目,包括单页栏目)

  3.             文件管理。(zip上传自解压、zip打包下载、模板、图片、js、css)

  4.             模块组件。(定时任务、任务管理、专题类别管理、专题管理、TAG管理、评论管理、敏感词管理、评分组管理、附件管理)

  5.             功能插件。(友情链接类型管理、友情链接管理、留言板类型管理、留言板管理、广告版位管理、广告管理、投票管理,简历管理)

  6.             访问统计。(流量分析、来源分析、受访访问、地域分析、浏览器分析、操作系统分析、设备分析、访问日志)

  7.             用户管理。(用户管理、角色管理、会员组管理、组织管理、全局用户管理、全局组织管理)

  8.             系统管理。(网站设置、系统设置、站点管理、模型管理、文档属性、工作流组、工作流、发布点、操作日志)

前台模板:

后台界面:

Favicon for 开源中国社区最新新闻 08:08 PyCharm 2017.2 EAP 4 发布,Python IDE » Post from 开源中国社区最新新闻 Visit off-site link

PyCharm 2017.2 EAP 4 发布了,PyCharm 是由 JetBrains 打造的一款 Python IDE 。

该版本主要更新内容有:

  • Docker Compose 在 Windows 上可用

  • 支持Azure数据库和Amazon Redshift。

  • 我们还修复了与Django支持,Jupyter笔记本和代码检查相关的许多错误。

完整更新内容请查更新日志

下载地址:

https://jetbrains.com/pycharm/download

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 08:04 越来越像 Google,微软正在重新设计 Bing » Post from 开源中国社区最新新闻 Visit off-site link

MSPoweruser 透露,微软正在对 Bing 的设计进行调整,特别是搜索结果页面的外观,许多元素都将参考目前 Google Search 的设计。

下图左边为新的 Bing UI ,右边是 Google :

104719_OBX1_2896879.png

新版的 Bing 目前已经在测试当中,从公开的 UI 来看,搜索结果页面也和 Google 当前的设计有一些有趣的相似之处 ,会显示搜索查询和一些搜索选项和过滤器,也可帮助你根据自己的喜好对结果进行排序。

下图最上为 Bing 当前 UI ,中间是新的 Bing UI ,最下为 Google :

105554_eugM_2896879.png

据悉,这个新的用户界面目前仅在公司内部测试。Bing 与 Google 搜索相比,相对缺乏人气。有人觉得微软此举,或许是希望更好的模仿市场领导者,不过也有人指出,这可能只是微软在继续推动 Fluent Design 设计语言(微软在 Build 2017 大会上宣布的全新设计语言)而已。

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 08:03 DCOS 开源联盟成立,通过开源技术搭建生态系统 » Post from 开源中国社区最新新闻 Visit off-site link

央广网报道,DCOS 开源联盟开启仪式6月21日在京举行。DC/OS是一套完整的开源软件项目,以Apache Mesos、Marathon以及其它多项技术成果为构建基础。DCOS开源联盟是由DC/OS、Mesos等开源生态中的相关企、事业单位自愿结成的生态团体,是全国性的非营利性的社会组织。


DC/OS衍生自一款围绕Apache Mesos构建而成的商用产品“Mesosphere”的数据中心操作系统,是一套100%纯开源平台,其中包含超过30项组件技术,并由60多家合作厂商共同参与。包括微软等云计算供应商、埃森哲等领先系统集成商、Yelp等消费级技术厂商、Autodesk、思科、Confluent、EMC、Equinix、惠普企业业务公司、NGINX、Puppet、Verizon、中石化、京东云等。

部分参与方将自己的技术方案添加至DC/OS当中,另一些则以其为基础建立新型产品。也有一些计划在自有数据中心内运行DC/OS,同时贡献代码以确保其能够持续为运行中的容器、微服务、大数据系统以及现代企业应用所必需的一切元素提供最为可靠、可扩展性强且易于使用的平台基础。

DCOS联盟接受DC/OS和Mesos社区指导。其组织最高权力机构为理事会,下设DCOS大使组及若干行业工作组。理事会成员由Mesosphere推荐、生态遴选和聘任, 由来自行业生态中的重要参与者何贡献者等组成,其主要职权是: 指DCOS联盟确定发展方向和决策重大事项;指导联盟制定联盟的战略规划、行动计划、重大专项工作等。DCOS大使(MVP)是生态中重要技术传播者和布道者,由理事会推荐并推选。


DCOS联盟初期理事单位中包括电信行业、互联网和传统行业等。通过联盟成员的共同努力去实现联盟的多元化、生态化、国际化。

未来,DCOS开源联盟将通过推动DC/OS和Mesos等开源技术推广、社区活动和生态的发展,搭建生态系统。


>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 08:00 Rundeck v2.9.0-BETA1 发布,服务器自动化操作 » Post from 开源中国社区最新新闻 Visit off-site link

Rundeck v2.9.0-BETA1 发布了,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。

暂未找到该版本更新内容,请查看更新日志发行首页保持关注。

下载地址:

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 08:00 概览Visual Studio 15.3的第二个预览版 » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
logo_bigger.jpg

Visual Studio 15.3的第二个预览版现已发布,亮点在于对.NET Framework 4.7的支持。该版本主要针对修正软件缺陷,以及提高可用性,意在提升VS软件的品质。

By Jeff Martin Translated by Rays
Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 08:00 C# 7.2和8.0路线图 » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
logo_bigger.jpg

C# 7.2和8.0的许多新功能已经列入了计划,其中包括空引用类型和有限多重继承。

By Jonathan Allen Translated by 罗远航
Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 08:00 联结技术领导者| EGO 全国会员招募季正式开启 » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
logo_bigger.jpg

中国规模最大、最具活力的技术领导者社群EGO 全面开启会员招募季,为期十天,速来勾搭!

By 赵新龙
Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 08:00 物联网技术周报第 95 期: 工信部发文推进移动物联网(NB-IoT)建设 » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
logo_bigger.jpg

AWS Greengrass:在IoT设备上运行Lambda函数;一文理清散乱的物联网里开发者必须关注的技术!;使用 Android Things 和 Twilio 构建智能门铃;IDC:2021年全球物联网开支预计突破1.4万亿美元;工信部发文推进移动物联网(NB-IoT)建设;电信联想携手打造NB-IoT生态物联网进入大爆发时代;阿里巴巴成立首个 IoT 生态联盟,将打通技术标准。

By 黄峰达
Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 08:00 Google发布新的TensorFlow物体检测API » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
logo_bigger.jpg

Google发布TensorFlow物体检测API,帮助开发人员和研究人员识别图片中的物体。Google专注于提高API的易用性和性能,新的模型于6月16号发布,在基准测试中表现出良好的性能,并已经开始应用于研究工作当中。

By Mister Who
Favicon for 开源中国社区最新新闻 07:57 Tsuru 1.3.0-rc4 发布,开源 PaaS 平台 » Post from 开源中国社区最新新闻 Visit off-site link

Tsuru 1.3.0-rc4 发布了。Tsuru 是一个开放源码的 open Platform-as-a-Service (PaaS)平台。Tsuru 可以让你构建自己的 PaaS 服务。Tsuru 采用 go 语言写成,依赖 go 环境和 libxml。

在 Tsuru 的 PaaS 服务下,你可以选择自己的编程语言,选择使用 SQL 或者 NoSQL 数据库,memcache、redis、等等许多服务,甚至与你可以使用 Git 版本控制工具来上传你应用。

更新内容:

  • 2c7cd3e travis: clean repository state after tests

  • ec6033e all: fix megacheck linter warnings

  • f0fb0bf cmd: properly validates provided map flag

  • 18b4ff1 bump version to 1.3.0-rc4

  • 9946240 cmd: prints error stack on verbose mode

  • 3de3802 errors: implements formatter for MultiError

  • 309293a docs: add reference to new galeb config

  • 0e85be7 provision/kubernetes: fix expected default user id

  • 383e304 docs: remove docker:user/uid from example confs as they are now default

  • 66d85c2 provision/dockercommon: default values for docker:user and docker:uid

  • 9608145 etc: set docker uid in custom config

  • d486d63 etc: set default docker user id

  • 76c2bc3 router/rebuild: use %v to log slices

  • ……

完整更新说明请参阅 GitHub 发布主页

下载地址:

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 07:53 Glide 4.0.0 RC1 发布,Android 图片加载和缓存库 » Post from 开源中国社区最新新闻 Visit off-site link

Glide 4.0.0 RC1 发布了,Glide 是一个 Android 上的图片加载和缓存库,其目的是实现平滑的图片列表滚动效果。该版本是 Glide 4 的预发行版。主要更新如下:

特性:

  • Added support for VectorDrawables to the placeholder methods (#1946, thanks to @Teovald)

  • Minimal support for additional Bitmap configurations in Android O (853c687, better support will be coming in the future)

Bug 修复:

  • Fixed a duplicate field error when using GlideExtensions (#1971)

  • Fixed VisibleForTesting lint errors in Glide's generated code (#1977)

  • Fixed a bug preventing us from falling back to the error Drawable for null models when the fallback drawable isn't specified (#1985)

  • Fixed an NPE when obtaining a RequestManager for a View (Glide.with(view)#1991)

  • Propagate HTTP exceptions from the OkHttp library so that they're accessible when requests fail (#1967)

  • Fixed a race condition causing resource leaks (#1996)

  • Fixed an NPE in MultiModelLoader (#2028)

  • Fixed a broken null check (48d1f14, thanks mattq@)

  • Fixed a bug preventing the placeholder Drawable from being shown for null models when both the fallback and the error Drawables are unspecified (41cc06c, thnaks to angelorhoit@)

  • Fixed an IllegalStateException when pending requests were cancelled and restarted (243c28c)

更多更新内容、更新计划以及下载地址,请查看发行首页

下载地址:

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 07:52 XWiki 9.5-rc-1 发布,Java 编写的开源 wiki 和应用平台 » Post from 开源中国社区最新新闻 Visit off-site link

XWiki 开发团队宣布推出 9.5-rc-1。XWiki 是一个用 Java 编写的开源 wiki 和应用平台。它的开发平台特性允许创建协作式 Web 应用,同时也提供了构建于平台之上的打包应用(第二代 wiki )。

新版本主要有如下更新:

  • 附件图标使用图标主题

Current image

  • 可通过电子邮件接收通知

Current image

  • 创建页面推荐的模板

Current image


  • livetable 中的日期过滤器

  • 通知过滤器

  • 图像附件预览

  • 页面选项卡的视觉分离

  • ……

完整更新内容请查看发行说明

下载地址

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 07:51 Windows 10 新版 Build 16226 发布:Edge 功能改进 » Post from 开源中国社区最新新闻 Visit off-site link

微软今晨发布Windows 10 新版 Build 16226,面向PC快速通道会员推送。它属于RedStone 3开发分支,是即将到来的秋季创作者更新的预览版。


Windows 10 for PCs build 16226包含大量新功能,所以让我们来看看Microsoft Edge中的新功能。

  • 更容易从另一个浏览器转换过来

  • 复制可询问小娜


  • Ink Notes:添加笔记,可用笔做笔记或者画画。要查看您的笔记,只需将鼠标悬停在笔记按钮上即可,无需打开。


  • 改进了Microsoft Edge的收藏夹体验:保存新收藏夹时的新体验:当您保存新收藏夹时,现在可以将收藏夹视为目录树,并从“添加到收藏夹”对话框中折叠或展开文件夹。


  • 可编辑收藏夹的URL


Emoji 表情更新:


  • 触摸键盘改进:


……

编译自:neowin

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 07:32 iOS 11,macOS High Sierra 第二个开发者版本更新! » Post from 开源中国社区最新新闻 Visit off-site link

WWDC已经16天了,当时苹果发布了iOS 11,macOS 10.13 High Sierra,watchOS 4和tvOS 11的第一个开发者版本。如今第二个开发者版本发布了。

所有这些都是主要的更新。发行说明阐述了不少解决的问题,但还有一些已知的问题,甚至一些新的问题。

1496698798_ios-11-macos-high-sierra_stor

iOS 11 :

新的 iOS 11 将支持全新 Dock,改进了多任务操作,全新文件管理应用 Files,改进对 Apple Pencil 支持,全新的 App 切换器和系统级拖拽支持。苹果在 iOS 11 中还重新设计了控制中心,锁屏界面。Siri、照片和相机应用都有很大的功能提升。对于开发者,iOS 11 支持 ARKit 增强现实开发,以及 CoreML SDK,让应用变得更智能。iOS 11 正式版将于今年秋天发布。

macOS High Sierra:

macOS High Sierra 支持全新的 core 储存、视频和图形技术,以及 APFS 苹果文件系统,HEVC 编码,并支持 Metal 2 和 VR、外接显卡等。苹果还重新设计了 macOS High Sierra 中的照片应用,让用户可以更方便的使用编辑工具和相册。此外,Safari、iCloud、FaceTime 、信息等功能都进行了改进。macOS High Sierra 正式版将于今年秋天发布。

watchOS 4:

watchOS 4 测试版可以通过 iPhone 上的 Apple Watch 应用进行升级。想要安装升级时,Apple Watch 电量必须超过50%,并连接电源。

tvOS 11:

tvOS 11 可以通过将 Apple TV 使用 USB-C 线缆与 Apple TV 连接并通过 iTunes 安装软件进行安装。watchOS 4 加入了全新表盘,其中包括可以动态显示信息的 Siri 表盘等。watchOS 4 还支持 Gymkit ,这是一种全新的技术平台,可以让 Apple Watch 与健身设备连接,分享健身数据。

稿源:neowinMacX

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 07:20 文章: 笨方法使用Kubernetes实现持续交付 » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
GettyImages-578583314-2%20copy.jpg

实现使用Kubernetes的持续交付的自动化,需要单一数据源(SSOT)。此外,还应在无需推送新的代码更改的情况下,有效地实现回滚。

By Srinath Perera Translated by Rays
Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 07:17 视频演讲: 公共安全领域智能积分模型构建 » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
shaoyingxia270.jpg

本报告主要分享明略数据在研发新一代积分模型的初步尝试。介绍安全领域现有积分模型面临的挑战以及为了解决这些挑战,如何构建基于机器学习的新一代积分预警模型,并加入案例形式的分享。最后,根据实践中遇到的困难,提出进一步研发的思考。

By 邵蓥侠
Favicon for 开源中国社区最新新闻 07:10 Apache HBase 1.1.11 发布,分布式数据库 » Post from 开源中国社区最新新闻 Visit off-site link

Apache HBase 1.1.11 发布了。这个是HBase 1.1系列中的第11个补丁版本,继续为 Hadoop 和 NoSQL 社区带来稳定可靠的数据库。此版本包含自1.1.10以来的近20个错误修复。值得注意的更新包括:

  • HBASE-16011 TableSnapshotScanner and TableSnapshotInputFormat can produce duplicate rows

  • HBASE-17937 Memstore size becomes negative in case of expensive postPut/Delete Coprocessor call

  • HBASE-18036 HBase 1.x : Data locality is not maintained after cluster restart or SSH

  • HBASE-18066 Get with closest_row_before on "hbase:meta" can return empty Cell during region merge/split

  • HBASE-18081 The way we process connection preamble in SimpleRpcServer is broken

  • HBASE-18093 Overloading the meaning of 'enabled' in Quota Manager to indicate either quota disabled or quota manager not ready is not good

完整更新内容请查看更新日志

下载地址发布主页

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 07:09 Sequelize 4.2.0 发布,Node.js 的 ORM » Post from 开源中国社区最新新闻 Visit off-site link

Sequelize 4.2.0 发布了,Sequelize.js 提供对 MySQLMariaDBSQLite 和PostgreSQL 数据库的简单访问,通过映射数据库条目到对象,或者对象到数据库条目。简而言之,就是 ORM(Object-Relational-Mapper)。Sequelize.js 完全是使用 JavaScript 编写,适用于 Node.js 的环境。

更新内容:

Bug 修复

  • errors: Add missing captureStackTrace for errors. (#7779) (584b6f74)

特性:

GitHub 发布主页和下载地址:

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 06:59 文章: 美团点评业务之技术解密,日均请求数十亿次的容器平台 » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
logfsdfsdo.jpg

本文介绍美团点评的 Docker 容器集群管理平台(以下简称容器平台)。该平台始于 2015 年,基于美团云的基础架构和组件而开发的 Docker 容器集群管理平台。目前该平台为美团点评的外卖、酒店、到店、猫眼等十几个事业部提供容器计算服务,承载线上业务数百个,容器实例超过 3 万个,日均线上请求超过 45 亿次,业务类型涵盖 Web、数据库、缓存、消息队列等等。

By 郑坤
Favicon for 开源中国社区最新新闻 06:53 机器学习大神 Michael Jordan:人工智能还只是一个雏形 » Post from 开源中国社区最新新闻 Visit off-site link

说到人工智能,不得不提到一个关键词就是机器学习,机器学习领域的突破和爆发,使人工智能领域有了飞跃的发展。人工智能的时候会特别关注机器学习领域将会以什么层级的速度向未来发展?在 2017 腾讯“云+未来”峰会上,机器学习大神 Michael Jordan 教授从人工智能发展史出发全面阐述机器学习现状及未来的挑战。

21234608_3AhD.jpg%20

60年代,“智能”这个词刚刚出现,机器人进入到人的世界,被定义为像一个人存在。到80、90年代,“智能”走向另一种趋势,演变为“IA”,即智能增强技术,智能搜索引擎出现帮助我们快速获取解决问题的答案,帮助人类有了更好的存储、沟通、交流能力。

与此同时,在 IaaS 即智能基础设施方面,交通、金融……我们身边的每一个行业、每一个模块都出现了智能化的的趋势。

人工智能还只是一个雏形

在 Michael Jordan  教授的观点中,目前人工智能还只是一个雏形,之后可能会出现一些有效的对话,特别是像这样一个自我导识的机器也会出现,但是智能方面它目前还是比较有限的。

目前人工智能的可能性及其局限性表现在:

(1)机器视觉能帮助人类对物体进行标识,但无法像人类般清晰的了解所有的场景及其关注点在哪里。

(2)语音识别也是如此,现在可以把语音转化成文字,文字也可以转换成语音,在各种语言上都可以实现,但是机器人还没办法帮人类了解听觉、视觉之后的真正的意义。

(3)自然语言处理方面,人工智能帮助人类解决了语言翻译的问题,但大量的翻译中,大部分的的语言和语没有得到有效的语义的阐述,从而无法表达语句的真正意义。

Michael Jordan  教授相信人工智能短期内不会出现太多的像人这样的灵活性和可变化性。目前,机器人无法拥有和理解人类的高级智能(抽象思维),无法进行抽象思维的处理。但相信在未来,随着人工智能技术发展能解决这个问题。

他还提到,机器人及人工智能能帮助人类处理大量的数据,并通过数据分析出未来走向,保证数据结果不断提高。但同时,人工智能系统无法辨别真伪,从而无法引领一个公司或企业做出前景化的决定。

人工智能真的很智能吗?

Michael Jordan  教授说出了他的担忧:人工智能的误用,将会带来很大的损失或伤害。如在医疗行业中,机器不太可能做很多的医学诊断;机器人的出现让许多人失业;有些人恶意使用人工智能系统等等。“机器人本身是没有任何恶意要伤害人类的,只是使用这些及其人的人本身含有恶意。”Michael Jordan  教授如是说。

机器学习面临的挑战

(1)必须要设计一个系统,可以以带来有意义的经过校准以后的信息,能够应对一些不确定性,还有在策略规划的角度,可以了解一种做法和另外一种做法之间的差别。同时,我们还要保证系统能能够真正地解释它们自己所做出的决策。如果机器做出了一个决定,我们必须实现让机器能阐释为什么做这样的决定,是否还有其它的潜在方法,以及可以找到问题发生的原因。

(2)需要找到一个可以实现长期目标的追溯,同时可以主动的收集在实现目标相关的数据的系统。

(3)还有一点是实时。但是到目前为止,我们的机器学习方面还没有办法能够达到真正的实时操作,机器需要花几天、几个小时来学习数据。

(4)还有在意外情况下,在外部事件上的连接,包括数据和其他的要求,需要和政府的合作,和法律部门、和社会科学家的合作。

本文由Michael Jordan  教授主题演讲《机器学习:创新视角,直面挑战》整理而成,查看详细演讲实录

Favicon for 开源中国社区最新新闻 06:48 马化腾:云、大数据、AI 不可分割,云是 AI 的强载体 » Post from 开源中国社区最新新闻 Visit off-site link

6月21日,腾讯“云+未来”峰会在深圳召开。在数字经济高速发展,人工智能一日千里的时代,云计算、大数据、人工智能为社会和经济带来的量变与质变究竟是什么?

人工智能到底有没有那么可怕?腾讯董事会主席兼首席执行官马化腾表示人工智能是可知可管可控的。在云还没有发展得非常成熟的时候,人工智能可能还有很长一段路需要走,甚至未来包括量子计算、量子通信等技术发展成熟之后,才会对人工智能的发展有更大的促进。

064502_sSH8_2886655.jpg

在阐述云时代的三大新趋势中提到,马化腾认为云作为产业革新的源动力,在云+未来的时代,出现像计算机的时候应该是什么呢?他推测也许就是人工智能。云+人工智能也许就相当于是电+计算机。

同时,谈及传统企业的未来发展,马化腾觉得就是在云端用人工智能处理大数据。云、大数据、人工智能是不可分割的。云可以提供海量的数据和强大的计算能力的,也是目前进行人工智能研究的一个必不可少的最强载体

在本次大会上,腾讯云首次发布 AI 战略新品—— AI 即服务的智能云,这是腾讯云首度公布其 AI 战略路线,AI即服务是腾讯云在传统云计算结构上建立的新的服务层,是腾讯云提出的新理解,为满足市场对AI能力多维度的需求,腾讯云在软件层面、算法框架服务、基础设施服务等多维度提供新的 AI 开放服务层,开放计算机视觉、智能语音识别、自然语言处理三大核心能力。截至目前,腾讯云围绕这三大能力,已提供25种AI服务,包括应用服务 8 种,平台服务15种,框架服务2种。

News stories from Wednesday 21 June, 2017

Favicon for 开源中国社区最新新闻 22:36 apidoc4j 首个可用版本发布,生成 API 文档的 maven 插件 » Post from 开源中国社区最新新闻 Visit off-site link

apidoc4j 是一个根据 javadoc 生成 rest api 文档的 maven 插件。

第一版特性:

1.SpringMVC 支持

2.生成 markdown 格式的 api 文档

Favicon for 开源中国社区最新新闻 20:21 X-Series 编辑器 1.1.1发布 » Post from 开源中国社区最新新闻 Visit off-site link

本次发布新增的功能主要集中在Xross Unit编辑器,包括

  1. 编辑区缩放功能。所有组件的编辑器都支持

  2. 鸟瞰图。方便在图形很大的时候,迅速定位需要显示的区域。

  3. 截屏功能,把图形保存为文件。仅xross unit编辑器支持。

  4. 属性自动识别功能。系统可以自动识别组件里定义的以PROP_KEY为开头的静态String常量作为可编辑的属性。仅xross unit编辑器支持

  5. 支持组件引用外部xunit模块内部的组件。仅xross unit编辑器支持

下载地址

如果使用xross unit编辑器请同时请更新xross unit的依赖版本为0.9.2

Favicon for 异次元软件世界 17:38 [来自异次元] 黑域 - 可能是最好的安卓省电防卡顿工具!不用Root禁止APP后台唤醒自启动 » Post from 异次元软件世界 Visit off-site link

heiyu_banner.jpg

虽然现在 Android 安卓手机性能配置越来越牛逼,可是很多人用着用着,还是会觉得越来越慢,甚至会卡顿、发热、疯狂耗电、不知不觉被偷跑流量、应用闪退、死机。

这其实并不是用户或手机的问题,而是各种 APP 常驻后台偷偷做一些“流氓”行为所带来的影响。比如后台自动更新、获取新闻、推送广告、唤醒其他应用 (俗称“全家桶”)、甚至是打开摄像头/麦克风录音上传资料等等。这样鱼蛇混杂的 APP 多了,手机后台一刻不停歇,久而久之就演变成一场“灾难” ……

[ 马上前往围观.... ]


异次元还有这些值得一看:

异次元正版数字商城  |  异次元首页  |  iPc.me  |  新浪微博  |  软件精选

Favicon for 小众软件 - Appinn 17:37 在移动设备上玩 PC 游戏!真的要这样么? » Post from 小众软件 - Appinn Visit off-site link

Moonlight Game Streaming 是一款开源的流媒体游戏应用,它通过 NVIDIA GAMESTREAM 协议连接 Android 设备与电脑(Win/macOS/Linux),让你能够将 PC 游戏画面传输到 Android 或者 iOS 设备上,以及 Chrome 浏览器和 VR 设备上。@Appinn

真的要这样么?

不过看了上图,有点理解了 😂

再来看几张图片吧:

这是一个将大屏幕发送至小屏幕的应用。并且不会牺牲画质。鼠标,键盘和控制器的输入是从 Android 设备发送到 PC,iOS 端可以通过屏幕控制游戏。

来看一些参数和要求:

  • 开源、无广告
  • 最高 1080p 60 FPS
  • 可以连接最多 4 个控制器
  • H.265 画质
  • 5.1 环绕声
  • 需要 GeForce GTX 600+ 显卡
  • NVIDIA GeForce Experience (GFE) 2.2.2 或更高版本

来看视频:

所以,你是这样的游戏玩家么?


相关阅读


©2017 青小蛙 for 小众软件 | 加入我们 | 投稿 | 订阅指南 | 反馈 | 代理(优惠码 Appinn)
b27c41ad47c2611d60d7452a4c02dd52
Site Meter

apppackge:

Favicon for ITeye资讯频道 17:31 20个常见的Java错误以及规避方法 » Post from ITeye资讯频道 Visit off-site link
引用
原文:50 Common Java Errors and How to Avoid Them (Part 1)
作者:Angela Stringfellow
翻译:雁惊寒

译者注:本文介绍了20个常见的Java编译器错误,每种错误都包含了代码片段、问题说明,并给出了相关的链接来帮助你快速地理解并解决这些问题。以下是译文。

在开发Java软件的时候可能会遇到很多类型的错误,但大多数可以避免。我们精心挑选了20个最常见的Java软件错误,包含了代码示例和教程,以帮助你解决一些常见的编码问题。

要获得更多编写Java程序的提示和技巧,你可以下载我们的“Comprehensive Java Developer’s Guide”这本书,它里面包含了所有你需要的东西,从各类工具到最佳网站和博客、YouTube频道、Twitter影响者、LinkedIn组、播客、must-attend events等等。

如果你正在使用.NET,你应该阅读我们的50个最常见的.NET软件错误指南,以避免出现这些错误。但是如果你当前遇到的挑战是与Java相关的,那么请阅读下面的文章以了解最常见的问题及其解决方法。

编译器错误

在编译器运行Java代码的时候会创建编译器错误消息。有一点很重要,编译器可能会因为一个错误抛出多个错误消息。所以修复一个错误,然后重新编译,这样可以解决很多问题。

1. “… Expected”

当代码中缺少某些东西时,会产生这个错误。通常这是因为缺少一个分号或右括号。
private static double volume(String solidom, double alturam, double areaBasem, double raiom) {
double vol;
    if (solidom.equalsIgnoreCase("esfera"){
        vol=(4.0/3)*Math.pi*Math.pow(raiom,3);
    }
    else {
        if (solidom.equalsIgnoreCase("cilindro") {
            vol=Math.pi*Math.pow(raiom,2)*alturam;
        }
        else {
            vol=(1.0/3)*Math.pi*Math.pow(raiom,2)*alturam;
        }
    }
    return vol;
}

通常,这种错误消息不会指出产生问题的确切位置。要找出问题所在,需要:
  • 确保所有的左括号都有相应的右括号。
  • 查看错误所指示的那一行前面的代码。这个错误通常是在后面的代码中才会被编译器发现。
  • 有的时候,有些字符(例如左括号)不应该位于Java代码的第一个。
实例:一个丢失的圆括号引发的错误。

2. “Unclosed String Literal”

当字符串结尾缺少引号时,会产生“unclosed string literal”错误消息,并且该消息就显示在出错的那一行上。
 public abstract class NFLPlayersReference {
    private static Runningback[] nflplayersreference;
    private static Quarterback[] players;
    private static WideReceiver[] nflplayers;
    public static void main(String args[]){
    Runningback r = new Runningback("Thomlinsion");
    Quarterback q = new Quarterback("Tom Brady");
    WideReceiver w = new WideReceiver("Steve Smith");
    NFLPlayersReference[] NFLPlayersReference;
        Run();// {
        NFLPlayersReference = new NFLPlayersReference [3];
        nflplayersreference[0] = r;
        players[1] = q;
        nflplayers[2] = w;
            for ( int i = 0; i < nflplayersreference.length; i++ ) {
            System.out.println("My name is " + " nflplayersreference[i].getName());
            nflplayersreference[i].run();
            nflplayersreference[i].run();
            nflplayersreference[i].run();
            System.out.println("NFL offensive threats have great running abilities!");
        }
    }
    private static void Run() {
        System.out.println("Not yet implemented");
    }     
}

通常,这种错误在以下这些情况下会产生:
  • 字符串不是以引号结尾。这很容易修改,用指定的引号来结束字符串即可。
  • 字符串超出一行。长字符串可以分成多个短串,并用加号(“+”)连接。
  • 作为字符串一部分的引号没有使用反斜杠(“\”)来进行转义。
请阅读这篇文章:未封闭的字符串错误消息。

3. “Illegal Start of an Expression”

出现“Illegal Start of an Expression”错误的原因有很多。它已经成为不太有用的错误消息之一。一些开发者认为这是由坏的代码味道造成的。

通常,创建一个表达式是为了生成一个新值或给其他变量赋值。编译器期望找到一个表达式,但是因为语法不符合预期而找不到表达式。在下面这些代码中可以找到这种错误。
} // 把它添加到这里
       public void newShape(String shape) {
        switch (shape) {
            case "Line":
                Shape line = new Line(startX, startY, endX, endY);
            shapes.add(line);
            break;
                case "Oval":
            Shape oval = new Oval(startX, startY, endX, endY);
            shapes.add(oval);
            break;
            case "Rectangle":
            Shape rectangle = new Rectangle(startX, startY, endX, endY);
            shapes.add(rectangle);
            break;
            default:
            System.out.println("ERROR. Check logic.");
        }
        }
    } // 从这里删掉它
    }

请阅读这篇文章:如何排除“illegal start of an expression”错误。

4. “Cannot Find Symbol”

这是一个非常常见的问题,因为Java中的所有标识符都需要在使用之前进行声明。出现这个错误是因为,在编译代码时,编译器不明白该标识符的含义。
61db6327-5d9d-336a-aec5-1699914e7182.png

有很多原因可能会产生“cannot find symbol”错误信息:
  • 标识符声明时的拼写可能与代码中使用时的拼写不一致。
  • 变量从未被声明。
  • 未在同一作用域内声明该变量。
  • 没有导入类。
请阅读这篇文章:关于“cannot find symbol”错误的讨论

5. “Public Class XXX Should Be in File”

当XXX类和Java程序文件名不匹配时,就会产生“public class XXX should be in file”错误消息。 只有当类名和Java文件名相同时,才能编译代码。
package javaapplication3;  
  public class Robot {  
        int xlocation;  
        int ylocation;  
        String name;  
        static int ccount = 0;  
        public Robot(int xxlocation, int yylocation, String nname) {  
            xlocation = xxlocation;  
            ylocation = yylocation;  
            name = nname;  
            ccount++;         
        } 
  }
  public class JavaApplication1 { 
    public static void main(String[] args) {  
        robot firstRobot = new Robot(34,51,"yossi");  
        System.out.println("numebr of robots is now " + Robot.ccount);  
    }
  }

要解决这个问题,可以:
  • 把类和文件命名为相同的名字。
  • 确保两个名称始终保持一致。
请阅读这篇文章:“Public class XXX should be in file”错误的示例

6. “Incompatible Types”

“Incompatible Types”是赋值语句尝试对变量与表达式进行类型匹配时发生的逻辑错误。通常,将字符串赋值给一个整数时会产生这个错误,反之亦然。这不是一个Java语法错误。
test.java:78: error: incompatible types
return stringBuilder.toString();
                             ^
required: int
found:    String
1 error

当编译器抛出“incompatible types”消息时,确实不太容易解决这个问题:
  • 使用类型转换函数。
  • 开发人员可能需要修改代码原有的功能。
看一下这个例子:将一个字符串赋值给整数会出现“incompatible types”错误

7. “Invalid Method Declaration; Return Type Required”

这个错误消息的意思是,在方法声明中未显示地声明方法的返回类型。
public class Circle
{
    private double radius;
    public CircleR(double r)
    {
        radius = r;
    }
    public diameter()
    {
       double d = radius * 2;
       return d;
    }
}

有这几种情况会触发“invalid method declaration; return type required”错误:
  • 忘记声明类型。
  • 如果方法没有返回值,那么需要在方法声明中指定“void”作为返回类型。
  • 构造函数不需要声明类型。但是,如果构造函数名称中存在错误,那么编译器会把构造函数看成是没有指定类型的方法。
看一个这个例子:构造函数的命名问题触发“invalid method declaration; return type required“问题

8. “Method in Class Cannot Be Applied to Given Types”

这个错误消息比较有用,它的意思是某个方法调用了错误的参数。
RandomNumbers.java:9: error: method generateNumbers in class RandomNumbers cannot be applied to given types;
generateNumbers();

required: int[]

found:generateNumbers();

reason: actual and formal argument lists differ in length

在调用方法时,应传入在其声明时定义的那些参数。请检查方法声明和方法的调用,以确保它们是匹配的。

这个讨论说明了方法声明和方法调用中参数的不兼容性所导致的Java错误

9. “Missing Return Statement”

当一个方法缺少return语句时,会触发“Missing Return Statement”错误消息。有返回值(非void类型)的方法必须要有一条返回某个值的语句,以便在方法之外调用该值。
public String[] OpenFile() throws IOException {
    Map<String, Double> map = new HashMap();
    FileReader fr = new FileReader("money.txt");
    BufferedReader br = new BufferedReader(fr);
    try{
        while (br.ready()){
            String str = br.readLine();
            String[] list = str.split(" ");
            System.out.println(list);               
        }
    }   catch (IOException e){
        System.err.println("Error - IOException!");
    }
}

编译器抛出“missing return statement”消息有这几个原因:
  • 返回语句被错误地省略了。
  • 该方法没有返回任何值,但是在方法声明中未声明类型为void。
请查看如何解决“missing return statement”错误这个例子。

10. “Possible Loss of Precision”

当赋值给变量的信息超过了该变量可以承载的上限时,就会触发“Possible Loss of Precision”错误。一旦发生这种情况,部分信息将被丢弃。如果这样做没问题的话,那么在代码上应该将变量显式地声明为新的类型。
290f0317-259f-36e8-a62f-b626b2a56fc5.png

以下情况通常会发生“possible loss of precision”错误:
  • 尝试将一个实数赋值给整型类型的变量。
  • 尝试将一个double数据赋值给整型类型的变量。
Java中的基本数据类型解释了不同数据类型的特点。

11. “Reached End of File While Parsing”

这个错误消息通常在程序缺少右大括号(“}”)时触发。有时,在代码的末尾增加右大括号可以快速地修复此错误。
public class mod_MyMod extends BaseMod
public String Version()
{
     return "1.2_02";
}
public void AddRecipes(CraftingManager recipes)
{
   recipes.addRecipe(new ItemStack(Item.diamond), new Object[] {
      "#", Character.valueOf('#'), Block.dirt
   });
}

上述代码会产生以下这个错误:
java:11: reached end of file while parsing }

编码工具和适当的代码缩进可以更容易地找到这些不匹配的大括号。

请阅读这篇文章:缺少的大括号会触发“reached end of file while parsing”错误消息

12. “Unreachable Statement”

当一条语句出现在一个它不可能被执行的地方时,会触发“Unreachable statement”错误。通常,是在一个break或return语句之后。
for(;;){
   break;
   ... // unreachable statement
}
int i=1;
if(i==1)
  ...
else
  ... // dead code

通常,简单地移动return语句即可修复此错误。请阅读这篇文章:如何修复“Unreachable Statement”错误

13. “Variable Might Not Have Been Initialized”

在方法中声明的局部变量如果没有初始化,就会发生这种错误。如果在if语句中包含没有初始值的变量时,就会发生这种错误。
int x;
if (condition) {
    x = 5;
}
System.out.println(x); // x可能尚未初始化

请阅读这篇文章:如何避免触发“Variable Might Not Have Been Initialized”错误

14. “Operator … Cannot be Applied to ”

当操作符作用于未在其定义范围内的类型时,会出现此问题。
operator < cannot be applied to java.lang.Object,java.lang.Object

当Java代码尝试在计算(减法、乘法、大小比较等)中使用字符串类型时,经常会触发这种错误。要修复这个问题,需要将字符串转换为整数或浮点数。

请阅读这篇文章:非数字类型为什么会导致Java软件错误

15. “Inconvertible Types”

当Java代码尝试执行非法转换时,会发生“Inconvertible Types”错误。
TypeInvocationConversionTest.java:12: inconvertible types
found   : java.util.ArrayList<java.lang.Class<? extends TypeInvocationConversionTest.Interface1>>
required: java.util.ArrayList<java.lang.Class<?>>
    lessRestrictiveClassList = (ArrayList<Class<?>>) classList;

                                                     ^
例如,布尔类型不能转换为整形。

请阅读这篇文章:如何在Java软件中转换不可转换的类型

16. “Missing Return Value”

当返回语句包含不正确的类型时,你会收到“Missing Return Value”消息。例如,查看以下代码:
public class SavingsAcc2 {
    private double balance;
    private double interest;
    public SavingsAcc2() {
        balance = 0.0;
        interest = 6.17;
    }
    public SavingsAcc2(double initBalance, double interested) {
        balance = initBalance;
        interest = interested;
    }
    public SavingsAcc2 deposit(double amount) {
        balance = balance + amount;
        return;
    }
    public SavingsAcc2 withdraw(double amount) {
        balance = balance - amount;
        return;
    }
    public SavingsAcc2 addInterest(double interest) {
        balance = balance * (interest / 100) + balance;
        return;
    }
    public double getBalance() {
        return balance;
    }
}

返回以下错误:
SavingsAcc2.java:29: missing return value 
return; 
^ 
SavingsAcc2.java:35: missing return value 
return; 
^ 
SavingsAcc2.java:41: missing return value 
return; 
^ 
3 errors

通常,这个错误的出现是因为有某个返回语句没有返回任何东西。

请阅读这篇文章:如何避免“Missing Return Value”错误

17. “Cannot Return a Value From Method Whose Result Type Is Void”

当一个void方法尝试返回任何值时,会发生此Java错误,例如在以下代码中:
public static void move()
{
    System.out.println("What do you want to do?");
    Scanner scan = new Scanner(System.in);
    int userMove = scan.nextInt();
    return userMove;
}
public static void usersMove(String playerName, int gesture)
{
    int userMove = move();
    if (userMove == -1)
    {
        break;
    }

通常,更改方法的返回类型与返回语句中的类型一致,可以解决这个问题。例如,下面的void可以改为int:
public static int move()
{
    System.out.println("What do you want to do?");
    Scanner scan = new Scanner(System.in);
    int userMove = scan.nextInt();
    return userMove;
}

请阅读这篇文章:如何修复“Cannot Return a Value From Method Whose Result Type Is Void”错误

18. “Non-Static Variable … Cannot Be Referenced From a Static Context”

当编译器尝试在静态方法中访问非静态变量时,会发生此错误:
public class StaticTest {
    private int count=0;
    public static void main(String args[]) throws IOException {
        count++; //compiler error: non-static variable count cannot be referenced from a static context
    }
}

要解决“Non-Static Variable … Cannot Be Referenced From a Static Context”这个错误,可以做两件事情:
  • 可以将变量声明为静态。
  • 可以在静态方法中创建非静态对象的实例。
请阅读这个教程:静态和非静态变量之间的区别

19. “Non-Static Method … Cannot Be Referenced From a Static Context”

当Java代码尝试在静态类中调用非静态方法时,会发生此问题。例如,以下代码:
class Sample
{
   private int age;
   public void setAge(int a)
   {
      age=a;
   }
   public int getAge()
   {
      return age;
   }
   public static void main(String args[])
   {
       System.out.println("Age is:"+ getAge());
   }
}

会触发这个错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Cannot make a static reference to the non-static method getAge() from the type Sample

要在静态方法中调用非静态方法,需要是声明一个要调用的非静态方法的类的实例。

请阅读这篇文章:非静态方法和静态方法之间的区别

20. “(array) Not Initialized”

当数组已经声明但未初始化时,你会得到“(array) Not Initialized”这样的错误消息。数组的长度是固定的,因此每个数组都需要以所需的长度进行初始化。

以下代码是正确的:
AClass[] array = {object1, object2}

这样也可以:
AClass[] array = new AClass[2];
...
array[0] = object1;
array[1] = object2;

但这样是不正确的:
AClass[] array;
...
array = {object1, object2};

请阅读这篇文章:关于如何在Java中初始化数组

未完待续

今天我们讨论了编译器的错误,下次我们将深入讨论各种可能会出现的运行时异常。像本文的结构一样,下次也会包含代码片段、解释,以及相关的链接来帮助你尽快修复代码。

感谢 jihong10102006 投递这篇资讯

声明:本文系ITeye网站发布的原创资讯,严禁任何网站转载本文,否则必将追究法律责任!

已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐



Favicon for 开源中国社区最新新闻 17:15 Spring Security 5.0.0.M2 发布,Spring 安全框架 » Post from 开源中国社区最新新闻 Visit off-site link

Spring Security 5.0.0.M2 发布了。Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。

Spring Security  为基于J2EE企业应用软件提供了全面安全服务。特别是使用领先的J2EE解决方案-Spring框架开发的企业软件项目。人们使用Spring Security有很多种原因,不过通常吸引他们的是在J2EE  Servlet规范或EJB规范中找不到典型企业应用场景的解决方案。

该版本更新亮点包括:

下载地址:

Favicon for 开源中国社区最新新闻 16:45 KBEngine v0.9.16 发布,分布式游戏服务端引擎 » Post from 开源中国社区最新新闻 Visit off-site link

分布式游戏服务端引擎 KBEngine v0.9.16 发布了。更新如下:

新增与改善:

  • 调整安全关服时实体销毁为分批销毁。

  • 添加API: KBEngine.kbassert,用于脚本中断底层,可以通过Core看堆栈信息。

  • 优化script::Map,部分操作直接使用原生的Python处理。

  • 更新API文档。

BUG修正:

  • 修正FixedArray、FixedDict的一些操作导致内存泄漏或者异常问题。

  • 修正线程池可能拥有任务时因为异步问题导致没有立即执行任务却睡眠的问题。

  • 修正实体处于ghost状态时被调用cell的暴露客户端的方法时对方进程收到请求显示消息参数错误问题。

详细更新信息点此查看

一款开源的MMOG游戏服务端引擎, 仅Python脚本即可简单高效的完成任何游戏逻辑(支持热更新), 使用配套客户端插件能够快速与(Unity3D、UE4、OGRE、HTML5、等等)结合形成一个完整的客户端。

引擎使用C++编写,开发者无需重复的实现游戏服务端通用的底层技术, 将精力真正集中到游戏开发层面上来,稳定可靠并且快速的打造各种网络游戏。

 (经常被问到承载上限,KBEngine底层架构被设计为多进程分布式动态负载均衡方案, 理论上只需要不断扩展硬件就能够不断增加承载上限,单台机器的承载上限取决于游戏逻辑本身的复杂度。)

Demos:

Unity3d     : https://github.com/kbengine/kbengine_unity3d_demo/releases/latest
Unity3d     : https://github.com/kbengine/kbengine_unity3d_warring/releases/latest
UE4         : https://github.com/kbengine/kbengine_ue4_demo/releases/latest
Ogre        : https://github.com/kbengine/kbengine_ogre_demo/releases/latest
Cocos2d_js  : https://github.com/kbengine/kbengine_cocos2d_js_demo/releases/latest

10095005_TYi9.jpg

10094947_EbQt.jpg

Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 15:18 Michael Jordan:目前人工智能发展到了什么地步? » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
logo_bigger.jpg

大家在谈到人工智能的时候就会特别关注机器学习领域将会以什么层级的速度向未来发展。“云+未来”峰会邀请到的顶尖科学家,伯克利教授、人工智能领域的专家Michael Jordan先生进行主题演讲,主题为:“机器学习:创新视角直面挑战”。

By Michael Jordan
Favicon for 异次元软件世界 14:05 [来自异次元] 14 款正版 Mac 应用促销包上架!折扣大,越早越便宜! » Post from 异次元软件世界 Visit off-site link

stacksocial_mac_bundle.jpg

最近不少人入手新款的 Mac 了,刚好 StackSocial 又推出了一个不错的 Mac Bundle 正版应用促销包,大家不妨去看看有没需要的 APP 优惠哦。 获取 Mac App 正版应用促销包 这次的促销包 “The World's Biggest Mac App Bundle” 依然是一贯的 Pay What You Want (随意出价) 模式,高于均价即可获得全部应用,而均价会随着时……

[ 马上前往围观.... ]


异次元正版数字商城  |  异次元首页  |  iPc.me  |  新浪微博  |  软件精选

Favicon for 开源中国社区最新新闻 11:55 SpreadJS 全面支持 Angular2,V10.2 版本即将发布 » Post from 开源中国社区最新新闻 Visit off-site link

日前,纯前端表格控件 SpreadJS 发布了最新的CTP版本,在此版本中增加了对 Angular2 的支持以及一些 bug 修复。

SpreadJS 纯前端表格控件是基于 HTML5 的 JavaScript 电子表格和网格功能控件,提供了完备的公式引擎、排序、过滤、输入控件、数据可视化、Excel 导入/导出等功能,适用于 .NET、Java 和移动端等各平台在线编辑类 Excel 功能的表格程序开发。

Angular2 是一套完整的前端框架,用于构建移动应用和桌面 Web 应用的开发平台。与 AngularJS 相比,Angular2 是一个完全重写的版本,同时也不兼容 AngularJS。Angular2 是基于 ES6 的 TypeScript 扩展实现的,增加了对 iOS 和 Android 等的原生移动支持;在 Angular2 中只有一种依赖注入方式,就是在构造函数中通过类型注入,这种方式能够实现在不同层次的组件树中,对相同类型有不同的实现。

SpreadJS 对 Angular2 这个当前流行的前端框架的支持,表明 SpreadJS 始终站在技术前沿,为用户提供最新最全的技术,帮助用户更加快速、灵活的进行在线类编辑 Excel 功能的表格程序开发。

在 Angular2 中集成 SpreadJS 只需四步:

  • 首先,将 SpreadJS 的相关文件加入到 Angular2 的工程中。

  • 其次,修改 app.module.ts 文件,将 SpreadJS 的相关 module 引入到工程中。

  • 再次,修改 app.component.ts 文件。构建 SpreadJS 模板,并通过对象绑定的方式将 SpreadJS 的一些属性和事件绑定到模板上。

  • 最后,在工程路径下使用命令行输入“npm start”命令重新启动。

详细的操作步骤,请参考下面的博客

http://blog.gcpowertools.com.cn/post/spreadjs-support-angular2.aspx

SpreadJS V10.2 版本即将发布,更多更好的功能尽在新版本中,敬请期待!

登录 SpreadJS 官网,了解更多。

关于葡萄城

葡萄城是全球控件行业领导者,世界领先的企业应用定制工具、企业报表和商业智能解决方案提供商,为超过75%的全球财富500强企业提供服务。

Favicon for 开源中国社区最新新闻 11:52 Debian 9 安装镜像存在 bug ,开发人员正在修复 » Post from 开源中国社区最新新闻 Visit off-site link

Debian 9 前俩天发布了正式版,许多用户都在准备下载和体验新版本。不过据外媒报道,Debian 9 的所有镜像中似乎都存在一个 bug 。 当您尝试使用图形安装程序安装它时,将显示一条错误消息:

“There was an error reading data from the CD-ROM. Please make sure it is in the drive… Failed to copy from CD-ROM, retry?”

调试后会发现,原因似乎是下面在日志文件中出现的错误消息。 安装程序找不到 libzlo2-2-udeb_2.08-1.2 + b2_amd64.udeb 包: 

cdrom-retriever: error: Unable to find `/w/work/free/gnomepool/main/libl/libzlo2-2-udeb/libzlo2-2-udeb_2.08-1.2+b2_amd64.udeb`

在尝试下载 Debian 9 GNOME Live 时,也发现了同样的错误。Debian 论坛上的其他用户也确认了所有其他的 Debian 镜像的问题。 GNOME、KDE、LXDE、XFCE、Cinnamon ..所有 Live 镜像都受到影响。

114921_1nvB_2896879.png

Debian 开发人员已经确认了这个 bug ,并表示正在修复。他们在 Debian Tracker 上创建了 ID #865015 的错误报告,以便跟踪问题,定级为: 严重

据 Debian 的开发者 Steve McIntyre 说,这个 bug 的真正原因是:

The Packages files in the image point to .debs using full path, not relative to the stuff in the image.

他在测试一个修复,如果进展顺利,Debian 9 的所有镜像都将重建。 

Favicon for 开源中国社区最新新闻 11:10 国内首位!Node.js 社区吸纳阿里云张秋怡为 CTC 成员 » Post from 开源中国社区最新新闻 Visit off-site link

继去年 MariaDB 基金会将阿里云数据库高级专家彭立勋列为个人成员后,今年又有一位阿里云工程师在国际技术社区重要工作中有所担当,她就是张秋怡。

张秋怡,花名洗影,阿里云云应用服务团队工程师。2016年,她毕业于中山大学软件工程专业,现在在阿里云 alinode 团队参与 alinode  Node.js 应用服务解决方案的开发和维护,同时也对阿里内部和外部的客户提供技术咨询的服务。

近日 Node.js 社区决定,将张秋怡吸纳为CTC(核心技术委员会)成员,而这也使得她成为国内首位 Node.js 社区 CTC 成员。上图为 Node.js 社区宣布将张秋怡吸纳为 CTC 页面(@joyeecheung 为张秋怡在Github的账号)

CTC 主要负责 Node.js Core 大方向上的技术决策。其成员主要的工作包括:参加周会讨论 GitHub Node.js 组织下面所有提交给 CTC 讨论或者 Review 的事项,参与 CTC 邮件列表的讨论,对有争议的 issue 进行投票,Review Node.js Core semver-major 的不兼容改动(semver-major 的 PR 必须要有 CTC 成员的 sign-off 才能合并),以及其他 Node.js Core Collaborator 的工作 (CTC 成员也是 Collaborator)。

只有对 Node.js 社区有足够大贡献的人,才会被吸纳为 CTC 成员,张秋怡做了哪些贡献?她在接受云栖社区电子邮件访谈时说:“我主要是参与了 WHATWG URL 标准的实现(在 8.x 我们已经做到能完全通过 Web Platform Test 了),和内部 benchmark 的一些改进,平时也会帮忙维护 issue tracker 和 review 代码。”回复中,张秋怡也指出,日常工作其实是维护 issue 和 code review 更多一些。

聊到国内为什么到今天才有第一位 CTC 成员时,张秋怡表示并不很清楚,但她分析可能和以下两个原因有关系:

1.语言障碍;

2.Node.js 社区的人基本都是志愿者,需要大家牺牲个人大量周末休闲的时间。

有些原因她没在访谈中说,但却在稍早些时候——《Node.js Collaboration Summit 与 JSConf EU 纪行》一文中有所点明。她当时感叹中国开发者在国际社区与标准制定过程的缺席,进一步探究原因她则发现,国内工程师大都喜欢自己去寻找曲线救国的解决方案,缺乏标准意识,从长远角度解决问题……从这来看,或许也能多少知道为什么在国际技术社区看不到来自国内的现象级人物和技术贡献的根本原因。

尽管这位年轻的 CTC 成员本科毕业才一年,但她的技术实力很雄厚,而这来源于她在 Node.js 领域四年的持续耕耘。因此张秋怡在成为 CTC 成员之前,也收获了来自小伙伴的钦佩。2016年年底,张秋怡受邀在 Node.js Interactive 2016 North America 上做分享,归来后她写了一篇文章《Node.js Interactive 2016 North America 纪行》做记录,阿里的技术同学除了在内网感叹对最新进展介绍全面、信息量太大的同时,也有人发自内心的问:“如何成为像你这样的大神。”

对于下一阶段,张秋怡说,原来做什么,现在还会继续做什么,只不过每周会多参加一次语音会议。在阿里云的工作,她说,将继续维护 alinode 和开发新特性,“会将 Node8 功能集成到 alinode 平台上,提供更多为 Node.js 应用监控调优和故障排查的手段。”

更多细节,可查看完整访谈内容

Favicon for ITeye资讯频道 10:59 大数据平台架构技术选型与场景运用 » Post from ITeye资讯频道 Visit off-site link
引用
导读:本文将大数据的工作角色分为三种类型,包括业务相关、数据科学相关和数据工程。大数据平台偏向于工程方面,大数据平台一般包括数据源、数据采集、数据存储、数据分析等方面。

讲师从数据来源、数据源结构、数据变化程度和数据规模等4个维度对数据源进行分类,数据源分类维度的不同决定最后的技术选型。讲师还对数据源分类的定义及选型方式进行详细讲解,最终联系到大数据的应用场景,让数据应用方式更加直观。

一、大数据平台

大数据在工作中的应用有三种:
与业务相关,比如用户画像、风险控制等;
  • 与决策相关,数据科学的领域,了解统计学、算法,这是数据科学家的范畴;
  • 与工程相关,如何实施、如何实现、解决什么业务问题,这是数据工程师的工作。
数据工程师在业务和数据科学家之间搭建起实践的桥梁。本文要分享的大数据平台架构技术选型及场景运用偏向于工程方面。
dcfbd8f7-aefd-34b3-ae61-c0d4a558dbf4.png

如图所示,大数据平台第一个要素就是数据源,我们要处理的数据源往往是在业务系统上,数据分析的时候可能不会直接对业务的数据源进行处理,而是先经过数据采集、数据存储,之后才是数据分析和数据处理。

从整个大的生态圈可以看出,要完成数据工程需要大量的资源;数据量很大需要集群;要控制和协调这些资源需要监控和协调分派;面对大规模的数据怎样部署更方便更容易;还牵扯到日志、安全、还可能要和云端结合起来,这些都是大数据圈的边缘,同样都很重要。

二、数据源的特点
d6738ddd-dcd0-3d28-9add-5f2c017560d0.png

数据源的特点决定数据采集与数据存储的技术选型,我根据数据源的特点将其分为四大类:
  • 第一类:从来源来看分为内部数据和外部数据;
  • 第二类:从结构来看分为非结构化数据和结构化数据;
  • 第三类:从可变性来看分为不可变可添加数据和可修改删除数据;
  • 第四类,从规模来看分为大量数据和小量数据。
内部数据

来自企业内部系统,可以采用主动写入技术(push),从而保证变更数据及时被采集。
5e9e82d4-0409-32a6-aea9-a5cacc1bdb09.png

外部数据

企业要做大数据的话肯定不会只局限于企业内部的数据,比如银行做征信,就不能只看银行系统里的交易数据和用户信息,还要到互联网上去拉取外部数据。

外部数据分为两类:
  • 一类是要获取的外部数据本身提供API,可以调用API获取,比如微信;
  • 另一类是数据本身不提供API,需要通过爬虫爬取过来。
451174b2-c70f-3b1e-be00-2a35d288fc6b.png

这两类数据都不是我们可控制的,需要我们去获得,它的结构也可能跟我们企业内部数据的结构不一样,还需要进行转换,爬虫爬取的数据结构更乱,因此大数据平台里需要做ETL,由ETL进行数据提取、转换、加载,清洗、去重、去噪,这个过程比较麻烦。爬虫爬过来的数据往往是非结构性的、文档型的数据,还有视频、音频,这就更麻烦了。

结构化数据 & 非结构化数据
78713706-7ba6-35bf-9bd0-e29b61d93a5b.png

结构化和非结构化数据在存储时的选型完全不同,非结构化数据偏向于文件,或者选择NoSQL数据库;考虑到事务的一致性,我们也可能选择传统的数据库。

不变可添加数据

如果数据源的数据是不变的,或者只允许添加(通常,数据分析的事实表,例如银行交易记录等都不允许修改或删除),则采集会变得非常容易,同步时只需要考虑最简单的增量同步策略,维持数据的一致性也相对变得容易。

对于大数据分析来说,我们每天在处理的数据大部分是不可变更的。正如Datomic数据库的设计哲学就是数据为事实(fact),它是不可变的,即数据是曾经发生的事实,事实是不可以被篡改的,哪怕改一个地址,从设计的角度来说也不是改动一个地址,而是新增了一个地址。交易也是如此。

可修改可删除数据

银行的交易记录、保险单的交易记录,互联网的访客访问记录、下单记录等都是不可变的。但是数据源的数据有些可能会修改或删除,尤其是许多维表经常需要变动。要对这样的数据进行分析处理,最简单的办法就是采用直连形式,但直连可能会影响数据分析的效率与性能,且多数数据模型与结构可能不符合业务人员进行数据分析的业务诉求。如果采用数据采集的方式,就要考虑同步问题。

大数据量

针对大数据量,如果属于高延迟的业务,可以采用batch的处理方式,实时分析则需要使用流式处理,将两者结合就是Lambda架构,即有实时处理、又能满足一定的大数据量,这是现在比较流行的大数据处理方式。
687d0cb1-c7d1-3af0-bdc3-82a67f380d13.png

三、数据存储的技术选型

大数据平台特征:相同的业务数据会以多种不同的表现形式,存储在不同类型的数据库中,形成一种poly-db的数据冗余生态。

先把数据源进行分类,然后根据其特点判断用什么方式采集,采集之后要进行存储。数据存储的技术选型依据有三点:
  • 第一点取决于数据源的类型和采集方式。比如非结构化的数据不可能拿一个关系数据库去存储。采集方式如果是流失处理,那么传过来放到Kafka是最好的方式。
  • 第二点取决于采集之后数据的格式和规模。比如数据格式是文档型的,能选的存储方式就是文档型数据库,例如MongoDB;采集后的数据是结构化的,则可以考虑关系型数据库;如果数据量达到很大规模,首选放到HDFS里。
  • 第三点是分析数据的应用场景。根据数据的应用场景来判定存储技术选型。
场景一:舆情分析

做舆情分析的时候客户要求所有数据存放两年,一天600多万,两年就是700多天×600多万,几十亿的数据。而且爬虫爬过来的数据是舆情,做了分词之后得到的可能是大段的网友评论,客户要求对舆情进行查询,做全文本搜索,并要求响应时间控制在10s以内。

我们后来选择用ES,在单机上做了一个简单的测试,大概三亿多条数据,用最坏的查询条件进行搜索,保证这个搜索是全表搜索(基于Lucence创建了索引,使得这种搜索更高效),整个查询时间能控制在几秒以内。
cab48cac-ce3c-37ae-92da-047e8209788c.png

如图所示,爬虫将数据爬到Kafka里,在里面做流处理,去重去噪做语音分析,写到ElasticSearch里。我们做大数据的一个特点是多数据库,会根据不同的场景选择不同的数据库,所以会产生大量的冗余。

场景二:商业智能产品

BI产品主要针对数据集进行的数据分析以聚合运算为主,比如求合、求平均数、求同比、求环比、求其他的平方差或之类的标准方差。我们既要满足大数据量的水平可伸缩,又要满足高性能的聚合运算。选择Parquet列式存储,可以同时满足这两个需求。
dc625c6e-eda8-3ff7-8f2e-6bdf029aa72a.png

场景三:Airbnb的大数据平台

Airbnb的大数据来自两块:一是本身的业务数据,二是大量的事件。数据源不同,采集方式也不一样。日志数据通过发送Kafka事件,而线上数据则通过Sqoop同步。数据存储选择HDFS集群,然后通过Presto对Hive表执行即席查询。S3是一个独立的存储系统。
24abd378-1c51-34d9-a309-f867c2a60af9.png

四、数据处理
8420f29f-4be1-3372-8f9a-f8f9b3e6fbc1.png

数据处理分为三大类:
  • 第一类是从业务的角度,细分为查询检索、数据挖掘、统计分析、深度分析,其中深度分析分为机器学习和神经网络。
  • 第二类是从技术的角度,细分为Batch、SQL、流式处理、machine learning、Deep learning。
  • 第三类是编程模型,细分为离线编程模型、内存编程模型、实时编程模型。
结合前文讲述的数据源特点、分类、采集方式、存储选型、数据分析、数据处理,我在这里给出一个总体的大数据平台的架构。值得注意的是,架构图中去掉了监控、资源协调、安全日志等。
f16a8fae-eeb7-373f-9cd9-b50bdc813dec.png

左侧是数据源,有实时流的数据(可能是结构化、非结构化,但其特点是实时的),有离线数据,离线数据一般采用的多为ETL的工具,常见的做法是在大数据平台里使用Sqoop或Flume去同步数据,或调一些NIO的框架去读取加载,然后写到HDFS里面,当然也有一些特别的技术存储的类型,比如HAWQ就是一个支持分布式、支持事务一致性的开源数据库。

从业务场景来看,如果我们做统计分析,就可以使用SQL或MapReduce或streaming或Spark。如果做查询检索,同步写到HDFS的同时还要考虑写到ES里。如果做数据分析,可以建一个Cube,然后再进入OLAP的场景。

这个图基本上把所有的内容都涵盖了,从场景的角度来分析倒推,用什么样的数据源、采用什么样的采集方式、存储成什么样子,能满足离线、内存、实时、流的各种模型,都能从图中得到解答。

以上为本次分享的全部内容。

引用
作者:张逸,大眼科技CTO,先后就职于中兴通讯、惠普GDCC、中软国际、ThoughtWorks等中外企业,任职角色为高级软件工程师,架构师,技术总监,首席咨询师。目前致力于商业智能产品与大数据分析平台的开发与架构设计。
声明:本篇文章内容来自第八期魅族开放日大眼科技CTO张逸的现场分享,由IT大咖说提供现场速录,由msup整理编辑。


感谢 jihong10102006 投递这篇资讯

声明:本文系ITeye网站发布的原创资讯,严禁任何网站转载本文,否则必将追究法律责任!

已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐



Favicon for 开源中国社区最新新闻 10:09 安全预警:Erebus 加密勒索软件攻击事件预警 » Post from 开源中国社区最新新闻 Visit off-site link

据外媒 6 月 12 日报道,韩国托管商 Internet Nayana 同意向勒索软件攻击者支付 13 亿韩币约合 114 万美元的赎金。Nayana 在 6 月 10 日遭到了 Linux 勒索软件 Erebus 的攻击,300 台服务器有 153 台被加密,数以千计的网站受到影响,攻击者加密了储存原始数据和备份的服务器,使得该公司无法利用备份恢复数据。勒索者一开始索要 826.2 比特币或 27 亿韩币,然后降低到 550 比特币或 18 亿韩币,Nayana 宣布它同意向勒索者支付 13 亿韩币以恢复服务器。黑客提供的密钥解锁了 153 台被加密服务器中的 50 台,该公司表示到月底将能恢复 90% 的服务器。 

安全专家表示,勒索软件 Erebus 滥用 Event Viewer 提权,允许实现用户账户控制( UAC )绕过,即用户不会收到允许以较高权限运行程序的提示。此外,勒索软件 Erebus 还可将自身复制到任意一个随机命名的文件中修改 Window 注册表,以劫持与 .msc 文件扩展名相关内容。 

一旦 60 种目标文件扩展名遭 Erebus 加密,桌面就会出现一张赎金交纳通知,受害者在点击 “ 恢复文件 ” 后页面将跳转至 Erebus Tor 支付网站。勒索软件 Erebus 赎金金额已由今年 2 月约 90 美元( 0.085 比特币)飞涨至 29,075 美元( 10 比特币 ),最近价格为 15,165 美元( 5.4 比特币)。 

小编在此提醒您关注加密勒索事件,提前自查业务系统,并做好安全强化加固,做好预防措施。

Favicon for 小众软件 - Appinn 09:40 618 屯了太多东西的问题解决了,用「小鱼收纳」管理家庭物品库存 » Post from 小众软件 - Appinn Visit off-site link

小鱼收纳 是一款专门用来管理物品的手机应用,支持 iOS 与 Android,它能够帮助你解决「找不到东西的心急」这件事情。并且还能配合额外购买的二维码来实现扫码识别物品,以及设置提醒日期来避免过期。@Appinn

这事还挺有趣的,最早有同学询问「最近 618,狂囤货,结果家里还有多少东西都不知道。所以想问问有没有一个家庭用的库存软件,那些商用的实在太大了。」于是青小蛙就放出了这个问题,看看大家有没有好主意。

而一不小心,就被带到 Excel 这个坑里了,于是很多人都在寻找 Excel 相关应用,直到…@大叔 同学一句道破:

家用库存管理…-_-#…这项运动有个专业名词: 【 收纳 】 ……小鱼收纳_

是的,收纳,这个活叫收纳啊 😂 特么什么是库存啊,你把家当仓库有木有问问女主人愿不愿意…

于是,小鱼收纳来了,青小蛙对小鱼收纳的好感觉挺高,首先通过手机应用解决了用户需求与痛点,其次在淘宝店贩卖周边产品,比如可以扫码识别箱子的漂亮二维码、比如直接买个整合二维码的箱子

虽然这些周边产品是需要额外购买的,然而小鱼收纳并没有强制,不买也能用,只不过会自动生成一个标签码,于是青小蛙又想起了咕咕鸡(续)…打印出来贴箱子上也可以实现(但不能扫码)。

小鱼收纳可以记录物品描述、照片、标签、数量、价格、位置,以及提醒,用来解决过期、借还以及通知等问题。

于是,家用库存软件就这样愉快的解决了…

查找的时候,可以通过标签号、内容记录来搜索,非常方便。

  • 主要是解决个人东西记录、记帐、记事;
  • 帮助记性差的人物品整理;
  • 最简便的日常记事工具。
  • 超轻便记录工具,简洁到你不信;
  • 图片化物品收纳、整理、提醒;
  • 透视化的查找,找东西不用东找西想;
  • 一键同步到云端;

最好,您体会过找不到东西的心急吗?


©2017 青小蛙 for 小众软件 | 加入我们 | 投稿 | 订阅指南 | 反馈 | 代理(优惠码 Appinn)
b27c41ad47c2611d60d7452a4c02dd52
Site Meter

apppackge:

Favicon for 开源中国社区最新新闻 08:25 杭州源创会报名倒计时 3 天,技术大咖邀你赴约! » Post from 开源中国社区最新新闻 Visit off-site link

6 月 24 日杭州源创会报名倒计时 3 天!!!除了满满的干货主题,还将为您揭晓码云全新的独立域名,邀请3人报名还可免费参会,抓住最后的机会报名吧~

Favicon for 开源中国社区最新新闻 08:22 高手问答第 158 期 —— 企业大数据系统构建实战 » Post from 开源中国社区最新新闻 Visit off-site link

OSCHINA 本期高手问答(2017 年 6 月 21 日 — 6 月 27 日)我们请来了@ethan888  吕兆星为大家解答关于企业大数据方面的问题。吕兆星,资深大数据技术专家,精通基于大数据的分布式数据挖掘、存储与计算技术,及其生态体系架构;精通垂直搜索技术、机器学习、文本情感倾向性挖掘、网络爬虫、全文索引体系架构。曾任软通动力集团大数据研究院总架构师、HiveCloud 创始人,萝卜网 CTO,国美在线大数据中心高级架构师等。

Favicon for 开源中国社区最新新闻 08:21 2017 必备的八款最佳反勒索软件工具 » Post from 开源中国社区最新新闻 Visit off-site link

勒索软件 WannaCry 使用了由 Shadow Brokers 泄露的两个 NSA 黑客工具,它能够感染成千上万台运行未打补丁的 Windows 系统的计算机。目前看来,这款勒索软件带来的风波似乎暂时是平息下来了,但将来的情况谁也不敢保证。如果希望将来保护自己的电脑免受勒索软件的威胁,不妨看看下面这份 2017 最佳反勒索软件工具列表。

Favicon for 开源中国社区最新新闻 08:20 码云推荐 | DWSurvey 调问表单问卷系统 » Post from 开源中国社区最新新闻 Visit off-site link

DWSurvey是一款方便、高效、实用的调研问卷系统,一款基于 JAVA WEB 的开源问卷表单系统。

Favicon for 开源中国社区最新新闻 08:19 每日一博 | 你知道 Thread 线程是如何运作的吗? » Post from 开源中国社区最新新闻 Visit off-site link

我们在Android开发过程中,几乎都离不开线程。但是你对线程的了解有多少呢?它完美运行的背后,究竟隐藏了多少不为人知的秘密呢?线程间互通暗语,传递信息究竟是如何做到的呢?Looper、Handler、MessageQueue究竟在这背后进行了怎样的运作。本期,让我们一起从Thread开始,逐步探寻这个完美的线程链背后的秘密。 注意,大部分分析在代码中,所以请仔细关注代码哦!

Favicon for 开源中国社区最新新闻 08:15 翻译 | 由 Node 6 升级至 Node 8:实际性能比较 » Post from 开源中国社区最新新闻 Visit off-site link

Node 8 发布了,你知道吗?听说它更快了。但目前没有任何数据证明,“更快”也只是字面含义。幸运的是,我有一个在 Node 6 上运行的大好 React 网站,并且正好有两个小时业余时间。升级到 Node 8 是相当容易呢-只花了大约十分钟,并且没有一个依赖库落下。我从这个网站找到 .pkg 文件安装到我的 macOS 上面,还算顺利,但我需要手工删除 /usr/local/lib/node_modules/。一切顺利进行,我之后可能会在 Windows 机器上尝试,但会需要四天时间。

Favicon for 开源中国社区最新新闻 08:14 OSChina 周三乱弹 ——要买多少花才会送女友 » Post from 开源中国社区最新新闻 Visit off-site link

甲:假如你彩票中奖了,1000万。你还去公司上班吗?乙:去呀!甲:去干嘛?乙:拿我的键盘呀!!!

Favicon for 开源中国社区最新新闻 08:13 bDialog —— 可多层嵌套、高定制化的模态窗口 » Post from 开源中国社区最新新闻 Visit off-site link

bDialog 是基于 Boostrap Modal 开发的可多层嵌套、定制灵活的模态窗口。拥有灵活的窗口元素定制和丰富的回调函数,可在同一页面下展示各种不同样式、风格的窗口皮肤。

Favicon for 开源中国社区最新新闻 08:11 Linux 基金会授予陆首群教授“开源软件推进终身成就奖” » Post from 开源中国社区最新新闻 Visit off-site link

在2017年19-20日在北京国家会议中心举行的LC3会议上,Linux 基金会授予中国开源软件推进联盟(China Open Source Software Promotion Union)名誉主席陆首群教授“开源软件推进终身成就奖”。

在颁奖仪式上,Linux基金会执行总监Jim Zemlin先生评价陆主席作为Linux基金会十多年的老朋友,一直关心开源软件运动,积极推进包括Linux基金会在内的开源软件组织在中国蓬勃发展。同时作为中国开源软件推进联盟的创始人和名誉主席,为利用开源技术促进信息技术产业发展和信息技术的广泛应用做出了重要的贡献。

在陆主席所著新书《开源、创新和新经济》的扉页上,Linux和Git创始人LinusTorvalds先生写道:“陆主席感谢您对中国全部开源事业作出的杰出贡献”。

Jim Zemlin先生写道:“陆首群主席作为中国开源软件的先锋,为中国和全世界开源软件的推广作出了很多重要的贡献,我对您一直心存感激”。

Apache基金会创始人、Linux基金会区块链开源软件Hyperledger项目负责人BrainBehlendorf先生写道:“感谢陆首群主席一直以来对于开源软件的信念、热情和远见”。

Linux基金会内核稳定版维护者GregKroah-Hartman先生写道:“感谢陆主席过去很多年对于开源软件的全力支持,祝福您在未来的日子里继续推动这一卓有价值的工作。”



稿源:COPU开源联盟

Favicon for 开源中国社区最新新闻 08:05 Stack Clash 漏洞正粉碎 Linux 防御危及 root 权限 » Post from 开源中国社区最新新闻 Visit off-site link

据安全厂商 Qualys 研究人员最新发现,Linux、BSD、Solaris 和其它开源系统都易受一个本地权限升级漏洞 “Stack Clash” 的影响,攻击者可以利用其粉碎 Linux 防御,获取 root 权限执行代码。

173514_FnVY_2896879.png

Qualys 公司指出,该高危漏洞存在于堆栈上,会绕过 2010 年在 Linux 中推出的堆栈防护页面缓解措施,并进入内存区域,而该区域本不应当用于执行代码。按照设计,这个堆栈内存区域包含一个机制,当程序需要更多的堆栈内存时它就会扩展;然而,这种扩展是一个安全威胁。

该漏洞编号为 CVE-2017-1000364 ,研究员指出,目前攻击者能够将这个漏洞跟其它重要问题连接在一起,如最近解决的 Sudo 漏洞,获得完全 root 权限,执行任意代码。

Qualys 公司表示尚未完全排除该漏洞也可被远程利用的可能性,它属于应用层面,目前该公司关注的是本地权限升级层面。

174635_AKL9_2896879.png

Qualys 的该安全报告是在 6 月 19 日发布 Linux / Unix 发行版的补丁的同时发布的。在 i386 或 amd6 硬件上运行的 Linux、OpenBSD、NetBSD、FreeBSD 或 Solaris 系统都会受到影响。其他操作系统也可能是易受攻击的,但尚未被测试。

据悉,红帽已经在 6 月 20 日发布了针对 “Stack Clash” 漏洞的公告,表示可以先通过将本地用户和远程服务的 hard RLIMIT STACK 和 RLIMIT_AS 设置为低值来缓解漏洞,但这可能会带来些许性能问题,因为它会在 / proc / meminfo 中创建重叠值。 但是,不会影响正常操作。正式解决这些问题的补丁会尽快发布。

编译自:zdnet

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 08:04 苹果执行限制热更新政策,已下架数万应用 » Post from 开源中国社区最新新闻 Visit off-site link

苹果在今年 3 月份的时候就曾向所有开发者推送警告邮件,宣布未来将禁用 APP 内部的“动态分发”功能。并要求开发者在自家 APP 中删除 JSPatch 相关框架,否则 APP 将面临下架或禁止上架。

6 月 1 日,苹果再次重申:要求当前含有热更新功能的 App,在 6 月 12 日前移除相关代码,否则这些 App 可能会下架。

161509_LjPL_2896879.png

目前,苹果已开始严格执行限制热更新政策,其应用商店下架了数万违规应用。据国内媒体报道称,截止到 6 月 16 日,中国地区下架应用已经接近 3 万,包括《天天酷跑》等游戏,其中 6 月 15 日一天,最高下架超过 2 万; 美国地区这几天下架的应用也达 2 万 7 千个。两个国家大部分下架应用多未在畅销排行 (1500 名) 以内。


 >>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 08:03 RabbitMQ 3.6.11 m2 发布,AMQP 消息服务器 » Post from 开源中国社区最新新闻 Visit off-site link

RabbitMQ v3.6.11 milestone2 发布了。RabbitMQ 是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成,因此也是继承了这些优点。该版本更新内容如下:

Bug Fixes

  • Node RAM consumption calculation strategy has changed
    to a more precise one. Previously the value was underreported. It is possible to switch to the behavior in earlier versions
    if desired. This will affect monitoring charts and possibly require bumping VM memory high watermark
    or provisioning more RAM.

    GitHub issue: rabbitmq-server#1243rabbitmq-server#1246

  • Erlang/OTP 20 is now supported.

    GitHub issues: rabbitmq-stomp#115

  • supervisor2: supervisor could fail to restart failed child processes in some cases.
    This could affect multiple plugins, e.g. federation.

    Contributed by Aliaksey Artamonau (Couchbase).

    GitHub issues: rabbitmq-common#201,
    rabbitmq-server#1238

Enhancements

  • Total amount of RAM as seen by a node now can be overridden via config file.

    GitHub issue: rabbitmq-server#1224

  • Plugins that are already expanded (unarhived from .ez archives on node boot) won't be
    expanded again.

    Contributed by Alex Lebedeff (Mirantis).

    GitHub issue: rabbitmq-server#1226

……

完整更新内容请查看发行首页

下载地址:

 >>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 08:00 腾讯高级工程师李国栋:深度解析腾讯移动分析MTA的Crash实时处理系统 » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
logo_bigger.jpg

2013年,腾讯移动分析(Mobile Tencent Analytics,简称MTA)产品推出,是腾讯大数据对外开放的核心产品之一,Crash实时处理是其一核心子系统。初期主要面向公司内部用户开放。为了跟随公司开放的脚步,腾讯的研发者们也在不断向外开放和输出自己的核心专业能力,为开发者提供更有价值的功能,为App的质量保驾护航。

By 陈思
Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 08:00 UCloud高级架构师邵晓春:全方位解读一站式短视频架构 » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
logo_bigger.jpg

短视频作为近年流行起来的娱乐方式,在国内市场迅速引爆,2016年底迎来集中爆发。在这样的背景下,一系列技术难点接踵而至。UCloud高级工程师邵晓春将带来短视频文件上传、视频存储、处理、分发播放等一系列一体化的云平台解决方案的深度解析。

By 陈思
Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 08:00 谈谈苹果的AI战略 » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
logo_bigger.jpg

本文将从苹果公司保密的过去和开放的现在进行解密,将苹果公司在几大AI研究领域的现状进行分析,看苹果公司在当今四面楚歌的AI市场中如何发展。

By Dave Gershgorn Translated by 谢丽
Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 08:00 前端每周清单第18期:Firefox、Chrome、React、Angular发布新版本;提升RN应用性能的方法 » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
logo_bigger.jpg

前端每周清单专注前端领域内容,分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。关注【前端之巅】微信公众号(ID:frontshow),及时获取前端每周清单。

By 王下邀月熊
Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 08:00 虚拟现实的未来在哪里 » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
logo_bigger.jpg

虚拟现实的发展速度趋于放缓,于是有人唱衰虚拟现实。但是纵观个人电脑和智能手机的发展历程,很多事情超乎我们的想象。虚拟现实是否也会有不一样的未来?

By Wren Handman Translated by Mister Who
Favicon for 开源中国社区最新新闻 07:58 RubyMine 2017.2 EAP 5 发布,Ruby 开发工具 » Post from 开源中国社区最新新闻 Visit off-site link

RubyMine 2017.2 EAP 5(build 172.2953.21)发布了。对于此EAP,我们提供了大家期待已久的支持调试docker-compose服务中的应用程序。

此更新还具有Javascript增强功能,并修复了一些错误。更新内容如下:

  • Debug an app inside of a docker-compose service

  • 'Group by leaf expression' always fail with IDEA error

  • Diff highlighting level "Syntax" shows "Duplicated Code" inspection highlights

  • Docker plugin fails on every deploy after upgrading Docker for Mac to 17.06.0-rc

  • JUnit test status icons colors do not align with severity

  • ……

完整更新内容请查看更新日志

下载地址

 >>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 07:57 欧盟提出修正案草案,建议禁止使用加密后门 » Post from 开源中国社区最新新闻 Visit off-site link

外媒报道,在发生一系列恐怖袭击之后,世界各国政府都开始呼吁希望让调查人员能更便捷地访问民众通信数据。尽管有一些人热衷于通过在软件和设备上使用后门来减弱加密在调查过程带来的麻烦,但欧洲议会的公民自由、司法与家庭事务委员会却认为应当禁止这种行为。近日,欧洲议会提出了修正案草案,称加密、逆向工程或监控通讯的这些行为都应当禁止,通信服务运营商不应被要求提供后门。

该提案必须经议会批准,然后由欧盟理事会审核。如果提案最终通过并落实,可能会造成欧盟与其他一些国家之间的冲突。禁止后门将使某些国家难以执行“调查权力法”。

据悉,欧盟似乎还在寻求一种让警察更容易获得数据,但又不意味着官员很容易阅读这些数据的方法。

 >>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 07:46 Julia 0.6.0 发布,动态编程语言 » Post from 开源中国社区最新新闻 Visit off-site link

Julia 0.6.0 发布了。Julia是一个新的高性能动态高级编程语言。语法和其他编程语言类似,易于其他语言用户学习。Julia拥有丰富的函数库,提供了数字精度、精致的增幅 器(sophisticated amplifier)和分布式并行运行方式。核心函数库等大多数库是由Julia编写,但也用成熟的C和FORTRAN库来处理线性代数、随机数产生和字 符串处理等问题。Julia语言可定义函数并且根据用户自定义的参数类型组合再进行重载。

新的语言特性:

New type system capabilities (#8974#18457)

  • Type parameter constraints can refer to previous parameters, e.g. type Foo{R<:Real, A<:AbstractArray{R}}. Can also be used in method definitions.

  • New syntax Array{T} where T<:Integer, indicating a union of types over all specified values of T (represented by a UnionAll type). This provides behavior similar to parametric methods or typealias, but can be used anywhere a type is accepted. This syntax can also be used in method definitions, e.g. function inv(M::Matrix{T}) where T<:AbstractFloat. Anonymous functions can have type parameters via the syntax ((x::Array{T}) where T<:Real) -> 2x.

  • Implicit type parameters, e.g. Vector{<:Real} is equivalent to Vector{T} where T<:Real, and similarly for Vector{>:Int} (#20414).

  • Much more accurate subtype and type intersection algorithms. Method sorting and identification of equivalent and ambiguous methods are improved as a result.

语言变化:

  • "Inner constructor" syntax for parametric types is deprecated. For example, in this definition:

    type Foo{T,S<:Real}
        x
        Foo(x) = new(x)
    end

    the syntax Foo(x) = new(x) actually defined a constructor for Foo{T,S}, i.e. the case where the type parameters are specified. For clarity, this definition now must be written as Foo{T,S}(x) where {T,S<:Real} = new(x) (#11310#20308).

  • The keywords used to define types have changed (#19157#20418).

    In 0.6, immutable and type are still allowed as synonyms without a deprecation warning.

    • immutable changes to struct

    • type changes to mutable struct

    • abstract changes to abstract type ... end

    • bitstype 32 Char changes to primitive type Char 32 end

  • ……

完整更新内容请查看更新日志

下载地址:

 >>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 07:42 Rails 5.1.2.rc1 发布,开源网络应用框架 » Post from 开源中国社区最新新闻 Visit off-site link

Rails 5.1.2.rc1 发布了,Ruby on Rails 是一个用于开发数据库驱动的网络应用程序的完整框架。Rails基于MVC(模型- 视图- 控制器)设计模式。从视图中的Ajax应用,到控制器中的访问请求和反馈,到封装数据库的模型,Rails 为你提供一个纯Ruby的开发环境。发布网站时,你只需要一个数据库和一个网络服务器即可。

如果没有发现任何问题,预计将于2017年6月26日星期一发布最终版本。如果您发现问题,请在GitHub上发表一个问题,并@rafaelfranca,以便我们在最终版本之前解决这个问题。

所有的 commits

更新日志:

下载地址:

 >>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 07:37 Opus 1.2 发布,带来了语音和音乐质量改进 » Post from 开源中国社区最新新闻 Visit off-site link

Opus开源免专利费音频编解码器发布了1.2版,版本1.2发布后,Opus进一步升级。此版本带来了语音和音乐的质量改进,同时与RFC 6716完全兼容。还有优化,新选项以及许多错误修复。以下是用户和实施者最关心的一些升级。

Opus 1.2进行了大量与速度有关的改进。尽管许多质量改进需要额外的CPU,Opus 1.2比以前的版本要快。这是在1.2开发期间合并的大量优化的结果。

x86 music complexity 

其他更新如下:

  • Testing And Security

  • A Minor Update to the Standard

  • Low-Bitrate Hybrid Folding

  • Other Improvements

  • ……

完整更新内容请查看发行说明

 >>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 07:27 Shotwell 0.27 发布,Linux 相片管理 » Post from 开源中国社区最新新闻 Visit off-site link

Shotwell 0.27 发布了。Shotwell 是一款Linux下的相片管理软件,适用于 GNOME 桌面环境。你可以使用它来从数码相机中导入相片,然后进行编辑并分享给朋友们。

这是一个新的不稳定版本。Shotwell 0.27引入了一些新功能和改进,以及许多错误的修复。值得注意的是,Shotwell 0.27不再支持F-Spot导入,2010年的照片管理和编辑应用程序添加了一个功能。具体更新内容如下:

  • Photo background is now configurable

  • F-Spot import support removed

  • Tumblr now part of the default plugin set

  • Command-line utility to test image transformations

  • Color transformations ‘sped up’

  • Add –fullscreen/-f option for Shotwell photo viewer

  • App now requires GTK 3.18+

  • Bug fixes

  • Code cleanups

完整更新内容请查看发行说明

下载地址:https://download.gnome.org/sources/shotwell/0.27/shotwell-0.27.0.tar.xz

 >>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 开源中国社区最新新闻 07:14 Unicode 10 正式发布,iOS 11 将新增 56 个表情 » Post from 开源中国社区最新新闻 Visit off-site link

统一码联盟(Unicode Consortium)正式发布了 Unicode 10 ,这次增加了 56 个表情,其中包括一些食物、动物以及比特币等。Unicode 10 增加了 8518 个字符,现在 Unicode 一共支持 136690 个符号。我们在今年3月就看到了 Unicode 10 的新表情,自那以后,统一码联盟确定了最终稿。新增的表情包括:

071421_8Fcz_2894582.jpg

疯狂的脸

盖头

恐龙

比特币符号

脸上凸起眉毛

爆炸头

小精灵

精灵

僵尸

人在蒸汽房

攀岩者

脑子

橙色心

围巾

手套

斑马

长颈鹿

刺猬

馅饼

罐头食品

苹果将于今年秋天发布 iOS 11 正式版,而其中很有可能包含 Unicode 10。不过,苹果也有可能等到 iOS 11.1 或 11.2 时在加入全新的 Unicode 支持。去年,Unicode 9.0 发布,支持 72 个新表情,并最终在 iOS 10.2 中出现。相信今年的规律也是这样。

稿源:cnbeta

 >>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Favicon for 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! 07:09 视频演讲: 电商广告计费系统的容灾设计 » Post from 未注册用户的 InfoQ 个性化 RSS Feed - 请注册后升级! Visit off-site link
ziwen270.jpg

互联网广告系统本身是一个对稳定性和可靠性要求极高的系统,每天面对数十亿级别的请求,广告投放主多样的投放方式变化与用户关注点及兴趣频繁的更新,同时对时效性要求严格,而作为电商广告的计费系统,则要求更加严格,从打点到计费任何一环节出现问题,都会带来巨大的经济损失和平台信任度危机,涉及到商家账户资金,系统实时反作弊和防刷,亿级别点击(曝光)等高效稳定账务扣费,数据的强一致性和最终一致性的保证及全链路高效可靠的监控。在蘑菇街广告计费系统的持续优化改进之路中,对整个蘑菇街广告计费系统容灾方面,积累了一些经验,本次分享主要分享电商广告计费系统的容灾设计。

By 子文

News stories from Tuesday 20 June, 2017

Favicon for ITeye资讯频道 16:40 爱开源的微软是如何击败 Facebook、Google 成为 GitHub No.1 的? » Post from ITeye资讯频道 Visit off-site link
引用

引用
拥抱开源的微软这几年究竟都做了些什么?

去年今月,我在微软开发者峰会上见到了《设计模式:可复用面向对象软件的基础》联合作者、现任微软技术院士(Technical Fellow at Microsoft)Erich Gamma,那是我第一次真正对「微软爱开源」的 Slogan 有了清晰而深刻的认识,从可在视窗、Linux 与 Mac 环境运行的 VS Code,基于 JavaScript、具备强型别的 TypeScript,到既开源也跨平台的 .NET Core 等,微软已然成为了开源领域的佼佼者。彼时还很好奇微软为什么会从封闭到积极拥抱开源,对此,Erich 如此言说:
引用
其实开源对于微软而言并非新鲜事物,只是方法和心态上发生了变化。过去,我们只是自己编写,自己维护产品。现在,既使用别人的,也提供给别人使用。开源对我们来说,就是一扇门,打开了就可以接触到更多的开发者。

所以,微软爱开源,不只是使用到了很多开源的东西,我们也做了非常多的贡献。就像是“给”和“拿”的关系,这是一个非常重要的变化。我们不仅有完整的流程去使用现在的开源技术,也有完善的过程将我们的工具开放给大家使用。

从 PC 时代一路走来,曾经“因循守旧”到成为 linux 和开源社区的头号敌人,颇让开发者嗤之以鼻的微软究竟如何在开源上发力甚至击败了 Facebook、Google 成为 GitHub 贡献第一的公司?而从诋毁开源到拥抱开源,为何微软会做出截然不同的开源战略转型?追本溯源,也许我们能够从微软开源历程的几个重大事件中找寻到答案。

2004 年,基于 OSS 许可协议发布的 WiX 工具集成为了微软发布的第一个开源项目,该工具集包括了编译器、链接器、库工具和反编译器。

2006 年,微软推出开源托管网站 CodePlex,在此网站所发布的所有程序都可以下载源码使用。尽管微软已经宣布此网站即将于今年关闭,但不可否认的是,这是微软首次重要的开源社区尝试。

2007 年,微软的开源许可证 Microsoft Public License (Ms-PL) 和 Microsoft Reciprocal License (Ms-RL) 得到了 OSI 认证。在一篇文章中,OSI 写道,“这个决定的通过获得了开源社区大多数人的认可(虽然还有不同意见),这些许可证符合开源定义的 10 项准则,所以应该通过。”

2008 年,微软加入 Apache 软件基金会并成为白金会员,逐渐向开源 Web 服务器 Apache 项目靠拢。

2009 年,微软向 Linux 内核贡献了超过两万行的代码。这些代码大大增强了在 Windows Server 2008 Hyper-V 或 Windows Server 2008 R2 Hyper-V 上运行的 Linux 操作系统虚拟机的性能。这些贡献让微软在一段较短的时间内成为了 Linux 内核排名第一的贡献者。

2009 年,ASP.NET MVC 基于 Microsoft Public License 开源,这些代码没有平台限制,也可以被移植到 Java 或 Ruby 平台中去。

2012 年,微软基于 Apache 2.0 许可证开源了它的部分 Web 产品体系,包括 ASP.net MVC、Razor 和 Web API。

2012 年,微软开源了用来强化 javascript 开发大型应用程序的工具语言 TypeScript,后来更被 Google 用于打造自家维护的下一代 JavaScript 应用程序框架 AngularJS。

2012 年微软成立“微软开放技术有限公司(Microsoft Open Technologies Inc.)”,其主要目标是“推动公司在开放性方面的投入,包括互操作性、开放标准和开源”。

还是在 2012 年,微软开源了用来强化 JavaScript 开发大型应用程序的工具语言 TypeScript,后来更被 Google 用于打造自家维护的下一代 JavaScript 应用程序框架 angularjs。

2014 年,微软云端和企业部门执行副总裁 Scott Guthrie 在 Connect() 会议上正式宣布.NET 核心将开源,包括 .NET Framework 4.6、.NET Core 5、还有 Runtime 和编译平台 Roslyn 等。这不是微软第一次宣布产品开源计划,但却是最让全球开发者震撼的一次宣布。

同年,新上任的 CEO Satya Nadella 提出了“微软爱 Linux“,并加入了 OCP(Open Compute Project),在微软 Build 大会上成立.NET 基金会,全力支持 .NET 平台上的开源研发与合作。
bb0b0636-0998-312c-b379-8fc1e086569f.jpg

2015 年,微软通过与 credativ 合作,将最流行的 Linux 发行版之一的 Debian 带到了它的 Azure 上。同年与 Red Hat 达成合作,将 Red Hat 企业版 Linux(RHEL)带到了 Azure 云上。

同在 2015 年,微软还开源了 Visual Studio Code, 并且发布了 Visual Studio GDB 预览版,允许开发者远程调试 Linux 对象。

2016 年初,微软和 Canonical 展示了在 Azure 上运行 Ubuntu Linux 的第一个技术预览版。至此,微软已经将所有的领先的 Linux 发行版带到了 Azure 云上。

同年 3 月,在 EclipseCon 大会上,微软宣布加入 Eclipse 基金会,在 11 月的 Connect 开发者大会上,微软公司加入 Linux 基金会成为第 11 位白金会员,取得董事会席位,同时也宣布 Google 加入微软 .NET 开源基金会。

且在 6 月的 Red Hat DevNation 大会上,微软正式发布实现跨平台(Windows、Linux 和 Mac)的 .NET Core 1.0 ,这意味着开发者可以使用 Windows 开发,用 Linux 部署。

9 月,在 GitHub 的“对开源贡献人数最多的组织(Organizations with the most open source contributors)”的榜单中,微软击败 Facebook、Google 一跃成为 No.1,至此,微软彻底赢得了来自业界及开源社区的认可。

而到了今年,微软在开源领域已经有了诸多动作,比如开源 GVFS (Git Virtual File System) 虚拟文件系统、Azure Service Fabric SDK、用于帮助开发者创建跨平台应用的 ReactXP,以及可用于训练无人机和自动驾驶汽车的模拟器平台 AirSim 等。

在《开源纵横谈:微软开源那些事儿》一文中,作者杜玉杰如此总结道:“对企业来说开源作为一个武器,无论是进攻还是防御,首先要考虑的都应该是商业的利益。微软帝国从 PC 时代崛起,经历了互联网时代的短暂迷惘,新的君主能够领悟到了开源的价值,转变战略乘云之势重回宝座不得不说是企业开源战略转型的一个典范。”

而从技术角度出发,我们又不禁想问,开源对于微软究竟产生了怎样的影响?Erich Gamma 给出了他的答案:
引用
开源的发展速度非常惊人,尤其是微软。五年前谈到开源时,整个 Windows 没有什么开源的东西。这五年来我们发生了很大的变化,现在微软内部也有了很多流程与方法,能够让我们的工程团队去使用开源。

五年前,我们的律师一听到开源,第一反应就说“NO”,但现在律师也在帮助我们更好地往开源上做努力了。我们知道开源领域有很多争议,特别是 License 的部分,有些“License”也许存在一些灰色地带。然而在微软,我们的工程部门和法律部门都在帮助我们更加合规地做开源项目,比如 GPL。现在,在他们的帮助下,我们能够清楚地了解哪些是我们可以使用的。

虽然是开源,但事实上对微软对我们所提供的开源软件是负责任的。微软对开源技术的运用横跨多个不同的产品线。我们内部对整个开源的软件都做了详细的记录,来帮助开发者和产品团队,让他们避免陷入到一些 License 问题里。我们很多开源的软件都有数据库去记录它用在哪个产品里,能够实现正向和反向的追踪。比如有的开源软件造成一些问题,我们可以很清楚地对相关产品进行迅速准确的修正。

而说到影响,我所看到的最大的贡献便是来自于效率的提升。比如当我们把 .Net Core 开源之后,有诸多来自社区的人帮助我们审阅代码,给出了很多改进意见。同时,许多开发者会希望能不能实现让 .Net Core 在其他平台上运行,我们可以看到在这方面很多的尝试。



感谢 jihong10102006 投递这篇资讯

声明:本文系ITeye网站发布的原创资讯,严禁任何网站转载本文,否则必将追究法律责任!

已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐



Favicon for ITeye资讯频道 14:32 15 个有趣的 JS 和 CSS 库 » Post from ITeye资讯频道 Visit off-site link
炎热的六月,也阻挡不住我们分享的脚步。在本月,Tutorialzine 又为大家带了哪些新鲜货呢?开发者们,一起来瞧瞧吧!

1. Moon
1f125926-bcd6-3888-b964-ae30e7ee6d61.png

Moon 是一个灵感源于 Vue.js 的 JavaScript UI 库,但它却更轻量、简单。它具备优化的虚拟 DOM 引擎,对用户友好的 API,并且在 gzip 压缩后仅有 6KB 的大小。

2. VX
a7eaebb7-777f-3711-b238-c5778202a3c9.png

VX 结合了 D3 和 React 虚拟 DOM 的强大计算能力,它为数据的可视化提供了一系列优秀的可重用组件集合。同时,组件也是独立的,你只需根据自身需求使用即可。

3. SmartPhoto
dd3c2efc-457a-3759-b42b-5230eb989782.png

SmartPhoto.js 是一个专为移动设备打造的响应式图像查看器,它易于使用,并支持手势触摸操作,例如捏合或者滑动。同时,它还具备对初学者友好的大量实用的事件处理器,以及用户自定义选项。

4. Feathers
b942d7b0-f961-311e-a6f7-d26c0370c64e.png

Feathers 是一个用于创建安全的 RESTful API 的 Node.js 框架。由于支持内置 Socket,它既可当作传统的 Express router,又可用作实时信息的发送器。其他的功能还包括快速引导新项目的 CLI、易于与流行的 JS 框架集成,以及拥有丰富的插件生态。

5. Embedo
00c100b1-2c61-3123-9546-ab55458a9751.png

Embedo 是一个简单、轻量的社交媒体内容嵌入式 Web 插件。它在第三方嵌入的 API 上增添了一个 layer,同时确保了每个组件的最佳实践以及原生指南。它用于处理外部的 SDK、oEmbeds、并增加了响应性,便于与 Facebook、Twitter、Instagram 和其他服务更快捷的集成。

6. Microtip
4edc92a1-e118-3b1d-9f50-f183af9b2993.png

Microtip 是一个轻量、平滑流畅且易用的纯 CSS 工具提示库。它内置了一些用于控制其方向、大小和动画的选项,而更多的定制则通过 SASS 完成。

7. Prettier
e27db974-a43e-35e2-8e0f-b70be06b8cee.png

Prettier 是一个受 refmt 启发的 JavaScript 格式化程序,它针对 ES2017,JSX 和 Flow 的语言功能进行了更深入的支持。它将删除所有的原始格式,并确保所有输出的 JavaScript 保持一致的样式。

8. UPNG.js
2936f104-bdcf-3405-8e9a-b2e4bd67863b.png
UPNG.js 是一个快速、高级的 PNG 编码与解码器。它内置了压缩功能,在不损失图像质量的前提下,可以有效的减少图像文件的大小。

9. Tinytime
537951cf-bc2d-369b-9d06-c504d7c76f6b.png

Tinytime 是一个超小型 JavaScript 库,用于格式化日期与时间。它仅提供了一个单独的render()方法,用于接收 Date 对象并返回一个带有渲染数据的字符串。

同时,你还能够定义可重用的模版,有助于提高性能并清理冗余代码。

10. StrMan
36588966-53eb-34f4-bb83-e506fd190756.png

StrMan 是一个 JavaScript 字符串操作库,它为各种实用程序、格式选项和字符串转换,提供了超过 60 种实用的方法。

11. IotaCSS
bfdd4a06-26a2-33aa-9cbe-5661551b62e5.png

IotaCSS 是一个基于 SASS 的面向对象的 CSS 框架。它由独立的模块组成,并且每个模块都包含了框架的可选部分,如组件、设置和实用程序。

12. PKG
22e75dd0-cd5c-3331-a6ec-fc50b2ff284c.png

这是一个 CLI 应用程序,能够将你的 Node.js 项目打包为可执行文件,并可以在尚未安装 Node 的计算机上运行它们。同时,它也是跨平台的,支持 Linux、Windows、macOS 和 freeBSD。

13. Sakura
04c930c3-967f-3668-8223-3e926ef00b8a.png

Sakura 是一个独特的极简 CSS 框架,无需为 HTML 添加任何类。你只需要将 sakura.css 放到任意页面,它就会继承默认的排版和元素样式。由于没有类,Sakura 能够快速的生成漂亮页面,并且非常容易定制。

14. Birdview.js
979e650e-fb0f-3b97-a9c4-852649497786.png

这是一个很酷的 JS 插件,方便你缩小页面,并在一个视图中查看整个文档。同时,你可以点击任意位置放大,并直接滚动到你点击的位置。

15. Timeline.js
7ef29b73-6013-39e9-8f51-b6d7279bc442.png

Timeline.js 是一个用于创建交互式时间轴的 jQuery 插件,能够让你在漂亮的动画部件中,按时间顺序展现出图像与故事。同时,它具备丰富的自定义选项。

英文原文:15 Interesting JavaScript and CSS Libraries for June 2017
作者:Danny Markov

感谢 jihong10102006 投递这篇资讯

资讯来源:简书

已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐



Favicon for 小众软件 - Appinn 13:52 简悦 – 适配 120+ 网站,沉浸式阅读 Chrome 扩展 » Post from 小众软件 - Appinn Visit off-site link

简悦 是一款适合于 Chrome 的沉浸式阅读扩展,作者适配了 120+ 个网站,并且生成适合 中文阅读 习惯的沉浸式页面。@Appinn

来自发现频道

沉浸式阅读的 Chrome 扩展,取自:「 简单阅读,心情愉悦 」 之意。

简悦功能…有些强大,可以说非常丰富,来看作者制作的导图:

点击查看大图

与一些自动化的阅读工具不痛,简悦 真的是一点一滴适配来那么多的网站,这从其代码页面 GitHub 可以看到。

所以说这样的适配比起现阶段的“AI”来说还是高明太多了,当然局限性就是这些适配网站以外的内容就比较麻烦了。好在作者提供了站点编辑器并且支持手动提交网站适配,想想工作量不小呢。

  • 阅读模式; `逐一适配了 120+ 个网站,并提取 标题 描述 正文 媒体资源( 图片/ 视频 ) 等,生成 符合中文阅读 的页面`
  • 聚焦模式; `只高亮需要阅读,并隐藏掉其余部分,不分散用户的注意力,适合 非适配阅读模式 的网站,或者 临时阅读`
  • 站点编辑器; `可编程,定制化`
  • 多种主题; `白练、白磁、卯之花色、丁子色、娟鼠、月白、百合、紺鼠、黒鸢` 等
  • 同步、上传/下载 配置、同步适配列表等;
  • 稍后读;

更详细的开发故事详见为了达到完美的阅读模式这个小目标 ,我适配了 120+ 个网站,因此诞生了它 – 简悦 :沉浸式阅读的 Chrome 扩展


相关阅读


©2017 青小蛙 for 小众软件 | 加入我们 | 投稿 | 订阅指南 | 反馈 | 代理(优惠码 Appinn)
b27c41ad47c2611d60d7452a4c02dd52
Site Meter

apppackge:

Favicon for 小众软件 - Appinn 09:32 正在使用 Android 手机时,如何自动「关掉铃声」,实现免打扰? » Post from 小众软件 - Appinn Visit off-site link

通常 Android 手机的铃声在非静音情况下,比如我们正在使用手机的时候如果有消息推送进来,铃声还是会响起来的,而如果是持续不断的 IM 消息,会相当的恼人,尤其你又不想理这个 IM 消息的时候 😂

Dingless 是一款能够在「屏幕点亮时」、「待机模式下」、「音乐模式下」自动消除通知音量,让你不受过多的打扰。@Appinn

这倒是正中青小蛙的痛点。

白天的时候青小蛙会取消震动模式使用铃声,而随着使用手机时长越来越久,很多时候推送来了,正在使用手机,如果铃声很大,真的会吓一跳…而如果面对多个消息推送,那想死的心都有了。

这个时候只有默默的调成震动,然而有时候震动又会错过电话…所以很尴尬。

Dingless 提供两个主要功能来调整通知:

  1. 通知切换:在使用手计时(屏幕点亮)静音,改为震动,当屏幕关闭后恢复通知声音。
  2. 通知监控:当屏幕关闭时,消除多次声音提醒(可设置提醒间隔 30s~10m)

消除多次声音提醒的意思是当同一个应用短时间内需要多次提醒的时候(又是 IM 例子),Dingless 仅让第一次消息响铃,第二次响铃需要等待设置的间隔时间后才响。

Dingless 列出了适合使用的应用列表:

  • Facebook Messenger
  • Whatsapp
  • Facebook
  • Twitter
  • Viber
  • Tango
  • QQ
  • Skype
  • Instagram
  • Snapchat
  • IMO
  • KIK

青小蛙测试大微信也是没有问题的,好评。


相关阅读


©2017 青小蛙 for 小众软件 | 加入我们 | 投稿 | 订阅指南 | 反馈 | 代理(优惠码 Appinn)
b27c41ad47c2611d60d7452a4c02dd52
Site Meter

apppackge:

Favicon for ITeye资讯频道 09:25 JavaScript性能故事:选择可视化方法 » Post from ITeye资讯频道 Visit off-site link
引用
原文:A Tale of JavaScript Performance
作者:Tom Lagier
翻译:Vincent

译者注:作者在上一篇文章里面讲述了如何设计节点去展示性能,本文作者将继续这个系列,讲述应该选择何种可视化方法以及每一种方法的缺点。以下为译文。

本文将继续介绍关于我对JavaScript性能调查的系列–通过为Chrome内存配置文件创建可视化工具进行记录。今天我想聊一下我是如何选择可视化方法的。如果你错过了上一篇文章,可以点击这里
a9af1a64-132b-3854-8e91-16a5dd31e79b.png

(图片来源:维基百科)

不完美的堆造就完美的图形

我写的工具能提供多少价值,将由其快速诊断内存配置文件问题的能力的大小决定。考虑到我可以利用直觉工程 来增强可视化的方法,我提出了三个成功的标准:
  • 能够很容易创建基线。 这样用户就可以在不同的堆配置文件或时间样本之间轻而易举的看出差异。
  • 能够快速有效地传达问题。
  • 能够有效地显示许多节点。 许多,许多,许多。
为了有效地创建基线,我们需要一些能够一目了然就能表示很多相关数据的东西。 我用来表示节点的两种工具是大小和颜色。 通过大小绘制节点,能够快速的将占用内存大的应用程序给高亮显示出来。 类似地,通过颜色会直接点也能够一目了然的分析堆状态。

有了这个总体思路,如何传达问题这个难题也就迎刃而解了。结合Chrome堆配置文件的输出和我自己的经验,我知道节点自身大小和保留大小至关重要。 我也知道我需要找出一些代表保留者的方法,因为它们在解决内存问题方面发挥了关键作用。

第一个猜测?力导向图

需要寻找出一个能够既能够单独显示实体格式大小的和颜色的,又能够指示出它们之间的关系,因此我想到了力导向图
a0a4e83e-ce93-3790-8891-ec397850eb05.png

(图片来源:Martin Grandjean)

力导向图非常棒!为了体现通信的重要性,它们会检查所有的box——有效地表示不同大小的节点,颜色,它们显示节点之间的关系。D3甚至提供了一个强制布局模块,使得它可以很容易地实现其中一个sucker。

不幸的是,它们没有达到性能的要求。强制布局的计算成本很高。大多数浏览器需要几分钟的时间来布局数千个节点。 此外,当它们变大时,看上去也会变得很拥挤。
46aebb45-9c33-3b19-adea-8c4f28846cc1.png

带有20万个节点的力导向图(图片来源:graphmap.net)

如果我的工具需要花费很长时间来布置堆,或者如果很难获得关于单个节点的相关诊断信息,那么它也不会比手工解析数据更有用。 最后,我决定pass力导向图这个选项。

要不试试圆形图?

对于力导向图,它们使用了圆形来代表节点,这个做法我的确是很喜欢。从视觉的角度来说,还是很有吸引力的,也比较容易理解。 当然,如果它画图的代价不是那么高就好了!

在渲染force layout的过程中,大多数的难题都是来自于需要绘制出节点之间的关联性。如果我能找到一个类似的布局,但没有明确地绘制边缘,那么我就可以渲染所有需要的节点。
进入圆包。

看一下圆形图的效果:
3ce34e9f-2d45-3b1f-a904-1337d2a48de8.png

(图片来源:Mike Bostock 和 Jeff Heer)

我在这里看到了一些潜在的优势 - 它具有力导向图的很多优点 - 圆形节点,彩色节点和相对大小的一目了然 - 但是却不像力导向图那样需要去计算对象之间的关联。

当然我也看到了一些缺点:

1.对于深度嵌套的层次结构,它的效率很低。

2.很难体现出节点之间的非层次关系。

为了解决第一个问题,我决定尽可能地把数据拉平。请记住,内存通常表示为图形,有时也会表示为支配树,默认情况下不分层,但是如果需要,它也可以按类型或其他限定进行分组。

接下来说一下第二个问题。我喜欢圆形布局,我认为需要展示给用户的唯一指示是文本列表,以及节点上的数字。往往只会在确定问题之后出现,才能感受到保留者的价值,所以我决定简化最初的可视化,只包括那些有问题的元素。

荣誉奖:Treemap

您可能会想,既然大型数据集的性能要求如此之高,为什么不使用Treemap呢?
b2994f3f-aa7f-36ce-ab98-af815e7ec233.png

(图片来源:MDN)

我来讲一下为什么当初我没有选择Treemap的真实原因吧:
  • Treemaps看起来并不像圆形布局那样具有视觉吸引力;
  • 它太简单了!与其他图形类型相比,构建一个树形图所需要付出的计算代价太小了;
  • Firefox已经做到了
我已经采用了圆形布局作为我的可视化方法,下面简述一下几个额外的原因。
  • 我不关心超出节点类型的层次结构。 树图可以快速显示层次结构中的重量,但对于一个相对平坦的树,要绘制出轮廓就更加困难了。
  • 从某种意义上说,圆形布局通常认为比等同的树形图更容易消耗视觉效果。 我相信他们讲到了一个重点- 节点之间的空间使得它更容易被识别组之间的模式。
所以,问题就解决了! 我决定使用圆形布局,并将其视为可视化内存堆的一个很好的选择。

感谢 jihong10102006 投递这篇资讯

声明:本文系ITeye网站发布的原创资讯,严禁任何网站转载本文,否则必将追究法律责任!

已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐



News stories from Monday 19 June, 2017

Favicon for ITeye资讯频道 15:32 HBase在滴滴出行的应用场景和最佳实践 » Post from ITeye资讯频道 Visit off-site link
引用
作者简介:李扬,滴滴出行资深软件开发工程师。2015年加入滴滴出行基础平台部,主要负责HBase和Phoenix以及相关分布式存储技术。在滴滴之前,曾在新浪担任数据工程师,专注于分布式计算和存储。
责编:郭芮(guorui@csdn.net),关注大数据领域。
本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅2017年《程序员》

背景

对接业务类型

HBase是建立在Hadoop生态之上的Database,源生对离线任务支持友好,又因为LSM树是一个优秀的高吞吐数据库结构,所以同时也对接了很多线上业务。在线业务对访问延迟敏感,并且访问趋向于随机,如订单、客服轨迹查询。离线业务通常是数仓的定时大批量处理任务,对一段时间内的数据进行处理并产出结果,对任务完成的时间要求不是非常敏感,并且处理逻辑复杂,如天级别报表、安全和用户行为分析、模型训练等。

多语言支持

HBase提供了多语言解决方案,并且由于滴滴各业务线RD所使用的开发语言各有偏好,所以多语言支持对于HBase在滴滴内部的发展是至关重要的一部分。我们对用户提供了多种语言的访问方式:HBase Java native API、Thrift Server(主要应用于C++、PHP、Python)、JAVA JDBC(Phoenix JDBC)、Phoenix QueryServer(Phoenix对外提供的多语言解决方案)、MapReduce Job(Htable/Hfile Input)、Spark Job、Streaming等。

数据类型

HBase在滴滴主要存放了以下四种数据类型:
  • 统计结果、报表类数据:主要是运营、运力情况、收入等结果,通常需要配合Phoenix进行SQL查询。数据量较小,对查询的灵活性要求高,延迟要求一般。
  • 原始事实类数据:如订单、司机乘客的GPS轨迹、日志等,主要用作在线和离线的数据供给。数据量大,对一致性和可用性要求高,延迟敏感,实时写入,单点或批量查询。
  • 中间结果数据:指模型训练所需要的数据等。数据量大,可用性和一致性要求一般,对批量查询时的吞吐量要求高。
  • 线上系统的备份数据:用户把原始数据存在了其他关系数据库或文件服务,把HBase作为一个异地容灾的方案。
使用场景介绍

场景一:订单事件

这份数据使用过滴滴产品的用户应该都接触过,就是App上的历史订单。近期订单的查询会落在Redis,超过一定时间范围,或者当Redis不可用时,查询会落在HBase上。业务方的需求如下:
  • 在线查询订单生命周期的各个状态,包括status、event_type、order_detail等信息。主要的查询来自于客服系统。
  • 在线历史订单详情查询。上层会有Redis来存储近期的订单,当Redis不可用或者查询范围超出Redis,查询会直接落到HBase。
  • 离线对订单的状态进行分析。
  • 写入满足每秒10K的事件,读取满足每秒1K的事件,数据要求在5s内可用。
118ab678-3fcc-365d-a043-a9427ce48617.png

图1 订单流数据流程

按照这些要求,我们对Rowkey做出了下面的设计,都是很典型的scan场景。

订单状态表

Rowkey:reverse(order_id) + (MAX_LONG - TS)
Columns:该订单各种状态

订单历史表

Rowkey:reverse(passenger_id | driver_id) + (MAX_LONG - TS)
Columns:用户在时间范围内的订单及其他信息

场景二:司机乘客轨迹

这也是一份滴滴用户关系密切的数据,线上用户、滴滴的各个业务线和分析人员都会使用。举几个使用场景上的例子:用户查看历史订单时,地图上显示所经过的路线;发生司乘纠纷,客服调用订单轨迹复现场景;地图部门用户分析道路拥堵情况。
de2aa799-d06b-3900-8887-db0591244345.png

图2 司乘轨迹数据流程

用户们提出的需求:
  • 满足App用户或者后端分析人员的实时或准实时轨迹坐标查询;
  • 满足离线大规模的轨迹分析;
  • 满足给出一个指定的地理范围,取出范围内所有用户的轨迹或范围内出现过的用户。

其中,关于第三个需求,地理位置查询,我们知道MongoDB对于这种地理索引有源生的支持,但是在滴滴这种量级的情况下可能会发生存储瓶颈,HBase存储和扩展性上没有压力但是没有内置类似MongoDB地理位置索引的功能,没有就需要我们自己实现。通过调研,了解到关于地理索引有一套比较通用的GeohHash算法 。

GeoHash是将二维的经纬度转换成字符串,每一个字符串代表了某一矩形区域。也就是说,这个矩形区域内所有的点(经纬度坐标)都共享相同的GeoHash字符串,比如说我在悠唐酒店,我的一个朋友在旁边的悠唐购物广场,我们的经纬度点会得到相同的GeoHash串。这样既可以保护隐私(只表示大概区域位置而不是具体的点),又比较容易做缓存。
78f23cc3-6b72-35e5-8fdf-f2fc6a21cbdc.png

图3 GeoHash示意图

但是我们要查询的范围和GeohHash块可能不会完全重合。以圆形为例,查询时会出现如图4所示的一半在GeoHash块内,一半在外面的情况(如A、B、C、D、E、F、G等点)。这种情况就需要对GeoHash块内每个真实的GPS点进行第二次的过滤,通过原始的GPS点和圆心之间的距离,过滤掉不符合查询条件的数据。
64bc9031-f07b-37a6-9098-d4f5ed14ad48.png

图4 范围查询时,边界GeoHash块示意图

最后依据这个原理,把GeoHash和其他一些需要被索引的维度拼装成Rowkey,真实的GPS点为Value,在这个基础上封装成客户端,并且在客户端内部对查询逻辑和查询策略做出速度上的大幅优化,这样就把HBase变成了一个MongoDB一样支持地理位置索引的数据库。如果查询范围非常大(比如进行省级别的分析),还额外提供了MR的获取数据的入口。

两种查询场景的Rowkey设计如下:
  • 单个用户按订单或时间段查询: reverse(user_id) + (Integer.MAX_LONG-TS/1000)
  • 给定范围内的轨迹查询:reverse(geohash) + ts/1000 + user_id
场景三:ETA

ETA是指每次选好起始和目的地后,提示出的预估时间和价格。提示的预估到达时间和价格,最初版本是离线方式运行,后来改版通过HBase实现实时效果,把HBase当成一个KeyValue缓存,带来了减少训练时间、可多城市并行、减少人工干预的好处。
整个ETA的过程如下:
  • 模型训练通过Spark Job,每30分钟对各个城市训练一次;
  • 模型训练第一阶段,在5分钟内,按照设定条件从HBase读取所有城市数据;
  • 模型训练第二阶段在25分钟内完成ETA的计算;
  • HBase中的数据每隔一段时间会持久化至HDFS中,供新模型测试和新的特征提取。
Rowkey:salting+cited+type0+type1+type2+TS
Column:order, feature
00e9c375-0f4f-3161-91bf-9aec8817a35c.png

图5 ETA数据流程

场景四:监控工具DCM

用于监控Hadoop集群的资源使用(Namenode,Yarn container使用等),关系数据库在时间维度过程以后会产生各种性能问题,同时我们又希望可以通过SQL做一些分析查询,所以使用Phoenix,使用采集程序定时录入数据,生产成报表,存入HBase,可以在秒级别返回查询结果,最后在前端做展示。
078b527b-08c1-30ee-b780-1bdec51ee262.png

图6 DCM数据流程

图7、图8、图9是几张监控工具的用户UI,数字相关的部分做了模糊处理。
8f551363-68ae-3ad1-865e-6b95947595e0.png

图7 DCM HDFS按时间统计使用全量和增量

3ad00e42-2f2c-3cbc-bef9-a4046663e6b3.png

图8 DCM HDFS按用户统计文件数

a5093be9-d860-310e-88ef-80e91234d564.png

图9 DCM,MR Job运行结果统计

滴滴在HBase对多租户的管理

我们认为单集群多租户是最高效和节省精力的方案,但是由于HBase对多租户基本没有管理,使用上会遇到很多问题:在用户方面比如对资源使用情况不做分析、存储总量发生变化后不做调整和通知、项目上线下线没有计划、想要最多的资源和权限等;我们平台管理者也会遇到比如线上沟通难以理解用户的业务、对每个接入HBase的项目状态不清楚、不能判断出用户的需求是否合理、多租户在集群上发生资源竞争、问题定位和排查时间长等。

针对这些问题,我们开发了DHS系统(Didi HBase Service)进行项目管理,并且在HBase上通过Namespace、RS Group等技术来分割用户的资源、数据和权限。通过计算开销并计费的方法来管控资源分配。
639db17a-63dd-39a8-acdc-d608d0aebf00.png

图10 DHS项目表监控

DHS主要有下面几个模块和功能:
  • 项目生命周期管理:包括立项、资源预估和申请、项目需求调整、需求讨论;
  • 用户管理:权限管理,项目审批;
  • 集群资源管理;
  • 表级别的使用情况监控:主要是读写监控、memstore、blockcache、locality。
当用户有使用HBase存储的需求,我们会让用户在DHS上注册项目。介绍业务的场景和产品相关的细节,以及是否有高SLA要求。

之后是新建表以及对表性能需求预估,我们要求用户对自己要使用的资源有一个准确的预估。如果用户难以估计,我们会以线上或者线下讨论的方式与用户讨论帮助确定这些信息。
然后会生成项目概览页面,方便管理员和用户进行项目进展的跟踪。

HBase自带的jxm信息会汇总到Region和RegionServer级别的数据,管理员会经常用到,但是用户却很少关注这个级别。根据这种情况我们开发了HBase表级别的监控,并且会有权限控制,让业务RD只能看到和自己相关的表,清楚自己项目表的吞吐及存储占用情况。

通过DHS让用户明确自己使用资源情况的基础之上,我们使用了RS Group技术,把一个集群分成多个逻辑子集群,可以让用户选择独占或者共享资源。共享和独占各有自己的优缺点,如表1。
abbfcebc-4b37-3b87-8055-0fe91ca90e7f.png

表1 多租户共享和独占资源的优缺点

根据以上的情况,我们在资源分配上会根据业务的特性来选择不同方案:
  • 对于访问延迟要求低、访问量小、可用性要求低、备份或者测试阶段的数据:使用共享资源池;
  • 对于延迟敏感、吞吐要求高、高峰时段访问量大、可用性要求高、在线业务:让其独占一定机器数量构成的RegionServer Group资源,并且按用户预估的资源量,额外给出20%~30%的余量。
最后我们会根据用户对资源的使用,定期计算开销并向用户发出账单。

RS Group

RegionServer Group,实现细节可以参照HBase HBASE-6721这个Patch。滴滴在这个基础上作了一些分配策略上的优化,以便适合滴滴业务场景的修改。RS Group简单概括是指通过分配一批指定的RegionServer列表,成为一个RS Group,每个Group可以按需挂载不同的表,并且当Group内的表发生异常后,Region不会迁移到其他的Group。这样,每个Group就相当于一个逻辑上的子集群,通过这种方式达到资源隔离的效果,降低管理成本,不必为每个高SLA的业务线单独搭集群。
49521b76-bfd5-30b0-a524-e84774a25c1e.png

图11 RS Group示意图

总结

在滴滴推广和实践HBase的工作中,我们认为至关重要的两点是帮助用户做出良好的表结构设计和资源的控制。有了这两个前提之后,后续出现问题的概率会大大降低。良好的表结构设计需要用户对HBase的实现有一个清晰的认识,大多数业务用户把更多精力放在了业务逻辑上,对架构实现知之甚少,这就需要平台管理者去不断帮助和引导,有了好的开端和成功案例后,通过这些用户再去向其他的业务方推广。资源隔离控制则帮助我们有效减少集群的数量,降低运维成本,让平台管理者从多集群无止尽的管理工作中解放出来,将更多精力投入到组件社区跟进和平台管理系统的研发工作中,使业务和平台都进入一个良性循环,提升用户的使用体验,更好地支持公司业务的发展。

本文系李扬老师在CCTC 2017大数据峰会上所做分享内容,点此下载演讲PPT。

感谢 jihong10102006 投递这篇资讯

声明:本文系ITeye网站发布的原创资讯,严禁任何网站转载本文,否则必将追究法律责任!

已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐



Favicon for 小众软件 - Appinn 15:04 APKUpdater – 检查更新 Android 手机中的已安装应用 » Post from 小众软件 - Appinn Visit off-site link

APKUpdater 是一款开源的用来检查 Android 手机中已安装应用更新的应用,信息来源包括 APKMirror、APKPure、Uptodown 以及几天前刚刚添加的 Google Play。@Appinn

虽然 Play 可以算上最全的 Android 应用市场,但 Android 市场的分裂程度比想象的还要严重,于是就有一些第三放服务出来帮你检查…比如这款 APKUpdater。

APKUpdater 使用了一些常见的第三方市场,很多时候当 Play 无法安装的时候,青小蛙也从这几个市场中下载 apk 文件,最新的更新添加了 Play 后,数据会更全面一些:

注意由于很多国产应用并没有海外用户,也不对海外用户服务,所以那些应用依旧只能在国内应用市场检测更新并安装。不过这些应用一般都喜欢自己更新…

APKUpdater 并没有上架 Google Play,你需要从 GitHub 下载 apk 文件后进行安装。

👉 https://github.com/rumboalla/apkupdater/releases


©2017 青小蛙 for 小众软件 | 加入我们 | 投稿 | 订阅指南 | 反馈 | 代理(优惠码 Appinn)
b27c41ad47c2611d60d7452a4c02dd52
Site Meter

apppackge:

Favicon for 小众软件 - Appinn 13:00 618 屯了太多东西,有没有家用「库存管理」应用? » Post from 小众软件 - Appinn Visit off-site link

来自 @fly… 同学的问题

最近 618,狂囤货,结果家里还有多少东西都不知道。所以想问问有没有一个家庭用的库存软件,那些商用的实在太大了。最好手机上能用,简单记录买入了什么,库存多少,用掉了多少····啥型号的啥规格的,价格多少。虽然 EXCEL 表格能实现,不过不是太麻烦了·······

之后,@11164 同学推荐了一款 Android 应用:条形码扫描仪 + 库存 +Excel 数据库

不过,看截图就知道,这已经是一款老掉渣的应用了,最后一次更新在三年前。

而青小蛙倒是想起了 Memento Database,这是一款手机上的全能资料/数据库应用,拥有 Android 及桌面客户端(Win/macOS/Linux),并且更新积极,最近一次在今年 4 月 1 日,大概是这样的:

Memento Database 是一款很强大的资料库、数据库应用,可以用来在手机上创建各种资料库,比如电影、图书、CD、收藏品、任务、时间,甚至项目管理、CRM、库存管理、收支关系等等,支持导入 Google Drive、云同步,自定义选项非常强大,可以用来管理任何内容,内置自动计算、图表、搜索与过滤器,让成库后的寻找也很容易,但使用有门槛,并不是一款简单的应用。@Appinn

倒是可以用来做库存管理,但缺少 iOS 工具…

于是求助于大家,有更好的推荐么?


相关阅读


©2017 青小蛙 for 小众软件 | 加入我们 | 投稿 | 订阅指南 | 反馈 | 代理(优惠码 Appinn)
b27c41ad47c2611d60d7452a4c02dd52
Site Meter

apppackge:

Favicon for 小众软件 - Appinn 11:03 04WATCH – 极简炫酷的现代秒表 [iPhone / iPad] » Post from 小众软件 - Appinn Visit off-site link

04WATCH 是一款界面极简炫酷的现代秒表,最小化设计,最大化信息内容。@Appinn

来自发现频道

不同于主流设计,04WATCH 的样式非常现代化,高对比度色彩以及大按钮很讨喜。

「使用了大按钮和 “LAP” 功能,可以 “LAP” 无限次。」

简单易用,喜欢这种风格的同学可以收了。


©2017 青小蛙 for 小众软件 | 加入我们 | 投稿 | 订阅指南 | 反馈 | 代理(优惠码 Appinn)
b27c41ad47c2611d60d7452a4c02dd52
Site Meter

apppackge:

Favicon for ITeye资讯频道 10:12 服务器负载优化技巧 » Post from ITeye资讯频道 Visit off-site link
引用
原文:Tips and Tricks for Reducing Server Load
作者:Thayne McCombs
翻译:Vincent

译者注:作者以字体服务为例,首先分析了为什么服务器的负载会那么高。找到原因以后,将服务器端的部分工作进行转移,从而降低了服务器端的负载。以下为译文。

我们有一个面向服务的架构。其中一个服务是字体服务,它负责根据family和Unicode提供字体数据,并检查用户上传的字体的权限。我们没有想到字体服务具有特别高的负载(负载是使用或等待CPU的平均线程数)。然而去年我们注意到字体服务的负载令人惊讶,特别是在访问量很少的夜晚。幸运的是我们能够找到根本原因,并大大增加我们的字体服务的性能和整个系统的稳定性。接下来介绍一下我们是如何做到的。
2affef09-b86c-3170-abba-a98610e665e3.png

图1:更改前后的服务器负载。(Fix于12月21日发布)

使用火焰图s进行调试

我的一位同事在Netflix的Brendan Gregg发现部署了一个灵活的火焰图形工具。这个工具结合了很多分析工具的数据,从而把本地和JVM函数使用的资源展示在单个图形中。图中的每个矩形表示单个堆栈帧-矩形的宽度表示使用了多少资源(如CPU时间),y轴表示调用堆栈。要找到有问题的功能,你只需要找出宽矩形就可以了。该工具在调试字体服务时的性能表现是非常不错的。
b15f876c-9338-365b-a866-917ed5b80478.png

图2:高负载时字体服务器的火焰图

在高负载状态下,我们从字体服务收集了几个火焰图。这里显示了其中的一个,还包括了火焰图JVM部分的特写。我们很快就发现这些火焰图中的一个图案。大部分时间都用于libz.so(用于GZIP压缩/解压缩),并且JVM中的大部分时间都消耗在了XML转义和UTF-8编码。
ccaed698-b0b9-3b1f-8408-42e41d3d40a6.png

图3:火焰图中JVM特写部分

为什么如此之慢

首先,这里介绍了字体服务是如何工作的背景。我们将字体数据存储在Amazon S3存储区中,为每种字体的每个Unicode范围提供单独的对象。其他服务将请求字体数据的字体组、一组Unicode范围和一个用户。字体服务将为用户访问的每个字体下载指定范围的数据,然后返回包含所有数据的XML响应。

这个功能非常简单,并没有什么明显的密集的计算。然而,负载还是比较高的。通过火焰图,我们可以看出libz,XML转义和UTF8编码都占用了大量的CPU。但是为什么编码以及压缩会如此耗时呢?还记得我说过晚上的负荷是最高的吗?好吧,我们(美国山区时间)是夜晚时,亚洲可能是白天。虽然我们这边晚上的访问量较少,但是其他地方的用户在这段时间内正在使用中文,日文和韩文等亚洲语言的Unicode系列。结果显示,这些范围的字体数据的访问量要大得多。这些数据是使用gzip解压缩,用UTF-8解码,然后XML转义,UTF-8编码和GZIP压缩。对于类似于拉丁语这种小范围的,这个过程可能并没有什么影响。然而,单个中文、日文或韩文的范围比拉丁语范围大2个数量级(前者相当于1MB,后者是60KB)。对于这些范围较大的,所有这些转换都会影响CPU。Gzip压缩和解压缩代价相对比较高,XML转义并不是太高。

我们是如何使它变快的

来自字体服务的响应内容,从本质上看来,仅仅是S3的原始数据的集合。字体服务确实执行了一些重要的附加任务,如权限检查和从字体系列的名称查找字体键。然而,字体服务也不是说就必须得从S3代理字体数据。我们的解决方案很简单。我们只是简单地回应了包含字体数据的S3对象的直接链接列表,而不是在字体服务中下载,再重新编码字体数据。

这样更改以后,字体服务器上的负载减少到几乎什么都没有(参见图1),它对客户端服务的响应也没有明显的影响。尽管我们的第一次尝试是成功的,但我应该注意到,将它部署在一个特性标志上,它可以让我们在请求的百分比上进行测试,以测试它的工作是否成功,然后将其100%地转化为100%。

结论

通过对生产服务器进行分析,我们能够找出那些服务器端没有必要进行处理的工作,并且去掉这些冗余的工作。以下是我们总结的一些经验。
  • 使用诸如火焰图形之类的分析工具找出那些占用CPU的功能。
  • 压缩和其他编码的代价很高。
  • 如果客户端能够直接访问数据,通过发送链接可以提高整体性能,而不是代理数据。(免责声明:这也不是像那些神奇的子弹一样任何情况下都能通用,在某些情况下,在某些情况下可能会对客户端的性能造成伤害,因为它必须要发出第二个请求。)


感谢 jihong10102006 投递这篇资讯

声明:本文系ITeye网站发布的原创资讯,严禁任何网站转载本文,否则必将追究法律责任!

已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐



News stories from Sunday 18 June, 2017

Favicon for 异次元软件世界 18:03 [来自异次元] 致命框架2 (Framed 2) - 精彩绝伦的创意漫画化悬疑解谜游戏续作 » Post from 异次元软件世界 Visit off-site link

framed2_banner.jpg

谈起解谜类游戏的「创意」,你可能会想起《纪念碑谷2》那让人拍手称绝的视觉错位设计。然而,在众多优秀解谜游戏中,《FRAMED》(致命框架) 那别具一格的创新玩法同样巧妙得让人深深折服!

游戏以一格格精致生动的视频漫画来呈现故事,玩家需要调换漫画格的顺序,从而改写剧情,帮助主角一步一步逃出生天!这种突破常规的、让玩家亲手“重构”故事线的创意解谜形式,就连知名游戏制作人(合金装备之父)小岛秀夫都赞赏有加!如今,它的续作《FRAMED 2 (致命框架2)》终于来了……

[ 马上前往围观.... ]


异次元还有这些值得一看:

异次元正版数字商城  |  异次元首页  |  iPc.me  |  新浪微博  |  软件精选

Favicon for 小众软件 - Appinn 15:38 Firefox Focus – Mozilla 出品,隐私浏览器 [iOS/Android] » Post from 小众软件 - Appinn Visit off-site link

Firefox Focus 是 Mozilla 出品的专门为防止隐私泄漏的功能精简版本浏览器,包括屏蔽广告、防广告跟踪器等功能,之前已发布 iOS 版本,并可与 Safari 整合,近日第一个 RC 候选版本发布,可以直接在 Github 下载。@Appinn

Firefox Focus 允许你拦截网站跟踪者通过以下类别:

  • 广告、分析和社交跟踪
  • 其他内容跟踪者 – 这个类别包括了可能跟踪你的嵌入视频、图片和新闻。拦截其他内容跟踪者可能导致许多网站功能不正常。

主要是针对广告啦,让商家没办法追踪到你的设备。注意这是隐私浏览器不是匿名浏览器哦。

据说去除跟踪器和广告后的网页消耗更少的流量、加载更快,然而有不少用户反馈 iOS 版本中对中国网站的屏蔽力度不够…


相关阅读


©2017 青小蛙 for 小众软件 | 加入我们 | 投稿 | 订阅指南 | 反馈 | 代理(优惠码 Appinn)
b27c41ad47c2611d60d7452a4c02dd52
Site Meter

apppackge:

Favicon for 小众软件 - Appinn 09:56 Open Camera – 可自定义很多参数的开源 Android 相机应用 » Post from 小众软件 - Appinn Visit off-site link

Open Camera 是一款可以自定义很多拍照属性的开源 Android 相机应用,功能丰富、无广告。@Appinn

直接来看功能点吧:

  • 自动水平(自动帮你剪裁照片至水平)
  • 对角模式、场景模式、色彩效果、白平衡、ISO
  • 为左手用户优化界面
  • 禁用快门声
  • HDR
  • 将日期、时间、坐标、文本显示在照片上
  • 自拍时支持屏幕闪光
  • 桌面小部件自动拍照
  • 可手动调整 ISO、白平衡、曝光时间等参数
  • RAW(DNG)支持

不满意原生相机或者美颜相机不够自定义功能的同学,可以试试。

可能每款手机的脾气都不太相同,青小蛙一直觉得自带原生相机最好用 😂


相关阅读


©2017 青小蛙 for 小众软件 | 加入我们 | 投稿 | 订阅指南 | 反馈 | 代理(优惠码 Appinn)
b27c41ad47c2611d60d7452a4c02dd52
Site Meter

apppackge:

News stories from Saturday 17 June, 2017

Favicon for 小众软件 - Appinn 12:16 一站式「电子书」解决方案 calibre 发布 3.0 版本 » Post from 小众软件 - Appinn Visit off-site link

calibre 是一款开源的电子书工具,可以用来管理、阅读、转换电子书,新版本支持高清屏幕(Retina)、重写了内容服务器、互转 Word 格式、图标主题等新功能,支持 Windows、macOS、Linux。@Appinn

calibre是一个自由开源的电子书软件套装,可以用来组织、存放、以及管理电子书,支持大多数的电子书格式。同时也支持与许多流行的电子书阅读器进行同步,并可能在 DRM 的限制下转换电子书的格式。via 维基百科

无论是管理、阅读还是转换电子书然后发送至你的阅读设备,calibre 都可以方便的实现。

新版本包活以下更新:

  • 新内容管理器,可以通过浏览器(http://localhost:8080)来查看、阅读或者下载你的图书馆
  • 支持高清 Retina 屏幕
  • 支持图标模板,就是把程序里的图标都换一个…
  • 支持 Word 格式互转,包括转换电子书为 docx 或者将 docx 转换为电子书格式

👉 https://calibre-ebook.com/


相关阅读


©2017 青小蛙 for 小众软件 | 加入我们 | 投稿 | 订阅指南 | 反馈 | 代理(优惠码 Appinn)
b27c41ad47c2611d60d7452a4c02dd52
Site Meter

apppackge:

Favicon for 异次元软件世界 02:59 [来自异次元] 微软新机 Surface Laptop / Studio / Pro 全系正式登陆中国 » Post from 异次元软件世界 Visit off-site link

surface_pro.jpg

在上个月发布的 Surface Laptop 及新款的 Surface Pro,今天终于正式在微软中国官网上架国行版了!另外还有 Surface Studio 以及 Surface Book 增强版,一直期待的小伙伴们可以出手啦。 微软官网:全系列 Surface 家族新上市 Surface Laptop 新上市目前仅有 Core i5 的版本,搭配 4GB 内存 / 128GB SSD,或 8GB / 256GB,定价分……

[ 马上前往围观.... ]


异次元正版数字商城  |  异次元首页  |  iPc.me  |  新浪微博  |  软件精选

News stories from Friday 16 June, 2017

Favicon for ITeye资讯频道 17:20 Maven生命周期和阶段详解 » Post from ITeye资讯频道 Visit off-site link

一直想系统全面的记录maven的生命周期,今天工作碰到maven配置疑惑,一生气,看了官网的介绍,现记录以便日后回溯,自己翻译的,如有误差,希望帮我指出,这里只讲jar,pom,war,maven-plugin

maven 生命周期
maven 有三个内置的build生命周期:default, clean 、site

clean阶段:处理项目的清理工作
default阶段:处理项目的deploy
site阶段:处理网站站点的创建

 

一个build的生命周期是由一些列的阶段(phases) 组成

每一个生命周期(default\clean\site),由一系列阶段组成,每一个阶段phases代表了生命周期的一个步骤

接下来讲内置三大生命周期及其阶段关系:

clean生命周期由一下几个阶段组成:

pre-clean  : 在项目实际进行clean之前做的一些预处理工作
clean:   移除所有上一次build过程生成的所有文件
post-clean :完成最终项目clean工作的收尾工作

 default生命周期由以下几个阶段组成:

validate :验证这个项目是否正确,所有必需资源是否可用
initialize :初始化编译的状态,例如:设置一些properties属性,或者创建一些目录
generate-sources :生成所有在编译阶段需要的源代码
process-sources :处理源代码,例如:替换值(filter any values)
generate-resources :生成这个项目包所有需要包含的资源文件
process-resources :复制并处理资源文件到目标目录,为packaging 打包阶段做好准备
compile : 编译项目的源代码
process-classes :后置处理编译阶段生成的文件,例如:做java字节码的加强操作
generate-test-sources : 生成编译阶段需要的test源代码
process-test-sources :处理test源代码,例如:替换值(filter any values)
generate-test-resources :生成test测试需要的资源文件
process-test-resources :复制并处理资源文件到test测试目标目录
test-compile : 编译项目的测试代码到指定test目标目录
process-test-classes : 后置处理test编译阶段生成的文件,例如:做java字节码的加强操作
test : 使用合适的单元测试框架,运行所有测试例子,这些测试用例不应该要求这些代码被打包或者部署才能执行
prepare-package : 处理任何需要在正式打包之前要完成的必须的准备工作。这一步的通常结果是解压,处理包版本等
package :打包编译后的代码成可发包格式,例如:jar,war等
pre-integration-test :完成一些在集成测试之前需要做的预处理操作,这通常包括建立需要的环境。
integration-test :处理并部署(deploy)包到集成测试可以运行的环境中
post-integration-test :处理一些集成测试之后的事情,通常包括一些环境的清理工作
verify :做一些对包的验证操作,去检测这个包是一个合法的符合标准的包。
install :将包安装到本地仓库,提供给作为其他项目使用,例如:包的本地依赖
deploy :最终的结果是部署到集成环境或者正式环境,复制这个最终版本到远程仓库并分享给其他项目或者开发者使用

 site生命周期由以下几个阶段组成:

pre-site : 执行一些实际站点生成之前的预处理操作
site :生成项目的站点文档
post-site :执行一些后置操并完成最终生成站点操作,并为最后站点发布做好准备
site-deploy :部署这个生成好的站点文档到指定的web服务器

goal 和liftcycle phase关系

内置的生命周期绑定:
一些阶段有一些目标(goal)默认和他们是绑定在一起的。并且,对于默认的生命周期,这个绑定依赖pom 文件里面的packaging 的值。

常见的目标绑定编译阶段(goal-to-build-phase bindings)

clean生命周期和目标的绑定关系

phase   goal
clean  clean:clean

 default生命周期和目标绑定关系:

 当packaging值是jar /  rar / war

phase               goal
process-resources       resources:resources
compile                 compiler:compile
process-test-resources  resources:testResources
test-compile 	        compiler:testCompile
test 	                surefire:test
package 	            jar:jar or rar:rar or war:war
install 	            install:install
deploy 	                deploy:deploy

 

当packaging值是maven-plugin

phase       			goal
generate-resources 		plugin:descriptor
process-resources 		resources:resources
compile 				compiler:compile
process-test-resources 	resources:testResources
test-compile 			compiler:testCompile
test 					surefire:test
package 				jar:jar and plugin:addPluginArtifactMetadata
install 				install:install
deploy 					deploy:deploy

 当packaging值是pom

phase       goal
package 	site:attach-descriptor
install 	install:install
deploy 		deploy:deploy

 site生命周期和目标绑定关系:

phase       goal
package 	site:attach-descriptor
install 	install:install
deploy 		deploy:deploy

 参考资料:

lifecycle官方定义:http://maven.apache.org/ref/3.5.0/maven-core/lifecycles.html

build:http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference

 



感谢 蜗牛天空 投递这篇资讯

声明:本文系ITeye网站发布的原创资讯,严禁任何网站转载本文,否则必将追究法律责任!

已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐



Favicon for ITeye资讯频道 17:18 如何用Python检测伪造的视频 » Post from ITeye资讯频道 Visit off-site link
引用
原文:Detecting Fake Videos with Python
作者:Sunny Balasubramanian
翻译:雁惊寒

译者注:本文以一段自打24小时耳光的视频为例子,介绍了如何利用均值哈希算法来检查重复视频帧。以下是译文。

有人在网上上传了一段视频,他打了自己24个小时的耳光。他真的这么做了吗?看都不用看,肯定没有!

前几天,我浏览YouTube的时候,看到了一段非常流行的视频。在视频里,一个人声称自己要连续打脸24小时。视频的长度就是整整的24小时。我跳着看完了这个视频,确实,他就是在打自己的脸。许多评论都说这个视频是伪造的,我也是这么想的,但我想确定这个结论。
b28ce452-423b-35c2-bf85-59f76c6ae397.png

计划

写一个程序来检测视频中是否有循环。我之前从来没有用Python处理过视频,所以这对我来说有点难度。

首次尝试

看一个视频就像是在快速地翻看图片,这也是使用python读取视频数据的方式。我们看到的每个“图片”都是视频的一个帧。在视频播放时,它是以每秒30帧的速度进行播放。

在视频数据中,每一帧都是一个巨大的数组。该数组通过指定数量的红、绿、蓝进行混合来告诉我们每个位置上每个像素的颜色。我们想看看视频中是否有多个帧出现了多次,有一个方法,就是计算我们看到的每一帧的次数。

我用两个字典类型的变量来进行计数。一个跟踪我已经看到的帧,另一个跟踪所有完全相同的帧。当我逐个浏览每一帧时,首先检查以前是否看过这一帧。如果没有,则把这一帧添加到我已看过的帧字典中(见下面的seen_frames)。如果以前看过这一帧,则将它添加到另一个字典(dup_frames)的列表中,这个字典包含了其他一模一样的帧。

代码如下:
def find_duplicates():
    # 载入视频文件
    filename = 'video.mp4'
    vid = imageio.get_reader(filename,  'ffmpeg')
    all_frames = vid.get_length()

    # 重复的帧保存在这里
    seen_frames = {}
    dup_frames = {}

    for x in range(all_frames):
        # 获取单个帧
        frame = vid.get_data(x)

        # 取帧的哈希值
        hashed = hash(frame.tostring())

        if seen_frames.get( hashed, None):
            # 如果之前看到过这一帧,则添加到dup_frames中具有相同的哈希值的帧列表中
            dup_frames[hashed].append(x)
        else:
            # 如果这是第一次看到这一帧,则保存到seen_frames中
            seen_frames[hashed] = x
            dup_frames[hashed] = [x]

    # 返回重复帧列表的列表
    return [dup_frames[x] for x in dup_frames if len(dup_frames[x]) > 1]

这段代码在我的macbook pro上跑了大约一个小时。 我们来看看结果:
cd752bcb-1b48-3321-bdff-d1f31962304b.png

很好,结果看起来很直观,从下图中可以看出,帧5928与帧2048454相同,帧5936与帧2048462相同,以此类推。让我们目视确认。
78587d66-90bc-3ea4-bab9-d38577831a4b.png

完美。所以,这个视频肯定是伪造的。 然而,帧匹配的数量看起来实在太低了,值得怀疑啊。 真的只有25个相同的帧吗?在整整24小时的视频中这25帧的长度几乎不到1秒钟。我们来进一步看一下!

情况变复杂了

该程序的作用是确定相同的帧,这样我就能知道视频是在循环播放。让我们来看看上面两幅图像的后2秒的帧(帧5936 + 60和帧2048462 + 60)是什么样的。

等等…… 这两个图像看起来是一样的啊!但是他们为什么没有标记为匹配呢?我们可以把其中一个帧减去另外一个帧来找出不同之处。这个减法是对每个像素的红、绿、蓝的值分别做减法。
9af6ec65-26b0-3b70-b90c-c72b0543d545.png

太好了,我们创造出了一个很酷的故障艺术!但是,实际上两个帧的差值仅仅是视频被压缩后的两个帧的差异。由于经过了压缩,原来相同的两个帧可能会受到噪音的影响而导致失真,从而在数值上不再一样(尽管它们在视觉上看起来是一样的)。

对上面的说明总结一下,当我将数据存储在字典中时,我取了每个图像的哈希。哈希函数将图像(数组)转换为整数。如果两个图像完全相同,则哈希函数将得到相同的整数。如果两个图像不同,我们将得到两个不同的整数。但是我们实际想要的是,如果两个图像只是稍微不同,我们然仍然能得到相同的整数。

简化我们的压缩问题

有几种不同的哈希算法,每种都有专门的使用场景。我们在这里将要看到的是感知哈希。与其他类型的哈希不同的是,对于靠近在一起的输入,它们的感知哈希值是相同的。反向图像搜索网站显然使用的是类似的技术,这些网站只是抓取他们遇到的网络和哈希图像。由于同一张图片在互联网上可能存在多种不同的分辨率和剪裁,所以检查其他具有相同哈希值的东西则更为方便。

然而,对于我们来说,又有新的麻烦了,因为我们处理的并不完全是图像,而是一系列的图像,每一张图片都是相差1/30秒。这意味着我们的哈希函数需要:
  • 足够的宽松,两个仅因为压缩而产生噪声的帧的哈希值是相同的
  • 足够的灵敏,两个相邻帧的哈希值是不同的
这可能很复杂。

均值哈希的参数选择

我要尝试使用的哈希算法称为均值哈希(aHash)。在网上能找到很多的信息,它的处理过程一般是这样的:降低图像分辨率,转换为灰度图,然后取哈希值。通过降低分辨率,我们可以消除噪声的影响。然而,我们冒着相邻帧可能会被标记为重复帧的风险,因为它们是相似的。通过调整分辨率可以稍稍解决这个问题。

下面,我分别以分辨率8x8和64x64显示均值哈希的结果。8x8看起来降采样的太多了,我们失去了太多的信息,似乎大多数图像看起来都是一样的了。对于64x64,它看起来和原来的图像没什么不同,两者之间可能没有足够大的区别来忽略压缩产生的噪声。
3d7b52ab-a3a3-31d8-a195-b74ea53b7c3d.png

为了找到适合我们的分辨率,我试着在两段类似的视频中通过设置一系列不同的分辨率来寻找匹配项。返回的匹配项将出现在以下输出中:
  • [8,108]
  • [9,109]
  • [10,11,110,111]
上述的解释是,第8帧和第108帧相同。第9帧和第109帧相同,但不同于8、108。第10、11、110、111帧与其他帧都不同,但彼此相同。这种情况很有可能发生,因为算法并不完美,偶尔也会混淆,认为两个相邻的帧是相同的。我们看看下面这几个数字:
  • 有多少个匹配的桶?从上面可以看到,有3个。
  • 每个桶中的平均帧数是多少?平均值为(2 + 2 + 4)/ 3 = 2.7。
  • 所有桶中最多的帧是多少? 4。
这里的目标是获得大量的桶(第一个数字),并且每个桶内的帧数尽可能的少(平均或最差情况)。理论上来说,由于我正在看的这段视频有1个循环,所以每桶应该只有2帧。
8b8e3533-ffb2-3e9e-8a69-6950d26aca98.png

好的,看起来64太极端了,我们几乎没有一个桶在这一点上。另一方面,在图形的左侧,桶的大小(Bucket Size)有一个爆炸点,其中所有的帧都被检测为重复的。这个爆炸点似乎是在20附近。从最大桶的大小(Max Bucket Size)那根曲线来看,20的那个数据点似乎有些奇怪。为了反驳这一段网上视频,我也只愿意做到这些了,那么,让我们一起去看看把分辨率设置为24后取哈希的情况吧。

结果

我把原来的哈希函数换成了这个新的均值哈希函数,并重新计算分析。瞧,出现了太多的匹配帧!匹配帧太多了,没办法全部显示出来,这里我显示了同一桶中的一些数据:
  • 4262
  • 72096
  • 124855
  • 132392
  • 147466
  • 162540
  • 170077
  • 185151
  • 207762
  • 252984
  • etc…
这些都是我们找到的重复帧。将它们转换为大概的时间戳(以秒为单位,译者注:视频链接指向YouTube网站,请科学上网):
好极了!

如果你想要查看这些重复的位置,你可以看看这段视频剪辑。它正好发生在掌掴的中间! 虽说不一定能保证每个匹配帧都能找到,但是这比我们以前做的要详细得多,我认为这已经够好了。

我并没有追随这个YouTube用户,所以我不知道这个视频是一个内部笑话还是其他什么(它发布于4月1日),但这绝对是一个有趣的项目。

查看完整代码

感谢 jihong10102006 投递这篇资讯

声明:本文系ITeye网站发布的原创资讯,严禁任何网站转载本文,否则必将追究法律责任!

已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐



Favicon for ITeye资讯频道 13:21 33 款主宰 2017 iOS 开发的开源库 » Post from ITeye资讯频道 Visit off-site link
91ce1950-4c4a-37e3-9e0f-17c4417ebc1c.png

你好,iOS 开发者们!我的名字是 Pawel,是一名 iOS 独立开发者,也是Enter Universe 的作者。

大概在两年前,我发布了 提升开发的 27 个 iOS 开源库。这篇文章是我的一个最佳纪录(用户好评数):
5174d504-f424-30ed-bf13-a225483e3670.png

因为有15.5万人关注过这个话题,为了帮大家找到最好的 iOS 开源库,我又要发文了。

查看我的 GitHub 资料可以看到,距离上次发文,我又发现了180多个新的已加星标的库,所以现在是更新我的内容的绝佳时机。
按需排列 33 个库,提升你在 2017 年的开发。开始燃烧吧。

1. IGListKit
7db23f96-cbab-35fa-b96a-4eea6c8f77e9.gif

由 Instagram 开发人员制作,IGListKit 是用于构建快速灵活列表的数据驱动型的 UICollectionView 框架。此外,它可以帮助你在应用程序中避免大量使用视图控制器的情况。可查看 Ray Wenderlich 上的关于在你的项目中实现该库的教程,或者从 Rodrigo Cavalcante 中看看关于将现有的 UITableView 迁移到 IGListCollectionView 的方法。

2. Realm
0a235313-11a6-3c8c-a558-33ffcba01b07.png

Realm 是一款移动数据库,可直接运行在手机、平板电脑和可穿戴设备中,它不仅适用于 iOS。如果你想尝试与 Core Data 不同的东西,可以试试使用 Realm 。许多人说,它是一种现代化的、高效率的用于原生苹果解决方案的替代物。

3. Moya
1ae9e425-0b0f-3d14-9008-1643bf074307.png

Moya 是你的应用程序所缺少的网络层。你不用思考将网络请求放到哪里(以及如何放),Moya 会帮你处理这些问题。
72c48d72-1469-369c-8be7-c7105de25b45.png

4. SwiftyJSON

Swift 中的 JSON 解析之王。

将下面内容:
if let statusesArray = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String: Any]],
    let user = statusesArray[0]["user"] as? [String: Any],
    let username = user["name"] as? String {
    // Finally we got the username
}

转换为这种格式:
let json = JSON(data: dataFromNetworking)
if let userName = json[0]["user"]["name"].string {
  // Now you got your value
}

可选封装会自动为你完成。

5. Valet

Valet 可以帮助你实现将数据安全地存储在 iOS 或 OS X Keychain 中,而无需了解任何 Keychain 相关的工作原理。它支持在单个设备上的多个应用程序(同一开发者)之间共享数据,并在具有 iCloud 的设备上的实现跨设备的数据共享。它还支持 Touch ID 。

6. Firebase Analytics
08cd5946-db4c-36c5-a7fc-761644ebd8ae.png

它(由 Google 出品)可能是 iOS 上最好的免费分析解决方案。包括跟踪应用程序使用量、用户活跃度,以及事件;设置用户属性;创建自定义受众;和一些其他功能。

7. AsyncDisplayKit
436408bd-1aac-33af-adf5-d6f1bce3c35c.png

Facebook 为他们的 app Paper创造了这个异步 UI SDK。如果你想让你的 app 总是每秒用 60 帧的速度来渲染,一定要看看这个库。 这儿有一篇来自 Buffer 团队的故事

8. DZNEmptyDataSet

通常用户安装一个 APP 后,会看到一个空的 UITableView 。DZNEmptyDataSet 可以通过提供默认的 Empty Data Set Pattern 的实现来回避这个问题。
3c72d566-50fa-3772-a48c-f76f169414fa.png

9. Chameleon
8d875044-0cbc-3aeb-9958-fe661d29965e.png

Chameleon 是一个轻量却功能强大的 iOS 颜色框架软件。它基于的理念是:软件应用程序应该可以不费力气且同时保持多个漂亮的界面。

使用 Chameleon ,你不再需要调配 RGB 值,不用浪费时间去找你的 APP 合适的颜色组合,也不用担心你 APP 的文字是否能在不同背景色上可读。
00f9237c-1411-3f7d-bfd6-a2a31d5eba7e.png

deb7116f-c3ea-3e71-9aec-fced09e5e85b.png

10. PermissionScope
b32f6aca-bcf9-39df-8d29-0551bc088143.png

PermissionScope 是一个用于智能请求用户权限的 Swift 框架。 它不仅包含一个简单的用户界面来请求权限,还包含一个统一的许可 API ,可以告诉你任何指定的系统权限的状态或轻松地对它们发起请求。
5d9e9325-20d0-312d-b506-6a653833db3d.png

11. FileKit
f0bd59a8-66de-366c-9778-c6d978a96f27.png

FileKit 是一个 Swift 框架,提供简单而富有表现力的文件管理。点此查看使用示例

12. SwiftyUserDefaults

SwiftyUserDefaults 让 user defaults 用起来很愉悦,通过结合极具表现力的 Swifty API 和静态输入的优势。在一个地方定义键,轻松地使用值类型,并免费获得额外的安全性和方便的编译时检查。

13.Kingfisher
1a0de479-05ec-3812-affd-26c731e50936.png

Kingfisher 是一款轻量级的纯 Swift 库,用于从 Web 上异步下载和缓存图像。
特性
  • 异步图像下载和缓存
  • 基于 URLSession 的网络。提供基本图像处理器和滤镜。
  • 用于内存和磁盘的多层缓存。
  • 可取消下载和任务处理以提高性能。
  • 组件独立。可按需分别使用下载器或缓存系统。
  • 预先获取图像并在必要时将其从缓存中显示出来。
  • 包含 UIImageView、NSImage和UIButton扩展,可直接从 URL 设置图像。
  • 设置图像时可内置过渡动画。
  • 可扩展的图像处理和图像格式支持。
14. Hero
a3cac689-f932-3fdf-92ad-c7e2cff997dc.png

Hero 是构建 iOS 视图控制器过渡动画的库。它在 UIKit 繁琐的过渡动画 API 之上提供了一个层,使得自定义过渡动画对于开发人员来说是一个轻松的任务。

15. Hedwig
4386bd10-cf65-3b62-8781-24ad027a42d4.png

Hedwig 是一个 Swift 包,提供一组高级 API,可以让你轻松地发送电子邮件到 SMTP 服务器。如果你打算在下一个神奇的 Swift 服务器应用里发送电子邮件,Hedwig 可能是一个不错的选择。
特性
  • 支持通过普通、SSL 或 TLS(STARTTLS)端口连接到所有的 SMTP 服务器。
  • 支持使用 PLAIN、CRAM-MD5、LOGIN 或 XOAUTH2 进行认证。
  • 支持使用 HTML 正文和附件发送电子邮件。
  • 支持自定义验证方法和邮件标题,以跟踪你的邮件活动。
  • 支持邮件按序发送,甚至可以同时发送邮件。
  • 支持 Swift Package Manager。
  • 完善的测试和文档
16. DeviceKit

DeviceKit 是 UIDevice 的值类型替换。可轻松获取设备的信息和电池电量。
特性
  • 设备识别
  • 设备系列检测
  • 设备组检测
  • 模拟器检测
  • 电池状态
  • 电池电量
  • Equatable
17. Charts
4ec709ed-e20b-385c-a196-4e157273d2ec.png

漂亮的曲线图、饼状图、柱状图、散点图、气泡图、雷达图,更多的图形都在 charts 库里。
0a8196bd-9724-3382-92d4-2ed966710598.png

18. MGSwipeTableCell

一个易于使用的 UITableViewCell 子类,可展示多种过渡方式的可滑动按钮。
fdbc4203-3e2e-3c15-b03c-459fbfb608f1.png

19. RandomKit
dd21ffb3-f0ca-3346-b388-3b54d14fcc89.png

简单易用的随机数据生成器。

20. ResponseDetective
6a0aef56-7403-34c6-983d-c45e864b87b8.png

ResponseDetective 是一个非侵入式框架,在调试时用于拦截应用程序和服务器之间的任何的传出请求和传入响应,以进行调试。

21. Onboard

仅需添加几行代码,即可轻松创建一个美丽和吸引人的载入体验。
ae40f4cc-fd5d-3dc1-8bd8-6de7de08e5c5.gif70cf17fc-f1f3-3af7-a57f-d585233f1570.gif

22. Quick+ Nimble
ff7c1089-2ae1-3b0d-807b-99b0ef90246d.png

Quick 是一款专门用于 iOS 应用开发的开源行为驱动开发(BDD)测试框架,支持 Swift 和 Objective-C ,一般配合匹配框架 Nimble 使用。

23. Natalie

Natalie 生成基于 Storyboard 文件的 Swift 代码,使 Storyboard 和 Segue 更容易使用。生成的文件减少了用字符串作为 Segue 或 Storyboard 的标识符的情况。

24. RxSwift
7346217c-ffe5-334e-b6a9-62c3d354a7f9.png

对 Swift 的响应式编程感兴趣? 那不妨试试 RxSwift 。
示例
指定 GitHub 存储库的搜索 ...
let searchResults = searchBar.rx.text.orEmpty
    .throttle(0.3, scheduler: MainScheduler.instance)
    .distinctUntilChanged()
    .flatMapLatest { query -> Observable<[Repository]> in
        if query.isEmpty {
            return .just([])
        }
        return searchGitHub(query)
            .catchErrorJustReturn([])
    }
    .observeOn(MainScheduler.instance)

... 然后将结果绑定到你的视图表
searchResults
    .bind(to: tableView.rx.items(cellIdentifier: "Cell")) {
        (index, repository: Repository, cell) in
        cell.textLabel?.text = repository.name
        cell.detailTextLabel?.text = repository.url
    }
    .disposed(by: disposeBag)

880620b5-bd56-3f0f-91bc-a1ac47f4804d.gif

25. GDPerformanceView
0655cece-ab48-3d49-b1e0-ba7d259a4169.png

GDPerformanceView 可以在状态栏上方显示 FPS、CPU 使用情况以及应用版本和 iOS 版本,并通过 delegate 报告 FPS 和 CPU 使用情况。

26. Alamofire
8ab4be6f-056f-3687-b087-8bc6cc4d5c2f.png

Alamofire 是一个用 Swift 编写的 HTTP 网络库。
特性
  • 链式的请求/响应方法
  • URL / JSON / plist 参数编码
  • 上传类型支持:文件(File )、数据(Data )、流(Stream)以及MultipartFormData
  • 支持文件下载,下载支持断点续传
  • 支持使用 NSURLCredential进 行身份验证
  • 支持 HTTP 响应验证
  • 上传和下载进度可随进程关闭
  • 支持 cURL 命令输出
  • 支持动态修改和重试请求
  • 支持 TLS Certificate 和 Public Key Pinning
  • 网络可达性
  • 文档完善
27. SwiftyStoreKit
f6da7be7-d791-307b-8234-b47740a9a2e1.png

SwiftyStoreKit 是一个轻量级的 App 内购框架,支持 iOS 8.0+、tvOS 9.0+ 和 macOS 10.10+ 。

28. Timepiece

直观的 Swift 日期处理库。
特征:
  • 直观: Timepiece 提供了一系列辅助函数,使得日期处理更简单。
  • 准确: 精确依赖于 Foundation API , Timepiece 可以在无需深入了解的前提下辅助计算日期。
  • 小: Timepiece 只有4个文件,你可以很简单的阅读其内部结构。
29. CryptoSwift

用 Swift 实现的且用于 Swift 中的加密相关函数和辅助结构。
特点
  • 易用
  • 对于字符串和数据方便扩展
  • 支持增量更新(流式更新)
  • 支持 iOS、 macOS、AppleTV、watchOS、Linux 等系统
30. FSCalendar
8eb8e182-887b-3e83-8f21-dfa425017aca.png

完全可定制的 iOS 日历库,兼容 Objective-C 和 Swift 。
452ff033-bae1-3dd7-a50b-68210749be3b.png

17dca18b-5625-3db0-8996-2eab1b1f44a7.png

31. ImageViewer

一个类似 Twitter 的图像查看器。
8e445f78-0cc7-3c48-a888-f0cc31026988.gif

32. PromiseKit
40cee32c-8925-3c4d-9fbe-418163d6988a.png

PromiseKit 是对任意有 swiftc 的平台的恰当而又完整的 promises 实现,它具有卓越的 Objective-C 桥接和专门为 iOS、macOS、tvOS 以及 watchOS 的特殊化处理。

33. Ensembles
0cc1cf57-13f2-3bc5-813e-d74133907d3d.png

Ensemble 是一个 Objective-C 框架,支持 Swift ,扩展了 Apple 的 Core Data 框架,为 Mac OS 和 iOS 添加了点对点的同步功能。多个 SQLite 持久存储可以通过像 iCloud 或 Dropbox 这样的文件同步平台整合在一起。该框架易于扩展,可支持任何需要在不同设备之间传输文件的服务,包括定制服务器。

英文原文:33 iOS open source libraries that will dominate 2017
译者: Tocy, 王练, 无若, 总长, 君影文华

感谢 jihong10102006 投递这篇资讯

资讯来源:oschina

已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐