0%

本文受此视频启发创作:【三分钟哲学】【辩证法】子非鱼,安知鱼之乐?


原文翻译

庄子与惠子游于濠梁之上。庄子曰:“鲦鱼出游从容,是鱼乐也。”惠子曰:“子非鱼,安知鱼之乐?”庄子曰:“子非我,安知我不知鱼之乐?”惠子曰:“我非子,固不知子矣,子固非鱼也,子不知鱼之乐,全矣。”庄子曰:“请循其本。子曰汝安知鱼乐云者,既已知吾知之而问我,我知之濠上也。”

庄子和惠子在濠水的桥上溜达。

庄子:鲦鱼从容自在地游来游去,看起来很快乐。
惠子:你不是鱼,你怎么知道鱼的快乐?
庄子:你不是我,你怎么知道我不知道鱼的快乐?
惠子:我不是你,就不知道你的想法;你不是鱼,那你不就也不知道鱼的快乐?证毕。
庄子:回到一开始的问题。你说“你怎么知道鱼的快乐”,就是说你已经知道我知道了鱼的快乐,那我是在濠水之上知道的。


简单来看,庄子最后的回答可以算是诡辩,惠子才是赢家。事实并非如此,下面是对庄子阐述的解释:

因为你说了,“我非子,固不知子”“子固非鱼也,子不知鱼”,也就是说,你认为一个主体无法理解另一个主体的内在感受。那么,你就不应该问我“子非鱼,安知鱼之乐”这个问题,因为当你问出了“子安知鱼”这种问题,本身就说明了你知道了我的感受,即我感受到了鱼的快乐这个感受本身,而这恰好与你所主张的的个体之间无法互相感知是矛盾的。

至于你一开始问的“你是怎么知道的”,那我可以告诉你,我是在濠水桥上看鱼游泳知道的。


结语

最近在 Bilibili 发现了这个视频的作者,讲哲学的 up 主“未明子”,看他的视频学到不少东西。

说实话,从高中学了《庄子与惠子游于濠梁之上》,我其实从来没有真正理解过这场辩论的含义。直到今天看了这个视频,我才第一次明白庄子要阐述的道理、他究竟赢在了什么地方。

3 分钟的视频,解了我多年疑惑,只能说人与人之间的智慧差距不能以道理计。可叹网络上可以搜索到的关于濠梁之辩的文章,要么长篇累牍不能切中要害,要么直接认为庄子输了辩论,徒增笑而。

传道受业解惑,并不是人人都能胜任的。希望有更多的未明子可以分享自己的智慧,以启迪我这种愚人。

以前用过一段时间 auto.js 的蚂蚁森林脚本,后来经常出问题就放弃了。最近突然手痒,忍不住想要自己写脚本来玩一下。个人感觉爬虫自动化什么的是写代码获得成就感最快的途径了。

阅读全文 »

刚刚提到了换用 Linux 系统,为了更新博客又在 Linux 上 clone 了一份。不过遇到了点问题,特此记之。

  1. 克隆博客项目,安装 hexo-cli。

  2. hexo g 跑不起来,回想起是主题的问题。进入主题目录 themes,克隆 hexo-theme-next 项目到 next 目录。

    稍微说明一下:next 主题官方也是使用 git 管理的,所以出现了两个 git 项目嵌套的情况。因为一开始没有设置好子项目,所以无法同时保留内部嵌套的 next 项目。按照 next 官方说明的方法,将主题的配置文件放置于 blog/source/_data/next.yml,这样配置文件不会丢失。

  3. 此时运行 hexo g 不报错了,但是 hexo s 启动服务器后还是一片空白。打开 chrome devtools 看一下,发现跟 fancybox 相关的文件报错了。原来 next 主题启用 fancybox 后没办法自动安装依赖。进入主题目录 themes/next/source/lib/ 下,克隆 fancybox 3 的仓库就行了。

最近安装了 Linux mint 19 做毕设,时隔 1 年多再次用上 Linux(新版),意外地感觉好用。虽然用户界面的稳定性和优化还是不如 Windows 10,但是明显感觉出来有很多进步。不过这篇文字不是夸 cinnamon(mint 的桌面环境)的。

在 cinnamon 奔溃卡住以后,如果强行重启电脑,势必会丢失未保存的工作,也可能造成硬件损坏。搜索了一下,发现有个很不错的方法:

  1. ctrl + alt + 1 进入 tty 界面

  2. 重启 cinnamon:

    1
    $ pkill -HUP -f "cinnamon --replace"
  3. ctrl + alt + 7 回到 cinnamon 桌面环境

