第十章 课程表应用上线与陈浩的成长
书名:好感度归零:从-99开始逆袭 作者:于老三 本章字数:4918字 发布时间:2026-03-12

“搞定!”


陈浩猛地一拍桌子,震得显示器晃了晃。他整个人向后仰倒在椅背上,双手高举过头顶,像刚完成一场马拉松。


“最后那个同步bug修好了!林默,你来看看!”


林默从自己的屏幕前抬起头,食指习惯性地推了推镜梁。宿舍里只有他们两人,傍晚的光线斜斜照进来,在陈浩兴奋的脸上镀了层暖色。他头顶的数字是【+73】,比一周前又涨了三点。


“我看看日志。”林默滑动椅子靠过去,努力将注意力集中在屏幕上滚动的调试信息,而不是去感知宿舍楼里其他房间隐约传来的嘈杂人声。这种一对一的、有明确目标的对话,是他少数能应付的社交场景。


屏幕上显示一切正常。这个被他们命名为“简课表”的Android应用,经过两周的迭代和三天内测,终于达到了林默心中“可以见人”的标准。


“怎么样?”陈浩凑过来,呼吸都带着紧张,“这次没问题了吧?”


“嗯。”林默点头,手指在键盘上敲了几下,调出性能监控界面,“内存占用峰值不超过12M,课程数据本地AES加密存储,同步用的是我们自己写的差分算法,单次同步流量不到50KB。”


“而且界面超简洁!”陈浩抢过鼠标,点开应用演示,“你看这个课程卡片的设计,我参考了……嗯,怎么说,一种‘卡片式’的UI理念,我在一些国外的设计博客上看到的雏形。颜色按院系区分,轻触展开详情,长按拖拽调课……”


他说得眉飞色舞,手在空中比划。


林默安静地听着,视线扫过陈浩头顶。数字轻微波动了一下,从【+73】跳到了【+74】。这种因纯粹成就感带来的好感度提升,稳定而坚实。


“做得很好。”林默说,声音比平时轻了半分,“比我想象的还要好。”


陈浩愣了一下,随即咧嘴笑了:“真的?我靠,你居然夸人了!我得记下来,今天什么日子——”


“但是。”林默打断了他的兴奋,深吸了一口气,才用尽可能平静的语气说,“发布的时候,不要署我们的真名。”


“啊?”陈浩的笑容僵住,“为什么?这又不是什么商业项目,就班里同学用用……”


“正因为是同学用,才要匿名。”林默转回自己的电脑,打开一份他昨晚写的文档,“你看这个。”


陈浩凑过去看。文档标题是《简课表V1.0用户协议与隐私条款草案》。


“这……有必要吗?”陈浩挠头,“就一个课程表而已。”


“有必要。”林默的声音很平静,但拇指无意识地摩挲着食指侧,“应用会请求存储权限,用来保存课程数据。虽然我们不做任何上传,但用户不知道。所以这里要明确写明:‘所有课程数据仅存储在设备本地,不会上传至任何服务器’。”


他滚动文档,指向另一段。


“还有这个:应用不会收集任何个人信息,包括但不限于姓名、学号、联系方式。如果未来需要添加社交功能,必须单独弹窗征求用户同意。”


陈浩盯着屏幕,表情渐渐认真起来。


“你是怕……惹麻烦?”


“是规避风险。”林默纠正道,视线扫过窗外——楼下有几个学生走过,头顶都是【+/-1】的路人值,没有异常,“现在移动应用刚起步,很多人还没意识到隐私问题。但我们作为开发者,得提前想到。”


他顿了顿,补充道:“而且匿名发布,可以避免不必要的关注。如果有人反馈bug,我们就修;如果没人用,也无所谓。就当是个练手项目。”


陈浩沉默了几秒,忽然问:“林默,你是不是……在躲什么?”


宿舍里的空气凝滞了一瞬。


