研发周报:神奇!1KB JavaScript代码编写的3D蜜蜂

2023-10-27 15:10

本文主要是介绍研发周报:神奇!1KB JavaScript代码编写的3D蜜蜂,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要:忙碌的一周总算过去,闲暇时不妨来细细品味我们精心为你呈现的这份技术大餐。本期热点:神奇!1KB JavaScript代码编写的3D蜜蜂;魔兽之父专访:今年游戏产业会出现一场革命;回顾:那些被平台方封杀的第三方应用。

我们挑选了本周研发频道的精华文章,推荐给您的绝对“有料”,闲暇时不妨来细细品味我们精心为你呈现的这份技术大餐,或许有您意想不到的收获。本期热点:神奇!1KB JavaScript代码编写的3D蜜蜂;魔兽之父专访:今年游戏产业会出现一场革命;回顾:那些被平台方封杀的第三方应用。

本期热点回放:

1.神奇!1KB JavaScript代码编写的3D蜜蜂

相信很多网友都还记得去年CSDN报道过同样是1KB JavaScript代码所编写的 3D玫瑰,或者2010年的 3D圣诞树。细心的网友可能注意到了,这两个神奇的作品都是以为西班牙开发者 Román Cortés在JS1K大赛上的投稿作品,今年他又带来了同样神奇的3D蜜蜂——长着触角、系着领带。

 

左、右分别是做过动作模糊化处理前、后的样子

由于 JS1K规则限制,该作品仅支持Firefox 18、Chrome 24以及Opera 12、13。如果你已安装以上浏览器,可以选择观看 线上演示。

该作品的实现使用到了很多算法和渲染技术,作者在自己的 博客上详细地 解释了其技术原理。源代码如下(经过压缩):

1
_= "G=[V,j=WV,-j]];jX=83,(+3+KD37Uji&32?70:,-80Y2]b=a[j]=c.cloneNode(LEb.getContext('2d'bAb;x=8# 8-x,6+x(j<17X7;<xeH@x*@x*y,.07$OsetIntervalcLE5;a e#73D-=7$7<ZaH0#-i$Q,-8Oj++;ZE8Q/((i+)%3095W0-e*5,6-e#*5#OG.sortreturn -eV]}OG.map=L^)/-[,=+]V];y=^X^)(X/6)+;x=0Y8Q;~~F2]W-@x-~F4]/1*^5+/F3]-@yL;!F2]&&Z_beginPath(_moJa(_bezierCurJ))})},j=4OjLj?cA1Q:9Q;z=x=*yZj|(z+1)%.5<.1&&(z*(191+(E527368,xB9+Ui3*e,(59525-y*(5188+(+(280*,yB8-(j&2]j||abs(E8-i%)<54-D&&YD2e4#+e*/|[1$4$,,$,8$][~~(D48+e/3)W90+D8,i])cos(>>j*4&15)sin(i(function(b#){F0])*--;)F1] StylE'hsla('+[for(`,j+y,Math.iG.push([),_drawImage(a[270+'%',.fill(j&15K(y=))/8`/2,y501660j/.height=1]+')',i(.5+.5#,e$,1@30+A.width=B*(10*Di/Ee=Fb[HRect(JveTo(Yi*Li=O);Qe3UPI*V[0W],X+Y-KZi^_a.`+x+" ; for (Y=0;$= "`_^ZYXWVUQOLKJHFEDBA@$#    " [Y++];) with (_.split($))_=join(pop());eval(_)
相关作品:

  • 情人节的3D玫瑰
  • 圣诞节的3D圣诞树

更新:

  1. 之前的版本在最新版Chrome和Firefox Nightly中存在无法显示翅膀的bug,已修复,线上演示地址并没有改变。
  2. 有网友提到另一个JS1K作品——Strange crystals(无尽的隧道)也非常神奇,3D蜜蜂的作者Román Cortés已将两者合而为一,并且仍然小于1KB。
  3. 应网友要求,笔者已将“3D蜜蜂”源代码以及“隧道里的3D蜜蜂”源代码打包上传,可以点击这里下载。

2.魔兽之父专访:今年游戏产业会出现一场革命

