diff --git a/source/_posts/conda.md b/source/_posts/conda.md
new file mode 100644
index 0000000000000000000000000000000000000000..9c9463092811eaade47538218f9c7011af77bb9c
--- /dev/null
+++ b/source/_posts/conda.md
@@ -0,0 +1,79 @@
+---
+title: 使用 conda 管理包
+categories:
+ - 笔记
+excerpt: 'conda 的简单实用'
+description: 'conda 的简单实用'
+date: 2024-01-09 10:17:19
+---
+
+
+## 安装
+
+参考[官网](https://docs.conda.io/en/latest/miniconda.html%EF%BC%89%EF%BC%8C%E9%80%89%E6%8B%A9%E9%80%82%E5%90%88%E4%BD%A0%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%9A%84%E7%89%88%E6%9C%AC%EF%BC%8C%E7%84%B6%E5%90%8E%E4%B8%8B%E8%BD%BD%E3%80%82)
+
+## 常用命令
+
+1. 创建一个新的环境:
+```
+conda create --name env_name
+```
+其中,`env_name`是你想要创建的环境的名称。
+
+2. 激活/进入一个环境:
+```
+conda activate env_name
+```
+其中,`env_name`是你想要激活的环境的名称。
+
+3. 退出当前环境:
+```
+conda deactivate
+```
+
+4. 查看已安装的所有环境:
+```
+conda env list
+```
+
+5. 删除一个环境:
+```
+conda env remove --name env_name
+```
+其中,`env_name`是要删除的环境的名称。
+
+6. 安装包:
+```
+conda install package_name
+```
+其中,`package_name`是要安装的包的名称。
+
+7. 更新包:
+```
+conda update package_name
+```
+其中,`package_name`是要更新的包的名称。
+
+8. 删除包:
+```
+conda remove package_name
+```
+其中,`package_name`是要删除的包的名称。
+
+9. 查找可用的包:
+```
+conda search package_name
+```
+其中,`package_name`是要查找的包的名称。
+
+10. 导出/备份环境配置:
+```
+conda env export > environment.yml
+```
+
+11. 从环境配置文件中创建一个新的环境:
+```
+conda env create -f environment.yml
+```
+
+这些命令可以帮助你更好地使用`conda`。更多关于`conda`的使用方法,请参考[官方文档](https://docs.conda.io/en/latest/)
\ No newline at end of file
diff --git a/source/_posts/eralchemy2.md b/source/_posts/eralchemy2.md
new file mode 100644
index 0000000000000000000000000000000000000000..9aa2734ae15aa89f23b673414e9ad28ac83d07dd
--- /dev/null
+++ b/source/_posts/eralchemy2.md
@@ -0,0 +1,94 @@
+---
+title: 入坑eralchemy2
+categories:
+ - 项目问题积累
+excerpt: 'mac 安装依赖eralchemy2遇到的问题'
+description: ''
+date: 2024-01-09 10:22:06
+---
+
+> mac 环境
+
+## 简介
+
+eralchemy2 从数据库或 SQLAlchemy 模型生成实体关系(ER)图。
+
+## 安装
+
+```bash
+pip install eralchemy2
+```
+
+### 遇到错误
+
+```log
+pygraphviz/graphviz_wrap.c:3020:10: fatal error: 'graphviz/cgraph.h' file not found
+ #include "graphviz/cgraph.h"
+ ^~~~~~~~~~~~~~~~~~~
+ 1 error generated.
+ error: command '/usr/bin/clang' failed with exit code 1
+ [end of output]
+ note: This error originates from a subprocess, and is likely not a problem with pip.
+ ERROR: Failed building wheel for pygraphviz
+Failed to build pygraphviz
+ERROR: Could not build wheels for pygraphviz, which is required to install pyproject.toml-based projects
+```
+
+### 问题解决
+
+使用 pip 和 venv 尝试了网络上大部分的教程,均失败告终。最后使用 conda 安装成功。(神奇的 python 包版本管理工具)
+
+1. 初始 conda 环境,参考文档
+
+2. 安装命令
+
+```bash
+conda install --channel conda-forge eralchemy2
+```
+
+> 可能还需要安装 graphviz: `brew install graphviz`
+
+
+## 使用
+
+```python
+from eralchemy2 import render_er
+
+## Draw from database
+render_er("postgresql+psycopg2://username:password@hostname:5432/databasename", 'er.png')
+```
+
+> 注意:postgresql+psycopg 可能会报错以下错误,修改为 postgresql+psycopg2 即可
+
+```log
+Traceback (most recent call last):
+ File "/baseDir/lib/python3.12/site-packages/eralchemy2/main.py", line 298, in render_er
+ tables, relationships = all_to_intermediary(input, schema=schema)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/baseDir/lib/python3.12/site-packages/eralchemy2/main.py", line 191, in all_to_intermediary
+ return database_to_intermediary(filename_or_input, schema=schema)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/baseDir/lib/python3.12/site-packages/eralchemy2/sqla.py", line 102, in database_to_intermediary
+ engine = create_engine(database_uri)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "", line 2, in create_engine
+ File "/baseDir/lib/python3.12/site-packages/sqlalchemy/util/deprecations.py", line 281, in warned
+ return fn(*args, **kwargs) # type: ignore[no-any-return]
+ ^^^^^^^^^^^^^^^^^^^
+ File "/baseDir/lib/python3.12/site-packages/sqlalchemy/engine/create.py", line 601, in create_engine
+ dbapi = dbapi_meth(**dbapi_args)
+ ^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/baseDir/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/psycopg.py", line 378, in import_dbapi
+ import psycopg
+ModuleNotFoundError: No module named 'psycopg'
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+ File "/baseDir/pip/test.py", line 5, in
+ render_er("postgresql+psycopg://username:password@hostname:5432/databasename", 'erd.png')
+ File "/baseDir/lib/python3.12/site-packages/eralchemy2/main.py", line 310, in render_er
+ module_name = e.message.split()[-1]
+ ^^^^^^^^^
+AttributeError: 'ModuleNotFoundError' object has no attribute 'message'
+```
\ No newline at end of file
diff --git a/source/_posts/master-data.md b/source/_posts/master-data.md
new file mode 100644
index 0000000000000000000000000000000000000000..531e668d31db93b8cb0adcead150b6ca668722a8
--- /dev/null
+++ b/source/_posts/master-data.md
@@ -0,0 +1,58 @@
+---
+title: 主数据
+categories:
+ - 默认
+excerpt: '主数据(Master Data)是具有共享性的基础数据,可以在企业内跨越各个业务部门被重复使用的,因此通常长期存在且应用于多个系统。'
+description: '主数据(Master Data)是具有共享性的基础数据,可以在企业内跨越各个业务部门被重复使用的,因此通常长期存在且应用于多个系统'
+date: 2024-01-04 21:04:06
+---
+
+## 基本定义
+
+主数据(Master Data)是指在一个组织内部跨多个系统、应用程序和业务过程中共享、使用和维护的关键业务实体的核心数据。这些数据通常包括客户、供应商、员工和其他重要的业务对象的信息。
+
+主数据的目的是确保数据在组织内的一致性、准确性和可靠性。
+
+## 主数据的特征
+
+- 关键性:主数据包含组织内最关键的业务实体信息,如客户、产品、供应商等。这些数据对业务运营和决策过程至关重要。
+- 共享性:主数据是跨部门、跨系统高度共享的数据。
+- 持久性:与交易数据相比主数据是相对稳定的,变化频率较低。变化频率较低并不意味着一成不变,例如:交易数据、人员调动。
+
+- 超越业务:主数据是跨越了业务界限,在多个业务领域中被广泛使用的数据,其核心属性也是来自业务。例如:物料主数据,它有自身的自然属性,如:规格、材质,也有业务赋予的核心属性,如:设计参数、工艺参数、采购、库存要求、计量要求、财务要求等
+- 超越部门:主数据是组织范围内共享的、跨部门的数据,它具有跨部门业务协同的特性。
+- 超越系统:主数据管理系统是信息系统建设的基础,它服务于但是高于其它业务信息系统,因此对主数据的管理要集中化、系统化、规范化。
+- 超越技术:由于主数据要满足跨部门的业务协同,因而必须适应采用不同技术规范的不同业务系统,从来不会局限于一种特定的技术。主数据的集成技术是多样的,如:webservice、REST、ETL、MQ、HTTP等。
+
+## 与其他数据的关系
+
+主数据与其他类型的数据有密切的关系,它们在组织内相互依赖并共同支持业务运营和决策过程。以下是主数据与其他数据类型之间的一些关系:
+
+- 交易数据:交易数据是指记录业务活动(如销售订单、采购订单、发票等)的数据。交易数据通常与主数据密切相关,因为它们包含了与主数据实体(如客户、产品、供应商等)相关的信息。例如,销售订单可能包含客户信息、产品信息以及价格等主数据。主数据为交易数据提供了基础信息和上下文,有助于实现业务过程的有效执行和监控。
+- 元数据:元数据是描述其他数据的数据,例如数据的结构、格式、定义、来源等。元数据在主数据管理过程中起着重要作用,因为它有助于识别、整合、清洗和标准化来自不同来源的主数据。通过使用元数据,组织可以确保主数据的一致性、准确性和可靠性。
+- 参照数据:参照数据是一种用于支持其他数据的标准化和分类的数据,例如固定值列表、代码表、行业标准、度量单位等。参照数据在主数据管理过程中具有重要作用,因为它们有助于实现主数据的一致性和标准化。通过使用参照数据,组织可以确保主数据在不同系统和业务过程中保持一致。
+- 分析数据:分析数据是用于支持决策和分析的数据,通常是通过对原始数据(如主数据和交易数据)进行汇总、转换和加工生成的。主数据为分析数据提供了关键的基础信息,确保分析结果的准确性和可靠性。例如,在进行销售分析时,需要使用客户数据、产品数据等主数据来对销售数据进行分组和归类。
+
+## 主数据管理的常见问题
+
+- 数据入口多,重复录入、一物多码、多码一物
+- 数据分类、数据编码不统一、不一致
+- 关键数据项为空或填写错误、填写不规范
+- 主数据的质量不高
+- 存在数据孤岛,异构系统数据没有打通
+
+## 一些常用的概念
+
+### 数据清洗
+
+数据清洗是指对原始数据进行处理和修正,以去除错误、不一致或不完整的数据,使其符合分析或建模的要求。数据清洗是数据预处理的一个重要步骤,旨在提高数据的质量和准确性。
+
+在数据清洗过程中,可能会执行以下操作:
+
+缺失值处理:处理数据中的缺失值,可以通过填充、删除或插值等方法来处理缺失值。
+异常值处理:检测和处理数据中的异常值,例如使用统计方法或领域知识进行异常值的处理。
+数据格式转换:将数据转换为正确的格式,例如将字符串转换为日期时间格式。
+数据去重:删除数据中的重复记录,确保数据的唯一性。
+数据规范化:对数据进行标准化或归一化处理,以便进行比较或分析。
+数据类型校验:检查数据类型是否符合预期,并进行必要的转换或修正。
+数据一致性检查:检查数据中的逻辑错误或不一致性,并进行修正。
\ No newline at end of file