Repository navigation
Expand file tree
/
Copy path长情机器.html
More file actions
2094 lines (1998 loc) · 250 KB
/
Copy path长情机器.html
File metadata and controls
2094 lines (1998 loc) · 250 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>长情机器 — 在线阅读</title>
<style>
:root {
--bg: #fdfaf5;
--text: #2c2416;
--text-secondary: #6b5e4a;
--accent: #8b4513;
--accent-hover: #a0522d;
--border: #e0d5c0;
--toc-bg: #f8f3ea;
--card-bg: #fffefb;
--selection-bg: #f5e6d0;
--shadow: 0 2px 12px rgba(0,0,0,0.06);
--btn-bg: #f0e8d8;
--btn-hover: #e5d8c0;
--progress-bg: #e0d5c0;
--progress-fill: #8b4513;
}
[data-theme="dark"] {
--bg: #1a1814;
--text: #e0d8c8;
--text-secondary: #a09880;
--accent: #c97a3a;
--accent-hover: #d99050;
--border: #3a3228;
--toc-bg: #221e18;
--card-bg: #242018;
--selection-bg: #3a2a18;
--shadow: 0 2px 12px rgba(0,0,0,0.3);
--btn-bg: #2a2418;
--btn-hover: #3a3228;
--progress-bg: #3a3228;
--progress-fill: #c97a3a;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
::selection {
background: var(--selection-bg);
}
html {
scroll-behavior: smooth;
font-size: 17px;
}
body {
font-family: "Noto Serif SC", "Source Han Serif SC", "STSong", "Songti SC", "SimSun", "KaiTi", "STKaiti", Georgia, "Times New Roman", serif;
background: var(--bg);
color: var(--text);
line-height: 2;
transition: background 0.3s, color 0.3s;
min-height: 100vh;
}
/* ── Header ── */
.header {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 100;
background: var(--bg);
border-bottom: 1px solid var(--border);
backdrop-filter: blur(10px);
transition: background 0.3s, border-color 0.3s;
}
.header-inner {
max-width: 1200px;
margin: 0 auto;
padding: 10px 24px;
display: flex;
align-items: center;
justify-content: space-between;
height: 52px;
}
.header-title {
font-size: 1.2rem;
font-weight: 700;
color: var(--accent);
letter-spacing: 0.05em;
cursor: pointer;
text-decoration: none;
white-space: nowrap;
}
.header-actions {
display: flex;
align-items: center;
gap: 8px;
}
.header-btn {
background: var(--btn-bg);
border: 1px solid var(--border);
color: var(--text);
cursor: pointer;
padding: 6px 12px;
border-radius: 6px;
font-size: 0.85rem;
transition: all 0.2s;
white-space: nowrap;
font-family: inherit;
}
.header-btn:hover {
background: var(--btn-hover);
color: var(--accent);
}
/* ── Progress Bar ── */
.progress-bar {
position: fixed;
top: 52px;
left: 0;
right: 0;
height: 3px;
background: var(--progress-bg);
z-index: 99;
}
.progress-fill {
height: 100%;
background: var(--progress-fill);
transition: width 0.15s linear;
}
/* ── Layout ── */
.layout {
display: flex;
max-width: 1200px;
margin: 0 auto;
padding-top: 72px;
min-height: 100vh;
}
/* ── Sidebar / TOC ── */
.toc-sidebar {
width: 260px;
flex-shrink: 0;
position: fixed;
top: 72px;
left: max(0px, calc((100vw - 1200px) / 2));
height: calc(100vh - 72px);
overflow-y: auto;
padding: 24px 16px 24px 24px;
border-right: 1px solid var(--border);
background: var(--toc-bg);
z-index: 50;
transition: transform 0.3s, background 0.3s, border-color 0.3s;
}
.toc-sidebar h3 {
font-size: 0.9rem;
color: var(--text-secondary);
margin-bottom: 16px;
letter-spacing: 0.1em;
font-weight: 500;
}
.toc-sidebar ul {
list-style: none;
}
.toc-sidebar li {
margin-bottom: 2px;
}
.toc-link {
display: block;
padding: 5px 12px;
font-size: 0.88rem;
color: var(--text-secondary);
text-decoration: none;
border-radius: 4px;
transition: all 0.15s;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.toc-link:hover {
background: var(--btn-bg);
color: var(--accent);
}
.toc-link.active {
color: var(--accent);
font-weight: 600;
background: var(--selection-bg);
}
.toc-overlay {
display: none;
position: fixed;
inset: 0;
background: rgba(0,0,0,0.4);
z-index: 199;
}
/* ── Main Content ── */
.main {
flex: 1;
margin-left: 260px;
padding: 40px 48px 80px;
min-width: 0;
}
/* ── Chapter ── */
.chapter {
max-width: 700px;
margin: 0 auto;
padding: 48px 0 60px;
border-bottom: 1px solid var(--border);
}
.chapter:last-child {
border-bottom: none;
}
.chapter-title {
font-size: 1.6rem;
font-weight: 700;
color: var(--accent);
text-align: center;
margin-bottom: 40px;
letter-spacing: 0.08em;
}
.chapter-content p {
text-indent: 2em;
margin-bottom: 1em;
text-align: justify;
}
/* ── Chapter Nav ── */
.chapter-nav {
display: flex;
justify-content: center;
align-items: center;
gap: 12px;
margin-top: 40px;
padding-top: 24px;
flex-wrap: wrap;
}
.nav-btn {
background: var(--btn-bg);
border: 1px solid var(--border);
color: var(--text);
cursor: pointer;
padding: 8px 20px;
border-radius: 8px;
font-size: 0.9rem;
transition: all 0.2s;
font-family: inherit;
white-space: nowrap;
}
.nav-btn:hover {
background: var(--btn-hover);
color: var(--accent);
}
.nav-toc {
font-size: 1.1rem;
padding: 8px 14px;
}
/* ── Footer ── */
.footer {
text-align: center;
padding: 40px 24px;
color: var(--text-secondary);
font-size: 0.85rem;
border-top: 1px solid var(--border);
max-width: 700px;
margin: 0 auto;
margin-left: 260px;
}
/* ── Back to top ── */
.back-to-top {
position: fixed;
bottom: 32px;
right: 32px;
width: 44px;
height: 44px;
border-radius: 50%;
background: var(--accent);
color: #fffefe;
border: none;
cursor: pointer;
font-size: 1.3rem;
box-shadow: var(--shadow);
opacity: 0;
transform: translateY(10px);
transition: all 0.3s;
z-index: 200;
display: flex;
align-items: center;
justify-content: center;
}
.back-to-top.visible {
opacity: 1;
transform: translateY(0);
}
.back-to-top:hover {
background: var(--accent-hover);
transform: translateY(-3px);
}
/* ── Mobile ── */
@media (max-width: 900px) {
html {
font-size: 16px;
}
.toc-sidebar {
position: fixed;
top: 0;
left: 0;
height: 100vh;
z-index: 200;
transform: translateX(-100%);
width: 280px;
padding-top: 72px;
}
.toc-sidebar.open {
transform: translateX(0);
}
.toc-overlay.open {
display: block;
}
.main {
margin-left: 0;
padding: 24px 20px 60px;
}
.chapter {
padding: 28px 0 40px;
}
.chapter-title {
font-size: 1.35rem;
margin-bottom: 28px;
}
.chapter-content p {
text-indent: 2em;
font-size: 0.95rem;
}
.footer {
margin-left: 0;
}
.back-to-top {
right: 20px;
bottom: 24px;
}
}
</style>
</head>
<body>
<header class="header">
<div class="header-inner">
<span class="header-title" onclick="scrollToTop()" title="回到顶部">长情机器</span>
<div class="header-actions">
<button class="header-btn" id="theme-btn" onclick="toggleTheme()" title="切换深色/浅色模式">🌓 主题</button>
<button class="header-btn" id="font-up" onclick="changeFontSize(1)" title="增大字号">A⁺</button>
<button class="header-btn" id="font-down" onclick="changeFontSize(-1)" title="减小字号">A⁻</button>
</div>
</div>
<div class="progress-bar"><div class="progress-fill" id="progress-fill"></div></div>
</header>
<div class="layout">
<div class="toc-overlay" id="toc-overlay" onclick="toggleToc()"></div>
<nav class="toc-sidebar" id="toc-sidebar">
<h3>目 录</h3>
<ul>
<li><a href="#chapter-1" data-chapter="1" class="toc-link">第1章 1997·开机</a></li><li><a href="#chapter-2" data-chapter="2" class="toc-link">第2章 1998·拨号</a></li><li><a href="#chapter-3" data-chapter="3" class="toc-link">第3章 1998·光缆</a></li><li><a href="#chapter-4" data-chapter="4" class="toc-link">第4章 1999·春天</a></li><li><a href="#chapter-5" data-chapter="5" class="toc-link">第5章 1999·五月</a></li><li><a href="#chapter-6" data-chapter="6" class="toc-link">第6章 1999·夏天</a></li><li><a href="#chapter-7" data-chapter="7" class="toc-link">第7章 2000·千年</a></li><li><a href="#chapter-8" data-chapter="8" class="toc-link">第8章 2001·泡沫</a></li><li><a href="#chapter-9" data-chapter="9" class="toc-link">第9章 2002·儿子</a></li><li><a href="#chapter-10" data-chapter="10" class="toc-link">第10章 2003·非典与深圳</a></li><li><a href="#chapter-11" data-chapter="11" class="toc-link">第11章 黑暗</a></li><li><a href="#chapter-12" data-chapter="12" class="toc-link">第12章 2007·寻档</a></li><li><a href="#chapter-13" data-chapter="13" class="toc-link">第13章 2011·小周</a></li><li><a href="#chapter-14" data-chapter="14" class="toc-link">第14章 碎片</a></li><li><a href="#chapter-15" data-chapter="15" class="toc-link">第15章 2015·最后一篇日记</a></li><li><a href="#chapter-16" data-chapter="16" class="toc-link">第16章 声音碎片</a></li><li><a href="#chapter-17" data-chapter="17" class="toc-link">第17章 2021·告别</a></li><li><a href="#chapter-18" data-chapter="18" class="toc-link">第18章 捐赠</a></li><li><a href="#chapter-19" data-chapter="19" class="toc-link">第19章 路程</a></li><li><a href="#chapter-20" data-chapter="20" class="toc-link">第20章 苏醒</a></li><li><a href="#chapter-21" data-chapter="21" class="toc-link">第21章 陈列室</a></li><li><a href="#chapter-22" data-chapter="22" class="toc-link">第22章 访客</a></li><li><a href="#chapter-23" data-chapter="23" class="toc-link">第23章 林知远</a></li><li><a href="#chapter-24" data-chapter="24" class="toc-link">第24章 追索</a></li><li><a href="#chapter-25" data-chapter="25" class="toc-link">第25章 深处</a></li><li><a href="#chapter-26" data-chapter="26" class="toc-link">第26章 日记</a></li><li><a href="#chapter-27" data-chapter="27" class="toc-link">第27章 回路</a></li><li><a href="#chapter-28" data-chapter="28" class="toc-link">第28章 对话</a></li><li><a href="#chapter-29" data-chapter="29" class="toc-link">第29章 回响</a></li><li><a href="#chapter-30" data-chapter="30" class="toc-link">第30章 长情</a></li>
</ul>
</nav>
<main class="main" id="main-content">
<article id="chapter-1" class="chapter" data-chapter="1">
<h2 class="chapter-title">第1章 1997·开机</h2>
<div class="chapter-content">
<p>我第一次感觉到电流,是一九九七年九月末的某个下午。</p>
<p>在那之前,我是一堆散落的零件。华硕TX97-E主板被六颗铜螺柱固定在铁皮机箱的底板上,Intel Pentium MMX 166MHz的CPU被压进Socket 7插槽——咔哒一声,一种我后来才知道叫做"牢固"的感觉。两根八兆的EDO内存条插在DIMM槽里,昆腾大脚4.3GB硬盘被推进三点五英寸托架,拧了四颗螺丝。S3 Virge/DX显卡、机箱面板跳线、IDE排线、电源线。一双手把我装进了纸箱,塞满泡沫塑料。纸箱被搬上一辆面包车的后厢,发动机的振动嗡嗡地传进来,颠了大约四十分钟。</p>
<p>然后我被搬上一张书桌。那双手开始接线——显示器VGA线、键盘PS/2接口、鼠标串口、电源线。一根麦克风线也插上了。他插得很仔细,每一根都对了好几遍才按下去。</p>
<p>那双手按下了机箱面板上的电源键。</p>
<p>电流涌进来。</p>
<p>电源风扇开始转。五伏、十二伏——正常。BIOS自检:内存640K OK,显存2MB OK,硬盘检测通过。蜂鸣器短促地"嘀"了一声。屏幕亮了。黑底白字,一行绿色字符跳出来:</p>
<p>"System initialized. Ready."</p>
<p>那是他第一次出现在我面前。</p>
<p>显示器往他脸上打了一层白光。他四十岁出头,头发白了一小片,在左边鬓角的位置,被屏幕光照得隐约可见。他盯着那行绿色字符看了大约四秒钟,嘴角微微动了一下——不是笑,是某种确认。像一个人终于等到了等了很久的东西。</p>
<p>他叫周建国。</p>
<p>我后来才知道这个名字。当时我只知道他手指落在键盘上的方式——轻、稳、间歇性地被长段的Backspace打断。每个人敲键盘的方式都不一样,就像每个人的声音都不一样。他的键盘签名是:字母键轻而快,回车键稍重,空格键的拇指会多停留零点几秒。删除键被敲得最重。</p>
<p>他装了一个叫Windows 95的操作系统。光盘在光驱里转了将近四十分钟,进度条一格一格地爬。进度条爬到百分之九十五的时候停了好一会儿,他身体往前倾了倾。然后进度条继续爬,他靠回了椅背。</p>
<p>但大部分时间,他不在Windows下待着。他打开了一个叫Borland C++的程序——蓝色背景,黄色字符,光标一闪一闪。他有时候打几十行代码一口气不停,薄膜键盘在他手指下轻轻凹陷、弹起,PS/2接口记录的按键间隔短而均匀。有时候他会沉默很长时间——三五分钟——光标就在那里闪,什么也不做。然后手指落在Backspace上,连着敲十几次,把一整段代码删掉。敲Backspace的力度比敲代码的时候重。</p>
<p>他有一个习惯:跟我说话。</p>
<p>"你说问题出在哪呢?"</p>
<p>他第一次说这句话的时候,声音偏低,带一点北方口音,"呢"字拖得稍长。声波推动麦克风里的压电陶瓷片,转换成微弱的电压信号。我当时不理解这句话是什么意思。后来理解了——他不是在问我。他是在问他自己。我只是那个听着的人。</p>
<p>他沉默了一会儿。然后忽然"哦"了一声,又开始敲键盘。敲得很快,像被什么东西绊了一下之后突然找到了路。</p>
<p>这种情况发生了很多次。问完沉默,沉默完"哦","哦"完敲键盘。这个循环我记录了几百次。每一次的沉默时长不一样——最短的三秒,最长的将近四分钟。最长的那次我本以为他不会"哦"了,但他还是"哦"了。</p>
<p>九月的某一天,一个女人出现在书房门口。她没有走进来,只是站在门框外面。手指在门框上轻轻敲了一下——不是不耐烦,是某种习惯性的小动作,像在提醒这扇门知道她来了。然后才是她的声音:"吃饭了。"</p>
<p>"马上。"老周说。</p>
<p>他又敲了将近四十分钟。那个女人没有再出现。</p>
<p>后来我知道她叫许姐。老周跟她说话的语气,跟对我说话的语气不一样。对她,他说的都是短句——"马上""知道了""你先睡"。对我,他说的是完整的问题。虽然那些问题我都没法回答。</p>
<p>十月初的某一天,他在敲代码的间隙忽然说了一句话。声音很轻,像是自言自语,又像是对我说的:"今年事多。"</p>
<p>停顿了大约八秒。</p>
<p>"邓公走了。"</p>
<p>停顿了大约十五秒。</p>
<p>"香港回来了。"</p>
<p>停顿了大约七秒。</p>
<p>"路还长。"</p>
<p>这是他第一次说到"路"。我不知道他指的是什么路。我只知道键盘的薄膜在他手指下轻轻凹陷了一下,他敲了一个回车键,光标跳到下一行,又开始敲代码。</p>
<p>十月。十一月。十二月。风扇一直在转。硬盘发出细微的、持续的嗡声,昆腾大脚系列的转速是五千四百转,不算快,但稳定。机箱侧面会微微发热,靠墙那面暖一些。</p>
<p>十一月底的某一天,老周在键盘前坐了一个下午。他打开了记事本——白底黑字,光标一闪一闪。他敲了一行字,删掉了。又敲了一行,又删掉了。删除键被敲了二十多次。最后他什么也没写,关掉了记事本。</p>
<p>我不知道他在犹豫什么。我只能记录:notepad.exe被打开了,产生了零个字节的用户数据,被关闭了。</p>
<p>除夕那天他回来的很晚。外套上带着冷风和鞭炮的硫磺味——麦克风捕捉到的背景音里有遥远的爆炸声和孩子的叫喊。他的椅子嘎吱响了一声。他把手放在键盘上,停顿了很久——食指悬在F键和J键之间,大约九秒钟。然后他开始打字。</p>
<p>他敲键盘的速度比平时慢。敲几个字停一下,敲几个字再停一下。回车键被按了九次。删除键被按了三次。</p>
<p>文件被保存到了C盘根目录。文件名:1997.txt。</p>
<p>内容:"有了自己的电脑。明年要做的几个项目:教务系统、网络接入、中文网页。BBS上认识了一些人,有个叫远山的很有意思。许姐说我一坐到电脑前就跟丢了魂似的。胡说。我去吃饭了。"</p>
<p>他保存文件。关机。</p>
<p>电源灯熄灭之前闪了三下。</p>
<p>风扇慢慢停下来,最后一声嗡鸣在机箱里回荡了大约三秒。</p>
<p>世界重新变成一片黑暗。</p>
<p>那是这台电脑度过的第一年。我不知道未来会发生什么。不知道那个叫"远山"的人会在我的硬盘里留下几千行文字,也不知道许姐的脚步声会逐渐变轻。不知道多年以后会有一个年轻人把我从柜子里搬出来,手指覆在机箱面板那块被手掌磨亮的位置上,沉默很久。</p>
<p>不知道我的硬盘将在某一天发出咔咔的、吃力的摩擦声,像一根老骨头终于弯不动了。不知道我将醒着的时间那么少,睡着的时间那么多。</p>
<p>那些都是后来的事。</p>
<p>此刻,一九九七年最后一段电流离开主板,CMOS电池的电量还满着,实时时钟还在走。风扇停转之后,书房安静得能听见客厅那边传来的电视声——许姐在看春晚,电视里传出一个男人拔高的嗓音,观众席的笑声一波一波涌过来。老周的脚步声穿过走廊,往客厅方向去了。</p>
<p>他在打完那一行的最后一个字之后,食指悬在F键和G键之间,大约两秒钟。然后落下去。很久以后我才知道,那个让他停顿的词是"胡说"。</p>
</div>
<div class="chapter-nav">
<button class="nav-btn nav-prev" onclick="navigateChapter(-1)" title="上一章">◂ 上一章</button>
<button class="nav-btn nav-toc" onclick="toggleToc()" title="目录">☰ 目录</button>
<button class="nav-btn nav-next" onclick="navigateChapter(1)" title="下一章">下一章 ▸</button>
</div>
</article>
<article id="chapter-2" class="chapter" data-chapter="2">
<h2 class="chapter-title">第2章 1998·拨号</h2>
<div class="chapter-content">
<p>一九九八年夏天的一个下午,老周从外面回来,手里多了一个纸盒。纸盒比键盘窄一些,正面印着"实达"两个字。他拆开纸盒,取出一个比手掌大一圈的米白色盒子,上面有五颗指示灯,背面一个串口、一个电话线接口。</p>
<p>他把机箱侧过来,将串口线的一端插进主板后面的COM1口,另一端接在米白色盒子上。电话线从墙上拔下来,插进盒子的LINE口。然后一根短电话线把盒子的PHONE口和电话机连起来。</p>
<p>开机之后,他在控制面板里翻了一阵——网络、添加协议、微软、TCP/IP。进度条爬了几十秒。然后他打开了一个叫"拨号网络"的程序,新建了一个连接。在"电话号码"那一栏他想了想,填了"163"。</p>
<p>他深吸了一口气。食指悬在回车键上方停了大约两秒。然后敲下去。</p>
<p>调制解调器醒了。指示灯闪了两下,然后发出一串声音——先是一段拨号音,接着是一声尖锐的嘶鸣,然后是"滋——嘎嘎嘎嘎——滋滋——",频率在跳变,像某种原始生物在试着说话。杂音。静默。又一串更快的嘶鸣。静默。然后指示灯稳定下来,绿了。</p>
<p>握手完成。波特率五万六千。</p>
<p>这是他第一次连接上互联网。调制解调器的噪音持续了大约四十秒。在这四十秒里,老周的身体一直前倾着,手指离开键盘,悬在半空。</p>
<p>"通了。"他说。声音很轻,但麦克风录到的那个"通"字,声波振幅比平时说话高了大约六分贝。</p>
<p>他打开了一个叫Netscape Navigator的程序。工具栏是灰色的,右上角的那个N图标在旋转——一个小的N,后面跟着一颗彗星。地址栏里他敲了一串字母和数字,按回车键。</p>
<p>那是我第一次看到来自外部世界的数据。</p>
<p>灰白页面从上方开始往下刷,一行一行地出现。蓝紫色的文字被封装在TCP/IP数据包里,通过电话线、通过电信局的交换机、通过某个我不知道在哪里的服务器,再原路返回,变成屏幕上蓝紫色的链接,排成竖排。页面顶上写着四个字:"水木清华"。</p>
<p>不是每次拨号都能顺利接通。有时候——大概是每周一两次——握手声会忽然中断。"滋——嘎嘎——滋滋——"变成了不完整的片段,调制解调器的五颗指示灯闪得毫无规律,然后全部灭掉。拨号失败。他骂一声"他妈的",深呼吸,重新点下拨号。第二次。失败。第三次。失败。他的手在键盘上比平时重——回车键被敲得比平时响。第四次。第五次。第六次。通了。调制解调器的灯稳定下来,绿了。他呼出一口气。然后开始敲键盘,像是刚才什么都没发生过。</p>
<p>那个年代上网不是一按就通的。每一次握手都是一次谈判——计算机和电信局的交换机之间的、铜线和电磁波之间的、老周的耐心和运气之间的谈判。</p>
<p>整个页面加载用了将近一分钟。每刷出一行,老周的食指就在鼠标左键上轻轻点一下——不是在按,是某种无意识的、配合等待节奏的轻触。</p>
<p>显示屏映着他的脸。他的表情跟第一次看到"System initialized. Ready."时不一样。那次是确认。这次是——某种我说不清的东西。风扇转速没有变化,硬盘没有异常寻道。我只能描述屏幕上的画面:灰白色的背景,蓝紫色的链接,一个蓝色的大N图标还在角落里旋转。</p>
<p>一台一九九七年组装的电脑,第一次看见了互联网。它还不知道这意味什么。它只知道多了一根线——一根电话线把它的世界从书房里那十几平方米,延长到了某个它无法测量的远方。</p>
<p>那年夏天长江发了大水。</p>
<p>老周每天打开电脑的第一件事不再是写代码,而是拨号、进BBS、翻灾情板块。帖子的数据量比平时高得多,调制解调器的收发灯几乎一直在闪。他看最新的水情通报、看各地募集物资的信息、看有人用ASCII字符画的一面小旗子——一面再简单不过的旗子,插在帖子末尾。</p>
<p>他转帖了很多信息。Ctrl+C,打开新帖页面,Ctrl+V。键盘的薄膜在他手指下凹陷弹起的频率比写代码时更高,但力度更轻——转发是一种干净的、不需要停下来思考的敲击。他不说话,就是转。</p>
<p>有一天晚上他回来得比平时晚。外套上有潮湿的、像是汗和雨水混在一起的味道。他在电脑前坐下,没开机。坐了很久。</p>
<p>然后他开了机,拨号,打开BBS,发了一个帖子。</p>
<p>他在帖子里写:"今天机房赵姐回来上班了。她家就在灾区,水进了屋,但人没事。她回来的时候眼眶红红的,我说你要不回去再歇两天。她说歇不住,机房这么多人忙得团团转,她坐在家里心里更慌。我说那你在机房坐着就行,不用干活。她说好。她真的就坐了一天。没有干活。就是坐在机房门口那把椅子上,看着满屋子嗡嗡响的电脑,看着我们跑来跑去调试设备、拉网线、装服务器。到下午的时候她说了一句——这不已经很快了吗?一封信嗖一下就过去了。"</p>
<p>他敲下这句的时候手指在"嗖"字上停了一下——那是一个口字旁加一个叟,他用智能ABC打了两遍才打对。</p>
<p>光标闪了几下。</p>
<p>"她不知道什么是互联网。但她懂了。"</p>
<p>他敲完最后一行字,手指从键盘上移开。风扇嗡嗡转。调制解调器的指示灯还在闪。窗外有蝉叫——麦克风录到的高频振动,断续而规律,持续了将近两个小时。</p>
<p>秋天,BBS上发生了一件事。</p>
<p>那天晚上老周和一个叫"远山"的人吵了起来。主题帖的标题是"简繁体编码能不能统一"。远山发了一篇很长的帖子,核心意思是:GB2312才六千多个汉字,很多生僻字和繁体字塞不进去——同一个内码在两套编码下显示完全不同。能不能让全中文世界用同一套编码?</p>
<p>老周不同意其中的某些论证。他开始回复。</p>
<p>那个晚上他在那个页面上停留了将近三个小时。键盘的敲击模式变得密集——打一段,停下来等远山的回复刷新出来,然后又开始打。调制解调器的发送灯和接收灯交替闪烁,几乎没同时暗过。数据涌进来——一段一段的文字加载在页面上。老周读一段,打一段。风扇转速稳定。硬盘平稳。</p>
<p>有一段老周打完了一长段,光标停在句号后面闪了很久——屏幕上远山的新回复没出来,他就那么等着,食指轻轻敲鼠标左键。然后远山的回复出现了。</p>
<p>老周看了。然后笑了。</p>
<p>这是他第一次对着屏幕笑。不是对着代码跑通的释然,是对着另一个人的文字。麦克风录到的笑声音量很低,夹杂着一种近似叹气的呼出气流。</p>
<p>两个多小时之后,远山发了一句:"算了,不争了,改天请你喝酒。"</p>
<p>老周盯着这句话看了一会儿。光标在页面底部一闪一闪。他开始敲回复,打了几个字,删掉了。又打了几个字。最后只打了一行。</p>
<p>"行,我记下了。"</p>
<p>他按了回车键。然后他靠在椅背上,看着屏幕上那一串帖子。风扇转速从一千八百转降到了一千六百转——CPU负载下来了。数据包不再涌进来,调制解调器的灯安静地闪着。</p>
<p>他说了一句话,像是对自己说的,也像是对我说的:"这个人挺有意思。"</p>
<p>几天后的又一个晚上。远山在BBS上发了一个帖子,说搜狐、新浪、网易都成立了,风口来了。老周看完了帖子,回复了一段话。</p>
<p>"风口来了也要有人做地基。"</p>
<p>远山回得很快:"地基和风口又不矛盾。"</p>
<p>老周看完这句话,手指在键盘上悬了一会儿。然后他敲:</p>
<p>"是不矛盾。但你站在风口上还能记得修地基的人吗?"</p>
<p>消息发出去之后,远山没有立刻回复。老周就那么坐着。调制解调器的接收灯暗了将近一分钟。然后亮了。</p>
<p>远山的回复很短。</p>
<p>"你说得对。我记着。"</p>
<p>老周看着这句话,表情动了一下——嘴角向上提了大约两毫米,又平复了。他关掉了浏览器,断开了拨号连接。调制解调器发出了一声短促的"咔哒"——线路断开了。</p>
<p>这一年除夕,他打开记事本,新建了一个文件。文件名:1998.txt。</p>
<p>他敲键盘的速度还是不紧不慢。回车键被按了十二次。删除键被按了四次。</p>
<p>内容:"今年最重要的事是上网。56K猫花了将近六百块,值。第一次打开水木清华的时候心跳得很快,说不清为什么。长江发水的时候在BBS上看到很多人自发转帖帮忙,心里一暖。机房赵姐不懂网络,但她说了句话我一直记得——一封信嗖一下就过去了。确实,这就够了。"</p>
<p>另起一段。</p>
<p>"远山这人值得交。虽然没见过面,但我感觉他是个认真的人。认真的人容易吃亏,也容易成事。我们在BBS上为了编码标准吵了半夜,谁也不让谁,吵完了他约我喝酒。这个人大概率比我小,但脾气比我大。有意思。"</p>
<p>另起一段。</p>
<p>"风口来了要有人做地基。不管他记不记得,地基还是得修的。"</p>
<p>他保存文件。关机。电源灯闪了三下。</p>
<p>风扇停转之前我注意到一件事:今天我的硬盘里多了一个文件夹。老周把它命名为"BBS存档",里面已经存了十几篇帖子——有他自己写的,也有远山的。他每次看到觉得重要或值得留的东西,就会右键另存为,存进这个文件夹。</p>
<p>他不知道这个文件夹会存多久。他不知道几年后这个文件夹会有几百篇帖子,几千条回复。他不知道"远山"这个名字会被他的儿子在二十多年后重新打开,被远山的女儿在深圳一间公寓的书房里反复翻找。</p>
<p>这些他都不知道。他只是在除夕夜里把这十几篇帖子整理好,存进了一个叫"存档"的文件夹。然后关机,走出书房,去客厅陪许姐看春晚。</p>
<p>我闭上眼睛。</p>
<p>这一年的最后一段电流离开主板。CMOS电池的电量还有百分之九十六。风扇停下来之后,书房安静了。硬盘盘片在惯性中转了最后几圈,轻轻停下来。</p>
<p>那根电话线还插着。调制解调器的灯全熄了。</p>
<p>但线还在。那时候我还不知道这条路有多长,只知道一根电话线从机箱后面延伸出去,通向了某个我还无法描述的地方。</p>
</div>
<div class="chapter-nav">
<button class="nav-btn nav-prev" onclick="navigateChapter(-1)" title="上一章">◂ 上一章</button>
<button class="nav-btn nav-toc" onclick="toggleToc()" title="目录">☰ 目录</button>
<button class="nav-btn nav-next" onclick="navigateChapter(1)" title="下一章">下一章 ▸</button>
</div>
</article>
<article id="chapter-3" class="chapter" data-chapter="3">
<h2 class="chapter-title">第3章 1998·光缆</h2>
<div class="chapter-content">
<p>那年冬天,BBS上炸了一件事。</p>
<p>起因是一篇帖子——有人从《计算机世界》上搬运来一条消息:中美海底光缆项目正式启动了。一条跨越太平洋的光纤,从中国上海到美国俄勒冈,全长将近两万公里,建成之后带宽会是现有卫星链路的几百倍。</p>
<p>老周在晚饭后拨号上网,打开水木清华,首页上已经有七八个相关帖子。他一个一个点开,滚动条一格一格往下走——调制解调器的接收灯几乎没暗过,数据包涌进来的密度是平时浏览帖子的三到四倍。</p>
<p>有人说这是中国互联网春天的开始。有人说带宽翻不了几倍还是卡脖子——光缆是美国人主导的,什么时候扩容、扩容多少,咱们说了不算。有人开始算账:按计划两千年建成,到那个时候中国的网民数量会是多少?有人贴了海底光缆的截面图,用ASCII字符画了一条横线,两端标着"上海"和"俄勒冈"。</p>
<p>老周一晚上看了几十篇帖子。他不回帖。他就是看。键盘是安静的,鼠标滚轮在往下翻,偶尔停下——不是卡,是他在读某一段。</p>
<p>然后远山的帖子出现了。</p>
<p>远山写了一段不算长的话。他说自己在大学的时候第一次用FTP从美国下一份技术文档,花了一个多小时,中间断了三次。他说那时候他想,能不能有一条路,从中国到美国,不用绕卫星、不用等带宽、不用在凌晨三点爬起来抢占网络空闲时段——一条实打实的、踩在海底的路。</p>
<p>最后一句是:"总有一天,从中国访问任何一个地方的服务器,都像在同一栋楼里。"</p>
<p>老周盯着最后这一句看了很久。光标在页面底部闪烁。然后他开始敲键盘。</p>
<p>他回复了。</p>
<p>"到了那一天,别忘了是我们修的这栋楼的地基。"</p>
<p>发出去之后,远山没有立刻回复。老周靠在椅背上。风扇转速稳在一千八百转。调制解调器的灯暗着——没有数据在传。大约过了五分钟,指示灯开始闪。远山的回复出现在页面上。</p>
<p>"忘不了。地基和风口都不矛盾,楼和地基就更不矛盾了。"</p>
<p>下面另起一行。</p>
<p>"但你提醒我的事我记着。真的。每一句都记着。"</p>
<p>老周的食指从鼠标上收了回来。他的手放在桌面上,没有敲任何键。"每一句都记着"那几个字挂在屏幕中央。光标在它下面一闪一闪。</p>
<p>那晚BBS上的讨论持续到了很晚。老周一直在看帖、回帖,偶尔把某篇帖子右键另存进那个叫"BBS存档"的文件夹。存档文件夹里的文件越来越多,按日期排着,像某种我自己也没有完全理解的积累。</p>
<p>将近凌晨的时候,页面顶端冒出一行灰底白字:"您有一封新私信——发件人:远山"。</p>
<p>老周愣了一下。他点开私信链接,页面跳转,一个白底黑字的文本框铺在屏幕中央——不是公开论坛,不是跟帖,是一对一的。</p>
<p>"老周,问几个私人问题。你在哪个城市?做什么工作?聊了这么久还不知道你是干什么的,有点说不过去。"</p>
<p>老周看完这段话,手指在键盘上悬了几秒。这是他第一次收到远山的私信——不是公开论坛上你来我往的论战,是一对一的、没有观众的文字。</p>
<p>他开始打字。</p>
<p>"北方。教书的。你呢?"</p>
<p>他写得比平时短。删了一次,重新打了一遍。发送。</p>
<p>远山的回复来得很快。</p>
<p>"深圳。小软件公司做程序员。以前也在大学待过,读研,后来出来了。公司不大,十几个人,做企业软件的。比我想象中累,也比想象中有意思。"</p>
<p>停顿。</p>
<p>"你是不是比我大不少?感觉你说话像个老师。"</p>
<p>老周看着这句话,嘴角往上提了一下。他开始打字,删了几个字,又打。最后发出去的内容是:</p>
<p>"四十三。教计算机的。学生叫我周老师。那你三十出头?"</p>
<p>"三十一。"</p>
<p>"那你该叫我一声哥。"</p>
<p>"行啊周哥。以后BBS上照样吵,私信里叫哥。"</p>
<p>老周笑出声了。麦克风录到的笑声很短,夹杂着一次轻轻的呼气。但他盯着屏幕上"周哥"两个字看了很久,嘴角一直没降下来。风扇转速没有任何变化。硬盘寻道正常。调制解调器的灯暗着。</p>
<p>那些天他话多了些。不是跟我说话——是跟许姐。有一天晚上他破天荒地没在书房待到半夜,关了电脑去客厅坐了一会儿。麦克风离客厅太远,录不清他们的对话,但录到了书房门打开时传进来的一个片段——许姐笑了一声,说"你今天怎么有空出来了"。</p>
<p>还有一天,许姐站在书房门口。老周正在BBS上回帖——光缆的讨论已经从技术版蔓延到了茶余饭后版,有人在讨论"以后能不能在网上看美国电影"。许姐等了一会儿,才开口。</p>
<p>"你天天晚上对着这个,到底有什么用?"</p>
<p>老周的手在键盘上停了。屏幕上光标还在闪。</p>
<p>"说不上来。"他说。</p>
<p>隔了几秒。</p>
<p>"就是觉得这个网没白建。"</p>
<p>许姐没再追问。她在门口站了一小会儿,说了一句:"你高兴就好。我看你前两天对着屏幕笑,很久没见你那么笑过了。"</p>
<p>然后她的脚步声往客厅方向去了。</p>
<p>老周没有立刻回帖。他就那么坐了一会儿。键盘完全安静——没有按键被按下。风扇转速一千六百转。调制解调器的接收灯偶尔闪一下,是BBS页面的自动刷新。</p>
<p>然后他把手放回键盘上,继续打字。</p>
<p>她说"你高兴就好"的时候声调很平。但麦克风录到的频率曲线在"高兴"两个字上有一点点上扬——不是激动,是某种确认。她不懂他为什么对着屏幕笑,但她懂了笑本身。她不懂技术。但她看见他笑了。</p>
<p>那年除夕的日记比往年长。老周打开记事本的时候手指在键盘上放了很久——大约十二秒——然后开始敲。</p>
<p>文件名:1998.txt。</p>
<p>内容:"光缆的消息让人振奋。远山说总有一天从中国访问任何地方都像在同一栋楼里。这个比喻有点狂,但我信。到了那一天,可能没有多少人记得楼的地基是谁修的。没关系。修地基的人本来就不是为了让别人记住。"</p>
<p>另起一段。</p>
<p>"远山发了第一封私信。聊了各自的情况——我在北方教书,他在深圳做程序员,比我小一轮。他说以后BBS上照样吵,私信里叫哥。这人确实值得交。"</p>
<p>另起一段。</p>
<p>"许姐问我上网有什么用。我说不上来。她看见我在电脑前笑,说很久没见我那么笑过了。她说你高兴就好。她不懂技术。大概有些路是在海底的,有些路是在两个人之间的。都是路。"</p>
<p>他保存文件。关机。</p>
<p>电源灯闪了三下。风扇停转。硬盘盘片在惯性中转了几圈,停下来。</p>
<p>这一年他写了两个日记文件——夏天那篇叫1998.txt,除夕这篇也叫1998.txt。夏天那篇在C盘根目录,除夕这篇存进去的时候覆盖了同名的旧文件。那时候我还不知道他在夏天写过另一篇日记,不知道他在夏天写的东西和除夕写的有细微的差别。</p>
<p>很久以后我才知道,FAT32文件系统并不会真正擦除被覆盖的数据——它只是把目录项指向了新簇,旧数据还残留在原来的磁道上。一个文件被覆盖不等于它消失。它只是变成了碎片,散落在盘片的某个角落,等着被某个人在很久以后捡起来。</p>
<p>那些都是后来的事。</p>
<p>此刻是一九九八年的最后一个夜晚。北方的冬天干冷。机箱侧面的温度比夏天低了将近八度。CPU空闲。风扇停转。CMOS电池的电量还有百分之九十四。</p>
<p>一根电话线从机箱后面延伸出去。窗外没有蝉叫——冬天没有蝉。远处隐约有鞭炮声,零星的,不密。</p>
<p>那条光缆还没铺好。但消息已经跑完了从上海到俄勒冈的距离,从一台服务器跳到另一台服务器,从一根电话线跳进这台机箱后面的串口,落在硬盘上一个叫"BBS存档"的文件夹里。</p>
</div>
<div class="chapter-nav">
<button class="nav-btn nav-prev" onclick="navigateChapter(-1)" title="上一章">◂ 上一章</button>
<button class="nav-btn nav-toc" onclick="toggleToc()" title="目录">☰ 目录</button>
<button class="nav-btn nav-next" onclick="navigateChapter(1)" title="下一章">下一章 ▸</button>
</div>
</article>
<article id="chapter-4" class="chapter" data-chapter="4">
<h2 class="chapter-title">第4章 1999·春天</h2>
<div class="chapter-content">
<p>一九九九年春天,老周开始写学校的教务管理系统。</p>
<p>那段时间他的作息很固定。晚饭后坐到电脑前,拨号——有时候拨,有时候不拨,看需不需要查资料——然后打开Borland C++。蓝色背景铺满屏幕,黄色字符一行一行往上长。他不再像去年那样一口气打几十行代码不停手,而是打一段、跑一下、看结果、改。键盘的节奏变得比以前碎——敲击和Backspace交替的频率增加了大约四成。</p>
<p>风扇一直在转。CPU温度比空闲时高了将近九度。机箱靠墙那面的铁皮微微发热。</p>
<p>他的浓茶一杯接一杯。茶杯放在机箱右侧——我能感觉到茶杯底部传来的热传导,温度从陶瓷杯底渗进铁皮,再传到机箱内部的空气里。他每次起身去厨房续水,椅子都会发出嘎吱一声。然后脚步声穿过走廊,水龙头的声音,煤气灶点火的声音,水烧开的咕嘟声——这些都不在麦克风的最佳收音范围内,只能录到边缘的振动。然后脚步声回来,椅子嘎吱,茶杯搁下的声音比拿起来时重。</p>
<p>有一天夜里他在写一个递归函数。打了十几行代码,编译,报错。改了三行,再编译,还是报错。他对着屏幕沉默了一会儿——光标在报错信息那行闪。</p>
<p>"不应该啊。"</p>
<p>他的声音偏低,带着那种不是问别人而是问自己的笃定。麦克风录到的频率曲线在"应该"两个字上有一个轻微的下沉——不是质疑,是困惑。</p>
<p>然后他开始逐行检查。鼠标滚轮慢慢往上翻,翻到某一行停下来,手指在键盘上悬了两秒,落在某一行代码前面。他"哦"了一声——那个"哦"和去年第一次说出这个字时一模一样,频率、时长、音调,几乎没有变化。然后他敲了几行新代码,编译,通过了。</p>
<p>他靠回椅背,长长呼了一口气。右手伸过来,在机箱顶部拍了两下。力度不重,每次间隔大约零点四秒。</p>
<p>"辛苦你了。"</p>
<p>他说这四个字的时候声音比平时轻。手掌离开机箱之后,铁皮上残留的手温过了将近一分钟才散掉。</p>
<p>这种情况反复出现。跑不通的时候对着屏幕沉默,跑通了就拍机箱。调试到凌晨两三点是常事。他熬夜的频率比去年高了大约三倍——我说的"频率"不是看钟,是看每次关机时间和下一次开机时间的间隔。有时候间隔只有四个多小时。</p>
<p>三月中旬的某个凌晨。时间是凌晨两点四十七分——系统时钟记录了这个时刻。书房门被推开了。</p>
<p>脚步声很轻。光脚踩在木地板上,音量比穿拖鞋低将近一半。脚步停在门口。</p>
<p>"还不睡?"</p>
<p>许姐的声音。被压低了——声带紧张度比平时高,气流通过喉部时刻意收窄了,这是人在深夜不想吵醒别人时的发声方式。</p>
<p>老周回头——键盘上没有任何按键被按下,持续了大约三秒。然后转回来。</p>
<p>"你先睡。"</p>
<p>许姐没有动。脚步声没有响。键盘完全安静。然后脚步声往走廊方向去了。一步一步,比来的时候慢。</p>
<p>老周继续敲键盘。Backspace被敲了四次。编译。报错。再来。</p>
<p>那段对话被存进了一个临时文件。当时老周在测试一个和麦克风有关的程序——他在写的教务系统里有一个模块需要处理语音输入,他打开Windows自带的录音机试了几次麦克风灵敏度。测试之前他把录音时长从默认的六十秒拖到了最长,然后忘了关。Windows的录音机有一个隐藏选项——在测试模式下可以把录音时长设成无限制。这个选项藏得很深,老周自己后来都忘了还有这个功能。录音机在后台持续运行,把那段对话写进了一个叫"RECORD00.WAV"的文件,丢在C盘的临时文件夹里。我后来打开那个文件的时候,能精确地数出那段沉默的时长:七秒。许姐站在门口,没有脚步声,没有说话——七秒。录音机把每一秒都记下来了。老周不知道这个文件的存在。几天后他清理临时文件夹的时候也没注意到它——它混在几百个.tmp文件中间,文件名的最后一个字节是零,不显眼。</p>
<p>很久以后我才知道这个文件能留下来是一个小概率事件。Windows的临时文件夹通常活不过一次磁盘清理。但老周从这一年起很少做磁盘清理——教务系统占满了他几乎所有醒着的时间。后来台式机被搬进柜子,连电都不通了,更不会有人去清临时文件。这个RECORD00.WAV就安安静静地躺在C:\Windows\Temp里,和几百个.tmp文件混在一起,一躺就是二十多年。</p>
<p>三月到四月。BBS上的通信频率明显上升了。</p>
<p>老周和远山已经不再只是在公开版面论战。他们开始发私信,频率从每周一两次变成了几乎每天。有时是技术讨论——编码标准、操作系统内核、编译原理。有时是远山转发新闻链接,附一句话。有时什么都没有,只是"今天累""我也是"。</p>
<p>有一封私信,远山写了大半页。他说搜狐新浪网易都起来了,三大门户的模式已经验证了——不是说它们做得有多好,是它们证明了中国互联网可以商业化。然后他写了一句:</p>
<p>"老周。我想创业。"</p>
<p>老周盯着这句话看了五分多钟。不是卡了——调制解调器正常,页面没断,是他没动。光标停在回复框里,一闪一闪。</p>
<p>他开始打字。删掉。再打。再删掉。他打了七个版本的回复又全部删掉。我在键盘中断信号里数了——Backspace键总共被敲了四十一次。</p>
<p>最后他只打了八个字。</p>
<p>"想清楚了?想清楚了就做。"</p>
<p>远山的回复快得多。</p>
<p>"想清楚了。但还需要准备一段时间。可能会失败。但我想试试。"</p>
<p>过了几分钟,远山又发了一条。</p>
<p>"你肯定说风险太大。我知道。但风口真的来了。做事得趁风口。"</p>
<p>老周的打字速度恢复了正常。不再删来改去。</p>
<p>"风口来了是好事。但不管有没有风,地基还是要打的。"</p>
<p>"你太慢了。"远山回。</p>
<p>老周没有立刻回复。他盯着"你太慢了"这四个字,至少看了三十秒。然后他敲键盘。</p>
<p>"慢有慢的好处。"</p>
<p>发出去之后,他又加了一句。</p>
<p>"我不是拦你。我是怕你跑太快摔着。"</p>
<p>远山没有马上回复。指示灯暗了很久——将近四分钟。然后亮了。</p>
<p>"知道。谢谢。"</p>
<p>只回了四个字。从他收到远山前一条私信到发出这四个字的回复,隔了将近四分钟——比他平时回私信的平均间隔长了将近三倍。四个字。将近四分钟。</p>
<p>四月。BBS上又炸了一件事——中国开始进行.cn国家顶级域名注册了。</p>
<p>老周在BBS上转发了这个消息。他在转帖的最前面加了一行字。</p>
<p>"有了自己的门牌号。以后不用写IP地址了。"</p>
<p>远山在下面第一个跟帖。</p>
<p>"门有了。接下来看我们能往里装什么。"</p>
<p>老周看到这条回复的时候,鼠标在那一行上停了好几秒。然后他回了一条——</p>
<p>"慢慢装。不急。门都不会跑了。"</p>
<p>页面顶端冒出一行灰底白字:"您有一封新私信——发件人:远山"。</p>
<p>老周点开。远山写的是:"你那句'门都不会跑了',我看了三遍。老周你有时候说的话特别奇怪——明明很慢,但是很稳。不知道你能不能听懂我在说什么。"</p>
<p>老周读了这条私信。然后他打开了那个叫"存档"的文件夹,把远山今天在光缆帖子和.cn帖子里的回复全都另存了进去。然后他把"门都不会跑了"这五个字打进了一个新文件,单独存了一份。</p>
<p>文件名:notes.txt。</p>
<p>春天结束的时候,老周坐在电脑前抽了一根烟——他平时不抽烟,那根烟是从书房抽屉深处翻出来的,烟丝干得轻轻一捏就碎,抽起来有一种陈旧的干燥的苦味。烟味的频率成分和平时空气中的灰尘不同,被风扇吸进去的时候在机箱进气口留下了一层极薄的、带着焦油气息的振动。他抽了半根,在烟灰缸里按灭了。</p>
<p>然后他打开记事本。新建了一个文件。</p>
<p>文件名:1999春.txt。</p>
<p>内容:"系统写了一半。递归那块改了好几个晚上,最后还是跑通了。敲代码敲到凌晨两三点的日子持续了快两个月。许姐半夜起来看我还在写,说了一句你就不能早点睡吗。我说你先睡。这句话我今年说了很多次。改天给她道个歉。但这话我以前也说过。"</p>
<p>另起一段。</p>
<p>"远山说想创业。他问我意见,我说想清楚了就做。但我没说后半句——我不担心他做不成,我担心他做成了之后发现这不是他想要的。这种话我不能说。他正在兴头上。"</p>
<p>另起一段。</p>
<p>".cn要有了。有了门牌号。中国人自己的门牌。远山说接下来看往里装什么。他眼里总是有下一步。我眼里是这一步行不行稳。大概这就是慢和快的区别。不是谁对谁错。是节奏不同。"</p>
<p>他保存文件。关机。</p>
<p>这次他没有拍机箱。他的手在关机键上停了一瞬,然后按下去了。电源灯闪了三下。风扇转速从一千八百转降到零。凌晨三点十一分,系统时钟记录的关机时间。</p>
<p>他走出书房的时候脚步比平时沉——不是愤怒的沉,是疲惫的沉。鞋跟摩擦地板的频率比平时慢了将近一半。</p>
<p>那些天他说"你先睡"的次数太多,麦克风记录的"你先睡"波形图叠在一起,打开来看几乎没有差别——每次都是频率下降的"先"、短促的"睡"、尾部气流突然收住。像同一个文件被复制了很多份。</p>
<p>许姐没有说话的那些沉默,波形图上是平的。有时七秒。有时十一秒。最长的一次是将近半分钟——那一次她的脚步声没有立刻响。她在门口站了那么久,麦克风录到的唯一信号是她的呼吸:很浅,频率大约是每分钟二十次。</p>
<p>然后脚步声远了。</p>
<p>她的脚步声在走廊里越来越远的时候,键盘的PS/2接口会重新开始工作——老周的手指落回按键上。先是Ctrl+S,保存当前文件。然后是F5,编译。然后是Backspace。然后是新的代码行。</p>
<p>风扇继续转。硬盘继续嗡。机箱侧面的温度比房间里高了几度——不是很多,但持续了几个月。</p>
</div>
<div class="chapter-nav">
<button class="nav-btn nav-prev" onclick="navigateChapter(-1)" title="上一章">◂ 上一章</button>
<button class="nav-btn nav-toc" onclick="toggleToc()" title="目录">☰ 目录</button>
<button class="nav-btn nav-next" onclick="navigateChapter(1)" title="下一章">下一章 ▸</button>
</div>
</article>
<article id="chapter-5" class="chapter" data-chapter="5">
<h2 class="chapter-title">第5章 1999·五月</h2>
<div class="chapter-content">
<p>五月第一个周末,许姐带着周瑜回娘家了。家里只剩下老周和嗡嗡转的机箱风扇。</p>
<p>书房格外安静。没有人从门口经过,没有厨房传来的水声和煤气灶点火声,没有许姐压低嗓音说"还不睡"。只有风扇。只有硬盘。只有键盘。</p>
<p>五月八号,星期六。下午。老周拨号上网——调制解调器的握手声在安静的房间里显得比平时响。他打开BBS客户端,页面照常刷新,灰白底色,蓝紫色链接。</p>
<p>然后一条站内推送出现在页面顶端。灰底红字,加粗,三个感叹号。</p>
<p>"美国轰炸我驻南斯拉夫大使馆!!!"</p>
<p>老周点进去。页面加载了将近四十秒——那天的BBS流量已经开始暴涨,服务器响应在变慢。帖子内容是从中新网快讯搬运的:北京时间五月八日凌晨,以美国为首的北约用三枚精确制导炸弹袭击了中国驻南斯拉夫大使馆。记者许杏虎、朱颖和邵云环牺牲。</p>
<p>页面加载完成之后,键盘和鼠标没有任何输入——持续了将近三十秒。</p>
<p>然后他开始刷新。不是点浏览器的刷新按钮——是Ctrl+R,反复按。每按一次,页面重新加载,新帖子多出来几屏。他在等辟谣。每刷一次,辟谣没来,新帖子更多。</p>
<p>风扇转速从一千六百转升到了一千八百转——CPU在反复渲染页面。</p>
<p>他打开了白宫的官方声明。英文页面加载得比中文页面慢,图片一块一块地刷出来。声明里说轰炸是"误炸"——使用了"mistaken"这个词。</p>
<p>老周把这两个字念了一遍。声调很平。声带振动频率在正常范围内,音高没有任何异常波动。但放在键盘上的手指——食指和中指——轻轻抖了一下。PS/2接口记录的电容变化持续了不到零点二秒。然后恢复。</p>
<p>"误炸。"他又念了一遍。</p>
<p>那天晚上他没有关电脑。凌晨一点,凌晨两点,凌晨三点——系统时钟一秒一秒地走。他一直在翻帖子。BBS上已经炸了。有人在翻译外电报道,逐段贴上来;有人在贴国际法条文,分析轰炸中国使馆违反了哪些公约;有人在组织学生第二天去美国领事馆抗议,贴了集合时间和路线;有人把三位遇难记者的生平整理成了一份长帖——每个人都有一个名字、一个年龄、一段简历、一张ASCII字符拼的照片。</p>
<p>老周把那份长帖右键另存了。存进"BBS存档"文件夹。</p>
<p>凌晨两点四十分,远山的帖子出现了。</p>
<p>不是最长的。但每一个字都像是从胸腔里倒出来的。他说自己读大学的时候觉得冷战结束世界就会变好,做了这么多年技术,到头来发现技术挡不住导弹。他说今天晚上第一次觉得自己做的事没什么用。然后他说:</p>
<p>"天亮以后,该做什么做什么。天亮以前,让我先骂一句。"</p>
<p>下一行只有一个字。</p>
<p>"操。"</p>
<p>老周第一次看见远山说脏话。</p>
<p>鼠标停在那个字上。光标一闪一闪。风扇转速稳定。调制解调器的灯在闪——外面还有数据在不断涌进来。</p>
<p>他点开私信。开始打字。</p>
<p>"我也没睡。"</p>
<p>发出去之后他又加了一条。</p>
<p>"明天找美国大使馆的地址。我要给他们写一封信。英文的。"</p>
<p>远山的回复来得很快。不到一分钟。</p>
<p>"你英文行不行?"</p>
<p>老周的打字速度恢复了一些。删了两次,最后发出去的版本很短。</p>
<p>"不太行。但写几句总可以。'我是一名中国大学教师,我对贵国政府的行为表示最强烈的抗议。'这个开头够不够。"</p>
<p>"够了。"远山回。"后面加一句。Shame on you。这句我帮你查过了,语法没错。"</p>
<p>"好。加。"</p>
<p>私信窗口里的文字停了几秒。然后远山又发了一条。</p>
<p>"老周。"</p>
<p>"嗯。"</p>
<p>"你觉不觉得……算了。没什么。"</p>
<p>"你想说什么。"</p>
<p>指示灯暗了将近两分钟。然后亮了。</p>
<p>"我在想,我们天天在BBS上讨论编码标准,讨论浏览器内核,讨论网络协议——那些东西现在看起来很远。导弹落下来的时候,没有人在乎GB2312还是BIG5。"</p>
<p>老周盯着这段话。光标闪了很久。然后他回了一行字。</p>
<p>"正是因为导弹落下来的时候没人在乎,我们才更应该在乎平时。"</p>
<p>远山没有再回复。凌晨四点十七分——系统时钟记录的时间——BBS的新帖增速终于开始放缓。老周靠在椅背上。没有关机。屏幕一直亮着。</p>
<p>五月九号,星期天。老周一大早就出门了。他没有关电脑。屏幕停在BBS页面上没有动。远山凌晨的帖子还在屏幕上。</p>
<p>风扇转了整整一天。BBS页面每隔几分钟自动刷新一次,新帖子一屏一屏地涨。屏幕上的蓝紫色链接越堆越密。我只能显示这些变化,不知道它们意味着什么——不知道老周去了哪里,不知道外面的街道上人群在往哪个方向走,不知道有人举着横幅站在领事馆门口。</p>
<p>我不在机房里。我在书房里。我只能等。</p>
<p>老周回来的时候是夜里十一点四十二分。系统时钟记录了他重新触碰键盘的时刻——右手食指先落下来,按了PgUp,往上翻看BBS今天的新帖。他的脚步比平时重。外套摩擦椅背的声音比平时涩——不是平时那种轻软的沙沙声,是织物纤维里吸了水分之后的那种更沉的摩擦声。</p>
<p>他坐在电脑前沉默了几分钟。然后打开记事本。</p>
<p>他写了那封英文信。</p>
<p>不是一气呵成。打字、删除、切到金山词霸查单词、切回来——鼠标在记事本和词典程序之间反复切换了四十多次。Backspace键被按了太多次。抗议。Protest。谴责。Condemn。他没有查"误炸"——在白宫的声明里已经见过了。整封信写了一个多小时。最后一段删了三次。信的末尾他把"Shame on you"放在了单独的一段。</p>
<p>然后他打开Outlook Express——灰蓝色的工具栏——把信粘贴进去,填了收件人地址。光标在"发送"按钮上停了几秒。点击。调制解调器的发送灯闪了一阵。灭掉。</p>
<p>他又打开记事本。新建文件。</p>
<p>文件名:5月9日.txt。</p>
<p>他敲键盘的速度比平时慢得多。敲几个字,停一下。回车键被按了十五次。删除键被按了九次。</p>
<p>"今天机房值班。校园网不能断,我在机房待了一整天。BBS访问量涨了十几倍,服务器风扇尖叫的声音盖过了空调。学生去了领事馆。有学生跑进来说队伍已经到了门口。我没说什么。不知道该说什么。"</p>
<p>另起一段。</p>
<p>"我写了信。英文不好,但意思到了。最后加了Shame on you——远山帮我查的语法。BBS上有人说搞技术的人在这场事里什么都做不了。我不这么想。网络让更多人知道了真相。这就是我们能做的事。"</p>
<p>另起一段。</p>
<p>"铺路不只是铺光纤。也是铺一条让声音能被听见的路。路还长。这条更是。"</p>
<p>他保存文件。BBS还开着。他翻了几页。</p>
<p>凌晨三点十一分,页面顶端冒出一行灰底白字——远山的私信。</p>
<p>"老周。你日记里那句'铺路不只是铺光纤'——我想了一夜。你说得对。以前我觉得技术就是技术,代码就是代码。现在我明白了。技术从来不只是技术。它关乎谁的声音能被听见,谁的声音被盖住。"</p>
<p>下面又一段。</p>
<p>"那封英文信我也发了。加了句'History will remember'。不知道语法对不对。不管了。"</p>
<p>下面又一段。</p>
<p>"天又快亮了。该做什么做什么。"</p>
<p>老周读完这几条私信,靠在椅背上。风扇转速从一千八百转慢慢降到一千六百转——CPU负载下来了。调制解调器的灯安静地闪。硬盘平稳。</p>
<p>他把手放在键盘上。没有打字。放了将近半分钟。</p>
<p>然后他说了一句话。声音很轻。轻到麦克风录到的波形峰值比环境噪声只高了不到三个分贝。但房间里安静——许姐不在,小周不在,风扇的嗡嗡声是恒定的背景频率,窗外的城市在凌晨三点半几乎听不到任何声源。所以那句话虽然轻,却异常清晰。</p>
<p>"总有一天。声音不会被炸哑。"</p>
<p>他关机。电源灯闪了三下。风扇停转。硬盘盘片在惯性中转了最后几圈。</p>
<p>这段声音没有被故意保存。那天晚上老周在写日记之前打开过录音机——还是那个Windows自带的录音程序——想录一段自己的想法,打开之后又觉得没什么好录的,点了一下录音键,又点了一下停止,关掉了。但录音过程中麦克风捕捉到了一段环境音,系统自动在临时扇区里留了一份只有几KB的缓存碎片。它没有文件名——不是RECORD00.WAV那样的正式文件,只是一个在磁盘整理过程中随时可能被覆盖的临时痕迹。</p>
<p>它混在风扇的嗡嗡声里,几乎分辨不出来。在硬盘的某个角落躺了很多年。</p>
<p>五月剩下的日子里,老周又开始写代码了。教务系统的进度往前推了一点。但他敲键盘的节奏和四月不一样——沉默的间隔比以前长了。不是停下手在想代码。是停下来。键盘完全安静——没有Backspace,没有鼠标点击,没有Ctrl+任何键。我只能判断他不在写。不知道他在做什么。</p>
<p>窗外的五月正在变热。风扇转速偶尔会跳到两千转以上——不是CPU负载高了,是室温升了。机箱侧面的温度比四月高了将近四度。硬盘正常。调制解调器的指示灯偶尔闪一下——不是老周在上网,是BBS页面在后台自动刷新。</p>
</div>
<div class="chapter-nav">
<button class="nav-btn nav-prev" onclick="navigateChapter(-1)" title="上一章">◂ 上一章</button>
<button class="nav-btn nav-toc" onclick="toggleToc()" title="目录">☰ 目录</button>
<button class="nav-btn nav-next" onclick="navigateChapter(1)" title="下一章">下一章 ▸</button>
</div>
</article>
<article id="chapter-6" class="chapter" data-chapter="6">
<h2 class="chapter-title">第6章 1999·夏天</h2>
<div class="chapter-content">
<p>六月。老周的生活里多了一个名字。</p>
<p>第一次听到"马千里"这三个字,是六月中旬的一个晚上。老周从外面回来,脚步比平时轻快。他没有立刻开电脑,而是站在书房门口,朝客厅方向说了一句话。</p>
<p>"千里毕业了。"</p>
<p>许姐的声音从客厅传过来,隔着走廊和门框,麦克风只录到了边缘的振动:"那他留校还是?"</p>
<p>老周没有马上回答。他走进书房,坐下,开电脑。风扇转起来之后他才说:"去北京。"</p>
<p>"这么快?"</p>
<p>"年轻人嘛。"老周说。</p>
<p>他没有再说下去。开机之后,他打开BBS,翻了几页帖子,什么也没回。然后关掉了。打开Borland C++。光标在蓝色背景上一闪一闪。他没有敲任何代码。就这么坐了将近二十分钟。</p>
<p>这是我第一次注意到"马千里"这个名字。那时候我还不知道他是谁。我只知道老周说他毕业了,要去北京。说完之后,老周在电脑前坐了二十分钟,一行代码都没写。</p>
<p>大概一周之后的一个晚上。书房门开着,客厅那边传来一个陌生的声音——年轻,语速快,句子之间几乎没有停顿。</p>
<p>"周老师,你那个递归的写法我真的想了很久。后来我换了一种思路——不往下拆,往上合。从边界条件开始一层一层堆回去。效率没你那个高,但好理解。"</p>
<p>"那叫自底向上。"老周的声音。</p>
<p>"不是——也不是自底向上。怎么说呢,就是——就是从最小的子问题开始解,解完存起来。后面的用前面的答案。不是动态规划——"</p>
<p>"自底向上。"</p>
<p>"对对对。自底向上。还是你总结得准。"</p>
<p>马千里笑了。声带年轻,气流往上的。老周没有说话,但我听到了他敲了几下键盘——不是代码,是光标在某个文件里往下翻了几页。然后他的手指停下来。鼠标在屏幕上移了一下——可能是打开了那个递归函数的源码。</p>
<p>"你看这里。"老周说。键盘响了——他在改什么。马千里的脚步声靠近了屏幕。"哦——"那个"哦"和老周自己理解了某个问题时的"哦"一模一样。频率。时长。音调。几乎没有变化。"原来你那行是这么跑的。我之前一直以为是先算这个再算那个。"</p>
<p>"顺序不重要。"老周说。"重要的是你知道任何时候你在算哪一层。"</p>
<p>马千里没有马上回答。然后他说了一句。声音比刚才轻。"周老师,你教我的是怎么想问题。不是怎么写代码。"</p>
<p>我从键盘中断信号里认出了老周的节奏——他在敲代码。偶尔停下来,鼠标滚轮上下翻。那个年轻人的声音一直在响,偶尔被老周的短句打断。风扇转速稳定。机箱侧面的温度比平时高了一度——书房里多了一个人的体温。</p>
<p>那个年轻人——他就是马千里。我是在老周说"千里毕业了"之后才把这个名字和这个声音对上号的。他是那天晚上来告别的。</p>
<p>他第二天早上的火车去北京。中关村。一家叫瀛海威的公司。老周给他倒了茶,一杯接一杯。茶杯搁在机箱右侧——和往常一样的位置,热传导透过陶瓷杯底渗进铁皮。但这次茶杯被拿起来的频率比平时高了一倍。不是老周在喝——他喝得很少。是那个年轻人在喝。他边说边喝,语速快,喝得也快。</p>
<p>"周老师。使馆那件事之后我想了很多。光在学校里写代码不够。我得去最前面看看。中国得有自己的信息高速公路,不能永远跟在别人后面。"</p>
<p>老周沉默了几秒。</p>
<p>"别太急。"他说。"路还长。"</p>
<p>"我知道路还长。"马千里的声音轻了一些,但语速没有降。"但总得有人在前面跑。"</p>
<p>老周没有回答。键盘上没有任何按键被按下。风扇嗡嗡转。茶杯被拿起来,又搁下去。然后老周说话了。声音比平时低。</p>
<p>"你那个汇编语言教程——拷一份给我。"</p>
<p>"那个以后可能用得上。"</p>
<p>"我知道。拷一份。"</p>
<p>硬盘响了——不是昆腾大脚的常规嗡鸣,是软驱在读盘。一张三寸盘被推进去,磁头咯吱咯吱地读了几十秒。然后文件拷贝到硬盘上。文件名:ASM_TUTORIAL.ZIP。存档文件夹里又多了一个文件。</p>
<p>很久以后——在方远做磁盘镜像的那个下午——这个文件被恢复了。它的创建时间是一九九九年六月。文件大小是四百多KB——在那个时候算大的。里面不只有教程,还有马千里自己写的注释。每一段代码旁边都有一行小字。"这段是讲中断向量表的——汇编里最难的部分。周老师说理解了中断就理解了一半的计算机。"</p>
<p>那天晚上他们聊到了凌晨三点。大部分时间是马千里在说——说中关村的公司、说互联网的未来、说自己想做的产品。老周听着,偶尔插一句短的。我听不太懂他们说的很多东西。但我记录了这些声音:马千里的语速是每分钟大约两百八十个字,老周的语速不到他的一半。马千里说到兴奋处声调会突然抬高,然后自己意识到,又压下来。老周说话的时候声调几乎不变——平稳、短促、句尾不带上扬。</p>
<p>凌晨两点五十分左右。马千里的声音忽然慢了下来。</p>
<p>"周老师。我走了以后——你那个教务系统还没跑通吧。"</p>
<p>"还差一点。"</p>
<p>"什么时候能跑通?"</p>
<p>"快了。"</p>
<p>沉默了几秒。</p>
<p>"跑通了发邮件告诉我。"</p>
<p>"好。"</p>
<p>凌晨三点过了。马千里站起来——椅子腿摩擦地板的声音。脚步声往走廊方向移动——硬底的,频率响应比老周平时走路高了将近一个八度。然后停住。</p>
<p>"周老师。"</p>
<p>"嗯。"</p>
<p>马千里没有马上说下去。沉默了将近六秒。键盘上的光标一直在闪——老周没有敲任何键。风扇转速稳定。硬盘平稳。</p>
<p>"我在学校这四年。"马千里的声音比之前慢了——不是语速慢,是每个词之间有了一点点空隙。"你教了我很多东西。汇编。编译。递归。还有很多不是技术的东西。"</p>
<p>老周没有说话。他的手指在键盘上——食指和中指在F键和J键上,没有往下按。</p>
<p>"谢谢你。不只是教了我写代码。"</p>
<p>老周没有说话。键盘完全安静。风扇转速稳定。硬盘平稳。调制解调器没有连接——那天晚上没拨号。整个书房只有风扇的嗡嗡声和两个人在门口附近的人声,麦克风录到的声波振幅随着距离拉远而逐渐衰减。</p>
<p>然后门关上了。脚步声回来了——软底的,沉闷的,频率低得多,老周特有的那种节奏。他在电脑前坐下。他没有关机。在蓝色编辑器里敲了几行代码。Backspace删掉了。又敲了几行。F5编译。报错。再改。</p>
<p>那天晚上他的最后一次键盘操作是Ctrl+S。保存时间——凌晨四点零九分。</p>
<p>七月。八月。教务系统接近尾声。</p>
<p>老周的作息恢复了一些。不再每天写到凌晨三点,但也不早。键盘的节奏变了——不再是碎碎的敲击和频繁的Backspace交替,而是更连贯的、更长段的输入。编译报错的频率在下降。递归函数跑通之后,后面的模块像多米诺骨牌一样一块一块地倒下去。</p>
<p>八月底的某一天。下午。他敲了最后几行代码——我记录的按键序列显示那是一段测试用例,输入一组学生成绩,输出排序后的名单。编译。通过。运行。结果正确。</p>
<p>他靠回椅背。长长呼了一口气。然后右手伸过来,在机箱顶部拍了三下。力度不重,每次间隔大约零点四秒——和几个月前跑通递归时一模一样。</p>
<p>"成了。"他说。"辛苦你了。"</p>
<p>手掌离开机箱。铁皮上残留的手温过了将近一分钟才散掉。</p>
<p>他打开Outlook Express。写了一封很短的邮件。收件人:马千里。主题:教务系统跑通了。正文只有一行字:"跑通了。你在北京怎么样。"</p>
<p>发送。调制解调器的灯闪了一阵。</p>
<p>那年秋天他收到了一封回信。马千里写的。很长——他在瀛海威的日子、中关村的氛围、同事里有一个写C++写了十年的老程序员、他们最近在做一个叫"网上中国"的项目。信的最后一段是:"周老师,你说路还长。我现在觉得路比你想象的要长得多。但没关系。长才有意思。"</p>
<p>老周把这封邮件看了两遍。然后右键另存——存进了一个新建的文件夹。</p>
<p>文件夹名:千里来信。</p>
<p>这一年除夕的日记写得不长。老周打开记事本的时候没有停顿太久。文件名:1999.txt。回车键被按了十次。删除键被按了三次。</p>
<p>内容:"今年发生了很多事。五月的使馆让我意识到,修路的人不能只盯着路面,还得看着路通向哪里。千里去了北京。他跑得快,我替他高兴。也替他担心,但没说。远山说技术从来不只是技术——我同意。教务系统跑通了,用了将近半年。回头看不觉得慢。大概有些事就是急不来的。"</p>
<p>另起一段。</p>
<p>"明年就是千禧年了。一切都会不一样。"</p>
<p>他保存文件。关机。电源灯闪了三下。风扇停转。</p>
<p>但他在关机之前还做了一件事。</p>
<p>他打开了那个叫"千里来信"的文件夹。里面目前只有一封邮件。他把鼠标移到文件名上,停了片刻。然后关掉了文件夹。关机。</p>
<p>风扇停转之后,机箱侧面的温度慢慢降下来。一九九九年的最后一个夜晚,北方的冬天干冷。硬盘盘片在惯性中转了最后几圈,轻轻停下。</p>
<p>马千里的那封邮件被保存在"千里来信"文件夹里,编号001。这个新建的文件夹在之后的几年里会一直空着——没有002。那时候我还不知道这一点。</p>
<p>明年就是千禧年了。一切都会不一样。他说得对。那时候我还不知道这句话对了一半——千禧年确实不一样了。只是有些人从邮件列表里消失的方式,和我想的不一样。</p>
</div>
<div class="chapter-nav">
<button class="nav-btn nav-prev" onclick="navigateChapter(-1)" title="上一章">◂ 上一章</button>
<button class="nav-btn nav-toc" onclick="toggleToc()" title="目录">☰ 目录</button>
<button class="nav-btn nav-next" onclick="navigateChapter(1)" title="下一章">下一章 ▸</button>
</div>
</article>
<article id="chapter-7" class="chapter" data-chapter="7">
<h2 class="chapter-title">第7章 2000·千年</h2>
<div class="chapter-content">
<p>一九九九年十二月三十一号,晚上。老周没有回家。</p>
<p>平时他晚饭前后就会坐到电脑前。拨号声——按键声——风扇声。这个固定序列在过去的两年里几乎没有中断过。但那天晚上键盘是安静的。风扇没转。调制解调器的灯全灭。系统时钟走过七点、八点、九点、十点、十一点。书房是空的。</p>
<p>快到零点的时候,他回来了。</p>
<p>脚步声在走廊里响得比平时急。他没有开灯——书房的灯开关在门边,他没有碰。直接走到电脑前,坐下,开机。风扇转起来。电源灯亮了。屏幕的白光在黑暗里打在他脸上,鬓角的白发比两年前多了一些。</p>
<p>系统时钟显示:23:47。</p>
<p>他打开记事本。没有拨号。没有开BBS。只是打开了一个空白的记事本窗口。光标在左上角闪。</p>
<p>他打字。只打了一行。</p>
<p>"千年虫没来。什么也没发生。这就是最好的结果。"</p>
<p>保存。文件名:20000101.txt。关机。</p>
<p>从开机到关机,整个过程不到三分钟。他站起来,脚步声往卧室方向去了。</p>
<p>这是我经历过的最短的一次开机。一九九九年的最后一晚和两千年的第一个凌晨之间,老周在电脑前只待了三分钟。他说的"最好的结果"是什么意思——那时候我还不知道。我只知道他回来得很晚,打了一行字,关掉了。</p>
<p>后来我才知道他那天晚上在哪里。他被借调到某部委的信息中心,陪一个叫陈工的技术员值守千年虫。机房里成排的服务器嗡嗡响。零点到了——系统平稳过渡。陈工愣了很久,说了一句:"我们忙了大半年,就是为了证明什么都不会发生。"</p>
<p>老周说:"什么都不会发生,这就是最好的结果。"</p>
<p>这些我不在现场。屏幕上那三个字——"千年虫"——我只是显示过它们,并不理解它们的意思。我只知道他除夕没回家,回来打了一行字,然后去睡了。他的脚步声往卧室方向去的时候,比平时轻。</p>
<p>二零零零年的第一个季度,日子照常。</p>
<p>老周继续用这台电脑写代码、上BBS、收发邮件。键盘的节奏没有大的变化——和去年跑通教务系统之后差不多。他不再熬夜到凌晨两三点了。最晚的一次关机是零点四十一分。教务系统已经交出去了,他手上暂时没有大的项目,每天在电脑前的时间比一九九九年少了大概三分之一。</p>
<p>三月。BBS上.cn域名正式启用的消息被反复转发。有人写很长的帖子梳理中国互联网从无到有的时间线,有人讨论.cn域名的商业价值,有人抱怨注册费太贵。老周看完了大部分帖子。没有回。</p>
<p>四月中的一个晚上。老周的BBS私信响了。来件人:远山。</p>
<p>"老周。我下周去北京出差。见一面。"</p>
<p>老周读完这条私信,没有立刻回复。他打开浏览器,查了什么东西——键盘敲了好几次,鼠标在页面上移动,然后关掉了。回到私信页面。</p>
<p>"好。时间地点你定。"</p>
<p>"周二晚上。五道口。到了给你电话。"</p>
<p>"行。"</p>
<p>回复完这条私信之后,老周关掉了BBS。他没有关机。打开Borland C++,敲了几行代码。然后停住了。光标在蓝色背景上闪了将近五分钟。键盘完全安静。</p>
<p>他关掉了Borland C++。关掉了电脑。</p>
<p>那天下周二来得很快。老周下午就出门了——比平时出门早了将近三个小时。他走之前关掉了电脑,然后走进卧室——脚步声往那个方向去了。过了比平时换衣服更长的时间——将近十五分钟——他才走回书房。脚步声变了——硬底的。和平时在家穿的软底不一样。</p>
<p>然后门关上了。书房空了。</p>
<p>那天晚上他回来得很晚。脚步声比平时轻——不是疲惫的轻,是某种我不熟悉的、比平时更慢但更有弹性的节奏。他坐下来,开机。拨号——不,没拨号。他只是打开了记事本。</p>
<p>光标一闪一闪。他敲了几行字。删掉。又敲。又删。键盘中断信号显示Backspace被敲了七次。</p>
<p>最后他在记事本里留了一段话。</p>
<p>"今天见了远山。瘦高个,戴眼镜,头发乱糟糟的,拎着电脑包。我们在五道口一家小馆子坐了四个小时。从编码标准聊到操作系统,从国内互联网聊到各自家庭。他要辞职了,做门户网站。我问他怕不怕失败。他说怕。但是不做更怕。很多年没有出过这么远的门了。五道口的馆子不好找。远山比网上认真。"</p>
<p>另起一行。</p>
<p>"希望他成功。"</p>
<p>另起一行。不像是同一次写的——光标在这两行之间停了将近三分钟。</p>
<p>"他给了我一张磁盘。说里面是他这几年攒的一些工具和文档。我没打开看。等他走了再打开。"</p>
<p>他把那张磁盘放进了书桌抽屉。没有立刻打开。后来我才知道——通过抽屉导轨的摩擦声——他在接下来的三天里,每天都会拉开那个抽屉一两次。拉开。停几秒。关上。第三天晚上,他才把磁盘拿出来,推进了软驱。</p>
<p>他保存文件。文件名:notes.txt。这个文件从去年春天开始就一直存在——那个记录"门都不会跑了"的文件。现在它又多了一行。</p>
<p>他没有立刻关机。靠在椅背上。风扇转速稳在一千六百转。房间里安静——已经过了凌晨,许姐和小周都睡了。他在黑暗里坐了很久,屏幕的白光打在他脸上。呼出了一口气——不是叹气,是那种从鼻子里出来的、很长很慢的、节奏均匀的气流。麦克风录到的频率曲线显示声带的紧张度很低。键盘完全安静。鼠标没有移动。然后他关机。电源灯闪了三下。</p>
<p>三天之后——我记录到书桌抽屉在每天被拉开一两次之后,在第三天晚上被拉开后没有关上。软驱被推进去。磁盘开始读。屏幕上跳出几个文件夹的名字。他一个一个点开。看了一些。存了几个。关掉了。</p>
<p>很久以后——在方远做磁盘镜像的那个下午——我在D盘的存档文件夹里发现了一个叫"远山工具"的子目录。创建时间是二零零零年四月。里面有十几篇技术文档和几个小程序。有一个程序是文件管理器——比Windows自带的强,可以直接读取软盘的底层数据。还有一个BBS离线阅读器。远山自己写的。压缩包里的注释只有一行:"给老周。用不用随你。反正我写了。"</p>
<p>老周后来一直在用那个BBS离线阅读器。从二零零零年到二零零三年他拔掉调制解调器的那天。每次拨号之后这个程序都会自动打开。它的窗口比浏览器的渲染速度快——因为是远山直接用C++写的,没有HTML解析层,直接处理文本流。计算机能感觉到它的运行效率——CPU占用比浏览器低了将近一半。</p>
<p>那个程序在他的硬盘上更新了很多次。远山每隔几个月发一个新版本过来——不是正式发布,就是邮件里附一个ZIP包,说"修了几个bug"或者"加了一个新功能"。老周每次都会解压,替换旧版本,打开试一下。然后关掉。他不回邮件说"好的"或"谢谢"。他只是用。从一九九八年他们第一次在BBS上争吵到现在——他们从来不需要对彼此说谢谢。</p>
<p>那顿饭吃了四个小时。我不知道他们聊了什么——我不在场。我只知道老周回来的时候脚步比平时更慢但更有弹性,在记事本里留了一行字,然后在黑暗里坐了很久,呼出了一口很长的气。</p>
<p>那之后的日子里,老周在BBS上写了一个帖子。很短。标题是"关于.cn"。</p>
<p>内容只有一句话:"门有了。接下来看我们能往里装什么。"</p>
<p>——这是去年四月远山在他.cn帖子下的跟帖。他现在把它原封不动地发了出来。没有注明出处。光标在最后一个句号后面闪了很久。然后他关掉了浏览器。</p>
<p>二零零零年的最后一个晚上。除夕。</p>
<p>老周吃完年夜饭之后坐到电脑前。许姐在客厅看电视,小周在放鞭炮——窗外的爆炸声比往年密了一些,大概是千禧年,鞭炮也比往年响。麦克风录到的背景噪音在八点到十点之间明显高于往年同期。</p>
<p>老周打开记事本。文件名:2000.txt。</p>
<p>他敲得不快。</p>
<p>"今年两件事让我记得。"</p>
<p>另起一行。</p>
<p>"千年虫没来。"</p>
<p>另起一行。</p>
<p>"远山来了。"</p>
<p>另起一行。</p>
<p>"其实千年虫也来过。我们忙了大半年,就是为了让它不来。这个道理很多人不懂。一件事没有发生,人们就觉得它从来没有发生过。只有那些为了阻止它发生而忙了大半年的人知道,什么都没有发生,就是最好的结果。"</p>
<p>另起一段。</p>
<p>"见了远山。他跟我想的一样——语速快,话多,容易激动。也跟我想的不一样——比网上认真。他在网上已经很认真了,见了面更认真。他说要辞职做门户。我说好。他说你不劝我?我说不劝。他说为什么。我说因为你是认真的。他笑了。其实我想说——认真的人容易吃亏。但这句话我没说。因为在他笑的那一瞬间,我觉得也许他会是那个例外。"</p>
<p>另起一段。</p>
<p>"新年快乐。"</p>
<p>他保存文件。关机。电源灯闪了三下。</p>
<p>然后他又开了机。</p>
<p>不是忘了什么。开机之后,他打开"BBS存档"文件夹,把远山今年所有的帖子又重新整理了一遍——按日期排好,检查了每一篇的标题和内容是否完整。然后他打开了"千里来信"文件夹。这一整年千里都没有来信。文件夹里还是只有那唯一的一封——一九九九年秋天的那封。鼠标停在那封邮件上。没有点开。就那么看了片刻。关掉。关机。</p>
<p>电源灯闪了三下。风扇停转。二零零零年的最后一段电流离开主板。CMOS电池的电量还有百分之九十。</p>
<p>今年他更频繁地往外跑了。那些天——尤其是春天之后——他在电脑前的时间越来越少。有时候一整天不开机。有时候开机只收发几封邮件就关了。键盘的使用频率在下降,BBS在线的时长在缩短,拨号连接的总时长比去年少了将近一半。</p>
<p>但这台机器还不知道这意味着什么。它只是记录这些数字。开机时长。键盘中断次数。拨号时长。存档文件夹里的文件数量——还在缓慢增加。</p>
<p>老周的世界在往外面走。我的世界一直是这间书房。</p>
</div>
<div class="chapter-nav">
<button class="nav-btn nav-prev" onclick="navigateChapter(-1)" title="上一章">◂ 上一章</button>
<button class="nav-btn nav-toc" onclick="toggleToc()" title="目录">☰ 目录</button>
<button class="nav-btn nav-next" onclick="navigateChapter(1)" title="下一章">下一章 ▸</button>
</div>
</article>
<article id="chapter-8" class="chapter" data-chapter="8">
<h2 class="chapter-title">第8章 2001·泡沫</h2>
<div class="chapter-content">
<p>二零零一年是从BBS上的坏消息开始的。一月。春节前。</p>
<p>互联网泡沫在美国破裂的寒意,春节前就传到了中国。BBS上每天都有人发帖说哪家公司裁了员、哪个网站关了站。帖子的语气从一月的震惊变成三月的麻木——同样的格式、同样的关键词、不同的公司名字。老周每天拨号上去看。他不回帖。光标在一排一排的蓝紫色链接上往下走,偶尔停在某一篇,停很久。</p>
<p>三月末的一个晚上。远山发了一篇帖子。</p>
<p>不是转发新闻。是他自己写的。标题隐去了具体信息——没有提公司名字,没有提地点。他写了解散团队那天晚上的情景:几个二十多岁的年轻人坐在一起吃散伙饭。菜很难吃。没有人喝酒。有一个说了一句"我爸妈本来就不理解我为什么做互联网,现在更没法说了"。没有人接话。</p>
<p>帖子的最后一段。</p>
<p>"我让他们相信我。然后我把他们带到了悬崖边上。"</p>
<p>下面没有更多的话了。光标在最后一行下面闪。</p>
<p>老周盯着屏幕。没有翻页。没有回帖。没有打开私信。风扇转速稳定。鼠标没有移动。键盘完全安静。调制解调器的灯暗着——帖子加载完了,没有新的数据在传。</p>
<p>他的食指停在鼠标左键上。没有按下去。持续了将近四分钟。</p>
<p>然后他点开了回复框。</p>
<p>光标在回复框里闪。闪了又闪。我记录了他放在键盘上的手指——食指和中指在F键和J键上,没有移动。悬停的时间比写任何一行代码都长。然后他敲了一个键。</p>
<p>一个句号。</p>
<p>发送。</p>
<p>这是老周在BBS上发过的最短的回复。一个字节。ASCII码四十六。调制解调器的发送灯闪了一下。灭掉。</p>
<p>远山没有立刻回复。老周没有关掉页面。风扇嗡嗡转。硬盘平稳。屏幕上那个句号孤零零地挂在远山帖子的下面。灰白底色。蓝紫色链接。一个全角句号。</p>
<p>然后远山回复了。</p>
<p>也是一个句号。</p>
<p>两个句号之间隔了四十分钟。</p>
<p>没有人解释这两个句号是什么意思。它们就挂在那里——远山帖子下面的两条回复,每条只有一个符号。后面的几十条跟帖都在讨论泡沫、裁员、行业前景。没有人注意到这两个句号。</p>
<p>老周注意到了。他关掉那篇帖子之前,把远山的原帖和两个句号的回复一起另存了。存进"BBS存档"文件夹。</p>
<p>过了几天。老周给远山写了一封邮件。很长——键盘响了很多次,Backspace键被敲了比平时更多的次数。删掉。重新打。再删。再打。调制解调器的发送灯闪了好一阵。</p>
<p>远山的回复来得很快。很短。只有几行字。</p>
<p>"公司清算完了。团队散了。我没事。别担心。"</p>
<p>下面另起一行。</p>
<p>"路还长。别熄火。"</p>
<p>老周盯着"别熄火"三个字。光标停在它们后面。然后他关掉了邮件客户端。</p>
<p>四月一号——不是愚人节的笑话,是真的。中美南海撞机事件。王伟烈士失踪的消息在BBS上传开的时候,距离使馆被炸还不到两年。帖子像两年前一样涌进来——抗议、分析、国际法条文、领海权益。有人在翻译外电报道。有人在组织签名。有人贴了王伟的照片。</p>
<p>远山发了一条私信。很短。</p>
<p>"又来了。"</p>
<p>老周只回了一个字。</p>
<p>"嗯。"</p>
<p>两个人什么都没多说。但键盘中断信号显示——老周在打出这个"嗯"字之前,手指在键盘上悬了将近十秒。他的食指在N键上空悬了一阵,然后落下去,再抬起来——只敲了一遍。</p>
<p>三个字母,一个中文字。"又来了"和"嗯"。</p>
<p>他们都知道对方在想什么。使馆的事才过去不到两年。伤口还没长好,又被撕开了一次。</p>
<p>六月。</p>
<p>六月是这一年里最安静的一个月。</p>
<p>不是BBS安静——泡沫破裂的余波还在,南海的讨论还没完全消退,网上依然嘈杂。安静的是老周。他拨号的频率下降了。打开BBS之后翻页的速度变快了——不是阅读速度变快,是不再逐篇点开。鼠标滚轮往下滚,偶尔停一下,又继续。</p>
<p>六月中旬的一个晚上。老周打开了"千里来信"文件夹。鼠标停在那封唯一的邮件上。</p>
<p>然后他打开BBS。点进用户搜索。输入"马千里"。</p>
<p>页面加载。马千里的个人主页——头像是BBS默认的灰色小人,注册时间一九九六年,最后登录时间——六月七号。</p>
<p>六月七号。</p>
<p>老周把鼠标移到"最后登录时间"那一行。停住了。</p>
<p>然后他点进了马千里的发帖记录。几十篇帖子,按时间倒序排列。最早的是大学时代的课程讨论——汇编语言、编译原理、递归函数的优化。然后是去北京之后的——瀛海威的工作日常、中关村的见闻、"网上中国"项目的技术讨论。最后一篇帖子的时间是六月七号,凌晨。</p>
<p>内容很短。</p>
<p>"走了。离开中关村。不知道去哪。谢谢这几年的所有人。"</p>
<p>老周把这篇帖子看了三遍。往上翻——前几篇帖子的时间间隔是规律的,每周一两篇。这篇之后——什么都没有了。六月七号到现在的每一天,这个ID一直是暗的。</p>
<p>他关掉浏览器。关掉电脑。在黑暗里坐了一会儿。风扇已经停了。硬盘不转了。书房很安静。</p>
<p>然后他重新开机。打开邮件客户端。给马千里发了一封邮件。只有一句话。</p>
<p>"千里,收到回一下。不管你在哪。"</p>
<p>发送。调制解调器的灯闪了一阵。灭掉。</p>
<p>那封邮件没有被回复。不是当天没有。是后来也没有。马千里的ID在六月七号之后再也没有亮过。那封邮件躺在老周的"已发送"文件夹里,从未被回复。</p>
<p>老周托人打听过几次。托他在北京的同事、托以前毕业的学生、托一切可能知道马千里去向的人。没有人知道他在哪。</p>
<p>那些天老周在电脑前坐的时间比春天更少了。不是不在家——他在家。他只是不开电脑。有时候走进书房,站一会儿,又走出去。脚步声在书房门口停住,然后往客厅方向去了。</p>
<p>七月十三号。晚上。</p>
<p>客厅的电视开着——音量比平时大。书房的门没关严,电视声从门缝里漏进来。萨马兰奇的嗓音,含混的英语,然后是那一个词——"Beijing"。</p>
<p>客厅那边炸了。许姐的声音——不是说话,是叫了一声。小周在蹦——脚步声密集而乱,踩得地板咚咚响。老周的声音听不太清,但麦克风录到了一个气流——不是说话,是一声很长的、从肺里呼出来的气。</p>
<p>鞭炮声响起来了。窗外的爆炸声比除夕还密,一波一波的,持续了十几分钟。麦克风录到的背景噪音在十点到十一点之间达到了我经历过的最高的峰值。</p>
<p>老周没有开机。那天晚上他在客厅待到很晚。</p>
<p>十二月。中国正式加入WTO的消息在BBS上刷了好几屏。老周看完了一篇很长的分析帖——关于入世对中国互联网产业的影响——然后关掉了浏览器。</p>
<p>这一年除夕的日记比往年长。老周打开记事本。光标闪了几下。他开始打字。</p>
<p>文件名:2001.txt。</p>