逆流而上2000:第13章 夜以继日

哔咔漫画
‹ 返回

第13章 夜以继日

#第13章:夜以继日

安奕盯着那个邮箱后缀,手指在鼠标上停顿了三秒。

tenglong-tech.com。

腾龙科技。

赵天豪的公司。

屏幕的蓝光映在他脸上,瞳孔里倒映着那串英文字符。窗外又一辆车驶过,车灯的光束扫过天花板,在墙壁上投下快速移动的阴影。键盘敲击声已经停了,房间里只剩下电脑风扇的低鸣,还有他自己平稳的呼吸声。

他移动鼠标,点开了那条招聘帖。

帖子内容很简单:“诚聘兼职VB程序员,参与企业管理系统开发。要求:熟悉VB6.0,有数据库编程经验,能独立完成模块开发。工作时间灵活,按项目结算,待遇优厚。有意者请将个人简历及作品样例发送至[email protected]。”

发帖时间是三天前。

回帖已经有十几条。安奕滚动鼠标滚轮,一条条看下去。

“待遇具体多少?”

“需要坐班吗?”

“我在BJ,可以远程吗?”

都是些普通程序员的询问。发帖人ID是“腾龙HR”,头像是个简单的公司logo——一条抽象的龙形图案,金色,盘旋着。

安奕关掉了帖子。

他靠在椅背上,椅子发出轻微的吱呀声。房间里的温度有些低,四月的夜晚,后半夜还是会凉。他伸手从椅背上抓起一件外套披上,布料摩擦的声音在寂静中格外清晰。

电脑右下角的时间显示:凌晨两点十七分。

他该睡了。

明天还要上学。

但安奕没有动。他看着屏幕,看着那个论坛的界面。这是“中国程序员之家”,2000年初国内最活跃的技术论坛之一。前世,他在这里泡了无数个日夜,问问题,回答问题,认识了很多同行。

这一世,这是他第一次认真浏览。

论坛的界面很简陋。蓝色的背景,白色的文字,表格布局。板块分类也很简单:编程语言、操作系统、网络技术、求职招聘、灌水区。每个板块的帖子数都不多,最新回复时间大多在几天前。

这个时代的互联网,还很小。

安奕移动鼠标,点开了“注册新用户”的链接。

注册页面弹出来。需要填写用户名、密码、邮箱、所在城市。他想了想,在用户名一栏输入:“Stone1999”。

Stone,石头。

磐石。

密码他设了一串复杂的字符加数字组合。邮箱……他停顿了一下。

2000年,国内的邮箱服务还很少。163.net刚刚成立不久,263.net也才起步,新浪邮箱还没推出。大多数人用的还是单位或学校的邮箱,或者国外的Hotmail、Yahoo。

安奕注册了一个Hotmail邮箱。

[email protected]

注册过程很慢。56K的调制解调器发出刺耳的拨号音,然后是数据交换的嘶嘶声。进度条一点一点往前爬,花了将近三分钟才完成注册。

邮箱注册成功后,他回到论坛,完成了用户注册。

然后,他开始浏览。

先看编程语言板块。VB6.0的讨论最多,C++其次,Java刚刚开始有人提及。帖子内容大多是基础问题:如何连接数据库,如何实现多线程,如何做图形界面。回答的人都很耐心,代码贴得很详细。

安奕看了几个帖子,没有回复。

他又点开网络技术板块。这里讨论的是TCP/IP协议、路由器配置、网站建设。有人问如何用ASP做动态网页,有人分享如何配置IIS服务器。还有人在讨论一个叫“Linux”的操作系统,说它是免费的,比Windows稳定。

安奕记住了几个关键词。

然后,他打开了浏览器的新窗口。

在地址栏输入:www.net.cn。

中国互联网络信息中心的网站。域名注册页面。

他输入了第一个域名:yishidai.com。

奕时代。

页面显示:该域名可注册。

安奕没有立即注册。他继续输入第二个:yiyun.com。

奕云。

也可注册。

第三个:panshi.net。

磐石。

也可注册。

他想了想,又输入了几个:smartphone.cn、mobilepay.com.cn、newenergy.com.cn。

全部可注册。

2000年,好域名还很多。

