13

有本本的童鞋一定要收藏,希望以后能给大家带来帮助

前阵子笔记本的显示屏莫名的出现大片白色斜条纹,拿去售后检测说屏坏了,但坑爹的售后要价1.2k,于是我选择了自己换。网上买个液晶屏300多,昨天快递到货。屏幕上有两根线,粗一点的时屏幕数据线,俗称屏线,展示画面用,还有一根就是连接高压条的电线。然后我就这么捣腾了一上午,将线连好,实验成功。以下是成功后的截图:

由于仅仅是为了测试屏幕到底行不行,所以我为将屏幕加上卡槽(用于固定在电脑上的东东),所以我将屏幕卸下来加卡槽,此过程虽然关机了,可是电源线未拔下,然后悲剧就发生了,第二次装上去实验的时候屏幕背光不亮了,也就是黑屏了。

这里给大家补习一下发生黑屏的几种可能原因:

1、高压条坏了,电源供不上点,背光子让就亮不起来了(楼主就是这种情况,我是在为断电的情况下操作导致高压条烧坏的,所以切记换屏的童鞋所有操作都必须在断电的情况下进行),遇到这种情况莫急,可以去电脑城维修,换一根高压条就是了,一般维修人员会比较黑,要价在150左右,但其实网上20-30就能买到,如果不放心,你买好了拿去修,给他50块钱人工费,人家也是愿意的。

2、灯管损坏。一样的可以换灯管。

3、显卡坏了,这个有好有坏,价格不一,具体可以参考网上。

还有就是,风扇脏了,千万别卸下来,没有风扇会烧掉主板,我有个童鞋真这么干过。脏了就去电脑城洗一下,也就几十块钱,别得不偿失。

最后还是提醒一下要自己换屏幕的童鞋,切记所有操作都要在切断电源的情况下进行,包括换内存条,否则可能烧坏主板或者其它部件。

以上是我这次换屏幕的一点心得,现在总算是好了,也希望对大家有所帮助。欢迎分享和转载,能帮助到更多的朋友。

 

12

flexigrid自定义查询

相信用过flexigrid的朋友都知道,它有自带的查询功能,但是我想自定义自己的查询,界面如下:

以下是实现自定义查询的关键代码,希望对大家有所帮助:

html:

<div class="queryForm">
        <div style="margin-top:10px;">
            <div class="prompt"><span>id:</span></div>
            <input id="query_id" type="text"/>
            <div class="prompt"><span>名称:</span></div>
            <input id="query_name" type="text"/>
        </div>
        <div style="margin-top:10px;">
            <div class="prompt"><span>描述:</span></div>
            <input id="query_description" type="text"/>
            <div class="prompt"><span>父目录:</span></div>
            <s:select id="query_parent_id" list="#dropMenu.dropMenuList" cssStyle="width:125px;height:20px;" name="query_parent_id" cssClass="default" headerKey="-1" headerValue="请选择" listKey="id" listValue="description"></s:select>
        </div>
    </div>

js:

function query(){
    var params = [{"name" : "id", "value" : $("#query_id").val()},
                  {"name" : "name", "value" : $("#query_name").val()},
                  {"name" : "description", "value" : $("#query_description").val()},
                  {"name" : "parent_id", "value" : $("#query_parent_id").val()}];
    $('#menu_grid').flexOptions({params : params, newp : 1}).flexReload();
}

正如以上代码所示,query方法去调用flexigrid的felxReload方法去刷新,但在刷新之前传入参数,传入参数的格式必须是上面代码中的格式,否则flexigrid将无法解析传入后台,flexReload执行的时候会自动向后台post请求,并且将带上你传入的参数,但这里并没有传入post的url,是因为在初始化flexigrid的时候已经定义好了,flexigrid会自动去找到这个url,并且post向它。还有要注意的是,往往查询的时候是到第一页,所以大家看到flexOptions方法还传入newp,其实newp就是flexigrid向后台传入的最终page参数,所以这里只需指定为1就可以了。希望对大家有所帮助。

个人google code:http://code.google.com/p/andy-dreamer/,大家可以通过svn下载我最新的代码

03

也谈SpringIOC

SpringIOC到底是啥玩意儿,我在这里就不再赘述,网上可以找到好多版本来描述它。它到底有啥好,简单来说就是增强了程序的健壮性和可维护性,再简单点说就是不改变原有代码,实现新的逻辑(太夸张了吧,这也可以?是的,SpringIOC真就这么做到了,这也是为什么今年来Spring得到推崇的原因之一,当然还有SpringAOP、SpringMVC等等)。下面我将用最简单的例子阐述SpringIOC到底是如何做到这一点的。

首先我有这样一个需求就是,我有一个Chinese类,Chinese类有一个方法叫color(),他将显示中国人的肤色。具体代码如下:

1 public class Chinese{
2     public void color() {
3         System.out.println("肤色是黄色的");
4     }
5 }

然后我有一个Test类,具体代码如下:

1 public class Test {
2     public static void main(String[] args) {
3         Chinese chinese = new Chinese();
4         chinese.color();
5     }
6 }

很显然,最后控制台输出的是“肤色是黄色的”。

现在我想让中国人的肤色变成白色,即控制台最后输出“肤色是白色的”。很简单呀,改一下Chinese类的color方法就可以了。没错,这样是可以做的,但这样就破坏了程序的健壮性和可维护性,我们要不改动原来的代码就实现新的需求,这才叫牛逼!那怎么做呢,按照这样的类设计是无法办到的,这时我们想到面向接口的编程思想,我们定义一个Human接口,它有一个color方法显示肤色,但具体是什么肤色我们不知道,具体代码如下:

1 public interface Human {
2     public void color();
3 }

然后我们修改一下Chinese类,让它去实现Human接口:

1 public class Chinese  implements Human{
2     @Override
3     public void color() {
4         System.out.println("肤色是黄色的");
5     }
6 }

当然我们的Test类也要修改:

1 public class Test {
2     public final static String CHINESE = "Chinese";
3     public static void main(String[] args) {
4         ApplicationContext ctx = new FileSystemXmlApplicationContext("src/bean.xml");
5         Human human = (Human) ctx.getBean(CHINESE);
6         human.color();
7     }
8 }

我们看到Chinese类的具体实例是从bean.xml中得到的:

1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4     xsi:schemaLocation="http://www.springframework.org/schema/beans
5     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
6     <bean id="Chinese" class="com.andy.test.Chinese"/>
7 </beans>

这样Test类的测试结果也是在控制台打印“肤色是黄色的”。

好的,现在我们重新定义一个类Chinese2,同样去实现Human:

1 public class Chinese2  implements Human{
2     @Override
3     public void color() {
4         System.out.println("肤色是白色的");
5     }
6 }

不同的是我们现在的肤色是白色的。到此为止我们并没有改动任何原来的代码,只是新增了一个类Chinese2。

好,现在就是见证奇迹的时刻,我们将刚才bean.xml中的bean的class指向Chinese2,即:

<bean id="Chinese" class="com.andy.test.Chinese2"/>

我们并没有改动原来的代码哦,亲(^_^)。重新执行Test.java,你会神奇的发现控制台打印的是“肤色是白色的”。至此,你已经发现SpringIOC的无穷魅力,当然它也并非完美无缺,这种方式虽增强了代码的健壮性和可维护性,可因为它是利用java反射动态获取类实例,这样效率上会打点折扣,当然这点牺牲还是值得的,具体看你如何权衡。

完整源码可从我的googlecode svn下载:http://andy-dreamer.googlecode.com/svn/trunk/SpringIOC

个人网站:http://yeshanghai.ueuo.com/

19

android自定义组件之TopMenu

这两天正好在做一些android方面的研究,于是乎写了一个组件,在此与大家分享交流。先上图一张,看效果:

