MySlot 4.1 国服 Bugfix

 

非常感谢 小M 全程 配合 调试 帮助解决了这个bug

这个bug 会导致 很多 人 按 导出 没有反映

修正了

另外 如果 发现bug 或者不能使用
请联系 QQ 22267156 或者 farmer1992@gmail.com

我一定会帮你解决的

myslot.tar.bz2

Read More

itemstatlite 的 继承人 wowtip.js

itemstatlite 是我第一个开放的作品 从 07年 维护到现在

很多人 帮助我 改才 得以发展

其间还 结识 byvoid 这个小朋友 想推荐到 公司 …… :-)

 

那时候 跟 byvoid 说 itemstatlite 的计划 就是 迁移到 sae 做 云计算 时髦

说了 一年 多 终于 ctm 把armory 整个 结构都改变了

用户 反映说 不能用了  我这才 匆匆忙忙 开始 重写

 

经过 一天的努力 终于复活了 item 部分 完成了

这次的 改动 主要 将计算 内容 全部托管给了 sae

用户 只需要 引入一个 js 文件 就可可以 使用了 ^_^

用户 只要 会编辑 模板就行了

 

现在 就再 blog 上 实验一下[item]霜之哀伤[/item] 哈

http://wowtip.sinaapp.com/

Read More

Myslot 4.1/4.2 FOR 国服 CTM

恭喜 国服 开 CTM 了

以前的 欧服 beta 终于下决心 更新了 把 宏导入 也做了 进去

改进了算法 导入 导出 速度 是 3代的 10倍

导出串大小 是原来的 1/10

 

感谢 使用

下载最新的Myslot for CTM国服

Read More

屠龙的技能

生产服务器 的 jvm 的 load 上周终于 高了……
一台机器 表现 不正常

最幸福的 事情 就是 有屠龙的技能 也要找到 龙了

然后 就将学来 的 分析 jvm 寻找 load  高的技能 施展了一下

以前 用 木庄 练习 实在是没劲

实际再 生产机器 上 动手还是 有困难的

 

笔记

thread dump

很多 文档 都说 kill -3 PID

其实 没啥不对 关键 当时比较 傻 将 std 打到 /dev/null 里边去了

后来 发现 jstack (jdk自带) 比 kill -3 牛逼 多了

还能 force dump (pid 没响应了)

 

拿到 thread dump 就是 top -H 了

第一次 弄 忘记了 -H 呵呵 不过 发现进程 少了 很快就发现了

 

拿到 nid 转 16进制 然后 马上 就发现 bug 所在了

 

 

比老师 Bluedavy  在书中 就是 感谢 有关部门 提供 机会

实践想法 才得到 成长的

我 这里也感谢 有关部门 提供 支持

顺便 感谢 前几次 故障 内存漏了 句柄漏了 ……

机会留给有准备的 淫

Read More

JBoss 远程 Jndi 链接 数据源 ibatis 出异常的解决

JBoss 数据源默认 JNDI 默认 是不能 跨VM 提供的

需要加一句<use-java-context>false</use-java-context>

 

这样 创建的数据源 没啥问题 也可以用 但是 ibatis 使用就有问题

java.sql.SQLException does not return Serializable

 

这个 问题 我找到了 同样的描述就是

http://stackoverflow.com/questions/39053/accessing-datasource-from-outside-a-web-container-through-jndi

 

我没找到正确的解决方案 就用 jdk 的 Proxy 给 它打了 一个 补丁…… 然后 就艺了

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/**
 * @author jiaoyi 通过 JNDI 远程链接 JBoss 的数据源 会有问题 抛出
 *         java.lang.IllegalAccessException: Method=public abstract
 *         java.sql.Connection java.sql.Statement.getConnection() throws
 *         java.sql.SQLException does not return Serializable
 *
 *         这个 家伙 通过hook 代码 将 原始的 Connection 返回给上层 解决这个问题
 *
 */

public class JndiDataSourceProxy implements FactoryBean {
    private static final ClassLoader THIS_LOADER = JndiDataSourceProxy.class
            .getClassLoader();

    private Object jndiObject;

    public void setJndiObject(Object jndiObject) {
        this.jndiObject = jndiObject;
    }

    private class StatementHandler implements InvocationHandler {
        private DataSource ds = (DataSource) jndiObject;
        private Object target;

        StatementHandler(Object target) {
            this.target = target;
        }

        public Object invoke(Object proxy, Method method, Object[] args)
                throws Throwable {
            if ("getConnection".equals(method.getName())) {
                return ds.getConnection();
            }
            return method.invoke(target, args);
        }

    }

    private class ConnectionHandler implements InvocationHandler {
        private Connection target;

        ConnectionHandler(Connection target) {
            this.target = target;
        }

        public Object invoke(Object proxy, Method method, Object[] args)
                throws Throwable {

            if ("prepareStatement".equals(method.getName())) {
                return (Statement) Proxy.newProxyInstance(THIS_LOADER,
                        new Class[] { PreparedStatement.class },
                        new StatementHandler(method.invoke(target, args)));
            }
            return method.invoke(target, args);
        }

    }

    private class DataSourceHandler implements InvocationHandler {
        private DataSource ds = (DataSource) jndiObject;

        public Object invoke(Object proxy, Method method, Object[] args)
                throws Throwable {
            if ("getConnection".equals(method.getName())) {
                return (Connection) Proxy.newProxyInstance(THIS_LOADER,
                        new Class[] { Connection.class },
                        new ConnectionHandler(ds.getConnection()));
            }

            return method.invoke(JndiDataSourceProxy.this.jndiObject, args);
        }

    }

    public Object getObject() throws Exception {
        return (DataSource) Proxy.newProxyInstance(THIS_LOADER,
                new Class[] { DataSource.class }, new DataSourceHandler());
    }

    public Class<DataSource> getObjectType() {
        return DataSource.class;
    }

    public boolean isSingleton() {
        return true;
    }

}

使用时候用这个 包上就行了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    <bean id="oracleDataSource" class="com.taobao.btc.mario.jndi.JndiDataSourceProxy">
        <property name="jndiObject">
            <bean class="org.springframework.jndi.JndiObjectFactoryBean">
                <property name="jndiName" value="java:YourDS" />
                <property name="jndiEnvironment">
                    <props>
                        <prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop>
                        <prop key="java.naming.provider.url">jnp://127.0.0.1:1099</prop>
                        <prop key="java.naming.factory.url.pkgs">org.jboss.namingrg.jnp.interfaces</prop>
                        <prop key="jnp.disableDiscovery">true</prop>
                    </props>
                </property>
            </bean>
        </property>
    </bean>
Read More

收藏一下 五道杠 漫画完整版

看风格 和 头上的 渣字 大概 是 孙渣 的作品


 

Read More

这样很好

我比较热爱自己的产品

都会去用 比如 去年9月 参与的一个项目

工作的很快乐 项目 12月上线后 我也变成了一个使用者

 

通常来说 创造者应该 是上帝模式 特别是再 中国

我非常快乐的说 再有些地方并不是这样的

也就是说 作为创造者 我像一个皮民一样 被欺负了

而我也不能变成 上帝 再欺负他们

 

起初 我很愤怒

但是我很快就明白了

这样 很好

因为我生活的世界是个平等的世界

感谢 疼逊 百毒

Read More

上帝给了我很多机会 我却拿这些机会来吹牛B……

触景生情 回忆一下 吹个牛B

阿…… 应该是这个样子的

 

Web 2.0

高1 – 2002 我用asp写了一个 同学通讯录系统

在这个系统上提出一个让 同学们一起来 维护的 概念

从现代的眼光看这是…… Wiki

 

后来 还做了个课件共享系统

维护了一个班级 页 用现代的眼光看 是 …… CMS 或 BLOG

网址是 c056.our1z.net 记忆阿

 

分离界面

我是个不善于做外观的人

那时写了一个 叫 LimeFlashPlayer的 播放器 (2003 VB6)

用户界面 是用 Flash 做的 也即是写了一个 壳 里边放 然后用Flash 画一个 界面

这个 …… WPF

 

— 黑暗时代 —-

超前创意

移动 密码卡 保存系统

J2ME 将wow密码卡 带到手机上 发在CWowAddon

后来 9c 自己搞了一个一样的东西 当然 比我做的强多了

 

高考地图

悲哀的 myasyz …… 09年大约这个时候 我通宵写了一个 高考地图系统

基于Google Map 是 在6月 参加Google开发者大会 我申报的这个作品 被贴在墙上

非常搞笑的 Google 在开发者大会 也发布了一个 高考地图 的产品……

 

LBS

在抄概念的今天 LBS 已经有小公司 在做 估计这个抄袭者们在等 时机成熟

在 Comsenz 时候 曾向有关部门 建议 wowo 基于SNS 开发一个 类似现在 LBS 的 系统

就跟没听见一样…… 这个我之前还悲愤的写了一个 XXX死在 Comsez http://tgic.me/2010/05/29/%E5%8F%A4-%E7%8B%97-%E6%8B%89-%E6%8F%90-%E5%9B%BE-%E7%9A%84-%E5%9C%A8-comsenz-%E6%AD%BB%E6%8E%89%E4%BA%86/

 

 

金山 同学 一直批评我

仅仅以技术为中心 根本不考虑 这个想法 到底有没有 价值

而最后把一些 都当作 技术实现 来做

所以 今天 我还在 一个陌生的城市 当 外来务工淫员

 

活该 警示自己 把握下一次

上帝 给了 我 很多 机会 我 却 拿 这些 机会 来 吹牛B……

Read More

解决了两个欠账

去年做了 一个 TODO List

计划更新 以前所有开发的软件 让他们 Update to date

终于 最近解决了 两个 非常舒服 软件需要维护么

 

不过剩的还很多

解决掉的是 HostAdmin

https://addons.mozilla.org/zh-CN/firefox/addon/hostadmin/

Qrcode微博

http://qrcode.sinaapp.com/

 

继续努力

 

Read More

hostadmin 终于升级了……

这个东西 是 2010年1月的作品 当时 还向 全公司 技术邮件组 群发广告了一下

软件 需要维护呢阿

去年 11月 Mozilla 给我邮件 让我 升级

我比较懒 …… 最近 ff 升级到了 4 一些用户 开始流失啦

所以 我自己就 忍不住了

——————

记录下 升级的心得

1 regx 死循环

原来 这么写的 /regx/.exec ff3 没问题

但是 到了 4 就变成死循环了

每次 /regx/都是新的

改成

regx = /regx/

regx.exec 就好啦

2 丢失的timer

timer 无缘无故 丢失

查不到原因 后来 追 句柄 发现不丢了……

突然想到可能是 gc掉了

于是 将 闭包里边的 timer句柄 放外边一个 问题解决

3 gecko sdk2.0 升级

hostadmin内嵌一个 dll 寻找%windir%

这个也跟着升级了一下

https://developer.mozilla.org/en/XPCOM/XPCOM_changes_in_Gecko_2.0

参考

 

源代码

http://code.google.com/p/fire-hostadmin/

 

下载安装

https://addons.mozilla.org/zh-CN/firefox/addon/hostadmin/versions/?page=1#version-1.1.0

Read More