安奕关掉了域名注册页面。现在还不是时候。注册域名需要钱,每年几十到几百元不等。他现在只有不到一千元现金,要省着用。

更重要的是,注册了域名就要建站,建站就要租服务器,租服务器就要花钱。

他现在还负担不起。

但名单已经记在心里了。

他打开记事本,把这些域名一个个敲进去,保存为一个名为“domains.txt”的文件。

做完这些,时间已经到了凌晨三点。

安奕打了个哈欠。眼睛有些干涩,看屏幕久了,视线有些模糊。他揉了揉眼睛,手指按压在眼皮上,能感觉到眼球在指腹下转动。

该睡了。

但他没有关电脑。

而是打开了VB6.0的开发环境。

“磐石”系统的工程文件加载进来。代码窗口展开,上千行代码排列整齐。变量声明、函数定义、循环结构、条件判断……所有的逻辑都在这里。

安奕开始工作。

他先完善图形界面。

之前的版本只有简单的按钮和文本框,现在他要设计得更专业。他打开窗体设计器,拖拽控件:菜单栏、工具栏、状态栏、树形目录、列表视图。

颜色搭配他选了蓝白灰。蓝色为主色调,白色为背景,灰色为边框和分隔线。这是2000年流行的软件界面风格,简洁,专业。

菜单栏他设计了五个主菜单:文件、编辑、查看、工具、帮助。每个主菜单下又有子菜单:新建、打开、保存、打印、退出……

工具栏他放了常用功能的图标:刷新、备份、恢复、统计、报表。

状态栏显示系统时间、当前用户、数据库连接状态。

这些控件的位置、大小、对齐方式,他一点点调整。鼠标点击的声音,键盘快捷键的敲击声,在深夜里格外清晰。

窗体的布局完成后,他开始写事件处理代码。

每个按钮点击后要做什么,每个菜单项选中后要执行什么函数,每个文本框输入后要如何验证……

他写得很专注。

窗外的天色从漆黑慢慢变成深蓝,又从深蓝慢慢变成灰白。远处传来第一声鸡鸣,悠长而清脆。然后是第二声,第三声,从不同的方向传来,此起彼伏。

安奕没有抬头。

他正在写网络通信模块的雏形。

“磐石”系统最终要支持多台电脑联网管理,这就需要网络通信。2000年,网吧里的电脑大多通过局域网连接,服务器和客户端之间需要传输数据:上机记录、消费金额、会员信息、库存状态……

安奕设计了一个简单的协议。

客户端发送请求包,服务器返回响应包。请求包包含命令类型、数据长度、实际数据。响应包包含状态码、数据长度、实际数据。

他写了封包和解包的函数。

又写了发送和接收的函数。

然后写了一个模拟服务器的小程序,用来测试通信是否正常。

编译,运行。

两个程序窗口同时打开。一个模拟客户端,一个模拟服务器。他在客户端输入一条上机记录,点击发送。

数据通过网络(实际上是本机的回环地址)传输到服务器。

服务器收到数据,解析,显示在界面上。

然后返回一个“接收成功”的响应。

客户端收到响应,显示“发送成功”。

测试通过。

安奕松了口气。

他看了看时间:清晨五点四十分。

天已经亮了。晨曦的光从窗帘缝隙透进来,在书桌上投下一道细长的光带。光带里有无数细小的尘埃在飞舞,像微型的星系在旋转。

他该准备上学了。

安奕保存了所有文件,关闭了VB。

然后打开Word,开始整理今天要复习的内容。语文的古诗文默写,数学的解析几何,英语的完形填空,物理的电磁学,化学的有机反应……

他把重点写在纸上。

字迹工整,条理清晰。

六点整,母亲敲门:“小奕,起床了。”

“起来了。”安奕应了一声。

他关掉电脑。屏幕黑下去,风扇的声音渐渐停息。房间里突然安静下来,只有窗外鸟鸣的声音,清脆而欢快。

安奕站起身。

腿有些麻。坐了一夜,血液循环不畅。他跺了跺脚,血液回流,带来一阵刺痛感。他活动了一下肩膀,颈椎发出轻微的咔哒声。

推开房门。

客厅里,母亲正在盛粥。白米粥的香气弥漫开来,混着咸菜的味道。父亲已经坐在餐桌旁,手里拿着今天的《江城日报》。

