惊艳的Ubuntu9.10

如此简单的安装,如此快速的启动,告别linux桌面版以往的那些印象,不再有繁琐的软件安装问题,不再是电脑高手手中的小玩意了。

系统安装完后,自动提示升级语言包,然后拼音输入法有了(需修改默认选项),mp3可用直接播放,rmvb可用直接观看,集成了IM,无限网络直接就能连接,相当方便,下面是我作的一些系统配置:

  1. 改用微米黑字体,详见大一统 - 完全微米黑美化方案
  2. 修改系统自带的输入法Ibus首选项,只保留PinYin,删除其他
  3. 支持Thinkpad 中间键功能的实现
  4. 安装JDK,sudo apt-get install sun-java6-jdk
  5. 打开应用程序-软件中心,搜索netbeans选择安装

除了网银搞不定,其它没发现什么问题,可以告别windows了。

Update:

  • 我的thinkpad z61t,音量控制调节,下载:http://packages.ubuntu.com/intrepid/i386/hotkey-setup/download
Posted in Linux, 未分类 | Leave a comment

Poderosa配置

1. 下载Poderosa修改版:http://blog.csdn.net/minico/archive/2008/11/29/3410830.aspx

2. 配置自动登录

  • a. 选择tools -> ssh key generation wizard...
  • b. 弹出对话框中,passphrase和confirm留空,下一步
  • c. 晃动鼠标生成随机key,下一步
  • d. 点击"Save private key as..."和"Save public key in OpenSSH format as..." 分别保存为private.key和public.pub两个文件(可其它文件名)
  • e. 登录主机,vi ~/.ssh/authorized_keys,将public.pub中的内容复制过来
  • f. 回到Poderosa,打开登录对话框,[Authenticaion]选择Public key,Key File选择上面生成的private.key,此时填写完主机名和账号,无需密码既可以自动登录

3. 配置Cygwin,支持中文

vi ~/.bashrc
export LESSCHARSET=latin1
alias less='/bin/less -r'
alias ls='/bin/ls -F --color=tty --show-control-chars'
export LC_ALL=zh_CN.GBK
export LC_CTYPE=zh_CN.GBK
export LANG=zh_CN.GBK
export OUTPUT_CHARSET="GBK"


vi ~/.inputrc set meta-flag on set input-meta on set convert-meta off set output-meta on set completion-ignore-case on


vi ~/.vimrc syntax enable syntax on
Posted in Tool | Tagged | Leave a comment

一些大的方向

提高技能,提高薪水 :-)

熟悉SAAS产品、SAP技术顾问、行业的垂直的技术专长(金融、零售、媒体、游戏...)、商务技能、开源软件产品开发经验、更近一步了解能让公司赚钱的技术、IT架构师、付费参加项目管理认证(PMP、PMO)、跳槽

Posted in 未分类 | Leave a comment

自己写javascript 框架

最近对javascript很感兴趣,它已经不在是一种小打小闹的玩具语言(其实从来就不是这样的,但我以前一直是这么看它的,咳...)。面向对象的写法不再时髦,prototype, context, scope chains,closures概念都不了解啊,努力啃书()吧。随着ruby等脚本语言的大行其道,其中的编程模式被引入其中,愈发变得强大了。

网上找了个相当简单的写js框架的教程,正好也需要开发一个框架级的东西,跟着做吧!

第一步
创建两个文件index.htm和framework.js

Continue reading

Posted in Javascript | Tagged | 1 Comment

新日志系统SLF4J

项目日志系统将会扔掉commons-logging和log4j,使用SLF4J全面接管,无障碍迁移。 

优点:

  • 超超超低依赖性
  • 透明切换不同是日志实现方式
  • 编译器绑定底层实现的方式,不会有classloader问题
  • 性能更佳
  • 已经Hibernate、Jetty、Spring-OSGi、Tapestry等项目中使用
  • 完善又免费的文档

各个jar包功能:

  • slf4j-api-1.4.3.jar - 一定是要的,直接支持logback实现
  • jcl104-over-slf4j-1.4.3.jar - 使用common-loggin的接口,底层还是由SLF4J来决定哪种实现机制
  • slf4j-jcl-1.4.3.jar - 使用SLF4J的接口,底层由common-loggin实现(不能和jcl104-over-slf4j-1.4.3.jar同时使用)
  • slf4j-log4j12-1.4.3.jar - 使用SLF4J的接口,底层由log4j实现
  • slf4j-jdk14-1.4.3.jar - 使用SLF4J的接口,底层由java自身的日志系统实现

语法:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Test {
  final Logger logger = LoggerFactory.getLogger(Test.class);

public void hi() {
  // 不再需要log.isDebugalbe(),代码更简洁
  logger.debug("hello {}", "amsz");
  }
}

Posted in Java | Tagged , | Leave a comment

P6SPY过滤resultset输出

跟踪SQL时我只需要statement,但P6SPY总是会输出查询的结果集,找条sql挺麻烦的,而配置文件又无法排除这个输出,只能修改下源代码了。
其实挺简单的,两个文件三行代码,就可以通过配置文件管理想要的内容了:
com.p6spy.engine.spy.P6ResultSet

// line:152 - P6LogQuery.log("resultset", query, buffer.toString());
// update: to avoid resultset always display
P6Connection p6connection = (P6Connection)this.statement.getConnection();
P6LogQuery.logElapsed(p6connection.getId(), System.currentTimeMillis(),
    "resultset", preparedQuery, query);

com.p6spy.engine.logging.appender.FormattedLogger

// line71 - String logEntry = now + "|"+ elapsed + "|"+(connectionId==-1
    ? "" : String.valueOf(connectionId))+"|"+category+"|"+prepared+"|"+sql;
String logEntry = now + "|" + elapsed + "|" + category + "|" + sql;

最后在配置文件中加入:excludecategories=info,debug,result,batch,resultset

Over!

Posted in Java | Leave a comment

天使

你就是我的天使 保护著我的天使
从此我再没有忧伤

你就是我的天使 给我快乐的天使
甚至我学会了飞翔

飞过人间的无常
才懂爱才是宝藏
不管世界变得怎黱样
只要有你就会是天堂

像孩子依赖著肩膀 像眼泪依赖著脸庞
你就像天使一样 给我依赖给我力量

像诗人依赖著月亮 像海豚依赖海洋
你是天使你是天使 你是我最初和最后的天堂

我要在你耳边轻轻吟唱这首歌 ♥

Posted in echo | Leave a comment

学习Vi

被高亮显示的编译窗口诱惑,重新系统的学习一下,编辑效率提高很多啊。

  • 个性化设置,制定文本的编译环境
    使用::se[t] {option}
    例如:
    :set nu[mber] ts=2  backup // 显示行号,tab占2格,使用备份
    :set number ft=java syn[tax]=java // 文件类型为java,高亮语法为java
    :set number& ts& // 回到默认值
    

    在文件的任何地方(推荐首末行) 添加 vim:number ts=2,文件打开时这些设置会自动加载

  • 寄存器 - 多粘贴板功能
    数字寄存器:系统复制和黏贴的内容存放地
    字母寄存器:用户自定义寄存的内容,如果字母大写,表示内容追加
    使用:" + 数字或字母 + 操作
    例如:
    :reg  // 查看寄存器中所有的信息
    "2p   // 粘贴出2寄存器的内容
    "c3yy // 复制当前行内容到c寄存器中
    "cp   // 粘贴出c寄存器的内容
    
  • 未完续待...
Posted in Linux | Leave a comment

Java解惑 (一)

慢慢的读着《Java解惑》,做些笔记,便于以后更容易的回忆这些内容。

取奇数

i % 2 == 1;
i % 2 != 0;
(i & 1) != 0; // 效率更高

负整数返回的值都为false,所以第一个语句有1/4的时间是错的

购买一个1.1元的物品,但只有两张1元的,找零多少?

(2.0 - 1.1) == 0.9 -> 0.8999999999999999
String.valueOf("2.0")).subtract(new BigDecimal(String.valueOf("1.1"))

解决方法有两个:将单位设置为分,使用int类型做计算;使用BigDecimal,但构造函数的参数必须是字符串

长整数

24 * 60 * 60 * 1000 * 1000 / 24 * 60 * 60 * 1000
24L * 60 * 60 * 1000 * 1000 / 24L * 60 * 60 * 1000

实际是以int类型来做计算的,所以分子的值溢出,都用long型做计算就可以解决这个问题

初级问题

12345 + 5432l
12345 + 5432L

千万别使用小写字母'l',和容易和数字的'1'造成混乱
眼力: 数字1水平和垂直笔划的角度是锐角,字母l是直角

16进制没有取反符号(-)

Long.toHexString(0x100000000L + 0xcafebabe)
Long.toHexString(0x100000000L + 0xcafebabeL)

8进制和16进制无需减号就可以表示负值,避免混合类型做计算

Posted in Java | Leave a comment

10种让工作快乐的方法

做到的划掉,没划掉的以后来划掉

  1. 吃早饭
  2. 沐浴清晨的阳光
  3. 做做有氧运动
  4. 早晨10点前,不要收EMAIL,不要打电话,不要聊QQ.msn等,也不要阅读RSS
  5. 考虑事情积极,而不消极
  6. 暂时休息一下
  7. 中午时出去散散步
  8. 避免闲谈.八卦
  9. 每天列出5-7项目标并且努力完成它,最多留下3项
  10. 慢一点答应其他人的“紧急”要求

第四条,我竟然完全相反,faint。50分,红灯笼!!

Posted in 心情的积累 | Leave a comment