虽然很早就知道 GitHub 发布了 Profile 功能,可以使用 README 来丰富 Profile 页面。但是一直以来没啥动力,大多数时候都不会去到主页去访问。但现在有些时候逛 GitHub 的时候会点到 其他人 的主页去看,发现有一些主页虽然只有寥寥几句,但却可以清楚的知道「他/她」最近在贡献什么内容,擅长什么技能。虽然我在 GitHub 上还是观摹大佬居多,但也想着通过这个契机在整理 GitHub Profile 的时候加深一下对自己的认知。
至于如何建立同名的 repository,如果提交代码就先略过了,官方的帮助和其他文章的内容都非常详细。
刚开始去 Google 「GitHub Profile」 就发现了如下的页面生成器 GitHub Profile Generator ,可以用这个生成器生成一个初始版本,然后在其基础上修改。
在调研的过程中基本发现了两大类主流的用法,一类是通过 GitHub 的 API ,或者其他服务的 API,生成一个 Badge 展示,另外一类就是通过 [[GitHub Actions]] 通过定时任务动态的使用代码聚合一些内容,然后再动态地展示到页面中。
因为 README 中可以直接写 HTML,所以如下的 HTML 也可以直接使用,注意替换其中的链接。
<h3 align="left">Connect with me:</h3>
<p align="left">
<a href="your link" target="blank"><img align="center" src="https://cdn.jsdelivr.net/npm/simple-icons@3.0.1/icons/twitter.svg" alt="" height="30" width="40" /></a>
<a href="your link" target="blank"><img align="center" src="https://cdn.jsdelivr.net/npm/simple-icons@3.0.1/icons/linkedin.svg" alt="" height="30" width="40" /></a>
<a href="your link" target="blank"><img align="center" src="https://cdn.jsdelivr.net/npm/simple-icons@3.0.1/icons/instagram.svg" alt="" height="30" width="40" /></a>
<a href="your link" target="blank"><img align="center" src="https://cdn.jsdelivr.net/npm/simple-icons@3.0.1/icons/youtube.svg" alt="" height="30" width="40" /></a>
</p>
或者使用外部的 Readme-stats 来生成一个数据卡:
<p>
<a href="https://github.com/einverne/">
<img margin-top="-30px" width="55%" align="right" alt="einverne's github stats" src="https://github-readme-stats.vercel.app/api?username=einverne&show_icons=true&include_all_commits=true&count_private=true&layout=compact&hide_border=true" />
</a>
</p>
如果要在页面中放入图标可以到如下的网站寻找。
另外一个寻找 icon 的方式就是利用 https://cs.github.com GitHub 的 Code Search,然后直接搜索,比如我想要找到豆瓣的 svg ,输入 douban.svg
然后就能找到。
github-readme-stats 是一个用来生成 GitHub 统计数据的工具,可以在页面上展示获得的⭐,提交的次数,总共的 PR 等等。
生成从构建,代码覆盖率,开源协议,到社交网络等等,非常多的徽章。
如果想要统计访问 GitHub Profile 的数量,可以使用 GitHub Profile Views Counter 这个项目。
样例:
https://skyline.github.com/
基于 GitHub Actions 动态生成内容展示在 Profile 页面。
因为有 GitHub Actions,所以简单的用脚本可以展示
等等。
可以使用 blog-post-workflow 来显示最近更新的博客内容。通过定时读取 Feed ,来在页面动态展示内容。
GitHub Activity Readme 可以在页面上显示最近在 GitHub 上的动态。
如果你使用 [[WakaTime]] 来统计编码时间,那么可以使用 waka-readme-stats 来展示。
最终的效果见 https://github.com/einverne/
似乎是在豆瓣的推荐流中第一次发现这一本。
作者是[[周濂]],我还是在有关哲学的播客中第一次知道这一位人大的教授,首先接受的是他的声音,然后在豆瓣纪念[[江绪林]] 的文章中再一次看到了周濂教授,最后是在刘擎的 [[西方现代思想讲义]] 中又一次读到周濂。
关于国家正当性的问题,要回答的问题是「在国家诞生的过程中需要满足哪些限制条件?」
legitimacy 正当性,合法性。怎么样产生的国家才在道德上是可以被接受的。正当性是一个「回溯」的概念,从「发生」追问国家的谱系、来源。
关于国家证成性的问题,要回答的问题是,「为什么需要国家」,国家这种制度存在的目的是什么?为什么一定要建立国家?无政府状态会更好吗?国家作为工具或手段能为公民提供什么样的好处?
国家具有哪些性质,使得它的存在是值得的。
国家证成性问题是一个「前瞻性」的概念,评价国家的功能,和国家的产生没有关系。
国家和政府首先是一个目的性的存在,人们建立国家和政府是为了促进自由正义、保障社会稳定和提高人民福祉,一旦一个民选政府或民主国家无法实现这些基本目的,那么人们就会收回当初的认可,这个国家和政府也就丢失了正当性。
Plex Media Server 是一个媒体服务器,可以用来管理和串流电影、电视剧、音乐、照片等等媒体格式。
因为 Plex Media Server 运行在本地,所以几乎所有的信息都在本地的一个 SQLite 中,包括了 Library 的信息,多媒体的 meta 信息等等。
在 Linux 上(包括 NAS):
$PLEX_HOME/Library/Application\ Support/Plex\ Media\ Server/Plug-in\ Support/Databases/com.plexapp.plugins.library.db
在 Debian/Ubuntu 下 Plex 数据在
/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/
在 macOS 上:
~/Library/Application\ Support/Plex\ Media\ Server/Plug-in\ Support/Databases/com.plexapp.plugins.library.db
Windows 上:
"%LOCALAPPDATA%\Plex Media Server\Plug-in Support\Databases\com.plexapp.plugins.library.db"
分析的时间是在 2022 年 10 月 8 号,未来 Plex 可能对表名和表结构有所改变,请注意。
目前一共有 81 张表,7 张虚拟表。有一些表可以通过名字猜测出来,比如 accounts
表就是 Plex 登录账号的表。
accounts # 登录的账户
activities # Plex 活动记录,比如更新 metadata, scanning
blobs
cloudsync_files # 看起来像是很多年前 Plex 就关闭了的 Cloud Sync 功能遗留下来的表
devices # 记录 Plex 登录的设备,包括 Chorme,Phone 等等
directories # Plex 能够扫描的文件夹列表
external_metadata_items
external_metadata_sources
fts4_metadata_titles_docsize
fts4_metadata_titles_icu_docsize
fts4_metadata_titles_icu_segdir
fts4_metadata_titles_icu_segments
fts4_metadata_titles_icu_stat
fts4_metadata_titles_segdir
fts4_metadata_titles_segments
fts4_metadata_titles_stat
fts4_tag_titles_docsize
fts4_tag_titles_icu_docsize
fts4_tag_titles_icu_segdir
fts4_tag_titles_icu_segments
fts4_tag_titles_icu_stat
fts4_tag_titles_segdir
fts4_tag_titles_segments
fts4_tag_titles_stat
hub_templates
library_section_permissions
library_sections # 仓库的设置
library_timeline_entries
locatables
location_places
locations_node
locations_parent
locations_rowid
media_grabs
media_item_settings
media_items
media_metadata_mappings
media_part_settings
media_parts # 包含了重要的媒体文件的路径
media_provider_resources
media_stream_settings
media_streams
media_subscriptions
metadata_item_accounts
metadata_item_clusterings
metadata_item_clusters
metadata_item_setting_markers
metadata_item_settings
metadata_item_views
metadata_items
metadata_relations
metadata_subscription_desired_items
play_queue_generators
play_queue_items
play_queues
plugin_permissions
plugin_prefixes
plugins
preferences
remote_id_translation
schema_migrations
section_locations
spellfix_metadata_titles_vocab
spellfix_tag_titles_vocab
sqlite_master
sqlite_sequence
sqlite_stat1
statistics_bandwidth
statistics_media
statistics_resources
stream_types
sync_schema_versions
synced_ancestor_items
synced_library_sections
synced_metadata_items
synced_play_queue_generators
synchronization_files
taggings
tags
versioned_metadata_items
view_settings
专辑的打分,单曲的打分。
表 metadata_items
记录了所有媒体文件的 metadata 信息
表结构:
create table metadata_items
(
id INTEGER not null
primary key autoincrement,
library_section_id integer,
parent_id integer,
metadata_type integer,
guid varchar(255),
media_item_count integer,
title varchar(255),
title_sort varchar(255) collate NOCASE,
original_title varchar(255),
studio varchar(255),
rating float,
rating_count integer,
tagline varchar(255),
summary text,
trivia text,
quotes text,
content_rating varchar(255),
content_rating_age integer,
"index" integer,
absolute_index integer,
duration integer,
user_thumb_url varchar(255),
user_art_url varchar(255),
user_banner_url varchar(255),
user_music_url varchar(255),
user_fields varchar(255),
tags_genre varchar(255),
tags_collection varchar(255),
tags_director varchar(255),
tags_writer varchar(255),
tags_star varchar(255),
originally_available_at dt_integer(8),
available_at dt_integer(8),
expires_at dt_integer(8),
refreshed_at dt_integer(8),
year integer,
added_at dt_integer(8),
created_at dt_integer(8),
updated_at dt_integer(8),
deleted_at dt_integer(8),
tags_country varchar(255),
extra_data varchar(255),
hash varchar(255),
audience_rating float,
changed_at integer(8) default 0,
resources_changed_at integer(8) default 0,
remote integer,
edition_title varchar(255)
);
metadata_item_settings
表中记录了媒体文件的打分 (rating),播放次数(view_count),播放位置(view_offset),最后一次播放时间(last_viewed_at)。1
对于音乐库,专辑的 rating 在 metadata_items
表中,对于单曲的打分才在这张 metadata_item_settings
中。
SELECT mi.title, mi.rating album, mis.rating track
FROM metadata_item_settings mis
JOIN metadata_items mi on mis.guid = mi.guid
WHERE mi.parent_id = (SELECT id FROM metadata_items WHERE title LIKE '%<partial album title here>%');
metadata_type = 15 的时候表示该记录是 Playlist。
select title from metadata_items where metadata_type = 15;
查看某一个播放列表中的文件路径:
select file from media_parts as p left join media_items mi on mi.id = p.media_item_id
left join play_queue_generators as pqg on pqg.metadata_item_id = mi.metadata_item_id
left join metadata_items on metadata_items.id = pqg.playlist_id
where metadata_items.title = 'Playlist title';
SELECT library_sections.name AS Libary, metadata_series.title as Series, metadata_season.'index' AS Season, metadata_media.title AS Title FROM media_items
INNER JOIN metadata_items as metadata_media
ON media_items.metadata_item_id = metadata_media.id
LEFT JOIN metadata_items as metadata_season
ON metadata_media.parent_id = metadata_season.id
LEFT JOIN metadata_items as metadata_series
ON metadata_season.parent_id = metadata_series.id
INNER JOIN section_locations
ON media_items.section_location_id = section_locations.id
INNER JOIN library_sections
ON library_sections.id = section_locations.library_section_id;
已经被不止一遍的推荐过,[[芒格]] 非常喜欢这本书,在《穷查理宝典》里面推荐过,巴菲特也曾推荐过,在之前看过的 [[法官能为民主做什么]] 中也能读到美国最高法院法官对富兰克林的尊敬,再到国内,罗辑思维也在视频中推荐过。上一本读过的 [[新教伦理与资本主义精神]] 中[[马克思 韦伯]] 也列举了 [[富兰克林]] 作为例子,有意思的是我在我的笔记库中搜索的时候,一本讲述德州扑克的树中作者也援引了富兰克林的观点,可见富兰克林在美国人心中的地位。
而我对富兰克林的印象停留在了那个雷雨天放风筝的小孩,以及 100 美元上的人物了,其他零星的记忆就是看美国建国那段历史的时候偶然出现的形象。所以正好借由这一本自传来完整地了解一下富兰克林。
富兰克林的自传,自然作者就是富兰克林,全名是本杰明•富兰克林,打开他的维基百科,能看到不少的头衔,除了我们熟悉的科学家,政治家,他同样还是杰出的外交家,发明家,出版商,记者,作者等等,甚至在心理学上也有建树。作为政治家,共同起草了独立宣言,作为外交家,结盟法国,赢得了独立战争。
这是一本富兰克林所写的自传,写于 1771 年。
全书共分为 4 个部分,正传,正传续篇,续传和补编,但观看的过程中明显能感觉到在正传部分花的篇幅比较多。从家庭,青年事情开始写起,尤其是富兰克林的青年时期令人印象深刻。
在书中都知道富兰克林是一个印刷商人,但也能从中看到富兰克林对书的痴迷,在 17 岁时就读了洛克的[[人类理解论]],波特洛亚尔派的会员们所著的《思维的艺术》,从小就接受了不同的哲学思想。不仅自己有着良好的阅读习惯,也在之后成立图书俱乐部,名之曰“讲读俱乐部”,成立图书馆,通过书让更多人获益。
尽可能多的读书,书籍是智慧的源泉。
「图书馆使我得以有恒地研习增进我的知识,每天我停留在里面一两个钟头,用这个办法相当地补足了我失掉的高等教育」
富兰克林在书中写道,「散文写作对我的一生十分有用,而且还是我走向成功的重要手段之一」,有意思的是,富兰克林是在和别人「吵架」中意识到自己的行文不足的,「但在辞句优雅、条理明晰方面我却不如对方。在这些方面,他举出几个例子使我信服。我知道他的意见是公平的,从此对于文体更加注意,且决心努力改进。」
学习写作的方法:
写作的另外一个长处便在富兰克林之后的人生中起了很大的作用,撰文倡导自己的政治主张,通过印刷品影响人民进而影响议会,书中提到的纸币增发议案就是一典型的案例。
从和哥哥交恶,富兰克林离开波士顿,独自一人前往费城,在书中能看到富兰克林结交的朋友并非都是善人,那个为人热情的威廉总督,空给人了希望,将富兰克林骗到伦敦。但大部分的朋友都在人生的不同阶段给过富兰克林帮助。
当具备一定的阅历、智慧并坚持学习思考,人就会像超重体一样,吸引更多的有思想有价值的人来到你的身边。
人的一生所经历的大多数事情是无法预知的,即使这样,计划也是必须的。因为,只要坚持执行计划,未知的事情会围绕着计划发生。
「因为要巩固商人的信用和声望,我不但注意到勤劳和节俭的实际情形,也要避免那种趾高气扬的形象。我穿得很朴素,从来不在消闲的娱乐场所出现。我从不出去钓鱼和打猎。」
这一段文字立即让我想到了韦伯的 [[新教伦理与资本主义精神]],书中也恰恰列举了富兰克林作为例子。
这也是 13 条道德中的最后一条。
所有人都应该看一看。
Zed 是一款使用 [[Rust]] 编写的轻量、可协作的编辑器。是 Atom 编辑器团队在 Atom 关闭之后新起的项目。主打协作能力。
文本编辑器大战中又迎来了一员大将。
不过当前仅支持 Python, Rust, TypeScript, C/C++, JSON。1 支持列表可能之后还会增加。
前有 Visual Studio Code,后有 JetBrains 在积极开发 [[Fleet]],
teraCLOUD 是一家日本云存储服务提供商,提供基于云端的文件存储、同步和分享功能。用户可以使用 teraCLOUD 上传、下载、同步和分享文件,这些文件可以随时随地在各种设备上进行访问,包括电脑、手机和平板电脑等。
teraCLOUD 提供了多种存储计划,用户可以选择合适的存储空间和价格方案。除了基本的文件存储和同步功能外,teraCLOUD 还提供了一些高级功能,如文件共享、文件夹共享、外部链接共享等,方便用户与他人共享文件和合作工作。
teraCLOUD 采用了高度安全的技术保护用户数据的安全性和隐私。所有文件都会经过加密处理,同时,teraCLOUD 也提供了多种身份验证方式和安全设置,以确保用户数据的安全性和保密性。
teraCLOUD 是一款功能强大且安全可靠的云存储服务,适用于各种个人和商业用途。
但是在所有的特性中 teraCLOUD 的独特之处在于支持 [[WebDAV]]。
WebDAV(Web Distributed Authoring and Versioning)是一种基于 HTTP 协议的扩展协议,用于在 web 服务器上进行文件管理和协同编辑。WebDAV 可以让用户在 web 服务器上读取、写入和修改文件,并提供了一些高级功能,如文件锁定、版本控制、属性管理等。
通过 WebDAV,用户可以像在本地计算机上编辑文件一样在 web 服务器上编辑文件,这使得 WebDAV 成为一种非常方便的远程协作工具。例如,用户可以通过 WebDAV 在多个地点访问、编辑和共享文件,这对于团队协作、文件共享和远程访问非常有用。
teraCloud 支持了 WebDAV 之后就诞生了很多的使用场景,比如可以作为配置文件的存储,可以编程直接访问 WebDAV,也可以直接在系统中挂载网盘当作一个本地硬盘使用。
打开 Finder,然后按下 Cmd+k (或者菜单栏 Go-> Connect to server),然后在弹出的对话框中填入 TeraCLOUD 的连接内容。点击连接之后,输入 TeraCLOUD 后台提供的用户名和密码(注意这里不是 TeraCLOUD 的登录密码)。然后就可以直接在 Finder 中像本地挂在的磁盘一样使用 TeraCLOUD。
注册完成之后,可以访问 My Page 在其中输入我的邀请码 NDMSQ ,可以活得额外的 1GB 空间。
[[PlanetScale]] 构建在 Vitess 之上。[[Vitess]] 是一个可以扩展的 MySQL 集群,集合了很多MySQL特性和NoSQL 的扩展能力。 Vitess 创建于 2010 年,主用用于解决 YouTube 团队面临的 MySQL 扩容问题。
Vitess 是一个分片的非 ACID SQL 数据库(ACID 是原子性、一致性、隔离性和持久性的缩写)。
在 MySQL 中,FOREIGN KEY 约束的实现方式会 影响在线 DDL 。
Vitess 通过分片方式扩展 MySQL 数据库,数据在水平方向分区,Vitess 根据分片将查询路由到适当的 MySQL 实例上。Vitess 的连接比 MySQL 轻,可以轻松支持数千个连接。
PlanetScale 就是一个运行在云上的 MySQL,有一个 Web 管理界面,还有一个 CLI 工具。
PlanetScale 对于入门的使用是免费的,它的免费套餐提供
超出此套餐的存储每 GB 收费 $2.50/mo ,1 billion row read 收费 $1/mo,而 1 million row written 收费 $1.5/mo。
如果有更多的资源使用,也可以 升级套餐 。
PlanetScale 令人心动的一个功能就是可以给数据库 拉分支 ,PlanetScale 允许用户像代码一样从主库中拉出一个一模一样结构的 development 或 staging 的数据库环境,可以在这个环境中开发,测试。所有的数据都是隔离的。
当完成开发之后,可以创建 deploy request,PlanetScale 会自动对比创建出差异的 Schema diff,然后开发者可以 review 需要部署生效的内容。同意通过之后 deploy 到线上库中。整个部署变更的过程不会产生停机时间。
不过需要注意的是,PlanetScale 为了实现扩容,舍弃了一些 MySQL 的特性,比如 PlanetScale 不支持 FOREIGN KEY1,并且也要求每一个表都有一个唯一且不为空的主键2。
当然 PlanetScale 后台也提供了简单的监控,包括每秒读写。
因为 PlanetScale 可以直接使用 MySQL 命令行连接,所以可以直接命令行导入:
sudo mysql -h xxx.ap-northeast-2.psdb.cloud -u inxxxxxxx -ppscale_xxxxxx --ssl-mode=VERIFY_IDENTITY --ssl-ca=/etc/ssl/cert.pem < ~/database.sql
注意这里的证书位置,我是在 macOS 下执行,所以证书在 /etc/ssl/cert.pem
,如果是 Linux,证书在 /etc/ssl/certs/ca-certificates.crt
。1
导入数据包包含 0000-00-00 00:00:00
数据
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1292 (22007) at line 383: vttablet: rpc error: code = InvalidArgument desc = Incorrect datetime value: '0000-00-00 00:00:00' for column 'update_time' at row 1 (errno 1292) (sqlstate 22007) (CallerID: planetscale-admin): Sql: "insert into tb_dy_resource values (:vtg1, :vtg2, :vtg3, :vtg4, :vtg5, :vtg6, :vtg7, :vtg8, :vtg9, :vtg10, :vtg11, :vtg12, :vtg13, :vtg14, :vtg15, :vtg16, :vtg17, :vtg18, :vtg19, :vtg20, :vtg21, :vtg22, :vtg23, :vtg24, :vtg25, :vtg26, :vtg27, :vtg28, :vtg29, :vtg30, :vtg31, :vtg32, :vtg33, :vtg34, :vtg35, :vtg3
查了一下 PlanetScale 似乎无法修改 sql_mode
字段,那就只能手动修改 SQL 了。
sed -i 's/0000-00-00 00:00:00/2022-01-01 00:00:01/g' gagays.sql
因为 PlanetScale 是兼容 MySQL 的,所以任何 [[MySQL客户端]] 都可以使用。
这里推荐 JetBrains 的 [[DataGrip]]。
在调研的过程中还发现了一款新型的 SQL 客户端,叫做 [[Arctype SQL Client]],主打同步,感兴趣也可以试试。
在了解 [[马克思 韦伯]] 的时候,不管是介绍其人,或者是他的传记作品中都不断提及这一部巨著。
我希望读过这一本书之后可以回答如下的问题:
为什么 100 多年之后还要去读这一本 [[新教伦理与资本主义精神]]?
科学,专业领域有很多大问题,有很多的专家可以解答,但是同样有很多的大问题,关乎人生,关乎社会,关乎时代的大问题,并不能由某一个领域的专家来回答。
[[马克思 韦伯]] 德国社会学家,哲学家,经济学家。我已经忘记了什么时候第一次了解到韦伯,但是我记得在 [[刘擎西方现代思想讲义]] 中读到 [[工具理性]] 和 [[价值理性]] 的概念的时候再一次加深了对韦伯的印象,于是在前年 2020 年韦伯逝世 100 周年的时候再一次读了一本关于他的传记 [[马克思韦伯 跨越时代的人生]],进一步了解了他的生平和家庭。
伦理,Ethic,区别于伦理学(Ethics) ,伦理学又被称为道德哲学,是对日常的伦理寻找根基,分析论证的学问。但是韦伯所指的伦理指的是人们在日常生活中正在运用的,但是对这些伦理缺乏必要的反思的一套规范。
韦伯对[[资本主义]]进行新的诠释,他认为资本主义并不是对财富的贪欲,反而是对这种非理性欲望的一种抑制或者至少一种理性的缓解。“在现代的经济秩序下,只要合法赚钱,就可以被看做是一种遵守天职的美德的结果和发挥天职能力的表现。”用更简单的话去概括就是「赚钱光荣」。
「营利变成了目的本身,而不再是为了满足人的物质生活需求的手段。」
而在此之前,更多人的认为赚钱是一种手段,赚钱是可耻的。赚来的钱会立即用掉。韦伯借用了[[富兰克林]] 的例子,富兰克林不仅是一个政治家,同样还是一位了不起的科学家,作家,出版商和商人。他之所以能出现在 100 美元的纸币上,也与他卓越的贡献以及踏实、勤奋的为人有关。
韦伯的资本主义精神并不是不惜一切赚钱,而是要合法合理的赚钱。
加尔文宗教、虔信教、循道教和浸礼宗诸派的教义,通过他们的宗教观念来了解“宗教信仰和宗教活动所产生的心理约束力的影响,这些影响转而指导日常行为并制约个人行动。
宗教观念中的禁欲主义表现出来的行为方式就是,有条理的工作方式、对中产阶级节制观念的鼓励、对暴发户的鄙视、对勤劳美德的赞颂,都成为后来资本主义精神的观念基础,而这样的精神对资本主义财富的积累是相当重要的。
韦伯指出禁欲主义的观念会促使人们有意识地节制地使用财富,并且勤劳地在本职工作上工作,而勤劳必然会导致财富的增加,因而禁欲主义的强制财富储蓄就会导致资本的形成——-提供了投资的资本。
而最后作者指出当前资本主义的实际状况—-资本主义不再需要禁欲主义的支撑,而作为同样对禁欲主义产生重要影响的启蒙运动,其影响力也在日益下降,这样“职业行为”和精神本性中的最高文化价值不在联系起来了,这样后果就是“最后的人”的境况。
阅读历史,我们可以知道世界的各个地方都出现过资本主义,但是唯有西方的资本主义成为了现代经济的主流。韦伯在书中论证只有在西方才出现了现代资本主义精神,而这个资本主义精神正是来源于清教徒的禁欲思想。禁欲思想促使人们勤劳工作、有意识地节制地使用财富。而这样精神在进入现代社会之后不再需要禁欲主义的支撑,但是这样的精神促进了资本主义的发展。
韦伯进一步区分了两种类型的资本主义:
但韦伯也说,宗教伦理、禁欲思想并不是资本主义形成的唯一因素,在西方独特的环境之下,下面的这些因素同样影响了资本主义的发展:
这一些因素全部糅合到一起才促成了资本主义。唯有区别与其他地方的资本主义精神和这种资本主义组织形态的发展,才使得近代西方和东方走向了两条截然不同的发展道路。
韦伯在文末说出了自己的忧虑,基于[[功利主义]]的「实用理性」生活方式,再加上刻板的官僚化工作场所,最终可能会产生一个对个人既缺乏崇高理想又缺少个人主义的社会。而我们如今的生活不恰恰正被韦伯言中了吗?当这一点成为现实的时候,那就不再可能培育出个人行为的伦理责任感,最后,如果没有了伦理价值,同情心、慈善心和博爱之心如何才能存在?清教徒式的为事业献身是不是正在消失,取而代之的则是追求享乐的功利主义计算?而现代资本主义所崇尚的「理性计算」是否会把一切伦理价值统统弃之不顾呢?
在阅读上一本 [[法国大革命前夕的舆论和谣言]] 的时候接触到了这一本《谣言:世界上最古老的传媒》,作者让-诺埃尔-卡普费雷(Jean-Noël Kapferer)系统地剖析了什么是谣言,为什么会存在谣言,谣言的传递遵从什么样的规则,我们能不能消灭谣言等等。作者收集了世界上曾经流行的种种谣言,引用了诸多社会心理学实验,去阐述了这些谣言的来源,人们为什么会相信这些谣言,人们又是如何利用谣言来达成自己的目的。
奥尔波特和波斯曼认为,谣言是一个「与当时事件相关的命题,是为了使人相信,一般以口头媒介的方式在人们之间流传,但是缺乏具体的资料以证实其确切性」。
纳普认为,谣言是一种「旨在使人相信的宣言,它与当前时事有关,在未经官方证实的情况下广泛流传」。
彼得森和吉斯特对谣言的定义是,谣言是一种「在人们之间私下流传的,对公众感兴趣的事物、事件或问题的未经证实的阐述或诠释」。
最著名的谣言的定义是美国社会学家特·希布塔尼,谣言是一群人议论过程中产生的即兴新闻。
通过上面不同学者对谣言的不同定义,可以归纳初谣言的共性:
二战时期的纳普曾经提出过制止谣言流传的五条建议:
在二战的背景下,纳普的建议似乎是合法可行的,但是在和平时期重读这些建议时,就好像是在描述一个极权国家。
纳普的功勋在于明确地指出了偏见的根源。谣言并不妨碍人,因为谣言是「虚假的」,如果真的是这样,那么任何人都不会把谣言放在心上。然而,谣言之所以有人相信,正因为谣言经常最终被发现是「真实的」。
作者自己在书中的第四部分用了整整四分之一的篇幅去论述谣言可以被消灭吗?答案当然是否定的。
[[波普尔|卡尔 波普尔]] 认为,一个理论命题只有当它详细说明它的试验程序时才能上升为一个科学命题。然而往往有一些谣言是无法证明的。 相信辟谣与相信谣言本身所遵循的是同一个逻辑。两种情况下,都是凭口头说的就信以为真。扑灭谣言的问题归根到底还是一个人的问题:「相信什么」取决于「谁来说」。没有一个可靠的发言人,反谣言的战斗必然失败。
但找到可靠的发言人就可以反击谣言吗?说起来容易,其实非常难。谣言的扩散常常显示出一种对官方渠道消息的不信任,甚至对政府本身就缺乏信任。在实行新闻管制的国家,谣言便盛行起来,能指望什么样的官方公报来减少谣言呢?
当代社会心理学创始人 S·阿施给出了一个方法。他的思想可以概括为:人们不会改变对一个事物的认识,而是认识的对象在变化。换句话说,就是公众舆论的突变,只能来自谣言自身的变化。于是我们就可以通过改变谣言的面貌来抑制谣言:
认识心理学已经证明,为了认识,我们利用的是外在、明显的信号。我们如何判断我们自己是否喜欢某一个事物?我们怎么知道自己是否有才能去做某件工作呢?这两个问题涉及同一个问题,那就是,我们自己对自己的看法。外在的信号会改变我们自己,进而改变我们的认知。
虽然我们没有办法根除谣言,但是依然可以通过一些方法防患于未然。增加透明度就是一个方法。增加消息来源的可靠性也是一个方法。另外也需要注意的是在谣言扩大之前就通过公开透明的信息来防止谣言。一旦谣言扩散出去了,那么再公开透明的信息也难以阻止了。
直到今天,对谣言的研究还被一种负面的观念支配,认为谣言必定是虚假的、臆造的或荒谬的。总有人想要防止谣言。然而,这个世界上只存在一种防止谣言的办法,那就是堵住人的嘴。
只让可靠的消息流传,这表面上看来是合理的操作,但是直接控制消息会导致言论控制,传播媒介成为了官方消息的唯一提供者。于是除了官方消息便再没有了其他消息。
谣言存在的根本原因在于,谣言并不一定是虚假的,而与此同时,谣言必定是非官方的。怀疑官方的事实,于是旁敲侧击,从反面提出其他事实,这就是大众传播媒介未能消除谣言的原因。
谣言从反面提出了另一种价值观,只有不受约束的信息交流才是好的,哪怕其可靠性受到了影响。换一种说法便是,「虚假」的谣言是有根据的谣言必须付出的代价。
当我读到这一段的时候,想起了[[密尔]] 对于言论自由的论述,在 [[论自由]] 中密尔说我们不应该压制任何言论,因为被压制的言论可能包含部分的真实,只有通过充分的讨论才能让我们逼近真实。而这些可能错误的言论是我们获取真理必须要付出的代价。
而从[[认识论]]的角度看,「我们为什么相信我们信以为真的事物?」 我们带着思想、观点、形象、信念生活在这个世界,而思想、观点、形象和信念往往从口传媒介,道听途说而获取。我们往往意识不到这个获取过程,因为这个过程非常缓慢,并且偶然且不易察觉。
作者通过对谣言的研究获得的片刻清醒证实了[[知识]]的脆弱。也许我们所获得的知识中的一大部分是毫无根据的,而我们并没有意识到。
谣言提醒我们一个明显的事实:我们并不是因为我们的知识是真实的、有根据的或被证实的便相信它们。而情况恰恰相反,因为我们相信它们,它们才是真实的。谣言再一次证明,如果有必要的话,任何可靠性都是社会给予的,我们隶属的那个社会群体认为是真实的东西才是真实的。这句话初听起来可能比较晦涩,但我们仔细去回想宗教。社会是建筑在信仰,而不是证据的基础之上的。
谣言最佳的例子不就是宗教吗?它不就是在传播一句由上帝之口说出的话吗?宗教与谣言一样,是一种有传染力的信仰,人们希望徒凭一句话就相信,希望他赞同人们告诉他的事实。并不是存在上帝的证据创造了信仰,而是人们信仰了,才产生上帝。
在 IntelliJ IDEA 中调试的时候,如果不小心断点跳过了,如果可以往前跳转就可以省去很多时间。搜索一下之后发现,在 IDEA 中叫做 Reset Frame(之前叫做 Drop Frame)。
在启动调试之后,在调试 Debugger 窗口中有 Frames ,其中就是调用堆栈。
点击其中的某一条,然后右击就可以看到菜单,选择想要跳转回去的 Frame,然后 Reset。
不过需要注意的是这个操作只会重置局部变量,全局变量的状态不会重置。