如图,在主窗体的顶部有个导航菜单,点击右边的选项卡会弹出查询窗口,默认查询条件为1个。只需要在layout的配置文件(top_menu_act.xml)中添加组件即有左图的效果。top_menu_act.xml:

如果我想自定义查询条件,只需要调用TopMenu的setQueryParameter(String field)方法,将查询条件传入。例如,我想自定义员工编号和员工姓名作为查询条件,那么首先需要在activity的oncreate方法中实例化topMenu对象,

TopMenu topMenu  = (TopMenu) findViewById(R.id.mTopMenu);

//之后调用setQueryParameter方法

topMenu.setQueryParameter(“员工编号”);

topMenu.setQueryParameter(“员工姓名”);

//最后调用update方法即可

topMenu.update();

效果如下:

接下来就是编写查询事件,

//让topMenu监听查询按钮的click事件
topMenu.setQueryWindowClickListener(new QueryWindowClickListener(){
@Override
public void onClik() {
//调用getQueryValue方法去获取文本框中的值
String code = topMenu.getQueryValue(“员工编号”);
String name = topMenu.getQueryValue(“员工姓名”);
……
//接下来就是你通过获取到的值去过滤结果了,相信我也没必要写下去了吧。。。
}
});

同样的,topMenu左上方的后退按钮也可以设置监听事件,以响应其点击操作。

源代码:DreamerMoblie

也可通过googlecode的svn下载:http://andy-dreamer.googlecode.com/svn/trunk/DreamerMobile

 

 

13

想拥有自己的博客网站么,手把手教你Linux下部署WordPress!!!

什么是WordPress?自己google吧。WordPress官网(http://cn.wordpress.org/)有教你如何安装,但其过程太复杂,接下来我将用最简单有效的方式安装WordPress。没有linux环境的童鞋可以装个虚拟机,弄个RedHat。

安装正式开始:

第一步,下XAMPP。http://www.apachefriends.org/zh_cn/xampp-linux.html,下载XAMPP Linux 1.7.7就行了。下完后,进入Linux shell并以管理员身份登录,执行tar xvfz xampp-linux-1.7.7.tar.gz -C /opt命令,将其解压到/opt下。

第二步,启动XAMPP服务。/opt/lampp/lampp start。在浏览器中输入http://localhost,进入XAMPP配置界面。默认的环境是不安全的,你可以点击左侧菜单栏安全选项,看到所有选项都是红色非安全的。

第三步,安全配置。执行/opt/lampp/lampp security,为php、mysql、ftp设置密码。重启服务,重新访问http://localhost,此时会让你输入用户名密码,进入后点击左侧菜单栏安全选项,你会发现所有选项都变成绿色安全的了。服务器环境搭好,接下来就是安装WordPress。

第四部,下载WordPress。http://cn.wordpress.org/,直接下载后,上传到linux的某个目录下,比如/a/b。

第五步,修改wordpress下的web-config.php:

define(‘DB_NAME’, ‘数据库名称’);

/** MySQL 数据库用户名 */
define(‘DB_USER’, ‘root’);

/** MySQL 数据库密码 */
define(‘DB_PASSWORD’, ‘你刚才设置的数据库密码’);

/** MySQL 主机 */
define(‘DB_HOST’, ‘localhost’);

/** 创建数据表时默认的文字编码 */
define(‘DB_CHARSET’, ‘utf8′);

/** 数据库整理类型。如不确定请勿更改 */
define(‘DB_COLLATE’, ”);

下面的密钥通过https://api.wordpress.org/secret-key/1.1/salt/生成。

第六步,找到/opt/lampp/ext/httpd.conf文件,打开此文件,修改DocumentRoot “此处为你wordpress的根目录,例如此前设置的/a/b/wordpress”。

第七步,开始安装。重起服务,重新访问http://localhost,按照提示安装即可。

至此,你的个人博客网站就搭建完成,如有任何疑问,请与我联系,我会尽量解答。