今天把公司的办公平台破了

大把大把的员工照片以及工号

随之,大把大把的员工档案,都可以轻松看到~

Ps:其实这个帅哥就是我

还搞了一个漂亮妹纸的QQ号,比我大,好桑心~

下面说说怎么搞的,估计大家最想知道这个。

首先,问题要从图片的url地址说起,在浏览自己照片的时候,发现自己的照片的url里面有自己工号,明文的!每个参数都是明文的,第一个是文件类型,第二个就是员工编号了,于是我就从新打开了个浏览器,在里面访问了一下,一下子就看到我照片了!

一阵思索,于是我开始分析员工号,想换个人的行不行,试了一个同事的,果然可以。然后,很轻松,用for循环穷举,把大把大把的人的照片都下载下来了~yes!而且,员工号都试出来了

后面就更神奇了,我随便找了一个查看员工信息按钮的url,里面还是员工编号,于是我在登陆系统的浏览器里面,把url复制出来,url中的员工号一个一个换掉,额,我都不好意思看了……yes!

此时才明白,图片的url加密是多么有用,还有对url中的参数加密是多么有用。否则,很容易根据变量命名猜测出参数含义,然后随意的更改,破坏一些安全性规则。

这个问题乍一看,是访问权限问题,就是说为什么没有权限的人,能够访问得到别人的资料呢?其实,我觉得问题的根源在于参数值的暴漏。

我是诚实的好孩子帅哥,所以第一时间把这个漏洞告诉了老大,让OA开发组去修复这个漏洞,老大还表扬了我,心里喜滋滋的~

从“教你学汉字”谈界面设计

最近两天在帮我喜欢的女生做Flash小软件——教你学汉字,拿过来说说。

编辑工具是用的Adobe Flash CS4做的,完全是体力活,只做了一个“大”字的。内容上没什么好说的,主要感觉自己对界面的把握还是有那么些想法的,主要说下界面。

设计界面我有这么几个步骤:

1.确定风格

大概就是要确定一种主色,一般就分为红色调和蓝色调。红色是暖色,用于团日主题,蓝色是冷色,一般用于科技、教育什么的主题。

2.选择3中比较协调的颜色

一般界面颜色不超过3中,否则会显得乱。而且这三种颜色一定要搭配起来协调,一般选色相和亮度都比较近的颜色。

3.排版

排版一定要有一个占60%以上的部分,这样显得有主次感。而且最好在一个页面中,只保持一种切法,比如全横向切,或者全纵向切。

4.填充内容

最后再把元素、组件、模块等内容填充进去。注意,文字一定要看得清楚,必要时可以加个光圈一样的东西增强对比度。

如此一来,一个简单风格的界面就出来了。

应用截图:

应用地址:教你学汉字

Ps:如果能直接嵌入进来就好了~~

原来google可以这样搜 site:

今天在看黑客教程的书的时候,在讲侦查工具的时候说到了google,才发现谷歌可以这么搜:

"site:www.xxxWebSite.domain xxxContent"

搜索的内容,将全部来自www.xxxWebSite.domain

感觉很爽,blog一下。

下面是关于更多语法的介绍,在百度搜索“谷歌高级搜索语法”可以看到很多介绍,会发现原来这就是seo啊!

更多命令:http://www.ssoooo.com/google-command.html

struts2 分页例子

为什么写这个?

1.由于项目需要,今天用struts2实现了分页,感觉效果不错,有这个能力。

2.自己在网上查过相关资料,都比较陈旧,没有满意的效果。

故特花时间整理了一下,专门写了一个示例工程,分享给大家~

(又当好人了,谁给发张好人卡呀~)

最后效果是这样的:

源码地址:

http://download.csdn.net/detail/bicaipiaohainanzhong/4374006

精髓所在:

说白了分页的重点在技术实现上,分页的逻辑很简单:页面内容 = (当前页码 + 1)^ 页幅,其次就是如何用struts2用实现了。

