Skeleton

百度技术沙龙第82期 百度Web前端开发实战案例解析

人走茶凉 提交于 2020-04-12 02:23:33
本文作者:HelloDeveloper 10 月 27 日,82 期百度技术沙龙,邀请了数位百度前端技术部 Web 前端资深研发工程师,从 Web 前端技术出发,通过五个主题,立足现在面向未来,由内到外地分享百度在搜索组件化的探索、搜索体验增强、开放 Web 速度优化及开放 Web 未来发展发面的技术沉淀和积累。 1 搜索组件化探索与实践 首先进行分享的是百度前端技术部资深研发工程师陈骁带来的《搜索组件化的探索与实践》。 为什么搜索要做组件化? 据陈骁介绍,最开始的百度搜索移动端的前端架构是从 PC 时代迁移过来,服务器端使用 Smarty 来渲染模版,实现前后端分离。前端使用 Zepto 来完成交互逻辑,但是它的扩展性比较有限,难以实现对 HTML、CSS 代码的组件化管理,随着移动端的交互形式越来越复杂,原本的方案出现了局限性。 于是,组件化应运而生。组件化是把一些可复用的单元提取出来,通过对几个组件的管理,实现对整个搜索结果页样式的控制,提高开发的效率和横向团队整体升级的效率。 目前百度已经有了非常多的组件化解决方案,包括 Lavas 和 Reac t。可以具体到组件语法、基础框架以及同构区块。 如下图所示,组件语法包括四部分: Template:组件代理结构 浏览器端:组件前端逻辑 Style:前端样式 Config:同构逻辑 前三部分基本能够覆盖组件的常用语法

百度技术沙龙第82期 百度Web前端开发实战案例解析

本秂侑毒 提交于 2020-04-11 01:33:35
本文作者:HelloDeveloper 10 月 27 日,82 期百度技术沙龙,邀请了数位百度前端技术部 Web 前端资深研发工程师,从 Web 前端技术出发,通过五个主题,立足现在面向未来,由内到外地分享百度在搜索组件化的探索、搜索体验增强、开放 Web 速度优化及开放 Web 未来发展发面的技术沉淀和积累。 1 搜索组件化探索与实践 首先进行分享的是百度前端技术部资深研发工程师陈骁带来的《搜索组件化的探索与实践》。 为什么搜索要做组件化? 据陈骁介绍,最开始的百度搜索移动端的前端架构是从 PC 时代迁移过来,服务器端使用 Smarty 来渲染模版,实现前后端分离。前端使用 Zepto 来完成交互逻辑,但是它的扩展性比较有限,难以实现对 HTML、CSS 代码的组件化管理,随着移动端的交互形式越来越复杂,原本的方案出现了局限性。 于是,组件化应运而生。组件化是把一些可复用的单元提取出来,通过对几个组件的管理,实现对整个搜索结果页样式的控制,提高开发的效率和横向团队整体升级的效率。 目前百度已经有了非常多的组件化解决方案,包括 Lavas 和 Reac t。可以具体到组件语法、基础框架以及同构区块。 如下图所示,组件语法包括四部分: Template:组件代理结构 浏览器端:组件前端逻辑 Style:前端样式 Config:同构逻辑 前三部分基本能够覆盖组件的常用语法

RPC

会有一股神秘感。 提交于 2020-03-11 21:35:06
rpc(Remote Procedure Call) 概念:rpc(远程过程调用)是一个通信协议,该协议允许运行于一台计算机的程序调用另一台计算机的程序。 角色: 消费方: 客户端(client) 负责发起服务的调用。 客户端存根(client stub) 负责与提供方通信: 1>存放着提供方的地址等信息。 2>将客户端的请求参数打包成网络消息,然后(通过socket)发送给提供方。 3>(通过socket)接收提供方返回的消息,并将消息解包然后将执行的结果返回给客户端。 提供方: 服务器(server) 服务提供者、执行者,将执行的结果返回给服务端存根。 服务端存根(server stub) (通过socket)接收消费方发送过来的消息,将消息解包,并调用服务器上的服务,最后将执行结果打包成消息(通过socket)发送给消费方。 RPC请求调用的流程: 请求:消费方 =======> 提供方 客户端 --> 客户端存根 --> 服务端存根 --> 服务器:执行请求。 响应:提供方 =======> 消费方 服务器 --> 服务端存根 --> 客户端存根 --> 客户端:得到请求的结果。 和http请求的对比: 性能: http协议传输的报文比较臃肿,rpc传输的报文相对较小,故rpc的传输效率更高一些。 rpc框架一般都支持多种高效的序列化机制

「网易官方」极客战记(codecombat)攻略-游戏开发1-行为驱动开发behavior-driven-development

