如鹏网 大学生计算机学习社区

CowNew开源团队

http://www.cownew.com 邮件请联系 about521 at 163.com

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  363 随笔 :: 2 文章 :: 808 评论 :: 0 Trackbacks

#

在使用数据选择器的时候(ValueObjectDataPicker),如果只有一条数据,显示窗口的时候,提示document.formDataList.selectId[...]为空或不是对象。
这是一个Bug,修改WebContent\Ctrl\ValueObjectDataPicker.jsp 的getSelectedData 方法开头如下添加代码:
function getSelectedData()
{
if(document.formDataList.selectId.constructor != Array)
{
    var ret = new Array();
    ret[0] = document.formDataList.selectId;
    return ret;
}
var selectIndex=-1;
…………………………
}
posted @ 2008-11-13 23:05 CowNew开源团队 阅读(420) | 评论 (0)编辑 收藏

 

shupi 

Chinapub在线购买地址:http://www.china-pub.com/301651

当当网在线购买地址:http://product.dangdang.com/product.aspx?product_id=20368319

试读电子版下载:
下载地址1:http://www.blogjava.net/Files/huanzhugege/cxydSQLjd.zip
下载地址2: http://www.namipan.com/d/2ec1eacc92d2678a38095bef1d19ed938f78831d6f791500
第一本专门为程序员编写的数据库图书

《程序员的SQL金典》

  • 将子查询、表连接、数据库语法差异等用通俗易懂、诙谐幽默的语言讲解出来
  • 配合大量真实案例,学了就能用,在短时间内成为数据库开发高手
  • 高度提取不同数据库的共同点,仔细分析不同点,并给出解决方案,同时学会MSSQLServer、MYSQL、Oracle、DB2数据库不再是梦
  • 国内第一本讲解开窗函数实际应用的图书

轻举技术之“纲”,张合用之“目”,锻造SQL高可用性数据库应用指南从理论到实践,凝聚SQL主流数据库最前沿的技术要领。

本书特色:主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在MySQL、MS SQL Server、Oracle和DB2中的差异进行了分析;详细讲解数据库对增、删、改、查等SQL的支持并给出了相应的SQL应用案例;透彻分析函数、子查询、表连接、不同DBMS中的SQL语法差异、SQL调优、NULL值处理、事务、开窗函数等高级技术;通过对实际案例开发过程的详细分析,使读者掌握SQL的综合应用技巧。

内容提要

本书主要介绍SQL以及在实际开发中的应用,并且对SQL在MYSQL、MSSQLServer、Oracle和DB2中的差异性进行了分析。本书分为三部分:第一部分为基础篇,主要讲解数据库对增删改查等SQL的支持,给出了这些SQL的应用案例;第二部分为进阶篇,讲解了函数、子查询、表联接、不同DBMS中SQL语法差异、SQL调优、NULL值处理、事务、开窗函数等高级技术;第三部分为案例篇,讲解了前两部分的知识的综合运用。此书适用于学习数据库编程的读者,对于有一定数据库开发经验的读者也有非常大的参考价值。

前言

市面上讲解数现在据库的书都花了很多篇幅讲解数据库的备份、授权、调优、修复、监控等内容,这些内容是数据库管理员(DBA)应该掌握的,而对于程序员来说更需要去掌握的则是SQL语句的使用。但是市面上专门讲解SQL语句的书非常少,初学者学习数据库开发过程中常常被那些写给DBA的书弄的晕头转向,无法真正快速的掌握SQL技术;而且这些书中讲解的SQL也常常是针对特定数据库系统的专有实现,无法很容易的在其他数据库系统中运行,读者需要阅读大量的书和查阅大量的文档才能掌握不同数据库系统的使用。

本书是专门写给程序员的,因此没有讲解备份、授权、调优、修复、监控等开发人员不关心的内容,直接从SQL语句入手让读者快速的掌握数据库开发的技能。“面向开发人员,讲解对开发人员最有用的知识”是本书的编写宗旨。

MYSQL、MSSQLServer、Oracle和DB2等都是非常流行的数据库管理系统(DBMS),虽然在大部分SQL语法上这些DBMS实现都是一致的,不过在实现细节以及高级语法方面这些DBMS的实现差异还是非常大的。如果编写能够兼容这些DBMS的SQL语句是开发人员经常需要面对的问题。本书将帮助读者从根本上解决这个问题。

很多开发人员对于SQL语句的掌握只限于简单的SELECT、UPDATE语句,对于稍微复杂的逻辑经常需要编写程序代码来完成,这不仅无法发挥数据库的优势,而且开发出的系统性能非常低,而如果能够使用数据库函数、子查询、表联接、开窗函数等高级的SQL特性则可以大大简化系统开发的难度,并且提高系统的性能。本书将对这些高级特性进行详细的讲解。

本书第1、2章介绍数据库系统的基本知识以及基本操作;第3章介绍Insert、Delete和Update语句的基本应用;第4章对Select语句进行全面的介绍,对模糊匹配、分组、限制数据条数、计算字段、组合查询等高级内容进行了重点的讲解;第5章介绍常用的数据库函数以及它们在主流DBMS中的实现差异;第6章介绍索引与约束等知识点;第7、8章分别介绍表连接、子查询等高级查询技术;第9章对主流DBMS的语法差异进行分析,并且给出了解决方案;第10章介绍注入漏洞攻击、SQL调优、事务、自动增长字段、NULL值处理、开窗函数等高级话题;第11章以一个案例讲解书中知识点在实际开发中的应用。

