回忆Web编程的岁月变迁

news2024/10/22 13:27:21

目录

引子

记忆的片断

CGI / ISAPI

何为 CGI / ISAPI ?

一个小插曲

ASP与我的ASP Builder

ASP编程技术

何为 Windows DNA ?

什么是 COM+ ?

ASP.NET

什么是 ActiveX ?

IntraBuilder与我的InterBuilder

结尾


引子

凌晨三点醒了,大多的时候是这样。醒来后还是静静的斜躺在床上,暗暗地,不想看手机,怕影响了好不容易才能入睡的她。 想着今天又有一个 在线招聘项目 要开始了,捋捋所有需要部署和配置的点,似乎没有什么问题,这么多年来,其中一条经验提醒我,万事行动前做足了准备,结果基本都不会有太大偏差,轻视,是自己最大的敌人。

记忆的片断

时间有点久远,差不多回到二十几年前。还没毕业的我和一样志同道合的同学,走了一条不同寻常的道路,即是打工又是一种创业的状态,总之,能够从事软件开发工作,对于当时的我们,来之不易。

艰难是难免的,长辈们都认为我没有一份稳定的工作,让我放弃幻想,七嘴八舌的施压与不理解,真的让我受够了。有时也自己问自己,现在的状态真的不适合吗?

翻翻报纸,看看招聘信息:“天大天财股份有限公司招聘,大学学历,网页设计与ASP编程。。。”看名称感觉公司还不错。决定和同学一起去应聘一下吧,我俩关系很好,也看看实际的招聘现场是怎么样一个情境。

面试我的是一个叫丰年的丰总,这个名字印象让人深刻,挺好记的。命运对我总是戏剧化的,经过长谈,本来是成功后成为雇佣关系的,却转变成了合作关系。丰总让我给公司设计开发一套对外宣传的门户网站,一番讨价还价,签了一个协议,一周时间,8000块钱。我觉得钱有点少,但当时给我画的饼是如果这个网站设计好了,后续一定有合作的项目。

丰总的要求是淡雅而简约,设计类似中国银行那种网站风格,有了参照则顺利了很多,从设计到验收用了一周多的时间,就不算违约了。重要的是公司决定和我们合作下一个项目。

CGI / ISAPI

经过介绍我们来到了另一个子公司,进入了一个叫天津大学博士后工作站的地方,接待我的是赵总和另一个总负责的老师。提出的需求是设计一套大学图书馆管理系统,要求使用 CGI / ISAPI 来实现。说实话,当时都不知道这是个什么东东,只是在 DELPHI 的一本书上看过一眼,是一种 WEB编程技术。对方问我是否会使用这项技术,多长时间能够完成需求?想着钱对生活的“压力”,拍着胸脯说,没问题,给我一个月的时间。有了丰总的背书,居然奇迹般的当场就签协议了。

首付款付了,拿钱就得给人家办事了。其实签了协议就知道压力来了,那时候获取学习信息不那么简单,ISDN 上网很贵还慢,于是和同学一起骑自行车去了天津大学对面的高教书店,这是我获取学习知识的唯一途径,也是平时经常光顾的地方。在书店就开始了蹭书与强记模式,找知识点,当时这可是我最大的乐趣之一,在茫茫书海,找到解决问题的方案和程序范例片断,别提有多开心了,现在想想年轻真好,当时的记忆力真是超强,回来就可以把代码复刻出来。

何为 CGI / ISAPI ?

说简单点儿,CGI 是可以被 HTTP 服务器加载的EXE,ISAPI 是可以被 HTTP 服务器加载的 DLL。详细介绍可阅读 https://baike.baidu.com/item/ISAPI/4445942?fr=ge_ala

一个小插曲

因为开发方法一样,开发的时候首选了CGI,因为在任务管理器中释放CGI的EXE进程比较简单,便于调试,但释放DLL就比较麻烦,甲方显示知道也遇到了这个问题,说要使用 ISAPI 开发模式,并给我们提供了一个叫 DLL Killer 的软件,至此,调试起来很开心。

ASP与我的ASP Builder