林默的手指停在键盘上。他透过镜片看向陈浩,对方头顶的数字依然稳定在【+74】,但旁边多了一个小小的❓符号——代表困惑和好奇。林默看着那个问号,心里微微一紧。陈浩的困惑是纯粹的好奇,而非怀疑,这份纯粹反而让他更难用谎言完全搪塞。


“算是吧。”林默最终说,语气尽量轻松,“我不太喜欢被人盯着。你知道的,我有点社恐。”


这个解释半真半假。陈浩接受了,❓符号慢慢消失。


“行吧,听你的。”他坐回自己座位,“那咱们叫什么?总不能叫‘无名氏出品’吧?”


“就叫‘简工作室’。”林默说,“简单,好记,不惹眼。”


“成!”




发布是在周五晚上。陈浩在班级QQ群里发了下载链接,附言:“推荐个课程表应用,挺简洁的,我自己在用。”


没有多余的话。


林默盯着群聊窗口。几秒钟后,第一条回复跳出来。


【张伟:下了,界面可以啊】


【李婷:比教务处那个反人类的系统强多了】


【王磊:同步功能怎么用?】


陈浩立刻回复,耐心解释操作步骤。林默看着他打字的速度越来越快,嘴角不自觉地扬起。


又过了十分钟。


【刘薇:谁做的啊?挺好用的】


这条消息让林默的手指收紧。


陈浩转头看他,用眼神询问。林默摇头。


“就说不知道,论坛上找的。”他低声说。


陈浩照做了。刘薇没再追问。


但林默注意到,在接下来的半小时里,班级群里陆续有十几个人表示已下载使用。陈浩头顶的数字开始缓慢而坚定地攀升。


【+75】。


【+76】。


最终停在【+77】。


“我靠……”陈浩盯着不断刷新的好评消息,声音有些发颤,“他们真觉得好用?”


“因为你做得确实好。”林默说。


“是我们做得好。”陈浩纠正他,眼睛亮得惊人,“林默,这感觉……这感觉太他妈棒了!”


林默笑了笑,没说话。他点开应用后台埋的简易统计——匿名的那种,只记录启动次数和崩溃日志。发布两小时,已有二十三个独立设备激活。


零崩溃。


“第一阶段目标达成。”他说,“接下来看用户反馈。”




反馈来得比想象中快。


周六上午,陈浩还在睡觉,手机就震个不停。他迷迷糊糊抓起来看,顿时清醒了。


“林默!有bug!”


林默正在阳台上晾衣服,闻声走进来:“什么情况?”


“张伟说,他调了课之后,应用就闪退。”陈浩已经跳下床,光脚冲到电脑前,“我看看日志……妈的,空指针异常!”


两人挤在屏幕前,陈浩飞快地敲击键盘,调出源代码。


“这里。”林默忽然伸手,指向一段代码,“你假设调课后的课程列表不会为空,但用户可能把全天课都删了。”


“啊!”陈浩一拍脑门,“我忘了加判空!”


他立刻开始修改。手指在键盘上飞舞,嘴里念念有词:“先检查列表长度……如果是零,就显示空白状态……好了!编译!”


林默看着他工作。陈浩的表情完全变了——不再是平时那个嘻嘻哈哈的室友,而是一个专注的、眉头紧锁的程序员。他头顶的数字稳定在【+77】,但旁边的情绪符号变成了💡,代表专注和思考。林默看着那个发光的灯泡符号,仿佛能看见陈浩大脑中高速运转的逻辑齿轮。


五分钟后,陈浩上传了新版本。


“通知张伟更新一下。”林默说。


“已经发了!”陈浩头也不抬,眼睛还盯着屏幕,“等等,李婷也反馈了个问题……她说课程颜色有时候会错乱。”


“可能是异步加载UI时没考虑页面生命周期。”林默说,“我看看渲染逻辑。”


陈浩盯着代码,犹豫地说:“是不是……内存泄漏了?颜色资源没释放?”


林默没有直接否定,而是引导他看日志里的异常堆栈:“你看这个NullPointerException的调用链。”


陈浩看了半天,恍然大悟:“哦!是Activity被销毁后,AsyncTask的回调还在更新视图!我懂了!”


