• hey.com 所用到的技术栈 at 2020年06月30日

    @apexy 对,我也正想提这个,因为已经有了类 Phoenix LiveView 的东西了,所以如果 New Magic 也就是这个的话,那么 Magic 也就不过如此罢了。

  • 像 rails 这种注重人性化,注重程序员感受的技术,很难再冒出来了。

    LZ 应该是认为 Ruby/Rails 是优美的,这没有问题吧?除非 “人性化,注重程序员感受” 这些点不是优美语言的特质,这楼主也不会同意的。

    现在资本说哪个语言优美,哪个语言就优美,敢说它不优美的要么眼光不行,要么就是没有真的懂这个语言,没有评价资格。就像皇帝新装里的那些成年人,没有人敢说黄帝没穿衣服,谁说出这个真相谁就是 “愚蠢” 的人。

    这句话的意思总结一下就是:资本控制下宣称的优美的语言都是虚假的,只有那些敢于说真的话的才是 “眼光行,真的懂”。但是资本控制很强权,没人敢说出真相。

    挺佩服王垠的,他敢说 golang 不优美。

    而第三句就是 LZ 甩出的论据:因为王垠不代表资本,代表的是 “眼光行,真的懂” 的个体,所以他敢说 Go 不优美这是值得 LZ 佩服的。换言之——LZ 是相信王垠的眼光和判断的。

    以上是我对主楼的语言逻辑的分析,我自己觉得没什么问题,如果有你不妨点出来就好。

    那么在此分析之下很显然 LZ 的言语是自相矛盾的,因为他相信和佩服的王垠并非只是 diss 了 Go,他也一样 diss 了 Ruby/Python/JavaScript 等等语言。特别是 LZ 他又认为 Ruby 是优美的,那……要不然 LZ 先和王垠探讨一下达成一个共识?

    我之前回复有问题的地方在于我默认 LZ 会觉得王垠认为 Ruby 优美并且不会 diss Ruby 的,因为只有这样他拿王垠 diss Go 的论据出来才对他的论点有足够的支撑。但显然我错了,因为王垠 diss 其他语言的时候压根就没想过是不是要和资控言论唱反调,人家只是出于自己的判断想 diss 就 diss 了。OK,我的错我承认。@gaicitadie 抱歉的确是我多虑了。

    不过 LZ 这个论点是不是也不应该拿王垠的言论来充当论据呢?因为王垠的出发点很显然不是 LZ 想要表达的事情。

  • 套用最近流行的嘴子:有饭圈内味儿了。

  • hey.com 所用到的技术栈 at 2020年06月28日

    这还是用 stimulus 实现的一个 ui pattern,不是原推文提到的 NEW MAGIC,据说过段时间会开源的,届时才清楚它到底是什么。

  • @brookepowell 谢谢关注哈,视频一直在陆陆续续做着,不过都是出于业余的爱好,一旦受工作制约就没办法保障更新频次了。

  • 除了吐槽之外,再给你看几句引述,都来自于你佩服的王垠:

    很多 JavaScript 程序员也盲目地鄙视 Java,而其实 JavaScript 比 Python 和 Ruby 还要差。……Python 凑合可以用在不重要的地方,Ruby 是垃圾,JavaScript 是垃圾中的垃圾。原因很简单,因为 Ruby 和 JavaScript 的设计者,其实都是一知半解的民科。


    Python 的变量定义和赋值不分,所以你需要访问全局变量的时候得用 global 关键字,后来又发现如果要访问 “中间层” 的变量,没有办法了,所以又加了个 nonlocal 关键字。Ruby 先后出现过四种类似 lambda 的东西,每个都有自己的怪癖…… 有些人问我为什么有些语言设计成那个样子,我只能说,很多语言设计者其实根本不知道自己在干什么!


    今天我来谈一下另外一种错误的倾向,这种倾向也导致了很多错误,并且继续在导致错误的产生。今天我要说的错误倾向叫做 “试图容纳世界”。这个错误导致了 Python,Ruby 和 JavaScript 等 “动态语言” 里面的一系列问题。

    我不评价王垠说的到底有没有道理,因为我觉得不够资格,引用这些只是为了告诉你,diss 之前也是要做做功课的,至少王垠并不如你 “幻想” 的那样认为 Ruby/Rails 很优美。

    再多送一段我个人觉得比较有意思的:

    所以初学者要想事半功倍,就应该从一种 “合理” 的,没有明显严重问题的语言出发,掌握最关键的语言特性,然后由此把这些概念应用到其它语言。哪些是合理的入门语言呢?我个人觉得这些语言都可以用来入门:Scheme、C、Java、Python、JavaScript……

  • 咦?你不是专职 diss JavaScript 的吗?怎么转换战场了,跳槽了吗?

  • 可别一概而论,实际上 person 是有两种复数形式的。一般来说,当我们引述相对于 “动物” 或 “东西” 的 “人” 的概念,并为了概括一个不确定数量的群体时,用的是 people;而当引述特定数量范围的独立个体时,用的是 persons。通常 persons 多用于法律法规之类的地方,比如说法院指代犯罪嫌疑人等的时候(因为犯罪嫌疑人的数量总是确定的,你不能给可能存在或不存在的人定罪吧?)就会用 persons。

    韦氏词典里有如下阐述,比我说的更专业一些:

    Many usage guides over the years have suggested that there is a clear distinction between these two words; people is used when referring to a collective group or indeterminate number, and persons serves better when referring to individuals (or a number of individuals). There are many instances in which this difference may be observed, often when the two words are side by side.

  • 去 Github 找 chrominum 项目,然后在里面搜索 importNode,在 document.cc 文件里。这个文件有点大,我现在打开了会把浏览器搞崩,所以只能告诉你地方自己去看吧。

    另外,DOM 是有 specification 的,跟着标准走其实任何语言都能实现。

  • 这应该不难理解吧?我用 JavaScript 举例,典型的链式调用是这样:

    o.foo().bar();
    

    如果你把它分解成两段,那无非就是:

    let n = o.foo();
    n.bar();
    

    换言之,o.foo 所返回的结果必然是一个拥有 bar 方法的对象,不然的话你怎么接着就调用 .bar() 呢?

    o.foo 所返回的那个对象也应该是自己(this),这样才能让链式调用中链条上的每一个环节(方法)所处理的上下文(this)都是一致的。理论上你当然可以让 o.foo 返回其他的对象而不是 this,并且只要那个对象自身也有 bar 方法,那么这个链式调用的形式依然可以得到维持,但这种链式调用的意义不大,因为方法调用的上下文不断在变化,这既没有太大的现实意义,又使得代码晦涩难懂。如果一定要更换上下文,那不如分成不同的语句来调用(就像前面的例子一样),保证代码的可读性远比形式主义的 “链式调用” 更为重要。

    另外举一个经典的例子,比方说 jQuery 就是以链式调用的 API 为它的特色的,你可以去读 jQuery 的源码,所有支持链式调用的方法,它们返回的必然还是 $(也就是链式调用最初封装好的 jQuery 选择器,它就是 jQuery 的 this)。

    我们可以把:

    $('#test').addClass('show').removeClass('hide')
    

    写成:

    let el = $('#test');
    el = el.addClass('show');
    el = el.removeClass('hide');
    

    当然,后面两次对于 el 的重新赋值都是没必要的(但这么写也不会错,道理便是如此),因为 addClassremoveClass 方法返回的对象就是 el 自己,所以你完全可以把它们连起来,这就成了 “链式调用”。