存档

2009年6月 的存档

[转]搜狐状告腾讯索赔2051万,警告马化腾不要瞎玩

2009年6月27日 root 没有评论

周立清/腾讯被告了,因为涉嫌不正当竞争,并被索赔2051万元。事情一被爆料,外界就纷纷质疑是炒作,其实在笔者看来不然。ChinaByte论坛( H7 D& C3 n) e4 e+ Q& V
9 h$ `/ J$ s” U+ K5 Z
2005年,因为一个有梦想的年轻人马占凯,因为一个独特的被百度无视的创意,搜狗输入法在搜狐诞生。并迅速以其独创性和颠覆传统输入法的创新,在短短4 年内取得了装机量过亿,占70%以上市场份额的骄人成绩,成功有目共睹。以至于后来谷歌中国眼红,上演了抄袭搜狗输入法的“不作恶”好戏。* n9 a; I& `- S+ `# g

/ p3 l  k/ U/ Q: I3 c话又回到2051万,这个是怎么 算出来的呢?笔者揣测,这很可能是搜狗根据受影响的用户数开出的价钱。据笔者了解,业内软件推广,多以有效用户和有效安装计费,而搜狗在推广输入法时,采 用了一个有效用户1元,一个有效安装0.2元的计费方式。所以如果确如笔者所猜测,搜狗按推广成本向腾讯索赔,那么腾讯QQ拼音至少因不正当竞争手段,最 低影响了2千万以上的搜狗拼音输入法用户,给搜狗输入法造成巨量用户流失。
- h- |2 V7 w5 B8 h’ r0 i# ?bbs.chinabyte.com2 q( n  Z+ Z5 m! P
而QQ输入法的强行干扰做法在普通用户来看,也是无法容忍的,搜狗最终通过法律手段来维护自身和用户利益,也是可以理解的。
+ i1 h- ^  x9 ]# }( c. G” L3 FChinaByte论坛ChinaByte论坛  G! ]9 W! j% j” V: L
腾讯抄袭模仿成风 因QQ拼音成被告只是一个开始
+ U9 q” W2 s% h* J  [( C* Jbbs.chinabyte.com$ v1 J- @# w  J1 A, E; k% A' G) B# W0 a
腾讯QQ从一出生,就被ICQ诉诸法律,后来被迫改名。但是这一变故并没有改变腾讯和马化腾的价值观,从最早的QQ空间“抄袭”日韩网站、QQ堂“抄袭” 泡泡堂、QQ游戏“抄袭”联众游戏、QQ对战平台“抄袭”浩方,到中期的财付通“抄袭”支付宝、QQlive“抄袭”PPlive、QQTalk“抄袭 ”UTalk到最近的穿越火线“抄袭”CS、QQ飞车“抄袭”跑跑卡丁车、拍拍“抄袭”淘宝、QQ音乐“抄袭”千千静听等等等等。bbs.chinabyte.com5 j# X* ~) z2 _! g

! N/ \- E6 n  }几乎在腾讯的所有产品中,很难找到一个独创的产品,几乎每个产品都有别人的影子。所以我们现在来看腾讯,会感觉腾讯因QQ拼音被告只是一个开始,接下来肯定会有更多官司在等着腾讯,虽然可能被控诉的原因不是“抄袭”。
; k5 u% @  v  e
; h2 Z4 {$ |" `bbs.chinabyte.com腾讯只能说是“抄”出来的一个大胖企鹅。
7 |! J2 x  k6 U/ F; v0 G0 R; jChinaByte论坛
. I! ~- [5 r- k7 w7 |( Cbbs.chinabyte.com四面树敌 看QQ影音与暴风影音的争端
6 \1 d. b% b% Z7 J7 ~: N, G" l
7 Y* i' }. n1 Bbbs.chinabyte.com腾讯利用技术手段打压竞争对手绝非偶然,搜狗输入法不是第一个也不是最后一个受害者。ChinaByte论坛7 A4 J; q3 i& E

( D1 }" P6 n' g, P! X. `, rChinaByte论坛在 3月24日暴风影音发布“1对1特别版”后,QQ影音在第二天发布了新版本,刚发布就被爆利用技术手段,在安装过程中,通过禁止暴风影音软件进程方式对已 安装暴风影音的程序进行破坏,并因此给占中国90%以上市场份额的暴风影音的用户造成不良影响。后来在暴风影音准备以接受媒体采访的形式向外界说明情况 时,被腾讯紧急“叫停”,最终和解。5 l. E7 D% I5 i; I( J
5 E5 a! ~# @# l
这次被搜狗告上法庭,并被立案审查,究其原因与QQ影音不正当干扰暴风的争端极其相似,如出一辙,
" {- z9 e6 B, h3 b只不过结果不同。) }' R9 F% t% C$ ?2 @' ~6 c
[; J7 y/ }9 A3 Y
腾讯这个越来越肥的企鹅,总爱什么都插一脚,四面树敌。回顾一下,这次被诉也不是腾讯的第一次,例如之前因QQ堂游戏,被泡泡堂游戏开发公司韩国NEXONHOLDING株式会社起诉、因涉嫌垄断被掌中无限提起诉讼等等。bbs.chinabyte.com! W! g* t$ _) U
ChinaByte论坛8 L7 p9 B! s* J; g$ ?* _
这么看来,腾讯的问题真的会越来越多。
. j. l5 l' r! P7 }( x# DChinaByte论坛% ?$ i4 ~  j6 y- `% V
腾讯缺乏技术研发能力 SOSO是最好例证
l5 P" X; v4 @4 l' y( Zbbs.chinabyte.comChinaByte论坛8 v6 H6 K4 Y/ @) A1 }
搜索引擎一直是门户级别的网站必争之地,搜狐在04年推出搜狗搜索以后,几年间一跃超越中国雅虎,成为中国第三大搜索引擎。- f( V4 e$ }0 h7 ?6 g4 {4 s

5 N# t( h/ k! z而腾讯也不甘寂寞,于05年推出了腾讯SOSO,不过却完全不上道,后来干脆甘做Google的马甲,至今腾讯搜搜上都还挂着Google的招牌。在最近Google被河蟹事件中,SOSO也大受牵连,不能不说是腾讯的悲哀。bbs.chinabyte.com* m2 A; J: ?: V! L. U9 W. D( X
bbs.chinabyte.com' v2 `8 c4 @0 s1 H
由于搜索引擎的技术难度和水平,几乎是互联网应用的最高级的,所以能独自开发、运作搜索引擎,是一个公司技术实力的体现,目前国内包括搜狗在内的多家搜索引擎在技术掌控、研发方面都基本趋于成熟,唯独腾讯是个例外,里外都是个生手。
; e1 Q+ u0 `6 ^. v, ]$ B |” d$ @1 ]/ ?! A
腾讯研究院不搞研发 去卖菜
& i1 U  q3 q8 D; X; K$ g3 ~* w0 D+ s
07年腾讯公司宣布经过了一年多的筹备,投资过亿元的腾讯研究院正式挂牌成立,在介绍中看到,腾讯研究院给自己定位了6个研究领域,如下: a” t: ?9 a9 Z
/ z6 t4 L/ e9 |& b
1、自然语言:中文处理等
! Q* h5 L: p& G, @* Nbbs.chinabyte.com  Q2 U6 K3 o/ u2 j! j
2、多媒体:音视频技术、模式识别等5 X) s1 l. ~* q  S0 |  Y
” _- A/ o: e( u2 c” B
3、网络技术:分布式网络、P2P技术等7 m: Z* x; f% x
& E+ ^2 m, Y% f- |
4、存储:海量存储和管理技术等
) Z; J2 n! ]. ^! e7 ]
- e5 b7 z9 F! {3 j8 s5、数据挖掘:数据分析、对用户行为挖掘理解等9 N% f6 ?. g+ W* u6 i6 v* z

1 i4 Y- K6 _; N- N# M” `bbs.chinabyte.com6、无线:WAP、无线搜索等
( b% r4 N- h- h$ V’ \. L( I7 a  {$ Q2 F1 n- O0 p
转眼已过两年,截至目前,并没有见这个研究院有突破性的产品问世,而且这所谓的六个研究领域陈朽老套,除了无线搜索还算热门外,其它均是互联网上已经成熟的东西,没有任何创新和前瞻。
( d* N” ~2 r& O9 l( u
S4 ~% C5 W) t5 h$ F6 Q据笔者了解,目前QQ影音和QQ旋风归腾讯研究院下属,而且很奇怪的是,这个研究院竟然还负责这些产品的推广、广告合作等业务。放着高技术含量的工作不潜心干,却跑去卖菜?
2 t0 |’ s$ ^! o* Z  q. bbbs.chinabyte.comChinaByte论坛’ p’ l( g( u6 N4 H) i3 ?’ x0 H
最后:搜狗告腾讯,引发的绝不仅仅是以上的简单思考,更深层次的是两个企业各自对待产品、对待用户、对待非用户的态度,如果仅以伤害用户、不正当干扰对手来做产品,会有什么出息呢?腾讯实在该反省。bbs.chinabyte.com+ V8 q3 L6 G7 i
, D, V3 x: ^3 ?& T, p/ O
真正的大企业,应该有独到的前瞻思维和创新能力,光靠耍耍小手段,在面对技术实力型、创新型企业时,没有任何竞争力。
; I/ f5 l0 w  ^
1 B2 x3 G( P’ @$ \bbs.chinabyte.com搜狗状告腾讯的几个重要看点/王英雄ChinaByte论坛: ?# _! e; g% f1 x
8 G” O) t& c& J
“搜狗”“腾讯”两大中国互联网知名品牌将对簿公堂。搜狗认为“QQ拼音输入法”在推广过程中,利用不正当竞争手段损害了自己的利益,搜狗的两家公司 —-北京搜狗信息服务有限公司、北京搜狗科技发展有限公司近日向北京市第二中级法院递交诉状,要求深圳市腾讯计算机系统有限公司以及其关联公司北京奥 蓝德信息科技有限公司赔偿人民币2051万余元,并公开道歉。
: E3 m) N% Z/ `) W5 T8 f% b$ V! QChinaByte论坛# W3 R! k/ \/ }, ^* l
搜狗状告腾讯有几个重要看点:
7 l- r* D8 J3 }5 F7 C6 H% xChinaByte论坛1 w! ]* W3 i8 @. V7 y
1、状告内容4 F* z- f8 s6 F; j1 P” P
bbs.chinabyte.com) Z0 s” f; o( {& e9 T6 z
搜狗在诉状中称,腾讯公司在其网站对“QQ拼音输入法”进行虚假宣传,引人误解,这些宣传包括:“最快、最准、最干净”,“占用系统资源最小,利用最好的算法,最少的损耗,达到最优的性能”,“包含最新最全的流行词汇,任何场合均最适合的输入法”等。
) ~8 d) i+ k6 M! o5 C; E+ {) V* o) J! x+ Q’ Z0 u( w
诉状还称,用户在下载、使用“QQ拼音输入法”软件的同时,腾讯公司采取诱导、欺骗的方法,利用破坏性技术手段直接删除网络用户终端的“搜狗拼音输入法”软件的快捷方式,客观上阻止了网络用户同时使用“搜狗拼音输入法”软件。& ~/ L’ x6 x  C  I. X
ChinaByte论坛4 F% D, G7 H. J- E% [7 o. Z
此外,用户在同时使用“搜狗”“QQ拼音输入法”两种输入法软件时,腾讯公司还利用破坏性技术手段对网络用户的输入法排列顺序进行人为干预,使“搜狗拼音输入法”排序位置始终处于“QQ拼音输入法”之后。0 b. `! L( p4 h( L* f; l+ u” K( r
bbs.chinabyte.com: U4 b% ^, g* W! m8 S0 v, ?* P+ N) u
搜狗很聪明,没用他们的专利,知道专利官司打起来太麻烦。而是中国法律命令禁止的一些内容,比如“最”字的使用。还有一些比较好判断、好取证的内容,比如腾讯输入法在安装过程的一些不正当竞争行为。- O; [  V” P; y( r
6 H0 p’ v9 K0 V$ d; r. v  J
2、受理地点: G  d7 Z- p& T2 S) X) p
bbs.chinabyte.com  a9 N8 I! D8 [1 h) Q1 F” j6 V
此前腾讯的官司大多在深圳南山法院,这个法院虽不是他们家开的,但关系绝对不一样。腾讯很多案件都最后被这个法院接手,比如珊瑚虫就是一个很有代表性的案件。不过这次不一样了,案件起诉地在北京,南山法院没权利插手过来吧。! @& Z+ s2 k* E
+ m% W9 \- t” w, T: O& z
3、搜狗是有备而来。
6 c7 M7 m, @# d* J1 y* E7 R0 p( E7 h% r8 c/ I! V, S
被人告,总是有损大公司形象的。腾讯历来都是模仿、抄袭、山寨著称的,虽然他有些产品做的确实不错。QQ游戏与联众,QQ秀与韩国赛我,QQ旋风与迅雷,QQ堂与泡泡堂,QQ炫舞与劲舞团,QQ影音与暴风影音,腾讯拍拍与淘宝易趣,财付通与支付宝,迅雷与超级旋风。
‘ K1 k% G: o9 y6 u; _8 P
; t3 [- Z: H; \! A; t; p2 \不过之前腾讯搞的都是小一个级别的公司,或者小几个级别的公司,这次和搜狗不一样,搜狗背后是搜狐,都是大公司,而且搜狗是有备而来。ChinaByte论坛5 g& {  S0 C* j

& x/ i; w7 V$ J6 A6 }6 V4、猜测结果,以和解结束bbs.chinabyte.com0 g2 l  k) [: D: r’ w5 \

0 ~; f2 q$ A& i( T3 f估计搜狗并不是真的要腾 讯赔2000万,而是为了警告一下,在市场上玩是可以的,但是不能“拍黑砖”的瞎玩,白道竞争大家都有市场做,共同发展嘛。但如果做某些行为上过线,这是 不允许的。这就像两个商家竞争一样,如果正常搞促销是没问题的,但是背后下刀子,搞黑社会,这是被禁止的,这样做会是行业失衡。bbs.chinabyte.com’ J+ F% I5 B% R% S

7 ?; y5 y1 n+ X! L我抱乐观估计,因为之前有迅雷和腾讯超级旋风的案件结果就是,大家各退一步,正当竞争大家可接受。估计这次也不会差不太多,最近腾讯退一步,搞个厅外和解。

文章确实不错,腾讯就是靠抄袭起家的!BS腾讯!联想也不咋滴~没自己的技术!

分类: 感想想法 标签:

execute、executeQuery和executeUpdate之间的区别

2009年6月26日 root 没有评论

JDBCTM中Statement接口提供的execute、executeQuery和executeUpdate之间的区别

Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。

方法executeQuery
用于产生单个结果集的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法是 executeQuery。这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。

方法executeUpdate
用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。

使用executeUpdate方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。实际上,相对于创建表来说,executeUpdate 用于更新表的时间更多,因为表只需要创建一次,但经常被更新。
方法execute:
用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能

execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。当执行某个已存储过程 或动态执行未知 SQL 字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况,尽管这种情况很少见。
因为方法 execute 处理非常规情况,所以获取其结果需要一些特殊处理并不足为怪。例如,假定已知某个过程返回两个结果集,则在使用方法 execute 执行该过程后,必须调用方法 getResultSet 获得第一个结果集,然后调用适当的 getXXX 方法获取其中的值。要获得第二个结果集,需要先调用 getMoreResults 方法,然后再调用 getResultSet 方法。如果已知某个过程返回两个更新计数,则首先调用方法 getUpdateCount,然后调用 getMoreResults,并再次调用 getUpdateCount。
对于不知道返回内容,则情况更为复杂。如果结果是 ResultSet 对象,则方法 execute 返回 true;如果结果是 Java int,则返回 false。如果返回 int,则意味着结果是更新计数或执行的语句是 DDL 命令。在调用方法 execute 之后要做的第一件事情是调用 getResultSet 或 getUpdateCount。调用方法 getResultSet 可以获得两个或多个 ResultSet 对象中第一个对象;或调用方法 getUpdateCount 可以获得两个或多个更新计数中第一个更新计数的内容。
当 SQL 语句的结果不是结果集时,则方法 getResultSet 将返回 null。这可能意味着结果是一个更新计数或没有其它结果。在这种情况下,判断 null 真正含义的唯一方法是调用方法 getUpdateCount,它将返回一个整数。这个整数为调用语句所影响的行数;如果为 -1 则表示结果是结果集或没有结果。如果方法 getResultSet 已返回 null(表示结果不是 ResultSet 对象),则返回值 -1 表示没有其它结果。也就是说,当下列条件为真时表示没有结果(或没有其它结果):

((stmt.getResultSet() == null) && (stmt.getUpdateCount() == -1))

如果已经调用方法 getResultSet 并处理了它返回的 ResultSet 对象,则有必要调用方法 getMoreResults 以确定是否有其它结果集或更新计数。如果 getMoreResults 返回 true,则需要再次调用 getResultSet 来检索下一个结果集。如上所述,如果 getResultSet 返回 null,则需要调用 getUpdateCount 来检查 null 是表示结果为更新计数还是表示没有其它结果。

当 getMoreResults 返回 false 时,它表示该 SQL 语句返回一个更新计数或没有其它结果。因此需要调用方法 getUpdateCount 来检查它是哪一种情况。在这种情况下,当下列条件为真时表示没有其它结果:

((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))

下面的代码演示了一种方法用来确认已访问调用方法 execute 所产生的全部结果集和更新计数:
stmt.execute(queryStringWithUnknownResults);
while (true) {
int rowCount = stmt.getUpdateCount();
if (rowCount > 0) { // 它是更新计数
System.out.println(”Rows changed = ” + count);
stmt.getMoreResults();
continue;
}
if (rowCount == 0) { // DDL 命令或 0 个更新
System.out.println(” No rows changed or statement was DDL
command”);
stmt.getMoreResults();
continue;
}

// 执行到这里,证明有一个结果集
// 或没有其它结果

ResultSet rs = stmt.getResultSet;
if (rs != null) {
. . . // 使用元数据获得关于结果集列的信息
while (rs.next()) {
. . . // 处理结果
stmt.getMoreResults();
continue;
}
break; // 没有其它结果

分类: 程序设计 标签:

javascript获取和设置FCKeditor内容

2009年6月26日 root 没有评论

利用Javascript取和设FCKeditor值也是非常容易的,如下:

// 获取编辑器中HTML内容
function getEditorHTMLContents(EditorName) {
var oEditor = FCKeditorAPI.GetInstance(EditorName);
return(oEditor.GetXHTML(true));
}

// 获取编辑器中文字内容
function getEditorTextContents(EditorName) {
var oEditor = FCKeditorAPI.GetInstance(EditorName);
return(oEditor.EditorDocument.body.innerText);
}

// 设置编辑器中内容
function SetEditorContents(EditorName, ContentStr) {
var oEditor = FCKeditorAPI.GetInstance(EditorName) ;
oEditor.SetHTML(ContentStr) ;
}

FCKeditorAPI是FCKeditor加载后注册的一个全局对象,利用它我们就可以完成对编辑器的各种操作。

在当前页获得 FCK 编辑器实例:
var Editor = FCKeditorAPI.GetInstance(’InstanceName’);

从 FCK 编辑器的弹出窗口中获得 FCK 编辑器实例:
var Editor = window.parent.InnerDialogLoaded().FCK;

从框架页面的子框架中获得其它子框架的 FCK 编辑器实例:
var Editor = window.FrameName.FCKeditorAPI.GetInstance(’InstanceName’);

从页面弹出窗口中获得父窗口的 FCK 编辑器实例:
var Editor = opener.FCKeditorAPI.GetInstance(’InstanceName’);

获得 FCK 编辑器的内容:
oEditor.GetXHTML(formatted); // formatted 为:true|false,表示是否按HTML格式取出
也可用:
oEditor.GetXHTML();

设置 FCK 编辑器的内容:
oEditor.SetHTML(”content”, false); // 第二个参数为:true|false,是否以所见即所得方式设置其内容。此方法常用于”设置初始值”或”表单重置”哦作。

插入内容到 FCK 编辑器:
oEditor.InsertHtml(”html”); // “html”为HTML文本

检查 FCK 编辑器内容是否发生变化:
oEditor.IsDirty();

在 FCK 编辑器之外调用 FCK 编辑器工具条命令:
命令列表如下:
DocProps, Templates, Link, Unlink, Anchor, BulletedList, NumberedList, About, Find, Replace, Image, Flash, SpecialChar, Smiley, Table, TableProp, TableCellProp, UniversalKey, Style, FontName, FontSize, FontFormat, Source, Preview, Save, NewPage, PageBreak, TextColor, BGColor, PasteText, PasteWord, TableInsertRow, TableDeleteRows, TableInsertColumn, TableDeleteColumns, TableInsertCell, TableDeleteCells, TableMergeCells, TableSplitCell, TableDelete, Form, Checkbox, Radio, TextField, Textarea, HiddenField, Button, Select, ImageButton, SpellCheck, FitWindow, Undo, Redo

使用方法如下:
oEditor.Commands.GetCommand(’FitWindow’).Execute();

= FCKConfig.BasePath + ‘plugins/’
// FCKConfig.Plugins.Add( ‘placeholder’, ‘en,it’ ) ;


去掉//后,就相当于把placeholder这个插件功能加上了,fckeditor的插件文件都在/editor/plugins/文件夹下分类按文 件夹放置的,对于fckeditor2.0来说,里面有两个文件夹,也就是有两个官方插件,placeholder这个文件夹就是我们刚才加上去的,主要 用于多参数或单参数自定义标签的匹配,这个在制作编辑模板时非常管用,要想看具体实例的话,大家可以去下载acms 这个系统查看学习,另一个文件夹tablecommands就是编辑器里的表格编辑用到的了。当然,如果你想制作自己其它用途的插件,那就只要按照 fckeidtor插件的制作规则制作完放置在/editor/plugins/下就行,然后再在fckeidtor.js里再添加 FCKConfig.Plugins.Add(’Plugin Name’,',lang,lang’);就可以了。

第二部分 ,如何让编辑器一打开的时候,编辑工具条不出现,等点“展开工具栏”时才出现?Easy,FCKeditor本身提供了这个功能啦,打开fckconfig.js,找到

FCKConfig.ToolbarStartExpanded = true ;
改成
FCKConfig.ToolbarStartExpanded = false ;
就可以啦!

第三部分,使用自己的表情图标,同样打开fckcofnig.js到最底部那一段
FCKConfig.SmileyPath = FCKConfig.BasePath + ‘images/smiley/msn/’ ;
FCKConfig.SmileyImages = ['regular_smile.gif','sad_smile.gif','wink_smile.gif'] ;
FCKConfig.SmileyColumns = 8 ;
FCKConfig.SmileyWindowWidth = 320 ;
FCKConfig.SmileyWindowHeight = 240 ;

上面这段已经是我修改过的了,为了我发表此文的版面不会被撑得太开,我把FCKConfig.SmileyImages那一行改得只有三个表情图了。

第一行,当然是表情图标路径的设置,第二行是相关表情图标文件名的一个List,第三行是指弹出的表情添加窗口最每行的表情数,下面两个参数是弹出的模态窗口的宽和高喽。

第四部分,文件上传管理部分

此部分可能是大家最为关心的,上一篇文章简单的讲了如何修改来上传文件以及使用fckeidtor2.0才提供的快速上传功能。再我们继续再深层次的讲解上传功能

FCKConfig.LinkBrowser = true ;
FCKConfig.ImageBrowser = true ;
FCKConfig.FlashBrowser = true ;在fckconfig.js找到这三句,这三句不是连着的哦,只是我把他们集中到这儿来了,设置为true的意思就是允许使用fckeditor来浏览 服务器端的文件图像以及flash等,这个功能是你插入图片时弹出的窗口上那个“浏览服务器”按钮可以体现出来,如果你的编辑器只用来自己用或是只在后台 管理用,这个功能无疑很好用,因为他让你很直观地对服务器的文件进行上传操作。但是如果你的系统要面向前台用户或是像blog这样的系统要用的话,这个安 全隐患可就大了哦。于是我们把其一律设置为false;如下

FCKConfig.LinkBrowser = false ;
FCKConfig.ImageBrowser = false ;
FCKConfig.FlashBrowser = false ;

这样一来,我们就只有快速上传可用了啊,好!接下来就来修改,同样以asp为范例进行,进入/editor/filemanager/upload/asp/打开config.asp,修改
ConfigUserFilesPath = “/UserFiles/”这个设置是上传文件的总目录,我这里就不动了,你想改自己改了

好,再打开此目录下的upload.asp文件,找到下面这一段
Dim resourceType
If ( Request.QueryString(”Type”) <> “” ) Then
resourceType = Request.QueryString(”Type”)
Else
resourceType = “File”
End If
然后再在其后面添加
ConfigUserFilesPath = ConfigUserFilesPath & resourceType &”/”& Year(Date()) &”/”& Month(Date()) &”/”
这样的话,上传的文件就进入“/userfiles/文件类型(如image或file或flash)/年/月/”这样的文件夹下了,这个设置对单用户来用已经足够了,如果你想给多用户系统用,那就这样来改
ConfigUserFilesPath = ConfigUserFilesPath & Session(”username”) & resourceType &”/”& Year(Date()) &”/”& Month(Date()) &”/”
这样上传的文件就进入“/userfiles/用户目录/文件类型/年/月/”下了,当然如果你不想这么安排也可以修改成别的,比如说用户目录再深一层等,这里的Session(”username”)请根据自己的需要进行修改或换掉。

上传的目录设置完了,但是上传程序还不会自己创建这些文件夹,如果不存在的话,上传不会成功的,那么我们就得根据上面的上传路径的要求进行递归来生成目录了。

找到这一段
Dim sServerDir
sServerDir = Server.MapPath( ConfigUserFilesPath )
If ( Right( sServerDir, 1 ) <> “\” ) Then
sServerDir = sServerDir & “\”
End If

把它下面的这两行
Dim oFSO
Set oFSO = Server.CreateObject( “Scripting.FileSystemObject” )
用下面这一段代码来替换
dim arrPath,strTmpPath,intRow
strTmpPath = “”
arrPath = Split(sServerDir, “\”)
Dim oFSO
Set oFSO = Server.CreateObject( “Scripting.FileSystemObject” )
for intRow = 0 to Ubound(arrPath)
strTmpPath = strTmpPath & arrPath(intRow) & “\”
if oFSO.folderExists(strTmpPath)=false then
oFSO.CreateFolder(strTmpPath)
end if
next
用这段代码就可以生成你想要的文件夹了,在上传的时候自动生成。

好了,上传文件的修改到现在可以暂时告一段落了,但是,对于中文用户还存在这么个问题,就是fckeditor的文件上传默认是不改名的,同时还不 支持中文文件名,这样一来是上传的文件会变成“.jpg”这样的无法读的文件,再就是会有重名文件,当然重名这点倒没什么,因为fckeditor会自动 改名,会在文件名后加(1)这样来进行标识。但是,我们通常的习惯是让程序自动生成不重复的文件名

在刚才那一段代码的下面紧接着就是
‘ Get the uploaded file name.
sFileName = oUploader.File( “NewFile” ).Name
看清楚了,这个就是文件名啦,我们来把它改掉,当然得有个生成文件名的函数才行,改成下面这样

‘//取得一个不重复的序号
Public Function GetNewID()
dim ranNum
dim dtNow
randomize
dtNow=Now()
ranNum=int(90000*rnd)+10000
GetNewID=year(dtNow) & right(”0″ & month(dtNow),2) & right(”0″ & day(dtNow),2) & right(”0″ & hour(dtNow),2) & right(”0″ & minute(dtNow),2) & right(”0″ & second(dtNow),2) & ranNum
End Function

‘ Get the uploaded file name.
sFileName = GetNewID() &”.”& split(oUploader.File( “NewFile” ).Name,”.”)(1)

上传的文件就自动改名生成如20050802122536365.jpg这样的文件名了,是由年月日时分秒以及三位随机数组成的文件名了

=====================================

FCKeditor加载完成后做处理的方法

function FCKeditor_OnComplete( editorInstance )
{
editorInstance.Events.AttachEvent( ‘OnBlur’ , FCKeditor_OnBlur ) ;
editorInstance.Events.AttachEvent( ‘OnFocus’, FCKeditor_OnFocus ) ;
}

function FCKeditor_OnBlur( editorInstance )
{
editorInstance.ToolbarSet.Collapse() ;
}

function FCKeditor_OnFocus( editorInstance )
{
editorInstance.ToolbarSet.Expand() ;
}

分类: 程序设计 标签:

自己的几个站点PR上升了!

2009年6月24日 root 没有评论

今天本不是google的PR更新的日子,但是自己的几个站点今天PR都开始更新了。几个网站的PR从没有(没有跟pr=0是不一样的),一下子调到了3,几个导航的网站pr也上升到了2。可能是因为导航网站没有什么内容,所以升到了2 而不是3!说起来这PR其实应该很容易上升的,在我上升到PR=3的站点中:http://www.chejaja.com/ 是上线最晚的一个,域名是2009年6月10日注册的,网站是6月12日上线的!今天是2009年6月24日,今天打开网站发现pr竟然上升到了3!太不可思议了!

现在看来,google的pr不是什么很神秘的东西了!要想pr上升很容易的,只要你能找到高质量的外连!其实我的这几个站根本没找什么外连,只借助了下一个PR=5的网站首页的连接!就让一个刚刚上线不到15天的网站pr上升到了3!现在想想前几天看到的那个文章,他的博客PR从0一跃到5的的事情也不是很难,在他的博客上他说他引进了几个pr=6的网站连接。当然了,如果有几个pr=6的网站连入!pr上升应该是很容易的!

分类: 感想想法 标签:

让桌面旋转起来的摩天轮小程序!

2009年6月23日 root 没有评论

今天前同事在Q上发给我一个小程序,摩天轮.exe,首先排除了是病毒,因为开始先给我发了下消息,正式了对方就是的前同事。就有点怀疑是一些恶搞的程序。但是一看是.exe文件,那估计就是一些恶搞的小程序了!

QQ接受以后自动重新命名成了 摩天轮.exe.重命名 ,QQ2009现在对文件的传输起到了保护作用,现在的方法挺好的。以前传不了exe文件,现在给自动重新命名,减少了用户的误操作。重新命名后双击打开!桌面就开始滚动起来,先往左滚然后又往右,最后还往上和往下滚动 一共四次才停止!滚动当中真有点害怕,怕它不停止,一直在想着调任务管理器。但是想了下,是同事给的,可能不会那么不好吧,应该会停止下来的!最后转完了还是停止下来了!

这个小程序有点意思!愚人节可以给朋友发下玩玩的!呵呵!

小程序下载:摩天轮

分类: 桌面应用 标签:

FCKeditor 2.4.1 Java压缩版(上传图片自动重命名)

2009年6月22日 root 没有评论

使用FCKeditor java版本的演示程序的时候上传文件名不自动重新命名,如果是中文的话会出现一点小问题。于是从网上搜索自动重新命名的版本,始终没找到!无奈自己编译了下原文件,把设置成了文件上传后重新自动命名。文件名是根据当时时间命名,用的是Data 的getTime()方法!
改变文件默认上传路径是修改fckeditor.properties 添加默认上传路径和上传文件类型的定义。fckeditor.properties的修改参照net.fckeditor.handlers.default.properties文件中的定义修改,fckeditor.properties的配置优先级别高于default.properties中的设置。default.properties中的默认配置如:

#
# FCKeditor – The text editor for Internet – http://www.fckeditor.net
# Copyright (C) 2003-2008 Frederico Caldeira Knabben
#
# == BEGIN LICENSE ==
#
# Licensed under the terms of any of the following licenses at your
# choice:
#
# – GNU General Public License Version 2 or later (the “GPL”)
# http://www.gnu.org/licenses/gpl.html
#
# – GNU Lesser General Public License Version 2.1 or later (the “LGPL”)
# http://www.gnu.org/licenses/lgpl.html
#
# – Mozilla Public License Version 1.1 or later (the “MPL”)
# http://www.mozilla.org/MPL/MPL-1.1.html
#
# == END LICENSE ==
#
# Default properties for FCKeditor.Java
#
# @version $Id: default.properties 1632 2008-02-25 18:11:06Z th-schwarz $

# default allowed extensions settings
connector.resourceType.file.extensions.allowed = 7z|aiff|asf|avi|bmp|csv|doc|fla|flv|gif|gz|gzip|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|ods|odt|pdf|png|ppt|pxd|qt|ram|rar|rm|rmi|rmvb|rtf|sdc|sitd|swf|sxc|sxw|tar|tgz|tif|tiff|txt|vsd|wav|wma|wmv|xls|xml|zip
connector.resourceType.image.extensions.allowed = bmp|gif|jpeg|jpg|png
connector.resourceType.flash.extensions.allowed = swf|fla
connector.resourceType.media.extensions.allowed = aiff|asf|avi|bmp|fla|flv|gif|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|png|qt|ram|rm|rmi|rmvb|swf|tif|tiff|wav|wma|wmv

# default resource type paths
connector.resourceType.file.path = /file
connector.resourceType.image.path = /image
connector.resourceType.flash.path = /flash
connector.resourceType.media.path = /media

# Due to security issues with Apache modules, it is recommended to leave this
# setting enabled.
connector.forceSingleExtension = true

# base directory for the user files relative to the context root
connector.userFilesPath = /userfiles

# Instructs the Connector to return the full URL of a file/folder in the XML
# response rather than the absolute URL
connector.fullUrl = false

# Instructs the Connector to check, if the uploaded image is really one
connector.secureImageUploads = true

# directory of the editor relative to the context root
fckeditor.basePath = /fckeditor

# default height of the editor
fckeditor.height = 200

# default toolbar set of the editor
fckeditor.toolbarSet = Default

# default width of the editor
fckeditor.width = 100%

# some messages
message.enabled_tag.compatible_browser.no = Your browser is not compatible
message.enabled_tag.compatible_browser.yes = Your browser is fully compatible
message.enabled_tag.connector.file_browsing.disabled = The Connector is disabled for FileBrowsing
message.enabled_tag.connector.file_browsing.enabled = The Connector is enabled for FileBrowsing
message.enabled_tag.connector.file_upload.disabled = The Connector is disabled for FileUpload
message.enabled_tag.connector.file_upload.enabled = The Connector is enabled for FileUpload

文件默认上传路径修改:connector.userFilesPath = /userfiles

上传文件自动重命名(含精简了的编辑器):fckeditor 2.4.1

FCKeditor 2.4.1 演示程序下载:http://www.6tbl.com/post/155/

Google AdSense 申请再次失败,不过看到了希望之火!

2009年6月22日 root 没有评论

以前也申请过google的AdSense,可是由于一直没有一个像样的网站,前几次都失败了,也就在没时间去搞。前几天又去申请了一下,这次用的是自己的博客。网上都在说要申请google的AdSense需要域名注册6个月以上,因为自己的博客域名注册也就一个月左右,所以自己也没抱有多大的希望。今天下午收到了google的邮件,从邮件上看说是“我们在审核了您的申请,并肯定您的网站质量”,好像我的博客符合了申请的资格,只是需要对网站的搜索权进行下确认。现在按照邮件中所写,上传了一个txt文档,再次进行了提交,希望这次能通过!

×××,您好!

感谢您关注 Google AdSense。很抱歉,在审查您的申请后,

我们目前无法接受您加入 Google AdSense。

我们未批准您申请的原因如下。

问题:

- 域名所有权

———————

更多详情:

域名所有权:我们在审核了您的申请,并肯定您的网站质量,
期待着您加入 AdSense 后与我们的良好的合作前景。在最终批准您的申请之前,我们需要进一步确认您对该网站 www.6tbl.com 的所有权,以便将来更好的为您服务。

所以烦请您在您的网站 www.6tbl.com 的根目录下创建一个网页 www.6tbl.com/adsense.txt,并粘贴”本人 ××× 声明确认我对本网站的所有权,同时确认本网站遵守 Google AdSense 计划政策和条款。”至该页面,然后以该网页 www.6tbl.com/adsense.txt 作为申请的”网站网址”重新提交申请。我们会第一时间核实您的申请,并及时通过邮件通知您申请结果。

我们期待您早日加入AdSense,成为我们的优质发布商!谢谢您对我们工作的理解与支持,祝您一切顺利!

———————

有关详情和关于申请的建议,请访问:https://www.google.com/adsense/support/bin/answer.py?answer=75109

要更新并重新提交申请,请访问 https://www.google.com/adsense?hl=zh_CN 并使用您在申请时提交的电子邮件地址和密码登录。我们的专家会审核您的帐户,以检查帐户是否符合我们的计划政策,所以,请务必在解决上面列出的所有问题后再重新提交。

有关 AdSense 标准的完整列表,请访问:https://www.google.com/adsense/policies?hl=zh_CN
https://www.google.com/adsense/localized-terms?hl=zh_CN

如有任何问题,欢迎通过以下链接随时与我们联系:https://www.google.com/adsense/support/bin/request.py? 。

Google AdSense 小组敬上

分类: 网站设计 标签: ,

jassistant 1.06 JDBDevelop Assistant数据库生成java程序

2009年6月22日 root 没有评论

The assistant is a class and a package browser. It is divided into two parts: the main class browser and the package viewer. A third options window may be opened to control the program behavior. The main goal of this program is to be able to find very quickly a class, its source, its methods, fields, constructors… and to be able to explore the packages. Completion, and class homonyms may be enabled. Concerning the package viewer, well, you have the package hierarchy and the class hierarchy inside a selected package, which is the inheritance hierarchy inside a package. The classes which appear with an icon marked “i” are interface classes and the ones with an “a” are abstract classes. The options window allows to put filters for the lists which are given: definition with long or short names, filter on the scope (public, package, protected, private), filter on the modifiers (native, abstract, static…), the order for the search of the sources (java, jj, decompile or disassemble), sorting options and an uptdate package button to reread all your packages. The assistant was swing free. At the beginning I was happy to use swing, which is very nice, and that’s why I have a swing package too. But as time passed I saw that swing had bugs and that it was not usable in a real program because it is too slow! This is the reason why I have my own tree classes in pure AWT java! It seems now that swing has been improved, specially 1.1.1, so… I came back to it for the code viewer. This explains that the code is in majority pure AWT, and the viewer in Swing.
assist

绿色版本下载:jassistant(RAR)

分类: 程序设计 标签:

天河流量王 4.6最新版本 网站流量必用

2009年6月20日 root 没有评论

这个软件是在软件内自动打开页面刷的。你要先刷到100分,这不用几分钟就能刷到。超过100分,别人就可以打开你的提交的页面去刷。
注意!你提交的页面一定要没有恶意代码或者病毒,否则是不会通过审查的。每天晚上23点你提交的页面会得到审查,通过后别人才能刷你的。这也是为大家的安全着想。
通过这个软件可以让你的网站每天有几千的IP的,对网站流量有一定的作用!

thpage

下载:thpage

分类: SEO优化 标签:

Tomcat url地址转换urlrewritefilter-3.2.0

2009年6月20日 root 没有评论

web.xml中添加方法:

1
2
3
4
5
6
7
8
9
10
11
12
    <filter>
      <filter-name>UrlRewriteFilter</filter-name>
      <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
      <init-param>
	   <param-name>confPath</param-name>
	   <param-value>/WEB-INF/config/urlrewrite.xml </param-value>
	  </init-param>
    </filter>
    <filter-mapping>
      <filter-name>UrlRewriteFilter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>

urlrewrite.xml 示例:

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
88
89
90
91
92
93
94
95
96
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
        "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
 
<!--
 
    Configuration file for UrlRewriteFilter
    http://tuckey.org/urlrewrite/
 
-->
<urlrewrite>
 
    <rule>
        <note>
            The rule means that requests to /test/status/ will be redirected to /rewrite-status
            the url will be rewritten.
        </note>
        <from>/test/status/</from>
        <to type="redirect">%{context-path}/rewrite-status</to>
    </rule>
 
 
    <outbound-rule>
        <note>
            The outbound-rule specifies that when response.encodeURL is called (if you are using JSTL c:url)
            the url /rewrite-status will be rewritten to /test/status/.
 
            The above rule and this outbound-rule means that end users should never see the
            url /rewrite-status only /test/status/ both in thier location bar and in hyperlinks
            in your pages.
        </note>
        <from>/rewrite-status</from>
        <to>/test/status/</to>
    </outbound-rule>
 
 
    <!--
 
    INSTALLATION
 
        in your web.xml add...
 
        <filter>
            <filter-name>UrlRewriteFilter</filter-name>
            <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
            <init-param>
                <param-name>logLevel</param-name>
                <param-value>WARN</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>UrlRewriteFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
 
     EXAMPLES
 
     Redirect one url
        <rule>
            <from>/some/old/page.html</from>
            <to type="redirect">/very/new/page.html</to>
        </rule>
 
    Redirect a directory
        <rule>
            <from>/some/olddir/(.*)</from>
            <to type="redirect">/very/newdir/$1</to>
        </rule>
 
    Clean a url
        <rule>
            <from>/products/([0-9]+)</from>
            <to>/products/index.jsp?product_id=$1</to>
        </rule>
    eg, /products/1234 will be passed on to /products/index.jsp?product_id=1234 without the user noticing.
 
    Browser detection
        <rule>
            <condition name="user-agent">Mozilla/[1-4]</condition>
            <from>/some/page.html</from>
            <to>/some/page-for-old-browsers.html</to>
        </rule>
    eg, will pass the request for /some/page.html on to /some/page-for-old-browsers.html only for older
    browsers whose user agent srtings match Mozilla/1, Mozilla/2, Mozilla/3 or Mozilla/4.
 
    Centralised browser detection
        <rule>
            <condition name="user-agent">Mozilla/[1-4]</condition>
            <set type="request" name="browser">moz</set>
        </rule>
    eg, all requests will be checked against the condition and if matched
    request.setAttribute("browser", "moz") will be called.
 
    -->
 
</urlrewrite>

下载:urlrewritefilter-3.2.0