接下来的两个小时,他们处理了三个反馈。陈浩从一开始的慌张,逐渐变得沉稳。到第三个bug时,他已经能独立分析出可能的原因,并提出修复方案。


“这里用Handler延迟刷新,但没加弱引用。”他指着一段代码说,“如果用户在刷新完成前退出,可能会内存泄漏。”


“解决方案?”林默问。


“用静态内部类加弱引用,或者……算了,2012年还没那么多现成框架。”陈浩挠挠头,“那就手动在onDestroy里移除回调。”


“可以。”林默点头,“你写吧。”


陈浩开始编码。林默退到一旁,静静观察。


这个曾经需要他一步步指导的室友,正在以肉眼可见的速度成长。不仅仅是技术,更是一种责任感——对代码的责任,对用户的责任。


下午四点,最后一个bug修复完毕。陈浩长舒一口气,整个人瘫在椅子上。


“累死了……”他嘟囔道,“但爽。”


林默递给他一瓶水。


“谢谢。”陈浩接过,灌了一大口,然后转头看林默,“说真的,要不是你拉着我做这个项目,我可能到现在还在混日子。上课,打游戏,等毕业……就这样。”


他的声音低了下去。


“但现在我觉得,我好像……能做出点东西了。真的有人用,真的能帮到人。”


林默看着他头顶的数字。依然是【+77】,但那个数字此刻承载的重量,已经和昨天完全不同。


“你本来就可以。”林默说,“只是需要机会。”


陈浩笑了,笑容里有种林默从未见过的、属于成年人的沉稳。


“所以,林默。”他忽然坐直身体,“接下来呢?这个应用,咱们就放在班里用,还是……”


“先这样。”林默说,“观察一段时间,收集更多反馈。如果稳定,可以考虑加一些新功能——比如考试倒计时、成绩记录。”


“那要不要开源?放GitHub上?”


“暂时不要。”林默摇头,“保持低调。”


陈浩盯着他看了几秒,最终点头:“行,听你的。你是项目经理,你说了算。”


这句话让林默微微一怔。


项目经理。合作者。


陈浩头顶的数字没有变,但两人之间的关系,已经悄然完成了某种转换。




一周后,“简课表”在班级的普及率超过了百分之八十。陈浩建了个匿名反馈邮箱,每天都能收到几条建议。他认真地整理成需求列表,和林默讨论优先级。


周二的晚上,两人在食堂吃饭。陈浩一边扒饭,一边刷手机看邮件。


“又有新建议……有人想要教室地图功能。”他说,“这个有点意思,不过得搞到学校的平面图数据——”


他忽然停住了。


林默抬起头:“怎么了?”


陈浩的表情有些古怪。他放下手机,压低声音:“林默,有件事……我不知道该不该说。”


“说。”


“昨天,我在实验室碰到个学长。”陈浩的声音更低了,“不是咱们院的,好像是经管那边的。他问我,知不知道‘简课表’是谁做的。”


林默的筷子停在半空。


“你怎么回答的?”


“我说我不知道,我也是从网上下载的。”陈浩说,“但他好像不太信。又问了我几个技术问题,什么用的什么框架、数据怎么同步之类的……我按咱们之前对好的说辞应付过去了。”


“他长什么样?”


“戴眼镜,挺斯文的,穿得也挺讲究。”陈浩回忆道,“说话特别客气,但就是……让人不舒服。感觉像在套话。”


林默慢慢放下筷子。食堂的嘈杂声在耳边模糊成背景噪音,他的视线快速扫过周围——没有异常的数字,没有可疑的人。


但那种感觉又回来了。


被注视的感觉。


“他还说什么了?”林默问,声音保持平静。


“他说……”陈浩犹豫了一下,“他说这个应用做得挺专业的,不像学生作品。还问,开发者是不是有业界经验,或者……有没有接外包的打算。”


林默的拇指无意识地摩挲着食指侧。


“你怎么说?”