“昨晚又熬夜了?”母亲看了他一眼。

“嗯,写点东西。”安奕去卫生间洗漱。

冷水扑在脸上,刺激着皮肤。他抬起头,看着镜子里的自己。眼睛里有血丝,眼眶有些发黑,但眼神很亮,很清醒。

十八岁的身体,恢复得很快。

吃完早饭,安奕背起书包出门。

清晨的空气很清新。槐花的香气更浓了,混着露水的湿润感。路面是湿的,昨晚下过小雨,水洼里倒映着天空的淡蓝色。

自行车链条转动的声音,清脆而有节奏。

到学校时,早自习还没开始。

教室里已经坐了一半的人。有人在背英语单词,有人在抄作业,有人在吃早餐。包子的味道,豆浆的味道,混在一起。

安奕走到自己的座位。

苏晚晴已经到了。她正在看语文书,手指轻轻点着书页,嘴唇微动,默念着什么。晨光从窗户照进来,落在她的侧脸上,睫毛在脸颊上投下细小的阴影。

安奕坐下时,她抬起头。

“早。”

“早。”

简单的问候。然后各自继续学习。

安奕拿出数学试卷。今天是第二次模拟考前的最后一次复习课,数学老师会讲几道压轴题。他需要保持专注。

上课铃响了。

数学老师走进教室,是个中年男人,戴眼镜,头发稀疏。他走上讲台,打开教案,开始讲解一道复杂的函数题。

安奕听着。

老师的讲解很详细,每一步推导都写在黑板上。粉笔敲击黑板的声音,清脆而规律。但安奕的思维有一部分在别处。

他在想“磐石”系统的数据库设计。

会员表应该有哪些字段?ID、姓名、手机号、余额、注册时间、最后登录时间……

上机记录表呢?记录ID、会员ID、机器编号、开始时间、结束时间、消费金额……

库存表呢?商品ID、商品名称、单价、库存数量、最后进货时间……

这些表之间如何关联?

如何保证数据的一致性?

如何提高查询效率?

他的手指在课桌下轻轻敲击,模拟着键盘的输入。脑海里,SQL语句一条条浮现:CREATE TABLE、INSERT INTO、SELECT、UPDATE、DELETE……

“安奕。”

数学老师突然点名。

安奕抬起头。

“这道题,你来说说解题思路。”老师指着黑板上的题目。

安奕站起来。他看了一眼题目,是一道解析几何和函数结合的综合题。前世他做过类似的题目,在考研的时候。

他走到黑板前。

拿起粉笔。

开始写解题步骤。

设点坐标,列方程,求导数,找极值点,判断单调性……每一步都清晰,逻辑严密。粉笔在黑板上划过的声音,沙沙作响。

写完最后一步,他放下粉笔。

“所以最大值是根号2,在点(1,1)处取得。”

教室里安静了几秒。

然后数学老师点点头:“很好。思路清晰,步骤完整。大家看看,这就是标准答案。”

安奕回到座位。

苏晚晴看了他一眼,眼神里有些惊讶。这道题确实很难,她刚才也没完全想明白。

安奕对她笑了笑,继续听课。

但脑海里,数据库的设计还在继续。

上午四节课,语文、数学、英语、物理。

安奕保持着高效的学习状态。老师讲的重点,他一遍就记住。需要做的笔记,他写得简洁而全面。课堂练习,他第一个完成。

课间休息时,他去厕所洗了把脸。

冷水刺激着皮肤,让大脑保持清醒。

回到教室,他拿出英语单词本,快速浏览。前世他的英语很好,工作后经常看英文文档,和国外客户开会。这一世,只需要恢复语感。

中午放学。

安奕没有回家。母亲今天加班,不回来做饭。他在学校食堂吃了午饭:一份米饭,一份土豆丝,一份西红柿鸡蛋汤。

食堂里很吵。学生们排队打饭,餐具碰撞的声音,说话的声音,笑声。空气里有饭菜的味道,消毒水的味道,还有汗味。

安奕快速吃完,回到教室。

教室里只有几个人在午休。有人趴在桌上睡觉,有人在看书,有人在听随身听。安奕拿出物理习题集,开始做题。

他需要保持成绩。

