JavaScript 中的 Quine

Quine:一个能够打印自己源代码的程序

你可以试试执行以下

!function $(){console.log('!'+$+'()')}()

为什么起作用?上面的代码使用了一些技巧。

获取源代码最简单的方式是使用String

function foo() { return "abc" }
String(foo)

// function foo() { return "abc" }

所以我们第一个版本 可以是这样

function $() { console.log(String($)) } ,但是我们需要再执行 $() 才可以。
所以我我们使用IIFE继续进行改造。

!function $() { console.log(String($)) }()

//function $() { console.log(String($)) }
//true (!undefined的结果为true)

最后加上感叹号即可。

看看下面这个,意思也一样((((function $(){console.log('(((('+$+'()))))')}()))))

更多有意思的例子:

  • (function _(){return'('+_+')()'})()
  • f=_=>`f=${f};f()`;f()

参考文章:

http://rosettacode.org/wiki/Quine#JavaScript
https://2ality.com/2012/09/javascript-quine.html

2019 的最后一天 🌌

illustration-future-with-2020-2030-year-numbers_105589-817.jpg
2019 年的最后一天,这一天平淡无奇,也毫无疑问在加班,十一点半到家,继续写这篇文章。所以我在想如果再经过 3650 个像今天一样的一天,那么在 2030 我会成为什么样的我?这期间可以想象的会换几份工作,最终找到一个稳定的工作,在某一天遇到另一半,又在某一天结婚某一天生子。
唯一可以确定的是2020 与下一个十年注定是我一生中最辉煌,最精彩的十年,不出以外的话下半生的基调也就由这十年定下。

回想2010至今这过去十年,并没有太多感觉,虽然也是平淡的校园生活,最后实习工作,但是对新知识有一种天然的渴望,无论环境如何,总有一种向上生长的力量,这股力量在将要迷失自我的时候总能让我找回方向,而这股力量我又要归上上个十年和我的父母所赐。那下个十年我要积累一些什么,来给下下个十年以力量,给父母回馈?

回到今天,最近年底感触最深的就是大家的焦虑,企业裁员,中年职场危机,职业天花板等等。
政治、经济形势也可以预期,只会更差。这些残酷的现实,裹挟着每一个人生活。如何在这洪流中不苟且,也许真的不是一件容易的事。

在职业发展上作为前端,其应用场景决定了这个职业上限是不高的,填坑是少不了的,也许实体行业中会好一些,但在互联网行业中,前端代码每个月都要替换上个月的样式或者逻辑再正常不过,如此往复,留下的很多所谓的"经验“。而这些所谓的经验又无非兼容,框架,真正经得起时间考验有能有都少?我个人并不想对互联网行业严格的区分前端和后端,都是计算机科学,一些范式与思想都是通用的,算法更不必说。所以无论何种岗位,只要是计算机相关的职业,唯一能都沉淀下来有价值的都是一些不变的知识,如数学,算法,计算机操作系统,计算机网络。

在朝九晚五为奢侈品的互联网行业中,每天加班,再加之未来成家立业之鸡毛蒜皮,自由时间少之又少,这些自由时间是将上层的经验逐渐沉淀下来的关键。虽然工资比较高,但是与生活成本和付出的时间精力,其实对多数人来说无非是透支一生中的最黄金十年。在企业眼中员工如同电池,如果没法输出峰值功率的时候,所以只有换掉的命运。

也许不沦为平庸就是锐意进取。而不平庸的关键是利用好自由时间。无论如何自由时间也不会和校园生活一样多,所以我们更需要一些方法论。假如我们沉淀下了这些底层的知识,但这其实还没有结束,知识还是死的,只有智慧是活的。
借用老子的一段话:

为学日益,为道日损 ——老子《道德经》第四十八章

“为学日益” 学问是靠知识、读书、经验,一点一滴慢慢累积起来的。
“为道日损” 学道与做学问相反,是要从学问中提炼,丢掉无关紧要的部分

下面是DIKW模型,也反映这个道理。

480px-DIKW_Pyramid.svg[1].png

写到这里我心中对未来也有了大致的规划,如果你在看这篇文章,希望你也能有所收获。

看看其他人的感悟💖
【编程随想】时间与人生——跨入本世纪20年代的随想

HP 440 G5 安装黑苹果

  • 这里选择最新镜像下载
  • 使用 balenaEtcher 烧录至U盘
  • BIOS设置

    • 启用UEFI启动
    • 禁用安全启动
    • 禁用快速启动
    • IGPU图形内存设置为64mb(Broadwell和Skylake)
    • 如果可用,通过BIOS选项禁用串行端口
    • 如果可用,禁用“LAN / WLAN切换”
    • 禁用“局域网唤醒”和“USB唤醒”
  • 下载EFI文件并将其放到引导分区中,注意备份你之前的文件

其他注意事项:
安装完成后按F3显示隐藏启动项,第一次选择preboot进入
无线网卡无法驱动,需要用USB无线网卡。推荐comfast的wu810n无线网卡,十几块钱。驱动下载
耳机🎧驱动VoodooHDA.kext.zip