在此,我要感谢为这本书的诞生给于我帮助的所有人。首先我要感谢CowNew开源团队的朋友们一直以来的无私奉献;感谢KingChou在开发CowNewSQL过程中的卓越工作,没有CowNewSQL也就不会有这本书的问世;还要感谢EasyJF的蔡世友,他一直以来对开源事业的奉献是值得我学习的;最后我要感谢电子工业出版社的田小康经理,他的高效工作使得本书能够顺利的完成和出版。

如果您对我的书有任何意见和建议,您可以给我发送邮件:about521@163.com,本书相关的后续资料将会发布到CowNew开源团队网站(http://www.cownew.com)中。

第1章 数据库入门 1

1.1 数据库概述 1

1.1.1 数据库与数据库管理系统 1

1.1.2 数据库能做什么 2

1.1.3 主流数据库管理系统介绍 2

1.2 数据库基础概念 5

1.2.1 Catalog 5

1.2.2 表(Table) 6

1.2.3 列(Column) 7

1.2.4 数据类型(DataType) 8

1.2.5 记录(Record) 9

1.2.6 主键(PrimaryKey) 9

1.2.7 索引(Index) 10

1.2.8 表关联 12

1.2.9 数据库的语言——SQL 13

1.2.10 DBA与程序员 14

第2章 数据表的创建和管理 17

2.1 数据类型 17

2.1.1 整数类型 17

2.1.2 数值类型 19

2.1.3 字符相关类型 21

2.1.4 日期时间类型 23

2.1.5 二进制类型 24

2.2 通过SQL语句管理数据表 25

2.2.1 创建数据表 25

2.2.2 定义非空约束 26

2.2.3 定义默认值 27

2.2.4 定义主键 27

2.2.5 定义外键 29

2.2.6 修改已有数据表 30

2.2.7 删除数据表 31

2.2.8 受限操作的变通解决方案 31

第3章 数据的增、删、改 33

3.1 数据的插入 34

3.1.1 简单的INSERT语句 34

3.1.2 简化的INSERT语句 36

3.1.3 非空约束对数据插入的影响 36

3.1.4 主键对数据插入的影响 37

3.1.5 外键对数据插入的影响 38

3.2 数据的更新 38

3.2.1 简单的数据更新 39

3.2.2 带WHERE子句的UPDATE语句 40

3.2.3 非空约束对数据更新的影响 41

3.2.4 主键对数据更新的影响 42

3.2.5 外键对数据更新的影响 42

3.3 数据的删除 43

3.3.1 简单的数据删除 43

3.3.2 带WHERE子句的DELETE语句 44

第4章 数据的检索 47

4.1 SELECT基本用法 48

4.1.1 简单的数据检索 48

4.1.2 检索出需要的列 49

4.1.3 列别名 51

4.1.4 按条件过滤 52

4.1.5 数据汇总 53

4.1.6 排序 56

4.2 高级数据过滤 59

4.2.1 通配符过滤 59

4.2.2 空值检测 63

4.2.3 反义运算符 64

4.2.4 多值检测 65

4.2.5 范围值检测 66

4.2.6 低效的“WHERE 1=1” 68

4.3 数据分组 72

4.3.1 数据分组入门 74

4.3.2 数据分组与聚合函数 76

4.3.3 HAVING语句 79

4.4 限制结果集行数 81

4.4.1 MySQL 81

4.4.2 MS SQL Server 2000 82

4.4.3 MS SQL Server 2005 83

4.4.4 Oracle 84

4.4.5 DB2 86

4.4.6 数据库分页 88

4.5 抑制数据重复 90

4.6 计算字段 91

4.6.1 常量字段 92

4.6.2 字段间的计算 93

4.6.3 数据处理函数 95

4.6.4 字符串的拼接 97

4.6.5 计算字段的其他用途 103

4.7 不从实体表中取的数据 105

4.8 联合结果集 107

4.8.1 简单的结果集联合 108

4.8.2 联合结果集的原则 110

4.8.3 UNION ALL 112

4.8.4 联合结果集应用举例 114

第5章 函数 119

5.1 数学函数 122

5.1.1 求绝对值 122

5.1.2 求指数 122

5.1.3 求平方根 123

5.1.4 求随机数 123

5.1.5 舍入到最大整数 125

5.1.6 舍入到最小整数 126

5.1.7 四舍五入 127

5.1.8 求正弦值 128

5.1.9 求余弦值 129

5.1.10 求反正弦值 129

5.1.11 求反余弦值 130

5.1.12 求正切值 130

5.1.13 求反正切值 131

5.1.14 求两个变量的反正切 131

5.1.15 求余切 132

5.1.16 求圆周率π值 132

5.1.17 弧度制转换为角度制 133

5.1.18 角度制转换为弧度制 134

5.1.19 求符号 134

5.1.20 求整除余数 135

5.1.21 求自然对数 136

5.1.22 求以10为底的对数 136

5.1.23 求幂 137

5.2 字符串函数 137

5.2.1 计算字符串长度 138

5.2.2 字符串转换为小写 138

5.2.3 字符串转换为大写 139

5.2.4 截去字符串左侧空格 139

5.2.5 截去字符串右侧空格 140

5.2.6 截去字符串两侧的空格 141

5.2.7 取子字符串 143

5.2.8 计算子字符串的位置 144

5.2.9 从左侧开始取子字符串 145

5.2.10 从右侧开始取子字符串 146

5.2.11 字符串替换 147

5.2.12 得到字符的ASCII码 148

5.2.13 得到一个ASCII码数字对应的字符 149

5.2.14 发音匹配度 151

5.3 日期时间函数 153

5.3.1 日期、时间、日期时间与时间戳 153

5.3.2 主流数据库系统中日期时间类型的表示方式 154

5.3.3 取得当前日期时间 154

5.3.4 日期增减 157

5.3.5 计算日期差额 166

5.3.6 计算一个日期是星期几 172

5.3.7 取得日期的指定部分 177

5.4 其他函数 183

5.4.1 类型转换 183

5.4.2 空值处理 188

5.4.3 CASE函数 191

5.5 各数据库系统独有函数 194

5.5.1 MySQL中的独有函数 195

5.5.2 MS SQL Server中的独有函数 202

5.5.3 Oracle中的独有函数 206

第6章 索引与约束 209

6.1 索引 209

6.2 约束 211

6.2.1 非空约束 211

6.2.2 唯一约束 212

6.2.3 CHECK约束 217

6.2.4 主键约束 221

6.2.5 外键约束 224

第7章 表连接 233

7.1 表连接简介 236

7.2 内连接(INNER JOIN) 236

7.3 不等值连接 240

7.4 交叉连接 241

7.5 自连接 245

7.6 外部连接 248

7.6.1 左外部连接 250

7.6.2 右外部连接 251

7.6.3 全外部连接 252

第8章 子查询 255

8.1 子查询入门 261

8.1.1 单值子查询 261

8.1.2 列值子查询 263

8.2 SELECT列表中的标量子查询 265

8.3 WHERE子句中的标量子查询 267

8.4 集合运算符与子查询 270

8.4.1 IN运算符 270

8.4.2 ANY和SOME运算符 272

8.4.3 ALL运算符 274

8.4.4 EXISTS运算符 275

8.5 在其他类型SQL语句中的子查询应用 277

8.5.1 子查询在INSERT语句中的应用 277

8.5.2 子查询在UPDATE语句中的应用 283

8.5.3 子查询在DELETE语句中的应用 285

第9章 主流数据库的SQL语法差异解决方案 287

9.1 SQL语法差异分析 287

9.1.1 数据类型的差异 287

9.1.2 运算符的差异 288

9.1.3 函数的差异 289

9.1.4 常用SQL的差异 289

9.1.5 取元数据信息的差异 290

9.2 消除差异性的方案 293

9.2.1 为每种数据库编写不同的SQL语句 293

9.2.2 使用语法交集 294

9.2.3 使用SQL实体对象 294

9.2.4 使用ORM工具 295

9.2.5 使用SQL翻译器 296

9.3 CowNewSQL翻译器 299

9.3.1 CowNewSQL支持的数据类型 299

9.3.2 CowNewSQL支持的SQL语法 300

9.3.3 CowNewSQL支持的函数 305

9.3.4 CowNewSQL的使用方法 309

第10章 高级话题 313

10.1 SQL注入漏洞攻防 313

10.1.1 SQL注入漏洞原理 313

10.1.2 过滤敏感字符 314

10.1.3 使用参数化SQL 315

10.2 SQL调优 316

10.2.1 SQL调优的基本原则 317

10.2.2 索引 317

10.2.3 全表扫描和索引查找 318

10.2.4 优化手法 318

10.3 事务 324

10.3.1 事务简介 324

10.3.2 事务的隔离 325

10.3.3 事务的隔离级别 326

10.3.4 事务的使用 327

10.4 自动增长字段 327

10.4.1 MySQL中的自动增长字段 327

10.4.2 MS SQL Server中的自动增长字段 328

10.4.3 Oracle中的自动增长字段 329

10.4.4 DB2中的自动增长字段 332

10.5 业务主键与逻辑主键 333

10.6 NULL的学问 334

10.6.1 NULL与比较运算符 336

10.6.2 NULL和计算字段 337

10.6.3 NULL和字符串 338

10.6.4 NULL和函数 339

10.6.5 NULL和聚合函数 339

10.7 开窗函数 340

10.7.1 开窗函数简介 342

10.7.2 PARTITION BY子句 344

10.7.3 ORDER BY子句 346

10.7.4 高级开窗函数 353

10.8 WITH子句与子查询 360

第11章 案例讲解 363

11.1 报表制作 371

11.1.1 显示制单人详细信息 371

11.1.2 显示销售单的详细信息 373

11.1.3 计算收益 374

11.1.4 产品销售额统计 378

11.1.5 统计销售记录的份额 379

11.1.6 为采购单分级 380

11.1.7 检索所有重叠日期销售单 383

11.1.8 为查询编号 385

11.1.9 标记所有单内最大销售量 386

11.2 排序 389

11.2.1 非字段排序规则 389

11.2.2 随机排序 390

11.3 表间比较 391

11.3.1 检索制作过采购单的人制作的销售单 391

11.3.2 检索没有制作过采购单的人制作的销售单 392

11.4 表复制 394

11.4.1 复制源表的结构并复制表中的数据 394

11.4.2 只复制源表的结构 395

11.5 计算字符在字符串中出现的次数 396

11.6 去除最高分、最低分 396

11.6.1 去除所有最低、最高值 397

11.6.2 只去除一个最低、最高值 397

11.7 与日期相关的应用 398

11.7.1 计算销售确认日和制单日之间相差的天数 398

11.7.2 计算两张销售单之间的时间间隔 399

11.7.3 计算销售单制单日期所在年份的天数 401

11.7.4 计算销售单制单日期所在月份的第一天和最后一天 402

11.8 结果集转置 403

11.8.1 将结果集转置为一行 404

11.8.2 把结果集转置为多行 406

11.9 递归查询 410

11.9.1 Oracle中的CONNECT BY子句 410

11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数 414

11.9.3 My SQL Server和DB2中递归查询 415

附录A 常用数据库系统的安装和使用 417

A.1 DB2的安装和使用 417

A.2 MySQL的安装和使用 429

A.3 Oracle的安装和使用 441

A.4 Microsoft SQL Server的安装和使用 452

20081021

posted @ 2008-10-23 09:58 CowNew开源团队 阅读(2344) | 评论 (2)编辑 收藏

C-Free是一个非常好用的C/C++开发工具,由于C-Free的内置组件比较老,而且一些设置不太合理,所以要发挥C-Free的最大优势还要对其进行设置上的调整。

本文中的C-Free使用的是4.1版本。

一、升级MinGW

    C-Free使用的内置版本的MinGW是2.95版本的,这个版本已经非常老了,对于C/C++的新语法、新格式的资源文件、新格式的对话框资源等都支持非常差,特别是如果要开发基于对话框的Windows程序的话只能使用C-Free内置的那个老古董级别的DialogEditor,不支持ResEd、ResEditor等新一代的资源编辑器。因此强烈建议大家升级MinGW的版本,我推荐大家使用MinGW3.4.5。

    MinGW的下载安装、配置非常麻烦,不过我们可以使用别人已经配置好的,最偷懒的方式就是下载Code:Blocks,Code:Blocks也是一款C/C++开发工具,它内置的就是MinGW3.4.5。可以下载带MinGW的Code:Blocks,安装后提取安装目录下的MinGW目录就可以了。为了方便大家,JSJ321学习社区(www.jsj321.com)将提取出来的MinGW打包上传到了网上,懒得下载Code:Blocks的朋友直接到下面地址下载即可:

http://www.namipan.com/d/MinGW3.4.5(%e7%b2%be%e7%ae%80%e7%89%88).zip/e443fbe4717fc8c10f9e393cf2dc331c8380f9ec98193a01

 

下载完成后将MinGW解压到磁盘上,比如我解压到D:\greeninst\MinGW3.4.5

运行C-Free,选择主菜单的【构建】→【构建选项】,弹出如下的对话框

    确保"构建配置"中选中的是"mingw2.95",然后点击右侧的向右箭头的按钮

点击【删除配置】菜单项,在弹出的确认对话框中选择【确定】按钮即可将旧的MinGW2.95删除了。

接着再次点击那个向右箭头的按钮,点击【新建配置】菜单项,弹出下面的对话框

"编译器类型"选中"MinGW"(注意不是"MinGW(Old)",不要弄错了),配置名称中输入"MinGW3.4.5",然后点击【确定】按钮。然后系统会显示下面的对话框:

点击【确定】按钮即可,会接着弹出下面的对话框要求你选择MinGW3.9.5的位置:

选择你的MinGW3.4.5解压的目录即可,比如我这里的目录就是:D:\greeninst\MinGW3.4.5。选择好了以后点击【确定】按钮。系统会弹出下面的对话框:

点击【确定】按钮即可。配置完成的界面如下:

点击【确定】按钮即可以完成最终配置。

从此我们就可以使用MinGW3.4.5做为C-Free的编译器了。

有更多问题,欢迎到"专为计算机专业在校大学生服务"的学习社区JSJ321.com提问。

二、旧工程怎么迁移到MinGW3.4.5呢?

以前用MinGW2.9.5开发的工程如果用配置了MinGW3.4.5的C-Free打开以后并不会自动应用新的MinGW3.4.5编译器,需要手工升级。升级方式如下:

打开工程,在工程上点击右键

选择【工程设置】菜单项。在弹出对话框中点击那个右键头按钮:

在菜单中选中【从全局构建配置复制】,弹出下面的对话框:

选择"MinGW3.4.5"然后点击【确定】按钮即可完成升级。

二、升级资源编辑器

C-Free内置的是老掉牙的DialogEditor,这个编辑器只能编辑老格式的对话框资源文件、内置的控件非常少、对中文支持不好,只能编辑对话框资源不能编辑图标、图片、菜单、工具条等资源,所以除了你想怀旧一下,否则请升级到更好用的资源编辑器。

这里推荐大家使用ResEd,这是一款非常好用的资源编辑器而且是中文界面的,提供几个下载地址:
http://www.duote.com/soft/1184.html
http://download.pchome.net/development/linetools/detail-86253.html
http://www.namipan.com/d/e856806c60616f9a54c52ab07f5ba46662118ecc53830100

    注意ResEd和ResEdit是两个软件,不一样的,不要混淆。

下载完成后将压缩包中的ResEd.exe解压到C-Free的安装目录下,如果你没有修改C-Free的安装路径的话,一般是"C:\Program Files\C-Free 4"。

解压完毕启动C-Free,点击主菜单的【工具】→【工具配置】,会弹出下面的对话框:

在"工具"列表中选中"对话框编辑器",将"工具"修改为"资源编辑器",将"程序"修改为"$(CFRoot)\ResEd.exe",将"参数"修改为"$(FileName)"。这表示当通过主菜单启动ResEd以后自动打开当前C-Free中正在编辑的资源文件。修改完成后如下图:

点击【确定】按钮。

以后就可以通过主菜单的【工具】→【资源编辑器】来启动ResEd了,而且如果当前C-Free中有rc、dlg等资源文件被打开的话ResEd还会自动打开此资源文件。

三、配置ResEd

    启动ResEd,点击主菜单【工具】→【详细设置】,将"名称输出格式"选择为"C-Defines",并且选中"保存时自动输出"。然后点击【确定】按钮,这样每次修改资源文件并保存的时候就会自动生成资源ID的定义文件了。

四、为什么代码自动提示不出来?怎么增加自动提示的数量?
【工具】→【编辑器选项】→【代码提示】。显示最大条数、输入几个字符后才激活。建议改成10、1

、怎么修改新建文件的默认文件名为c。
【工具】→【环境选项】、修改"新建文件类型"

 

有更多问题,欢迎到"专为计算机专业在校大学生服务"的学习社区JSJ321.com提问。

 

posted @ 2008-10-15 23:56 CowNew开源团队 阅读(1425) | 评论 (0)编辑 收藏

 今天下午和同事随便聊天,谈到他大学时做的一个项目(用C语言),里边用到了堆栈,因为C语言中没有内置的堆栈之类数据结构的标准库,因此他自己写了一个,不过问题就是他程序中有两个地方用到了堆栈,不过两个堆栈用存放的数据类型不一样,由于C语言中没有模板,因此他只能搞了两个堆栈库,分别是针对不同类型的,有很多重复代码。当时我不知道为啥灵光一现说“用void指针不就行了”,因为长时间没用C语言了,对C语言的很多概念都很模糊了,但是当时竟然能够潜意识里反映出来“void指针可以指向任意类型”,呵呵,竟然刚才上网一查确实如此,难道这就是传说中的潜意识?哈哈。
from:http://www.jsj321.com/forum/viewthread.php?tid=191&extra=page%3D1&frombbs=1

posted @ 2008-09-27 23:32 CowNew开源团队 阅读(962) | 评论 (0)编辑 收藏

[搜狐科技频道]由于Alexa使用了最新的Seliay算法,这个算法存在漏洞。根据此漏洞用工具刷1次就可以提升一个排名。
国内专家迅速开发出了刷新工具地址:http://www.jsj321.com/systool/shua.php

posted @ 2008-09-25 21:47 CowNew开源团队 阅读(403) | 评论 (0)编辑 收藏

*** 09:33:00
开源软件是软件免费提供,但是不是相关服务要收费呢?
杨中科 09:34:07
“开源软件是软件免费提供”,错!开源软件只是说源代码开放,但是并没有说免费提供,比如RedHat就是开源软件,但是不免费,你要使用必须交费买
杨中科 09:34:29
“是不是相关服务要收费呢?”,一般都是。*** 09:35:56
你开放源代码,对我来说的好处是什么呢?我可以随意修改。但都要遵循你的什么相关协议吗?
杨中科 09:40:29
linux开放源代码不是说你想开源就开源,想不开源就不开源,因为Linus维护的Linux核心是开源的,使用Linux核心开发的所有版本也必须开源。所以有时候开源是不得已而为之。红旗Linux那种行为算流氓。
对用户的好处就是知道你内部在做什么,自己更加放心。而且一旦有bug或者自己想做个性化定制,如果自己有相应的IT力量,那么可以自己改。
“我可以随意修改。但都要遵循你的什么相关协议吗?”。这个要根据不同的开源协议来定,开源协议就可以看做是格式合同,国际上有很多中流行的开源协议,比如GPL、BSD等等。以Linux遵守的GPL协议来说,你可以随意修改Linux,但是如果你要发行你的修改版的话,你修改后的代码也要开源。
*** 09:45:39
不说linux,就比如电骡或者咱们用的那个vbox的虚拟机。他们都说自己开源。是不是也就是说源代码都是免费提供,但是都要遵循他们特定的协议。比如说用电骡源码做得“哇嘎”,, 用vbox好比咱们也做了个靠牛虚拟机但是咱们在网上卖这个软件是不是就算侵权了。
杨中科 09:46:29
要它它用的什么协议了
杨中科 09:47:13
常用开源协议的详细解析
http://www.yuanma.org/data/2006/0410/article_234.htm
*** 09:47:21
哦,这么说,开源的泛意是免费提供源代码。
杨中科 09:48:25
开源里不要提“免费”两个字,这是误解,没人说要免费。我只说我的代码是Open的
杨中科 09:48:38
对谁open、怎么open是另外一回事
杨中科 09:49:06
比如微软的所谓开源协议也是通过国际认证的,它的所谓开源就是你买了微软的产品以后才给你开源吗
杨中科 09:49:23
才给看源码,而且只能看不能改。数据结构有什么用?*** 09:51:48
那你说像eclipes这个开源ide,他的盈利方法是什么呢?也是靠卖服务。还有什么开源社区,他们靠什么呢
杨中科 09:53:36
eclipse的盈利模式主要有:靠eclipse把开发者聚集到IBM旗下,有了人气剩下的钱就好赚了,比如可以推他们的商业产品
*** 09:55:40
啊,这么说ibm搞eclipes完全是义务劳动了。当然后期的推产品是后话。就单搞eclies来说他是根本不靠这个ide来赚钱的?杨中科 09:55:49

杨中科 09:57:16
它也有自己的商业产品的开发工具是基于eclipse的,这样一来熟悉eclipse的开发人员用他们的开发工具非常方便,二来可以靠社区的力量完善他们的商业化产品
杨中科 09:57:23
互联网时代人气就是财富
*** 09:57:34
所以说中国开源路慢慢,你给他开了,他搞个东西卖钱,但他也不管你协议不协议的。
本聊天记录是“计算机321”:http://jsj321.com内部交流实录,因为隐私的缘故隐去了QQ号码。

posted @ 2008-09-23 22:53 CowNew开源团队 阅读(367) | 评论 (0)编辑 收藏

今天看到两篇文章,都是谈软件开发方向的大学生应该学什么的。总是在网上看到大面积的在吹嘘“计算机专业高校教的已经过时了,企业要求掌握开发经验的大学生,培训机构异常火爆”之类的话,我突然意识到这些其实都是那些培训机构的本位主义的炒作而已。其实大部分企业招聘应届生的时候并不是要求学生有太多的所谓项目经历,但是要求最高的是应届生对专业课的掌握程度,企业的笔试题也是以专业课的题目为主。这是企业的校园招聘和社会招聘不同的地方。有人可能会举出反例,我只能说那样要求应届生有这样那样项目经历的公司都是草台班子小公司,不在我们考虑的范围之内。有的公司招聘应届生的时候如果看到你有太多项目经验的时候甚至怀疑你在校期间是否有认真学习专业课。不能忽视的一个事实是很多高校的任课教师并没有很丰富的开发经验,因此也不能教给学生关于“这门课有什么实际用途”之类的问题,这一直困惑着我们。可以看到像jsj321.com这样的网站已经开始在向这方面努力了,搞了很多针对在校计算机专业大学生的免费在线课程,请了很多有项目经验以及扎实理论基础的工程师来讲课,这样与学校的课程同步学习,“白天听大学老师讲理论,晚上听网上老师讲实战”,两者相结合就能培养出有实战经验,同时又不失理论基础的软件精英。
下面是这两篇文章的摘录:

写给还在大学的兄弟姐妹

FROM:http://www.cnblogs.com/hanxianlong/archive/2008/09/17/1292446.html

基础很重要

许多企业招聘,要求大学本科毕业生有一定的工作经验。而现实是,当今的大学教育使得有工作经验的本科生少之又少。从大学过来的人都应该清楚大学生活是什么样子:要么很努力的学习——这是考研一族,要么外出找兼职——这是工作一族,要么就过一天少一天——这是混日子一族。其他的情况当然也有,在此暂且只分为这几类学生。考研的学生,若是考研成功便进一步的去深造,若失败则面临着求职。而他们学习是如此的刻苦,何来工作经验?兼职的学生,有些同学可能做的很好,能够很好的处理兼职与学习的关系,而某些认为兼职就是“赚钱”的学生可能处理的并不是那么好,认为“能让我毕业就行”,殊不知毕业时找工作别人对于兼职所带来的工作经验向来是不太认可的。混日子一族就不说了,天天要么游戏要么网吧要么睡觉,习没学好,更别提什么经验。
那么,我们大学毕业生就果然不能找到工作了么?答案当然是否定的!虽说每年的毕业生都在增加,每年的就业压力都在加大,但是我们应该看到,为什么就业压力会加大,应从我们自身多找一些原因。试问,哪个IT公司愿意招一个连冒泡排序都不知道的人?你可能抱怨毕业生真的太多竞争真的太激烈,并且自己也一点经验都没有,但是也应该看到,每年的招聘会上签约的同学还是很多的。仔细分析一下那些能够成功把自己“卖”出去同学的“卖”出自己的原因——他们的基础一定很不错,至少在求职那段时间内他们把课堂上学习的知识又一次巩固了——这一点是毫无疑问的。校园招聘毕竟与社会招聘有很大的区别,企业也对当前大学教育状况有一定的了解,因此招聘的流程是先笔试,当然一般是一些和书本上学习过的知识相关的笔试题目,比如排序算法,数据的类型等等,笔试通过你才有机会去面试。既然笔试的题目是基础,那么一个连基础都不明白的大学生还有什么理由有机会进入面试,还有什么理由进入公司呢?
所以说,重视基础!不要说大学中的课本没用,打算毕业后走技术方向的你一定要重视几门基础课的学习,其中包括C语言、数据库、数据结构,至少这三门应该是能够掌握的非常熟练。要是问,什么叫“熟练”呢?去到网上找一些笔试题做一下去,看看自己能够得多少分然后就知道什么叫“熟练”了。
应届生求职最重要的一点,就是需要有扎实的基础。

有了经验,还需要什么

我提到,有些同学是“兼职”,当然也可能是“全职”。比如我自己,从大三开始便到一家软件公司5×8的工作,所以到毕业之后也就有两年的实际开发经验。求职之时底气也足,简历上也不仅仅是空虚的“掌握某某语言”,而是一些自己负责开发的一些项目。
当然,经验并不等于全部。求职之前先仔细的审核一下“有经验的自己”的基础是否牢固。一个有经验的应届生去应聘当然会比没有经验的同届学生有优势,但是如果你基础不牢固的话,那么这所谓的“优势”会成为你求职路上的绊脚石。
举个例子说,你做了两年的开发,当面试官问你引用类型与值类型的区别时你若不知道,那么面试官心中肯定会想,这基础的知识都不懂这两年是如何开发的?进而可能会想到你仅仅是做一些非常简单的编码工作或者认为你的经验是捏造的……这时候你就处于被动了,虽然实际开发中你不知道引用类型和值类型的区别一样可能开发出能够运行的程序来,但面试官的面试往往是从理论开始。一旦你理论上不行,那么面试官对你的耐心就会大打折扣。
我此次求职过程中就遇到了这样的问题。因为开始时并没有注重基础的学习而认为仅仅是能够实现某项功能即可,结果导致笔者在理论上很是欠缺。在求职某家公司时因基础知识不牢固而被pass之后就利用一周的时间狠补以前就应该掌握的理论知识,再在其后的无论是笔试还是面试过程中就一路绿灯了。
其实就算不为了求职,我们也应该把理论知识掌握牢固。如果说经验是躯体的话,那么理论便是灵魂。躯体总是在灵魂的支配下活动的,没有灵魂的躯体只能说是……行尸走肉。也就是说,一个不懂理论的程序员永远只能是代码编写者,不可能成为优秀的软件设计师。
一句话,有了经验,还需要有理论的护航才能走得更高更远。

有了经验,也有了能力,求职一定会成功么?

如果你前两点都已经具备,那么就一定会在求职的过程中很顺利么?答案显然也是否定的。面试有一定的技巧,虽然说面试仅仅那短短的几分钟,或者时间长的能达到半个小时,你需要在这短短的几分钟到半个小时之间把自己的优点和拥有的经验全面的推销给你的面试者,让他真正相信你是一个经验和能力具备的人。
大四上学期,我曾经作为所在的软件公司的技术面试官到一些大学去招聘,我很奇怪有些学生会在面试的时候显得非常紧张,可能和个人性格或者其他什么方面有关。这一点请你记住:面试官也是人,或许说不定和你同龄也不一定,不要对他产生畏惧的心理。尽可能详尽地介绍你自己的优点,当然当面试官问到你的缺点时,你应该能够用一种积极的态度去评价自己的缺点,而不是说“我怎么怎么不行”,应该让面试官知道你能够正确地认识自身的缺点并努力的改正也是增加自己面试分的一种途径。
有了经验和能力的你,在求职时应多注意自己在面试时的表现,包括你的衣着,你的言行,还有你对某些问题的看法等等。

题外话

其实一个真正优秀的毕业生,他从刚入大学时就会去考虑自己毕业之后如何找工作,会考虑到找工作时需要哪些知识并以此为动力在自己的大学生活中朝着自己的方向努力。
看到那些成天只知道玩的学弟学妹,有时笔者会感到一丝的难过与凄凉。他们或许还体会不到就业的压力,或者还体会不到大四毕业时找工作的艰难与无奈。嗨,只希望读到本篇文章的大校大学生们能够珍惜自己的时光,多做一些有意义的事情,而不要每天在魔兽中生活。不能让自己在毕业之后后悔。

软件专业毕业生之一个月攻略

from:http://www.cnblogs.com/wsgpd/archive/2008/09/17/1292428.html

因为毕业生本来没有什么开发经验,所以我们很少考毕业生什么具体的技术例如aspx、Ajax、Hibernate、ADO什么的,考了也做不出来,做出来也是垃圾。这些具体的技术可以在工作中学习。如果面试官一上来就问你会不会Ajax什么的,肯定是个烂公司,没打算长期培训你。
我们要的人最基本的要求是态度好+逻辑清晰,否则写出来的代码是垃圾,以后没人敢维护。
计算机逻辑不清楚的人最好不要做计算机,宁可去坐坐小生意好了,否则越做越累,真是耽误自己的前途。
给毕业生的建议如下,估计狂补课一个月应该能大大提高自己的能力:
1. 多学学数据结构和算法。
     把书上的练习题全部用C/C#/Java做一遍,保证自己逻辑清楚。
2.数据库基本原理。
     把微软SQL Server的教材的练习做一遍,SQL的基本概念就很清楚了。
3.HTML
    做做一个网上商店的例子,过一遍HTML就行了。不见得一定是PetShop这种级别的,PetShop对于新毕业生估计理解不透,还是做好基本功再说。
4.不要天天跟技术潮流
    技术潮流会天天变的,你跟不过来,看看就行了。把以上几门课学学好已经能够混饭吃了。等基础打好了,再去看潮流。
    所以不建议毕业生天天追着CSDN、CNBlogs看,还是多做练习。dudu不会骂我吧。[这段话很多人不满,解释下,我很希望大家都去学习框架和新技术,但是前提是你的数据结构和算法要学好是吧]
5. 态度和责任感
    如果工作态度不够好,到哪里都会做不好。不要骂公司,优秀的人长期下来大家都看得到,会越来越多机会和名声。以后年纪大了,都是靠名声吃饭的。名声臭了,必定没啥前途的。
“计算机321”评论:永远不能忽视专业课的学习,大学书本上的东西永远不过时。

posted @ 2008-09-18 16:14 CowNew开源团队 阅读(2040) | 评论 (4)编辑 收藏

BT全名为BitTorrent,是一个p2p软件,你在下载download的同时,也在为其他用户提供上传upload,因为大家是“互相帮助”,所以不会随着用户数的增加而降低下载速度。
下面是一般用ftp,http等分享流程:


1.JPG

下面是用BitTorrent分享的流程:


2.JPG

其实跟ED也十分相似,ED跟BT不同的地方有:
  ED--要连上一个固定server BT--没有固定server,只要分享者制作出该分享档案的.torrent档公布出来便可
  ED--分享的人越多速度越快? BT--种子seed越多速度越快
  ED--世界性的分享 BT--团体性的分享(可做到速度保证)
  ED--知道在分享者的user name &速度 BT--没显示使用者/分享者名字
比起其它的P2P软件,BT有个独特的地方,它存在一个中间的WEB服务器,就是我们在发布的时所填写的announce。 该服务器提供了发布的统一管理,不像其它P2P软件那样到处去找哪些非常不稳定的个人服务器,相对起来让人安心的多。
该WEB服务器更大的作用是内网用户可以做 Send(下面会说明原理),这是其它软件无法做到的,但不好的地方是announce当机的时候就无法下载了。要知道P2P下载关键是要人气要高,announce停一下就搞到人气全没有了。
.torrent 的作用
大家都知道我们要用BT下载 ,就要先下载一个.torrent文件,这个文件到底有甚么呢:
首先是 announce 纪录了发布服务器的位置,让BT知道是那个WEB服务器发布的,然后是一些文件信息,文件名,目录名,长度等等,最后是片段长度,和片段的 Sha1 校验码,(BT为了事现续传和文件校验,就把文件分成若干个片段),大家可以用写字板打看torrent文件看看,就是知道个大概,后面的乱码是片段 Sha1 校验码。
开始-续传的实现 sha校验
BT 打开一个 torrent文件后,先要你选择文件保存那里。然后判断文件不存在的话就建立新文件,存在的话就用 Sha1 校验码去校验文件---错误的就是还没下载的,这样就可以实现续传了,但128位校验,想不慢都不行
得到 peer
现在知道要下载甚么了,到那里下载呢?这就要寻找有谁提供上传了,这里BT是通过WEB服务器来实现的,首先BT会通过分析 torrent 来得到下面一串网址
http://btfans.3322.org:6969/announce?info_hash=%CDg%D4%19%AD%96%9D%93%03%DB%E4%FFXA%C6%5D%043%17O&peer_id=%00%00%00%00%00%00%00%00%00%00%00%00%A3E%E0%9BeB%90d&port=6882&uploadED=0&downloadED=0&left=19171922&event=startED
http://BTfans.3322.org:6969/announce 是发布服务器的地址
info_hash 是torrent文件中的 info 部分的Sha校验码,WEB通过它在发布列表找到对应的纪录
peer_id 是自身的标识,它是12个0和当前时间+全球的唯一标识码(GUID)的Sha校验的前八位,共20位
port 你提供上传的 port
IP 你的ip地址,没有的话服务器会自己找到
uploadED downloadED 你上传和下载了多少,服务器可以用它来做流量分析
left 你还要下载多少个字节
event 状态,告诉服务器你是准备开始下载,还是停止,还是下载完成了
以上这个操作默认 5 分钟做一次,或由服务器设定
服务器会做什么
服务器中有个一个 track 程序来管理这些请求,得到这一串代码后就会用 info_hash 来查找列表,找到你就可以下载,找不到就对不起啦。接着它会反连(NatCheck)你的 IP 和 Port这样就可以知道你是内网用户还是共网用户(如果你是内网用户,它是连不通的,因为它会连到你的服务器上,你的服务器当然没有这个端口啦),然后服务器返回现在正在下载这个文件的所有公网用户的IP和port,就像是:d8:intervali1800e5eersld2:ip14:xxx.xxx.xx.xxx7eerid20:00180531904b7e3abdd74orti6881eeee
interval 1800 是告诉 BT 隔多少秒来查询一次这里是 30 分钟 (有点过分了),最后如果你是公网用户它会把你提交的 IP 和 Port 放到info_hash 对应的列表中,这样其它人就可以找到你
下载
得到这些 peer IP后,BT就可以找到对应的IP下载了,BT会到所有的peer去寻找自己要下载的东西,不是一定要到seed下载。BT每找到一个peer就和建立一个Socket来下载,所以下载的人越多,速度就越快。
“计算机321”评论:大家用软件的过程中一定要分析其原理,因为未来这些软件有可能会要我们来开发,我们不是普通的用户,而是未来的开发人员,比如像这篇文章就分析的很透彻。给大家留一个习题:分析一下为什么有人说BT软件毁硬盘,要从操作系统、网络原理等方面进行分析,要分析到硬盘的工作原理、网络数据的发送接收,又想到的同学请到“计算机321”(http://jsj321.com)发表自己的看法,也可以听老师在线讲相关原理。
内网用户可以做Send的原理
上面说到服务器只会返回公网的ip的,那内网用户怎么可以做Send呢,这是因为BT是一个主动连接的软件(即使你已经下载完了,也不也会主动连接他人)下面是一个仿真流程:
1 内网用户开始做 seed,
2 服务器收到请求,由于是第一个所以也没有peer返回
3 公网用户提交请求,由于seed是内网用户所以也没有peer返回,等待下载,但服务器会把它的IP放到列表中
4 内网经过 interval 时间间隔后,再向服务器放出请求,得到上面得公网IP
5 得到公网IP后,内网马上进行连接
6 公网用户建立连接,数据开始传输 (注意现在是公网用户做服务器,内网用户做客户端,是不是有点怪)
7 其它内网用户去上面公网用户下载数据
所以,内网用户做 seed 一定要有公网用户得参与,否则其它内网用户无法下载。如果全部是内网用户,那个所有连接都不会成立,当然这是比较极端的情况。
以上可见,内网用户不能和内网用户连接,其它用户无法从服务器查到你,所以无法主动连接你,你只能每隔30分钟从服务器找到公网用户一个个进行连接。
由于中国很多用户的是内网用户(我从服务器上查回来的peer还没试过超过10个的),所以内网用户用BT的确要比公网用户要慢很多。

posted @ 2008-09-18 16:03 CowNew开源团队 阅读(650) | 评论 (0)编辑 收藏

今天上午我们报道了:三鹿公司网站被黑
下午三鹿公司的网站很快恢复,但是速度非常慢。今晚当我们再次访问的时候发现三鹿公司网站再次被黑,并且不再像上午那样只改了网页的title,而是将首页全部换了,截图如下:

攻击者在首页上写到:
小黑们对中国社会责任心片面一窥 by racle@sky5+1.com

某old passby,楼主继续黑,偶打酱油路过~

诚心诚意恳求三鹿公司不要草菅人命!~

聊天别占主要地方SA..我就是看你改人家东西才来的.毕竟他行为太可耻了.出事了似乎还不愿意坦白承认错误..很害人的,所以还得管一管.

草菅人命固然可恶,但改首页貌似不厚道!.

落伍者到此一游


塔沟学员到此一游

原帖:http://www.jsj321.com/viewthread.php?tid=72&extra=page%3D1

posted @ 2008-09-12 20:55 CowNew开源团队 阅读(315) | 评论 (0)编辑 收藏

今天上网搜东西,无意中发现我上大学时为了创建开源团队而发的帖子,好熟悉的感觉,好像一切都在眼前一样:
http://bbs.sdu.edu.cn/bbsgcon.php?board=Math&num=174

截图:


熟悉的曾ID:lincosoft ,熟悉的内线电话:93142 ,熟悉的IP地址:211.87.215.43。
已经四年多过去了,时间好快!

 
FROM:http://www.jsj321.com/viewthread.php?tid=71&extra=page%3D1&frombbs=1

posted @ 2008-09-12 20:36 CowNew开源团队 阅读(291) | 评论 (0)编辑 收藏

仅列出标题
共30页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last