“我说我真不知道。”陈浩耸肩,“然后他就笑笑,说‘那算了’,走了。”


两人沉默了一会儿。食堂的灯光在餐桌上投下模糊的光晕。


“林默。”陈浩忽然开口,声音很轻,“那个学长……他走的时候,我注意到他手表挺贵的。江诗丹顿,我在杂志上见过,至少十几万。”


他顿了顿。


“一个学生,戴十几万的手表。而且他问问题的方式……不像普通好奇。”陈浩说完,自己都有些惊讶,“我靠,我怎么跟个侦探似的……可能跟你待久了,我也疑神疑鬼了。”


林默没有说话。他端起汤碗,喝了一口已经凉掉的紫菜汤。


经管、戴昂贵手表、问话专业……林默在脑中快速建立着人物画像。这不像随机的好奇,更像有目的的侦察。侦察者背后是谁?Observer_01?还是表哥林绍辉那早已伸进校园的触手?


无论哪种,都意味着他的“简课表”伪装,可能已经引起了不该引起的人的注意。


“我知道了。”他最终说,“这件事别跟其他人提。如果有人再问,一律说不知道。”


“明白。”陈浩点头,但眉头还皱着,“林默,你是不是惹到什么人了?”


“也许。”林默放下碗,看向窗外渐暗的天色,“但没关系。”


他转回头,对陈浩露出一个很淡的笑容。


“我们有应用要维护,有bug要修,有用户反馈要处理。这才是正事。”


陈浩盯着他看了几秒,然后也笑了。


“行。”他说,“反正我跟你混。管他什么牛鬼蛇神,代码写好了才是硬道理。”


他头顶的数字依然稳定在【+77】。


但林默知道,有些东西已经不一样了。这个曾经只需要考虑游戏副本和期末考试的室友,现在开始观察手表的价格,分析问话的意图,主动提醒潜在的风险。


从跟随者,到合作者。


再到……盟友。


离开食堂时,天色已完全暗下来。校园路灯次第亮起,在柏油路上投下一个个昏黄的光圈。林默走在回宿舍的路上,手指在口袋里无意识地收紧。


校外的人在打听。


被动等待只会让迷雾更浓。这个打听的学长,或许就是迷雾投下的第一道影子。他必须尽快破译沈星言留下的脉络图,主动去弄清影子的来源。


回到宿舍,林默打开电脑。屏幕上还停留着“简课表”的代码仓库。他凝视着那些整齐的commit记录,陈浩的名字和邮箱并列在他旁边。


然后他最小化窗口,点开了另一个文件夹。


里面是沈星言留下的那张香樟树叶脉络图的扫描件。复杂的纹路,手写的频率数值,那句“惊蛰未至,雷在云中”。


他需要尽快破译它。


在更多的“打听”找上门之前。


上一章 下一章
看过此书的人还喜欢
章节评论
😀 😁 😂 😃 😄 😅 😆 😉 😊 😋 😎 😍 😘 😗 😙 😚 😇 😐 😑 😶 😏 😣 😥 😮 😯 😪 😫 😴 😌 😛 😜 😝 😒 😓 😔 😕 😲 😷 😖 😞 😟 😤 😢 😭 😦 😧 😨 😬 😰 😱 😳 😵 😡 😠 😈 👹 👺 💀 👻 👽 👦 👧 👨 👩 👴 👵 👶 👱 👮 👲 👳 👷 👸 💂 🎅 👰 👼 💆 💇 🙍 🙎 🙅 🙆 💁 🙋 🙇 🙌 🙏 👤 👥 🚶 🏃 👯 💃 👫 👬 👭 💏 💑 👪 💪 👈 👉 👆 👇 👌 👍 👎 👊 👋 👏 👐
添加表情 评论
全部评论 全部 0
快捷支付
本次购买将消耗 0 阅读币,当前阅读币余额: 0 , 在线支付需要支付0
支付方式:
微信支付
应支付阅读币: 0阅读币
支付金额: 0
立即支付
请输入回复内容
取消 确认