Peter's Blog

「用有趣的方式看世界」

Apex 中的 Abstract, Virtual, Interface

Object-oriented programming (OOP) is a programming paradigm based on the concept of “objects”, which can contain data and code. The data is in the form of fields (often known as attributes or pr...

Salesforce DevOps Center 入门指南

DevOps Center 是 Salesforce 在 2022 年 6 月发布的一个新工具。简单地说,这个工具允许你将元数据从一个 Salesforce Org 部署到另一个。例如,将自定义对象,Apex Class,Profiles 等从沙盒部署到生产。传统上,我们使用Change Sets来执行这项任务。 目前较为常用的针对 Salesforce 项目部署方案有如下几种: ...

探讨 Salesforce DevOps Center

DevOps Center is all about change and release management and introducing DevOps best practices to our entire community, regardless of where you fall on the low-code to pro-code spectrum – Karen ...

使用 User Mode 保护你的 Apex 代码

我们知道,在默认情况下,Apex 代码以系统模式 (System Mode) 运行,这意味着它具有比运行代码的用户更高的权限,因此在执行代码的时候将忽略当前用户的权限,这样一来,即使运行的用户没有访问某个对象的权限,但他们也能访问该对象。如果应用程序构建不当,这可能对于数据库的记录来说是一个安全风险。有人可能会删除记录,即使他/她对该对象没有删除权限。这篇文章将解释用户模式 (User Mo...

理解 JavaScript 中的 Async/Await

async/await 是以更舒适的方式使用 promise 的一种特殊语法。 在 Salesforce 中,如果你有开发过 lwc 相关的组件,想必应该使用过 Async/Await 语法。其实在 JavaScript 中做异步开发时,我们通常会毫不犹豫的使用 Async/Await. 不管是并发还是串行,Async/Await 都能处理的很好,而且还保证了代码的可读性。本篇内容...

「译」代码重构的原则和意义?

译自:https://www.techtarget.com/searchapparchitecture/definition/refactoring 什么是重构? 重构是对代码进行重新组织的过程,但不改变它的原始功能。重构的目标是通过进行许多小的改变来改进内部代码,而不会改变代码的外部行为。 计算机程序员和软件开发人员重构代码以改进软件的设计,结构和实现。重构提高了代码的可读性...

使用 Google Cloud Function 创建 Salesforce 数据

由于之前有接触过 GCP 和 Salesforce 集成相关的项目,但是没有认真的了解过中间的实现细节,那么今天这篇文章主要介绍如何在 Google Cloud 上创建一个 Cloud Function 并认证连接到 Salesforce. 在本篇内容中,我们的挑战主要包括: 创建一个 Google Cloud Function 使用 Secret Manager 在 GCP ...

浅谈 LWC 中的数据渲染

在 LWC 中,如果一个属性的值发生了变化,并且该属性在 tempalte 中有使用,或者声明在一个属性的 getter 方法中,该组件会重新显示新的值。如果一个属性被分配给一个对象或一个数组,框架会观察该对象或数组内部的一些变化,比如当你分配了一个新值。 当一个组件重新渲染时,模板中使用的表达式被重新评估,renderedCallback() 生命周期钩子会被执行。 我们来看接下来的一...

Docker vs Virtual Machine (VM)

今天将会介绍虚拟机和 Docker 容器之间的区别,虚拟机和容器都有助于复制开发环境,并更好地管理依赖关系和配置。但你应该意识到某些差异,这将有助于你根据需要选择虚拟机或 Docker 容器。 应用程序开发和部署的挑战 当你在一个开发团队工作时,每个项目或者 Application 都需要安装多个第三方软件和软件包来构建项目环境。为了进行协作和工作,团队中的每个开发人员都应该配置他们的本...

LWC 的生命周期函数

LWC 的生命周期负责创建,插入组件到 DOM 中,并将其渲染和从 DOM 中删除。它还监控已渲染的组件的任何属性变化,Lifecycle 钩子其实是一种回调方法,在组件实例的生命周期的特定阶段被触发。下面为大家介绍 LWC 的几个生命周期 Hooks. 1. Constructor() 当一个组件的实例被创建时,constructor() 被调用。在这个阶段,我们不能访问组件的公共属性...

常用的 Javascript 方法

平时在工作中有些时候需要使用 JS 显示数据列表,并且希望对数据进行分类,过滤,搜索,修改或更新。或者你想进行快速计算,如求和,乘法等等。实现这一目标的最佳方式是什么?今天将会介绍几种常用的方法帮助提高数据处理效率. 1. Spread operator 可以在函数调用/数组构造时,将数组表达式或者 string 在语法层面展开; 还可以在构造字面量对象时,将对象表达式按 key-valu...

在 Salesforce 中设计高吞吐量数据读取的一些想法

在使用 Salesforce 时,架构师学到的第一课是 governor limits 对性能的影响。Salesforce 的多租户架构提供了巨大的灵活性和可扩展性,正是它的共享性质决定了我们在使用 Salesforce 平台的同时也需要考虑的更多。根据我们与 Salesforce 的集成方式,可以使用不同的技术来确保我们适用不同场景所需的业务规模. 随着 API 需求的增加,出现可靠性问...

Apex 最佳实践

A good Salesforce engineer knows how to use Apex. A great Salesforce engineer knows when to not use Apex. 当我们在 Salesforce 平台构建解决方案的时候,首先考虑使用平台的内置功能,比如 Validation rules, flows 等,这些功能可以提供更好的性能,...

Apex 中的设计模式

设计模式概述 设计模式的本质是基于面向对象编程(OOP)原则,通过封装、继承、多态(OOP 三大特性)以及类的关联关系和组合关系来构建。它们遵循以下七大原则: 单一职责原则 开闭原则 里氏替换原则 迪米特法则 依赖倒置原则 接口隔离原则 合成/聚合复用原则 设计模式是经过反复实践、被广泛认可、经过分类和设计的可重用软件设计方式。 本文将介绍在 Sale...