新年前最后一弹,发布一个抽奖工具

在正式开始介绍这个工具之前,先来讲一下这个工具的历史吧,唉,又勾起满满的回忆:)

它的第一个版本,如果没有记错的话,应该诞生在2010年冬天,记得当时所在公司的驻地是苏大冠名的一家科技产业园,产业园公司邀请所有园内企业参加那年的年终Party,晚会过程中会穿插抽奖环节,由于产业园里很多企业是做IT有关的产品与服务,所以希望抽奖环节能否弃用传统的抽奖箱方式,于是乎基于友情赞助,便写了这个工具的第一个版本。

紧接着下来的第二年,一个朋友向我要了这个工具,还提了一个新需求,能不能添加一个作弊功能,简单来说就是让某人必中某等奖,另外由于人员名单是现场签到输入,界面会被同时显示在投影仪上,所以作弊并不太方便,进而希望能不能作弊不被人看见?于是乎,便又增加了一个基于WML语言编写的WAP网站(因为那时候手机都支持WML,支持HTML的智能手机还并不多),以让作弊者使用手机来操作某人必中某等奖。该功能在现在的版本中,已经被拿掉,作弊实在太猥琐。

前几天机缘巧合之下,听说某公司会进行一场旧产品内部拍卖,于是想起了这个工具,便从尘封多年的笔记本中找出了源代码,顺便也升了个级。

好了,故事说完,谈正事,先说说工具大概提供的功能吧:

  1. 支持2种数据库,SQL Server和SQL CE,默认使用的是SQL CE,程序在首次运行时会自动创建数据库结构
  2. 自定义奖品名称,也就是一等奖,二等奖啥的
  3. 新建或修改一场抽奖活动,能够编辑此次活动包含哪些奖品和数量,以及允许指定每个人最多允许中奖几次(通常设置为1,即这个人中奖1次后,在这场活动中便不会再中奖)
  4. 单条输入或批量导入这场活动有哪些人参加,也就是说只有这些人可以参与抽奖
  5. 进行抽奖:
    1. 这批抽几个(假设三等奖100个,在抽奖时可以输入这批只抽20个)
    2. 从本场活动的人员名单中随机抽取
  6. 领奖,将人员勾选中以表示此人已经领取了奖品

Continue reading “新年前最后一弹,发布一个抽奖工具”

发布一个新工具Ping,兼年终总结

这篇文章只是草稿,后面应该会有增减。

一年一年又一年,转眼就快到新年。

好长时间没有写日志了,也许是懒了,也许是事情太多,总之理由是可以找出一堆一堆又一堆的。回想一下设计模式系列已经很久没有更新了,记得当初是打算每个月写一篇的,汗颜啊。

写这篇日志有两个目的,一是最近写了个小工具,用来测试主机是否在线的;二是想对过去一年作一个简单的总结。

先来总结吧,这里只说好的,只说知识技能上的成长,不说坏的,也不说情感金钱之类的。当然不是没有坏的,相反,而是坏的实在太多了,不敢列,不想列,担心会抽自己几巴掌。

  1. 复习了TypeScript,PowerShell, Bash,Python,C++等编程语言,虽然说离开软件行业已近2年,但是你懂的,有一种习惯叫兴趣,也有一种工作方式叫痛并快乐着。下面分别简单说一下这几种语言:
    1. TypeScript是微软开发的面向对象的脚本语言,支持鼓励强类型编程,实现了ECMAScript 标准,可以轻松编译出Javascript代码,从而运行在Javascript引擎上。当下很多流行的UI框架都有推荐使用TypeScript作为开发语言,比如Angular 2, Vue, Dojo等,但是随着Javascript版本的不断更新,以及相关引擎的支持,似乎越来越不需要TypeScript了。
    2. PowerShell是微软开发的Windows下的Shell脚本语言,我个人认为它的最大一个特点是可以使用.Net Framework,并且它也拥有通常高级语言所包含的语法(它的语法也比Bat要优雅的多,站在我的角度我优先会使用PowerShell而不是Bat,除非环境有所限制),所以理论上它可以实现任意功能。
    3. Bash是很多Linux系统上的默认Shell环境,它拥有比较完整的编程语言语法系统。个人认为,如果想利用好Linux系统,简化繁琐的工作,那么Bash是必修的课程。
    4. Python,说起这个语言,就我个人而言很是曲折,最早接触它的时候,2.3版本才刚刚发布,谁曾想到现在它会这么火爆,拥有丰富的API、工具、框架。想拿高薪,你得会Python,毕竟在Big Data, Cloud, AI等领域它最为抢眼。
    5. C++,整个人生道路上,我学的第一门语言就是它(不是C,我直接自学的C++),虽然从来没有正式地使用它做过项目,但实事求是的讲,在后来整个工作学习的道路上,它不断的启发着我,这次因为工作的原因,又重新温习了一遍,感叹前人真是牛逼。
  2. PLC。我他么也没想到,以前一个搞软件的,会去学习PLC,只能解释成博爱吧。关于PLC,我顶多算入了个门,简单一句话,它还是挺有意思的。不过我想随着技术的不断发展,基于Linux等平台的高级语言编程才是大势,比如基于Andorid,Windows loT等,另外像西门子这么贵的PLC设备也终就会被Raspberry Pi这种小巧便宜的设备所取代。
  3. 英语。说到这个,虽然说到了痛点,但是比去年还是有了些进步,偶尔讲两句也可以。

好吧,总结就总结到这里,后面如果想起了别的再加上来。下面来说说最近写的一个小工具。

工具的名称叫Ping,顾名思义,和我们经常使用的命令Ping有着相似的功能,即发送ICMP数据包给指定主机,来侦测远端主机是否在线,判断与远端主机之间的网络连接状况等。这个工具的特别之处是可以批量侦测大量主机,结合多线程来快速诊断网络状况。并且该工具基于.Net  Core编写,所以能够跨平台运行,无论是Windows、Linux还是MacOS。下面的截图基于Debian 9.5 + .Net Core 2.1。 Continue reading “发布一个新工具Ping,兼年终总结”