自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(227)
  • 资源 (7)
  • 论坛 (6)
  • 收藏
  • 关注

原创 一个SAP开发人员的2019年终总结

青春少年是样样红可是太匆匆流金岁月人去楼空人生渺渺在其中荣华富贵呀飞呀飞世上的人呀追呀追荣华富贵呀飞呀飞何时放下歇一歇能不能愿昼吉祥夜吉祥愿用家财万贯买个太阳不下山小的时候,听过黄安这首《样样红》,觉得是首口水歌曲。如今Jerry也到了上有老,下有小的年纪,即将年满四十,觉得歌词每一行都是金句,耐人寻味。我们每一位油腻的SAP中年从业者都曾经青春年少过,谁的青春岁月,没有意气...

2020-09-05 17:50:16 1838 1

原创 SAP Spartacus 中,Angular <ng-container>使用的一个例子

Angular官网里对ng-container的介绍:The Angular is a grouping element that doesn’t interfere with styles or layout because Angular doesn’t put it in the DOM.不会出现在最后渲染出的页面里,只是一个包裹其他element的容器。一个例子:最后生成的html:上图红色区域里的内容实际上是两个ng-container里定义的template被展开后得到的内容

2020-09-30 16:13:38 521

原创 Angular单元测试里pipe的mock设计