落花浮王杯 提交于 2020-03-06 18:24:57
你可以使用行为属性来改变单位的 AI。 简介 单位的行为可以通过 behavior 属性来设置。 skeleton3.behavior = "Scampers" 这句代码会让 skeleton3 变量中存储的骷髅怪随机移动。 skeleton3.behavior = "AttacksNearest" 则是攻击最近的敌人。 skeleton3.behavior = "Defends" 则只在敌人接近时发起攻击。 skeleton3.behavior = "RunsAway" 会让单位从玩家周围逃开。 记得选取正确的变量,如 skeleton3 、 ogre2 、 ogre3 、 archer1 ! 默认代码 # 使用behavior属性为单位指定行为。 skeleton1 = game.spawnXY("skeleton", 60, 48) skeleton2 = game.spawnXY("skeleton", 60, 30) skeleton3 = game.spawnXY("skeleton", 60, 12) skeleton1.behavior = "Scampers" skeleton2.behavior = "Scampers" # 将"Scampers"指定给 skeleton3.behavior ogre1 = game.spawnXY("ogre", 70, 50

「网易官方」极客战记(codecombat)攻略-游戏开发1-他们骨头them-bones

梦想的初衷 提交于 2020-03-05 21:20:49
(点击图片进入关卡) Okar 生成器会随时间生成敌人。 简介 "generator" 是时不时生成敌人的生成器。 "生成器" 默认生成的是骷髅怪 `"skeleton",一种无论人类或食人魔都会攻击的强劲敌人! 不过 "骷髅怪"害怕发光石 "lightstone"。 玩家若是拿到 "发光石" ,骷髅怪就会远离玩家,这能为摧毁 "生成器" 争取到足够的时间。 默认代码 # 生成器会随时间生成敌人。 # 骷髅怪害怕发光石。 player = game.spawnPlayerXY("champion", 15, 35) player.attackDamage = 60 player.maxSpeed = 8 game.addSurviveGoal() game.addDefeatGoal() game.spawnXY("x-mark-stone", 60, 35) # 生成一个"生成器" # 生成一个"发光石" # 现在,通关你的游戏! 概览 生成器" 的属性是可以设置的。 generator = game.spawnXY("generator", 20, 20) generator.spawnType = "skeleton" generator.spawnDelay = 5 generator.spawnType 是一个字符串,表示要生成的敌人的类型。 generator

「网易官方」极客战记(codecombat)攻略-地牢-骷髅怪the-skeleton

泄露秘密 提交于 2020-02-26 12:24:41
一个巨大的骷髅怪!它的剑很钝,但很重。 默认代码 # 使用循环来打败骷髅怪! # 它的钝剑很难造成伤害,但却有很强的击退力。 概览 使用循环来打败骷髅怪! 你可以使用 findNearestEnemy 方法,把骷髅怪存到一个变量中,然后 attack (攻击)该变量。如果把这些放在循环中,你的英雄就会不停地攻击,直到骷髅怪被打败! 骷髅怪的剑很钝,所以几乎不会造成害伤。但是它尺寸巨大,力量很足,剑比你人都重。骷髅怪每次攻击你的时候,你都会被击飞到空中。 骷髅怪 解法 # 使用循环来打败骷髅怪! 它的钝剑很难造成伤害,但却有很强的击退力。 while True: enemy = hero.findNearestEnemy() hero.attack(enemy) 本攻略发于极客战记官方教学栏目,原文地址为: https://codecombat.163.com/news/jikezhanji-gulouguai 极客战记——学编程,用玩的! 来源: oschina 链接: https://my.oschina.net/u/4441837/blog/3167312

使用CSS自定义属性构建骨架屏

懵懂的女人 提交于 2019-12-27 09:28:10
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 写在前面 几天前看到薄荷前端团队分享的《 前端骨架屏方案小结 》,突然回想起一年前看到的max bock写的《 Building Skeleton Screens with CSS Custom Properties 》,翻译整理写下出此文,分享一下使用CSS自定义属性构建骨架屏的技巧,先看骨架屏demo效果吧 设计Web上的加载状态常常被忽略或被认为是事后考虑。性能不仅是前端开发人员的职责,构建与慢速连接一起工作的体验也是设计挑战。 虽然前端开发人员需要注意一些事情,比如压缩和缓存,但是设计人员必须考虑UI处于“加载”或“离线”状态时的外观和行为。 速度幻觉 随着我们对移动体验的期望发生变化,我们对性能的理解也在变化。我们期望网络应用程序感觉像本机应用程序一样快速响应,无论其当前的网络覆盖范围如何。 感知性能 是衡量用户感觉速度的尺度。这个想法是用户更有耐心,并且如果他们知道正在发生什么,并且在内容实际存在之前能够预测内容,那么他们会认为系统更快。这在很大程度上与管理期望和保持用户知情有关。 对于Web应用程序,这个概念可能包括显示文本,图像或其他内容元素的“模型” - 称为 骨架屏 💀。可以在网上可以看到,Facebook,Google,Slack等公司使用: (Facebook的骨架屏)

你需要了解的前端骨架屏注入实践

ε祈祈猫儿з 提交于 2019-12-27 09:17:59
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 相比于早些年前后端代码紧密耦合、后端工程师还得写前端代码的时代,如今已发展到前后端分离,这种开发方式大大提升了前后端项目的可维护性与开发效率,让前后端工程师关注于自己的主业。然而在带来便利的同时,也带来了一些弊端,比如首屏渲染时间(FCP)因为首屏需要请求更多内容,比原来多了更多HTTP的往返时间(RTT),这造成了白屏,如果白屏时间过长,用户体验会大打折扣,如果用户网速差,则FCP会更长。 由此引申出一系列的优化方法,骨架屏也因此被提出,本文就以 Vue 项目中的骨架屏为例,探讨一下骨架屏的优缺点和注入方式。 感兴趣的同学可以加一下微信群,一起讨论吧~ 1、FCP 优化 在 Google 提出的以用户为中心的四个页面性能衡量指标中,FP/FCP可能是开发者们最熟悉的了: 为了优化首屏渲染时间这个指标,减少白屏时间,前端仔们想了很多办法: 加速或减少HTTP请求损耗 :使用CDN加载公用库,使用强缓存和协商缓存,使用域名收敛,小图片使用Base64代替,使用Get请求代替Post请求,设置 Access-Control-Max-Age 减少预检请求,页面内跳转其他域名或请求其他域名的资源时使用浏览器prefetch预解析等; 延迟加载 :非重要的库、非首屏图片延迟加载,SPA的组件懒加载等; 减少请求内容的体积

Ogre的骨骼动画

对着背影说爱祢 提交于 2019-12-16 19:22:48
Ogre 骨骼信息和动画信息保存到后缀名为 .skeleton 的文件中,你可以通过 OGRE 提供的导出插件工具( Milkshape 和 3Dmax 的 exporter )来导出该类型的文件。当你创建基于 .Mesh 文件的 Entity 时, .Skeleton 文件将会自动被系统加载进来。为了操作方便, Entity 自动给每一个动作指定一个 AnimationState 类(请参考基本动画)的对象,你可以通过 Entity::getAnimationState 函数来得到具体的动作。 该实例创建基于 robot.mesh 文件的实体( Entity )对象,指定其“走”动作(动作信息都在 .skeleton 文件里),并将其显示到屏幕上。 robot.mesh 文件中保存机器人的网格信息, Entity 会自动加载保存有机器人骨骼信息的 robot.skeleton 文件。 就像上一章的一样,我们把要学习的代码放入一个过程里面,代码如下: 我们同样把过程CreateSkeletonAnimation放到了createScene里面执行。 void CreateSkeletonAnimation() ... { // 设置关键帧之间的插值方法为样条插值 Animation::setDefaultInterpolationMode(Animation::IM_SPLINE)

分布式消息通信框架RMI原理分析

对着背影说爱祢 提交于 2019-12-07 17:31:22
什么是RPC RPC(Remote Procedure Call,远程过程调用) 一般用来 实现部署在不同机器上 的 系统之间 的 方法调用 , 使得程序能够像访问本地系统资源一样,通过网络传输去访问远端系统资源;(!!!) 对于客户端来说, 传输层使用什么协议,序列化、反序列化都是透明的 了解 Java RMI RMI 全称是remote method invocation – 远程方法调用, 一种用于远程过程调用的 应用程序编程接口 ,是 纯java 的网络分布式应用系统的核心解决方案之一。 RMI 目前使用Java 远程消息交换协议JRMP(Java Remote Messageing Protocol) 进行通信, 由于JRMP 是专为Java对象制定的,是分布式应用系统的百分之百纯java 解决方案, 用Java RMI 开发的应用系统可以部署在任何支持JRE的平台上 Java RMI 代码实践 远程对象必须实现UnicastRemoteObject 这样才能保证 客户端访问获得远程对象 时,该 远程对象 会 把自身的一个拷贝 以 Socket 形式传输给客户端 客户端获得的拷贝称为“stub” , 而服务器端本身已经存在的远程对象成为“skeleton”, 此时客户端的stub 是客户端的一个代理,用于与服务器端进行通信 而skeleton 是服务端的一个代理