首页
归档
友情链接
关于
Search
1
在wsl2中安装archlinux
105 阅读
2
nvim番外之将配置的插件管理器更新为lazy
78 阅读
3
2018总结与2019规划
62 阅读
4
PDF标准详解(五)——图形状态
40 阅读
5
为 MariaDB 配置远程访问权限
33 阅读
软件与环境配置
博客搭建
从0开始配置vim
Vim 从嫌弃到依赖
archlinux
Emacs
MySQL
Git与Github
AndroidStudio
cmake
读书笔记
编程
PDF 标准
从0自制解释器
qt
C/C++语言
Windows 编程
Python
Java
算法与数据结构
PE结构
Thinking
FIRE
菜谱
登录
Search
标签搜索
c++
c
学习笔记
windows
文本操作术
编辑器
NeoVim
Vim
win32
VimScript
emacs
linux
文本编辑器
Java
elisp
反汇编
OLEDB
数据库编程
数据结构
内核编程
Masimaro
累计撰写
314
篇文章
累计收到
31
条评论
首页
栏目
软件与环境配置
博客搭建
从0开始配置vim
Vim 从嫌弃到依赖
archlinux
Emacs
MySQL
Git与Github
AndroidStudio
cmake
读书笔记
编程
PDF 标准
从0自制解释器
qt
C/C++语言
Windows 编程
Python
Java
算法与数据结构
PE结构
Thinking
FIRE
菜谱
页面
归档
友情链接
关于
搜索到
314
篇与
的结果
2025-06-22
读 《用生活常识就能看懂财务报表》
前面提到过,我想系统性的学习一下价值投资并且实践里面的一些思想。价值投资简单讲起来就是投资企业的价值而不是价格。要想看懂企业的价值首先应该是要学会看财务报表。所以我最近需要学习一下这方面的知识。本书是我学习看财报的入门书,作为入门书来讲,它通俗易懂,将财报上的常见科目以普通人的日常生活来进行类比,做到了通俗易懂。下面是它的一些具体内容总体来说上市公司每季度会出一个季度报表、每半年会出一个半年报、每年也有一个年报。有这么多报表是不是都要分析呢?我们不用每张都仔细看,只需要重点看年报,至于季度报表只需要简单浏览一下,即可。报表并不是公司自己出了就完了,它需要第三方会计机构进行审核,也就是所谓的审计。要完全审计清楚这一份报表是非常耗时的。一般来说只有年报才会有会计的审计意见。对于财务报表,会计的审核意见有四种,这也是法律规定的,只能在这四种意见中选择其一。无保留意见:在注册会计师审查时未受到任何限制,报表完全准确,能真实反映企业的情况保留意见:有难言之隐,企业有些问题,但是不方便说无法表达意见:企业的报表我看不懂否定意见:完全不及格如果我们要看财报,发现年报上的审计意见不是无保留意见,那么可以直接掠过这家企业,因为它的财报完全不及格。企业的财报主要有三个报表:利润表、资产负债表、现金流量表;利润表告诉你企业到底是赚还是亏、资产负债表告诉你企业将钱都花在了哪里,现金流量表告诉你现金是怎么出入的,以及当前账上还有多少钱。这三个报表是立体的,全方位的,不能只看一张表。另外我们看财报时主要需要判断企业是否具有长期稳定盈利能力。一般建议看连续5年左右的财报利润表在看利润表之前需要注意一些事宜:销货收入多,不一定是好事光看销货收入的绝对值没有意义,要做分类光看单一科目、单一报表没有意义;利润表、资产负债表、现金流量表必须放在一起看阅读利润表的关键是看一家企业是否具有长期稳定盈利的能力以生活常识来看,我们普通人有一份工作收入,有时候又有投资收入或者买彩票中奖的收入;有衣食住行用、教育、医疗、人情世故等开销。最后由收入 - 支出就得到了真正剩余的钱,也就是所谓的利润。按照这个逻辑对照着看报表中的每一项;营业收入:是从事主营业务或其他业务所取得的收入,类似于普通职工的薪水营业成本、营业税费、销售费用、管理费用、财务费用、资产减值损失:这些科目都是花钱的科目,类似于上面的衣食住行用等项目息税前利润:它是在所得税之前、利息之前所赚的钱。所谓的利息就是企业长期欠款需要支付的利息利息收入/支出:一般只有长期欠款才有利息,包括公司欠别人的和别人欠公司的其他收入:除开主营业务的其他收入,例如政府退税、政策奖励、投资收益等等,拿个人来说就像中彩票,这种收入一般不可持续其他支出:主营业务以外的其他支出,例如罚款在利润表中,有这么几个公式:营业收入 - 营业成本 = 毛利润净利润 = 总收入 - 总支出利润表不能单看一个项目,而要从全局来看。例如但看营业收入高,企业不一定好,有可能其他开销也大,最终是亏损的状态。而且收入有多种来源,就像上面提到的有其他收入、利息收入等等。就算只看营业收入也需要看看按照一定的规则区分收入来源根据客户区分:营业收入的来源是分散的还是依靠某个或者某几个大客户。做生意讲究长久,如果长期依靠某一个大客户,一旦大客户转单就会产生蛮大的风险。根据产品线区分:区分哪些产品挣钱多,哪些挣钱少,未将来资源倾斜做准备;如果企业产品线单一也会有一定的风险根据地区分:如果企业的营业收入只在单个或者某几个区域,那么风险较大。如果在多个区域都能取得不错的收益,那么风险就比较小了所以看见销货收入之后必须有一个观念:不是只看见金额大就觉得很好,还要想办法去搜集资料,看细处的信息。如果要增加净利润,最好还是着重于提升收入,成本费用只做适当的管控。财务报表种,字越小越重要!小于6号字的部分,超重要!盈利临界点销售量:公司经营有营业收入、支出方面有固定支出和变动支出两大类。固定支出是不管卖出多少产品支出保持不变,例如人工费用、厂房、仓库、设备维护费用;变动支持是随着售卖产品数量的提高而提高,例如原材料,如果工人的工资是采用计件的方式,那么工资也是变动支出。盈利临界点销售量就是计算卖出多少产品时收支平衡。资产负债表资产负债表主要说明一家公司在经营事业时,拥有多少资产、积欠供货商与银行多少债务,以及向股东拿了多少钱来经营事业资产负债表与我们的存折类似,当天只显示当天的余额。资产负债表只显示制作这张表时的资产与负债。而利润表则表示一段时间内的经营情况。资产负债表有一个重要的恒等式:资产 = 负债 + 股东权益资产负债表分为左右两侧,左侧表示资产,右侧又被分成两部分,分别是负债和股东权益。这里的股东权益是公司资产扣除负债之后,剩余财产归股东所有。如果用钱的走向来描述这张表的话,右侧就是公司的资产来源,包括银行或者其他机构的贷款、欠供应商的钱这些都是负债,股东出资,公司利用这些钱换成了左侧的资产。所以左侧始终要等于右侧。用通俗的语言来解释资产负债表的话,首先我们通过各种渠道取得了一些钱,我们需要留一些现金应急,这些现金在表中被叫做现金与约当现金。也许会借钱给好朋友,这部分是应收账款。有时候会考虑买车、或者换车,车子就是移动资产。我们可以会投入一些股票或者基金或者长期的债券,这部分叫做长期投资,一年以内无法收回。可能会买房、租地,这些是固定资产。我们可能会继续进修、出国读书,这部分就是无形资产。资产负债表的右上方表示负债,用生活中的事件做对比的话,我们要还之前欠朋友的钱,这部分是应付账款。我们欠了银行房贷、车贷,这部分钱需要还几年甚至几十年,所以它们是长期贷款/长期负债。财报这些项目的摆放顺序是有讲究的,不是随意堆砌的,一般是按照资产变现的难易度来排序。要么从难到易,要么从易到难。我国采用的是从易到难的摆放顺序。在财务的世界里,越容易变成现金的项目,它的流动性就越高、要摆在上面。所以第一项就是现金和现金等价物。第二个是应收账款、后面紧接着是存货、预付账款、其他流动资产、机械厂房设备、土地、商誉、无形资产。在财务的世界里,一年以上的才叫长期,否则都是短期,一年内到期的债券也是现金等价物。一年以内到期的叫货币市场、一年以上到期的才叫资本市场。在财务世界里也有着所谓的物质守恒定律,报表中的东西不会消失只会从一处转移到另一处,例如现金流量表中的投资现金一般转化成了资产负债表中的资产。如果发现有项目平白无故多出来了或者消失了,自己也解释不了,在投资时可能就有风险。资产负债表中有时候会出现商誉这一项,书中的解释是商誉就是猪头,我觉得叫冤大头可能更合适。假设A公司总资产有1000亿元,负债400亿、股东权益600亿。B公司的资产为100亿,资产为 100亿,负债为80亿。此时B公司的净值为 100 - 80 = 20亿。如果A公司出资30亿并且是以现金的形式完全并购B公司的话,A公司的资产负债表中现金和现金等价物一栏要减少30亿,但是资产一栏只增加了20亿,那么这多余的10亿去哪了呢?这10亿就是商誉,所以商誉就是买贵了,当了冤大头。在财务领域,商誉 = 收购价 - 净资产。只有在发生并购并且买贵了的时候才会有商誉。当然如果买便宜了,这种状况叫资本公积。就是公司不劳而获的好处。资本公积是多赚的钱,被记录在资产资产负债表右下方,被算作股东权益。股东权益比较复杂,主要有四个部分构成:股本(实收资本):股东按注册资本实际投入的原始资金,如成立公司时股东缴纳的资本资本公积:股东投入超过注册资本的溢价部分(如股票发行溢价)或资产重估增值等,这部分属于不劳而获所得盈余公积:企业从税后利润中强制提取的积累资金(如法定盈余公积),用于弥补亏损或扩大经营,法律规定企业每年税后利润的10%需提取为法定盈余公积,剩余部分可用作未分配利润未分配利润:企业累积的净利润扣除分红和提取公积后的留存部分,可供未来分配或再投资资产负债表的概念就是有钱之后如何处置这些钱,比如有钱之后丢到表的左边就是购置资产、丢到右边就是偿还债务或者作为股东权益。例如公司刚刚开张,几位股东集资5000万然后又找银行贷款5000万,此时股东权益的股本部分增加5000万,负债部分有5000万。我们在公司账上留现金1000万,其余的都用作生产经营。此时左侧各项加起来等于1亿,右侧股东权益 + 负债也等于 1亿。在公司经营一年以后,赚取了2000万的净利润。其中1500万作为投资扩张,300万用于偿还部分债务、剩余200万作为保留。那么未分配利润为2000万。其中1500万体现在资产负债表中的固定资产或者其他投资项目中。现金和现金等价物这部分的现金会增加200万,所以左侧资产总额会增加1700万,右侧增加2000万的未分配利润,减去300万的负债结果仍然是1700万,左侧等于右侧。在上面这个例子中资产负债表左侧与右侧结合起来看就是购置资产来自哪里。刚开始成立的时候来自股东权益的股本和负债。在盈利之后,资产变动来自未分配利润。同时也可以看出钱去了哪里。如何利用资产负债表判断企业的经营能力呢?我们可以看公司的资产为公司做了几轮生意,如果以饭店来类比的话就是看饭店那些桌椅板凳的翻桌率——一段时间内能接待多少桌客人。对于公司来说公司资产一年内帮助公司做了几次生意就是公司资产的周转率公司的资产主要在左边,左边的每一项都可以计算出一个周转率。资产的周转率是衡量资产的使用效率的,即在这一年中为我们做了多少次生意。例如,总资产的周转率:一般计算公式为 $ 总资产周转率 = \frac{主营业务收入净额}{平均资产总额} $其中 $ 平均资产总额 = \frac{期初总资产 + 期末总资产}{2} $主营业务收入净额 = 销售收入 - 销售退回、折扣及折让这个值我们算出来的越大越好,越大代表着资产使用的效率越高。用一年的天数除以周转率就得到这项资产多少天会做成一趟生意,也就是资产的周转周期。这个天数可以使用360天或者365天,只要计算各项周转率使用的天数一样即可。假设总资产的周转率是6那么相当于公司总资产的周转周期是60天/次。也就是总资产每60天能带来一趟生意。其他资产项的周转率计算也是大同小异,分母变成了各个资产项的平均值,分子不变。如果总资产周转率小于1表示这是一个烧钱的行业,这种一般是资本密集型行业,这种公司一般来收高投入高回报或者低回报,意味着风险,普通人投资时尽量避开这种行业。但是如果这种公司的现金大于资产的25%,代表着有充足的现金,未来不会出现资金链断裂而变卖资产的情况。在实际运用时建议先看总资产周转率,然后再看固定资产周转率,接着看存货周转率,最后看看应收账款周转率。但是这些数据要结合具体行业,与行业内的其他企业进行对比。因为不同行业的企业采取不用的赚钱策略,一般零售业靠走效率,而科技企业一般可能三年不开张、开张吃三年。存货的周转率可以越高,存货周期就越短代表着生产的存货在仓库里待的时间越短,这意味着生产的产品越受市场欢迎。而应收账款周转率越大代表收款的时间间隔就越短,也就说明企业在交易中处于强势地位,即使不允许客户赊账也能卖出货。而应收账款周转率在一定程度上能帮助我们识别假交易。企业在有些时候会采用假交易的形式来虚报营业收入导致最后利润表看起来很不错,但是因为假交易是收不到钱的,所以它的应收账款周期越来越大(或者说应收账款周转率越来越小)。而且这种假交易会导致现金资产越来越少。现金流量表我们通过利润表和资产负债表能知道一个企业能否稳定盈利。但是盈利不代表就能生存下去,很多盈利能力不错的公司最后都因为资金断裂而倒闭。公司的资产并不能马上变成现金,而一旦现金以及现金等价物无法维持公司运转就会发生资金链断裂。公司能长期生存下去的关键就是有稳定的现金流。巴菲特就比较关注公司的现金流,他偏爱那种现金流稳定的公司。现金流量表就记录了公司的现金流。公司的现金流量表就像我们日常生活中记录的流水账一样,每一笔现金的进出都会记上一笔。日常生活中我们会记录买菜、加油、购物等支出也会记录工资等到账的情况。公司也是这样,公司一般将现金流分为经营活动的现金流、投资活动的现金流和融资活动的现金流。这几类的现金流都比较简单,我们可以根据字面意思来理解它。运营活动的现金流,主要来自利润表投资活动的现金流,主要来自资产负债表的左边融资活动的现金流,主要来自资产负债表的右边也就是说只要有利润表,期初和期末的资产负债表就可以推导出公司的现金流量表,它们三者是一个立体的关系。如果有现金流入,那么按照类型对应的科目会有以 正数表示的现金金额,如果有流出则是以负数来表示。我们分析现金流量表主要有下面几个步骤:确认经营活动的现金流大于0:如果有公司宣称它的营业额又增长了多少,最终我们需要看它是否真的赚到钱,也就是说经营活动的现金流为正数确认获利含金量:$ 获利含金量 = \frac{经营活动现金流}{净利润} $ ,刚开始公司规模比较小,没有折旧费、分期摊销费用,所以经营活动的现金流就等于净利润。随着公司规模增大,后面会采购更多的设备,因此会有折旧等费用,导致公司公司净利润慢慢的小于经营活动的现金流。正常情况下这个比值一定是大于 100%的。如果小于就代表公司有意外情况或者不为人知的内情、确认经营活动的现金流大于流动负债。流动负债是将来一年以内要到期的债务。如果不满足这个条件,也就是说公司赚的钱连它欠的债都还不上,公司将来会有资金链断裂的风险。确认经营活动的现金流、利润表上的净利润二者变化趋势是否相同。总结这本书适合作为阅读财报的入门书,书中没有高深的会计知识,也没有枯燥的术语,而是采用普通人的生活尝试来将表中的科目进行类比,让我们用生活尝试就能大致明白这些表中到底记录了什么内容,让我们对公司的经营状况有一个初步的认识。对于没有会计基础的读者来说是一本入门特别好的书
2025年06月22日
5 阅读
0 评论
0 点赞
2025-06-16
读 《源代码:比尔盖茨传》
本书是比尔盖茨自己给自己写的一本自传。讲述了盖茨从幼年到早期创建微软的成长经历。盖茨在开篇不久就提到自己热爱读书,我想成功人士都喜欢读书,就像查理芒格所说的,“我所认识的聪明人中,没有一个不是每天读书的,一个也没有”。另外盖茨从小也是一个不服输的人,例如他在于外祖母玩扑克游戏时总会为了赢开动脑筋,想方设法,不断尝试,直到他能赢为止。而且书中也提到他的老师针对这种性格制定了一些计划来激励盖茨努力学习。盖茨也是一个能深入思考、耐得住寂寞的人。盖茨在书中写道:“我会留出完整的时间,独自待在胡德运河,我称为‘思考周’。每年一两次,我会开车或乘坐水上飞机去到那里,待上七天,在不被打扰的状态下专心读书,钻研报刊文章和学术论文,突击学习一些我认为最需要掌握的知识。”盖茨所在的湖滨中学是典型的美国中产子弟学校,里面的学生家世都比较好,要么是工程师,要么是企业高管。该学校采取一种比较开放的教学态度,甚至引入计算机。在这里盖茨接触到了计算机编程并沉迷其中。在这里他结实了保罗、肯特这样的朋友。并且在湖滨中学有一个计算机编程小组,比尔盖茨描述了一种令人神往的友谊。在看到肯特的登山事故后,心理有一种惋惜甚至跟作者一样有一种悲伤的情绪在里面。一个有着个广泛阅读兴趣、强大内驱力、不断挑战自我、 不介意朋友奇怪性格行为的、盖茨此时最好的朋友突然离世,对任何人来说都是一个巨大的打击。我时常也在幻想,如果肯特没有离世而是陪伴盖茨创办微软并且作为微软的功勋不知道当今盖茨会有怎样的成就,当今的计算机技术会不会不一样,微软会不会比现在更大。从盖茨这本自传中,应证了爱迪生的一句话:“天才是1%的灵感加99%的汗水”。在记录湖滨中学这段历史时,编程小组的人总共完成了财务软件、选课软件以及最后为牛郎星计算机编写的basic解释器程序。在此期间盖茨和伙伴们经常夜以继日的编写代码,没有时间玩乐、没有时间好好吃饭、甚至没有时间打理自己,睡觉都是随便打地铺。我想盖茨的成功是必然的,即使他不在计算机领域取得成就也早晚会在其他领域取得同样的成就。而且他的家世对他的成功并没有起到决定性的作用,如果盖茨出生在一个更底层的家庭,他可能没办法接触计算机,不会取得如今这么大的成就,但是也能取得超越普通人的成就。盖茨永远都能在一群同龄人中脱颖而出。从这本书中我们可以窥见计算机发展的一些历史,盖茨最早接触是早期的大型计算机、那是一种需要靠打孔纸带输入程序的计算机,那个时候计算机还是庞然大物,只有科研机构和大型企业才有能力负担计算机的使用费用。随着因特尔集成芯片的推出,第一次有了面向个人的小型机。有了盖茨为之编写basic解释器的牛郎星计算机、也有了苹果公司推出的个人机。在早期计算机主要靠卖硬件赚钱,而软件只是附带的,可以自由的拷贝、修改。在小心机刚刚出现时盖茨就预测未来可以专门靠给计算机编写软件赚钱,并且意识到了软件版权的重要性,以此创建了微软。不得不说盖茨拥有敏锐的商业嗅觉,加上早期的微软主要是盖茨在做日常管理,也说说明他有很好的商业头脑,这与他早期大量读书是分不开的。本书的篇幅不算大,故事也在创建微软之后戛然而止。后面的故事可能还要等盖茨接着出书。本书并没有那种商业大佬自吹自擂,给读者灌输各种大道理或者夹带私货,反而写的十分朴实、真诚,就是一本简单的回忆录。是一本值得阅读的书
2025年06月16日
2 阅读
0 评论
0 点赞
2025-06-15
读《聪明的投资者》
本书作者是价值投资的鼻祖——本杰明格雷厄姆;本书也是价值投资领域非常经典的一本书。读这本书也是因为我在尝试做一些投资,希望学点投资理财的知识。下面我列举一下我从书中学到的一些东西投资与投机价值投资我的理解就是将钱投资到优秀的公司,靠公司良好的经营业绩带来利润的增长,赚得是公司业绩增长的钱。也就是所谓的买股票就是买公司,公司挣钱股票就能挣钱。这本书的开始,格雷厄姆给出了投资和投机的定义。在保留本金的前提下,利用自己的分析来带来资产的增值。最重要的是保住本金、其次是有自己理性的分析,最后才是尽可能的带来较高的收益。不满足这个条件的都是投机。普通人买股票要么在某个股票的价格低点买进、在高点卖出赚取其中的差价;要么靠所谓的内部消息进行买卖,利好则买入、利空则卖出;又或者是根据当前风口买入一些行业股票,比如之前的元宇宙、现在的AI概念股。格雷厄姆说这些方法对普通投资者来说可能风险很大。例如做波段并不是每次都能抓准时机,有可能最后的结果就是追涨杀跌;靠内部消息的话,作为普通投资者来说,消息传到你的耳朵里时在上游的股东或者庄家早就有这个消息了,甚至有时候这些消息就是上游玩家故意放出来误导普通投资者的。最后一种,跟风或者说看趋势,即使你看对了未来的风口也不一定能赚到钱,因为好的风口不一定能带来好的利润,第一个看到桃子的不一定是摘桃子的。防御型投资者的投资建议那么作为普通人该如何投资呢?格雷厄姆将投资者分为了防御型投资者和进攻型投资者。防御性投资者是没有什么专业的背景也不希望花大量的事件在投资这件事上,仅仅希望赚到合理利润的投资者。而进攻型投资者是有相关专业知识,花大量时间自己选股,并且希望能获取合理回报的投资者。格雷厄姆为两种投资者分别制定了不同的投资策略。防御性投资者应该是股债组合,动态调节。具体来说就是持有稳健的债券和优质的股票,股票占比在25%到75%之间根据个人风险承受能力来决定。例如可以债券和股票分别50%。每半年或者一年调仓一次,股票涨的多了,卖掉部分股票补充到债券中,或者股票跌了,卖出部分债券补充到股票中,再次将二者的比例回复到50%和50%。普通人没有特别专业的知识也没有那么多的时间来详细研究一家公司。对于防御型投资者来说什么是优质的股票呢?格雷厄姆也给出了一些优质股票的标准:首先应该分散风险,股票组合里面应该保留不同行业的10到30支股票选择行业龙头公司和财务稳健的公司,格雷厄姆建议选择流动资产是流动负债的两倍,这样不会因为高负债带来财务风险选择长期分红的公司,格雷厄姆建议至少有20年稳健分红历史的公司警惕新兴行业和高科技行业等高成长股,这种行业一般都是高风险高回报的。成长股的市盈率一般特别高,这代表这个公司的股票被严重高估。虽然可能在短期内挣到钱,但是亏损的风险也极大。对于市盈率格雷厄姆建议,7年的平均市盈率不超过25倍、如果只看一年的市盈率,应该不超过20倍另外格雷厄姆推荐使用定投的方式来买入这些优质的股票,在市场高估时候同样的金额买入少量的股票降低风险,在市场低估的时候同样的钱买入更多的份额为未来反弹提供基础进攻型投资者的建议对于进攻型投资者来说,仍然需要至少持有25%的债券。进攻型投资者往往具有更专业的知识、有更多的精力、也愿意花更多的时间和精力去寻找那些优质的股票。进攻型投资者应该在股价处于低估时买入、高估时卖出,通过市场的错判获取超过市场的收益。那么对于进攻型投资者来说,什么样的股票值得购买呢?寻找那些被市场冷落的龙头,可以在一些知名指数中寻找市盈率不高的公司寻找那些股价低于净营运资本的公司,净营运资本 = 流动资产 - 流动负债特殊机会,例如某些超级巨头遇到反垄断的拆分,遇到这种黑天鹅事件导致股价暴跌的机会,这种机会不大,需要我们密切关注市场动态。遇到了也不能盲目的入场,仍然需要理性的分析关于基金的讨论在稳健的市场中,基金一直是方便和容易的投资方式,基金就是将收集大众的钱交由专业的基金经理去打理,做到投资这种专业的事交给专业的人和机构去做。但是基金也没有想像中那么美好。首先我们总是会被市场的高收益神话所迷惑,在追求高收益时往往伴随着高风险大多数投资者都喜欢高收益的基金经理,认为过去的收益代表了他的示例。实际上过去的收益并不能代表未来,过往的高收益可能是运气格雷厄姆说基金的高收益可能跟早期基金的规模不大有关,在规模不大的时候,基金持有的一两只股票上涨有可能带动基金业绩上涨。一旦基金的规模上来了之后,根据基金当初规定的投资策略,基金经理需要拿着这些大量涌入的资金寻找合适的投资机会,而好的投资机会就那么多,基金经理可能会被迫买入普通股票。高昂的管理费也会侵蚀投资者的收益,有些基金设立时并不会考虑投资者的收益,而是赚取管理费。基金经理的利益与普通投资者的利益不一致,导致基金经理并没有多少热情来提高基金收益率羊群效应,当一只高收益的基金被发现后,市场会出现大量模仿该基金投资策略的基金。大量资金买入同样的股票会推高股票价格,增加风险。对于投资者来说该如何选择基金呢?首选指数基金,指数基金可以帮助我们获取市场的平均收益,而且指数基金费用普遍不高选择基金经理与投资者利益一致的基金,要么基金经理自己是老板不会跳槽跳槽到其他基金的,或者基金经理、基金公司自己有大量的钱投入到该基金,这样基金经理才会关注业绩会买的是徒弟,会卖的才是师傅,投资者应该在合适卖出基金呢?格雷厄姆给出了几点建议交易策略突然发生急剧的变化基金经理变动业绩出现异常波动,原本稳健的基金突然大幅亏损或者暴涨或者给自己设定一个止盈值,例如在收益率达到20%之后卖出作为公司股东当我们买了股票之后我们就是公司的股东,我们有权参加公司的股东大会,当管理层不靠谱时有权提议更换管理层,但是好像大多数普通股民并不关注公司的管理层,也不关心公司的运营情况。作为普通股民我们应该关注公司的那些层面呢?应该关注公司的利益分配,也就是公司是否愿意拿出利益来给股东分红。安全边际所谓的安全边际就是安全的底线,通俗的来讲就是以1元买入价值10元的资产比8元的价格买入未来要赚的更多也更安全。以足够低的价格买入合理的资产。目前来说没有通用的标准来判断一家公司的股价是否处于安全边际。需要自己根据实际情况自己去寻找适合的价格标的。总结价值投资的核心是以足够低的价格买入内在价值高的公司,不关心具体的价格,只关心公司的内在价值。公司的内在价值需要自己根据专业知识判断。我最大的领悟就是投资最重要的是要有风险意识,要保住本金。并且它定义了我是一位防御型投资者并且给了我一个通用的投资策略。后面我会根据这个策略来进行相关的实践,尝试每年总结一下自己的投资。
2025年06月15日
1 阅读
0 评论
0 点赞
2025-05-29
Emacs 折腾日记(二十六)——buffer与窗口管理
本节我们将介绍如何在Emacs中的buffer与窗口管理,目标是快速管理窗口,以及快速在不同buffer中进行切换基本概念介绍Emacs与vim相比的一个特点是,Emacs是一个窗口程序,或者说是一个gui程序。而vim是一个终端字符界面程序(当然Emacs也可以启用终端模式),那么与vim相比,Emacs多了了一个frame的概念。有时候有些初学者(包括我自己)总是将frame当作窗口。frame:Emacs整个程序,包括标题栏、工具栏、显示文本的界面等等部分window: 真正用来显示文本的区域被称之为window。我们经常说的分屏就是创建了一个window,frame里可以包含多个windowbuffer: Emacs 从磁盘中读取的文本保存在buffer中,buffer不一定都在window上显示。也不是所有buffer都对应一个文件针对frame来说,虽然也有相关的函数可以控制,但是一般我不太喜欢在多个frame之间进行切换,也不习惯创建多个frame。所以这里先略过window 管理关于 window。在之前介绍了window相关的函数,包括 split-window、selected-window、delete-window、以及跟窗口设置相关的 current-window-configuration、set-window-configuration。基于evil插件,我们可以使用vim的窗口创建命令。例如可以使用 :vsp 来将窗口进行纵向分割。但是我发现 :sp 和 :vsp 都是纵向分割的,这个跟vim就不太一样了。好在evil提供了一个名为 evil-ex-define-cmd 函数用来修改ex命令。所以这里我们在evil的配置中进行修改,添加下面的代码(evil-ex-define-cmd "sp" 'split-window-below) (evil-ex-define-cmd "vsp" 'split-window-right)窗口创建完成之后,我们可以使用vim 的方式来关闭窗口,例如使用 :q 命令来关闭当前窗口,或者使用 :on (或者它的全称 :only) 命令来关闭其他所有窗口。在窗口之间的移动,当初我在介绍vim配置的时候介绍过我习惯使用 leader + 'h/j/k/l' 的方式来在各个窗口间移动。但是在Emacs中,我们有比这更高效的移动方式。ace-window 是一个在各个窗口之间进行快速跳转的插件,在激活ace-window 之后,它会在各个窗口上标记一个数字,我们可以按下这个数字快速跳转到对应的窗口(use-package ace-window :ensure t :after general :hook (dired-mode . (lambda () (setq-local aw-ignore-on t))) ;; dired-mode 下禁用 ace-window :config (my-leader-def :states '(normal visual) ";" #'ace-window "l" #'evil-window-left "h" #'evil-window-right "j" #'evil-window-down "k" #'evil-window-up) )这里我们绑定 leader + ; 来调用 ace-window 执行窗口的跳转buffer 管理在介绍neovim 的配置的时候,介绍过一个名为 buffer-line 的插件,它可以很方便的将 buffer 以 tab 的形式给列出来,并且可以根据当前打开的buffer上的编号来进行跳转,我们绑定了 leader + 1~9 的数字来分别跳转到编号为 1~9 的buffer。Emacs中我也希望实现这样的功能,可以将vim上的操作无缝的转移到Emacs上来。要实现这个功能,我们可以安装 awesome-tab 包。它并没有被包含在Emacs 的官方源中,我们需要自行下载git clone --depth=1 https://github.com/manateelazycat/awesome-tab.git将它下载到对应的位置之后,如果要加载它,则需要将它所在的路径放到 load-path 中如果使用 use-package 来加载可以使用如下的代码(use-package awesome-tab :load-path "path/to/your/awesome-tab" :config (awesome-tab-mode t))启用之后,当我们多开了几个buffer之后,它们被显示到不同的tab上了。如果希望能像 buffer-line 那样根据编号跳转,首先可以通过 awesome-tab-show-tab-index 来显示tab上的编号,然后绑定数字键到 awesome-tab-select-visible-tab 进行跳转。解决了这个问题,剩下的函数官方文档上都有介绍,所以我们还是沿用vim上的快捷键,最终的配置如下:(use-package awesome-tab :load-path "~/.emacs.d/awesome-tab" :after general :custom (awesome-tab-show-tab-index 1) :config (awesome-tab-mode t) (my-leader-def :states '(normal) "gb" #'awesome-tab-ace-jump "gT" #'awesome-tab-backward-tab "gt" #'awesome-tab-forward-tab "1" #'awesome-tab-select-visible-tab "2" #'awesome-tab-select-visible-tab "3" #'awesome-tab-select-visible-tab "4" #'awesome-tab-select-visible-tab "5" #'awesome-tab-select-visible-tab "6" #'awesome-tab-select-visible-tab "7" #'awesome-tab-select-visible-tab "8" #'awesome-tab-select-visible-tab "9" #'awesome-tab-select-visible-tab))awesome-tab还可以针对不同的buffer进行分组,然后对分组的buffer进行统一的操作,这里就不介绍了,有兴趣的读者可以自行阅读相关的文档。本节到此就结束了,本节通过 ace-window 和 awesome-tab 插件基本复刻了vim中有关窗口的配置和快捷键。
2025年05月29日
3 阅读
0 评论
0 点赞
2025-05-22
Emacs 折腾日记(二十五)——目录管理
在之前的文章中,分了几篇着重介绍了Emacs编辑方面的功能改造。作为一个文本编辑器,要想坚持用下去首先应该改造成自己熟悉的编辑方式。本节我们来介绍Emacs的目录管理Dired ModeEmacs自带一个名为 Dired (Directory Editor) 的插件,它负责对目录进行操作。默认的,我们可以使用 C-x d 来进入Dired Mode。启动后它会等待用户输入想进入的目录,默认是当前目录。Dired Mode 是提供了一种类似操作文本的方式来操作目录。我们可以像操作文本那样来对目录进行类似于拷贝剪切粘贴删除创建跳转查找重命名批量操作得益于前面的篇章配置的一些插件,可以很方便的使用Dired Modedired 美化在正式介绍dired 使用之前,先稍微对它进行一些美化,原始的界面太素了,看着不太好看。首先介绍 diredfl ,原始的dired 只能使用两种颜色来区别文件和目录,而 diredfl 可以使用多种颜色,让dired显示的更加漂亮(use-package diredfl :ensure t :hook (dired-mode . diredfl-mode))接着我们再使用 all-the-icons-dired 来给dired显示的前面加上一个图标。这个插件依赖 all-the-icons 插件。(use-package all-the-icons :ensure t :when (display-graphic-p) :commands all-the-icons-install-fonts) ;; 安装完成之后需要执行 all-the-icons-install-fonts 命令安装对应字体 (use-package all-the-icons-dired :ensure t :hook (dired-mode . all-the-icons-dired-mode))我们也可以通过安装 all-the-icons-completion 插件,给minibuffer中的补全系统也加上图标(use-package all-the-icons-completion :ensure t :hook ((after-init . all-the-icons-completion-mode) (marginalia-mode . all-the-icons-completion-mode)))dirvish 增强direddirvish 是在dired 基础之上的文件管理增强插件。相对与dired 它提供快速跳转、实时预览、并且能兼容对dired的一些扩展。(use-package dirvish :ensure t :hook (after-init . dirvish-override-dired-mode) :bind( ("C-x d" . dirvish) )) 我们使用命令 dirvish 就能打开对应的窗口,或者像上面那样绑定快捷键来打开对应的窗口使用vim的方式来操作目录这里的使用vim的方式来操作多少有点标题党的意思。我无法做到完全按照vim编辑文本那样来编辑目录,但是这里我可以修改以下对应的快捷键已达到某些操作可以使用vim的快捷键。(use-package dirvish :ensure t :hook (after-init . dirvish-override-dired-mode) :bind(:map dired-mode-map ("C-x d" . dirvish) ("y" . dired-do-copy) ;; 拷贝粘贴 ("d" . dired-do-delete) ;; 删除 ("r" . dired-do-rename) ;; 重命名 ("a" . dired-create-empty-file) ;; 创建空文件 ("+" . dired-create-directory) ;; 创建文件 ("SPC" . nil) ;; 取消空格键的绑定 ) :config (with-eval-after-load 'evil (evil-define-key 'normal dired-mode-map "r" 'dired-do-rename)) ;; 排除evil模式下默认键的覆盖 (my-leader-def "j" #'dired-goto-file) )在上述的配置中,我绑定的快捷键如下快捷键功能C-x d打开diredy拷贝d删除r重命名a创建空文件+创建空目录SPC j跳转到指定文件需要注意的是,在 config 中调用了这样的语句 (with-eval-after-load 'evil (evil-define-key 'normal dired-mode-map "r" 'dired-do-rename))with-eval-after-load 表示在某个插件加载之后,这句代码的意思是,在evil插件加载后,在normal模式下,我们定义dired mode 下快捷键 r 绑定到 dired-do-rename,也就是重命名这个功能。之所以要这么做是因为在evil插件加载后会覆盖我们定义的快捷键。另外为了正常使用 leader键,这里特意取消了空格键在dired 中的定义,原本它被定义为跳转到下一行。这些功能都比较简单,所以这里就不演示了。搜索文件并跳转正常情况下,当项目文件和代码量上来之后,再一个目录一个目录的找就不太现实了。常见的是根据代码中函数定义来找文件或者根据文件来找函数定义。前者我们通过consult-rg 已经实现了。这里介绍以下如何通过文件名来查找并快速打开文件我们可以使用 consult-locate 来搜索文件,结合前面介绍的orderless,我们只需要对文件有一个相对的映像就可以找到。想要使用 consult-locate 需要安装 locate 程序,在Arch Linux 中可以使用下面的命令安装sudo pacman -S mlocate sudo updatedb ;; 更新数据库我们以打开配置文件中的 init-completion.el 为例。我们可以直接使用 M-x 输入命令 consult-locate并回车 , 接着在命令提示符后输入一个大概的内容,然后在minibuffer的候选项中找到对应的文件即可我们也可以结合 embark-act 命令来做到跳转到文件所在的 dired 中,这里我们在 embark 的配置中添加一个快捷键定义(use-package embark :ensure t :after consult :bind (("C-e" . embark-export) ("C-;" . embark-act))) ;; 添加 embark-act 快捷键这样在定位到文件之后,可以直接使用 C-; 调出对应的动作,最后使用 j 来完成进入dired的动作有了 consult-locate 和 embark-act,前面介绍的 dired中的跳转操作的实用性就大大降低了,如果我们记得文件的全路径,直接使用 find-file 打开就好了。如果只有一个模糊的映像,那么使用 consult-locate 配合 orderless,比进入dired 然后执行跳转要快的多到这里,Emacs中关于目录管理的部分就介绍完了。使用dired配合键盘操作能极大的提升的效率
2025年05月22日
4 阅读
0 评论
0 点赞
2025-05-16
Emacs 折腾日记(二十四)——帮助信息的一些优化
Emacs 是一个自文档的系统,任何有关Emacs的信息都可以通过Emacs自身查阅。包括基础的入门手册、elisp手册、以及各种插件的相关说明信息。一般遇到不懂的变量直接使用 C-h v。查看它的说明。使用 C-h f 查阅相关函数、使用 C-h k 来查找对应快捷键绑定的函数。一般来说阅读官方一手的文档比从任何论坛或者搜索引擎来的更快更准确,而且有不少Emacs高手都推荐多多阅读Emacs的官方文档。本节就着重介绍一下我了解的关于阅读文档的一些姿势。查找相关定义最开始介绍过使用 C-h f 之类的查看相关文档,Emacs所谓的子文档不光指的是查看文档,而且还可以查看相关的源代码。有些我们可以通过文档中给出的源码链接点进去看,但是还是不如直接查看源码。直接查看源码可以使用 find-function、find-variable、find-function-on-key。它们分别对应着查找函数、变量、以及快捷键绑定的函数定义。我们可以绑定一些快捷键(global-set-key (kbd "C-h C-f") 'find-function) (global-set-key (kbd "C-h C-v") 'find-variable) (global-set-key (kbd "C-h C-k") 'find-function-on-key)对默认文档显示的优化我觉得官方的文档显得比较素,比较原始。为了提高阅读的体验我们可以对文档进行美化。这里可以使用 helpful来增强一下。(use-package helpful :ensure t :bind (("C-h f" . helpful-callable) ("C-h v" . helpful-variable) ("C-h k" . helpful-key) ("C-h s" . helpful-symbol) ))我们针对 C-h k 这个快捷键来对比一下原始的文档和 helpful 增强之后的文档显示效果对比发现,helpful 不光对显示效果进行了一些改进,而且显示的内容更加丰富。特别是它已经可以直接显示出相关定义的源代码,在某种程度上替换默认的 find-function 等函数。which-key在介绍配置 neovim 的时候,介绍了 which-key 插件,它可以根据用户输入的快捷键前缀显示所有可能的匹配,使我们记忆快捷键的负担减轻。Emacs上也有类似的插件。在Emacs 30以后内置了 which-key 插件,我们只需要启用(use-package which-key :ensure t :hook (after-init . which-key-mode) :custom (which-key-idle-delay 0.7))
2025年05月16日
2 阅读
0 评论
0 点赞
2025-05-14
读《恶意的构图:侦探的委托人》
峰岸谅一被怀疑通过纵火杀害了他的岳父,因为在峰岸老人被烧死在自己公寓的晚上,谅一告知警察他未出现在公寓附近,但是邻居却作证,当天晚上看到谅一出现在公寓附近。并且警察在纵火现场发现了他的打火机,而且谅一右脸刚好有烧伤的痕迹,虽然他狡辩说自己不小心在烧开水时烫伤。另外谅一的公司出现资金周转困难,急需用钱,而峰岸老人早期通过炒股早已实现财富自由。这些线索都让警察认定他就是凶手,并且检察机关对他提起诉讼。谅一希望通过衣田律师进行辩护,奇怪的是衣田律师此前并没有进行过刑事案件的辩护。当然衣田律师接到这个案子后也尽心尽力帮助谅一进行辩护。但是对于案件的关键部分,他总是含糊其辞,辩护律师衣田征夫也被弄得晕头转向。好巧不巧,在谅一即将迎来最终判决时,谅一的妻子,朱实女士被发现不幸溺亡在别墅的地下室中。警方通过排查认定是之前被害的峰岸老人为了天冷时水管不被冻住打开了水龙头,并且一时疏忽忘记关闭水龙头,而朱实女生在不知情的情况下贸然乘坐电梯前往地下室,当电梯门开后地下室的水涌入电梯导致了她的死亡。这个时候故事迎来了第一个反转——在朱实去世后,谅一突然提出他有不在场证明。因为在火灾发生后,他曾今与一位戴着墨镜头顶假发的女子在一家旅馆同居,并且旅馆工作人员也证实,谅一脸上的烫伤是在旅馆弄的。最终谅一被无罪释放。在谅一被释放后不久,谅一被发现死在别墅中,并且警方发现他被人从楼梯上推下,但是他真正的死因却是砷化物中毒。并且谅一开过来的车子也被烧毁。此时故事进入到两名女子的回忆中,首先是谅一的小姨子,也就是朱实的妹妹幕叶。通过幕叶的回忆,此时我认为是朱实女士提前在峰岸老人酿造好的梅子酒中下毒,因为她知道谅一喜欢这种酒,并且在她利用自己的死成功报复了谅一。而且幕叶有一个表弟名叫启太。因为家庭缘故,启太慢慢变成了一个不良少年,但是因为从小受舅舅启治的疼爱,所以幕叶一直对启太很好,并且他们之间的姐弟关系也维持的不错,但是在一天早上幕叶发现启太居然开车撞向她,想置她于死地。幕叶怀疑与谅一在火灾发生那一晚同居的女性是佳苗。由此引入了今村佳苗的回忆。佳苗与启治是重组家庭,因为启治的前妻久子患有精神类疾病,所以与久子离婚后与佳苗再婚了。同时佳苗带来了一个女儿——美土里。启治再婚后,启太露出了叛逆的一幕,因为他之前与父亲表面关系好,仅仅是希望父亲不要抛下生病的母亲,但是父亲再婚后,他的幻想彻底破灭,并且从此学坏了,不光逃课逃学,后面小偷小摸,并且与帮派扯上关系。几年之后美土里也离家出走,与帮派的一位少爷同居了,为了请求帮派拆散他们二人并且让美土里回来,启治只能找到有帮派有关系的人从中周旋并且借了2000万的高利贷。虽然女儿回来了,但是高利贷压得他们一家喘不过气来。只好向峰岸老人借钱。在债务问题眼看着要解决的时候,谅一表示他代表岳父峰岸老人来要债,最终启治卧轨自杀。在启治自杀后,美土里又离家出走了。并且佳苗在打扫女儿的房间时发现了墨镜和假发,原来那天与谅一同居的人是美土里。并且这个时候美土里的男友也找上门来。前面给出的各种推理用的线索,让人目不暇接。这个时候侦探登场了,随着侦探的登场,真相也在这一刻揭秘。本书在设置谜题这块我觉得有所欠缺,它并不是那种传统推理小说中的谜题,反而是一个社会中常见的凶杀案。而且最后结尾处强行将所有人融成一个圈子,虽然这个伏笔令人眼前一亮,但是感觉经不起推敲。不过我没看过前面的几作,所以这里不做过多的评价。但是它并不是我期待的那种推理小说,除了有案件、有侦探,我感觉不出来有什么额外的推理元素。也没有读后那种解开真相的爽快感。只有简单的“哦,原来是这样啊”,这种平淡。
2025年05月14日
1 阅读
0 评论
0 点赞
2025-05-14
Emacs 折腾日记(二十三)——进一步提升编辑效率
在前面的几篇,我们完成了Emacs的vim模拟器、中文输入、多行编辑以及基本的补全功能的添加。这一篇没有具体的提升哪一方面的能力,这一篇我想整合我在其他教程中看到的我认为对我比较有用的用法和插件,算是对前期功能的一个总结。让Emacs记住一些信息一般的编辑器都会在下次打开时记住上次的一些信息,例如记住之前打开过的文件,执行过的命令,或者记住上次的窗口布局。记住上次执行的命令我们每次使用 M-x 执行命令时,minibuffer中显示的提示都是一样的,那些常用命令要么不在上面要么太靠下了,我们希望能记住某些命令,以便能快速找到它。记住上次执行的命令可以使用 savehist 插件。它是一个Emacs自带的插件,默认是关闭的状态,我们可以通过将 use-package 来加载它,但是因为是自带的,不需要从镜像中下载所以它的 :ensure 项应该设置为 nil(use-package savehist :ensure nil :hook (after-init . savehist-mode) :custom (savehist-file (locate-user-emacs-file "custom/savehist")) ;; 设置保存文件的位置 (savehist-additional-variables '(kill-rings shell-command-history)) ;; 额外保存剪切板和shell命令行历史 (savehist-ignored-variables '(message-history)) ;; 不保存消息历史 (history-delete-duplicates t) ;; 自动去重 (history-length 1000) ;; 保存历史数据条目 )在执行一些操作关掉Emacs之后,我们会发现它在 ~/.emacs.d/custom 生成了一个名为 savehist 的文件,它记录了之前在minibuffer中执行的命令。为了保持git工程的干净,我打算将这种历史文件排除在git管理之外,所以单独将它放到custom目录,并忽略它其实该插件不光可以保留执行的命令,minibuffer中的许多信息它都可以保存和持久化。minibuffer-history (所有 minibuffer 输入历史)command-history (执行过的命令)search-ring (搜索历史)regexp-search-ring (正则搜索历史)extended-command-history (M-x 命令历史)file-name-history (文件路径历史)记住上次打开的文件一般的编辑器都可以记录上次打开的文件,并列出来。Emacs也有一个类似的内置插件—— recentf(use-package recentf :ensure nil :hook (after-init . recentf-mode) :custom (recentf-max-menu-item 10) ;; 最多只记录10条历史记录 (recentf-save-file (locate-user-emacs-file "custom/.recentf")) ;; 定义保存历史记录的临时文件路径 )搜索功能的增强实现全局搜索我们可以依赖Linux上的命令行工具 grep 和最近(也不算近了)的 ripgrep。之前在介绍vim的时候,vim内部集成了 grep。但是我们使用更为强大的 ripgrep。在Emacs中可以配合插件 consult 和 ripgrep,调用 consult-ripgrep 来进行全局搜索。它会自动搜索当前项目下的所有目录。我们对之前 consult 插件的配置代码进行一些修改,并添加 ripgrep 的配置(use-package consult :ensure t) (use-package ripgrep :ensure t :after consult :bind (("C-s" . consult-ripgrep)) )这里我们将 C-s 绑定的快捷键修改为 consult-ripgrep。神奇的是,配合之前安装的orderless,我们只需要按照一个模糊的记忆来匹配想要的内容。同时它也能支持输入中文批量替换批量替换这个功能,根据我找到的教程,它需要依赖 embark、consult、和 wgrep 这么三个插件。其中 consult 用来进行搜索,而 embark 可以为不同场景下的文本/候选项(如搜索结果、补全列表、文件路径等)提供动态的快捷操作菜单。简化了minibuffer上的一些操作。而 wgrep 则是其中的核心插件,用来批量修改内容并保存(use-package embark :ensure t :after consult :bind (("C-e" . embark-export))) (use-package embark-consult :ensure t :after embark) (use-package wgrep :ensure t :custom (wgrep-auto-save-buffer t) ;; 自动保存修改 )这里我们使用 :after 来保证插件的加载顺序依次为 consult、embark、embark-consult,特别是 embark-consult,它依赖 consult 和 embark,一定要将它放到后面加载。下面来演示如何进行批量替换,这里我们将配置中所有 use-package 修改为 package-install,修改之前记得使用git等版本管理工具进行备份首先,使用 C-s 搜索 use-package 关键字接着使用 C-e, 也就是上面绑定的快捷键来将结果从 minibuffer 导出到 buffer然后使用 C-c C-p 调用 wgrep-change-to-wgrep-mode 将 buffer 的mode由 grep-mode 修改为 wgrep-mode接着使用 M-% 调用 query-replace 进行替换,这个时候它需要输入被替换的字符和替换后的字符确定后,对于每个待替换的位置使用 y 或者 n 来表示替换或者不替换。也可以使用 ! 替换所有最后使用 C-c C-c 调用 wgrep-finish-edit 来结束编辑,配置之前设置的自动保存,此时修改内容已经被保存了修改之后如何不满意,可以使用 C-c C-k 撤销修改小节这应该是最后一篇关于Emacs自身编辑功能的增强了,在这一块我没有使用太多的Emacs经验。倒是在vim上有点经验,所以很多东西我不自觉地就往vim上面靠,总想着vim在编辑上有些功能Emacs上还没有,该如何进行添加,这几篇就显得比较分散,总是想到什么功能就往上面堆。为此造成各位读者阅读体验不佳,我表示道歉。谢谢各位读者的支持和鼓励!
2025年05月14日
5 阅读
0 评论
0 点赞
2025-05-07
读 《南京大屠杀》
这本书是我收藏在书架上好久都不愿意读的一本书。因为它里面的内容是如此的沉重。作为一个历史上著名的事件,从中学课到各种记录片,都描述了在这个事件中,敌人是多么的残酷,多么的灭绝人性。而且据说作者还因为这本书导致精神出现问题,最终因为精神问题自杀。我不知道在读完这本书之后会是怎样的心情。但是借着五一这段假期我没什么事,索性读完它。本书分为3个部分,分别讲述了历史上的南京大屠杀,从日本人的角度如何看待南京大屠杀,以及一些国际友人在这场浩劫中采取的救助行动。书中从各个角度,详细的描述了南京大屠杀的惨状。在读这本书的过程中,我时不时停下来,想想书中描述的场景,与之前看过的记录片联系起来。我很难想象这些暴行是出自人类之手,日本人就是未进化的野兽,卑鄙下作的下等人,我实在是找不到合适的词语来形容这种暴行。我想正常人类的文字应该无法准确的描述当初国人的惨状,任何人在看完相关记录之后能心平气和的看待日本和日本人。但是我们不应该一棒子打死所有日本人,书中虽然没有记载,但是我们记住了很多拥有共产主义精神和国际主义精神的日本人,在那段历史中仍然有部分日本人及时醒悟过来并且投入到反抗帝国主义暴行的运动中来。毛主席高瞻远瞩的写出“中国人民和日本人民的敌人是一致的,都是日本帝国主义以及中华名族的败类”。南京大屠杀是任何中国人都不应该忘却的惨痛历史,我实在是不太想详细的记录这本书的一些细节。首先这本书里面的内容之震撼不是简单的就能概括的,真正的震撼应该要亲自阅读这本书。另外这本书里面写的内容在没有做好心理准备之前是不适合阅读的,在阅读的过程中我总是要停下来狠狠的骂一下日本人才能继续阅读,不然我心理实在过意不去。个中滋味我想只有在阅读的过程中才能体会到。我对日本这个名族一直很矛盾,日本有优秀的电影、音乐、文学、游戏、动漫等文化产业,但同时又是一个充满野心,又保留军国主义的国度。我想还是毛主席说的对,我们应该仇恨军国主义,日本的右翼思想。而不应该仇恨普通的日本人。他们与我们一样,承受了战争的痛苦和苦难。
2025年05月07日
2 阅读
0 评论
0 点赞
2025-05-07
Emacs 折腾日记(二十二)——补全强化
在之前的一系列文章中,我们对Emacs做了一些小范围的定制,目前它已经可以很好的模拟vim的一些基础功能。我们也在模拟vim基础功能之上做了一些能力的提升。本篇我们将对Emacs自带的补全系统做一个升级,并且给出一些搜索和替换的方案,进一步提升Emacs的效率Emacs上有很多很好用的补全插件,著名的有前期的 ivy 体系和当前社区比较火的vertico 体系。为了与时俱进,而且Emacs-China中的很多帖子也推荐使用vertico,所以这里我也介绍这个体系中的插件。vertico 体系中包括下面几个插件:verticoconsultcorfumarginaliaorderlessconsultconsult 插件提供了一系列的查找和补全命令(use-package consult :ensure t :bind (("C-s" . consult-line)))这样我们可以通过使用 C-s 来进行搜索vertico默认情况下,我们使用M-x 输入命令时没有补全提示,但是可以使用TAB 键补全。我们可以通过命令 icomplete-mode 来启用这个mode,以便在输入命令时能拥有一个补全。但是这个补全采用的是横向排版的方式,显示上也不太直观。这里我们可以通过vertico 插件对补全进行增强。vertico 提供了一个垂直样式的补全系统。我们可以通过下列代码来安装并启用它(use-package vertico :ensure t :hook (after-init . vertico-mode))重启emacs之后,再执行 M-x 之后发现它已经可以竖直的显示命令,并且会列出可能的命令了。可以使用 C-n、C-p 来选择下一个或者上一个命令orderless顾名思义,orderless 提供一种无序补全。它可以将一个搜索的范式变成数个以空格分隔的部分,各部分之间没有顺序,你要做的就是根据记忆输入关键词、空格、关键词。它改变了我们使用和思考的习惯,我们不再需要关心信息的顺序,我们只需要在脑海中搜索关键信息片段,然后把这些片段组合起来即可,剩下的都交给Emacs。例如我们要输入 package-refresh-contents 来刷新包管理里面的源。常规的做法我们需要先输入 pack 等等字符,然后由补全信息给我们提示,加入 orderless 之后,可以凭借模糊的记忆输入类似 refre pack 这样的片段来进行匹配(use-package orderless :ensure t :init (setq completion-styles '(orderless)))orderless 是针对整个minibuffer进行增强的,只要是使用minibuffer的地方都可以使用。例如我们上面使用了 consult 插件并且绑定了 C-s 来进行搜索,这里我们就可以使用orderless 来配合完成搜索功能marginaliamarginalia 可以给minibuffer中候选条目显示一段注释或者其他信息。其实不光是执行命令的时候marginalia是启用的,现在只要是minibuffer中的选项,marginalia都是可以使用的,例如使用 switch-buffer 和 find-file 或者使用帮助信息的时候也可以展示相关信息corfucorfu 可以让我们通过弹窗进行补全。(use-package corfu :ensure t :hook (after-init . global-corfu-mode) :custom (corfu-auto t) (corfu-auto-deply 0) (corfu-min-width 1) :init (corfu-history-mode) (corfu-popupinfo-mode))在安装完成之后,我们在编写相关配置的时候可以配合orderless,只输入函数的部分,仅仅凭借模糊的记忆让Emacs自己来匹配我们想要的内容,极大的提高了输入的效率capecorfu 插件仅仅是一个补全的前端,它需要补全后端提供数据。好在Emacs 自己提供了有关elisp 的补全后端,所以上面在测试corfu补全的时候可以出现。但是在其他文本类型不会产生补全选项。而cape则是集成了多种补全后端,它与corfu联合起来可以起到很好的补全效果(use-package cape :ensure t :init (add-to-list 'completion-at-point-functions #'cape-dabbrev) (add-to-list 'completion-at-point-functions #'cape-file) (add-to-list 'completion-at-point-functions #'cape-keyword) (add-to-list 'completion-at-point-functions #'cape-ispell) (add-to-list 'completion-at-point-functions #'cape-dict) (add-to-list 'completion-at-point-functions #'cape-symbol) (add-to-list 'completion-at-point-functions #'cape-line))上述代码中 completion-at-point-functions 保存的是Emacs在补全时调用的相关函数来获取补全项,我们将cape 的相关函数添加到这个列表中,供Emacs在触发补全时调用。到此为止,我们对Emacs自身的补全进行了加强。进一步提升了编辑的效率
2025年05月07日
2 阅读
0 评论
0 点赞
1
2
...
32