第12周,第四期技术动态

大家好,才是真的好。

又到了喜闻乐见的周五了,今天我们再讲几个技术有关的信息。

一、使用Apache作为Nomad Server的反向代理

从Nomad Web 1.0.5开始,Nomad Server组件就可以直接运行在Domino服务器上;从Domino 14版本开始,Nomad就作为了Domino内置功能,可选择安装使用,用户可以不使用Notes客户机,而使用浏览器直接访问Domino上的Nomad Web功能,在浏览器中体验Notes客户机功能。

不过单台Domino上的Nomad Web虽然理论上能支持数千个用户,但一旦企业到了一定规模,更多用户需要使用到Nomad,这时就要考虑到提供统一的入口,以支持多台Nomad Web服务器等等。

Nginx是很好的反向代理支持。

不过近日,HCL也推出了一篇技术文档描述在Apache上设置反向代理以访问Nomad Web:https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0108484

二、Domino 14运行账户问题

从Domino 14版本开始,将要安装的 Windows服务器上的Domino安装程序,更改为默认以非管理员用户身份运行。

默认用户为“NT Authority\LocalService”,但你可以选择将此设置更改为任何有效的 Windows 用户。

LocalService账户是Windows服务器控制管理而使用的预定义本地账户,在本地计算机上具有最低权限,并在网络上提供匿名凭据,是Domino运行的较好账户;该账户可以在没有密码的情况下使用,并且该账户存在于任何计算机上,也不能直接用于直接登录Windows。
在这里插入图片描述
值得注意的是,如果你早先启用过多米的里面一些功能,例如事物日志,那么事物日志的文件夹可能需要权限设置,否则会报错:
在这里插入图片描述
如要修改权限,假如你的事物日志在d:\translog目录,可以在cmd当中运行如下命令:
icacls “d:\translog” /grant *S-1-5-19:(OI)(CI)(F)
icacls “d:\translog” /setowner *S-1-5-19 /t /c /q
icacls “d:\translog” /remove:g Everyone /t /c /q

对该账户的详细描述和相关操作,可以参考以下站点:

https://blog.nashcom.de/nashcomblog.nsf/dx/domino-14.0-on-windows-important-to-read-before-updating.htm

三、Domino Appstore时代的即将来临

还记得我们前面提到过的在2023年的 Collabsphere 大会上,HCL宣布将开发新HCL Domino应用程序市场吗?应用提交地址是:https://hclsofy.com/managecontent

今年(2024年)应该会有很多新的消息宣布,而其他厂商也开始尝试制作一些标准化的基于Domino的应用产品,例如我看到国外https://nsfappstore.gumroad.com有一个收费项目,这个应用主要是知识问答、考试或培训一类的应用。

四、HCL Domino与Exchange的邮箱功能比较

知名的软件采购比较平台peerspot最近发布了一篇HCL Domino与Exchange的邮箱功能比较报告,发布站点为:https://www.peerspot.com/products/comparisons/hcl-domino_vs_microsoft-exchange
在这里插入图片描述
在这里插入图片描述
很多评论者的评论详细而中肯,值得好好阅读,如下图:
在这里插入图片描述
五、AI生成png

AI时代,应用网站层出不穷,今天介绍的是https://www.findpng.com,通过输入关键字,会自动生成一张去除背景的PNG素材文件
在这里插入图片描述
有了这个网站,处理一些图片素材会非常方便。

六、代码和技术债

有一种观点是人们把代码带来的负担,称之为技术债。

我觉得这个观点很不错,因此记录在这里。

“技术债”(technical debt)源自著名程序员沃德·坎宁安(Ward Cunningham)的一篇文章[7]。他写了一句话:“交付代码就像负债累累。”

代码是公司的资产,公司总是鼓励大家多写代码。但是,很多人(尤其是管理层)没有意识到,代码也是负债。

代码越多,债越多,这就是程序员常说的“技术债”。

你的代码一旦进入生产环境,就像背上一笔债务,将来需要不断支付利息,除非代码不再使用。

