1.《魔兽》删减40分钟 琼斯曾给大卫·鲍伊看粗剪版
2.如何在stm32单片机上移植u8g2图形库?无删
3.ProGuard什么是压缩
4.Loader源码分析-Vue Loader v15
《魔兽》删减40分钟 琼斯曾给大卫·鲍伊看粗剪版
还有两周,《魔兽》就将登陆北美院线(中国内地的减源上映时间早于美国),目前影片已经在海外部分国家上映,码源码虽然口碑较受争议,全下但这部改编自经典游戏的无删作品依然是影迷与粉丝们关注的焦点。
近日,减源erp接口源码导演邓肯 琼斯在接受采访时透露他自己的码源码剪辑版时长为 2 个小时 分钟,但将近 3 小时的全下片长很可能会让观众觉得疲乏,为了向市场妥协,无删琼斯又删减了 分钟。减源
作为一代传奇大卫 鲍伊的码源码儿子,邓肯 琼斯同样很有才华,全下他曾导演《月球》和《源代码》,无删两部影片中充满奇思妙想,减源情节设置也很精巧。码源码不过相较于这两部作品来说,近期异动源码《魔兽》的期待值显然不同以往,而琼斯也希望从家人那里寻求支持。
"我给他看了粗剪版的**,还有一些特效镜头。对于其他人来说他是大卫 鲍伊,但对我来说,他是最亲近的爸爸。我爸对我在做的事情一直都很感兴趣,他看到之后非常兴奋,也为我感到开心。"虽然大卫 鲍伊已经离世,但依然能感受到父子亲情的温馨。
目前还难以从《魔兽》的早期反馈中预测之后的市场表现,影片在中国国内也可能会引爆票房,即便表现不尽如人意,hsv变换 源码也有可能拍摄续集,毕竟《魔兽》系列在全球拥有庞大的粉丝群。《魔兽》将于 6 月 8 日在中国内地上映,6 月 日在美国亮相。
如何在stm单片机上移植u8g2图形库?
U8g2是适用于嵌入式设备的单色图形库,支持单色OLED和LCD,涵盖多种OLED驱动,如SSD。在STM单片机上移植U8g2时,首先需下载其源码,关注csrc文件夹下的C源码部分。U8g2兼容多种屏幕显示驱动,源码内包含对应文件,移植时可删减无用文件以减小工程代码体积。
移植过程中的PDF控件源码主要修改包括精简u8g2_d_setup.c和u8g2_d_memory.c文件。针对OLED屏幕的IIC接口,需要初始化GPIO。还需编写u8x8_gpio_and_delay和u8g2Init函数。移植详情和示例可参考演示视频评论区的图文教程。
ProGuard什么是压缩
Java源代码(.java文件)在经过编译后,会生成字节码(.class文件)。这个字节码相较于原始的Java源文件更为简洁,但其中仍然包含大量的冗余代码,特别是在构建程序库时。为了解决这一问题,我们需要对字节码进行压缩和优化,以确保程序的高效运行和资源节约。ProGuard是一款专门用于字节码压缩和优化的工具。
ProGuard通过分析字节码,能够识别并移除那些对于程序功能和行为而言无用的Qnx os 源码类、字段以及方法。这一过程旨在保留程序的核心功能,同时删除任何非必要的元素,如内部类、非引用的静态常量、空方法等。通过这样的优化,不仅减小了程序的大小,而且也提高了其运行效率。
在进行压缩的过程中,ProGuard会确保程序的逻辑等价性得到维持。这意味着,尽管进行了大量的代码删减,程序的功能和行为依然保持不变。这其中包括对异常堆栈跟踪信息的保留,以确保程序在遇到异常时能正确地进行错误处理和调试。
使用ProGuard进行字节码压缩的过程不仅能够显著减小程序的体积,还能够提高程序的运行速度,减少加载时间和内存占用。这对于构建高效、轻量级的Java程序库尤为重要。通过ProGuard的优化,开发者能够确保他们的程序在不同环境和设备上都能以最佳状态运行,同时充分利用有限的资源。
Loader源码分析-Vue Loader v
vue-loader 是什么
简单来说,vue-loader 的作用是将 .Vue 文件编译成 .js 文件,这样就可以在浏览器中运行,同时也可以在 node 环境中使用 vue-server-render 进行运行。
vue-loader 的改动
相较于之前的版本,vue-loader 进行了许多重要的改动,具体细节可以参考官方的迁移指南。
vue-loader 的编译过程
vue-loader 的处理流程可以大致分为以下几个部分:
vue-loader 入口函数
vue-loader 的入口代码并不多,我将入口函数的流程绘制了一个简单的 UML 图,通过这个图可以快速对流程有一个初步的了解。
vue-loader 入口函数主要做了以下几件事:
通过上面的 UML 图可以看出,.vue 文件初次编译时会走生成 code 的流程,那么生成的 code 究竟是什么呢?
通过调试 vue-loader,将 code 打印出来,仔细观察图中红色框中的部分。
可以发现在几句 import 中,都是从 source.vue 获取对象,并且路径上携带了参数,这些参数就是 resourceQuery,type 有三种不同类型,分别是 template | script | styles。
这些 import 会继续触发新一轮的 vue-loader 执行,于是接下来就到了途中 resourceQuery 有 type 的情况。
下面是进行了适当删减后的源码,保留了上述涉及到的代码,对代码本身感兴趣的可以浏览。
parse .vue 组件解析
parse 方法内部处理了 vue SFC 文件,前面提到过,编译的方法默认是通过 vue-template-compiler 处理。
主要是通过 compiler.parseComponent 函数对 .vue 文件进行编译。
那么 vue-template-compiler 究竟是什么呢?
在了解 vue-template-compiler 之前,我对 vue 的编译过程有些了解,既然它们都是处理 vue SFC 文件,那么它们会不会是同一份代码呢?抱着疑问的态度,我们先看看 vue-template-compiler 的 readme.md。
This package is auto-generated. For pull requests please see src/platforms/web/entry-compiler.js.
在 readme.md 中可以看到官方对它的说明,实际上 vue-template-compiler 是一份自动生成的代码,它本质就是 vue 中的 sfc/parse。
但今天的主角并不是 vue-template-compiler,也不是 sfc/parse,我会在后面的篇章中对 vue build 的过程做一个详细的解读。
parse 流程 vue-loader 推导策略
在 vue-loader 入口函数分析中已经可以了解到,入口函数最终会生成一个 code,这个 code 包含了几个 import 语句,import 语句都含有 vue 标识并且标明了不同的分块类型。
这些 import 语句会被 VueLoaderPlugin 捕捉并做推导策略处理。
VueLoaderPlugin
老规矩,先来看 VueLoaderPlugin 的代码。
代码删减后及其简单,就一件事:注入 pitcher-loader,用于处理 vue 分块 loader 推导。
pitcher-loader
VueLoaderPlugin 的主要作用就是注入 pitcher-loader,由此可知,实际处理推导过程的是 pitcher-loader,VueLoaderPlugin 只不过是一个 loader 的注入器。
那么 pitcher-loader 是怎么做 loader 推导的呢?
前面提到入口函数生成的 code,code 中包含 import 语句。
这些 import 语句会触发 pitcher-loader,pitcher 根据 resourceQuery 来区分不同块,并生成不同的 loader request。
loader 推导流程总结
把上述过程汇聚成一张 UML 图,通过这张图可以对整个流程有一个清晰的认识。
vue-loader 的整体过程可以划分为以下几个部分: