Tengs

Design & Develop

  • 言论自由
  • 技术文档
  • 日常琐事
  • 其它东西

技术文档

内容可能涉及云计算、高性能计算机、纳米粒子检测、通信工程、电力等等方面,这些东西的共同特点是:都是我李凯腾接触过的。

记一次用AI预测区域电量增长的有趣探索

2025年2月16日

闲来偶然想起前天听领导提到其试用“大瓦特”模型预测电量,疑因内网无法检索关联历史统计数据无果,感觉这倒是个挺有创意的想法,遂随手测试了业界若干知名大模型,无意间也再次领略了所谓的“AI幻觉”,结果还是挺有趣,小结几点思考供诸君参考。

【不同通用大模型对简单提示语的反馈】

按照经验,对于“预测电量”这种相对复杂的需求,在通用大模型下直接用“请预测汕头市澄海区2025年用电量的增长率”之类的简单提示语,效果一般不尽人意,比如通义千问,啰嗦一大堆后跟你讲“确切的数值无法准确给出”。

即便是在疑似推理大模型的“深度搜索”模式下,虽然能基于地理位置相近且发展模式相似,用潮州的数据做了类比,但给出的6%-9%的预测区间依然十分粗糙。

相对而言,Kimi爬取信息的能力似乎更强,但给出7%-9%这一预测区间的过程显得非常主观,有兴趣的同志可以进一步核实一下它有没胡说八道。

DeepSeek的效果相对亮眼,给出的预测过程更趋客观,甚至提出可以使用时间序列分析、回归分析等统计方法进行综合预测,并最终给出了4%-6%的预测空间。

单就这一次测试而言,各个大模型的靠谱程度的确存在一定的差异。当然,Deepseek给出的这个结果是否可信还有很大的考量空间。大家应该也都反复听说过“AI幻觉”这个概念,大模型编造它认为真实存在的信息而人类还感觉合理可信这一现象自大模型诞生之日起就存在,因此我们不能止步于此。

【提示语优化策略的应用】

采取“赋予角色、限定领域”+“分步提问”的方式改进提示语,赋予通义千问“数据统计师”角色,并限定“电力行业”——个人理解,这种处理方式能第一时间引导AI聚焦特定领域的知识,提高检索效率,特别是在服务响应资源有限、响应体验要求较高的情况下,能在很大程度上优化生成内容的质量。

近期也看到一些观点认为推理大模型本身具备很强的逻辑能力,提问时明确角色、领域反而可能误导大模型,影响生成内容的质量——这个观点见仁见智,个人认为,只要我们明确的角色、领域是完全正确的,依然能帮助大模型提高效率。换句话说,AI生成内容的质量,和使用者提问的能力密不可分。不管怎样,我们大部分人接触的还是通用大模型,掌握该技巧十分必要。

在此基础上分步提问,避开直接让AI“预测电量”的误区,先让AI“分析一下影响一个地区用电量的主要因素”,将人工智能思考的方向控制在自己手上,更好地保障人机协同。

显然,经过提示语优化,原先表现相对差劲的通义千问也能客观性、体系化地输出系列内容。

基于AI输出的内容,继续分步提出需求:请以汕头市澄海区为例,分析一下过去若干年,上述因素对每年用电量的影响。

能够看出,通义千问认识的澄海的确是我希望它分析的澄海,核实这一点对于避免后续预测过程中出现的张冠李戴十分必要。到此本可以切入正题“未来几年澄海区的用电趋势会如何?”

可惜AI输出的全是非量化的预判,我们必须进一步明确需求“请基于以上分析,预测2025年澄海区用电量的增长率,并说明预测的依据”。

可以看到AI虽然给出了5%-8%的预测区间,但并未说明预测过程中具体用了何种方式、哪些数据。必须进一步质询“请详细说明5%至8%的预测值是如何计算出来的”。

然而AI输出的结果依然十分空泛,我们换个方式进一步质询“请详细说明5%至8%的预测值是基于什么样的模型预测出来的,模型输入的参数有哪些,具体参数值是多少。”

到此,问题的探讨已相对深入,但我们不难发现AI提到的模型输入参数用了很多“假设”的表述,这可能会在很大程度上影响电量增长预测的准确性。

而且随着上下文数量的增多和问题的深入,内容生成的速度会显著下降,在第6、7轮对话的时候甚至已经降到了1秒钟1个字符输出的龟速,大概率是服务器的资源做了限制,由此可见对于相对高的应用需求,本地部署一个大模型十分必要。

