当前位置:首页>深圳>Dynamicland 深圳工作坊观摩笔记

Dynamicland 深圳工作坊观摩笔记

  • 2026-07-21 09:05:31
Dynamicland 深圳工作坊观摩笔记

在地球之上、元宇宙之外,有两块神奇的空间,一块是位于美国伯克利的 Dynamicland,另一块是即将坐落于中国深圳的 Dynamicland。2026 年 6 月 17 日,我有幸受邀观摩了 Dynamicland 工作坊的 Demo Day。虽然没有深度参与工作坊,但仅仅是在现场观看 Bret Victor 和各位 Author 的演示,就已经足够颠覆想象了。其间我经历了好多次魔法一般的体验,有太多值得回味之处。这篇笔记是一份粗糙的记录,目的是留下一些线索,以防遗忘。

从个人计算到公共计算

此前我对 Dynamicland 的了解不多,看过它发布的一段介绍视频(🔗https://dynamicland.org/2024/Intro/),从中知道了一个相关的概念,叫公共计算(communal computing)。说实话,当时感觉有些抽象。恰好我这几天读了一些关于个人计算(personal computing)的历史,直到我带着对个人计算的认识来到 Dynamicland 空间,才第一次理解到公共计算这个想法的意义。

1940 年代末至 1950 年代初,计算机刚被发明出来。当时的计算机体型巨大,光是主体部分可能就要占掉一整层楼的空间。相比之下,操作员的控制室仅仅是一个小房间。他们有时候在控制台前工作,有时候需要进到计算机里面调试 Bug。

上图:旋风计算机(Whirlwind Computer)机房透视示意图,展示了机柜阵列在室内的空间布局,操作人员正在控制台前工作。下图:旋风计算机机架位置与安装图纸,由麻省理工学院(MIT)伺服机构实验室电子计算机部门绘制。图中标注了整机约 70 × 30 英尺(约 195 平方米)的占地范围。(🔗https://computerhistory.org/blog/the-whirlwind-computer-at-chm/)

直到 1973 年 3 月,世界上第一台真正意义上的个人计算机才被设计制造出来。它叫 Alto,诞生在 Xerox PARC 实验室。Alto 已经小到可以放在桌面上,这是仅从外形上就能看出的变化。使用者可以坐在桌子前,通过鼠标、键盘、图形显示器跟它交互。

图为 1973 年诞生于施乐帕罗奥多研究中心(Xerox PARC)的 Xerox Alto。它的硬件主要由查克·萨克尔(Chuck Thacker)设计,软件出自巴特勒·兰普森(Butler Lampson),立项的最初动机来自艾伦·凯(Alan Kay)对一台「过渡期的 Dynabook」的需要。作为第一台带位图显示和图形用户界面(GUI)的现代个人计算机,它是今天个人电脑的直接源头。(🔗https://www.computerhistory.org/revolution/input-output/14/347)

Alto 停留在实验室里,没有被推向市场。后来 Xerox PARC 迎来了一位访问者,名叫乔布斯。PARC 向他展示了三样东西:面向对象编程(OOP)、图形用户界面(GUI)和计算机网络。他只看到了其中的图形用户界面(🔗https://www.youtube.com/watch?v=BFlop4sP8Os),并把这个想法「借」走了。注意,乔布斯到 PARC 的时候,看到的不是「想法」,甚至不是「原型」,而是一台已经造出来、能实际工作的个人计算机。后来者比尔·盖茨说,他也从 PARC 那里「借」了一些想法。再后来的故事已经为大众熟知了,即 1980 年代爆发的个人计算机革命。

值得一提的是,Xerox Alto 并不是 Alan Kay 心目中个人计算的理想形态。他想要设计一台笔记本大小的便携式个人计算机,只是限于当时的技术条件,没能实现。所以,Xerox Alto 还有一个别名,叫「过渡期的 Dynabook」。

Alan Kay 手持 Dynabook 模型,2008 年(🔗https://en.wikipedia.org/wiki/Dynabook)

快进到今天,形似 Dynabook 的平板电脑已经随处可见,在它之前先普及的是尺寸更小的手持计算设备,也就是至今仍主导着消费市场的手机。尽管我们的现代生活中充斥着各种形态的计算机,Alan Kay 仍然认为「计算机革命尚未发生」。因为计算机并没有解放人的创造力,反而把每个使用者都圈在一个圆宇宙里:手——手机——屏幕——眼睛——大脑——身体——手。计算机革命不仅尚未发生,似乎还走进了一条死胡同(dead end)。

以上仅仅是对个人计算历史的极其粗线条的描绘,不过这些背景知识足够了。

我去参访的 Dynamicland 还只是一个为了工作坊临时搭建起来的空间,不是正式版。空间中摆着一些桌子,桌面上铺着白布,每个桌子上方都有一台摄像机和一台投影仪,由支架撑起。到了正式版,这些摄像机和投影仪可能会安置在天花板上,人走进空间后,其实无法感知到它们。不过就目前的形态来看,Dynamicland 的样子已经与之前提到的计算机都不一样了。摄像机可以看作它的输入设备,投影仪是输出设备,铺着白布的桌面就是它的桌面,既是字面意义上的桌面,也是真正意义上的桌面。而个人电脑里的桌面,只是虚拟的假桌面。

Bret Victor 在做演示

我看到这些设备,冒出一个看似有些蠢其实还挺值得回味的问题,我问 @Lounsen:这一组组设备就对应一台台计算机吗?答案是,这一组组设备不是独立的计算机。因为它们连接着同一个操作系统,互联成一个整体。也就是说,整个房间可以看作一台计算机。隔壁房间也算在内。只要部署了相应的设备,整层楼、甚至整栋楼都可以看作一台计算机。

在这里,Dynamicland 与 MIT 在 1951 年建造的 Whirlwind 计算机形成了遥远的呼应:Whirlwind 自己的身体占据着大量的建筑空间,它是空间的内容;而 Dynamicland 的计算设备嵌在建筑空间里,它们是空间的一部分,Dynamicland 指的不是某台计算机,而是这个被计算改造过的物理空间。它是一种供人类活动的环境,一种媒介。

Dynamicland 与个人电脑、平板电脑、手机也有着根本的不同。回顾一下前面提到的这些个人计算设备,你会发现它们都有一块屏幕,使用者要么坐在屏幕前,要么手持设备把屏幕凑到眼前,而且往往是独自一人对着它。这些设备的体积确实变小了,不再占据大量物理空间,可它们占据的是人的心智空间。一屏障目,不见泰山。使用者孤身一人被固定在屏幕前,心智又被这块屏幕占满,这两点或许正是个人计算走进圆宇宙这条死胡同的主要原因。

Dynamicland 是一个公共空间(communal space),公共空间最基本的含义,就是它可以容纳很多人。你不必独自长时间被钉在固定的位置上,也不必被迫持续盯着一块屏幕。你可以和很多人一起在同一个桌面上工作,可以随意在空间中移动,不同的人也可以在不同空间的桌面上分头协作。这一切都发生在物理空间,而不是虚拟空间,因此 Dynamicland 里的每一个人都是具身存在(embodied being)。

媒介、关系、界面

具身(embodiment)不能狭义地理解成我有我的身体,你有你的身体,两具身体之间可能会有一些互动,这本质上跟一个人坐在电脑前没有区别。无论是你的身体还是我的身体,都无法孤立地存在。我们都置身于同一个媒介之中,因这媒介而彼此相连。因而 Dynamicland 是一个媒介,而不是另一台计算机。这一点听起来或许有些抽象,但只要你走进 Dynamicland 的空间,就能切身地感受到它的独特之处。

Dynamicland 进展报告,2019 年,首页
Dynamicland 进展报告,2019 年 ,尾页

Dynamicland 作为一种新媒介,真正改变的不只是计算机的形态,更是人与机器、人与空间、人与环境,乃至人与人之间的关系。

我们借助界面来更具体地理解这些关系。

界面(interface),字面意思就是 face 与 face 之间,也就是面对面。而真正意义上的面对面,只有在现实的物理空间里才能实现。人们一旦身处同一个公共媒介之中,彼此的交流就更容易发生。比如一张桌面,就不只是某个人的工作台,还是一个促进人与人交流的场所,因为我们都在同一张桌子上(we're on the same table)。此外,在 Dynamicland 里与他人交流时,公共媒介可以为对话提供大量的共享上下文。Dynamicland 的公共性决定了它并不是一处孤立的空间,而是始终与更大的社会空间相连,也有能力孵化并改变一种文化。

对于 Dynamicland 来说,机器、空间、环境已经基本融为一体,可以放在一起来看。我们也可以把 Dynamicland 与个人计算机做个简单的对比,分以下两个方面来说:

一、人与环境可以发生互动的场所。人与手机、平板、个人电脑的互动只发生在屏幕上。而 Dynamicland 首先是一个物理环境,其中所有的物理对象本身都可以互动,而且与它们互动得到的反馈永远是最真实的,你不需要在数字环境里模拟这些互动的效果。其次,Dynamicland 里可以布置很多桌面,只要是摄像机和投影仪能覆盖的平面,都可以当作桌面,而且不必是水平的。最后,也是 Dynamicland 真正神奇的地方,理论上,你可以把空间里任意一个物理对象表面上的任意位置,都变成能与计算系统交互的场所(具体机制后文会介绍)。更多的互动场所,会带来更多的互动可能性和更高的互动频率,而互动性(包括响应性)是任何创造性工作的基础。

二、人与环境互动的模式和通道。个人计算机发展到现在,已经能支持很多种人机交互方式,鼠标、键盘、触控笔、多点触控屏、语音、手势等等,这些方式覆盖了人的视觉、听觉和触觉。但这里所谓的触觉交互,其实都是在触摸一块屏幕,触感极其单调。与之相较,Dynamicland 不需要触控设备,因为人可以直接在物理空间里触摸物理对象,同时获得真实而丰富的触觉反馈。Dynamicland 也不需要鼠标这类定位设备(pointing device),它们是为了在虚拟空间里定位虚拟对象而准备的。另外还有一点容易被忽略,就是人可以在 Dynamicland 里走动,身体能自由地活动,感觉和动觉都完整地保留下来,而不必把身体固定在某个位置,也不必把所有感觉锁定在一块屏幕上。

Dynamicland 目前还不支持语音、手势这类交互方式,这并非技术上的限制,而是因为 Bret Victor 有意保留人与计算机之间的边界。据 @种瓜 讲,Bret 不想监视人。他可能把检测手势看作机器对人体的一种入侵。Bret 对 AI 技术也相当谨慎,尤其抵触生成式 AI。生成式 AI 是对大脑的入侵,一旦用得不好,就极有可能毁坏人的认知。麦克卢汉早就提醒过,我们塑造工具的同时,工具也在塑造着我们。而媒介对人的塑造能力只会比工具更强,并且它对人的影响更难被察觉,因为人沉浸在媒介之中,就像鱼生活在水里,而鱼根本意识不到水的存在。Bret 把 Dynamicland 当作一种媒介来设计,当然明白其中的利害。

对象:物理对象和计算对象

我在现场向 Bret Victor 提了一个问题:理论上,桌面上的所有东西都可以被数字化,比如书、笔、尺子、程序卡片,甚至连桌面本身也可以被虚拟化,那么在设计 Dynamicland 时,要如何取舍,哪些部分用物理对象,哪些部分用数字方式来模拟?Bret 讲,一般的原则是尽可能把所有东西都物理化(physicalize everything),只有在无法用物理对象实现的地方,才用数字方式来呈现。

这是 Dynamicland 最根本的设计哲学,也决定了它与 VR/AR 这样的虚拟化方案完全不同。Dynamicland 完全以现实的物理世界为根基,始终处在现实世界之中,始终要回到现实世界。Dynamicland 主张计算系统不应是现实世界的控制中心,相反,它掌握的关于物理世界和人的信息,应当尽可能少。计算仅仅是附加在物理对象上的一个新属性。

Dynamicland 里的对象可以分成两类:物理对象和计算对象。物理对象存在于物理世界中,计算对象存在于计算系统中。物理对象我们早已习以为常,计算对象又过于抽象,但当计算对象叠加到物理对象上,魔法就发生了,它们融合成一种具有计算属性的物理对象,也就是计算物理对象(computational physical objects)。

Bret 现场演示了一本书,它既是用 Dynamicland 这个媒介制作的,也是为了这个媒介而制作的,你可以叫它 Dynabook(Kay 大概没想到,他的构想会以这种方式实现)。

书名叫《猫猫如何跳?》(How Do Cats Jump?)。

一本动态书不仅包含装订成册的页面,还包含各种程序卡和工具集

Bret 把书放在桌面上,翻开书页的那一刻,是我经历的第一个魔法时刻。那本书看上去和普通的书没什么两样,上面有些文字,但书页上同时还播放着一段视频,内容是 Bret 家的一只猫跳上房顶的镜头。我当时就联想到《哈利波特》里的一个场景,主角看着报纸,上面的新闻人物还会动。即使你知道它在技术上大概是怎么实现的,第一眼看到这样的东西,依然会本能地(viscerally)受到魔法的冲击。物理对象 + 计算对象 = 魔法对象。

第二个魔法体验:「分解」一只猫。无论是探究还是创作,都免不了要先把材料分解,再重新组合起来。Bret 把一幅猫的图像投到一大张纸上,先试着用黄色马克笔圈出猫的尾巴。这一步本应能把猫尾巴这部分图像拆出来,留作后续处理的素材。但现场的图像检测不太稳定,效果并不理想。Bret 又换了个办法,用一些黑色纸片遮住想拆出来的部分,再把它们复制出来,也就完成了分解。随后,你就可以用关节工具把拆出来的各个部分重新连接起来,去探索猫是怎么运动的。比如,Bret 现场演示了一只猫如果像人那样直立着做蹲起会是什么样子,画面很搞笑。

这里奇妙之处在于,我们要处理的是一张数字图像,用的工具却是物理的。你不需要先去熟悉某个图像处理软件的复杂界面,再握着鼠标,用一支虚拟的笔在屏幕上戳戳戳。而在 Bret 这套操作里,马克笔和纸片都是已经上手(ready to hand)的工具,连小朋友也能毫无障碍地用起来。

第三个魔法体验:可随意改变刻度的尺子。Bret 的工具集里有一把尺子,它的本体是一把真实的尺子,但上面的刻度是由计算系统虚拟出来、再投射上去的。一把物理尺子就此拥有了计算属性。和刻在物理尺子上的刻度相比,虚拟的刻度要灵活得多。你可以通过编程定制它的样式和精度,甚至调整它的比例。一把物理尺子上的 1cm,就对应现实里的 1cm,用来量物理对象正合适。可有时你要量的是数字对象,比如桌面上这张被放大的图像。图像里呈现的物体,它在虚拟空间的尺寸与它在物理空间的尺寸已经不再相等。假如图像被放大到三倍,物体真实的 1cm,在虚拟空间就会显示成 3cm。这时拿物理尺子去量,量到的是显示出来的 3cm,而不是你真正想知道的那个 1cm。好在虚拟刻度可以编程,你只要把尺子的比例改成「虚拟空间的 3cm 当作 1cm」,它就能直接读出物体的真实尺寸。另一个好处是,它的本体不必真是一把尺子,任何又长又直的物体,配上由计算表征出来的刻度,都能当尺子用。

我们还可以再往深处想一想,长度到底是什么?它是客观的吗?尺子上的 1cm,在任何空间里都真的是一厘米吗?它在人眼里看着也是一厘米吗?离远一点看,它还是一厘米吗?当我们在物理空间和多个虚拟空间之间来回穿梭,不断调整尺子的比例去适应当下的空间时,我们慢慢建立起来的,会是一种更接近爱因斯坦的现代时空观,而不是欧几里得式那种认为空间处处均匀一致的时空观。

在介绍接下来几个魔法体验之前,我们需要先认识一下 Dynamicland 里的一类特殊对象。你可能已经注意到了,它就是遍布在这个空间各处的程序卡片。程序卡片首先是一种存在于物理空间的物理对象,说到底就是一张纸卡。纸卡上面有一些由不同颜色的点构成的标记,它们分处四个角,框出一个平面。计算系统能识别出这些标记,卡片也就有了符号功能。正是这些具有符号功能的卡片,将物理对象与计算对象连接了起来。

这里有几处值得思考的地方,首先是为什么需要这些卡片。理论上,完全可以让计算系统直接去识别物体,就像 AR 那类方案做的那样。我认为有两点原因。第一,是前面提到的那条原则,也就是计算系统掌握的关于物理世界的信息应该尽可能少。第二,用卡片作为中介去连接物理对象和计算对象,反而能让两者解耦,从而带来更大的灵活性和可组合性。两者之间的关联,可以不依赖物理对象本身的性质,比如它的外观。因为这层关联本身已经成了一个实体,也就是那张卡片。

还有一个有意思的问题,为什么要用这些标记框出一块平面?你应该已经想到了,这个平面可以用作屏幕。你可以把卡片贴到某个物理对象的表面上,这样就制造出了一块屏幕,而这块屏幕又能成为你与计算系统交互的场所(回应前文)。所以理论上,在 Dynamicland 里,只要空间允许,你可以在任意物体的任意表面上制造出任意多的屏幕。你不再需要把所有心智资源都倾注在一块屏幕上,计算系统也不再需要倾尽全部资源,只为把你的注意力吸引到一块屏幕上。

程序卡片的标记形式,或者说它的语法,是可编程的。也就是说,卡片上的标记不必是现在这种样子,甚至连承载这些标记的东西,都不必是一张卡片。这将打开更大的想象空间。

接下来将介绍第四个魔法体验:手撕卡片。@种瓜 给我们简单演示了一下他在 Dynamicland 做学徒时记的日志。他想把日志内容显示得大一些,可当时桌面上既没有更大的卡片,也没有放大工具。于是他把一张小卡片的四个角撕下来,摆到桌面上,再调整它们的位置,就制造出了一块更大的屏幕。这个动作很不符合认知习惯,却很符合身体直觉。计算系统只关心那四个角上的标记,并不在乎它们是否固定在同一张卡片上,而纸质的卡片,恰好可以撕开。正是物理材料的可塑性和计算系统的语义灵活性,让这种魔法成为可能。

还记得我们前文讲过,只要是摄像机和投影仪能覆盖的地方,都可以成为一张桌面。也就是说,投在这张桌面上的内容,完全可以投到另一张桌面上,或者另一个空间的一面墙上。在 Dynamicland 里,空间是可编程的。日志本身就是一本动态书,@种瓜 可以把学徒日志铺在面前这张桌面上,用工具卡操控要显示的内容,再把它投到另一块更大的屏幕上。这听起来是不是很熟悉?很像我们在公司会议室或自家客厅里会做的事情。在 Dynamicland 里,要做到这些,不需要复杂的 PPT 软件,也不需要投屏工具。用手就可以。

第五个魔法体验:输入法作为一个对象。@种瓜 为 Dynamicland 的计算系统开发了一个中文输入法。在物理世界里,它对应着一张程序卡片。把输入法卡片连接到键盘卡片上,就能启用它;合上卡片,就能关闭中文输入。输入法同时也是一个程序,一个计算对象。

@种瓜 演示了另一个神奇的能力。他在一张键盘上激活了输入法,输入了两个字,这时输入法正处于候选词状态。他把输入法合上,跑到另一张桌面,在那里的键盘上重新激活,发现输入法依然停在刚才那个候选词状态。可以这样理解,计算对象是有记忆的,而且你能把它握在手里、揣进兜里,因为它和一张实体的程序卡片绑在一起。你可以在 Dynamicland 空间里任何需要的地方重新启动它,甚至你也可以把它带回家。

Realtalk 语言与计算系统

以上种种体验已经足以让我惊叹,但 Dynamicland 最有魅力的地方还没有展现出来,那就是 Realtalk 语言。Realtalk 应该和 Smalltalk 一样,没有操作系统这个概念,编程语言本身就是操作系统。我对 Realtalk 的了解还不多,因为我没有深入参与过工作坊,也没有真正用它写过项目。但听了 @种瓜 的介绍,我能感觉到,Realtalk 可能是人类至今能设计出的最美的计算系统。

Realtalk 语言有三个最基本的原语:Claim,声明;When,当某个条件成立时;Wish,希望系统里的对象达到某种状态。整个 Realtalk 系统,从最底层的实现到最上层的用户交互,都建立在这三个原语之上;用户写的程序,也是用它们表达的。

在 Realtalk 系统里,所有计算对象都处在同一个场(field)中,它们通过这个场彼此通信。这一点呼应了我们前面讲过的,Dynamicland 是一种媒介,所有来到这个空间的人都沉浸其中。不只是人,所有物理对象也一样,都沉浸在这个媒介里。媒介就是场,场就是媒介。人、物体、计算对象,表达的是同一种存在论。

Dynamicland 是一种媒介,一种文化,也是一种哲学。这里有太多颠覆想象和认知的东西,除了「魔法」这个词,我想不出还有什么更合适的词来形容它。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-26 11:19:53 HTTP/2.0 GET : https://c.460.net.cn/a/621360.html
  2. 运行时间 : 0.082711s [ 吞吐率:12.09req/s ] 内存消耗:4,580.59kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a0671aa2d3e5e21c36f0151bb1b6aae8
  1. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/config/database.php ( 2.47 KB )
  34. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/runtime/temp/a3df6b94aede6ebd0d2926ccdfcd20d5.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/c.460.net.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001020s ] mysql:host=127.0.0.1;port=3306;dbname=c460;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001050s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000301s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000340s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000530s ]
  6. SELECT * FROM `set` [ RunTime:0.000199s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000626s ]
  8. SELECT * FROM `article` WHERE `id` = 621360 LIMIT 1 [ RunTime:0.000501s ]
  9. UPDATE `article` SET `lasttime` = 1785035993 WHERE `id` = 621360 [ RunTime:0.003856s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000289s ]
  11. SELECT * FROM `article` WHERE `id` < 621360 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000551s ]
  12. SELECT * FROM `article` WHERE `id` > 621360 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000476s ]
  13. SELECT * FROM `article` WHERE `id` < 621360 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001068s ]
  14. SELECT * FROM `article` WHERE `id` < 621360 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000780s ]
  15. SELECT * FROM `article` WHERE `id` < 621360 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000703s ]
0.084282s