不得不说,张达的思路比较跳脱,看到这些照片,他居然想到做一个网站对这些照片进行打分,虽然他不懂技术,但是却直觉上认为这是可行的。
林鸿思考了一下这件事的意义,实际上,投票的过程可以算是一种算法,通过大范围的统计,将优质的结果给筛选出来,不说这个算法的外在表现,其背后所隐含的意义却非常有意思。
这实际上也是一种对集体智慧的驾驭过程,通过集体的智慧寻找最佳〖答〗案。
林鸿最终同意了下来,他将这件事当成一次实验,很想看看最终是否真的能够像预料的那样,找出最优质的结果。
林鸿说道:“可是可以做,只是不知道会有多少人参与到这个过程中来。”
“这个你放心,我负责来宣传!”李奇自告奋勇地说道。
他对自己的交际能力还是很自信的,基本上这么两天下来,班级里面的所有男生他都认识了,并且在同一层的其他班级的男生他也认识了不少。
张达建议道:“我们最好是能够赶在军训之前将其做出来,不然就要等三个星期之后了。”
“嗯,应该费不了多少时间。”
说做就做,林鸿立刻开始动手。
他打算直接使用自己的笔记本当服务器,在上面建立一个这样的网站。
其他三人根本不懂这方面的技术,只能站在林鸿背后围观。
制作网站在这个时期,也是一种非常高端的工作,一般人连网站的基本运行原理都不知道,更别说制作网页了。
林鸿有意给他们普及这方面的知识,开拓眼界,所以他一边开始部署服务器和开发环境,一边给他们解说:“我现在做的这个网站,是需要通过浏览器访问的,因为这样更直观,还可以直接浏览图片。浏览器是一种能够访问万维网服务器的软件,它能够从服务器中读取特定格式的文件,然后以另外一种格式将其展示出来。”
林鸿停顿了一下,觉得这样可能有些抽象,打了个比方:“它就好像是一个翻译,将网页编程语言翻译成为我们能够看懂的文本语言。浏览器和服务器之间所使用的协议是一种叫做的协议,全称就是超文本传送协议,它允许将超文本标记语言,也就是使用html编写的文档从l语言,并且编写了一个简单的“helloword”程序给他们示范。
这种语言非常简单,并且很多标签都是成对出现的,所以吴东他们都听懂了。
“利用html语言,我们可以做出内容非常丰富的网页。”林鸿继续说道“但是这些网页都是静态的,如果想要让其中的内容发生变化,例如张达所说的,给他们打分,然后实时显示出来,这就涉及到动态语言方面的内容了,并且还需要保存数据,利用到数据库。”
林鸿也不指望一次性就直接将他们全部教懂,只是让他们有一个比较直观的认识,如果以后自己有兴趣,可以进一步进行研究。所以他的讲解基本上都是一遍过,不管他们能听懂还是没听懂。
他打算使用的动态编程语言还是他比较擅长的c语言,通过一种“通用网关接口(cgi)”的技术来和用户进行交互,记录用户对照片的评分。
cgi语言是由美国国家超级电脑应用中心开发的一种技术,1993年就出现了,后来很快便在互联网上流行起来,成为比较主流的动态web编程技术,它的编程语言可以有多种,比较常见的有perl语言,当然其他诸如unix的shell命令,python,c以及c 都可以用来开发cgi程序。
林鸿对这一块非常熟悉,所以他很快就将服务器的环境给部署完毕,将cgi的模块挂载上去,然后编写了一个简单的加法交互程序,让用户可以在上面输入两个数字然后点确认,就可以将其结果给计算出来。
“老二,你去你的电脑上访问看看。”林鸿说道。
“这就可以了?怎么访问?”张达还有些迷糊。
“直接输入我的ip地址就行了。”
张达将自己的电脑打开,启动浏览器程序,然后在地址栏上输入了林鸿的ip地址,确认之后,他看到浏览器中出现了一个加法计算器界面。
他尝试着输入了一个“1 2”点击“提交”之后,界面上立刻显示了一个“3”。
虽然只是一个简单的功能,但是他们都觉得这非常神奇。
“老大,这个就是你刚刚编写的程序?”吴东饶有兴致地问道。
“是的,这只是最简单的程序,但是也实现了动态的交互,不单单只是静态网页了。”
刚刚那个过程,实际上张达提交之后,会在林鸿的这台笔记本上运行一个名为add.cgi的程序,这是一个用c语言编写之后再编译过后的可执行程序,功能就是接受从网页前端提交过来的数据,然后再进行处理。
在此之前,他们三人都觉得网站制作和编程都非常简单,可是今天看到林鸿这样示范一下,这块神秘面纱终于被揭开,他们发现也不过如此。
当然,这个过程如果不是亲眼去看,他们可能还需要很长一段时间才能够了解到这其中的基本原理。这就是有师父或者导师的好处所在了,可以节省自己很多时间和精力,少走很多弯路。
接下来便是设计数据结构,林鸿所使用的数据库是mysql,虽然创办这个数据软件的公司去年才开始创办,但是他们发布出来的这个数据库却是开源的,并且非常好用,很快就在网络上流行起来。
由于功能比较简单,涉及到的数据保存只有评分数值,所以林鸿只设计了一张表,用来保存这个数值。至于以后的统计结果,则只要在这个基础上进行相应的计算就行了。
虽然照片不少,但是林鸿灵活使用命令行直接自动化处理,将这些照片进行重命名并且导入到了数据库中,姓名和简单的文字内容也一起导入。
仅仅huā了不到半个小时的时间,林鸿就将这个创意的原型给实现出来了。
吴东他们三人站在林鸿的身后,简直看得目不暇接,刚开始的时候林鸿还解释几句,到了后面,由于设计到的知识点比较多,一两句话也说不清楚,他便直接给省略了,这样一来,他的速度便瞬间快了起来。
“已经编好了。”林鸿调出一个图形化的浏览器,直接输入localhost,一个比较简单的界面便显示了出来,上面显示着一排排的照片,可以按照院系进行分类浏览。
张达:“牛逼啊!”
李奇:“好快啊!”
吴东:“我怎么才能够达到这种程度呢?”
他们三人实在是无法形容自己此刻的心情,虽然他们并不懂技术,可是也知道之前林鸿那一番行云流水般的表演,并不是随便什么人都能够做到的。
“可能还有些bug,你们来测试一下,等没什么大问题之后,再对外公布。”林鸿将座位让了出来。
程序员由于清楚自己所编写的软件一切细节,所以他们自己测试的时候,往往都会按照自己的理解去使用软件,这样的结果就是没有任何bug。故而一般负责软件测试的都是另外的人负责,这样才能找到一些意想不到的bug。
李奇立刻坐在了林鸿的位置上。
而张达则连忙跑到自己的电脑上,刷新了自己的页面,也同样看到了效果。
他点进去第一章照片,然后看到了有评分的选项,输入评分之后,照片下面立刻出现了评分记录。而排行榜那儿,这个同学立刻排在了第一位,这是因为暂时还只有她一个人有评分记录。
他们开始对照片进行打分。
吴东虽然没有抢到位置,不过他也不在意,站在李奇身后不停喊着“5分、3分、4分……”
几分钟之后,张达提除了第一个bug:“我输入的时候,不是数字也能够接受,例如直接输入a……”
林鸿点头道:“的确是个问题,我忘记对输入进行判断了,应该限制一下,只能输入1到10的数字,或者我干脆直接将其做为按钮形式,不让他们进行输入。”
接着,李奇也提出一个问题:“好像评分没有限制啊?一个人可以一直重复评分,这样一来很容易刷分数吧?”
林鸿:“这个可以通过限制ip来实现,同一个ip同一个照片最多允许四票好了。”
吴东:“我觉得排名算法还得进行优化一下,直接这样相加再相除的算法有点过于简单了,应该将最高分和最低分过滤掉,排除这些异常数据的干扰。”
林鸿:“有道理。”
……
经过他们不断地提出各种问题,林鸿也持续地对这个程序进行完善,刚开始有些简单的原型,渐渐变得复杂起来。在这个过程中,他自己也受到了不启发而产生了一些灵感,例如碰到分数一样的两个人的时候,就会触发另外一个机制,两张照片会同时显示,然后让人判断哪一张更好看,于是会加上一个很小的数值来进行区分。
在四点多的时候,整个网站基本上都差不多了,他们都觉得再也找不到任何可以改进的地方。
于是,李奇跑到学校商店买来红纸以及笔墨,直接设计了一张宣传海报,然后在去食堂的必经之地——宣传栏上面贴了出来。
海报的标题为“96界美女排行榜评比互动进行时!”正文的内容也写得极具煽动性,一时间引起了许多水木学生的围观。