通过一次偶然的机会,krisviceral.com博主对魔兽之父Patrick Wyatt(Pat)进行了专访。在采访中Pat表示,相比与Warcraft和StarCraft,他更为Guild War感到骄傲,因为这款游戏的开发并没有像前两者那样拼命加班,而且也成功地锻炼了很多新人开发者。 

Patrick Wyatt(Pat)曾任Blizzard开发&搜索副总裁,参与过Warcraft、StarCraft、Diablo、battle.net、Guild Wars等产品的开发,CSDN之前也对他所写的Warcraft、StarCraft开发历程相关博文进行了 编译、报道。本文译自krisviceral.com博主Kviceral对Pat的专访,Pat对游戏、AI、软件开发等方面都发表了自己的观点。 

 

魔兽之父Patrick Wyatt 

你曾参与过很多广受好评的游戏开发工作,其中最令你骄傲的是哪款?

Pat:这是一个很难回答的问题,因为每个游戏都倾注了我的心血。真的要算起来应该是Guild War,这是我们以小团队努力的成功。

我们从Blizzard离职后创立了一个新公司(ArenaNet),从零开始打造出了这款极具创新的游戏,甚至没有拼命地去加班工作,但是最终我们成功了。

在ArenaNet,我们招聘了很多刚毕业的学生,所以他们中很多人并不知道Guild War的开发流程与“传统”游戏开发有多少不同,但我很高兴他们没有和行业中大多数人一样常年crunching。

Guild War刚开发出来时,我们是唯一一个放弃订阅模式(通过支付每月的订阅费无限玩游戏)的商业MMORPG(大型多人在线角色扮演游戏),你在购买了这款游戏之后就可以无限制地玩。

在过去2-3年里,你最喜欢的游戏是什么?

Pat:我很享受DayZ这款僵尸题材的生存游戏,我也很惊讶自己竟会喜欢这款游戏,在地面上匍匐前进10分钟听起来可没什么意思,但是这款游戏的背景会让你为此着迷!我偶尔也玩League of Legends,同样很喜欢Kindom Rush(iPhone/iPad)这款深受Warcraft和StarCraft影响的塔防游戏,我和我的孩子都很爱玩。最近我还发现了AirMech,都是不错的游戏。

你认为过去5年里游戏界最大的创新是什么?

毫无疑问是“免费游戏”这种商业模式在西方市场的巨大成功——它改变了游戏的开发方式。设计师需要更致力于创造迷人的体验,以保持对用户的长期粘性;但负面的影响在于,有的设计师把他们的创造力用在了让用户沉迷于游戏或者是其它“黑暗技巧”,而非增加游戏的趣味性。 我希望使用“心理操纵”等“黑暗技巧”的游戏会越来越少。

另外一处在于移动游戏。创造有趣但是低成本的游戏非常值得赞赏!最近,我发现自己玩移动游戏的时间要远高于PC/主机游戏。相信随着游戏设计师更精于利用移动设备小屏幕的优势,能为我们带来更多优秀的作品。 >>查看原文

3.回顾:那些被平台方封杀的第三方应用

一款应用从萌芽状态到最后真正的上线,期间要经历种种磨难,好不容易推出了,然而还要遭到平台方的百般刁难。倘若你的应用不符合平台方的开发者协议,那么将会遭到封杀。那么之前所做的努力岂不功亏一篑?本文例举了部分被平台方封杀应用的典型案例,仅供参考。 

NO.1 Adblock浏览器插件遭谷歌封杀

事件回放:2013年3月,谷歌把一款非常流行的应用Adblock Plus从它的应用商店Google Play里删除了,遭此毒手的还有其它几个跟屏蔽广告相关的应用。

官方理由:Adblock应用违反了“开发者部署协议”里 4.4 节的内容:“使用未经批准的方式妨碍用户对其它服务或产品的访问”。

开发者申诉:Adblock Plus的创始人Till Faida称:“我们知道广告收入对谷歌来说十分重要,但Adblock Plus并不是自动屏蔽所有的广告;而是让用户自由选择屏蔽还是不屏蔽”。