高考是第一步。考上华清大学计算机系,是计划中的重要一环。那里有最好的师资,最好的实验室,最好的人脉。

还有林浩。

前世他的技术合伙人,这一世,他要早点找到他。

下午两节课,化学和政治。

安奕同样高效地完成学习。

放学铃声响起时,他收拾好书包,第一个走出教室。自行车在车棚里,他推出来,骑上车,往家的方向驶去。

傍晚的风很舒服。

夕阳把天空染成橙红色,云朵像燃烧的火焰。街道两旁的店铺陆续亮起灯,小吃摊的油烟味飘过来,混着各种食物的香气。

安奕骑得很快。

他想快点回家,继续写代码。

到家时,父亲还没回来。母亲在厨房做饭,锅里在炖汤,蒸汽从锅盖边缘冒出来,带着排骨和玉米的香味。

“回来了?”母亲从厨房探出头。

“嗯。”

“先写作业,饭好了叫你。”

安奕回到自己房间。

放下书包,第一件事就是打开电脑。按下电源键,主机发出嗡鸣声,显示器亮起来。Windows 98的启动画面出现,进度条慢慢走动。

他趁这个时间换了衣服。

脱下校服,换上家居服。棉质的T恤和运动裤,很舒服。

电脑启动完成。

他直接打开VB,加载“磐石”系统工程。

今天的目标:完成数据库模块的核心功能。

他先设计表结构。

在脑海里构思了很久的方案,现在要落实到代码上。他新建了一个模块,命名为“Database.bas”,在里面定义常量、变量、函数。

首先,连接数据库。

2000年,Access数据库是最常见的选择。简单,易用,不需要单独的数据库服务器。安奕决定先用Access作为原型,后期再迁移到SQL Server。

他写了连接字符串。

写了打开连接、关闭连接的函数。

写了错误处理的代码。

然后,开始建表。

他用SQL语句创建会员表。

接着是上机记录表、商品表、库存表、消费记录表……

每一张表他都仔细设计字段类型、长度、约束、默认值。

建表语句写完后,他写了一个初始化数据库的函数。第一次运行时,如果数据库文件不存在,就创建文件,并执行所有建表语句。

测试。

他运行程序。

点击“初始化数据库”按钮。

程序在后台创建了一个名为“Panshi.mdb”的Access文件,然后执行SQL语句。进度条显示执行过程,一条条提示信息显示在状态栏。

“正在创建Members表……完成。”

“正在创建SessionRecords表……完成。”

“正在创建Products表……完成。”

……

所有表创建完成。

安奕打开Access,查看数据库文件。表都建好了,字段都正确。他手动插入几条测试数据,然后在自己的程序里编写查询代码。

SELECT语句。

WHERE条件。

ORDER BY排序。

JOIN关联查询。

他写了几个常用的查询函数:根据会员ID查信息、根据时间段查上机记录、查商品库存、查消费统计……

每一个函数都测试通过。

窗外的天完全黑了。

母亲敲门喊吃饭。

安奕保存代码,走出房间。餐桌上有三菜一汤:青椒肉丝、炒青菜、蒸鸡蛋、排骨玉米汤。父亲已经回来了,正在盛饭。

“今天学习怎么样?”父亲问。

“还行。”安奕坐下。

“模拟考快到了,要抓紧。”

“嗯。”

简单的对话。安奕快速吃完饭,又回到房间。

晚上七点半。

他继续工作。

现在有了数据库,图形界面也基本完成,网络通信模块有了雏形。接下来要把这些模块整合起来。

他写了一个主控模块。

负责初始化系统:检查数据库连接、加载配置、启动网络监听(如果有)、显示主界面。

然后写业务逻辑。

会员注册:输入姓名、手机号,系统生成会员ID,写入数据库,提示注册成功。

会员充值:输入会员ID、充值金额,更新数据库余额,记录充值流水。

上机开卡:选择机器编号,刷会员卡(或输入会员ID),系统记录开始时间,锁定该机器。

下机结账:系统自动计算时长和费用,从会员余额扣款,记录消费流水,释放机器。

商品销售:选择商品,输入数量,系统计算总价,扣款,更新库存。

……

每一个业务功能,他都写了一个独立的函数。

