YOYO的最新BLOG文章

Mar
09

QQ2008推出很久了,而今天我才用上,QQ2008在功能上基本没有增加什么实质的东西,唯一让我感觉眼前一亮的是聊天记录放在了右侧,这样在查看聊天记录的时候就方便了很多,而且在消息管理器里面搜索聊天记录的时候可以定位到了具体的位置了,这是很好的一个改进。

QQ208聊天窗口

QQ2008还增加了更改个人文件夹的功能和涂鸦功能:

对于更改个人文件夹的功能来说,还是不错的,可以把自己的资料备份在其他的盘里面,避免在删除QQ的时候误操作删除了这些资料,这个文件夹可以在以后安装QQ之后再次利用起来,这样就可以不用担心以前的资料找不到了。

涂鸦表情却是腾讯又一个盈利点,因为这个功能只有会员才可以使用,不知道这个功能又要俘虏多少纯洁的少年为腾讯的服务而买单。从涂鸦表情这一点可以看出腾讯目光太短浅了。

QQ2008涂鸦表情

在两年前的那股即时通讯热潮中,腾讯有幸成为胜利者,打败了大部分的即时通讯软件,但是不可否认的是,腾讯将会迎来更多更大的考验。在国内即时通讯市场上,我们现在比较熟悉的就有MSN(主要是面向办公族);阿里旺旺(淘宝旺旺,主要是面向C2C的商业交易用户)。还有Skype、Gtalk和yahoo messenger等,这些都或多或少的占有一定的用户群,而最近百度也要推出百度HI了。百度在汲取前面的教训之后一定会做得更好,到底谁胜谁负还很难说。

所以在现在这种形势下,腾讯应该更多的是来完善自己的产品,给用户带来更多更好的体验,把现有的用户留住,而不应该是为了眼前的私利,把自己置于一个越来越不利的位置。

以用户为中心,一切纷至沓来。这是Google的名言,我们知道Google最重要的业务是搜索,其搜索引擎做的很好,但是Google从没有太多的在自己的搜索引擎上打赚钱的主意,而是通过搜索的优势开拓了自己另一种盈利模式——Google广告。我想这是国内很多企业都应该学习的地方。

最后给腾讯的一句话是:一味地吃老本,早晚会完蛋。

Tags: , , ,
Posted in 想说就说
Mar
07

去年六月份的时候,我写过一篇博客《PHP读取JAR文件并生成JAD文件》,之后有不少人问及此事,也有很多人和我要这个程序。

昨天我把那个程序整理了一下,做成了一个JAR生成JAD的小工具(而在我上传的时候发现我以前其实写了这么一个程序,这次真的是重新造了一次轮子),以方便安装手机软件和游戏而没有JAD文件的朋友。

对这个程序感兴趣的朋友,可以看看我去年写的那篇博客,自己照着写一个也是很简单的,这里唯一要说的是运行这个程序的服务器上必须支持ZIP扩展。其实你对这个程序熟悉了,那对于通过PHP操作ZIP文件也就差不多了。

Tags: , ,
Posted in PHP | MySQL
Mar
06

Javascript一向以他的灵活随意而著称,这也使得它的功能可以非常的强大,而由于没有比较好的调试工具,又使得它使用起来困难重重,尤其使对于一些初学者,更是感觉到无从下手。今天探讨的问题是用javascript获取textarea中光标的位置。

对于写javascript写网页编辑器的人来说,获取textarea中的光标位置是一个非常重要的问题,而往往很多人在这个地方不知所措,找不到好的办法。昨天我在网上找到了一段javascript代码,本来不想把原版放在这里的,就是因为太精彩了,怕我给改坏了,所以还是原版放在这里吧。

var start=0;
    
var end=0;
    
function add(){       
        
var textBox = document.getElementById("ta");
        
var pre = textBox.value.substr(0, start);
        
var post = textBox.value.substr(end);
        
textBox.value = pre + document.getElementById("inputtext").value + post;
    
}
    
function savePos(textBox){
        
//如果是Firefox(1.5)的话,方法很简单
        
if(typeof(textBox.selectionStart) == "number"){
            
start = textBox.selectionStart;
            
end = textBox.selectionEnd;
        
}
        
//下面是IE(6.0)的方法,麻烦得很,还要计算上'\n'
        
else if(document.selection){
            
var range = document.selection.createRange();
            
if(range.parentElement().id == textBox.id){
                
// create a selection of the whole textarea
                
var range_all = document.body.createTextRange();
                
range_all.moveToElementText(textBox);
                
//两个range,一个是已经选择的text(range),一个是整个textarea(range_all)
                
//range_all.compareEndPoints()比较两个端点,如果range_all比range更往左(further to the left),则                //返回小于0的值,则range_all往右移一点,直到两个range的start相同。
                
// calculate selection start point by moving beginning of range_all to beginning of range
                
for (start=0; range_all.compareEndPoints("StartToStart", range) < 0; start++)
                    
range_all.moveStart('character', 1);
                
// get number of line breaks from textarea start to selection start and add them to start
                
// 计算一下\n
                
for (var i = 0; i <= start; i ++){
                    
if (textBox.value.charAt(i) == '\n')
                        
start++;
                
}
                
// create a selection of the whole textarea
                
var range_all = document.body.createTextRange();
                
range_all.moveToElementText(textBox);
                
// calculate selection end point by moving beginning of range_all to end of range
                
for (end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; end ++)
                    
range_all.moveStart('character', 1);
                    
// get number of line breaks from textarea start to selection end and add them to end
                    
for (var i = 0; i <= end; i ++){
                        
if (textBox.value.charAt(i) == '\n')
                            
end ++;
                    
}
                
}
            
}
        
document.getElementById("start").value = start;
        
document.getElementById("end").value = end;
    
}