评论:谷歌是通告广告挣钱的,而Adblock Plus插件可屏蔽广告。坦率地说,谷歌拖到现在才对这样的应用下手才是让人意外的地方。

  • NO.2 Vintage Camera遭到Facebook扼杀
  • NO.3  第三方图片托管服务Twitpic、yfrog遭Twitter删除 
  • NO.4  第三方支付遭Google Play封杀
  • NO.5  Dropbox SDK应用被苹果下架
  • NO.6  Fawave、微博通等新浪微博第三方应用遭封杀
  • NO.7  Emoti for Facebook被Facebook莫名删除 

如同一位网友所说:没有真正的开放,也没有真正的公平竞争。平台方永远拥有一票否决权。那么,开发者如何才能在举步维艰中继续前行,绝处逢生呢?怎样才能避免遭到平台方的“不待见”呢?

笔者认为,平台方与开发者发生“摩擦”无非是侵权或是分红不均导致的。究竟该如何画这条“红线”,淘宝VP王文彬的回答很有代表性,此前他在接受 CSDN记者专访谈到如何看待平台方跟开发者逐利的问题表示:定义哪些是官方基础工具,哪些是第三方工具,很难画出一条明显的界限,会有一些模糊地带。有一点需要强调,淘宝不会为了跟开发者争夺利润去铲除第三方应用。淘宝更关心的是平台上用户数据的安全性和隐私能否得到保障,用户体验能否提高,淘宝希望看到平台上的第三方厂商做大做强。

4.飞信正面迎战微信,用户能否买账?

一份意外泄露的中移动内部PPT不仅搅皱了通信和互联网行业的一池春水,也搅乱了相关公司的心。中国移动欲重构飞信正面迎接微信,发改委称要对微信进行收费,那么用户能买账吗?

飞信是中国移动于2007年5月推出的一款综合通信服务,即融合语音(IVR)、GPRS、短信等多种通信方式,覆盖三种不同形态(完全实时的语音服务、准实时的文字和小数据量通信服务、非实时的通信服务)的客户通信需求,实现互联网和移动网间的无缝通信服务。

微信是腾讯公司于2011年1月21日推出的一款通过网络快速发送语音短信、视频、图片和文字,支持多人群聊的手机聊天软件。用户可以通过微信与好友进行形式上更加丰富的类似于短信、彩信等方式的联系。微信软件本身完全免费,使用任何功能都不会收取费用,微信时产生的上网流量费由网络运营商收取。微信是一种更快速的即时通讯工具,与传统的短信沟通方式相比,更灵活、智能,且节省资费。

2007年中国移动推出的聊天工具,至今已有6年光景的飞信软件,因与短信业务连通而广受关注,但目前处境并不乐观。据统计,如今飞信的用户量还不到腾讯QQ的五分之一,月均使用时间不足后者的四十五分之一。更让飞信感到恐惧的是,在2012中国互联网大会上,腾讯CEO马化腾在微博中宣布,微信用户人数已高达2亿,截至2013年01月注册用户量已经突破3亿。这个诞生仅2年多的手机聊天软件,发展如此迅猛,使业内人士颇为震惊。

微信因其操作简便,能广交好友,成为年轻人的交友工具。最初微信以文字通讯、手机图片分享为卖点,在后期开发过程中以发现“查看附近的人”和“摇一摇”功能更受用户欢迎。微信日新增用户以数十万数量级增长,确立了它在移动APP市场的绝对优势地位。

5.Web框架排行榜 Netty、Servlet和Vert.x位列前三

一个框架对网站性能会产生多大影响呢?答案或许会让你大吃一惊。本文数据由自称CTO外包公司的TechEmpower测试所得: 

框架排行榜: 

 

令人惊讶地是,排在前三的是Netty、Vert.x和Java Servelet。那么它们比Ruby、Django到底快多少呢?一开始我们猜测可能会4倍差异,但在Vert.x和Ruby on Rails之间竟相差40倍,真让人瞠目结舌。

在此次测试中,我们根据精确的文档和社区意见进行配置和部署,尽可能按照真实的生产运行环境来配置和部署。关于每个框架的测试环境是如何搭建和测试的,我们都进行了详细的描述,大家可以 点击查看每个框架的测试详情。

开源系列:

6.腾讯开源基于HTML5技术的专业级图像处理引擎 AlloyImage

腾讯Web前端 AlloyTeam又推出了最新的开源项目,一个基于HTML5技术的专业级图像处理引擎——AlloyImage(简称AI)以及一个在线Web图像处理平台—— AlloyPhoto(简称AP)。这预示着腾讯的Web前端团队将在底层基础技术层面做深入研究,并将更多的为业界提供基础技术服务,同时也将与HTML5梦工场一起推动HTML5技术在业界的广泛深入的应用。

AlloyImage是一个使用Javascript语言开发的,基于Web的在线图像处理引擎,除了核心底层图像处理引擎,还同时集成了一些方便快捷的图像处理API,您可以将它简单快捷的引用到您的Web网页中,做出与PhotoShop一样的优美效果。甚至,你可以用AlloyImage来开发一个Web在线图像处理软件,如:Web版的PhotoShop—— AlloyPhoto。

 

AlloyPhoto简约版主界面

AlloyImage主要使用HTML5的canvas技术,并在多图层(layer)处理方面做了创新性的尝试,不仅如此,在技术实现层面,其架构方便扩展,使用者可以很容易写出现一个AlloyImage的滤镜插件,很多API支持重载,参数传递灵活。

目前,AlloyPhoto有 简约版和 专业版两个版本,其 源码托管在GitHub上。后续AlloyImage将会持续更新,将更多的处理效果与工具加入到其中,并且会在性能方面做出一些优化与尝试,AlloyImage将力求做一个开放、开源的强大的JS图像库。

7.Polycode:免费、开源的跨平台(游戏和APP)开发工具

Polycode是一款免费、开源的跨平台游戏和APP开发工具,遵循MIT协议,其核心采用C++编写,支持Mac OS、Windows、Linux,即将支持iOS和Android。 

开发者可以把Ploycode当做C++库,也可以在其IDE里编写Lua脚本。Ploycode API的设计理念是“用更少的代码做更多的工作”。它使用scenegraph管理系统执行渲染和更新操作,也可以自定义渲染和更新。

在IDE里编写的代码可以直接发布到所支持的平台上,如果只是编写Lua脚本,那么IDE会自动创建“ployapp”应用程序格式,其中包含了所有的代码和资源,并且把它们封装到一个特定平台层上。

在GitHub上托管地址: https://github.com/ivansafrin/Polycode

此外,类似的C++跨平台开源游戏引擎和开发工具有: Moai:其主要面向PC、手机、及基于云端的游戏开发; Cocos2d-x:跨平台的开源移动2D游戏框架,易学易用; Cinder、 Unity3D以及GarageGames开源的Torque 3D游戏引擎。

8.Linux容器运行时Docker开源

Docker是一个云计算平台,它利用Linux的LXC、AUFU、Go语言、cgroup实现了资源的独立,可以很轻松的实现文件、资源、网络等隔离,其最终的目标是实现类似PaaS平台的应用隔离。


值得关注的特性:

  • 文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
  • 资源隔离:系统资源,像CPU和内存等可以分配到不同的容器中,使用cgroup。
  • 网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和IP地址。
  • 日志:收集和记录标准流(stdout/stderr/stdin)里的每个进程容器,用于实时和批量检索。
  • 变更管理:被修改的容器文件系统会被提交到一个新的image,留着重用来创造更多的容器,无需模板或手动配置。
  • 交互式shell
前往官网查看更多详细介绍: http://docker.io/

源码托管地址:https://github.com/dotcloud/docker/

往期回顾:

研发周报:王淮给技术创业团队的十点建议


    这篇关于研发周报:神奇!1KB JavaScript代码编写的3D蜜蜂的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



    http://www.chinasem.cn/article/286493

    相关文章

    JVM 的类初始化机制

    前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

    Spring Security 基于表达式的权限控制

    前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

    浅析Spring Security认证过程

    类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

    Spring Security--Architecture Overview

    1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

    Spring Security基于数据库验证流程详解

    Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

    Spring Security 从入门到进阶系列教程

    Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

    Java架构师知识体认识

    源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

    大模型研发全揭秘:客服工单数据标注的完整攻略

    在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

    无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

    墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

    Java进阶13讲__第12讲_1/2

    多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory