個人檔案贫瘠的沙壤地相片部落格清單更多 工具 說明

部落格


9月2日

代码高亮插件测试

package turnip.gray.test;

public class HelloWorld{
	private static final String HELLO;
	private final String WORLD;

	static{
		HELLO = "Hello";
	}

	public HelloWorld(){
		WORLD = "World";
	}

	public String toString(){
		return HelloWorld.HELLO + WORLD;
	}

	public static void main(String[] args){
		HelloWorld test = new HelloWorld();
		System.out.println(test);
	}
}

 

经过测试,发现:

  • WP-CodeBox 插件很华丽,但是兼容性有待商榷——在iBlog主题下,用Chrome浏览表现正常;用IE浏览,代码折叠会出现显示问题。在Fusion主题下,用任何浏览器浏览均正常,但是Fusion主题的“自动调节字体大小”功能以及“回到页面顶端”功能在此插件的影响下,均不能正常工作。
  • WP-Syntax插件虽然功能简单,但是在任何浏览器下,任何主题中均能正常工作。

因此:抛弃CodeBox,使用Syntax——HTTP://turnip-gray.rr.nu的代码高亮工具。

8月10日

Google果然是王道

CB上看见一篇文章:摒弃成见 三大搜索引擎黑箱测试。作者的意思好象是要抨击Google Fans的盲目的。

里面给了一个网址:http://blindsearch.fejus.com/

用了一些常用的关键词测试之后,发现果然Google才是王道。

1.新网址索引:

这个测试用了我BLOG名字作为关键词:

结果如图

可以看见Google和Bing都收录了这个新建已经半个月+,但是访问量、外联都不多的网站。当然这是有原因的,Google是我提交了网站地图,而Bing大概是因为我在我的LiveSpaces上添加了WP的网页活动吧。相对于Bing的收录方式来说,还是Google的专业一些:至少Bing不能再一个账户下收录多个WP网页活动。这种约束会给提交带来很多麻烦。

2.专业关键词测试:

硬件

结果不用说了吧,显然是Google的更靠谱

生物

这个结果也很明显——yahoo和Bing的结果都只针对了一个分词

化学

这个就更直接了,Bing和yahoo的搜索结果完全不知道在说什么

编程

乍看之下仿佛结果差不多,但是如果仔细看的话,还是有区别的只有Google兼顾了3个关键词(请自动忽略yahoo),而Bing的结果从第三条开始,已经基本和Java没什么关系了。

3.体验:

疑似拼写错误:

用Google和Bing(请忽略yahoo)查“tomact”(疑似Tomcat拼写错误)。在Bing中第一页的结果直接是Tomcat,而Google会有提示。相对来说,Google的体验感觉更好,浏览器主观的判断某个关键字是错误的拼写也许是和搜索者的意愿相悖的。

页面流量:

把刚才的页面保存为MHT,然后来比较大小,显然Bing的比较大,首页(注:测试中所提到的所有Google专指Google.com,而非.cn)也是如此。虽然每个页面差别只在10k以内,但是对于此类访问量非常大的网站来说,更小的页面流量代表着更高的效率、更快的响应、更绿色。。。。。。

 

不说了,比较以后更坚定的认为:果然Google才是王道

PS:貌似……新blog的ip被屏了。

7月24日

换个地方,重新开张

前一阵申请了个1987M的空间,挺好用的,结果没想到不到俩月,服务供应商就让服务器运营商封了- -!

今天,在这里看到了这个(顺带一提,这个站介绍的东西不错。另一个问题:虽然是介绍免费的网站,不过这类网站的空间和域名应该都不是免费的- -!)。于是决定再试一次。

按照上面说的,注册了,本来想用原来那个co.cc的域名的,不过一看才发现,原来co.cc域名只免费一年,这个空间绑了米还不能换……只好又申请了个rr.nu的(没写过期时间,不过免费的东西,说不准什么时候就过期了)。

PS:然后发现,rr.nu好像不能改DNS只能改A记录(也可能我没找到)

摆弄了一下午,发现空间没有原来的好用:

  1. WP没有新建文件权限,新建文件只能用FTP,就算chmon改成777也不能新建。直接导致只能手动配置config文件。
  2. 不支持固定网址,那个.hXXXXX的文件貌似没起作用。据说会影响SEO质量。
  3. 数据库只有一个,名字是固定的。