【遭遇AI幻觉】

进一步与AI核实确认,要求罗列出参数估计过程中使用的历史数据类别及其具体值,得到了一系列数据值及其来源说明。

偶然间点击输出内容底部“相关链接”第二条时,发现莫名其妙引用了常德的数据。多了个心眼,遂手动检索了澄海区政府网站的统计月报,发现AI提到的2024年GDP增长率5.9%与政府公开数据4.5%显然不符。

于是向AI质疑引用数据的准确性,并要求全面核查更正数据,重新预测。

到此,通义千问开始化身“人工智障”,始终无法一次性爬取澄海区政府官网的相关数据并全面修正预测模型的输入,经过多番的曲解和反复的校正,最终计算出来5.64%的具体数据并给出了5%-6%的预测区间。

当然,这个结果在多大程度上可信依然值得商榷。令人后怕的是,假如过程中我没有点开附带链接发现引用的数据可能有问题、没有手动去检索官方数据核实AI提供的信息,而是迷信AI提供的有数据、有公式的貌似很科学可靠的“幻觉”,那么得到的结果可能离实际将有更大的差距。

【几点思考】

其一,过去的高等教育和社会经历让我们习惯了用百度等搜索引擎寻求答案——这在过去很长一段时间内极大提高了我们的效率,但相对人工智能生成内容,搜索引擎检索的方式已变得十分低效,也必将成为历史,需要我们有意识地改变习惯,才能重新与时代接轨。

其二,AI生成的内容,不宜囫囵吞枣、得之即用,必须要有批判的思想、保持怀疑的心态,多提几个是什么、为什么,尽量求证生成内容依据的来源,避免“AI幻觉”误事。

其三,AI生成内容并没有想象中难、也没有传说中简单,生成内容的质量极大依赖于提出需求的质量。基于此,学会与AI沟通的技巧十分必要——假以时日,AI可能真会淘汰一些人,但必然只会淘汰那些不擅长与AI沟通并获得支持的人。

Posted in: 技术文档 Tagged: 人工智能

PPT也疯狂

2018年1月5日 / Leave a Comment
前言:最近尝试用PPT做了几个动画视频,发现在一些简单动画特别是当前很流行的微课制作上,其功能绝不亚于Flash,而且相对于动辄要写ActionScript的Flash,PPT的傻瓜化操作简直无可比拟。这里和大家分享一些我近期解锁出来的有趣技巧,相信大家掌握后,也能分分钟做出好玩的微课视频。当然,条条大路通罗马,路过大神如对demo有更好的实现方案,还请多多指教。
好了,废话不多说,先上几个案例:
视频请看这里
上面几个例子中,既有文字、图形等元素的动画效果,也有页面切换的组合应用,为了照顾个别连动画窗格都得找半天的初学者,这里先从最简单的圆钟说起。
1
打开你的PowerPoint,忘了说明,上面大家看到的短视频,都是2013版直接另存为.mp4得到的,据说2010以上版本就有此功能,使用03或07版本的同学,或许你还需要一个录屏软件的帮助,但这并不是我要说的重点。首先我们要选菜单栏【插入-形状】里面的椭圆,按住ctrl在界面上画出一个正圆,并在格式菜单中更改形状填充为渐变-中心辐射,更改形状轮廓为黑色的粗线条,这样我们已经画好了一个钟面。现代版的PPT自带了丰富的形状填充、轮廓和效果功能,用各种形状组合可以轻易拼出复杂精致的画面,从这点上讲,PPT不失为一个优秀的画图工具,有兴趣的同志可以深入研究下。

2
在【插入-形状】里选矩形,画一个表针,更改填充和轮廓为全黑。这里要划重点了:由于PPT预制动画里面能用来旋转表针的只有陀螺旋(起码我是这么觉得),但该动画却是以图形的中心点为支点进行旋转,我们日常所见的钟表表针却都是以端点为支点进行旋转的。为了解决这个问题,我们可以复制一根同样大小的表针并将填充和轮廓设为透明,与原先的表针端对端放在一起,组合成一个图形——如此一来,当我们在这个组合图形上应用陀螺旋时,组合图形虽还是以中心点为支点进行旋转,但由于图形一半透明,视觉上我们就有了一根绕端点旋转的表针。