据解释 cinnamon --replace 命令的效果是用新的 cinnamon 进程代替原来被卡住的那个。

序言

最终效果

运行:

1
$ get /path/to/file

就把服务器的文件取到桌面上了。

为什么要这么做 (闲的)

目的:就是方便从服务器获取文件嘛

直接原因:scp 命令太麻烦了

深层原因:云服务器开启 ftp 服务器失败了(一万年了,我按照教程操作就没有成功过)

阅读全文 »

在移动端使用 rem 进行切图适配应该是比较常见的一种手法,近日在工作中遇到了一次有趣(才怪)的兼容性问题。特此记之,同时梳理使用 rem 适配的思路,以及一个使用 sass 函数的小技巧 ( ✪ω✪ )。

本文同时发布在我的 掘金专栏

rem 与 em 的对比

rem 和 em 都是 CSS 中基于字体大小的相对单位,二者的区别在于:em 使用当前元素的字体大小确定实际尺寸,而使用 rem 依据的则是 html 根节点的字体大小。

使用 em 其实很恼人,例如分别为父元素和子元素的 font-size 设置某个值,如 1.2em,假设父元素继承得到的字体大小原本是 10px,应用样式后,父元素字体大小变成了 12px,而子元素则变成了 14.4px。一份代码中,相同写法的尺寸的效果可能处处不一样。可想而知,如果大量使用 em,很容易使得代码混乱难懂,所以程序员不会经常使用它。

相比之下,rem 显示出某种统一性。由于仅依赖于 html 根节点的字体大小,因此代码中任何地方的 2rem 都绝对是根元素 2 倍大小,没有使用 em 时的“惊喜”。

阅读全文 »

最近忙毕设,经常要打开多个 putty 窗口进行远程 ssh 连接,一个个打开实在有点烦。

我需要一次性打开阿里云、2 个办公室连接、2 个蛋壳连接,找了一下,发现可以通过批处理脚本进行:

1
2
3
4
5
6
# 使用 start 可以做到并行运行命令
start putty -load 蛋壳
start putty -load 蛋壳
start putty -load 办公室
start putty -load 办公室
start putty -load 阿里云

结合设置 .ssh/authorized_keys 可以实现免密登录,关于这点有很多教程,我就不再拾人牙慧了,比如可以参考:Putty使用密钥自动登陆SSH

本文同时发布于掘金的个人专栏:[译] 为函数自定义属性的八种实现方法

介绍:本文来自 Stack Overflow 上 Adding custom properties to a function - John Slegers 的答案。“给函数自定义属性”并不是常规做法,但是答案中给出的思路涉及广泛,很值得学习。

首先,你要认识到标准的函数属性( arguments,name,caller 和 length )都不能被覆盖。所以,打消自定义的这些属性名的想法吧。

给函数添加自定义属性可以使用很多不同方法,这些都是跨浏览器兼容的。

阅读全文 »

参考:包装对象Why does instanceof return false for some literals?数据类型的转换

常规使用

强制转换主要指使用Number()String()Boolean()三个函数,手动将各种类型的值,分别转换成数字、字符串或者布尔值。

规则非常烦人,直接看链接:Number()

另外 MDN 并不推荐直接声明包装对象,MDN:

不要用创建 Boolean 对象的方式将一个非布尔值转化成布尔值,直接将 Boolean 当做转换函数来使用即可

1
2
var x = Boolean(expression);     // 推荐
var x = new Boolean(expression); // 不太好

Stack Overflow 上的问题:

1
2
3
4
var color1 = new String("green");
color1 instanceof String; // returns true
var color2 = "coral";
color2 instanceof String; // returns false (color2 is not a String object)

所以不要滥用包装对象。

阅读全文 »

有时候收获了很多不常用的“骚操作”,因为很少用到,所以会忘;用到时又是一顿好找。那么干脆在这里记录一下,省得总忘。

目录:

  • chrome 选择超链接文字
  • chrome 删除 url 建议
  • chrome 跨设备同步标签页
  • chrome 跨设备同步打开的标签页
  • chrome 快速定位到地址栏
  • Windows 上与 Linux 等效的命令
  • 快速固定窗口到最前显示
  • 微信等内嵌浏览器网页调试
  • wifi adb 调试
  • Intel 核显右键集成菜单删除与找回
  • 谁唤醒了我的电脑
  • 移除删除不掉的语言包
阅读全文 »