不过也有优点:

  1. 据说服务供应商已经5年了,所以应该比较有保障,就算停服应该也不会太突然
  2. 虽然空间小了1G(其实那么大也没用,有skydrive呢),但是流量很大,每天5G(之前的一月才2G)
  3. 数据库空间无限
  4. ftp、网站访问速度很快

归置了一下午,好歹就他了,发篇帖子,算是开张了。

最后,秀一下网址好了:Http://turnip-gray.rr.nu

7月9日

习作:Http proxy

运行以后,会在808口开一个监听,把代理设成这个,就行了(Linux下貌似1024以内的端口需要特别权限)。

访问的时候,会在命令行输出内容。

暂时支持Http协议(chunked式、Content-Length式、Connection:close式),不支持Https(CONNECT方式连接)

转发方式上,使用了内存暂存方式,所以如果文件过大,会出问题(在线视频也无法播放)

没传源码,有兴趣的反编译好了。

6月2日

有人看了~~~

今天去新空间看了一眼,CMYK那篇文章,竟然有人留言了……激动~~

从这里面还发现一个现象:第一部分和第二部分都没有留言,留言全在第三部分。

第三部分有实实在在的代码,前面全是概念和经验……

沙发这样写道:谢谢你的代码

。。。。。。。。。。。- -!

大家……还真是实际呢

 

另一件事,忘了在哪个blog上看到的,是谈广告收益的。据说他统计以后,从google搜索过来的人,点击广告几乎可以忽略;百度的多一点;最多的是114这类搜索过来的人。

如果上面说的是真的的话……那新BLOG的定位大概完败了吧……就算加了广告上去,大概那些受众也不会去点的吧……

纠结ing~~~~

5月21日

又FC了一把

今天,因为某些原因,又心血来潮的FC了一把。还有14天(现在的时间来说,应该还有13天了)就FC11了。
本来想下个FC10的LiveCD,不过不知道为什么官网的镜像下载点的速度太慢了。找其他的下载,竟然都是3G多的DVD.ISO,于是作罢。

在硬盘里找了一下,有FC6、7、8……那就8吧……
装了3个多小时- -!(很多东西都要下载)

装上以后一看……JDK竟然是1.7的,而且官网还没有1.6u13的安装包- -!彻底无语了,正在sun上下JDK,闲的没事顺便发个贴。

PS:我也能享受系统不用运行杀软的顺畅体验了~~~
5月12日

准备搬家

新申请了个空间,PHP的、能绑米、支持5个子域名;2G、能FTP上传、5个用户、流量不知道;MySQL数据库、5个用户、5个数据库、大小不知道;支持mail服务、5个邮箱;能放blog、能放论坛,貌似没广告。

然后放了个WordPress上去,准备搬家了。

其实前几天还申请过一个,整了一晚上,早起6点才睡……晚上7点起的,起来上网一看……连账号都没了- -!

不知道这个新的怎么样……先看看吧,先整一个月再说:给WP换换主题,设置设置,添点儿不疼不痒的帖子。看看效果,如果稳定的话,就去那混。

呃……地址忘了说,HTTP://Turnip-Gray.Co.cc

4月5日

满足

《死神的精度》里面(虽然片子很无聊,很做作)有句话:复仇不是为了死者,而是为了活着的人自我满足

又想起了《在世界中心呼唤爱》里面那个老爷爷说的话:天堂么……是活下来的人发明的东西:自己爱的人就在那,总有一天我们会重逢——就为了这么安慰自己。

然后想到了清明、海葬、遗体捐献~~~

2月2日

日剧、韩剧、国产电视剧

宅在家里,so没事干就看看电视剧吧……

看多了(其实很不算很多)发现,这东西还真能反映点国家文化

先说日剧,打小一出生就看,《绿水英雄》、《排球女将》。。。。后来电视台从渴望、编辑部的故事开始……保护主义了……日剧几乎灭绝了……再看的时候,是高中从某人那借来的vcd,片子当然是《东爱》;说来也巧,那阵电视台还正好又放了几部日剧《在爱的名义下》、《美丽人生》,不过印象最深的还是深田恭子的成名作《神啊!请多给我一点时间》(现在还没还某人,在抽屉里放着),从她开始,就一发不可收拾的喜欢上日剧了。