3
选中图形组合,在【动画-添加动画】中找到陀螺旋。
4
打开“动画窗格”,找到刚添加的动画,右键“计时”,打开设置菜单,设置开始为“与上一动画同时”,延迟为“0”,期间为“12秒”,重复为“3”。这里要划重点了:视频和图片的本质区别在于视频有时间轴概念,PPT的动画窗格其实就是一个时间轴,十分建议把所有元素的动画统一设置为“与上一动画同时”,这样便能通过设置延迟时间,精确控制每个元素何时出现何时消失何时做各种各样的特效动作。完成这一系列设置后,按F5预览,你就能看到表针旋转3周了——这是因为我们刚才设置了重复为3。
5
复制一个表针拉长一点做分针,在动画窗格找到该组合的动画,右键“计时”,刚才我们设置时针走一圈“12秒”,因为分针的速度是时针的12倍,所以这里要修改期间为“1秒”,同理,时针走3圈,分针要走36圈,所以重复修改为“36”。
6
在菜单栏上选【设计-设置背景格式-图片或纹理填充-纹理】,找一款好看的墙面纹理。添加logo等小装饰,大功告成。
7
选菜单栏【文件-导出-创建视频】,即可导出.mp4格式的文件。
好了,欲知其它demo如何实现,请听下回分解。
点此链接下载.pptx文件
Posted in: 技术文档 Tagged: ppt

懒人福利——悄悄告诉你如何将扫描件转成可编辑文字

2017年4月26日 / Leave a Comment

今天被问及可否将扫描件转换成可编辑文字,一时好奇心起,百度许久,居然还真找到了一些靠谱的在线资源。鉴于这年头懒人众多,遂决定发扬雷锋精神,和诸君分享一二。

在线神器的地址点这里

 

过程没什么好说的,按照网站上标明的步骤操作便可。可惜该神器不支持.tif文件,不巧很多扫描机器生成的就是.tif,这时候我们需要另外一个神器:地址点这里

 

过程依然没什么好说的,需要注意的是该网站广告和乱七八糟的链接太多,你需要做到心无杂念,认准中间的“选择文件”上传你的.tif文件然后点下“转换为PDF文件”,稍后出现“点击此处:打开文件 下载文件”两个链接时,选择下载即可。

然而当你兴冲冲地回到wdku.net打算动手转换时,运气不好的话或许你还会遇上这样的问题:

 

或者是这样的问题:

 

从道义上讲,我们不能怪人家小气——免费的只给转1M以下3个页面以内的东西,毕竟人家挖空心思赚点小钱也不容易。对于土壕,本人倒是十二分建议注册,也算是对技术宅的支持和鼓励。当然,如果你懒到连注册也不想动手的话,我们的确也还有其他的解决途径,这时候还得用回第二个神器里面的另外一个工具——PDF文件分割,地址点这里。

 

过程依然是没什么好说的,注意将分割方式改为每3个页面一个文档即可。假如每个文档还是很不凑巧地超过了1M,不妨将页面数设置为2或者1,万一问题依旧的话便只能求助于另外一个神器,地址点这里,将PDF的尺寸缩小从而让它小于1M。

好了,一切就绪,现在可以开始神奇的转换了。

经实测,转换过来的word文档基本没什么错别字,可见TextConv这个在线转换工具的文字识别算法的确还可以,当然,这也和扫描件是否有污迹等等很多因素脱不开关系,所以保险起见,转换完成后的校对还是十分必要的。

Posted in: 技术文档 Tagged: 图片转文本

基于批处理和油猴脚本的轻量级网页刷票实现(二)

2015年11月18日 / Leave a Comment

去年写过一篇《基于批处理和油猴脚本的轻量级网页刷票实现》,结果不少朋友满怀希望地给我发来各种微信投票链接,却由于部分投票采用了较为严格的验证机制,上述办法完全行不通,搞得我自己也很不好意思。吃一堑长一智,这里必须提前声明,下面的文字仍然不涉及需要关注后才能投票的微信刷票实现,有此需求的同志请自动绕过!

言归正传,在《基于批处理和油猴脚本的轻量级网页刷票实现》中,我忘记了老毛同志“没有调查就没有发言权”的忠告,未经测试便信口胡言“只要将你的电脑直接连接到调制解调器,当你每次执行ipconfig/release和ipconfig/renew后,你会得到一个新的IP地址,这时候就能开始新一轮的投票”,结果前阵子为了要给某比赛刷票,兴冲冲借回一个“猫”(家里是路由和调制解调器一体机,当时买的时候真没考虑到不能刷票的问题),才发现问题没有想象中那么简单,猜想是不同厂商的产品配置会有所不同,所以执行ipconfig/release和ipconfig/renew后,不见得都会更新ip地址,由于借不到更多的“猫”测试,这个猜想也仅仅停留在猜想阶段,有兴趣的朋友不妨探索下。还好天无绝人之路,ipconfig/release+ipconfig/renew不行,还可以使用rasdial命令断开重连网络,代码是这么写的:


set /a n=0
:cont
rasdial entryname username password
ping -n 5 127.0.1>nul
rasdial /DISCONNECT
ping -n 1 127.0.1>nul
set /a n=n+1
echo %n%
goto :cont

entryname是连接的网络名,可以在控制面板网络设置里变更;username是营运商给你用户名,有可能是一个电话号码,也有可能是一串很长的字符;password是用户名对应的密码。ping -n 5 127.0.1>nul 表示ping自己的主机5次,间隔大概4、5秒,也就是说联网后4、5秒又断网,再连便获得了一个新的ip地址,所以这个参数可以根据自己的网络带宽等实际情况调整。上面这段代码经过测试,可以实现更改ip的目的,但偶尔会出现多次断开重连获得的ip地址一直是同一个的情况,猜想可能是服务商的ip地址池分配问题,同样未能深入探究,有高手不妨留言给我讲解下。

除了上述方案外,还可以使用代理服务器进行刷票。经过不懈的搜寻,本人发现了一个名为“无界”的代理服务软件,该软件使用十分简便,下载后直接打开即可。猜想这东西后面有一个十分庞大的代理服务器群支撑,而且每次服务请求并不固定由哪一个服务器提供代理,这一点对于刷票者来说,简直就是福音。有意尝试的朋友可以直接百度下载。当然,这个方案也存在缺陷,因为毕竟代理服务器的数量是有限的,换句话说,IP地址也是有限的,这直接限制了能够刷到的票数(在我这边的测试环境下,用“无界”能刷到300多票,当然,假如每个ip每天都能投一次票的话,隔天还是能再刷300多票的)。

上述方案针对Internet,在内网情况下基本行不通,这时候可以尝试通过netsh更改内网ip地址,代码大概是这样的:


netsh interface ip set address name="本地连接" source=static addr=10.10.10.10 mask=255.255.255.0 gateway=10.10.10.1

其中,name参数是连接名称,基本是“本地连接”啊、“本地连接 2”啊之类的,通过控制面板网络连接可以查看,记得加英文双引号””;addr是希望获得的ip地址,mask是子网掩码,gateway是网关,这三个要根据你所处局域网的实际情况填写,可以通过ipconfig找到当前的网关和子网掩码,照搬上去,然后通过子网掩码和当前ip地址确定addr可以选择的范围,比如上述命令中,“addr=10.10.10.10 mask=255.255.255.0”这意味着你可以选择的ip地址范围是“10.10.10.2-10.10.10.254”,想了解为什么,可以百度ip地址分配相关内容。

搞定这个前期工作之后,可以尝试通过变量为addr赋值,这样就能实现ip地址定时更换了。

需要注意的是,当你要变更的ip地址被占用(这种情况很常见),会出现地址冲突,产生各种各样的后果,所以,最好是等到夜深人静你的同事都下班关电脑了,再更改ip进行刷票。

Posted in: 技术文档 Tagged: 刷票

基于批处理和油猴脚本的轻量级网页刷票实现

2014年10月15日 / Leave a Comment

由于某种需要,在浪费了整整一天搜寻免费刷票软件无果后,毅然决定自己动手做一套。在度娘的大力支持下,经过一天的艰难探索,加之以牺牲一批脑细胞为代价,终于用“批处理+油猴脚本”实现了邪恶的刷票目标。

实验证明,这一解决方案适用于通过IP限制投票数量的投票系统。遗憾的是,由于无暇研究验证码识别机制,该套方案暂时应付不了有验证码机制的投票系统。下面,本人将详细介绍这种刷票应用的实现,有兴趣的小伙伴可以自己随我搭建一套爽爽。

