Tengs

Design & Develop

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

技术文档

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

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文件

分类: 技术文档 标签: ppt

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

2017年4月26日 / Leave a Comment

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

在线神器的地址点这里

 

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

 

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

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

 

或者是这样的问题:

 

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

 

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

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

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


分类: 技术文档 标签: 图片转文本

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

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进行刷票。


分类: 技术文档 标签: 刷票

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

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插件(好吧,又是插件),设定一定时间间隔自动刷新页面即可。

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

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


分类: 技术文档 标签: 刷票

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

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

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

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

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

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

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

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

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


分类: 技术文档 标签: 网络安全

批处理实现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,关掉你的电脑的,想想还是算了,万一你有文档没保存,我不是成了千古罪人。。


分类: 技术文档 标签: osql, 批处理

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

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

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

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

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

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

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

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


分类: 技术文档 标签: 滚动字幕, 科学

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/ 我英语不咋样,不知道有没弄错,你自己看看呗。


分类: 技术文档 标签: 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

分类: 技术文档 标签: photoshop

腾讯朋友网“小叶猜”?!

2012年9月22日 / 2 Comments

今天无聊,登陆了腾讯朋友网,无意间在角落里发现了这个东西:

20120922135319

好奇心起,原本以为八成是营销的噱头,仔细一看,下面一行小字注明曰“本功能来自于二度人脉实验室”,又觉得说不定还真不是噱头,因为我学士论文的课题是云计算下的社交关系搜索,当时也泛泛地了解过腾讯二度人脉,知道确有此事,搞不好还真是研究有所进展,弄出了这么一个东西。

虽然这里猜我在中国移动工作过看上去有点无厘头,但仔细想想,或许是我填写的个人资料中有涉及我是“通信工程”专业,又或许是我那些去了移动的同学(当然,在腾讯的数据库里我们是好友关系,而且肯定有相关记录我们是同一个学校同一个专业的)更新了自己的职业和公司,腾讯将类似信息整合,和我玩起了看上去很神秘的游戏,这大抵就是所谓“小叶猜”了。

抱着玩玩的心态,点了一下叉,又出现了如下问题:

xiaoyecai2

 看到这里更觉搞笑了,可以确定“广州市汇源通信建设监理有限公司”是我QQ上好友所在的公司,至于其他乱七八糟的,估计也是一些不是很熟的QQ好友的单位吧,选了最后一个,继续:

xiaoyecai3

好吧,看到这里我才知道真的是营销的噱头,不玩了。


分类: 技术文档 标签: 小叶猜, 腾讯
1 2 3 下一页 »

标签

315 360 ASP ASP.NET bug CentOS CSS CSS 3.0 CSS HACK Google Google图片搜索 Hadoop host文件 HTML5 ie6 IPV6 javascript JDK js osql photoshop php phpMyAdmin 中庸 主流 交易 人生 人类劣根 刷票 哲学 大学 感想 文学 文言文 期末 狂想 现代诗 琐事 科学 箴言 经济 网络安全 视频广告 诗歌 霸位

近期评论

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

Copyright © 2023 Tengs.

WordPress Theme by themehall.com

粤ICP备12053888号