图书馆管理系统的开发、交付进展的还算顺利,曲折肯定是有的。甲方比较满意,在合作了两次的基础上,我提出了自己的建议,为什么不使用更先进的ASP编程呢?项目经理说领导正有这意思,于是我趁热打铁的和众位领导演示了我的 “王牌” 产品 ASP Builder 。

ASP Builder 是一款快速轻量化代码生成与设计工具,参照了 Visual FoxPro 和 Borland Delphi 的IDE与开发模式。拥有控件可视化设计器、代码CODE编辑器、数据库设计生成器(Paradox / MS SQL SERVER 2000 / ORACLE 9)、混合代码编译生成器等诸项功能。这款产品使用了我最崇拜的 Delphi 开发,历时了近一年的时间,但后期产生的效益还是很可观的。自此,我对于 RAD  的研究更加着迷,这完全要感谢我的授业恩师孙林 孙老师,是他把我带进了 Borland Delphi 那神圣的殿堂。

领导看完演示后很激动,或者说认可吧。不但要继续和我们合作第三个项目《天大天财ERP》之采购与销售模块,还想推广我的开发工具。赵总说这个ERP项目比较大,让我们一定要做好准备,并采用ASP结合COM+组件技术进行开发。这个我心里可自信的多了,因为曾经参照过 Windows DNA 的体系架构,设计了一套用 Delphi 开发的 CraneOffice DNA COM+ 分层结构 ,包括 ASP API、Business Controller 和 DataCenter 三层 COM+ 控制器。

有了 ASP Builder 的辅助和相关数据表设计文档,开发及交付用了三个月的时间,并得到了甲方的认可,自信值迅速提升。

ASP编程技术

ASP(Active Server Pages),是微软早期开发的创建动态交互式网页并构建web应用程序的编程技术。详细介绍请参照:https://baike.baidu.com/item/asp/128906?fr=ge_ala

何为 Windows DNA ?

其是 Windows Distributed interNetApplications Architecture 的缩写,是Windows 分布式集成网络应用体系结构的意思,详细介绍请参照 https://baike.baidu.com/item/Windows%20DNA/5799598?fr=ge_ala。

什么是 COM+ ?

COM组件是微软开发的一种软件开发技术,可以设计专有功能的组件,构建复杂的应用。COM+是 COM 的新发展。详细介绍请参照:

https://baike.baidu.com/item/COM%E7%BB%84%E4%BB%B6/3351509?fromModule=lemma_inlink

https://baike.baidu.com/item/COM%2B/6036302?fr=ge_ala

ASP.NET

作为早期尝鲜体验 ASP.NET 的开发者,还要感谢陈啸先生,他当时是微软中国地区的销售总监兼MSN副总裁,可以说是他把MSN带入的中国市场,客户资源真的太重要,从交流中了解到 ASP.NET 及未来的 .NET 计划,初次体验后惊叹于它质的变化,而不仅仅是ASP技术的简单升级,虽然初期微软叫它 ASP+ ,即后来的 ASP.NET。

第一个 ASP.NET 应用的项目是升级《法院信息管理系统》,在这里不得不提到这版本的最早开发模式,ActiveForm 模式,它是 Borland Delphi 提供的一个开发功能,本质是将 WinForm 开发封装成为了 ActiveX 控件嵌入到网页以实现Web应用。但要运行 ActiveX 需要配置安全选项,兼容性也是个问题,而且看起来怎么也不“像”个网页应用程序,但也不得不佩服 Delphi 的多功能开发和对Windows的完美支持,至少帮助了当时不懂得 Web 开发的我们解决了甲方的基本需求。

什么是 ActiveX ?

ActiveX 控件和 Java Applet 功能类似,是能够运行在浏览器中的插件程序,本质也是 COM 组件技术。详细介绍请参照:https://baike.baidu.com/item/ActiveX%E6%8E%A7%E4%BB%B6/3350733?fr=ge_ala

IntraBuilder与我的InterBuilder

IntraBuilder 是 Borland 公司计划推出适用于Intranet 的web开发工具(主要目标为 NetScape网景浏览器),当时看到这则消息时,我们异常兴奋了好一阵子,因为终于可以用传统CS的开发模式以最小的成本来实现 Web 应用了。但现实很残酷,根本买不到,那时一进入天津鞍山西道,一群大姐们会蜂拥而至,问:“大哥,要盘吗?”,卖盗版盘是那个时代一道靓丽的风景线。你要问:“姐姐,有 IntraBuilder 吗?”,回答肯定是:“有,嘛都有!跟我走。。。”,我是真期待她们知道这东西,但我太天真了。 因此我的 AspBuilder 的升级版 InterBuilder 诞生了,目标很明确,支持 ASP.NET。 

结尾

04年成立了图灵公司,名称喻意也很明显。伴随着ASP.NET的应用,微软 .Net  的诞生,我们也结束了颠沛流离的半自由职业时代。岁月的变迁,技术的迅猛发展,再回首过去的时光,恍若隔世。一个个的项目,一个个的人,一次次的刷新着自己的认知。

感谢陈啸先生的大力支持,也佩服他的魄力,毅然辞掉了微软高管的职位,做自己想做的事,也跟着他学习接触了一些新鲜技术。这件事也更深深触动了我,不再为别人不理解的眼光而分神,坚持自己的选择,即使失败了,这个过程也足以让我回味,即使失败了,忽略那些幸灾乐祸人的眼光,因为还有很多人支持鼓励我,此生无憾事。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2220828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构(JAVA)JDK17语法新增特性

目录 yield关键字var关键字空指针异常密封类接口中的私有方法instanceof其他 yield关键字 yield关键字用于case的代码块中返回值。 正常switch语句 public static void main(String[] args) {int result 0;String str "a";switch (str) {case "a" :resu…

根据发生异常的汇编指令以及函数调用堆栈,从内存的角度出发,估计出问题的可能原因,确定排查方向,快速定位C++软件问题

目录 1、前言 2、初步分析dump文件 3、加载更多模块的pdb文件,可能能看到更多行的函数调用堆栈 4、从内存的角度去看,估计是访问了野指针导致的,沿着这个怀疑的方向快速地定位了问题 5、最后 C软件异常排查从入门到精通系列教程&#xf…

【安当产品应用案例100集】024-BYOE及BYOK在IaaS场景中的应用

在云计算环境中,尤其是涉及到敏感数据时,企业用户可能会选择自带加密工具或密钥(即BYOE或BYOK),以确保数据在传输和存储过程中的安全性。这种方式可以防止云服务提供商访问或泄露加密数据,增强数据保护。 …

离散数学 第二讲 特殊集合和集合间关系 笔记 [电子科大]王丽杰

1.2 特殊集合与集合间关系 空集 不含任何元素的集合叫做空集(empty set),记作∅. 空集可以符号化为 ∅ { x ∣ x ≠ x } ∅ \{ x|x ≠ x\} ∅{x∣xx} . 空集是绝对唯一的。 全集 针对一个具体范围,我们考虑的所有对象的集合叫做全集(universal se…

基于springboot招聘信息管理系统设计与实现(源码+定制+开发)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

视频美颜平台是如何搭建的?基于直播美颜SDK源码的开发技术详解

今天,笔者将详细讲解如何基于直播美颜SDK源码搭建视频美颜平台的技术路径。 一、理解视频美颜技术 视频美颜技术主要通过图像处理算法对视频流进行实时处理,包括肤色优化、瑕疵修复、面部特征增强等。实现这一目标需要高效的图像处理算法和稳定的实时渲…

5个最流行的图像嵌入模型对比

最近需要研究图像相似性搜索。我想知道基于架构训练方法的嵌入之间是否存在差异。但是,很少有博客比较几种模型之间的嵌入。因此,在这篇博客中,我将使用 Flickr 数据集 [6] 比较 EfficientNet [1]、ViT [2]、DINO-v2 [3]、CLIP [4] 和 BLIP-2…

Matlab软件进行金融时间序列数据的描述性统计代码

1、数据S&P500的收盘价格,return100*log(pt/pt-1) 方法1:用python代码 import numpy as np import pandas as pddef calculate_log_returns(prices):"""计算价格序列的对数收益率。参数:prices (numpy.array): 价格序列。返回:log_…

Mongodb基础用法【总结】

关系型数据库和非关系型数据库的区别 关系型数据库 1.在关系型数据库中,数据都是存储在表中的,对存储的内容有严格的要求 2.因为我们在创建表的时候久已经规定了表中的字段 存储的数据类型 是否为空 唯一标识等规则 3.由于操作的都是结构化的数据&#…

家政小程序搭建,数字化市场发展下的意义

家政服务行业作为当下社会生活中不可或缺的行业,需求量在逐渐增加,行业发展也趋向多样化。 随着数字化的浪潮,家政行业逐渐向数字化、智能化升级发展,推动行业高质量发展,迎合现代化发展趋势,这一转型为行…

83.【C语言】数据结构之顺序表的尾部插入和删除

目录 3.操作顺序表 2."伪"插入顺序表的元素 分析尾部插入函数SLPushBack 代码示例 SeqList.h main.c free(指针)出错的几种可能的原因 3."伪"删除顺序表元素 2.分析尾部删除函数SLPopBack 代码示例 错误检查 两种解决办法 1.判断size是否为负…

004-按照指定功能模块名称分组

按照指定功能模块名称分组 一、说明1.现在有一个需求:2.具体做法 二、代码案例三、效果展示 一、说明 1.现在有一个需求: 需要把一个功能模块的几个功能点放在同一个文档目录下,这几个功能点分布在不同的 Controller 2.具体做法 需要把他…

如何将markdown文件转换为pdf

最近笔者在用vscode写markdown,但是提交时往往需要交pdf。所以就涉及到如何将markdown转化为pdf格式。 首先,需要在vscode上安装插件 markdown Preview Enhanced 之后在vscode的右上角即可看到下述图标,点击,vscode右半面就会显示…

C++数据结构-图的存储及邻接矩阵的代码实现

1. 什么是图 图论(graph theory) 是数学的一个分支,它以 图 为研究的对象。 图论本身是应用数学的一部分,历史上图论曾经被很多数学家各自独立建立过。关于图论的最早文字记载最早出现在欧拉 1736 年的论著中,也就是…

2024年有哪些开放式耳机值得入手?开放式耳机排行榜10强

随着技术的不断进步与消费者需求的日益多样化,开放式耳机凭借其独特的优势——如保持对周围环境的感知、减少对耳道的压力等,逐渐成为市场上的一大热点。尤其是在健康意识不断提升的今天,开放式耳机不仅为音乐爱好者提供了全新的聆听体验&…

【C++语言】全面掌握const的用法

一、const 需要怎么理解?? const修饰的变量不能够再作为左值,初始化完成之后,值不能被修改 1.1 C语言的const const 修饰的量,可以不用初始化,不叫常量,叫做常变量。 void main() {const int…

Windows git 配置

需要在git-bash的目录下,配置.ssh 的配置文件 要 .ssh 目录下的配置无法使用

Modbus TCP报错:Response length is only 0 bytes

问题描述: 使用modbus_tk库,通过Modbus tcp连接PLC时,python中的一个报错信息: Response length is only 0 bytes报错原因: 与Modbus TCP 服务端建立连接后没有断开,继续作为长连接使用,客户端…

一文掌握Cephadm部署Ceph存储集群

📚 博客主页: StevenZeng学堂 🎉 本文专栏: 一文读懂Kubernetes一文读懂Harbor云原生安全实战指南云原生存储实践指南 ❤️ 摘要:随着企业数据量的增长和存储需求的复杂化,Ceph因其高可扩展性和灵活性,能…

AI劳动力崛起:人将面临失业危机?

场景 第一眼看到这个网站的时候,AI员工官网(好像是部署在美国),我觉得很好奇,真的可以让AI替代人类完成工作吗?替代到什么程度呢?能以自然语言直接驱动吗? 正好手上在做爬虫项目&am…