众所周知,投票系统分无限制投票和有限制投票两种类型。对于无限制投票,刷票的方式很简单,比如用javascript编写一个自动点击按钮(或自动发送投票请求)、然后自动刷新页面的脚本,在油猴脚本(Firefox上的一种应用扩展,用于在任意网站上运行自己编写的脚本)上运行,就大功告成了。对于有限制的投票系统(比如每人每天仅能投几票),目前业界通用的技术无非是锁定IP或写入cookie。因此,要实现刷票,也就是要突破IP限制并删除cookie。对于突破IP限制,可以利用代理服务技术,但这种方式的缺点是实现起来比较复杂,而且代理服务器良莠不齐,免费的代理访问起来普遍较慢,用来刷票往往心有余而力不足,所以这种方式不太可取。值得庆幸的是,运营商为提高iP资源的利用率,大多数情况下给我们分配的都是动态IP(静态IP还是有的,比如我周围几条能用的线路都是,这直接导致了我不得不采用效率更低的天翼3G上网卡来刷,这是后话),这种机制给我们的刷票行动带来了很大帮助,你会发现,只要将你的电脑直接连接到调制解调器(就是说不能通过路由),当你每次执行ipconfig/release和ipconfig/renew后,你会得到一个新的IP地址,这时候就能开始新一轮的投票了。在此基础上,利用循环和延时,并将代码存为批处理文件(即*.bat文件),执行起来即可实现定期自动更新IP地址,批处理可以这么写:


set /a n=0
:cont
ping -n 25 127.0.1>nul
rem 上面的25代表25秒延时,可修改为任意值
ipconfig/release
ipconfig/renew
set /a n=n+1
echo %n%
goto :cont

刚才提过,这种方法仅适用于动态分配IP的网络连接,假如你用的宽带是静态IP(像我一样),那么只好找一个3G上网卡了。对于3G上网卡,实现IP更换的机制是断开网络连接并重连,批处理代码可以这么写:


set /a n=0
:cont
netsh interface set interface "更换为自己的宽带连接名" enable
ping -n 25 127.0.1>nul
netsh interface set interface "更换为自己的宽带连接名" disable
set /a n=n+1
echo %n%
goto :cont

实现了IP自动变换,接下来要做的就是实现网页上的自动投票。这里用到了Firefox浏览器和油猴脚本(GreaseMonkey组件),自己编写的javascript脚本如下:


// ==UserScript==
// @name       t
// @namespace  tengs
// @include    http://tengs.info
// @version    1
// @grant      none
// ==/UserScript==
//个人习惯,引入jQuery
var GM_JQ = document.createElement("script");
GM_JQ.src = "http://code.jquery.com/jquery-2.1.0.min.js";
GM_JQ.type = "text/javascript";
document.getElementsByTagName("head")[0].appendChild(GM_JQ);
//Check if jQuery's loaded
function GM_wait() {
    if(typeof unsafeWindow.jQuery == "undefined") {
    	window.setTimeout(GM_wait,100);
    }
    else {
        $ = unsafeWindow.jQuery;
        letsJQuery();
    }
}
GM_wait();
function letsJQuery() {
    $(function () {
        //下面用AJAX发送投票请求
        $.ajax({
            type: 'POST',//这个是请求方式,有可能是GET
            url: 'http://xxx.com/voted/123456',//投票处理地址要根据实际填
            //data: data,要根据实际情况确定是否有发送数据
            success: function(){location.reload();},
            dataType: 'json'
        });
    })
}

对于AJAX里面的参数,可以通过FireBug(也是Firefox的一个插件)监控一次真实的投票过程,从发送、接收的数据包中获取。

值得一提的是,刷票的过程中,由于网络是自动断开重连的,有可能出现网页正在请求数据却刚好断网的情况,这时候会出现网页假死,而且这种情况下由于页面未加载完成,油猴脚本不能执行,所以不能通过javascript来刷新。这时候,刷票也就停止了。解决的办法是应用Firefox的Reload Every插件(好吧,又是插件),设定一定时间间隔自动刷新页面即可。

好了,愉快的开发之旅已经结束,接下来就享受一下刷票的乐趣吧!

说了这么多,现在问题来了,我是不是应该开个淘宝承接刷票业务,赚点小钱还房贷呢?!

Posted in: 技术文档 Tagged: 刷票

由好莱坞女星艳照泄漏引发的信息安全思考

2014年9月2日 / Leave a Comment
由好莱坞女星艳照泄漏引发的信息安全思考

日前,国内外大小媒体纷纷报道了“黑客利用苹果手机iCloud漏洞窃取曝光好莱坞女星艳照”事件,这可谓是继陈冠希和李宗瑞两位仁兄“大作”消沉许久之后又一网友们喜闻乐见的“网上资源”。

