前端开发,音游狗

Java

Java 内部类的 this 问题

在一个风和日丽的下午,码农A写了一个可以获取数据的组件,代码是这样的: package net.gerhut.example.authora; public class Component { public void getData() { System.out.println("Transferring data..."); }; } 码农B负责整个系统开发,使用码农A设计的组件,认为码农A的获取数据应该有个回调函数,就给它加了一个回调函数,代码是这样的: package net.gerhut.example.authorb; import net.gerhut.example.authora.Component; public class MainSystem { private Component component; private

浏览器

新一代网页弹出窗口系统与弹出窗口拦截系统。

随着浏览器的发展,弹出窗口与弹出窗口拦截的斗争一直没有停息过。在Html5时代,各大浏览器厂商已经基本成功拦截了通过页面脚本进行弹出窗口的操作。但是广告商们并不罢休,它们从浏览器插件下手,总结出了一套新一代的反弹出窗口拦截的系统。 目前,比较流行的浏览器插件主要是Adobe的Flash和Microsoft的SilverLight。此外还有Oracle的老式JavaApplet和新一代的JavaFX。JavaFX目前发展商不成熟,所以反弹出窗口拦截的系统主要架设在了前三者上。而目前的主流浏览器对三者的弹出窗口拦截表现如何呢?我做了一个测试页面,点击可以进入测试。此页面采用了三种技术(Applet, Flash, SilverLight)分别弹出一个窗口,看看你的浏览器能够拦截几个。目前我这里看来是Applet的窗口很难被拦截,其它的窗口大多可以正确拦截。

SQL

老坑重填,SQL LIKE通配符在不同数据库系统中的差别。

首先说说遇到的问题,在Access软件中写了一个带LIKE的SQL语句,可以正常执行,但是复制粘贴到ADO操作里面就出错了。其原因是这样的:如果ADO所采用的数据库引擎是Microsoft Jet Engine,它是以Microsoft SQL Server为基础的,所以即使使用Access数据库作为数据源,也不能使用Access的SQL语法,而要采用SQL Server的语法,而它们的语法虽然很相像,但是还是有一些小区别,如LIKE语句。这是少数不能在本地测试SQL运行结果的情况之一。一个简单的解决方案是在服务器条件允许的情况下采用Access OLE DB Provider作为数据库引擎。 下面总结一下常见数据库系统LIKE子句匹配符的异同点: 匹配单个字符和零到多个字符的两种基本匹配符。 My SQL中使用_匹配单个字符,%匹配零到多个字符。 SQLite中使用_匹配单个字符,%匹配零到多个字符。 Oracle中使用_匹配单个字符,%匹配零到多个字符。 MS SQL中使用_匹配单个字符,%匹配零到多个字符。 Access中分为两种情况: Microsoft Jet引擎中使用_或?匹配单个字符,

Java

从 JDK 中记设计模式

按字母排序,尽量找哪些简单的J2SE的实现。 Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 例子:java.util.Calendar#getInstance(TimeZone) 提供一个时区参数即可从Calendar中创建需要的Calendar类的子类,而无需指定甚至知道它到底是哪个类调用的是哪个类的构造方法。 Adapter:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 例子:java.io.InputStreamReader(InputStream) 可以将任何InputStream类(如文本流,网络流,内存流)的接口(InputStream)转换成用户希望的Reader抽象类(接口)(InputStreamReader)。可以使得那些原本不兼容Stream但是接受Reader而的组件可以正常工作。 Bridge:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 例子:java.awt.Button 按钮显示成什么样子(抽象部分)根据运行的系统来决定,点击按钮的行为(实现部分)

J2ME

J2ME 中关于 Date 对象的操作

日期时间操作是J2me开发中的一个重点,然而J2me发展到现在,鉴于设备性能的局限性,其Date对象一直是Java 3版本下的简易版本,仅仅提供一个Date对象和uint类型的转换工作以及获取当前时间,其他的格式化等功能完全没有提供。翻了一下API可知,Java 3将Data对象的一些字段操作写在了java.util.Calendar包。 使用Calendar对象操作Date对象主要分为以下三步: 首先要指定时区,但是在模拟器上测试时只能支持+0时区的,实机未测试,一般使用不带参数的getInstance静态方法获取一个Calendar的实例。 其次是使用setDate实例方法传入一个已知的Date对象,如果获取的是当前时间的信息可以省略这一步,不必使用setDate(new Date())获取当前时间。在第一步getInstance之后其内部存储的Date值就是当前时间。 之后就可以使用get和set方法对Date对象的某些字段进行操作,在Calendar类中声明了许多用于作为字段名的常量,如YEAR、MONTH、DATE、DAY_OF_WEEK、HOUR_OF_DAY、HOUR、AM_PM、MINUTE、SECOND,以及MILLISECOND等。使用这些字段时要注意以下几点: MONTH的返回值范围是0-11,

Flex

《Flex4权威指南》毕

和《Flex3权威指南》一样,全书又是贯穿着FlexGrocer这个项目,但是书上的版本是以Flex4.0为SDK的,现在已经出到了Flex4.5.1。所以照着书上的写完了之后又照着Flex4.5.1的文档改成了新的版本。 最终版本是http://gerhut.net/flexgrocer/。 《Flex4权威指南》与《Flex3权威指南》相比,着重讲解了Spark组件的前后台分离功能,这也是Flex4的主要亮点。删除了许多与服务器通信的内容。同时也删除了有关动画的内容,这一块还没有看文档,估计Flex4相对Flex3没有更新动画相关内容。 Flex4是一个过渡性的版本,整个版本的目标就是将Flex的旧的古老的Halo组件逐渐的升级为Spark组件。Halo组件虽然发展很成熟,但是它没有完全做到显示与实现相分离。而Spark组件就完全的做到了显示与实现的相分离。具体的来说,在后台的ActionScript端,只需要声明该组件需要几个子组件以及几个状态;前台MXML端根据后台需求将它们安放在合理的位置并指定样式,即完成一个组件的设计工作。而且,对其内部控件的样式设计可以直接建立在其原有样式代码的基础上。换句话说,可以名正言顺的修改系统自带的组件的任何部分使其符合整体的设计要求。 Halo与Spark组件在MXML中的另一个显著区别是对State的描述更加人性化。Halo的State记录的是变更。Spark的State直接限制组件的存在和属性。 鉴于Spark组件在皮肤设计能力的较大提升,

ASP

网络爬虫习作 PG wiki 资料抽出器

http://gerhut.net/pokedata 每次调取页面都是从PGwiki上读取即时内容然后自动抽取出内容整理出来的。 应该是理论上看到同样内容下耗费流量最低值了,适合流量限制的终端使用。 核心抽取代码: function loadPage(url) { var req = Server.CreateObject("MSXML2.XMLHTTP"); req.open("GET", url, false); req.send(); if(req.readyState != 4) return "ReadyState=" + req.readyState; if(req.status != 200) return "

J2ME

EclipseME + J2ME WTK + Antenna Jar搭配J2ME环境成功

Eclipse用的3.8M1,在eclipse官网找最新版下载。 EclipseME用Eclipse的自动安装,地址是http://eclipseme.org/updates/。 J2ME WTK要下载http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javame-419430.html#sun_java_wireless_toolkit-2.5.2_01b-oth-JPR的版本,从3.0开始Sun内置了NetBeans的IDE,且不再主动兼容Eclipse。 Antenna去http://antenna.sourceforge.net/下一个最新的存到WTK的安装目录即可。 设置Eclipse,在JavaME页面下设置Antenna JAR的地址为第四步存的jar,设置WTK Root为第三步的安装目录。 设置JavaME下的Device Management,Import,目录下写安装目录然后Refresh,扫到了四个Device,

Windows

屏蔽 Flashget 的右下角广告

网上给了一个办法似乎对新版快车不起作用了。事实上开广告的时候打开任务管理器会发现有一个名字长长的都不带藏着掖着的进程叫FlashGetAdProcess.exe。所以干掉它就可以了。删掉或者改名的话快车启动失败,所以得采取一点瞒天过海的策略。 Flashget启动时会检查FlashGetAdProcess.exe这个文件及其内容。所以限制它的读取权限,甚至构造一个和它一样大的同名文件都会启动失败。所以对权限的限制还要再精细一点才能蒙混过关。 具体方法如下: 右击FlashGetAdProcess.exe选择属性 点击安全选项卡 点击高级按钮打开高级安全设置。 点击添加打开选择用户或组 在输入要选择的对象名称中输入自己的用户名 点击检查名称,此时输入的内容会变成计算机名\用户名的格式 点击确定。 在遍历文件夹/运行文件的拒绝列中打勾 一路确定下来,就搞定了。 此时Flashget可以正常运行,但是右下角的广告已经不会再出现了。 我现在用的是XP,其他版本估计大同小异,总之就是采取允许读取但是禁止运行的权限设置就搞定了。 今天的废话结束了,该睡觉了。

Flash

只有仅限于文件系统的 SWF 文件和可信的本地 SWF 文件可以访问本地资源

自从Flash8以后,为了安全考虑,本地SWF文件是不能访问其他资源的。但是有两个例外,即“仅限于文件系统的 SWF 文件”和“可信的本地 SWF 文件”,下面我们分别讨论这两个例外。 解决方案一:Flex编译参数增加-use-network=false或Flash输出选项Access local files only 确保Flex程序不能访问网络连接。即”仅限于文件系统的 SWF 文件“。此时SWF文件只能在本地运行。此方法通常适用于本机运行的一些SWF程序,如CD的autorun文件。缺点是传到网上不能运行,也不能在本地访问网上的东西。即本地网络相隔离。 解决方案二、在%windir%/System32/Macromed/Flash/FlashPlayerTrust(对单用户是Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust)

浏览器

[转]IE6在中国市场份额居高不下的原因

Windows XP的成功 WindowsXP是微软目前最成功的一款操作系统,而Windows XP在国内则更是主流,占据绝大部分的市场份额,IE6是集成在Windows XP系统中发布的,XP的份额也就带动了IE6的份额。 盗版现象严重 国内的家用电脑中的XP系统可能除了品牌机以外,99%都是盗版的,而且这些盗版中绝大部分都是类似于番茄花园,电脑公司这些Ghost安装的版本,无法通过Windows update来更新,极大的降低了安全系数的同时,也失去了更新到高版本IE浏览器的机会。 其它品牌浏览器在中国推广不理想 尽管以前火狐Firefox在Google广告中进行过推广,但因为火狐的操作相对复杂,界面也不够友好,所以并没有被广大中国网民接受,Opera、Safari本身知道的人就很少,谷歌浏览器Google Chrome也刚刚推出,虽然成绩很好,但还远没到大众化的程度。 国内页面很多设计偏向IE6 由于IE6在中国份额很高,所以很多网页设计者都只追求IE6中的效果而忽视网页设计标准,中国以前有很多的网站设计都是IE ONLY的,甚至是IE6 ONLY,网站设计的代码都非常不规范,往往只追求在IE6中的效果,在符合网页标准的浏览器中显示反倒不正常,甚至惨不忍睹。 银行和政府网站只支持IE6 用过国内网银的都知道,好像所有银行的网上银行都是对IE6支持最好,

Java

[转]JDK 7 新特性

Swing 新增JLayer类,是一个灵活而且功能强大的Swing组件修饰器,使用方法:How to Decorate Components with JLayer. Nimbus Look and Feel外观从com.sun.java.swing包移到javax.swing包中,详情:javax.swing.plaf.nimbus 更轻松的重量级和轻量级组件的混合 支持透明窗体以及非矩形窗体的图形界面,请看How to Create Translucent and Shaped Windows JColorChooser类新增HSV tab. 网络 新增URLClassLoader.close方法,请看Closing a URLClassLoader. 支持 Sockets Direct Protocol

HTML5

鼓向,看DSP看得手痒

琢磨了一下前两天google的那个电吉他的doodle原理,于是就写了这个(伪)太鼓达人10周年纪念doodle。 http://goo.gl/v1RQw Chrome能出声 FireFox4不能出声 Safari能出声 Opera11下面的搜索框显示不出来。。。 代码片段一:根据点击Canvas位置的颜色判定是咚还是咔。 var data=$("doodle").getContext("2d").getImageData(event.offsetX,event.offsetY,1,1).data; var red=data[0]; var green=data[1]; var blue=data[2]; if(