为什么代码好比负债累累?这有两个原因。

第一个原因是,由于各种限制,代码的实现有问题,包含了 Bug,或者选择了有问题的组件,后期需要修改或重写。

第二个原因是,即使代码是完美的,但由于技术进步,它会逐渐腐化过时,后期需要不断维护和更新,这通常比原始开发成本更高(这在Domino上没说通,很久之前的Domino平台上的原始代码,现在都兼容)。

这意味着,无论多么小心,上线的代码总是有“技术债”。可以这样说,所有的代码都是技术债。

“技术债”的可怕之处,在于你必须按时偿还,如果拖着不还,它就会像雪球一样越滚越多,维护成本越来越高,直到再也无法维护,只能放弃这段代码。

既然所有代码都是技术债,程序员写代码时,就必须考虑到它的长期成本,尽量减轻自己或别人日后的负担(利息)。

一个基本的事实是 代码越少,技术债越小;没有代码,就没有技术债。从这个角度看,软件开发的正确做法是下面两点。

(1)冗余的代码都要删除。

(2)只实现那些必须实现的功能,除非绝对必要,不要引入新功能。新功能必然带来新的代码,而且新功能一旦添加,就很难废除,总是会保留下来。

以上内容和观点来自于阮一峰《科技爱好者周刊#292:所有代码都是技术债》。

今天我们就介绍到这里。更多文章可关注微信公号:协作者

  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
├ │ ├ │ │ ├01 python s14 day1 开课介绍.avi │ │ ├02 python s14 day1 开课介绍2.avi │ │ ├03 python s14 day1 开课介绍3.avi │ │ ├04 python s14 day1 开课介绍4.avi │ │ ├05 python s14 day1 python发展介绍.avi │ │ ├06 python s14 day1 第一个python程序.avi │ │ ├07 python s14 day1 变量.avi │ │ ├08 python s14 day1 字符编码与二进制.avi │ │ ├09 python s14 day1 字符编码的区别与介绍.avi │ │ ├10 python s14 day1 用户交互程序.avi │ │ ├11 python s14 day1 if else流程判断.avi │ │ ├12 python s14 day1 while 循环.avi │ │ ├13 python s14 day1 while 循环优化版本.avi │ │ ├14 python s14 day1 for 循环及作业要求.avi │ │ └day1.zip │ ├ │ │ ├01 python s14 day2 本节鸡汤.avi │ │ ├02 python s14 day2 模块初识.avi │ │ ├03 python s14 day2 模块初识2.avi │ │ ├04 python s14 day2 pyc是什么.avi │ │ ├05 python s14 day2 python数据类型.avi │ │ ├06 python s14 day2 bytes数据类型.avi │ │ ├07 python s14 day2 列表的使用.avi │ │ ├08 python s14 day2 列表的使用2.avi │ │ ├09 python s14 day2 元组与购物车程序练习.avi │ │ ├10 python s14 day2 购物车程序练习实例.avi │ │ ├11 python s14 day2 字符串常用操作.avi │ │ ├12 python s14 day2 字典的使用.avi │ │ ├13 python s14 day2 三级菜单实例.avi │ │ ├14 python s14 day2 本作业-购物车优化.avi │ │ └s14day2_code.zip │ ├ │ │ ├day3-code.zip │ │ ├oldboy-10.avi │ │ ├oldboy-11.avi │ │ ├oldboy-12.avi │ │ ├oldboy-13.avi │ │ ├oldboy-14.avi │ │ ├oldboy-15.avi │ │ ├oldboy-16.avi │ │ ├oldboy-17.avi │ │ ├oldboy-18.avi │ │ ├oldboy-19.avi │ │ ├oldboy-20.avi │ │ ├oldboy-21.avi │ │ ├oldboy-22.avi │ │ ├oldboy-23.avi │ │ ├oldboy-24.avi │ │ ├oldboy-25.avi │ │ ├oldboy-26.avi │ │ ├oldboy-27.avi │ │ └oldboy-9.avi │ ├ │ │ ├day4.zip │ │ ├oldboy-1.avi │ │ ├oldboy-10.avi │ │ ├oldboy-11.avi │ │ ├oldboy-12.avi │ │ ├oldboy-13.avi │ │ ├oldboy-14.avi │ │ ├oldboy-15.avi │ │ ├oldboy-16.avi │ │ ├oldboy-17.avi │ │ ├oldboy-18.avi │ │ ├oldboy-2.avi │ │ ├oldboy-3.avi │ │ ├oldboy-4.avi │ │ ├oldboy-5.avi │ │ ├oldboy-6.avi │ │ ├oldboy-7.avi │ │ ├oldboy-8.avi │ │ └oldboy-9.avi │ ├ │ │ ├day5.zip │ │ ├oldboy-1.avi │ │ ├oldboy-10.avi │ │ ├oldboy-11.avi │ │ ├oldboy-12.avi │ │ ├oldboy-13.avi │ │ ├oldboy-14.avi │ │ ├oldboy-2.avi │ │ ├oldboy-3.avi │ │ ├oldboy-4.avi │ │ ├oldboy-5.avi │ │ ├oldboy-6.avi │ │ ├oldboy-7.avi │ │ ├oldboy-8.avi │ │ └oldboy-9.avi │ ├ │ │ ├01 本节小鸡汤(电影分享).avi │ │ ├02 面向对象介绍.avi │ │ ├03 面向对象特性介绍.avi │ │ ├04 实例演示opp编程好处.avi │ │ ├05 实例变量与类变量.avi │ │ ├06 类变量的作用及析构函数.avi │ │ ├07 类的继承.avi │ │ ├08 类的继承2.avi │ │ ├09 经典类与新式类的继承顺序.avi │ │ ├10 继承实例讲解.avi │ │ ├11 多态实例讲解.avi │ │ ├12 本节作业之选课系统开发.avi │ │ └day6.zip │ ├ │ │ ├day7.zip │ │ ├oldboy-1.avi │ │ ├oldboy-10.avi │ │ ├oldboy-11.avi │ │ ├oldboy-12.avi │ │ ├oldboy-13.avi │ │ ├oldboy-2.avi │ │ ├oldboy-3.avi │ │ ├oldboy-4.avi │ │ ├oldboy-5.avi │ │ ├oldboy-6.avi │ │ ├oldboy-7.avi │ │ ├oldboy-8.avi │ │ └oldboy-9.avi │ ├ │ │ ├day8.zip │ │ ├oldboy-01.avi │ │ ├oldboy-02.avi │ │ ├oldboy-03.avi │ │ ├oldboy-04.avi │ │ ├oldboy-05.avi │ │ ├oldboy-06.avi │ │ ├oldboy-07.avi │ │ ├oldboy-08.avi │ │ ├oldboy-09.avi │ │ ├oldboy-10.avi │ │ └oldboy-11.avi │ ├ │ │ ├day9.zip │ │ ├oldboy-1.avi │ │ ├oldboy-10.avi │ │ ├oldboy-11.avi │ │ ├oldboy-12.avi │ │ ├oldboy-13.avi │ │ ├oldboy-14.avi │ │ ├oldboy-15.avi │ │ ├oldboy-2.avi │ │ ├oldboy-3.avi │ │ ├oldboy-4.avi │ │ ├oldboy-5.avi │ │ ├oldboy-6.avi │ │ ├oldboy-7.avi │ │ ├oldboy-8.avi │ │ └oldboy-9.avi │ ├ │ │ ├day10.zip │ │ ├oldboy-1.avi │ │ ├oldboy-10.avi │ │ ├oldboy-11.avi │ │ ├oldboy-12.avi │ │ ├oldboy-13.avi │ │ ├oldboy-14.avi │ │ ├oldboy-15.avi │ │ ├oldboy-16.avi │ │ ├oldboy-17.avi │ │ ├oldboy-18.avi │ │ ├oldboy-2.avi │ │ ├oldboy-3.avi │ │ ├oldboy-4.avi │ │ ├oldboy-5.avi │ │ ├oldboy-6.avi │ │ ├oldboy-7.avi │ │ ├oldboy-8.avi │ │ └oldboy-9.avi │ ├ │ │ ├01 python s14 day 11 上节作业和读书分享_rec.mp4 │ │ ├02 python s14 day 11 jQuery选择器_rec.mp4 │ │ ├03 python s14 day 11 jQuery选择器eq和nth-child的区别_rec.mp4 │ │ ├04 python s14 day 11 jQuery表单选择器_rec.mp4 │ │ ├05 python s14 day 11 jQuery操作属性、css和返回顶部实例_rec.mp4 │ │ ├06 python s14 day 11 jQuery过滤器、事件和扩展方法_rec.mp4 │ │ ├07 python s14 day 11 jQuery模态对话框和ajax_rec.mp4 │ │ ├08 python s14 day 11 eclipse环境的配置_rec.mp4 │ │ ├09 python s14 day 11 MVC框架和python的WEB框架简介_rec.mp4 │ │ ├10 python s14 day 11 Eclipse django 使用_rec.mp4 │ │ ├11 python s14 day 11 创建Django project and app_rec.mp4 │ │ └12 python s14 day 11 Django用户注册和ajax请求_rec.mp4 │ ├ │ │ ├01 python s14 day 12上节作业_rec.mp4 │ │ ├02 python s14 day 12 Django路由系统_rec.mp4 │ │ ├03 python s14 day 12 Windows下Python-MySQL模块的安装_rec.mp4 │ │ ├04 python s14 day 12 模型字段类型_rec.mp4 │ │ ├05 python s14 day 12 增删改查过滤排序_rec.mp4 │ │ ├06 python s14 day12 模版语言和跨站请求伪造1_rec.mp4 │ │ ├07 python s14 day 12 模版语言和跨站请求伪造2_rec.mp4 │ │ └08 python s14 day 12 模板extend和include_rec.mp4 │ ├ │ │ ├day13.zip │ │ ├oldboy-1.avi │ │ ├oldboy-10.avi │ │ ├oldboy-2.avi │ │ ├oldboy-3.avi │ │ ├oldboy-4.avi │ │ ├oldboy-5.avi │ │ ├oldboy-6.avi │ │ ├oldboy-7.avi │ │ ├oldboy-8.avi │ │ └oldboy-9.avi │ ├ │ │ ├01开课介绍.avi │ │ ├02前端技术概要.avi │ │ ├03今日内容概要.avi │ │ ├04Html本质以及在web程序中的作用(一).avi │ │ ├05Html本质以及在web程序中的作用(二).avi │ │ ├06Html本质以及在web程序中的作用(三).avi │ │ ├07html的head内标签.avi │ │ ├08html的body内标签之图标、换行及其他.avi │ │ ├09chrome查看html样式基本操作.avi │ │ ├10html的body内标签之input系列(一).avi │ │ ├11html的body内标签之input系列(二).avi │ │ ├12html的body内标签之多行文本及下来框.avi │ │ ├13html的body内标签之超链接.avi │ │ ├14html的body内标签之图片及表格.avi │ │ ├15html的body内标签之表格.avi │ │ ├16html的body内标签之fieldset标签和label标签.avi │ │ ├17上述内容总结.avi │ │ ├18css选择器.avi │ │ ├19css的存在形式及优先级.avi │ │ ├20css边框以及其他常用样式.avi │ │ ├21css之float样式.avi │ │ ├22css之float实现作业实例.avi │ │ ├23css之display样式.avi │ │ ├24css之内外边距.avi │ │ ├25本作业以及思路.avi │ │ └day14课上所有.zip
程 序 实 践 (四) 总结报告 专 业 班 级 学 号 姓 名 日 期 东北大学软件学院 一 课程基本信息 1 二 教学目的和基本要求 1 三 课程设计的内容和安排 1 四 课程设计的题目 1 五 考核的方法和成绩的评定 2 六 时间的安排 2 七 课程设计结果的提交 3 八 课程设计报告的格式(见附页) 4 九 课程设计题目说明 4 附页 1 一 课程基本信息 1.课程设计名称:程序实践(四) 2.课程设计编号: 3.课程设计学分:2学分 4.课程设计数(学时):3(32学时) 5.课程设计授课单位:软件工程研究所 6.指导方式:集体辅导和个别辅导相结合 7.适用专业:软件工程(高起本、1+3) 8.课程设计教材及主要参考资料: [1]《数据库设计、应用开发与管理》,Michael V. Mannino等著,电子工业出版社,2005.1 [2] http://www.icarnegie.com/ 二 教学目的和基本要求 1.加深对数据库系统、程序设计语言的理论知识的理解和应用水平。 2.通过完成具有实际意义的Web数据库练习,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。 3.提高综合运用所学的理论知识和方法,独立分析和解决问题的能力。 三 课程设计的内容和安排 1.安装并运行数据库; 2.完成关于关系数据库基础知识的题目1; 3.运行给定的SQL语句,生成图书馆管理系统的数据库,编写相应的SQL语句,完成题目2中要求的内容; 4.运行给定的SQL语句,生成图书馆管理系统的数据库,编写高级的SQL语句,完成题目3中要求的内容; 5.完成Web 数据库程序设计题目4(选做) 6.阅读附录中的电子商务系统,给出该电子商务系统的E-R模型; 7.完成关于规范化内容的题目6; 8.对于第6步中自己设计的E-R模型,将其转换为关系数据模型; 9.完成关于事务编程方面的题目8,9; 10.完成索引建立和查询优化方面的题目10; 11.完成整个的电子商务项目;(选做) 12.完成网上书店项目;(选做) 13.撰写课程设计报告:总结和提升上述过程和步骤,写出结构严谨、表述清楚、符合设计规范的报告。 四 课程设计的题目 本课程实践要求完成一个电子商务项目(Web DB应用),其中包括10个具有实际意义的数据库练习,包括了数据库系统应用中的各个方面的知识。此外附件A、B还包括一个实际的图书馆项目,可根据实际情况选做。 五 考核的方法和成绩的评定 考核成绩分为两个部分: 1.验收部分:占60%。 按照以下几个指标进行验收 验收时是否能够快速完成老师指定的练习题目 回答问题的思路是否清晰 内容设计的是否规范、合理 内容设计的创新性 2.实验报告(40%) 实验报告结构是否清晰,问题叙述是否具有逻辑性 Web数据库应用程序设计的正确性 六 时间的安排 共3(见教学办安排)。每个同学可以根据自身实际情况掌握进度,做完整个项目即可验收,最晚到实践课的最后一天。 七 课程设计结果的提交 1.课程设计报告(一份、A4纸打印,同时包括一份电子文档) 2.答辩报告(制作PPT报告,电子方式提交),要求重点突出,思路清晰,同时就此报告准备答辩。 所有电子方式提交的文件全部存放在一个目录中,并对其进行压缩,压缩后的文件按规定格式进行命名,命名格式为:班级号+学号+姓名。 八 课程设计报告的格式(见附页) 1.按各个题目的要求书写相关文档; 2.参考文献。 九 课程设计题目说明 见文件夹--------“程序实践四资料” 此文件夹内共有十个练习文件夹(练习1----练习10内均为超文本文件,索引文件为 “练习N.html”) 另有附件A、B、C,其中附件C为前十个练习的参考项目资料,附件A和B为可选做项目的参考资料。 9.1 关系数据库 设计以下两个表: BOOK: Primary Author Title ISBN PublisherID Edition Date of Publication Price Book Description PUBLISHER: PublisherID Name Address 第一部分: 1.指出你所设计表的各种键值,在选择时不要考虑性能问题。 1)指出每张表是否存

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值