当然,话分两头讲,艳照当事人可就不见得那么好受了——作为一个从小就被灌输以“礼义廉耻”价值观念、习惯在公众面前衣冠楚楚的正常人来讲,自己私底下一些见不得人的照片突然之间曝光在大众面前,终究是件很令人难堪的事情。倘是脸薄害羞之人,或许伤害要更加严重,从此一蹶不振甚至于厌世轻生也是常有的事,影响之恶劣,不得不引起看客诸君的注意。这是实话,毕竟喜欢自拍而又缺乏信息安全理念的读者朋友并不在少数,在此,本人发扬了一下雷锋精神,整理一点建议,供参考!

从本质上讲,冠希老兄和本次事件中的众好莱坞女星都犯了一个相同的错误:让自己那些“见不得人”的私密东西失去了掌控。区别在于,一个是贸贸然把存有“资源”的电脑交给了他人,另一个是贸贸然把“资源”上传到了网络上。这个世界上从来就没有绝对安全这种说法,事实上不难想象,假如当事人虽然进行过那些“见不得人”的活动,但当时并没有拍摄这些照片视频,自然也就不会有后来的这许多麻烦——这个道理浅显易懂,却是信息安全的最高境界:根本没有涉密信息,自然谈不上信息不安全。当然,人总是怀旧的,对于一些有“纪念意义”的活动,拍照摄影作为日后回忆的素材,也属情有可原,在这种情况下,就不得不多留个心眼,免得后患无穷。其实说到底也就一句话,要提高安全意识。

那么,何谓安全意识呢?个人认为,一方面是不要相信任何人,另一方面是不要相信任何技术。

诸君大概早有耳闻——某某人因打开了谁谁发过来的链接或安装了某个不明来源应用,导致QQ、银行卡账号被盗——之类的事情,这都是过于轻信他人的苦果。笔者始终有一个观念:不能将现实中的熟人的各类网络账号等同于该熟人本人,因为任何账号都有被盗号的风险,这也是各类盗号诈骗者常用的伎俩——盗用熟人的账号和你套近乎,伺机让你汇款,或者让你安装某木马,或者直接要你给他远程控制……因此,即使是和再熟悉的熟人通过网络联系,当涉及到敏感话题时,必须先通过一些比较私人的问答确认对方身份。此外,不要轻易将存有隐私信息的存储介质(如U盘、硬盘、光盘等)交给他人,这个道理应该是人都懂。

至于安全技术漏洞引发的问题,我认为很多情况下是由于当事人缺乏相关技术背景知识而蒙受忽悠。如同本次事件,相信苹果在推广其iCloud应用时,一定曾天花乱坠地吹嘘过其云存储如何如何安全,但事实终究是事实,再安全的云存储,也有泄密的一天。这个故事也再一次警戒我们,安全始终是相对而言的,一种安全技术获得公认,仅仅是因为它还没被攻破而已,更何况还有一种情况,假如软件的开发者本身有意窃取你的隐私,随便留个后门,简直不费吹灰之力(别觉得不可能,看看小米在台湾出的丑闻)。从这点上讲,把秘密放到U盘然后锁进柜子里,不见得不比放到云储存上来得安全。

这是玩笑话,不过的确有些道理。那么,到底应该怎样保护私密信息呢?归结起来讲,首先是要让它离开网络,不要上传到任何网盘、云存储、服务器什么的上面,不要放在能上网的电脑上面,相信我,这是杜绝信息遭受黑客窃取的最有效途径;其次是混淆私密信息,高级点的可以找一些文件加密软件,对文件进行加密(事实上任何电子文件本质上都是一堆二进制数字,加密的原理就是改变这些数字的排列,致使文件的本义发生改变,这的确是防止信息泄露的有效方法,举个简单的例子,在一个私密文件的数据中每隔10位增加一个0,得到的将是一个完全不同甚至毫无意义的文件,即使这个文件被窃取,意图破解者必须猜测,我到底是每隔10位还是每隔9位、是加了一个数据还是抽掉了一个数据),简单点的可以弄一堆杂七杂八的文件放一起(曹操的疑冢就是这个道理),当然,私密文件的文件名要起得一眼看上去完全不留意。之后可以把文件存到一张普通光盘、一个普通U盘等介质上,然后不要忘记和其他普通的光盘或U盘扔在一起,事实上锁进保险柜或者其他什么柜子里的确是个很不错的主意。

Posted in: 技术文档 Tagged: 网络安全

批处理实现MS SQL Server数据记录删除

2013年3月12日 / Leave a Comment