我想对下列这个Component的UI进行单元测试。其中有一个自定义的cxUrl pipe,在单元测试时,我需要对其进行Mock:解决方法,在单元测试的实现代码里,创建一个用@Pipe修饰过的MockUrlPipe,在其transform方法里什么都不做即可:运行时的截图:refreshView里执行视图的template函数:templateFn:准备展开routerLink:/** * Invokes a pipe with 1 arguments. * * This ins

2020-09-30 13:52:42 575

原创 Angular async pipe在Component html模板中的一个实际应用

看个例子:<cx-carousel [items]="items$ | async" [title]="title$ | async" [template]="carouselItem" itemWidth="285px"></cx-carousel>title$是消费cx-carousel的Component传入的Observable对象:title的数据源,componentData的数据源,componentData的数据源,componentD

2020-09-30 12:30:47 551

原创 Angular Component 开发时属性和运行时属性的对照

看个具体的例子:@Component({ selector: 'cx-carousel', template: ` <ng-container *ngFor="let item$ of items"> <ng-container *ngTemplateOutlet="template; context: { item: item$ | async }" ></ng-container> </ng-co

2020-09-29 21:15:31 594

原创 我的工作日志 - 2020年9月29日 星期二 晴

Today I submitted my first unit test for Kacper’s review, and now working on some changes according to his feedback. P.S: 今天软件园的天气很不错:

2020-09-29 19:42:38 633

原创 Angular页面在开发模式(DevMode)下的ng-reflect-属性是如何生成的

以自定义Component为例:在渲染该页面时,调用θθproperty方法:setNgReflectProperties这个自描述的方法,设置我们在Angular页面里看到的NgReflect属性:生成ng-reflect-items属性:下面是一些生成其他属性的例子:要获取更多Jerry的原创文章,请关注公众号"汪子熙":...

2020-09-29 19:30:32 656

原创 Angular页面调试一个有用的小技巧 - normalizeDebugBindingName和normalizeDebugBindingValue - [object Object]

在开发模式下渲染出的Angular页面包含了很多形如下图ng-reflect-的html属性,很多时候其值都为[object Object].如果处于调试目的,需要在Chrome开发者工具里观察这些值的具体内容,可以采取本文介绍的一个小技巧:在下列两个函数里设置断点:normalizeDebugBindingNamenormalizeDebugBindingValuefunction normalizeDebugBindingName(name) { // Attribute nam

2020-09-29 16:42:07 638

原创 Angular Component UI单元测试的隔离策略

这是我需要进行单元测试的Component UI:可以看到它依赖了另一个Component,其selector为cx-carousel.因此我在单元测试实现文件里,给它创建一个mock Component:MockCarouselComponent:@Component({ selector: 'cx-carousel', template: ` <ng-container *ngFor="let item$ of items"> <ng-contai

2020-09-29 16:09:55 522

原创 Angular Observable数据类型的单元测试数据准备

我有一个Component,其items属性是一个嵌套的Observable: items$: Observable<Observable<Product>[]> = this.componentData$.pipe( map((data) => data.productCodes.trim().split(' ')), map((codes) => codes.map((code) => this.productService.ge

2020-09-29 15:00:54 544

原创 为SAP Spartacus安装后台必须的Commerce Cloud

Sample custom.properites fileTo get Spartacus working with local SAP Commerce CloudNot to be used with productionPlease review settings with experienced SAP Commerce Cloud implementersLast updated May 29, 2020(1) 将Spartacussampledataaddon的custom.prope

2020-09-29 14:05:19 531

原创 Angular jasmine.expect单步调试

源代码: it('should be created', async(() => { expect(component).toBeTruthy(); }));这是一个工厂方法,为spec返回一个expectation:toBeTruthy的实现,用两个逻辑操作符,检测actual是否为true:要获取更多Jerry的原创文章,请关注公众号"汪子熙":...

2020-09-29 13:57:41 526

原创 SAP Spartacus单元测试用例中Component构造函数的调用上下文

我有一个Angular Component,构造函数的两个参数通过依赖注入指定。在单元测试时候,观察这两个参数如何被注入的。在构造函数被调用之前,先执行实例的初始化逻辑:观察此时的this:最后才执行构造函数:但很奇怪的是,从上面的观察能看出,在构造函数执行之前,componentData和productService这两个参数就已经可用了。构造函数这两个输入参数都是在测试用例的TestBed.configureTestingModule里配置的:要获取更多Jerry的原创文章,请关

2020-09-29 13:35:36 490

原创 在Visual Studio Code里编写ABAP代码

今天在公司在线安装SAPGUI,一上午的时间都没把安装包下载完,有点怀念07年刚入坑ABAP时那会儿身材苗条的SAPGUI. 最近Visual Studio Code里和ABAP相关的扩展越来越多了, 有兴趣的朋友可以试试,体验在传统ABAP开发工具之外的地方编码的不一样感觉。本文最后一张图是abaplint扩展在浏览器里的功能演示,该扩展能根据配置文件里定义的规则对ABAP编码风格进行检查。大家可以访问网站https://playground.abaplint.org/ 感受一下效果,随意编写一行A

2020-09-29 13:22:13 446

原创 使用SAP download manager下载SAP软件

我由于工作需要,得下载SAP Commerce Cloud 2005.找到了下载链接:https://support.sap.com/en/my-support/software-downloads.html#section_995042677点击这个按钮,将Commerce Cloud 2005添加到download manager的下载队列里:收到成功添加的提示:下一步是使用SAP download manager下载:这个download manager是一个只有4MB大的小应用

2020-09-29 11:20:27 652

原创 SAP Spartacus单元测试里Component实例的创建细节

启动命令:ng test storefrontlib单元测试里,使用TestBed创建Component实例的源代码:首先在Chrome开发者工具里找到单元测试用例的实现源代码:在_karma_webpack/src目录下:Component实例在单元测试用例里的创建方式:type就是Component的构造函数:从type里获得Component definition:根据Component definition拿到Component factory:再使用Com

2020-09-29 10:55:12 396

原创 SAP电商云简介

SAP电商云(SAP Commerce Cloud)是SAP 于2013年收购hybris software之后,进行持续整合和开发而成的一款全渠道客户互动与商务解决方案,包含b2c和b2b等方面的功能。对于第一次接触这款产品的新手来说,可以近似地把电商云的前台(Storefront)类比成我们平时在淘宝上购物看到的店铺页面,而把电商云的后台(backoffice)看成是淘宝卖家登录后台管理自己店铺的工具页面。电商云前台Storefront开发的技术栈是JSP(新的前台基于开源项目Spartacus,采用

2020-09-29 08:41:49 616

原创 一个实用的显示Visual Studio Code文件绝对路径的扩展应用

名称叫Active File In StatusBar:安装完毕后,在status bar会显示出文件的绝对路径,很方便:要获取更多Jerry的原创文章,请关注公众号"汪子熙":

2020-09-28 21:06:07 546

原创 SAP Spartacus里的产品主数据显示的数据源

打开Storefront首页:url:https://jerry.eastus.cloudapp.azure.com:9002/occ/v2/electronics-spa/products/300938?fields=code,name,summary,price(formattedValue),images(DEFAULT,galleryIndex)&lang=en&curr=USDresponse:7个image对象:要获取更多Jerry的原创文章,请关注公众号"汪子熙

2020-09-28 20:45:56 476

原创 Angular karma test.ts里一些标准api用console.log打印出的输出

在tsconfig.spec.json的exclude数组里只能设置哪些文件被排除在编译之外:单纯地将.spec.ts文件排除在外,可能会引起编译错误。如果确实想不执行某些单元测试用例,请参考我这篇文章:Angular单元测试如何只执行指定的测试用例,提高测试速度将require.context返回的内容打印出来看看:发现context是一个函数:要获取更多Jerry的原创文章,请关注公众号"汪子熙":...

2020-09-28 20:11:16 557

原创 演讲预告:一个月的住院经历,我悟到了哪些和程序员职场发展相关的心得

时间过得很快,一转眼我出院后上班已经快两个月了。最近有公众号的关注者给我留言,询问一些ABAP开发的细节问题。不巧的是,我八月份返回公司之后,领了新的开发电脑,SAPGUI和ABAP Development Tool还没有时间安装,因此现在手上没有ABAP开发环境了,也没有办法登进系统查看代码来解答这些朋友的问题,见谅。不过ABAP是我在SAP的初恋,等我有空闲时间,我还是会把上面提到的这两个ABAP开发工具重新装上。下个月SAP成都研究院会举办一个活动,由部分员工分享自己工作和生活中的点点滴滴。我这

2020-09-28 19:44:12 588

原创 SAP Spartacus的单元测试目录结构

启动单元测试的命令:yarn test:core:lib // running all of the unit tests - they need to be green, so you can push the changes easilyprojects下面的core和storefrontlib的src文件夹下都有test.ts:package.json里定义的test:core:lib指令:实际上是这几个指令的总和:"test:core:lib": "concurrently \"ng

2020-09-28 19:41:20 354

原创 我的工作日志 - 2020年9月28日 星期一 阴

Last friday during my code review with Kacper we realized that the unit test for HttpParamsEncoder class is missing, so Kacper planed to create a new issue and ask me to be familiar with the Karma unit test framework. Today I have finished the unit test de

2020-09-28 19:30:38 346

原创 SAP Spartacus里的concurrently依赖

我在Spartacus项目文件夹的package.json里看到了这个devDependencies: concurrently这是一个前端工程化并行解决方案,在Spartacus里的具体用法:package.json里指定concurrently “命令1” “命令2” “命令3”要获取更多Jerry的原创文章,请关注公众号"汪子熙":...

2020-09-28 19:27:42 334

原创 Angular开发遇到的一个错误消息 - Expected linebreak to be LF(和本地文件的换行设置有关)

命令:ng test core --code-coverageconsole会不定期打印出单元测试执行结果:最后2554个全部执行完毕。在Visual Studio Code里进行Angular开发,遇到错误消息:Expected linebreak to be ‘LF’ (linebreak-style)tslint(1)在Visual Studio Code的右下角把linebreak从CRLF改成LF即可。要获取更多Jerry的原创文章,请关注公众号"汪子熙":...

2020-09-28 18:06:03 275

原创 SAP Spartacus core模块的单元测试

命令:ng test core --code-coverageconsole会不定期打印出单元测试执行结果:最后2554个全部执行完毕。要获取更多Jerry的原创文章,请关注公众号"汪子熙":

2020-09-28 17:53:16 158

原创 SAP Spartacus HttpParamsURIEncoder单元测试文件备份

import { HttpParamsURIEncoder } from "./http-params-uri.encoder";describe('HttpParamsURIEncoder', () => { const httpParamsURIEncoder = new HttpParamsURIEncoder(); const VALUE_FOR_ENCODE = 'Hello Spartacus!'; const VALUE_FOR_DECODE = 'Hell

2020-09-28 17:44:46 152

原创 Angular单元测试的一个错误消息

错误消息:‘expect’ was used when there was no current spec, this could be because an asynchronous test timed out原始的单元测试代码:describe('Jerry for Spartacus unit test', () => { const valueService = new ValueService(); expect(valueService.getValue()).to

2020-09-28 16:33:40 179

原创 Angular单元测试如何只执行指定的测试用例,提高测试速度

Angular项目的规模一旦变大,待执行的单元测试的数目可能是海量的。此时在开发新的单元测试时,会遇到需要屏蔽到系统里已经非常稳定的测试,而只执行正在开发的新单元测试。这个需求如何实现呢?每个Angular项目文件夹下都有test.ts, 里面有一行语句,指定了该项目下哪些ts文件里的单元测试会执行:const context = require.context('./', true, /\.spec\.ts$/);默认情况下,src目录下所有以.spec.ts结尾的文件里,包含的单元测试都会被执

2020-09-28 16:30:11 358

原创 SAP Spartacus ProductService.get的几个调用场景

Product Carousel的ComponentData通过构造函数注入:通过查看componentData.data$.operator.project就能知道这个Observable的Operator逻辑:this.getComponentData(uid, currentContext)设置断点:在product-carousel.component.ts的items$设置断点:ComponentData通过构造函数注入。首页的这些数据都是通过scope.LIST来读取的:

2020-09-27 21:33:03 349

原创 SAP Spartacus里Product Carousel componentData取数据的逻辑研究

Product Carousel的ComponentData通过构造函数注入:通过查看componentData.data$.operator.project就能知道这个Observable的Operator逻辑:this.getComponentData(uid, currentContext)设置断点:要获取更多Jerry的原创文章,请关注公众号"汪子熙":...

2020-09-27 20:52:26 325

原创 SAP Spartacus里cx-carousel的实现

实现源代码:<cx-carousel [items]="items$ | async" [title]="title$ | async" [template]="carouselItem" itemWidth="285px"></cx-carousel>cx-carousel Component的几个属性:itemstitletemplate进到carousel的实现文件里:storefrontlib\src\shared\componen

2020-09-27 18:46:21 358

原创 Angular里使用createEmbeddedView的单步调试

入口:点击按钮:jerryContainer的定义:ViewContainerRef_hostTNode:container_id:_hostView:_lContainer:需要添加的视图片段:_ngContext_的内容:包含了视图所有的UI元素:首先创建,再渲染:渲染添加后的view片段:渲染视图就是执行它的template function:开始生成view里的DOM元素了:这一点和SAP WebClient UI类似:最后还是调用浏览器

2020-09-27 17:15:24 365

原创 Angular里使用createEmbeddedView动态加入新的模板元素

html源代码:<div> <ng-template #tpl> <span>鬼子到我想干什么</span> </ng-template> <div #container></div> <button (click)="showTpl()">显示template</button> </div>这部分源代码的运行时对应的原生html代码:

2020-09-27 15:16:36 544

原创 SAP电商云CCV2 Restful API enablement

感谢我的同事Zheng Kate的大力帮助。Attachment 是注册用户的下单流程:里面用了几个环境变量,你需要设置下, 只是红色部分使用这个json的前提;(1) 在hac里面有mobile_android的client, kevin说你知道怎么导入(2) 在页面上先去注册一个用户 A(3) 在postman的环境变量里把A的user和password和host的值先设置上导入json后使用:(1) 第一步获取token,拷贝下,在postman的环境变量里把client_custo

2020-09-27 14:19:38 400

原创 用SAP Spartacus 一个实际例子理解Angular <ng-template>的用法和工作原理

Structural directives are responsible for HTML layout. They shape or reshape the DOM’s structure, typically by adding, removing, or manipulating elements.Angular consumed the content during its actual rendering and replaced the with a diagnostic comment

2020-09-27 12:56:28 444

原创 SAP Spartacus里的product carousel控件的实现cx-product-carousel

实现文件的位置:这个Component的几个依赖:(1) CmsProductCarouselComponent最重要的就是这个productCodes字段,由一系列以空格符分隔的product code组成。这些model的值:(2) Product模型:export interface Product { availableForPickup?: boolean; averageRating?: number; baseOptions?: BaseOption[];

2020-09-27 12:35:15 383

原创 网友求助,关于function module DB_SQL_WRITE_TO_ITAB

Sent: Tuesday, June 23, 2020 7:30 PMTo: Wang, JerrySubject: Requesting your help for a development objectHi Jerry,Its been so long! Hope you are doing great. I am in need of your help for a development object. I am developing an internal project for wh

2020-09-27 11:52:09 277

原创 SAP Spartacus里的product carousel控件

cx-page-slot: Section3Slot里面有cx-product-carousel:cx-product-carousel下面有cx-carousel:这些carousel里的数据从哪里来的呢?答案是从Commerce Cloud后台WCMS里来。url:https://spartacus-dev0.eastus.cloudapp.azure.com:9002/occ/v2/electronics-spa/cms/pages?fields=DEFAULT&pa

2020-09-27 11:50:00 283

原创 一个风格诡异的ABAP学习网站

网址:https://www.abapzombie.com/只是里面的语言好象是南美洲某个国家的语言,除了代码之外的文字都看不懂。

2020-09-27 11:00:07 316

适合程序员使用的文件搜索工具,支持各种高级搜索条件

程序员

2021-02-20

在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用 的配套源代码

在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用 文章的配套源代码

2021-04-16

将近2万个汉语四字成语大全,txt格式存储

将近2万个汉语四字成语大全,txt格式存储

2021-04-06

dgreadiness_v3.6.zip

windows10 1909版本,如果想安装VMWare Workstation player 15.5.5,需要使用该powershell脚本,在Administration模式下,禁掉hyper V

2021-02-17

winzip70 (1).exe

winzip的经典版本,适用于windows 98实体操作系统及虚拟机

2021-02-16

自己用Java编写的有道云笔记图片批量下载工具

使用方式:java -jar tool.jar [0,1,2] 0,1,2分别是有道云笔记的编号。0的guid:c91a710af51c1e1b20f5d1da2140a9e4; 1的guid:4cc557ab9b7cbde0515b49a155c5dce3 2的guid:6eaae532daaa678cc610f2a34cbc9119

2020-11-29

《Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现》文章的源代码

《Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现》文章的源代码下载,解压之后手动复制粘贴到ABAP系统的SE24或者SE80事物码里。

2020-11-24

汪子熙的留言板

发表于 2020-01-02 最后回复 2020-03-20

怎样才是理想的程序员

发表于 2015-06-28 最后回复 2019-07-29

SAP的这三款CRM解决方案,您能区分清楚么

发表于 2018-01-08 最后回复 2018-01-09

脑子快”的程序员更优秀吗

发表于 2015-08-09 最后回复 2015-10-27

一个平庸程序员的自白

发表于 2015-08-22 最后回复 2015-08-22

金庸小说里程序猿的练级心法

发表于 2015-06-28 最后回复 2015-08-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除