Mar 27, 2024
1 min read
本地部署
下载大模型
大模型下载
ChatGLM3
git clone https://github.com/THUDM/ChatGLM3
cd ChatGLM3
pip install -r requirements.txt
python
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("/home/wubigo/model/ZhipuAI/chatglm3-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("/home/wubigo/model/ZhipuAI/chatglm3-6b", trust_remote_code=True, device='cuda')
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
初始化知识库
git clone --recursive https://github.com/chatchat-space/Langchain-Chatchat.git
cd Langchain-Chatchat
pip install -r requirements.txt
python copy_config_example.py
python init_database.py --recreate-vs
启动服务
python startup.py -a
Mar 19, 2024
2 min read
运行GLM报错
RuntimeError: CUDA out of memory. Tried to allocate 30.00 MiB (GPU 0; 7.43 GiB total capacity; 6.58 GiB already allocated; 30.94 MiB free; 6.79 GiB reserved in total by PyTorch) 检查GPU内存使用情况 nvidia-smi Mon Mar 18 23:59:31 2024 +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.161.07 Driver Version: 535.161.07 CUDA Version: 12.2 | |-----------------------------------------+----------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M.
Jan 31, 2024
1 min read
BACnet简介 BACnet协议(A Data Communication Protocol for Building Automation and Control Networks),是由美国采暖、制冷和空调工程师协会(ASHRAE)制定的一个楼宇自动控制技术标准文件,BACnet协议最根本的目的是提供一种楼宇自动控制系统实现互操作的方法。BACnet协议并不能简单的认为是一种应用层的协议,而是包含四个层次的简化分层体系结构,这四层相当于OSI模型中的物理层、数据链路层、网络层和应用层。BACnet是用于楼宇自动化和控制网络的简短形式的数据通信协议。BACnet是主要行业供应商产品中常用的自动化和控制协议之一.BACnet应用包括照明控制,安全,消防,报警,HVAC(加热,通风,空调和与公用事业公司的接口)
BACnet物理层 BACnet上层不依赖于物理层。BACnet物理层使BACnet可以在不同的网络上实现。BACnet物理层已指定用于以下内容: - ARCNET - 以太网 - IP隧道 - BACnet / IP - RS-232 (RS232用于点对点通信。RS485支持最多32个节点,距离为1200米,速率为76Kbps) - RS485 - Lonworks / LonTalk
服务原语 与ISO服务中的约定用法一致,BACnet中两个对等应用进程间的信息交换,被表示成抽象服务原语的交换。这些服务原语用来传递一些特定的服务参数,本协议定义了四种服务原语:请求(request)、指示(indication)、响应(response)和证实(confirm)。 同样,本协议定义了下列几种服务:有证实(confirmed)服务:用CONF_SERV标记,表示客户方通过具体的服务请求实例向服务器方请求服务,服务器方通过响应请求来为客户方提供服务。存在客户/服务器模型、区分“请求方BACnet用户”和“响应方BACnet用户”等。 无证实(unconfirmed)服务:用UNCONF_SERV标记,只有“发送方BACnet用户”和“接收方BACnet用户”的概念,不存在客户/服务器模型,只有发送方和接收方,而不是请求-响应对。 分段确认(segment acknowledge)服务:用SEGMENT_ACK标记,为了实现长报文(长度大于通信网络、收/发设备所支持的长度)的传输,BACnet采取了应用层报文分段的机制来对报文进行分段。在BACnet中只有有证实请求(Confirmed-Request)和复杂确认(Complex-ACK)报文可能需要分段,因此分段还是BACnet的一个可选特性。 另外,还有差错(ERROR)服务,拒绝(REJECT)服务,中止(ABORT)服务。 因此,根据不同的服务类型和原语类型,据有下表所示的服务原语。这些原语中的信息,由各种协议数据单元(PDU:Protocol Data Unit)传递。
服务选择 BACnet定义了以下几类可选择的服务,用于两个对等实体之间的交互。
文件访问服务 定义一组访问和操作在BACnet设备中的文件的服务。文件只是一个抽象的概念,表示一个任意长度和意义的字节集合的网络可见形式。 基本读文件(AtomicReadFile)服务:一个客户端的BACnet用户使用基本读文件服务对某个文件进行一个“打开-读出-关闭”的操作。 基本写文件(AtomicWriteFile)服务:一个客户端的BACnet用户使用基本写文件服务对某个字节流进行一个“打开-写入-关闭”的操作,将它写入到文件的某个位置。
对象访问服务 远程设备管理服务 定义一组远程设备管理服务。 - 设备通信控制(DeviceCommunicationControl)服务。 - 有证实专有传输(ConfirmedPrivateTransfer)服务。 - 无证实专有传输(UnconfirmedPrivateTransfer)服务。 - 重新初始化设备(ReinitializeDevice)服务。 - 有证实文本报文(ConfirmedTextMessage)服务。 - 无证实文本报文(UnconfirmedTextMessage)服务。 - 时间同步(TimeSynchronization)服务。
ModBus简介 Modbus 协议广泛应用于工业自动化、建筑自动化、环境监测、能源管理等领域,以下是一些常见的应用场景:工业自动化:Modbus 是一种常用的通信协议,可以实现工厂中各种设备的数据采集、控制和监测,如传感器、PLC、变频器、电机驱动器、控制器等设备。建筑自动化:Modbus 可以用于建筑自动化系统中 modbus 是工业现场较为常用的总线协议,是应用层报文传输协议(OSI模型第7层),支持1对1传输、1对多传输。支持的模式有:modbus-TCP、modbus-RTU、modbus-ASCII。其中modbus-TCP是基于TCP/IP之上的应用协议。modbus-RTU、modbus-ASCII 是串口协议,主要的电气接口有:RS232、RS485。
Nov 24, 2023
1 min read
生成式通用人工智能的主要推动力
transformer在长序列文本数据模式提取和海量数据处理方面碾压RNN
预训练模型
预训练模型成功的应用到NLP领域
Nov 8, 2023
1 min read
默认会化过期时间 开源的EMQ设置的会话过期时间为 5 分钟,最大消息数为 1000 条,且不保存 QoS 0 消息。
针对这两点,MQTT 5.0 提供了 Clean Start 和 Session Expiry Interval 这两个连接字段来控制会话的生命周期
Session Expiry Interval Session Expiry Interval 同样位于 CONNECT 报文的可变报头,不过它是一个可选的连接 属性。 它被用来指定会话在网络断开后能够在服务端保留的最长时间,如果到达过期时间但网络连接仍未恢复, 服务端就会丢弃对应的会话状态。它有三个典型的值:
没有指定此属性或者设置为 0,表示会话将在网络连接断开时立即结束。 设置为一个大于 0 的值,则表示会话将在网络连接断开的多少秒之后过期。 设置为 0xFFFFFFFF,即 Session Expiry Interval 属性能够设置的最大值时,表示会话永不过期。 服务端使用 Client ID 来唯一地标识每个会话,如果客户端想要在连接时复用之前的会话,那么必须使用与此前一致的 Client ID
我们需要正确地评估持久会话对服务器资源的影响,会话过期时间越长,服务端需要花费的存储资源就可能越多。 虽然服务端通常并不会无限制地为客户端缓存消息,以 EMQX 为例,默认情况下每个客户端会话中能够缓存的最大消息数量为1000
数据存储 路由数据是物联网连接集群中的核心数据,它存储设备订阅主题与集群节点的映射关系,在消息发布时根据消息主题信息查找所有匹配的节点, 用于集群内节点间的消息派发。在EMQX的实现中,路由数据存在于集群中的所有节点上。客户端的主题订阅数据,则只保存在连接所在的节点上, 用于节点内部派发消息到客户端。当客户端连接到集群某个节点订阅某个新的主题时,就会生成一条路由数据,该数据最终会同步到集群所有节点上, 每个节点都可以通过本地查询找到任意主题对应的订阅节点列表。当客户端发布消息时,连接所在节点会根据消息主题检索路由数据得到所有订阅 节点的信息,然后将消息派发到这些节点上.
OPC OPC UA 是一种面向工业自动化的机器到机器通信协议,由 OPC 基金会开发维护。OPC UA 提供一种标准化的方式, 使不同的设备和系统能够互相通信。 Neuron OPC UA 插件可作为客户端访问 KEPServerEX、Industrial Gateway OPC Server、Prosys Simulation Server、Ignition 等 OPC UA 服务器, 也可以直接访问硬件设备的内置 OPC UA Server,如西门子 S7-1200 型 PLC 的内置 Server、 欧姆龙 NJ 系列 PLC 的内置 Server 等。
Apr 25, 2023
2 min read
WebGPU is the new GPU API that available in browser. It’s one of the only 2 APIs that currently available to access the GPU from browser (the other is WebGL).
WebGPU is the successor to WebGL, providing better compatibility with modern GPUs, support for general-purpose GPU computations, faster operations, and access to more advanced GPU features.
WebGL基本问题 WebGL has some fundamental issues that needed addressing:
Since WebGL’s release, a new generation of native GPU APIs have appeared — the most popular being Microsoft’s Direct3D 12, Apple’s Metal, and The Khronos Group’s Vulkan — which provide a multitude of new features.
Apr 24, 2023
1 min read
学习英语
重要的是speaking和writing
学习编程
重要的是交付一个可以工作的产品和项目
Apr 18, 2023
2 min read
大模型下载 pip install modelscope from modelscope.hub.snapshot_download import snapshot_download model_dir = snapshot_download('ZhipuAI/chatglm3-6b', cache_dir='./model', revision='master') 下载 https://www.modelscope.cn/models/ZhipuAI/chatglm2-6b
nvidia-smi Failed to initialize NVML: Driver/library version mismatch 这个问题出现的原因是kernel mod 的 Nvidia driver 的版本没有更新,一般情况下,重启机器就能够解决, 如果因为某些原因不能够重启的话,也有办法reload kernel mod。
简单来看,就两步
unload nvidia kernel mod reload nvidia kernel mod 执行起来就是
sudo rmmod nvidia sudo nvidia-smi 分词器(Tokenizer) tokenization算法大致经历了从word/char到subword的进化.
目前有三种主流的Subword分词算法,分别是Byte Pair Encoding (BPE), WordPiece和Unigram Language Model
Back in the ancient times, before 2013, we usually encoded basic unigram tokens using simple 1’s and 0’s in a process called One-Hot encoding.
Apr 8, 2023
1 min read
启动开发环境
git clone [email protected] :penpot/penpot.git
pushd penpot
./manage.sh run-devenv
检查进程运行状态
docker exec -ti penpot-devenv-main bash
root@87691e4f990c:/home# sudo -EH -u penpot tmux ls
penpot: 4 windows (created Sat Apr 8 10:27:39 2023) (attached)
Mar 16, 2023
1 min read
Arduino开发板包默认安装位置
C:\Users\bigo\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.1
Arduino
Mar 11, 2023
1 min read
来源:索钧–同仁堂主任医师,索延昌之子,师从国医方和谦
食物
粥:
薏米一把,绿豆一把,莲子一把
脾
七成饱,饮食有节,细嚼慢咽,每口嚼二十到三十下。
按摩:三阴交,中脘,足三里
肺
腹式呼吸
肾
丹田撞树,一定要是树,感受到和大自然的直接互动
心血
空心拳叩击膻中穴
运动
双手并排保持端平,向下做深蹲,然后站立
养生八字
童心,蚁食,鬼欲,猴行
Jan 24, 2023
3 min read
以太网连接企业VPN内网,企业VPN内网没有外网访问权限。
显示当前的网络连接
ipconfig Windows IP 配置 以太网适配器 以太网: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::7c5d:6dec:3f55:ca9f%19 IPv4 地址 . . . . . . . . . . . . : 10.177.105.14 子网掩码 . . . . . . . . . . . . : 255.255.255.128 默认网关. . . . . . . . .
Jan 23, 2023
5 min read
地点:深圳市龙华区的深圳书城
诺贝尔文学奖得主索尔·贝娄对书有一个定义,书是什么?书是广阔生活的保证人。
距离2023年还有3个半小时,我想请朋友们坐下来,在这么多“广阔生活的保证人”的陪伴下,咱们聚在一起聊聊天。今天晚上,我给你准备了22个故事,咱们开始。
《电动车与书店》
我要讲的第一个故事,是一个“补窟窿”的故事。
它就发生在我此刻所在的深圳市龙华区。
这个故事的主人公,我不知道他的姓名,我们就叫他“龙华哥”吧。他37岁,原来开工厂,这两年生意失败,工厂关了,还欠了200万的债。
这大概就是人生谷底的样子吧。
怎么办呢?偶然有一天,他发现,深圳的街头,地铁口到处都停着电动车,许多电动车的座椅上都有破洞。你想,一个多雨的亚热带城市,下雨之后,有洞的座椅坐上去,一裤子的水,会给骑车的人带来很多麻烦。于是他想到了一个对别人有用的活儿——去把这些电动车车座的破洞补上。
他就带着一些皮革贴,满大街去找电动车,补好破洞之后,再贴上一张收款二维码,上面写着:“坐凳给您补好了,扫码支付,金额您随意。”
这话听着耳熟。酒桌上常见的词儿:“我干了,您随意。”
等他忙完一天回家,打开手机,发现真的不断有人开始付款,有3块、5块、8块、20块,还有人留言感谢。
第1天操作,总共31笔,收了184块钱。要知道,他补座椅用的皮革贴,每一张的成本在一毛钱左右,所以贴了100张出去,也才10块钱的成本。诶,这个事儿能干!
第二天,收款562块,刨去皮革贴的成本30块,地铁日票25块,挣了大概有500元。
一个新的生计就这么找到了。
我不知道这个故事给你什么感受?是数字化技术带来了新的生意方式?还是中国人的道德水准在普遍性提高?
而我,倒是从这个故事中再一次看到了一个“做事的人”该有的样子。
拜托深圳的朋友,如果你的电动车恰好也被他补过洞,如果你给他打过钱,还有他的联系方式的话,帮我问候一声。就跟他说,罗胖,也被他这个故事激励到了。
这个故事给我的启发是:面对困难,有三种结果。最好的,当然是打赢困难,其次是被困难击败,但还有没有更糟糕的结果呢?
有。那就是被困难定义。
什么叫被困难定义?守株待兔的故事,大家都知道吧?那个人在树前赢了一次,就把自己定义成了“可以靠运气活下去的人”。被锁死在一次成败之中,这太糟糕了。
而我们故事当中的这位“龙华哥”,迅速地摆脱了“失败的工厂主”这个定义,开始在别处寻找机会。从制造业的工厂主,到满大街去补车座,这是多大的跨度?这是一种多么强悍的摆脱定义、重启自己的能力?
龙华区有一句话:“无奋斗,不龙华。”这就是我们中国人眼里奋斗者的样子,也是我们这代人心目中深圳精神的样子:遇到难处,一边对他人的困境保持同理心,一边不挑不拣,先从身边的小事做起。这样,很多原来看不见的,身边的小机会就会生动地浮现出来。
因为这个故事,当龙华区的朋友邀请我们把跨年演讲放到这里,我们马上就接受了邀请。场地就定在龙华文体中心,一座刚刚落成的体育馆。
但万万没想到,刚刚被这个“补窟窿”的故事激励到,马上就轮到我们自己补窟窿了。
每年,准备跨年演讲,都有一个月的闭关期。2022年11月底,当我们来到深圳的时候,全国还在大面积封控。
你可以回想一下:一个月前,那个时候的社会氛围和自己的心境。
有一天看场地,我站在体育馆里,突然觉得,坏了。
我完全没法想象:今年还能做那种大集会、大舞台、大屏幕式的演讲。即使深圳本地的防疫情况允许,即使我还有勇气像去年那样,一个人面对一万个空座位讲,而如果那个时候的你,还被困在家里,看见这个场景,你会作何感想?我又情何以堪?
我们准备了半年的跨年演讲,就在一个月前,突然变得非常尴尬。简直是进退维谷。
刚才我讲了一个“补窟窿”的故事。现在,我自己突然就面对这么大一个窟窿要补。怎么办?
正当一筹莫展的时候,那天,我们走出原定的龙华文体中心,一扭头,就看见了这座深圳书城,也就是我今天站的这个地方。一打听,这里居然还是全国首家5G智慧书城。
灵光一闪,一个新想法就冒出来了:今年能不能干脆不用大舞台?也不搞大集会?我就在这个书城里,边走边讲。观众也不用多,因为这里有书香的加持,更重要的是,我可以走到真实的观众中间。
过去这三年,我们多缺和真实的人近距离、面对面相处的机会啊。
Nov 30, 2022
2 min read
torch.multinominal方法可以根据给定权重对数组进行多次采样,返回采样后的元素下标
参数说明 input :权重,也就是取每个值的概率,可以是1维或2维。可以不进行归一化。 num_samples : 采样的次数。如果input是二维的,则表示每行的采样次数 replacement :默认值值是False,即不放回采样。如果replacement =False,则num_samples必须小于input中非零元素的数目
按权重采样 从四个元素中随机选择两个,每个元素被选择到的概率分别为:[0.2, 0.2, 0.3, 0.3]:
>>> weights = torch.Tensor([0.9, 0.25, 0.1, 0.15]) # 采样权重 >>> torch.multinomial(weights, 2) tensor([0, 1]) >>> torch.multinomial(weights, 2) tensor([1, 3]) >>> torch.multinomial(weights, 2) tensor([0, 3]) >>> torch.multinomial(weights, 2) tensor([3, 1]) >>> torch.multinomial(weights, 2) tensor([1, 0]) >>> torch.multinomial(weights, 2) tensor([1, 0]) >>> torch.multinomial(weights, 2) tensor([0, 1]) >>> torch.multinomial(weights, 2) tensor([0, 2]) >>> torch.multinomial(weights, 2) tensor([3, 0]) >>> torch.
Nov 11, 2022
2 min read
下载 Docker 二进制文件(离线安装包) 下载地址:https://download.docker.com/linux/static/stable/x86_64/
注:本文使用 /x86_64/docker-18.06.1-ce.tgz,注意对应操作系统类型。
tar tf docker-20.10.9.tgz docker/ docker/containerd-shim-runc-v2 docker/dockerd docker/docker-proxy docker/ctr docker/docker docker/runc docker/containerd-shim docker/docker-init docker/containerd tar zxf docker-18.06.1-ce.tgz sudo cp docker/* /usr/bin/ sudo dockerd & 验证是否安装成功,执行docker info命令
docker info 注册成系统服务 /etc/systemd/system/docker.service
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target docker.socket firewalld.service Wants=network-online.target Requires=docker.socket [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.
Oct 29, 2022
1 min read
Quit docker-desktop
wsl --shutdown
Export Docker Desktop data
wsl --export docker-desktop-data D:\data.tar
wsl --unregister docker-desktop-data
Import the exported data to your desired location
wsl --import docker-desktop-data D:\wsl\docker-desktop-data d:\data.tar --version 2
restart docker-desktop
λ wsl -l -v
NAME STATE VERSION
* Ubuntu2 Running 2
docker-desktop-data Running 2
docker-desktop Running 2
Sep 18, 2022
1 min read
每隔几年 ,我总要把《明朝那些事儿》最后一章拿来读读,给自己的人生纠偏,而唯一的准星,就是自己本心。最后一章内容如下:
“其实历史和小说不一样,因为历史的答案,所有人都知道,崇祯同志终究是要死的,而且肯定是吊死,他不会撞墙,不会抹脖子,不会喝敌敌畏,总而言之,我不说,你们都知道。
所以结局应该是固定的,没有支线。
但是,我的结局,并不是这个。换句话说,我的文章,有两个结局,这只是第一个。
我读了十五年历史,尊重历史,所以这篇文章从头至尾,不能说无一字无来历,但大多数,都是有出处的。我不敢瞎编。
所以第二个结局,也是真实的,只不过比较奇特,它一直在我的脑海里,最后,我决定把这个比较奇特的结局写出来。
第二个结局徐宏祖出生的时候,是万历十五年。
在这个特定的年龄出生,真是缘分,但外面的世界,跟徐宏祖并没有多大关系,他的老家在江阴,山清水秀,不用搞政治,也不怕被人砍,比较清净。
当然,清净归清净,在那年头,要想出人头地,青史留名,只有一条路——考试(似乎今天也是)。
徐宏祖不想考试,不想出人头地,不想青史留名,他只想玩。
按史籍说,是从小就玩,且玩得比较狠,比较特别,不扔沙包,不滚铁环,只是四处瞎转悠,遇到山就爬,遇到河就下,人极小,胆子极大。
此外,他极其讨厌考试,长大后,让他去考科举,死都不去。该情节,放在现在,大致相当于抗拒高考。
这号人,当年跟今天的下场,估计是差不多,被拉回家打一半死不活,绝无幸免。
然而徐宏祖的父母没有打他,非但没有打他,还告诉他,你要想玩,就玩吧,做自己喜欢做的事情就行。
这种看似惊世骇俗的思想,似乎很不合理,但对徐家人而言,很合理。
对了,应该介绍一下徐宏祖同志的家世,虽然他的父母,并非什么大人物,也没名气,但他有一位祖先,还算是很有名的,当然,不是好名。
在徐宏祖出生前九十年,徐家的一位先辈进京赶考,路上遇到了一位同伴,叫做唐寅,又叫唐伯虎。
没错,他就是徐经。
后来的事情,之前讲过,据说是徐经作弊,结果拉上了唐伯虎,大家一起完蛋,进士没考上,连举人都没了,所以徐经同志痛定思痛,对坑害了无数人(主要是他)的科举制度深恶痛绝,教育子孙,要与这个万恶的制度决裂,爱考不考,去他娘的。
对这段百年恩怨,徐宏祖是否了解,不清楚,但他会用,那是肯定的。更重要的是,徐家虽说没有级别,还有点钱,所以他决定,索性不考了,出去旅游。
刚开始,他旅游的范围,主要是江浙一带,比如紫金山、太湖、普陀山等等。后来愈发勇猛,又去了雁荡山、九华山、黄山、武夷山、庐山等等。
但这里,存在着一个问题——钱。
旅行家和大侠的区别在于,旅行家是要花钱的,列一下,大致包括以下费用:交通费、住宿费、导游费、餐饮费、门票费,如果地方不地道,还有个挨宰费。
我说过,徐家是有钱的,但只是有点钱,没有很多钱,大约也就是个中产阶级。按今天的标准,一年去旅游一次,也就够了,但徐宏祖的旅行日程是:一年休息一次。
他除了年底回家照顾父母外,一年到头都在外面,但就这么个搞法,他家竟然还过得去。
原因很简单,比如交通费,他不坐火车、也不坐汽车(想坐也没),少数骑马,多靠步行(骑马爬山试试)。
住宿费,基本不需要,徐宏祖去的地方,当年大都没有人去,别说三星级,连孙二娘的黑店都没有,树林里、悬崖上,打个地铺,也就睡了。
餐饮费,也没有,我考察过,徐宏祖同志去的地方,也没什么餐馆,每次他出发的时候,都是带着干粮,而且他很扛饿,据说能扛七八天,至于喝水,山里面,那都是矿泉水。
门票费也是不用了,当年谁要能在徐宏祖同志去的地方,设个点收门票,那只能说明,他比徐宏祖还牛,该收。
挨宰费是没有的,但挨宰是可能的,且比较敞亮,从没有暗地加价坑钱,都是拿刀,明着来抢。要知道,没门票的地方,固然没有奸商,却很可能有强盗。
据本人考证,徐宏祖最大的花销,是导游费用。作为一个旅行家,徐宏祖很清楚,什么都能省,这笔钱是不能省的,否则走到半山腰,给你挖个坑,让你钻个洞,那就休息了。
就这样,家境并不十分富裕的徐宏祖,穿着俭朴的衣服,没有随从,没有护卫,带着干粮,独自前往名山大川,风餐露宿,不怕吃苦,不怕挨饿,一年只回一次家,只为攀登。
从俗世的角度,徐宏祖是个怪人,这人不考功名,不求做官,不成家立业,按很多人的说法,是毁了。
我知道,很多人还会说,这种生活荒谬,是不符合常规的,是不正常的,是缺根弦的,是精神有问题的。
我认为,说这些话的人,是吃饱了,撑的,人只活一辈子,如何生活,都是自己的事,自己这辈子浑浑噩噩地没活好,厚着脸皮还来指责别人,有多远,就去滚多远。
徐宏祖旅行的唯一阻力,是他的父母。他的父亲去世较早,只剩他的母亲无人照料。圣人曾经教导我们:父母在,不远游。
所以在出发前,徐宏祖总是很犹豫,然而他的母亲找到他,对他说了这样一番话:“男儿志在四方,当往天地间一展胸怀!”
就这样,徐宏祖开始了他伟大的历程。
他二十岁离家,穿着布衣,没有政府支持,没有朋友帮助,独自一人,游历天下二十余年,他去过的地方,包括湖广、四川、辽东、西北,简单地说,全国十三省,全部走遍。
他爬过的山,包括泰山、华山、衡山、嵩山、终南山、峨眉山,简单地说,你听过的,他都去过,你没听过的,他也去过。
此外,黄河、长江、洞庭湖、鄱阳湖,金沙江、汉江,几乎所有江河湖泊,全部游历。
在游历的过程中,他曾三次遭遇强盗,被劫去财物,身负刀伤,还由于走进大山,无法找到出路,数次断粮,几乎饿死。最悬的一次,是在西南。
当时,他前往云贵一带,结果走到半路,突然发现交通中断,住处被当地土著围,过了几天,外面又来了明军,又开始围,围了几天,就开始打,打了几天,就开始乱。徐宏祖好歹是见过世面的,跑得快,总算顺利脱身。
在旅行的过程中,他还开始记笔记,每天的经历,他都详细记录下来,鉴于他本人除姓名外,还有个号,叫做霞客,所以后来,他的这本笔记,就被称为《徐霞客游记》。
崇祯九年(1636),五十岁的徐宏祖决定,再次出游,这也是他的最后一次出游,虽然他自己没有想到。
正当他考虑出游方向的时候,一个和尚找到了他。
这个和尚的法号,叫做静闻,家住南京,他十分虔诚,非常崇敬鸡足山迦叶寺的菩萨,还曾刺破手指,血写过一本法华经。
鸡足山在云南。
当时的云南鸡足山,算是蛮荒之地,啥也不通,要去,只能走着去。
很明显,静闻是个明白人,他知道自己要一个人去,估计到半路就歇了,必须找一个同伴。
徐宏祖的名气,在当时已经很大了,所以他专门找上门来,要跟他一起走。
对徐宏祖而言,去哪里,倒是个无所谓的事,就答应了他,两个人一起出发了。
他们的路线是这样的,先从南直隶出发,过湖广,到广西,进入四川,最后到达云贵。
不用到达云贵,因为到湖广,就出事了。
走到湖广湘江(今湖南),没法走了,两人坐船准备渡江。
渡到一半,遇上了强盗。
对徐宏祖而言,从事这种职业的人,他已经遇到好几次了,但静闻大师,应该是第一次。此后的具体细节不太清楚,反正徐宏祖赶跑了强盗,但静闻在这场风波中受了伤,加上他的体质较弱,刚撑到广西,就圆寂了。
徐宏祖停了下来,办理静闻的后事。
由于路上遭遇强盗,此时,徐宏祖的路费已经不足了,如果继续往前走,后果难以预料。
所以当地人劝他,放弃前进念头,回家。
徐宏祖跟静闻,是素不相识的,说到底,也就是个伴,各有各的想法,静闻没打算写游记,徐宏祖也没打算去礼佛,实在没有什么交情。而且我还查过,他此前去过鸡足山,这次旅行对他而言,并没有太大的意义。
然而他说,我要继续前进,去鸡足山。
当地人问:为什么要去。
徐宏祖答:我答应了他,要带他去鸡足山。
可是,他已经去世了。
我带着他的骨灰去。答应他的事情,我要帮他做到。
徐宏祖出发了,为了一个逝去者的愿望,为了实现自己的承诺,虽然这个逝去者,他并不熟悉。
旅程很艰苦,没有路费的徐宏祖背着静闻的骨灰,没有任何资助,他只能住在荒野,靠野菜干粮充饥,为了能够继续前行,他还当掉了自己所能当掉的东西,只是为了一个承诺。
就这样,他按照原定路线,带着静闻,翻阅了广西十万大山,然后进入四川,越过峨眉山,沿着岷江,到达甘孜松潘。
Jul 2, 2022
1 min read
START PG
version: '2'
services:
postgresql:
container_name: pg
image: postgres:12
ports:
- '5432:5432'
volumes:
- 'postgresql_data:/var/lib/postgresql/data'
environment:
- 'POSTGRES_PASSWORD=!Qsx4rgb'
- 'PGDATA=/var/lib/postgresql/data/pgdata'
# adminer:
# image: adminer
# restart: always
# ports:
# - 8080:8080
volumes:
postgresql_data:
driver: local
安装pgcli
sudo apt install libpq-dev
pip install -U pgcli
export PATH=$PATH:/home/ubuntu/.local/bin
pgcli -U postgres -h localhost
更改配置
postgres@localhost> alter system set autovacuum = off;
postgres@localhost> SELECT pg_reload_conf();
postgres@localhost> show autovacuum;