大三就开始给一家工厂兼职做软件维护,昨天那工厂提出了一个需求:存入数据库中的条形码记录有时候出现周期重复,给后面的数据存入带来麻烦,需要给原有软件增加一个可以批量删除某一段时间内所有记录的功能。

看了看数据库,发现每条数据记录都有存入时间的字段,问题变得很好解决。又考虑到原有的软件过于庞大复杂,而且在生产线上处于重要位置,工厂又是二十四小时不间断生产的,在原有软件基础上加代码,一方面软件是用delphi写的,基本上每次都是临时抱佛脚看看书才知道语法怎么样;另一方面原有软件不是我开发的,注释写得也不怎么样,搞不好不小心哪里敲多了个字符,软件更新后跑不起来,问题就大了。所以另外写一个软件实现需求是个明智的选择。

事实上我最熟悉的是ASP,考虑到工厂那台机器都不知道有没ASP的环境,只好作罢。用ASP.NET做个简单的窗体还是可以的,又想起重装系统后还没安装Microsoft Visual Studio,鉴于现在不当码农了,安装一个这么大的东西显然很浪费我的硬盘空间,还是算了。其实JAVA也是个选择,甚至大学期间我还上了一学期的课,可恨的是万恶的手枪哥在我最引以为豪的编程课程上居然只给了我七十多分(要知道这个分数比我整个大学的平均分还要低很多),这导致我在厌恶手枪哥的同时间接地厌恶起了JAVA。

一番思索衡量之下,觉得就这么一个小功能,用那些高级语言写成一个软件,显然是不划算的,于是自然而然想到了批处理,百度了一下,发现还真有批处理操作数据库的典范。这不得不感谢百度知道。

代码是这样的:


osql -S ServerName -U user -P password -Q "DELETE FROM Table_Name (Field_Name BETWEEN CONVERT(DATETIME,'%startdate%',120) AND CONVERT(DATETIME,'%enddate%',120))"

osql工具是一个 Microsoft Windows 32 命令提示符工具,您可以使用它运行 Transact-SQL 语句和脚本文件。——百度百科

想了解更多的话可以在CMD里面键入 osql /? 看看。

cmd-osql

当然,用户需要能够自己设定所要删除记录的时间范围,所以要能接受用户的输入,代码大概是这样的:


echo 开始运行:
echo 输入开始时间(如2012-1-10),以回车结束
set /p startdate=

搞定,运行起来是这样的:

cmd-tengs

了解更多批处理知识,可以访问百度百科——真的很有用。我花了两个多钟头看完,修改了一个demo,做成一个答题的——软件(能叫软件吗?),拿来给大家玩玩。

点这里下载

ps:本来最后想shutdown -r,关掉你的电脑的,想想还是算了,万一你有文档没保存,我不是成了千古罪人。。

Posted in: 技术文档 Tagged: osql, 批处理

滚动字幕是一种很差的用户体验

2013年1月16日 / 2 Comments
滚动字幕是一种很差的用户体验

滚动字幕在我们的生活中太常见了,以至于令我们几乎淡忘了它的存在。不管是车站候车厅里的车辆到站信息,还是公交车、计程车上的电子广告牌,抑或是电视新闻下面的滚动要闻……这些东西以同样的形式(滚动)在不同的屏幕上出现,并扮演着不同的角色,有些可有可无,有些却异常重要。

我曾在一次回家的路上短时间内接连看到三个这样的东西,于是我开始观察并试图研究滚动字幕的利弊。

首先,滚动字幕的出现大抵似乎是由于可显示空间受限,这种断定在扁宽的LED广告屏上尤为确切。不能否认,利用小块的空间去显示大量的信息显然是不现实的,除非使用小号字体,但很多情况下小号字体难于阅读,容易被忽略,事实上很多屏幕由于像素的限制所能支持的字号也是有限的。于是“聪明人”便想出了滚动字幕这种东西,他们的想法很朴素:很多人阅读一行文字,由于眼睛能够关注的范围和大脑处理信息的速度受限,并不是真正意义上地在阅读一行文字,而是某一刻阅读一行中的几个字,下一刻眼睛聚焦的点改变,接着读接下来的几个字——说白了就是文字是没有动的,但是眼珠(好吧,严格的说应该是聚焦的位置)动了。依照这种原理,让字幕流动起来,那么理论上人的关注点甚至都不需要动,字幕会自己不断通过关注点,从而被人读取。

