插还是不插

  共享软件作者一旦有新品出炉并想通过它获利时,就会面临一个问题:“插还是不插”。“千千”插了,“超兔”插了,耳熟能详的“共软”几乎都不同程度的插了,就连记牌器前辈“小马”也插了,不仅插了,还插的挺狠:强制安装三个插件,外加实时广告控件。连续三个礼拜为同学电脑重装系统,就是因为在我每次装完系统后,我那可爱的同学都会情不自禁的安装这款“必杀”记牌器。
  “插”还是“不插”是个问题。在国内,以“百毒”为首的广告联盟挥着小手、扮着清纯、撅着粉嘴:“来呀,快来插我吧,安全无毒,从不探听你的个人隐私,并且服务体贴周到。最重要的是你不需要承担任何费用,而且会定期收到倒贴小费哟!”这等诱惑,我几乎插了她!可当我发现“360安全卫士”已将“百毒超级骚霸”列为恶意软件后,便艰难地遏制了这种冲动。唉,“婊子和牌坊”的命题永远捉弄着象我这样利义并重的人。在市场经济的大潮下,大多人都是先“婊”着,然后再拿“婊”的钱换牌坊。这看起来很不错,我要尝试一下。

Tags:.

.Net世界的困惑

最近学了一些PHP和Ruby的东西,忽然想把这些东西应用做个比较.

首先,我们把Java .Net PHP应用方面占有率做个比较,简单的把目前主流应用分成两个大类,一个是企业应用,一个是Web网站应用,下面这个表格是我归纳的,不一定准确,但是能说明一个大概.

应用 / 语言 Java .Net PHP
大型企业应用
中型企业应用
小型企业应用
大型Web应用
中型Web应用
小型Web应用

从表中可以看到,Java和PHP都有各自擅长的领域,但是.Net却没有突出的地方,从占有率来看情况十分尴尬.

我们再来看看技术方面,首先声明,我对其中每种语言技术都不是很熟悉,只能大概分析一下…

先说说Java,在企业级方面,可以说是绝对的老大,许多企业级技术,开发思想都是由Java发展出来的.缺点是Java开发部署比较麻烦 ,不太适合超小型的项目.

再说.Net,在1.x时代,.Net可以说基本上没有多少企业级开发的特性,到了3.0,微软各种框架技术虽然弥补了这些不足,但是相对于Java世界,还是有一定距离. 在Web网站方面,.Net服务器控件的优势,变成了弱势,由于服务器空间产生垃圾代码,并且不方便美工调整,导致在前台界面要求较高的门户站点难以使用(虽然有第三方MVC框架,但是没有IDE支持,体现不出.Net的优势)

再说说PHP,他的定位非常明显,就是Web开发,所以有很多适合Web开发的特性,比如部署十分简单,几个文件随便找个虚拟主机扔上去就能运行.在国内因为Discuz , DedeCMS等著名产品的鼎立推广,PHP在中小型网站开发中有很大的优势.,最近大量的开源框架出现,给PHP企业开发注入了一些生命力,可以说潜力十足.

综合以上我们可以看到,.Net定位不太明确,微软这个想吃那个也想吃,最后没一个能吃饱吃好..

最后还想说一下Ruby,其实应该说ROR,大家喜欢的应该是ROR的特性,二Ruby是个怪怪的东西,如果没有ROR框架,我想他也很难出名.因为ROR本身构架不是很复杂,众多PHP框架可以说都是模仿他的思想来的,而且也学得7 8成功力了,个人认为ROR很难再做大起来,可能是个昙花一现的东西,只是思想新潮大家都来赶时髦学两下,学到了,大家又都觉得其实也就那样,其他语言也能做到.

Tags:, , , , .

MySQL的数据类型和建库策略

无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识。下面我就将我的一点心得写出来跟大家分享。

一、数字类型

数字类型按照我的分类方法分为三类:整数类、小数类和数字类。

我所谓的”数字类”,就是指 DECIMAL 和 NUMERIC,它们是同一种类型。它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的;他的值的每一位 (包括小数点) 占一个字节的存储空间,因此这种类型耗费空间比较大。但是它的一个突出的优点是小数的位数固定,在运算中不会”失真”,所以比较适合用于”价格”、”金额”这样对精度要求不高但准确度要求非常高的字段。

小数类,即浮点数类型,根据精度的不同,有 FLOAT 和 DOUBLE 两种。它们的优势是精确度,FLOAT 可以表示绝对值非常小、小到约 1.17E-38 (0.000…0117,小数点后面有 37 个零) 的小数,而 DOUBLE 更是可以表示绝对值小到约 2.22E-308 (0.000…0222,小数点后面有 307 个零) 的小数。FLOAT 类型和 DOUBLE 类型占用存储空间分别是 4 字节和 8 字节。如果需要用到小数的字段,精度要求不高的,当然用 FLOAT 了。可是说句实在话,我们”民用”的数据,哪有要求精度那么高的呢?这两种类型至今我没有用过–我还没有遇到适合于使用它们的事例。

用的最多的,最值得精打细算的,是整数类型。从只占一个字节存储空间的 TINYINT 到占 8 个字节的 BIGINT,挑选一个”够用”并且占用存储空间最小的类型是设计数据库时应该考虑的。TINYINT、SMALLINT、MEDIUMINT、INT 和 BIGINT 占用存储空间分别为 1 字节、2 字节、3 字节、4 字节和 8 字节,就无符号的整数而言,这些类型能表示的最大整数分别为 255、65535、16777215、4294967295 和18446744073709551615。如果用来保存用户的年龄 (举例来说,数据库中保存年龄是不可取的),用 TINYINT 就够了;九城的《纵横》里,各项技能值,用 SMALLINT 也够了;如果要用作一个肯定不会超过 16000000 行的表的 AUTO_INCREMENT 的 IDENTIFY 字段,当然用 MEDIUMINT 不用 INT,试想,每行节约一个字节,16000000 行可以节约 10 兆多呢。

二、日期时间类型

日期和时间类型比较简单,无非是 DATE、TIME、DATETIME、TIMESTAMP 和 YEAR 等几个类型。只对日期敏感,而对时间没有要求的字段,就用 DATE 而不用 DATETIME 是不用说的了;单独使用时间的情况也时有发生–使用 TIME;但最多用到的还是用 DATETIME。在日期时间类型上没有什么文章可做,这里就不再详述。

三、字符 (串) 类型

不要以为字符类型就是 CHAR,CHAR 和 VARCHAR 的区别在于 CHAR 是固定长度,只要你定义一个字段是 CHAR(10),那么不论你存储的数据是否达到了 10 个字节,它都要占去 10 个字节的空间;而 VARCHAR 则是可变长度的,如果一个字段可能的值是不固定长度的,我们只知道它不可能超过 10 个字符,把它定义为 VARCHAR(10) 是最合算的,VARCHAR 类型的占用空间是它的值的实际长度 +1。为什么要 +1 呢?这一个字节用于保存实际使用了多大的长度。从这个 +1 中也应该看到,如果一个字段,它的可能值最长是 10 个字符,而多数情况下也就是用到了 10 个字符时,用 VARCHAR 就不合算了:因为在多数情况下,实际占用空间是 11 个字节,比用 CHAR(10) 还多占用一个字节。

举个例子,就是一个存储股票名称和代码的表,股票名称绝大部分是四个字的,即 8 个字节;股票代码,上海的是六位数字,深圳的是四位数字。这些都是固定长度的,股票名称当然要用 CHAR(8);股票代码虽然是不固定长度,但如果使用 VARCHAR(6),一个深圳的股票代码实际占用空间是 5 个字节,而一个上海的股票代码要占用 7 个字节!考虑到上海的股票数目比深圳的多,那么用 VARCHAR(6) 就不如 CHAR(6) 合算了。

虽然一个 CHAR 或 VARCHAR 的最大长度可以到 255,我认为大于 20 的 CHAR 是几乎用不到的–很少有大于 20 个字节长度的固定长度的东东吧?不是固定长度的就用 VARCHAR。大于 100 的 VARCHAR 也是几乎用不到的–比这更大的用 TEXT 就好了。TINYTEXT,最大长度为 255,占用空间也是实际长度 +1;TEXT,最大长度 65535,占用空间是实际长度 +2;MEDIUMTEXT,最大长度 16777215,占用空间是实际长度 +3;LONGTEXT,最大长度 4294967295,占用空间是实际长度 +4。为什么 +1、+2、+3、+4?你要是还不知道就该打 PP 了。这些可以用在论坛啊、新闻啊,什么的,用来保存文章的正文。根据实际情况的不同,选择从小到大的不同类型。