下面是在页面中调用js代码的方法:

<form action="a.cgi">
<table border="1" cellspacing="0" cellpadding="0">
    
<tr>
        
<td>start: <input type="text" id="start" size="3"/></td>
        
<td>end: <input type="text" id="end" size="3"/></td>
    
</tr>
    
<tr>
        
<td colspan="2">
            
<textarea id="ta" onKeydown="savePos(this)"
                              
onKeyup="savePos(this)"
                              
onmousedown="savePos(this)"
                              
onmouseup="savePos(this)"
                              
onfocus="savePos(this)"
                              
rows="14" cols="50"></textarea>
        
</td>
    
</tr>
    
<tr>
        
<td><input type="text" id="inputtext" /></td>
        
<td><input type="button" onClick="add()" value="Add Text"/></td>
    
</tr>
</table>
</form>

此代码的原文是:http://blog.csdn.net/liujin4049/archive/2006/09/19/1244065.aspx,在此谢过!

这段js代码同时支持IE和Firefox,甚是精彩,可见此人js功力深厚啊,呵呵。

Btw:听说Firefox现在的市场占有率已经达到17%了,而IE8也快出来了,浏览器之间又会掀起一场你死我活的争斗,而这种争斗可以使浏览器的解析标准会越来越规范,我们写代码也会越来越省事,这实在是一件值得高兴的事。

Mar
03

Windows 2003服务器上线的时候,我曾安装过一次ASPJPEG组件,但是直到前几天我才知道当时我安装的这个组件无法正常工作。

回想起当时配置服务器的情况,好像是我由于没找到ASPJPEG 1.8的注册码,直接用ASPUPLOAD的注册码安装了,而更让人费解的是ASPJPEG什么提示都没有就安装上了,所以当时一点都没怀疑出自同一个公司的两个产品应该可以用一个注册码。而昨天我在我本地测试的时候发现用333作为注册码安装ASPJPEG的时候居然也可以安装上,此时我基本猜到ASPJPEG不正常工作原因了。

于是我去网上下载了一个带注册码的ASPJPEG 1.5版本,为了防止它和1.8版本的冲突,我又卸载了当时的1.8版本,还重新执行了一边卸载注册组件的命令:regsvr32 /u aspjpeg的路径,最终在阿江探针里面再也检测不到ASPJPEG的时候,我重新安装了1.5版本。

安装的时候很顺利,然后我又找了一个测试缩略图的程序,如下:

Set Jpeg = Server.CreateObject("Persits.Jpeg")    '创建实例
Path = Server.MapPath("img/j.jpg")       
'处理图片路径
Jpeg.Open Path                '打开图片
'调整宽度和高度为原来的50%
Jpeg.Width = Jpeg.OriginalWidth / 2
Jpeg.Height = Jpeg.OriginalHeight / 2
Jpeg.Save Server.MapPath("img/j2.jpg")        '保存图片到磁盘
Jpeg.Close:Set Jpeg = Nothing
?>

经过测试,程序正常,看来有戏。于是我又把原来工作不正常的程序打开,执行了一下,一切都好了,折腾了好几天都没找到原因的问题今天终于解决了。

顺便说一句,月光博客上面的生成缩略图的程序是错误的。

Tags: ,
Posted in Server
Mar
02

今天看到我的好哥们写了一篇博文《农村人找城里女大学生GF的看法》,我大体看了一遍。作为亲历者,我觉得他还是有很多的难言之隐在里面的,而作为我这个不太称职的好哥们(我懒,好久都没联系了)还是给他声援一下,我要说的是:男人,一定会顶住的。

城里GF找农村BF的诸多的问题和矛盾,说三天都说不完,其实就一点:你看上的是什么,你在乎的是什么。我想这个问题解决了,什么都不是问题了。还好,他的GF知道自己最在乎什么,我也祝贺他找了一个比较开明的好媳妇。

关于这个话题就不多说了,说多了可能就有人拿砖来拍我了。最后还是祝愿我的好哥们的婚姻能顺顺利利,和和美美,幸福一生。

Tags: , ,
Posted in 想说就说