Actually,simplicity is not simple

汉化了下SQLyog Ultimate 8.32正式版

Update 2011-12-13:SQLyog Ultimate 9.3.3 简体中文正式版出来了,用新的去吧!

说实话SQLyog不好汉化,居多的资源,光非标部分ASCII、Unicode、UTF-8字符串都有,而且汉化很容易出bug。对ASCII的字符依然不知如何进行汉化,我直接写入汉字在运行后就会是乱码,这次我对Unicode、UTF-8进行了独立汉化,在汉化8.12版时的很多问题都解决了。所以这次汉化率会比上次高些,但仍然不是完全,我尽我最大努力了。

这个版本同样没有汉化完全,对非标字符的汉化还是很棘手,这次发现Athena-A能在译文比原字符长时使用挪位,但我只会使用“超写”的功能,而且当可用的空白位不够时同样不知如何处理,无奈!

快捷键对照表那块Athena-A无法找到,使用eXeScope到是能进行汉化,原本这一块已经汉化完了的,但在一次操作时覆盖掉了,所以就不再重复一次了,这次仍然是英文的。^0^ God!!!

来张汉化后的图

SQLyog Ultimate 8.32正式汉化版

这次SQLyog更改了注册算法,以前的注册机没用了,但我找到个可用的注册码,也分享出来吧!

Name: Any
Registration Code: 26f359fc-e3f6-4727-8af1-72a1a4a0819d

差点忘了放汉化版的下载地址了,猛点这里 。地址已修改,不再放在自己的空间里,写博文时就把软件提交给绿色联盟了,原意是等收录了再改过去,但他们瞧不上我的分享一直不给收录,那算了放网络U盘里吧!一样可以下载。

2010年5月27日更新:收到网友邮箱说在XP下有点问题,小修正了下,下载地址在这里猛点这里。(感谢守护幸福的反馈) 很早了,睡觉去了!早安 ^..^

Update(2010-08-26):今天有网友反应下载地址不能用了,这也很正常了,115网盘的共享有效期只有30天,今天再次共享下,有需要的朋友可以去下载。有朋友说SQLyog 8.6正式版出来了让我赶紧去汉化,但我最近没多少空余的时间去做汉化工作,再者我手上也没有英文正式版的文件,找正式版的原文件也是很费劲的,如有朋友找到了可以发给我,我争取抽点时间汉化出来。

轻量的JS模板

这JS模板实在是太轻量了,只是个简单替换,只因为我太不喜欢不同语言的东东相互拼接。

昨天偶然看一"blog"上个有轻量的JS模板,作者的目的也是为了实现HTML代码与JS代码的分离,使得在用JS输出HTML时更方便,代码更清晰。有兴趣的可去看看 《Tempo.js : 轻量的JS模板工具类》

刚好我现做的项目有大量的HTML与JS的拼接,但作者的实现有对不适合我的代码风格,我做了些修改就运用到我的项目里,也把我修改后的代码放出来吧!写成这种形式是为了更方便的嵌入到我的项目中来,而且我也没用到更复杂的功能,最最简单的替换就够了,就像Tempo.js的作者想法:为了实现HTML代码与JS代码的分离,使得在用JS输出HTML时更方便,代码更清晰。

var Obj = {
    yyTemp: function(id, data, def){
        var dom = document.getElementById(id);
        var parseObj = dom[id] || (dom[id] = (function(html){
            html = html.replace(/([\'|\\])/gm,"\\$1")   //转义掉 \ 和 '
                        .replace(new RegExp('{([^{}]*)}','gim'), "'+(typeof data[\"$1\"] != 'undefined'?data[\"$1\"]:'')+'")  //转化为包括变量的字符串
                        .replace(/[\n\r]/gm,'');    //去除回车换行
            html = ["return '", html ,"';"].join('');
            console.log( html );
            return new Function('data',html);
        })(dom.innerHTML));
        if(data.length){
            for(var i=0,ar; ar=data[i]; i++){
                data[i] = parseObj(ar);
            }
        }else data[0] = def || '';
        dom.innerHTML = data.join('');
    }
};

使用方法更简单,模板这样写就可以了:

<ul id="asins">
    <li class="{class}">{title}</li>
</ul>

简单的使用:

var arr = [
    {title:'再简单不过的JS模板系统','class':'c'},
    {title:'也就一点点功能','class':'cl'},     
    {title:'够用就好,呵呵','class':'cls'},
];
Obj.setTemp('asins', arr, '<li>Null</li>'); 

我这里加了个默认值,虽然以这种方式写默认值不太喜欢,但也没想到更简单合理的方式。

更重要的一点改进是HTML中不用另外写个模板标签,要生成的代码就是模板所在的位置,更不用另外每次指定了。

如果不希望在HTML加载时看到模板代码,可以进行些改进:

模板改成这样:

<ul id="asins">
    <li style="display:none;" class="{class}">{title}</li>
</ul>

JS代码也改一点点就可以了,注意粗体部分:

这JS模板实在是太轻量了,只是个简单替换,只因为我太不喜欢不同语言的东东相互拼接。

昨天偶然看一"blog"上个有轻量的JS模板,作者的目的也是为了实现HTML代码与JS代码的分离,使得在用JS输出HTML时更方便,代码更清晰。有兴趣的可去看看 《Tempo.js : 轻量的JS模板工具类》

刚好我现做的项目有大量的HTML与JS的拼接,但作者的实现有对不适合我的代码风格,我做了些修改就运用到我的项目里,也把我修改后的代码放出来吧!写成这种形式是为了更方便的嵌入到我的项目中来,而且我也没用到更复杂的功能,最最简单的替换就够了,就像Tempo.js的作者想法:为了实现HTML代码与JS代码的分离,使得在用JS输出HTML时更方便,代码更清晰。

var Obj = {
    yyTemp: function(id, data, def){
        var dom = document.getElementById(id);
        var parseObj = dom[id] || (dom[id] = (function(html){
            html = html.replace(/([\'|\\])/gm,"\\$1")   //转义掉 \ 和 '
                        .replace(/ style="display: ?none;?"/i,'')    //去除隐藏
                        .replace(new RegExp('{([^{}]*)}','gim'), "'+(typeof data[\"$1\"] != 'undefined'?data[\"$1\"]:'')+'")  //转化为包括变量的字符串
                        .replace(/[\n\r]/gm,'');    //去除回车换行
            html = ["return '", html ,"';"].join('');
            console.log( html );
            return new Function('data',html);
        })(dom.innerHTML));
        if(data.length){
            for(var i=0,ar; ar=data[i]; i++){
                data[i] = parseObj(ar);
            }
        }else data[0] = def || '';
        dom.innerHTML = data.join('');
    }
};

之所以写成这样是因为各浏览器对HTML代码渲染后的结果不一样!FF chrome Opera IE8 IE6下都没有问题。

在性能上比你的这种方式平均慢上10ms左右吧!还能接受,这种方式最主要是不用写多条语句实现目的,另外我对给出的数据加了个简单的判断,如果没有给出会留空而不像你的这种会在HTML中出现undefined字符。猛点这里查看Demo

MOSe这词就是有病

今天我一朋友问我MOSe是什么? 答不上来,难道我又落伍了?

后发现它的意思是MOSe(Mozilla,Opera, Safari enhancement)。

我晕倒,不就是非IE浏览器嘛,又整个新名词出来干什么!

2003年,加拿大设计师、CSS Zen Garden创始人Dave Shea写了一篇备受关注的文章,阐述了如何跨越那些相互竞争的拥有不同特性的浏览器进行的设计创作的新途径,他把这个途径叫做MOSe(Mozilla,Opera, Safari enhancement)。

看这意思是说通过各浏览器自身的私有方法来实现统一的样式,就我郁闷,这些东西CSS3中都定义好了,为何整出个自己的么有属性,是觉得CSS设计人员还不够累吗?

MOSe又是个旧瓶装新“酒”,多少年来CSS设计人员都是这么写的,现整出个名词干什么?给设计人员平反吗?