再后来……就上了大学、就有了宽带、就知道了p2p……看的日剧也开始杂了……然后,发现……他们的文化,好像很喜欢灌输你一些道理……几乎所有的日剧都会有一两句有深度的话;不管是搞笑的、还是正经一些的,大部分日剧(包括很多漫画)在教你怎么去看待、了解这个世界,比如oh !my Girl、比如神探伽利略(有点科普的感觉)。

日剧里面的经典模式就是领悟和感动——某人偶然的听到别人的一句话,然后突然顿悟,接着眼前像放电影一样的出现很多画面……没准是谜题解开、也或者是重新找回目标定位人生,这时候没准还会煽情的来点背景音乐。

再说国产电视剧,这里看得比较少,可能有瞎说的成分。就当个乐呵听吧。从渴望开始、到后来的一年又一年、家有九凤、亮剑、采桑子……至少有一点是共通的。都是讲故事,事情讲完了就完了……或者捎带手赞颂一点什么精神,或者缅怀一下过去的岁月……很抒情、很文艺……不过有点远,有点高……

这还是好的,海岩的那些、张大民、马文(我还是很喜欢马文的)、新结婚时代、后妈……把事情摆在那了,告诉你有这么个事,然后……完了- -!,其实不用他说,我也知道有这种事,就是没他们那种能耐,能讲的那么绘声绘色罢了……看之前知道,看之后知道的更具体了……可是……该怎么办,遇到了要怎么面对……还是P都没说……

国产电视剧的模式是无奈——某人或抽着烟,或愁眉不展然后深深地一声叹息,接着画面慢慢暗下去,忧郁的背景音乐起……甚至有的就敢这样就全剧终的。。。。。

e.g.采桑子里面那个幽幽的旁白,明显的就是一种对生活的妥协,而不是理解或者面对……最多只能算是认识吧……

再说韩剧……这个看的就更少了,因为不喜欢……最多是我妈看的时候顺便看两眼……过去读过菊花香,印象中还有那时候流行的另一本韩国小说(记不住名子了,不知道是不是韩国人写的,不过背景确实是韩国)……当时就觉得……没味儿……像流水账一样……不够美……

韩剧看过黄手帕、人鱼、澡堂等等有限的几部吧……也因为太长了……看完以后的感觉就是……很生活- -!除了琐碎、就没别的了……很多都是尽情的赚眼泪而已……甚至连顺便缅怀和赞颂都没有……

看过的几部韩剧的招牌模式就是堕落——要么小酒馆喝的烂醉,要么就成天以泪洗面- -!不能觉悟的话……至少拿出喝酒和哭的时间想想怎么办,最不济了叹息一把也是好的吧……

说完了……

1月26日

K与Κ的差别……

KK、KΚ、ΚK、ΚΚ……这四个字母组合一样么??至少在很多字体下感觉好像一样……不过……不好意思……我们可爱的PC会认为他是4个不同的组合……不信?

不信可以用这个试试:

public class Equals{
    public static void main(String[] args){
        System.out.println(args[0].equals(args[1]));
    }
}

run.cmd

java Equals KK KΚ
java Equals KΚ ΚK
java Equals ΚK ΚΚ

当然,除了k还有T,除了T还有O……

这贴没别的意思……就是想说……允许U码做昵称或者ID太危险了……

建议:如果论坛允许U码做ID的话……尽量用中文Id……用英文的话……尽量让ID短一些……避免使用能在俄文、拉丁文、汉语拼音里可能找到类似字形的文字……

1月20日

虚惊一场

今天大学的哥们跟我说,明天让我陪他去趟村里……

正好dvd-r盘也不够了……准备一块买一桶回来。剩下的几张,就在今天造了好了……

整理了一下硬盘,发现很多日剧还没看,先刻了再说吧……放盘、刻录……

呃……什么DMA CRC效验错误……CRC效验我知道是什么,DMA也了解……放到一块……就不懂了……

没在意,不就飞长盘么……再来……当连着飞了我4张盘的时候……开始觉得不对了……

没辙,google吧……一搜还真有一大堆……还都跟Nero有关……

