Scripting 最佳IT/后台系统黑客?

Scripting 最佳IT/后台系统黑客?,scripting,automation,Scripting,Automation,很多人都有他们的系统为他们或他们的团队所做的事情。源代码管理提交后钩子是一个标准的例子:拥有一个自动构建系统,它可以检查最新的源代码、编译、测试和打包—这是我们大多数人可能使用的后台黑客 您还做了哪些很酷的事情?我们没有全天候的员工,但我们有关键流程,可以通宵运行。我们创建了一个内部警报系统,用于通知我们严重的系统问题、关键任务流程失败等。它使用文本到语音来创建描述性消息,然后连接到我们的自动拨号器,用消息呼叫适当的人。这算不上黑客,但回到今天,在我们快速的VAX 11/730上,如果出现问题,

很多人都有他们的系统为他们或他们的团队所做的事情。源代码管理提交后钩子是一个标准的例子:拥有一个自动构建系统,它可以检查最新的源代码、编译、测试和打包—这是我们大多数人可能使用的后台黑客


您还做了哪些很酷的事情?

我们没有全天候的员工,但我们有关键流程,可以通宵运行。我们创建了一个内部警报系统,用于通知我们严重的系统问题、关键任务流程失败等。它使用文本到语音来创建描述性消息,然后连接到我们的自动拨号器,用消息呼叫适当的人。

这算不上黑客,但回到今天,在我们快速的VAX 11/730上,如果出现问题,我们的通宵流程将在打印机上打印文件“BLAMMO.TXT”。每天早上,打印机进来时,第一站就是打印机。

我们有一个红绿灯,显示我们的日常构建是否成功、测试是否失败或根本不构建


此外,我们还有一个指示灯,每当我们收到客户上传的信息时,它就会亮上几秒钟

我们团队中有一名开发人员不熟悉颠覆冲突的概念。他推断,如果他只是删除了代码中所有奇怪的东西,然后单击“解决”,那么一切都正常(即删除文件中的所有其他更改…)

不管怎么说,在第五次出现这种情况之后,第五次我不得不解释为什么我刚刚关闭的缺陷再次出现,我写了一个脚本

对一个文件所做的更改将不同,以查看连续签入是否删除了所有以前的更改,以及这些更改是否由匿名开发人员完成

然后,它会向老板发送一封电子邮件,说明发生了什么,以及在登记过程中损失了多少工作


没有第七次出现。

回到我以前的工作,我们必须审核许多表的数据更改(插入、更新和删除)。我们的支持人员必须能够搜索这些数据,以找到用户所做的更改

已经成为半永久性的临时解决方案是存储每个非select查询。然而,这是一个大型系统,该表每天将增长约1.5GB


我提出的解决方案是创建一个脚本,为外部列表中的所有表创建适当的触发器,用于审核每个表、行、列、前后、时间和人员,并将其存储在新的审核表中。该表的大小增加了旧版本的10%左右,并存储了更多可用数据。它使我们能够创建一个UI来搜索和查看对数据所做的每一个更改,而不需要我们的支持团队或业务用户了解任何SQL。

在一家web设计公司工作时,我配置了我们的开发服务器,以便我们可以通过子域名实时查看项目的工作副本。因此,如果您的名字是joe,并且您正在从事jetfuel项目,那么您将转到
joe.jetfuel.test example.com
,您可以立即看到您的更改,而无需提交

这是一个简单的黑客,使用子域名作为部分目录结构。我们的htdocs路径如下所示
htdocs/tag/project
。我们有一个脚本(一个php应用程序,您可以通过
setup.test example.com
)为您创建一个新的标记名,并签出您想要的任何版本,并调用该项目的部署脚本。如果成功,它会将您转发到新的子域。然后,您可以通过samba共享来处理这个新副本

这对我们来说非常有效,因为我们总是部署到相同的linux版本,并且我们的项目有简单的数据库需求

我们这样做的最初原因是因为我们的开发人员在各种不同的平台上工作。除了解决这个平台问题之外,这对于查看更改和测试来说是非常棒的。我们有各种各样的标签,从人名、主干版本、测试标签,一直到原型,比如
jquery menu hack.jetfuel.test example.com


现在回想起来,我想知道运行虚拟机会容易多少。

我们有一个开发人员在一个不相信源代码管理的经典ASP站点上工作。代码从他的机器直接传到生产箱。这会导致丢失更改或无法恢复到稳定版本的问题。由于CruiseControl.Net具有监视目录的功能,因此我添加了一个项目,每当文件被复制到生产环境时,该项目都会实际签入文件。完全背离了CC.Net的初衷,但我们没有丢失任何代码。

不完全是黑客行为,但IT开发人员必须具备以下几点:

如果您使用的是subversion,则必须使用CommitteMonitor。()它允许您监视svn存储库中的新提交,然后查看新提交。如果你想保持团队的领先地位,那就太好了。特别是如果你有几个需要关注的三年级学生


Rsnapshot()也是无价之宝——从2年前开始,我们每四小时就有一次完整的整个文件系统的备份快照,此后每天都有。它就像文件系统的数据立方体!这给人的心灵平静是纯粹的幸福

放入一个预提交钩子,用于检查错误注释是否指向一个打开的错误,该错误分配给执行签入的用户。(SCMBug可以做到这一点)

然后,为了让生活变得有趣,请检查评论的拼写!! 提交注释和代码中的注释。(咒语是我的伙伴)

通过设置为compayn标准的代码格式化程序运行代码;并将其与原始文件区分开来:如果不是公司官方格式:拒绝提交

使用单元测试构建进行覆盖率测试

通过电子邮件将所有错误/错误发送给开发团队

我漏掉了开发者的名字。他们知道是他们干的。

-include prereqs.mk HEADERS=$(SRC_DIR)/gs_lib.h $(SRC_DIR)/gs_structs.h SOURCES=$(SRC_DIR)/main.cpp $(SRC_DIR)/gs_lib.cpp OBJECTS=$(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SOURCES)) release: FLAGS=$(GEN_FLAGS)$(OPT_FLAGS) release: $(OBJECTS) prereqs.mk $(CXX) $(FLAGS) $(LINKER_FLAGS) $(OUTPUT_FLAG) $(EXECUTABLE) $(OBJECTS) prereqs.mk: $(SOURCES) $(HEADERS) $(CXX) $(DIR_FLAGS) $(MAKE_FLAG) $(SOURCES) | sed 's,\([abcdefghijklmnopqrstuvwxyz_]*\).o:,\1= \\\n,' > $@ .SECONDEXPANSION: $(OBJECTS): $$($$(patsubst $(OBJ_DIR)/%.o,%,$$@)) $(CXX) $(FLAGS) $(NO_LINK_FLAG) $(OUTPUT_FLAG) $@ $(patsubst $(OBJ_DIR)/%.o,$(SRC_DIR)/%.cpp,$@)