使用 Kitten 编程猫绘制一个魔方
绘制出的魔方效果如下图所示: 在水平方向和 Y 方向绘制的立方体序列集合,我们前文已经叙述过了,本文主要讨论 Z 方向也就是俯视方向的立方体集合如何绘制。 笔者采用的是 Z 方向驱动的绘制方法。如果要绘制一个 3 × 3 × 3 的魔方,在绘制了底面 3 × 3 的9个小立方体之后,接下来绘制 Z 方向第二排立方体,从左到右绘制,即下图黄色箭头所示的水平排。 然后绘制第三排最面向我们
使用 Kitten 编程猫绘制一个 Y 方向平铺的立方体集合
效果如下图所示:我们实际上使用了 2D 来模拟 3D 效果。 应用程序启动时,默认只绘制一个立方体,因此我们在初始绘制的函数里,只执行动态绘制 X 方向的立方体这一个逻辑。因为默认 X 方向的立方体只有1个,所以只会绘制一个立方体。 每次动态绘制 X 方向的立方体,都会首先计算 X 方向立方体初始定点的 X 和 Y 坐标。之所以每次绘制前都会重新计算,是因为我们的应用允许用户动态添加新
关于 Fiori 应用里 SAP UI5 前端开发和 SEGW 后台 OData 服务开发的工作量比值问题
我的知识星球有朋友向我提问: Jerry您好!请问一个中等复杂度的 Fiori UI5 应用,前端代码用 freestyle 方式纯自己写,后端用 SEGW 开发 Odata 服务,前后端的工作量的比值大概是多少?需考虑调试测试的时间。 关于这个问题,首先我们得界定,什么算是一个中等复杂度的 Fiori 应用? 从前台视角来看,复杂度是按照代码量来计算,还是按照需要实现的 UI 界面
Kitten 动态绘制 Y 轴方向立方体的实现方法
我们之前的实践里,已经探讨了在水平方向动态绘制立方体的积木搭建方法,如下图所示: 接下来我们期望在 Y 轴方向也绘制立方体,如下图所示。 其实只需要在水平方向依次绘制两列立方体就可以了。这两列立方体的初始顶点,我已经用黑色高亮了。 首先我有一个绘制立方体的函数,这个函数里绘制两个正方形,分别是正方体面对我们那个面和背对我们的面,然后绘制四个斜面。 这个函数的调用前提,是 x
如何在 Kitten 里绘制两个相邻的正方体并响应用户输入事件
效果: 按键盘的上下箭头,可以对正方体的棱长进行缩放。 按键盘的左右箭头,可以对最上面的面的倾斜角度进行调整。 按住键盘1,2,可以对正方体的斜边长度进行调整。 实现原理变量水平方向偏移量,用于定义第一个正方体绘制完毕后,绘制第二个正方体的画笔起点的 x 坐标。这里的 y 坐标硬编码为 0. 这个偏移量的值永远等于立方体的棱长。 在绘制两个正方体的函数里,分别从(0,0
Spartacus Storefront 的 wishlist 设计
Storefront 的客户可以从产品详细信息页面将产品添加到愿望清单。 如果未登录,“添加到愿望清单”选项将指示需要先登录才能将产品添加到愿望清单。 将项目添加到愿望清单后,可以通过 My Account 菜单中的 Wish List 选项查看愿望清单的内容。 愿望清单功能由 AddToWishListComponent 和 WishListService 组件组成。 这两个组件都是 C
在 Node.js 里使用 multiparty 上传文件
需求将上传的文件直接保存到 Google Cloud Storage 中。 解决方法:我们需要使用 part stream 订阅标准流事件,例如 data 和 end 以接收文件数据。 示例代码如下: part.on("data", chunk => { writeStream.write(chunk); }); part.on("end
PWA 应用和原生应用的一些区别
早在 2015 年,谷歌就启动了 PWA(又名渐进式网络应用程序,progressive web apps)概念。PWA 专注于在移动网络上做出改变和打造用户体验。 这种类型的 Web 应用程序提供了具有大量网络功能的类似原生应用程序的体验。 处理请求的现代 API 和 Service Worker 是 PWA 的核心。 渐进式 Web 应用程序的一些特点如下: 能够以受限方式访问
Angular 应用里 index.html 的作用
index.html 位于应用程序的 src 文件夹中。 编译器在此文件的末尾动态添加所有 javascript 文件。 由于现在所有组件都是已知的,因此 html 文件调用根组件即 app-root。 根组件在 app.components.ts 中定义,它以 app.component.html 为目标。 这是 index.html 文件在 Visual Studio Code 环境中
关于 Angular 应用的入口
ANGULAR.JSON 是包含 Angular 项目的各种属性和配置的文件。这是构建器首先引用的文件,用于查找所有路径和配置并检查哪个是主文件。下面是一个 hello-world 应用程序的 angular.json 文件,在 build 部分下,可以看到如下选项对象: "options":{ "outputPath":"dist
关于服务器端渲染的 Web 应用的 504 错误问题
除非客户在 SSR 中添加了用于显式发送 504 的自定义逻辑,否则 504 不会来自 SSR。 在默认的 Spartacus/SSR 中,没有显式发送 504 的逻辑。 默认情况下它只发送 200 或 500(仅在 APP_INITIALIZER 失败的情况下)。 我们在浏览器里看到的这个 504 错误: An error occurred. Sorry, the page y
堆叠体体积求值的范围问题:已知堆叠体三视图,求该堆叠体体积的最大值和最小值
题目:求这个堆叠体的体积最大值和最小值。 理论依据仍然是使用俯视图标注法,即笔者这篇文章介绍的详细步骤: https://zhuanlan.zhihu.com/p/602290167 注:能够正确反映物体长、宽、高尺寸的正投影工程图(主视图,俯视图,左视图三个基本视图)为三视图,这是工程界一种对物体几何形状约定俗成的抽象表达方式。 之所以有最大值和最小值,说明俯视图有些位置的立方体个数
SAP 官方的在线课程网站:Open SAP
我从 2007年大学毕业加入 SAP 成都研究院,在这个行业工作已经16年了。我第一次听说 SAP 这个公司的名称,还是 SAP 到大学开校园宣讲会的时候,所以我也是零基础 SAP 入门。 我从一个 SAP 菜鸟开始的成长史,可以参考这篇文章: 一个 SAP 开发工程师的成长史 个人的感受是,如果英语的阅读能力尚可,那么最权威的 SAP 相关资源,当然就是 SAP 官方的帮助文档,https
已知堆叠体的三视图,求堆叠体体积:俯视图标注法的使用
题目 求解过程首先我们选择在俯视图上标注,因为堆叠体在垂直方向不可能出现两个立方体不接触(悬空的)状况。而左视图和主视图都可能出现两个立方体不接触的情况。 我们首先在主视图里,将每一列的最大高度标注出来: 将此最大高度拷贝到俯视图去: 同理,将左视图的最大高度也标注出来,拷贝到俯视图去: 将红色的 1 作为突破口,从1开始标。 左视图的数据(红色)标在列当中,主视图的数据(
ABAP 数据库表 Size Category 字段的准确含义
有朋友在我这篇教程文章里留言: 14. 如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (上) 这位朋友的问题是想咨询 ABAP 数据库表 Technical Settings 里这个 Size Category,如果开发人员当时设置了一个比较小的值,比如选择的 0, 对应的记录数是 0 到 1000. 那么随着应用的持续运行,一旦存储到这张数据库表的记录数超过了 1
SAP OData 开发实战教程:从入门到提高
@TOC 本教程根据笔者在 SAP 研究院工作多年的实战经验,计划通过 300 篇以上的文章篇幅,深入介绍 SAP 三大主流的 OData 开发技术: SEGW(Gateway Service Builder) RAP - Restful ABAP Programming 模型 CAP - Cloud Application Programming 模型 希望这套教程对使用 AB
ABAP 创建数据类型的三种方式,各自的使用场合和优缺点辨析试读版
本教程之前的步骤,介绍了 ABAP 数据字典即 SE11 这个事务码里能够创建三种不同的数据类型: Data ElementStructureTable Type 以及这三种数据类型各自的使用场合: 84. ABAP 数据字典里数据元素(Data Element),结构(Structure)和表类型(Table Type)三者的使用辨析 想必大家在学习上一篇教程的时候,已经注意到了
ABAP 数据字典里数据元素(Data Element),结构和表类型三者的使用辨析试读版
我们在 ABAP 数据字典的事务码 SE11 里面创建数据类型(Data type)时: 可以选择创建的类型是数据元素,结构还是表类型,这三者如下图所示依次从上到下排列。 本文详细介绍这三种数据类型的联系和使用辨析。 简而言之,Data Element 是点,Structure 是线,而 Table Type 则是面。为何笔者这么说?听我细细道来。 ABAP Data elemen
SAP UI5 应用如何加载自定义 Theme
要加载外部自定义主题,开发人员可以通过在页面中静态声明或使用 Core.setThemeRoot() 方法来设置此主题。 这非常类似于对位于不同位置的 SAP UI5 库使用 registerModulePath()。 下面是具体的操作步骤: (1) 使用下面的代码告诉 SAP UI5 框架,我们自定义 theme 的地址。 sap.ui.getCore().setThemeRoot(&
SAP UI5 应用的标准 Theme 和自定义 Theme 的加载讨论
SAP UI5 应用的初始主题可以硬编码在应用程序中(在加载 SAPUI5 的引导程序的脚本标签中)或在加载 SAPUI5 之前定义的 JS 配置对象中,例如下面的例子: <script id="sap-ui-bootstrap" type="text/javascript" src="resources/sap-ui