有的说是IDE驱动的问题、有的迷信是Nero的序列号问题、有的干脆就说节哀顺变吧……

心里很凉,以为又要花钱买光驱了- -!

一下午没干别的,光折腾他了,先照着教程重新装了驱动,然后又忍痛取消了前几天刚刚打开的硬盘静音、节能功能,还是CRC- -!

没辙关机拆吧……卸了根内存(两根时钟频率不一样,一个2.5一个3- -!)……还不行

索性把硬盘、光驱全拿出来了……换了两根排线……

怀着忐忑的心情再试……好了……设上15分钟硬盘停转……没问题……

加回降噪和节能选项……没问题……

说啥……活着就得折腾~~~~~

1月19日

西红柿炒鸡蛋

炒咸了……

多就了点米饭……还是咸……想再多盛点,不过没了……

找来找去,也没找到什么合适的东西……

无奈只能加点咸菜就和就和……让那碗饭淡点- -!

12月31日

S60V3 FP1山寨版开源主题

呃……其实就是自己拿着Carbide.ui(又是万恶的Eclipse……)瞎弄,弄出来的一个破玩意。

因为很喜欢Stealth by PiZero.sis,但是我装的软件有很多没被Stealth by PiZero.sis收录,so……还会出来可恶的图标……
而且印象中貌似Stealth by PiZero.sis输入密码的时候有点费眼睛- -!
上网查了一下,貌似已经编译好的改起来很困难……
于是只能照葫芦画瓢……自己瞎鼓捣一个

按照这贴“〓〓塞班☆S60主题资源区☆主题制作教程素材以及FAQ 〓〓 ”上面说的,添加进去自己用的程序的uid(去找一个叫appshelldata.xml的文件,那里面有UID,不懂那个文件的看这里;还不懂的话,问那个LZ~~~~~他是专家~~~~*^_^*)……然后编译……
目前貌似只有realplayer不太配合,依然顽固的出现图标。
其他的程序貌似都很乖的把图标收回去了。

其实这种见不得人的东西,应该刨坑埋了……不过……既然是自己做的,就跟自己身上掉下来肉一样……还是决定拿出来现现眼- -!
如果有人装上发现有图标还出来捣乱(real就WS吧……那玩意儿忒不老实……),可以用上面那帖子里的方法,自己修改源、添加进去相应的UID……然后重新编译

Screenshot0038Screenshot0040

Screenshot0042Screenshot0043Screenshot0044

SRC+SIS:

9月23日

灵异现象

系统里装了两个杀软:rising&&ESS。都是套装。

系统里装了两个邮件客户端:MS OutLook 2007&&Windows Live Mail

live mail总是连不上pop3协议的,html页面的那种(hotmail、live那种)没有问题。同样的服务器,outlook就所有都能连上。如果关掉rising或者卸载ESS的话(关掉ESS所有监控或者RFW都没用),live mail也可以连上。

到这里都没什么奇怪的……只是一般软件的冲突而已。

结果今天发生了一个诡异的现象:rising和ESS都没关的情况下,live mail连上了!!!而且还收到了新邮件!!!!特兴奋,还以为最近杀软更新了什么组件之类的,不冲突了……结果……重启之后,又连不上了……- -!

茫然了,用outlook试了一下,outlook还是没问题。没死心又用live mail试了一下……竟然连上了!~~~- -!

再重启,还和这次一样:重启后如果用过outlook的话,live mail就能连上。没用过outlook……live mail绝对连不上……

呃……让我想起了罗家英老师的“太阳能手电筒”……

9月21日

疯狂的Chrome

穷折腾,看见个新鲜的就想玩玩儿人家……- -!

下了个Chrome的开发版,曾经下过一个公测版的,因为点错了防火墙把安装程序的联网请求拒绝了,索性说呆会再装吧。结果可了不得了!安装程序在c盘的某个位置弄了个副本,隔几分钟就提示要访问网络……给我烦的!合着只要是点过安装程序了,就得装,不装就不行,我后台偷偷的尝试联网- -!开发版的好处就是zip包,解压缩就行了,缺点就是有可能不稳定(之前下的某个版本,开163就cpu100%- -!)。

解压、双击exe……开了,大体看了一下设置,没啥可设的(要求不能太高,要是跟MT比的话,那当然就没得玩了)- -!速度上感觉不错,挺流畅。这次这版,也没出100%cpu的问题。

玩了会……感觉不对,貌似硬盘在有规律的响(迈拓就这点好,只要你写硬盘,我在机箱两米以内就甭想不让我知道,不知道这是不是也是一种安全措施- -!)一看,硬盘灯狂闪(让我想起了MT某个内测版,Chrome比MT更厉害)

开FileMon……发现是在不断读写一个叫“安全浏览器”的文件。关了Chrome,开BS……竟然……都没有她闪的厉害……- -!

8月3日

再次瞎想

今天在CB上看见个叫YOYOPlayer的东西……看得我嗷嗷血脉喷张……

用了下,发现托盘弹出菜单后……播放会停止……

加了群跟作者聊了下&自己实验了下……发现是TrayIcon的问题:

那个东西是AWT的(我痛恨xWT!!还是Swing优美)……很久以前就听说awt和swing不能共存……不过上面举的例子一般都是GUI界面被覆盖之类的。没想到消息循环也会出问题……

于是乎莽撞的尝试替代方法:让他“弹出”JPopMenu……结果……又可耻的失败了(具体细节就不说了,太可耻了。完全没有模拟出效果来)……

不想放弃……继续瞎想……印象中有两个东西(JWindow和JDialog的Undecorated方式)都没有状态栏图标&&没有边框……所以……能不能用这个东西模拟呢??模拟后……会不会同样会定住呢??

还是做做看吧……

7月6日

Java基于Socket的单进程实现

有一阵很羡慕Win下的某些本地程序:因为他们可以实现单进程运行——不是设计模式里面说的单例,那个Java也可以,而由于Java程序每次启动都会启动新的虚拟机……所以单例和单进程是不同的概念。

后来接触到了嵌入式DB……发现它可以自然的实现单例(机制貌似是文件锁定)……不过还是有些不足:他只能阻止第二个进程运行。但是不能向第一个进程传递消息(Win本地程序可以在启动第二个程序时,让第一个程序做最大化之类的动作)……

网上查了一下,还有另一种方法:基于Socket的单进程实现。优点是可以传递消息给已经运行的进程。缺点是需要网络连接,对网络设置有依赖(比如防火墙设置、端口占用情况等)

原理大概是这样:先向某个端口发消息,如果返回说已经有程序运行了。就执行某段代码,然后退出;如果没有返回就启动某端口的监听,等待消息。然后进入程序正常启动阶段。一旦有消息传过来,并且确认是同一个程序的另一个实例传过来的。就通知那个实例,已经有实例在运行了。然后运行另一段程序。

具体的实现代码如下:

/*SingleCases.java——单进程接口*/

package turnip.gray.singlecases;

public interface SingleCases {
    //运行程序
    void run();
    //指定程序标识:程序运行前首先会检查此标识。如果当前运行程序的标识,与某个已运行程序的标识相同。则激活已运行监听,并向已运行程序发送消息,使其激活其他程序启动监听
    void setAppe(Class<?> appe);
    //设置已有实例运行时的动作监听
    void setWhenAppIsRunning(WhenAppIsRunning whenAppIsRunning);
    //设置有其他实例尝试运行时的动作监听
    void setWhenOtherAppIsRunning(WhenOtherAppIsRunning whenOtherAppIsRunning);
}

/*SocketSingleCases.java——基于端口的单进程的实现*/

package turnip.gray.singlecases;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

public class SocketSingleCases implements SingleCases {

    private int port;
    private WhenAppIsRunning whenAppIsRunning;
    private WhenOtherAppIsRunning whenOtherAppIsRunning;
    private Class<?> appe;
    private ServerSocket ListenServerSocket;
    private ServerSocket requestServerSocket;
    public SocketSingleCases(){
        port=2048;
    }

    public WhenAppIsRunning getWhenAppIsRunning() {
        return whenAppIsRunning;
    }

    public void setWhenAppIsRunning(WhenAppIsRunning whenAppIsRunning) {
        this.whenAppIsRunning = whenAppIsRunning;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        if (isRunning()) {
            whenAppIsRunning.doThis();
        } else {
            try {
                ListenServerSocket = new ServerSocket(port);
                requestServerSocket = new ServerSocket(port + 1);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            runningFlag();
        }
    }

    private void runningFlag() {
        new Thread() {
            public void run() {
                while (true) {
                    isOtherRunning(read(listen(requestServerSocket)));
                }
            }
        }.start();
        new Thread() {
            public void run() {
                while (true) {
                    write(listen(ListenServerSocket));
                }
            }
        }.start();
    }

    private boolean isRunning() {
        boolean running = false;
        if (read(request(port))) {
            running = true;
            write(request(port + 1));
        }
        return running;
    }

    private Socket request(int port) {
        Socket socket = null;
        try {
            socket = new Socket("127.0.0.1", port);
            socket.setSoTimeout(200);
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return socket;
    }

    private Socket listen(ServerSocket serverSocket) {
        Socket socket = null;
        try {
            socket = serverSocket.accept();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return socket;
    }

    private void write(Socket socket) {
        OutputStream out = null;
        OutputStreamWriter outr = null;
        BufferedWriter bw = null;
        try {
            out = socket.getOutputStream();
            outr = new OutputStreamWriter(out);
            bw = new BufferedWriter(outr);
            bw.write(appe.getName());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                bw.close();
                outr.close();
                out.close();
                socket.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    private boolean read(Socket socket) {
        boolean running = false;
        InputStream in = null;
        InputStreamReader inr = null;
        BufferedReader br = null;
        try {
            in = socket.getInputStream();
            inr = new InputStreamReader(in);
            br = new BufferedReader(inr);
            running = appe.getName().equals(br.readLine());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                br.close();
                inr.close();
                in.close();
                socket.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
        return running;
    }

    private void isOtherRunning(boolean running) {
        if (running) {
            whenOtherAppIsRunning.doThis();
        }
    }

    public WhenOtherAppIsRunning getWhenOtherAppIsRunning() {
        return whenOtherAppIsRunning;
    }

    public void setWhenOtherAppIsRunning(
            WhenOtherAppIsRunning whenOtherAppIsRunning) {
        this.whenOtherAppIsRunning = whenOtherAppIsRunning;
    }

    public Class<?> getAppe() {
        return appe;
    }

    public void setAppe(Class<?> appe) {
        this.appe = appe;
    }

/*WhenAppIsRunning.java——简易的监听,当已经有程序运行时,执行doThis()*/

package turnip.gray.singlecases;

public interface WhenAppIsRunning {
    void doThis();

}

/*WhenOtherAppIsRunning .java——简易的监听,当其他程序尝试运行时,执行doThis*/

package turnip.gray.singlecases;

public interface WhenOtherAppIsRunning {
    void doThis();

}

 

写一个Demo看看效果吧:

/*
* DemoFrame.java
*
* Created on __DATE__, __TIME__
*/

package turnip.gray.singlecases.demo;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import turnip.gray.singlecases.SingleCases;
import turnip.gray.singlecases.WhenAppIsRunning;
import turnip.gray.singlecases.WhenOtherAppIsRunning;

/**
*
* @author  __USER__
*/
public class DemoFrame extends javax.swing.JFrame {

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    /** Creates new form DemoFrame */
    public DemoFrame() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    //GEN-BEGIN:initComponents
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        setDefaultCloseOperation(3);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
                getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(
                javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400,
                Short.MAX_VALUE));
        layout.setVerticalGroup(layout.createParallelGroup(
                javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300,
                Short.MAX_VALUE));

        pack();
    }// </editor-fold>
    //GEN-END:initComponents

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        SingleCases singlecases;
        final DemoFrame demoFrame;
        singlecases=new SocketSingleCases();
        demoFrame=new DemoFrame();
        singlecases.setAppe(demoFrame.getClass());
        singlecases.setWhenAppIsRunning(demoFrame.getWhenAppIsRunning());
        singlecases.setWhenOtherAppIsRunning(demoFrame.getOtherWhenAppIsRunning());
        singlecases.run();
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                demoFrame.setVisible(true);
            }
        });
    }
    public WhenAppIsRunning getWhenAppIsRunning(){
        WhenAppIsRunning whenAppIsRunning=new WhenAppIsRunning(){

            @Override
            public void doThis() {
                // TODO Auto-generated method stub
                System.exit(0);
            }
        };
        return whenAppIsRunning;
    }
    public WhenOtherAppIsRunning getOtherWhenAppIsRunning(){
        WhenOtherAppIsRunning whenOtherAppIsRunning=new WhenOtherAppIsRunning(){

            @Override
            public void doThis() {
                // TODO Auto-generated method stub
                int i=MAXIMIZED_BOTH;
                int j=getExtendedState()^i;
                setExtendedState(j);
            }
        };
        return whenOtherAppIsRunning;
    }

    //GEN-BEGIN:variables
    // Variables declaration - do not modify
    // End of variables declaration//GEN-END:variables

}

怎么样??是不是在尝试启动第二个实例的时候,原来的窗口被最大化了?

6月25日

无条件的条件

看了一部漫画+3个翻唱视频

漫画是铁汉强龙(很销魂、很诡异,不过又很容易理解)
翻唱是论坛上有人推荐的:

第一弹:鏡音リン 悪ノ娘 ぽいもの Ver.なまこにゅる粉
第二弹:鏡音レン 悪ノ召使 相も変わらず泣きながら歌ってみた@うさ
第三弹:鏡音リン リグレットメッセージを歌ってみたよ(かぷりこ

上面这些里面都有个很“忠”的角色……
不同的是大叔是因为身为专业人员的责任感和佣金。在堂岛谈到事情的原因时,大叔明显的抗拒了……
而悪ノ娘里的忠,却是因为爱……
所以……最后,铁汉强龙里的那位大叔背叛了……

SO:干一件事,可以只因为对它的理解;可以只凭着爱、热情、兴趣甚至一时冲动……但是绝对不能单凭所谓的责任感……

责任是因爱而生的……而单纯的,或者说因为压力而产生的所谓的、半吊子的、畸形的“责任”味道是不一样的……

6月4日

闪家了……

闪家了,自己决定的……

曾经做过好多决定,从结果看,大半儿的都有问题。虽然到现在还没后悔过,不过有时候还是会觉得当时脑子一定缺了根筋儿(突然想知道做什么事的时候不会少根筋(-_-!!)疯狂思考ing~~~~)……

估计我的性格不适合做决定……还是怀里常揣个钢蹦,到时候往天上一拽。记得高中某人说过,硬币会带来好运……今天终于了解了- -!

贫了半天,想说的是……希望以后想起这次来……不会有觉得缺根弦儿,毕竟这次我是猜蹦儿决定的~~~~~~当然是骗你的,这你也信- -!

5月21日

MSDN版XP professional with service pack 3 的一个BUG

今天打算给自己装个SP3(前几天给同事、公司、同学装个很多次了,自己一直用2003。因为家里打印机没有2003的驱动,所以打东西都要开VM,不方便,所以……)……

盘是已经刻好的……用过很多次,在VM里也装过……

放盘,重启……结果,蓝屏没出来……定住了……硬盘灯常量……

难道是SATA的问题??不过这个问题不是只存在于新主板或者98那样陈旧的操作系统中么……于是在bios里禁掉了两块SATA只用剩下的一块IDE……甚至连数据线都拔了……结果还是不行……

又想到我硬盘上装着server2008呢,是不是2008新版的引导程序闹得??于是,放了张2008的盘,恢复了2003的引导……结果还是不行……

一气之下把2008删了,还是不行- -!

拔掉了那块IDE……插上并启用了SATA……结果发现……蓝屏出来了……难道是我那块IDE的0磁道坏了??那现在是怎么启动的啊- -!而且插SP2的安装盘也能正常引导啊……

进系统,看了看SATA和IDE在分区上的区别……发现有两个第二、第三主分区一个是Fedora一个是ubuntu……扩展分区的第一个区是swap……难道是这三个搞得鬼??一咬牙、一跺脚……把这三个也删了……

重启,竟然正常引导了……@_@

进系统,给删掉的这几个区,重新建一下,这回没有linux了总成了吧……等装完XP我再重装……图省事,就没格式化……

重启,又不能光盘引导了……@_@

到这……大概明白了……貌似是SP3的一个BUG:如果磁盘上有一个或一个以上分区的文件格式是windows不能识别的(未格式化的,或者不能识别的)……那么就不能正确引导……不过如果有空闲空间的话,可以正常引导……

这叫啥事啊……SP3……也太糙了吧……