函数之间通过参数传递数据,返回值表示执行结果。错误处理很完善,每一步都可能失败:数据库连接失败、查询失败、更新失败、网络超时……

他写了详细的日志。

每个重要操作都记录时间、操作类型、操作人、结果。

这样出了问题可以追溯。

时间一分一秒过去。

窗外的车流声渐渐稀少。家属院里大部分人家都熄灯了。只有零星几扇窗户还亮着,像夜空里孤独的星星。

安奕喝了口水。

水是凉的,滑过喉咙,带来一丝清醒。

他看了看时间:晚上十一点。

母亲又敲门了:“小奕,该睡了。”

“马上。”

他保存了所有文件。

但没关电脑。

而是打开了浏览器,再次登录“中国程序员之家”。

论坛里又有新帖子。他浏览着,看到有人在讨论一个叫“QQ”的软件,说它比ICQ好用,注册用户已经突破百万。

有人在分享如何破解Windows 98的开机密码。

有人在问哪里可以到便宜的二手电脑配件。

安奕一条条看过去。

然后,他点开了求职招聘板块。

那条腾龙科技的招聘帖还在第一页。回帖又多了几条,有人问项目周期,有人问具体技术要求。

安奕盯着那个邮箱。

[email protected]

前世,他第一次接触腾龙科技,是在大三的时候。那时他已经在做自己的第一个创业项目,腾龙科技想收购,派来谈判的人就是周明。

周明。

那个前世窃取他创意,最终投靠赵天豪的“合伙人”。

这一世,周明应该已经在腾龙科技了。作为赵天豪的技术骨干,负责公司的软件开发。

这个招聘帖,可能就是周明发的。

他在找VB程序员。

安奕的手指在鼠标上轻轻敲击。

他在想,要不要投简历。

如果投了,可能会获得进入腾龙科技的机会。可以近距离观察赵天豪的公司,了解他们的技术实力,甚至可能接触到周明。

但风险也很大。

如果被认出来怎么办?虽然这一世他还没见过周明,但万一呢?

而且,他现在需要时间。高考在即,“磐石”系统正在关键开发期,他没有精力去兼职。

但不投的话,又错过了一个机会。

一个可能提前了解敌人的机会。

安奕思考着。

窗外的夜色更浓了。远处传来火车汽笛声,悠长而苍凉,在夜空中回荡了很久才散去。

他最终决定:不投。

现在还不是时候。

他需要先完成“磐石”系统,先赚到第一桶金,先考上大学。等有了基础,再和腾龙科技正面交锋。

他关掉了招聘帖。

但记住了那个邮箱。

也记住了发帖时间、回帖内容、所有细节。

然后,他打开了域名注册页面。

再次输入yishidai.com。

还是可注册。

他想了想,注册了一个免费的个人主页空间。2000年,很多服务商提供免费空间,带一个二级域名。他选了一个稳定的服务商,申请了一个空间。

空间地址:stone1999.homepage.com。

虽然简陋,但够用了。

他在空间里上传了一个简单的页面。页面只有一行字:“磐石系统,即将发布。”

然后留了一个邮箱:[email protected]

这是他的第一个“官网”。

虽然现在没人会看到。

但这是一个开始。

做完这些,时间已经到了凌晨一点。

安奕真的该睡了。

他保存所有工作,关闭所有程序。电脑进入休眠状态,风扇声渐渐停息。房间里只剩下台灯的光,昏黄而温暖。

他站起身。

腿又麻了。

他走到窗前,拉开窗帘。夜空很清澈,能看到几颗星星。月亮是弯弯的月牙,挂在远处的楼顶上方。

夜风从窗户缝隙吹进来,带着凉意。

安奕深吸一口气。

空气里有夜晚的味道,有植物的味道,有远方的味道。

明天,还要继续。

白天学习,晚上写代码。

日复一日。

直到“磐石”系统完成。

直到高考结束。

直到一切开始改变。

他关掉台灯,躺到床上。床单是棉质的,洗得很干净,有阳光晒过的味道。枕头很软,头陷进去,疲惫感一下子涌上来。

闭上眼睛。

脑海里还在回放代码。

函数调用,循环嵌套,条件判断……

像一首无声的音乐,在黑暗中缓缓流淌。

然后,他睡着了。

哔咔漫画