然而当我试图去看滚动字幕上的信息时,却发现很多情况下字幕的滚动速度远远赶不上我的阅读速度。令我好奇的是为何这种情况更为常见,而我的阅读速度跟不上滚动速度的情况很少遇到,至于两者速度相等就更是未曾出现了。这直接导致了我希望了解信息时,虽然很快读完了显示区域内的文字,却不得不干巴巴地静等新的文字滚动出来,从而为白白浪费的时间而恼火。为了检验是否会有一个更为适合我的滚动速度,我在网页上做了一个实验(假如你了解过html的话应该知道在marquee标签中的文本是会滚动的),可惜实验的结果并没结果,当滚动越来越快时,会有闪屏、文字跳动的感觉出现,从而影响了阅读,或者确切地说影响了阅读的心情。

所以结论是:这种行为强迫用户以某个速度来阅读信息,体验实在差劲。

所以忠告是:不要轻易使用滚动,受众会恨你的。

Posted in: 技术文档 Tagged: 滚动字幕, 科学

javascript+css判断系统是否安装有某种字体

2012年12月17日 / 5 Comments

这阵子闲来在弄一个web应用,需要一个javascript获取系统字体的功能,google百度了很久,看到的基本上都是用了activeX,代码大概是这样子:


<object id="dlgHelper" width="0px" height="0px" classid="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b"></object>

这个解决途径兼容不好。好不容易找到了一个比较强悍的解决方法,用到了flash,详细看Font detection with Javascript and Flash,虽然是成功获取了,不过感觉还是不方便,问了下高手heero兄,答曰:js没有这种接口。原本打算放弃了,学某些在线文本编辑器,只提供几种系统自带的可选字体,写成html了事,转念又想想,假如有某种办法可以检测到系统是否有安装某种字体,也能满足我的需求,事实上我只需要用到几种比较特别的字体。继续google百度后的确发现有牛人做到了,而且做法神乎其神,不信看截图:

javascript-css-font-detect

大概可以这么理解:假如系统没有某种字体,会用默认的字体替代,我们先得到默认字体显示某段字符所占据的长度,然后给这段字符定义css,把它的font-family设定为我们要检测的字体,假如长度一样,那基本证明系统没有这种字体(当然,万一两种字体虽然显示出来看上去不一样,但是它们的单个字所占宽度一致的话,这种方法似乎就不成立了),假如长度不一致,那肯定是有这种字体的。

原文的地址是:http://www.lalit.org/lab/javascript-css-font-detect/ 我英语不咋样,不知道有没弄错,你自己看看呗。

Posted in: 技术文档 Tagged: CSS, javascript

Pixlr: Web版Photoshop

2012年10月7日 / 1 Comment

今天无意中在webQQ上发现了一个Pixlr的图标,点开一看,吃了一惊,还以为腾讯又山寨了一个Photoshop,功能居然还挺全面的。玩了一会,挺有意思,遂决定百度一下,了解详情,才知道这是一个瑞典人开发的基于flash的免费在线图片处理网站。地址是http://pixlr.com/editor/

pixlr-logo

假如刚好身边的电脑上没有ps,这东西用来处理图片相比光影魔术手之类的软件还是要专业得多的,适合救急。当然,图片太大的话在当今的网速下估计就不好折腾了,而且不清楚它有没做本地存储运算之类的工作,不然每一个操作都有大量数据需要交互处理,它服务器那边压力也不敢想象——当然,这都是猜测,具体技术细节,我是没什么兴致去深究了,哪位有兴趣的尽可研究一下,知道了劳烦评论告知一下我。不管怎么说,这个网站都是一个不错的尝试,以前没接触过ps的也可以试试,毕竟对你而言,只是打开一个网站而言。

pixlr-start
pixlr-edit
Posted in: 技术文档 Tagged: photoshop
1 2 3 下一页 »

标签

ASP bug CentOS CSS Google js 中庸 主流 交易 人生 人类劣根 刷票 哲学 大学 感想 文学 文言文 期末 歌手 死狗 毅力 比赛 水浒 江南style 滚动字幕 爱因斯坦 狂想 狗屁文化 现代诗 玻璃 琐事 电脑城 男篮 神曲 科学 笑话 箴言 经济 网易 网络安全 腾讯 腾讯TT 视频广告 诗歌 霸位

近期评论

  • 壮敏 发表在《讨贼檄文》
  • 黄祺 发表在《顿悟》
  • 西班牙超模 发表在《致加西亚》
  • 西班牙超模 发表在《致加西亚》
  • 糗事百科 发表在《IE6 去除 input border》

Copyright © 2025 Tengs.

Me WordPress Theme by themehall.com