逆流而上2000

第十三章 :夜以继日

  #第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]。   这是他的第一个“官网”。   虽然现在没人会看到。   但这是一个开始。   做完这些,时间已经到了凌晨一点。   安奕真的该睡了。   他保存所有工作,关闭所有程序。电脑进入休眠状态,风扇声渐渐停息。房间里只剩下台灯的光,昏黄而温暖。   他站起身。   腿又麻了。   他走到窗前,拉开窗帘。夜空很清澈,能看到几颗星星。月亮是弯弯的月牙,挂在远处的楼顶上方。   夜风从窗户缝隙吹进来,带着凉意。   安奕深吸一口气。   空气里有夜晚的味道,有植物的味道,有远方的味道。   明天,还要继续。   白天学习,晚上写代码。   日复一日。   直到“磐石”系统完成。   直到高考结束。   直到一切开始改变。   他关掉台灯,躺到床上。床单是棉质的,洗得很干净,有阳光晒过的味道。枕头很软,头陷进去,疲惫感一下子涌上来。   闭上眼睛。   脑海里还在回放代码。   函数调用,循环嵌套,条件判断……   像一首无声的音乐,在黑暗中缓缓流淌。   然后,他睡着了。