Tag: 程序设计

VBScript 通过命令行发邮件 (GMail, SSL)

在LINUX下, 你可以通过安装 sendmail 程序并通过 mail 命令方便的发邮件. 在WINDOWS下, 你可以通过以下VBSCRIPT在WINDOWS的宿主脚本环境(Windows Scripting Host)下运行. ' VBScript to Send Email Notification ' Author: https://helloacm.com ' Usage: cscript.exe sendemail.vbs email subject text ' 23/Dec/2014 Sub SendEmail(ToAddress, Subject, Text) …

.NET 4.0 (4.5) 之后强大的平行 For, ForEach 语句用于多线程执行

.NET 4.0 之后 (e.g. 4.5) 添加了并行 For, ForEach 的支持.如果你的代码里有很多处 SIMD (单指令,多数据 Single Instruction Multiple Data). 就可以通过 Parallel.For 和 Parallel.ForEach 来进行多线程.使用方法非常简单:你不需要再手动创建几个线程,然后同时启动多线程,并等待它们的执行(同步). 首先,你需要引用这两个单元. using System.Threading; using System.Threading.Tasks; 为了演示方便,建立了一个长度为10的数组,元素是 Double 类型. double …

获取唯一的临时文件名

在做代码审核的时候,发现有一同事写了这样的代码.出现这种代码只能说明工作压力山大, 都不思考了. 不需要注释也能看明白,意思就是想获取一个唯一的临时文件,用了 Path.GetRandomFileName() 得到一个随机文件名,并且用 Path.GetTempPath() 得到临时文件夹.问题是他觉得这样不保险,于是就不停的尝试,如果文件存在的话,就试着下一个随机的文件名,直到不重复(或者最大尝试 100 次), 看到这里, 真是醉了. 另一个小问题就是,这个 while 还每次判断 文件名是否为空,这个只有在第一次判断的时候才为空,之后都不可能为空的,这样的代码质量真的很低. C# (.NET) 里 Path.GetTempFileName() 创建一个临时文件,并返回这个文件名.创建文件名的好处是这样就能确定该文件是唯一的, 因为其它进程在执行这个函数的时候如果文件名存在,则会获取下一个临时文件名并创建.每次都能保证唯一,而不会出现多个进程获取得到同样的文件名. 该程序员想的是,获取一个文件名(并不着急创建),之后再创建,感觉就是脱裤子放屁,多此一举,因为获取临时文件名就是肯定要创建该文件的,不创建的话获取文件名干什么? 代码审核很重要,因为这段代码平常来说是不会出问题的,但是效率实在不敢恭唯. 实际上,上面的代码完全可以替换成下面的代码(不会创建文件名), 这样的结合会更加实用些 (而且更简便, 高效) public static …

如何在 Linux 下 列出最耗资源的进程 (BASH 脚本)

大部分VPS或者虚拟主机服务器什么的都是基于 Linux 系统 (其它操作系统像 Windows 不太适合做服务器, 一则是价钱贵, 二是不稳定) Linux 系统主要是命令行界面, 多任务多用户系统. 强大的地方在于如果配置好的话, 完全可以拔掉显示器键盘鼠标等, 只接电源放几个月甚至几年都不会出问题. 这篇贴子介绍了备份数据(库)的一种思路. 这篇帖子则介绍如何在发现有问题的访问后就禁止掉该IP. 有一个非常好的办法就是经常监控比较耗资源(CPU或内存)的进程, 及时发现问题. 我们可以在LINUX下创建一个脚本, 含有以下内容, 并且 chmod +x 后可以直接在命令行下运行. #!/bin/bash #helloacm.com echo "-------`date`--------" echo …

用 Matlab 可视化三维向量 (quiver3)

Matlab 在做研究处理数据方面是非常方便的.往往只需要一两行代码就可以省去你敲C++代码几百行.因为在 Matlab 里, 很多函数,功能都是现成的,所以你完全可以不必要 reinvent the wheels. Matlab 的长处是处理矩阵,数据,可视化等.比如有一些三维向量,或者说是射线,那么单看数据你可能发现不了问题,最好的方法就是用 Matlab 提供的 quiver3 命令将其在三维空间中展示出来. 命令 quiver3 需要指定6个参数,x, y, z, u, v, w 其中 x, y, z 是点的位置(射线点),u, v, w …

代码审核

再NB的程序员也有可能写出很垃圾的代码,特别是没睡醒的情况下.所以代码审核就显得尤其的重要. 当一个开发项目即将完工或者一个BUG修复时,尽管已经通过了测试,但是还是需要有一些人专门针对上传的代码进行审核 (Review). 有些代码是一般不会造成问题, 但是却有可能会效率低下,比如: 很有意思,有一同事写了这样的代码,其实本意是想把一个角度限制在 0 到 360 度之间,但是是浮点角度,也许他认为不知道怎么对浮点数取余,所以就这样设计代码,不停的减,不停的加360度, 至到在范围内. 且不说这样做的效率,浮点数不断多次的运算会造成误差.如果这个角度极大或极小,则这两个循环则非常的费时.这是有可能测试人员无法测出来的,不经过代码审核是不会发现问题的. C#里是支持浮点取余的(不过得注意符号,负数的取余也是负数), 即使不支持,也可以通过: double fmod(double a, double b) { return a - b * (int)(a / b); } …