1.前后台变量的交互,struts2配置好默认拦截器栈后,会帮你完成变量的绑定,后台的变量,可以在前台用<s:property />标签直接表示(,还有其他很多标签也能绑定变量

2.页码current page,一定要存在session中。因为分页其实就是将结果缩小了,然后分多次请求获取,每次请求都是独立的,内存变量都会重新创建和回收,之后页面是连续的,所以要存在session里。因为会话是浏览器保持连接期间都有效,所以在跳转到不相关页面的时候,有必要需要手动删除,不然第二次回访的时候可能就不是第一页,还是刚才的那页。如果还有另外的模块也用到分页,还要注意session中的键值不要命重复了,否则会蹿。

Applet例子

扯淡时间:

现在是2012年6月12日,Applet这个词语似乎离我们渐渐远去,今天,我又把它带回来,是因为,它有着独一无二的魅力。

为什么起这个标题?

完全是因为SEO,这种标题可能更容易被人搜索到,至少,在我完全不会的时候,就会搜这么样子的关键词。如果按照我以前的个性,我绝对会起一个“Applet初探门径”之类的标题。

为什么Bloging?

Bloging是一种良好的习惯,有助于自己深入理解一个知识,Bloging的同时又是梳理的过程。再者,可能很久以后,回头看看,会很有意思。如果,同时又能为自己积攒点RP,这件事就太爽了。也有这样的可能,不过几率很小,就是你的某一个观点不正确,好心的路人(我经常是好心的路人)会帮你指出,和你讨论,这样子,又可以帮助自己进步,但这个几率实在太小了(CSDN从来没有过),但是我还是期待我一样的人的出现,让我们成为朋友吧~

Show Time(一下观点基本属于闭门原创,百度和谷歌还有官网能够出现的部分尽量不出现在下面的内容里)

Applet是一个客户端技术,一般嵌入在html页面中,就是一个Applet标签,或者是Object标签。运行原理(这个很重要)是这样的,在执行前,有个很长的加载过程,Applet的所有Class都从服务端(或者服务器,下面我就叫服务端,习惯了)通过Socket方式传送过来,加载到“本地的虚拟机”中,然后利用本地计算能力执行该应用程序。

所以,它完全是个客户端技术,相当于本地运行的一个Java程序,只不过,有一个部分的Class要从服务端通过网络加载到本地的ClassLoader(类加载器,神器)里,仅此而已。

为什么想到使用Applet?

假设项目是B/S架构(随着互联网的发展,这种架构将越来越具有优越性)的,你想提供给浏览器的用户一个文件上传的功能,上传的路径是固定的,你需要做的就是选择文件,点击确定,开始上传,上传完成后,显示已完成。

然后我们开始做技术选择,加入首先想到的是Servlet/JSP技术,比如用struts或者smartupload框架,然后页面就用html的标签,写出来可能是这样的:

<body>

<input type="file"/>

<form action="doUpload">

<input type="submit" value="上传"/>

</form>

</body>

http://www.roseindia.net/struts/struts2/struts-2-file-upload.shtml (参照这个)

但是,这种方式进度条很难实现,而且大小可能还受限制。因为它是通过http请求方式来更新界面的,必须实现局部异步更新(Ajax),才能实现进度条,而且进度粒子太粗,不好控制。

其次,加入我们想到FlexFTP框架,基于Flex的FTP客户端,介绍见这里,缺点说了一堆。什么大小限制啦,传输不稳定啦,就一个好处,好看,好看不好使,没用。

http://code.google.com/p/fl-ftp/

(PS:另外,在网上找到一个Flex实现的独立的FTPClient,感觉非常强大,但不是需求想要的,不过因为太强大了,所以贴出来,下面是网址。

http://maliboo.pl/projects/FlexFTP/

我试着用Flex sdk4.51改了一下,运行良好~

)

最后,我们决定用Applet来实现,使用apache.commons.net的ftp框架。因为身为一个搞Java的人,能用Java做,就用Java做,省不少熟悉语言的功夫,而且,小巧精悍,非常满足需求。服务端假设一个apache ftpserver,然后调用ftpclient的api完成工作。(这里不讨论apache ftpserver的部署问题,另写一篇另作讨论)

操作步骤:

1.Java Swing界面,打开MyEclipse的可视化工具,新建一个Applet,然后拖吧拖吧弄一个这样的界面:

然后,selec file按钮点进去,添加选择文件事件;Start按钮点进去,添加开始上传的动作;进度条就用CopyStreamListener的bytesTransferred函数来操作。就像在本地编码一样,方便自如。

2.调用ftp api,编写传输代码:

ftp.storeFile("storedFilename", inputStream);

就这么一行,完事。(这句话我用了一个线程哦,小技巧)

3.滚动条实现:

public void bytesTransferred(long totalBytesTransferred,

int bytesTransferred, long streamSize) {

   probar.setValue((int) totalBytesTransferred);

   probar.repaint();

}

完事。

运行效果:

Applet如何部署

简单说就是一个标签,但是你可能不知道目录的格式,细节是最花时间的。下面这个链接对目录格式有个相当明确的勾勒,感谢他给予我的帮助。

http://blog.csdn.net/chenxiandiao316/article/details/7009643

Applet安全策略话题

你要假设到网页中,让浏览器客户可以用,就必须面对这个问题,这个不算是问题,就是多这么一步麻烦。为你的Applet程序jar包,做一个签名。详细步骤,参加下面这个链接,讲的非常好,鉴于讲的这么好,我就不重复了,也非常感谢他给于我的帮助。

http://blog.csdn.net/mzyp/article/details/5217081

Applet示例源码(这个最靠谱)

http://download.csdn.net/detail/bicaipiaohainanzhong/4369663

Flex新手开发指南

每个人都会经历这个阶段,也都经历过这个阶段。入门应该做到,认知全面而非具体。

在这不得不说一个无关技术,无关政治,无关国籍的问题,那就是掌握英语文档阅读能力。我个人英语不好,就词汇量还行,“好说英,不求正解”,我说英语从来不关心语法,所以考研的英语成绩也从来不关心我的情绪。

学了一年了,回头再想整理这些年的学习资料,第一个能想到的就是把我这一路来收藏的,认为好的学习资料分享给大家

我是从这里开始的

Flex Developer Center | Adobe Developer Connection

我经常在里看例子

中文FLEX例子

Flex Examples

Flashache

Flex技术文章

 

Flex开发入门s

Flex 开发入门@IBM的门

Building a Flex application@Adobe的门

源点

第一天创建“Flex之美”博客,创建的原因有2

1.我能。很幸运的本科毕业后,继续从事Flex开发,竟我大学时期未完的事业,在工作中,积累一些Flex开发经验。

2.我想。喜欢Flex,想学好它,最好的方式就是写博客,写的过程中会发现自己知识的盲点,与不足。记录Flex学习之路,回头看看,可能是一件很有意思的事情。希望能帮助到更多的人,更好更快的学会Flex开发。

说起我和Flex的渊源,我觉得可以从我小时候喜欢画画说起。

小时候的我,不喜欢和伙伴们打打闹闹,因为总打不赢,所以在打闹方面就特别没有成就感,于是我养成了喜欢一个人静静的在屋子里呆着的习惯,这种环境,特别容易促成我和画画这门艺术的碰撞,当有一天我发现,如果我会画画,那么我想要什么,就能有什么,这件事是实在是太爽了!从此“染指”画画,从此一发不可收拾(除了经常被我爸我妈收拾,呵呵)

熟能生巧,在大量语文数学课的练习下(上课不专心听讲),我的画画水平不知不觉长进了很多,4年级的一天,突然发现同学们的画的画好难看,水平还是我1年级的水平,我才意识到,自己在绘画方面已经有特长了,之后就一直被当做“班里面画画好的”这种学生看待了,这种成就感,真是太美妙了。

知道吗,画画最美妙事情就是,把你的脑子里梦想,变成可以看到的现实,想要做城堡,我就画座城堡,我就是造物主,我就是上帝~

再接下来就是大学一年级的一次Flash大赛,那时候的我不会photoshop,不会flash,打开电脑,只会玩游戏,但是,我因为我的画画特长,所以参加了这次大赛,担当美工,负责把每个场景里面的主人公画出来。在纸上画完后,拿去扫描,然后用ps处理,最后再用flash做成元件,连续5天通宵,我学会了ps,flash的处理部分,我没有参与,但是,那时我已经感受到,这个东西,将很了不起,决定master it!

大学二年级,我再次参加了Flash大赛,这次,我只有我一个人,我的“格斗猜拳”游戏获得了优秀奖。在作品的角度看,它很普通,但是在我看来,它标志着我的Flash已经入门了。算了一下,总共130行左右的代码,三个音效元件,再加上我绘制的“八神”的卡通形象,再加上背景音乐,学习Flash该掌握的知识,都应用上了。

此后,我因为Flash能力,参与过学院老师的两个项目,说来也简单,一个是应用Flash做登录界面,另一个是应用Flash做数值的动态跑马显示,都涉及一些as2.0的脚本使用。不过在当时也着实费了一番周折,搞过好几个通宵。做Flash,什么最费脑子?不是技术,而是创意!最后,我山寨了windows起机画面,再加上主界面云彩飘动的效果,logo像太阳一样升起的效果,得到了老师的大力好评,也因此挣了几百块钱,哈哈,真的很开心。ps 想知道那logo是啥样的吗?那logo就是中石油的。

11年,毕业了,怀揣着万分激动的心情来到了鹏城,在一家金融自助设备软件公司安心工作着(俺们是做ATM软件的),现在已经一年了,一直从事着Flex开发。大三的时候已经知道Flex这东西了,自己在自己电脑上安过,写过Hello world,当时感觉Flex这东西水挺深的,就没有再自学了。如今,好像冥冥之中,必有天意,让我重新拾起那段搁浅的缘分一般,于是我便奋不顾身~

语言运行效率对比

For 循环 100 000 000

c++  216ms

actionscript    362ms

vbs  7765ms


创建对象1000000

c++  216ms

actionscript    622ms

vbs    6375ms

脚本语言之我见

最近因项目需要,特对脚本语言稍稍进行了研究。

首先还是从需求说起,为什么要使用脚本?脚本不快,又需要编译,也有自己的语法,写入要一行一行敲代码,还没有功能强大的IDE帮我们生成模板或者智能感知,这么多缺点为什么要有脚本语言这个东西呢?

其实,脚本,正是为了简化工作而产生的,这是它最重要的作用,没有之一。

1.为什么脚本能简化工作?

因为它可直接调用程序,被调用的程序可以叫组件,可以叫模块,也可以叫其他什么的,总之,肯定是封装了一定功能的粒子(ps:也可以是一个函数)。最典型的脚本就是windows 的bat和linux的shell,比如:mkdir,就能完成创建一个文件的工作,如果用高级程序语言(用java举例)可能是这样的:

File file = new File("c:/path/myFile.txt");

if (!file.exist())

   file.createNewFile();

用1行,完成了3行工作,效率提高300%,更重要的是不用编译,直接就可以运行,效率又能提高100%。

2.是不是说不需要编译,直接执行·的语言就是脚本了?

然而脚本语言又,没,那么简单。脚本语言还有比如:javascript,vbscript,python,actionscript,等等。其中javascript是直接解释执行的(由浏览器js脚本引擎解释执行);vbscript也是直接解释执行的(由windows vbs引擎);但是python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由它的虚拟机来解释执行;actionscript也是需要编译成swf格式文件,然后再由flash运行时(eg. adobe flash player, air)来解释执行。所以,2.这种说法不成立。

最后,说要一下脚本语言之我见:

“我个人觉得,脚本最大的缺点是运行效率地下,最大的优点是简单,更具体的说是不容易出错,不像c++程序,太容易就崩溃了,通常是内存泄露问题,根本没法查。所以,在为项目选择一种开发语言的时候,如果逻辑复杂,对运行效率不是很敏感的时候,最好选用脚本语言,而不是高级语言。”

下面提供一个附件,是c++,actionscript,vbs的运行效率比较的数据。

附件:http://www.cachetian.com/post/2012-06-10/40027362882