四、枚举和集合类型

枚举 (ENUM) 类型,最多可以定义 65535 种不同的字符串从中做出选择,只能并且必须选择其中一种,占用存储空间是一个或两个字节,由枚举值的数目决定;集合 (SET) 类型,最多可以有 64 个成员,可以选择其中的零个到不限定的多个,占用存储空间是一个到八个字节,由集合可能的成员数目决定。

举个例子来说,在 SQLServer 中,你可以节约到用一个 BIT 类型来表示性别 (男/女),但 MySQL 没有 BIT,用 TINTINT 吗?不,可以用 ENUM(’帅哥’,'美眉’),只有两种选择,所以只需一个字节–跟 TINYINT 一样大,但却可以直接用字符串 ‘帅哥’ 和 ‘美眉’ 来存取。真是太方便啦!

好了,MySQL 的数据类型介绍得差不多,我的建库策略也随着介绍数据类型介绍给大家一些。但这只是其中一部分,篇幅有限,不能再细说;其他的,就靠各人在对数据类型理解的基础上,多多实践、多多讨论。

 

Tags:, , , .

一个无限分类的处理类

/* 名称: 对分类操作的业务逻辑封装
*
* 作者: 帅的像人渣 QQ: 1191391 E-mail: netcat2@21cn.com
*
* 完成日期: 2003-12-18 13:33
*
* 说明: 本类中引用的其它类(DB、Table、Item)均未提供,所以本类只能做个参考,不能直接应用
* 不是本人小气不提供其它类,实在是因为那些都是一两年前写的类,很烂。怕大家看后对大
* 造成误导. 在此发表这个类,只希望大家能从中学到一些程序设计的方法。
* 授人以鱼不如授人以渔~
*
* 特点:
* 采用递归调用的方法,对分类数据只需一次数据库查询可生成树状结构。 无限递归层次(视机器堆栈而定)
*
* 数据库定义:
* ID smallint unsigned primary #如果数据量很大可用int
* ParentID smallint unsigned index #如果数据量很大可用int, 请索引此字段
* #如果为根分类,则ParentID = 0
*
* RootID smallint unsigned index #如果数据量很大可用int, 请索引此字段
* #如果是根分类则RootID = 0, 否则RootID = 最上层的父分类ID
* CategoryName varchar(n) #此大小自定
* 如需有其它字段定义附在后面* 注意事项:
* 不要试图直接调用本类,除非你有和我定义那另外那几个类相对应的接口, 否则不会成功
* 在合适的地方定义 DBTABLE_CATEGORY 这个常量,使其指向你的分类数据表名字
*
* 程序构架:
* ├─基础类
* │
* │
* └─业务逻辑层(此类所处层次)
* │
* │
* └───表现层(用户界面)
*/

define(’DBTABLE_CATEGORY’, ‘xxx’);

class Category_Logic
{
var $KernelRef = NULL; //系统核心的引用
var $tblObj = NULL; //包含当前分类数据 Table 类的实例

vartiny_mce_marker

CurrentItem = NULL; //包含当前分类数据 TItem类的实例

var $CategoryID = 0; //当前分类ID,如果没有当前分类此项为 0

//—————————————————————————
//private array GetNodeData(array $Data, int $ParentNode)
// 根据一颗指定根的并且以兄弟双亲法表示的树和当前分类的ID,返回当前分类在整个分类表中所处的位置
//
// @param: $Data 2维数组 Array(
// Array(
// ‘ID’ => 分类ID,
// ‘ParentID’ => 父分类ID,
// ‘RootID’ => 根分类ID,
// ‘CategoryName’ => 分类名称,
// ),
// ……
// );
// 表示的一颗树
//
// @param: $ParentNode 父分类ID, 每一次由调用者给出,递归时由程序计算传递
//
// return value: 返回以兄弟双亲法表示的所有分类的树
// 注意: 确保当前分类已经设置,否则此函数无返回
//
//—————————————————————————
function GetNodeData($Data, $ParentNode)
{
$arr = Array();

$ArrayCount = 0;

for($i = 0, $cnt = Count($Data); $i < $cnt; $i++)
{
if($Data[$i]['ParentID'] == $ParentNode)
{
$arr[$ArrayCount] = $Data[$i];
$arr[$ArrayCount++]['Child'] = $this->GetNodeData($Data, $Data[$i]['ID']);
}
}

return $arr;
}

Click to continue »

Tags:, , , , .

PHP,MySQL在线手册

  • mysql 3.23.7 manual mysql 4.1.0-alpha manual
  • php5 manual for phpv.net apache2.2  manual
  • JScript 中文手册 css 2 中文手册
  • phpv.net译制版pear 中文手册       正则表达式30分钟入门教程
  • http://manual.phpv.net/

    Tags:, , , , , , , .

    PHP编辑器常用的几种字体下载

    开发编程时,代码字体很重要。如果选择得当,加上IDE顺手、代码颜色舒服,简直是完美的开发环境;一旦字体选的不好,就会看的人头昏脑胀、眼睛发酸——对开发者和阅读者都是一种折磨。

    选择代码字体时,基本要有如下标准:

    • 等宽
      这应该是最基本的条件了。
    • 字符清晰
      如果代码看不清楚,字体再漂亮也没用。
    • 没有字符混淆
      1 / l / i / I 不能混淆,0 / o / O 不能混淆。
    • 标点符号明显
      大、中、小括号,单、双引号等常用符号要明显可辨,不要奇形怪状。

    以下列出几种好看又好用的字体,与大家分享。(参考文章:《Revisiting Programming Fonts》《Monospace/Fixed Width Programmer’s Fonts》

    ClearType 启用

    (什么是 ClearType ?请看这篇介绍

    启用 ClearType 后,适用的字体有:

    Consolas - 11pt/14px (快速下载

    Consolas,11pt Click to continue »

    Tags:, , , , , , .

    FinePlus(QQ辅助工具,显IP功能) v1.45.3

    FinePlus(原LiteIM)是一款QQ辅助软件,必须在有原版QQ2007的情况下才能使用,原版QQ2007请到腾讯官方网站下载。仅限于技术交流,请遵守中国法律,另外,不得用于商业目的.

    1.本软件只是显示IP辅助软件,必须在有原版QQ2007的情况下才能使用,原版QQ2007请到腾讯官方网站下载..
    2.下载本软件包,解压到QQ2007安装目录就可以了,然后点击 FinePlus.exe 就可以启动QQ,并且登录后显示IP
    3.在第一次运行本软件之前请先运行 ShowIP.exe 以使更新最新的IP数据库
    1.本软件是QQ2007的辅助程序
    2.本软件仅作为QQ的最终用户研究QQ所用,程序作者不会就您的任何误用承担任何连带责任.
    3.本软件绿色,稳定,安全,免费.
    4.本软件著作权为morning个人;QQ著作权/版权为深圳腾讯.
    5.FinePlus是自由的(自由修改/反向/传播等),本软件作者许可:
    任何形式的非营利性质的传播行为,
    但您应该了解,您至少受到如下约束:
    不得将”FinePlus”作为您集成其他软件的软件包名称(或名称的一部分),
    不得以任何形式宣告/暗示自己是FinePlus的官方网站/论坛/作者等,
    不得进行任何盈利性质的传播行为,这包括且不限于:捆绑插件,注入恶意代码,修改用户计算机数据,胁迫用户必须同时使用恶意/间谍软件等

    支持QQ2007、QQ2007kb1、QQ2007IIBeta1、2007IIBeta2

    1.43.5 资源更新

    1.这不是新版本,而是资源更新补丁,
    2.更新了1.43.5发布以来新出现的版本号
    3.更新了精简IP库
    4.打上了去除QQ2008Beta1安全提示的补丁

    1.45KB1更新内容:
    1.自动识别隐身可见等模式下的版本号
    2.主动IP探测尝试
    3.自动更新版本号列表(version.ini)
    4.优化辅助dll的加载方式,对于不需要字符信息的朋友,可以删除fphelper.dll而不影响FP的正常运行
    5.删除了部分不常用功能,例如 主面板个性签名隐藏(这个功能官方已经加上了)
    6.代码优化

    下载地址:http://www.crsky.com/soft/11079.html

    Tags:, , , , , .

    BitComet v1.01 多国语言版

    BitComet是基于BitTorrent协议的p2p免费软件;高效的网络内核,多任务同时下载依然保持很少的CPU内存占用;支持对一个Torrent中的文件有选择的下载;磁盘缓存技术,有效减小高速随机读写对硬盘的损伤;只需一个监听端口即可满足所有下载需要;自动保存下载状态,续传无需再次扫描文件,作种子也无需扫描文件;支持多Tracker协议;绿色软件,不需安装,仅运行时关联.torrent文件;多语言界面。原名SimpleBT

        界面改进:BT任务属性对话框里的加入种子市场选项移入高级设置页面
        界面改进:BT任务用户列表右键菜单添加了删除用户的命令
        界面改进:BT任务服务器列表右键菜单添加了删除Tracker的命令
        界面改进:FireFox扩展组件在工具菜单中新添”下载视频文件”的命令,可以捕获网页中的视频文件
        界面修正:预览视频文件时暂停后再恢复播放会导致退出全屏显示
        界面修正:BitComet资源浏览器工具栏刷新按钮失效
        核心改进:更新Windows Vista下的TCP发起连接数修改
        核心修正:时段限速停止下载时,没有暂停长效种子传输
        核心修正:安装IE7后,BitComet资源浏览器无法捕获网页内嵌的视频文件

    下载地址:http://www.crsky.com/soft/7434.html

    Tags:, , , , , , , , , .

    EditPlus v3.01 Build 446 汉化版

    EditPlus 是一款功能强大的文字处理软件。它可以充分的替换记事本,它也提供网页作家及程序设计师许多强悍的功能。支持 HTML、CSS、PHP、ASP、Perl、C/C++、Java、JavaScript、VBScript 等多种语法的着色显示。程序内嵌网页浏览器,其它功能还包含 FTP 功能、HTML 编辑、URL 突显、自动完成、剪贴文本、行列选择、强大的搜索与替换、多重撤销/重做、拼写检查、自定义快捷键,等等…
     

    * 修正: 当 FTP 的上传或下载状态达到 100% 时程序崩溃
    * 新增: 通过 SHIFT + 鼠标滚轮水平滚动
    * 改变: 在查找对话框,以“Previous”代替了“上/下”按钮
    * 新增: $(AppDir) 参数宏
    * 新增: 文档选择器字体选项
    * 新增: 窗口列表“排序”按钮
    * 新增: 窗口列表“复制名称”按钮

    下载地址:http://www.crsky.com/soft/1578.html

    Tags:, , , , , , , , .

    迅雷(Thunder) v5.7.12.493 去广告版

    迅雷是一款新型的基于P2SP技术的下载软件,迅雷4延续了前版本下载速度快的优势。同时,前版本的单服务器资源下载不稳定、下载管理功能差等弱项在这个版本有了完全的改观。

    作为“宽带时期的下载工具”,迅雷4针对宽带用户做了特别的优化,能够充分利用宽带上网的特点,带给用户高速下载的全新体验!迅雷4不但继承了以前版本下载快的特点,更进一步通过优化软件本身架构实现了下载的“快而稳”,通过对下载资源的优化整合实现了下载的“快而全”,更在用户文件管理方面提供了比较完备的支持,尤其是对于用户比较关注的配置、代理服务器、文件类别管理、批量下载等方面进行了扩充和完善,使得迅雷可以满足中、高级下载用户的大部分专业需求。

    迅雷5.7.12.493 (2008.04.29)
    * 更好的支持vista sp1系统环境
    * 修正某些环境使用迅雷断网问题
    * 修正了限速不准的问题
    * 解决486版本的一些崩溃

    下载地址:http://www.crsky.com/soft/11135.html

    Tags:, , , , , .