Thursday, August 25, 2005

很多有用的文章

http://lovehome.stronglong.com/lovehome/exchm/phpAndLinux/



?用PHP如何获得浏览器信息 ?php多文件上载系统完整版
?线人谁显示php代码 ?自己编的分页模块 ?php命令行参数详解及应用
?php积累的一些技巧 ?phpini中文版 ?php分页显示详解
?一家之言的经验之谈php+mysql扎实个人基本功 ?windowsxp快捷键完美篇 ?做个自己站内搜索引擎
?经验积累 ?数据库的日期格式转换 ?php邮件专题
?多文件上载系统完整版 ?文件上传类 ?浅谈phpmysql身份验证的方法
?关于下载docxls文件的办法javasource ?php新手上路 ?禁止ip的函数
?php时间显示例 ?php用于登录的类 ?使用模板
?如何使用php中的正则表达式 ?一个浏览器检查类 ?缩略图
?最简单的文本计数器 ?删除目录及其下的文件函数 ?让你拥有自己的qq在线显示代码
?中文时间显示的程序 ?日历显示程序 ?文本计数器
?一个判断oicq是否在线的小程序 ?php中如何使用header发送头部信息 ?用php调用oicq在线程序
?获取访问者操作系统增加了win2003 ?用php调用浏览者真实ip方法 ?url地址合法性检查
?页面运行时间代码 ?保存全部页面的方法 ?如何在多个页面之间传递数组
?php中重新定向到另一个页面三种方法 ?php中cookie及其使用 ?用php制作动态计数器
?一个全面获取图象信息的函数getimageinfo ?php文本数据库的搜索方法 ?php如何读取cookies
?php中比较简单的数据验证 ?php的密码验证 ?检验email地址的合法性函数
?定制浏览器地址栏前的小图标 ?一个取ip地址取网卡地址取ip网卡地址的函数 ?用正则表达式得到一个页面的所有链接
?取得当前得页面url ?一个分页导航类 ?制作网页的目录式导航菜单
?一个目录类 ?两个日期类 ?计算程序运算时间的类
?又一个发送mime邮件的类 ?ftp类 ?如何用php判断客户端浏览器的语系
?php中实现大图自动缩成小图及gd库的安装 ?关于生成缩略图的问题各位大侠请进来 ?上传图片自动生成缩略图函数
?自动生成缩略图的函数改进版 ?生成缩略图代码经本人测试 ?图片缩略图的类
?php实现实时时间 ?一个非常棒的上传附件函数 ?php处理http上传文件函数转载
?网页文字简繁转换函数 ?取得文件扩展名方法 ?按比例控制图片显示自动缩放函数
?首页的页面运行时间代码 ?中文时间日期显示的程序 ?php中的时间处理中的时间处理
?一个实时显示服务器时间的小程序 ?计算程序运行时间的类 ?计算两个时间相差的天数
?一个菜单类满好用的 ?判断一个email是否存在的类 ?贴一个文本操作的类
?一个改写的表单验证类 ?计算日期差的函数 ?写了个以交替背景色显示输出的函数
?substr函数中文版终极完美版 ?用php实现验证码功能 ?超越模板引擎
?php安全及相关 ?在php中得到多选的下拉菜单的各项值一个例子 ?php4新函数集锦
?用php写的进度条 ?加速php程序 ?测试gd库
?开发大型php项目的方法 ?关于在php中使用中文命名变量、函数、类 ?实现windows资源管理器风格的树型菜单
?初学php编写了一个显示天气预报的程序 ?繁体中文转换成简体中文 ?ip来源查询php源代码
?php5对盗链说再见 ?怎么在一个图片上打上标签 ?用gd库生成高质量的缩略图片已测试成功
?用php如何获得浏览器信息 ?用php获得浏览器信息 ?用php控制您的浏览器cache
?如何在页面显示来访者分辨率浏览器 ?文件的操作修改删除 ?如何删除文件内第一行或指定一行数据
?php十大 ?php动态图像的创建 ?基于php的聊天室
?获取客户端分辨率 ?如何对php程序中的常见漏洞进行攻击 ?使用php的错误处理
?用php42书写安全的脚本 ?php应用技巧七则 ?php读取某站点的链接的函数
?php中的日期处理 ?显示图片 ?简体中文转换为繁体中文的php函数
?繁体中文转换为简体中文的php函数 ?能把汉字转化为拼音的一个函数 ?功能齐全的发送邮件类
?用php发电子邮件1很简单?我也是这样认为的 ?文件系统基本操作类 ?好东西和大家分享同时上传100个文件上传的程序代码文
?php的ftp学习 ?实时时间显示代码 ?如何将php的结果输出到非php页面中
?输出控制类 ?php的十个高级技巧 ?文本数据库自定义函数集
?请问php里怎么得到访客的ip和端口号 ?php的编译配置详细选项 ?用php调用数据库的存贮过程
?如何取得用户的真实ip ?随机输出目录中的图片 ?怎样使phpinfo函数不起作用
?从网址分离得到域名 ?如何恢复mysql的root口令 ?用php来计算某个目录的大小
?通过gd库为图片添加透明水印 ?升级安装gd ?用php将mysql数据表转换为excel文件格式
?修改zend引擎实现php源码加密的原理及实践 ?喜悦国际村php函数库大全 ?一个用php实现的ubb类
?如何编译php源代码 ?highlight_stringphp语法加亮函数 ?在php中使用与perl兼容的正则表达式
?中文字符串截取函数 ?如何打印 ?文件上传??终结者
?如何对php程序中的常见漏洞进行攻击下 ?web追捕php版源代码 ?php新手上路进入实质性阶段
?php文件上载暴露任意文件 ?php聊天室技术 ?如何将字串里的小写全部转成大写,但不破坏中文字
?基于phpmysql的聊天室设计 ?php设计聊天室步步通 ?php输出控制功能在简繁体转换中的应用
?1900-2100超酷两百年日历 ?删除无限级目录与文件代码共享 ?php源码学习站内搜索html版
?实例学习php之投票程序 ?简单的页面缓冲技术 ?php代码优化及php相关问题总结
?用php计算身份证校验码 ?网页后退不再出现过期 ?php中的类什么叫类
?php柱形统计图 ?超酷php饼图 ?php实现全局静态变量类的一种实现方式
?php文件系统基本操作类 ?如何避免表单的重复提交 ?php5zendengine20的改进
?用php人工使网页过期 ?一个phpmysql的用户验证 ?zendoptimizer配置指南
?php的字符编码转换工具 ?判断是否全为中文另一方法繁体不能用哦 ?php的汉字转换gbk-big5
?php的汉字换unicodeutf8-gbk ?汉字转化为拼音 ?php中实现数字金额到中文大写字符的转换
?基于php的聊天室编程思想 ?正则表达式perl语言的文字处理模式 ?php中的正则表达式
?php正则表达式,删除链接 ?php自动生成月历代码 ?安全天使??端口在线检测php代码
?显示页面运行时间的代码3个 ?一个简单的防盗链东东 ?图片防盗链功能
?用脚本修改用户注册表 ?php套接字编程 ?php做的端口嗅探器--可以指定网站和端口
?php开发文件系统实例讲解 ?生成随机图象的代码php的 ?用zendencode编译php程序
?用php实现xml备份mysql数据库 ?实现跨域名cookie ?用文本文件实现的动态实时发布新闻的程序
?php生成html ?介绍几个array库的新函数 ?outputbuffer输出缓冲函数的妙用
?中文汉字截取函数支持gb2312、big5、utf-8 ?利用static实现表格的颜色隔行显示 ?php中的正规表达式一
?用php发送有附件的电子邮件 ?php和正则表达式 ?不用gd库生成当前时间的png格式图象的程序
?用libtemplate实现静态网页生成 ?短短几行代码就可以把sina的新闻偷过来新闻小偷程序 ?生成适合图片比例的假缩略图js实现
?框架自动跳转的困惑 ?web打印大全 ?实用代码
?自动浏览 ?怎样实现在线用户列表 ?如何正确统计中文字数
?日期联动菜单 ?php中利用gd输出汉字实例 ?怎么设session
?big5码完全解析 ?跟我学小偷程序教程之小偷原理 ?php的模板
?wwwyournametk国际域名完美攻略 ?分页类终结者 ?js滚动特效
?winxp开始→运行→输入的命令集锦 ?php实现文件安全下载 ?php原码颜色
?利用qq的ip查询数据库查询ip所在地php源码 ?js下拉框选择头像图片 ?php50新特性zt
?php生成带有雪花背景的验证码 ?如何去掉文章里的html语法 ?域名查询代码公布
?模式修正符 ?后缀自加程序 ?点每张不同的图片在右面显示出来的内容都不一样
?php中的正规表达式 ?取ip函数 ?用php实现pop3邮件的收取
?gd输出汉字的函数的分析 ?表单中一个文本框自动对另一个文本框赋值改变其样式 ?php在线统计
?怎样查数据库在100秒钟内的记录 ?研究了一下连动下拉菜单共享一下希望有人能继续完善 ?利用js调用后台php进行数据处理原码
?浅析php中实现多线程 ?smarty入? ?获取各用户分辨率
?文件结构图 ?用php得到网卡mac ?db_mysql.php
?ubb正则替换 ?请问如何得到90天以后的日期 ?新身份证校验位算法
?从代码安装完整的http+ftp+mail的linuxserver ?自己编译(升级)php5中的gd库中的jpeg、freetype2、png ?登录的类
?使cookie实现跨域名 ?php中的面向对象和面向过程 ?这些基本的东西你掌握了吗
?实例讲解session的使用方法 ?页面压缩gzip的运用 ?用gd库给图片加中文实例
?smarty的修饰符 ?cookie与session ?抛开cookie使用session
?验证码登陆校验 ?session全面教程 ?php4中session处理的定制
?中文字符串截取涵数 ?图片处理程序 ?得到所有的get参数
?一棵php的类树(支持无限分类) ?php如何更好更有效的实现用户注册页面 ?用php实现真正的连动下拉列表
?php分类列表模版 ?无限分类树型论坛的实现 ?无限分类
?php处理html ?简单的无限分类思想 ?ubbcode类
?简单的树形菜单 ?一个翻页类 ?日历类
?一个在php中利用递归实现论坛分级显示的例子 ?连动下拉菜单 ?计算农历的函数
?discuz!跨站大全 ?如何把php转成exe文件 ?wap服务器如何知道用户手机号码
?ie定制404错误及execommand saveas 警告绕过漏洞 ?php部分常见问题总结 ?php生成wap页面
?搜索引擎技术核心揭密php ?php中重新定向到另一个页面 ?程序员的进化从学生到首席执行官
?一篇介绍hawhaw及用它来做wap站的文章 ?session生存时间设置问题 ?php网站漏洞的相关总结
?功能齐全的发送php邮件类 ?以mysql方式操作文本数据库--又强又实用 ?动态页面生成静态页面的类
?取得随机字符串 ?抓取和分析一个文件 ?自动跳转中英文页面
?php简易实现域名判断跳转 ?让下拉列表又能选择又能输入 ?通用表单验证函数-改进版
?搜索和替换文件或目录的一个好类--很实用 ?php图形处理中的中文输出 ?非常好的目录导航文件代码
?header函数使用说明 ?php页面生成的html代码生成独立的文件 ?php调用功能强大的java 类库classes
?一个生成条形码的东东 ?签名档 ?通过对php一些服务器端特性的配置加强php的安全
?使用无限生命期session的方法 ?使用数据库保存session的方法 ?类的另类用法--数据的封装
?多php服务器实现多session并发运行 ?php脚本的8个技巧 ?最近收集的一些php的经经验技巧
?php-push技术实现刷新功能 ?正则表达式中的特殊字符一览 ?php5中xml-rpc函数的使用
?如何正确理解php的错误信息 ?htaccess文件使用手册 ?php面向对象编程快速入门
?php4之cookie支持详解档 ?php中的xml应用 ?phpshell的编写改进版
?php与xul ?关于php操作文件的一些faq总结 ?简单的数据缓存技术
?php中xml操作指南 ?正则表达式使用详解 ?gb码完全解析
?md5加密算法简介 ?收发邮件的一个程序 ?用php实现pop3邮件的解码
?smtp协议原始命令码和工作原理 ?pop3协议命令原始码及工作原理 ?发送mime邮件类
?发送mime邮件类--实例 ?用php读取imap邮件 ?最好的邮件编码解码类
?用socket发送电子邮件利用需要验证的smtp服务器 ?使用php的编码功能-问题发现 ?使用php的编码功能-mime.inc
?php实现ping ?用socket发送电子邮件(利用需要验证发smtp服务器 ?apache服务器配置全攻略
?在php5中实现自动装载类库 ?一个登录的类 ?一个简单的php在线端口扫描器
?如何将php作为shell脚本语言使用 ?生成excel的文件 ?年月日三下拉框联动
?重新整理源码下载地址及各类资源站点 ?取得源码里面的里面的url ?用php动态创建flash动画
?将access中的数据导入mysql ?简单音乐盒的实现 ?使用header发送状态代码
?php的面向对象编程 ?非技术类 - linux网址精选 ?非技术类 - 中国著名正版软体的网站
?非技术类 - joke ?非技术类 - Just for Fun ?非技术类 - 美国公认顶尖黑客榜
?非技术类 - 100个最佳linux站点 ?非技术类 - 鹦鹉的故事 ?非技术类 - 经典的海盗问题
?非技术类 - 关于软件的说法 ?非技术类 - 请不要做浮躁的人 ?非技术类 - 600个优秀网站
?非技术类 - Linux历史篇 ?非技术类 - 打围巾的八种方法 ?非技术类 - 用语言控制Linux:Linux的语音识别软件
?非技术类 - 完全用GNU - Linux工作 ?非技术类 - 教你如何在5460同学录贴图 ?非技术类 - 四个人性的经典故事
?非技术类 - 成长中必须知道的10个故事 ?非技术类 - CIO的诞生 ?非技术类 - 中关村的“技术个体户”
?基础知识 - 关于WINS服务器的问题 ?基础知识 - linux网络服务器配置基础 ?基础知识 - 网络配置文件
?基础知识 - linux系统服务 ?基础知识 - Modules的概念及使用 ?基础知识 - linux常用工具软件
?基础知识 - linux最多支持多少用户 ?基础知识 - 解析linux操作系统文件目录 ?基础知识 - FAQ
?基础知识 - 信号集合 ?基础知识 - linux重要知识 ?基础知识 - 几个小问题
?基础知识 - 系统日志 ?基础知识 - 文件和目录的权限 ?基础知识 - linux日志
?基础知识 - shadow密码 ?基础知识 - 嵌入式系统 ?基础知识 - 在linux下实现设备的配置
?基础知识 - linux新手最经常遇到的问题 ?基础知识 - linux中文件查找技术大全 ?基础知识 - 信号
?基础知识 - LVS的配置详解配置 ?基础知识 - Liunx系统的LOG日志文件 ?基础知识 - UNIX简介
?基础知识 - 网络协议全了解 ?基础知识 - 在Linux下配置TCP - IP ?基础知识 - 常见的几种光盘文件系统和刻录方式
?基础知识 - unix基础教程 ?基础知识 - 技巧小全 ?基础知识 - 跨平台开发
?基础知识 - LINUX系统、设备、软件简易安装指南 ?基础知识 - www.linuxforum.net入门版常见问题 ?基础知识 - 在linux下使用HPCD-Writer Plus 8210e (USB-接口)刻录机
?基础知识 - 目录结构 ?基础知识 - 日志管理 ?PHP安全编程之加密功能
?基础知识 - linux知识大全 ?基础知识 - fstab格式 ?基础知识 - Red Hat Linux 8.0自动运行程序的方法
?基础知识 - linux重要知识 ?基础知识 - 端口基础常识大全贴 ?基础知识 - 常用端口对照
?基础知识 - Linux系统备份 ?基础知识 - RedHat日志文件 ?基础知识 - 重新规划分割区
?基础知识 - 在Linux中访问硬盘DOS分区、软盘和光盘 ?基础知识 - linux99问 ?基础知识 - 在Linux中设置磁盘限额
?基础知识 - Linux基本安装方法 ?基础知识 - linux安装常见的FAQ问题(第二版) ?基础知识 - Linux与其他操作系统的区别
?基础知识 - 文件的存取权限?模式位疑难详解 ?基础知识 - Linux中文件的压缩与解压缩 ?基础知识 - ReiserFS文件系统
?基础知识 - Linux各项系统开机服务的功能是什么?有哪些可以关掉? ?基础知识 - Linux各种发行版简易说明 ?基础知识 - 什么是Linux
?基础知识 - Linux下的中文显示和支持常见问题解答 ?基础知识 - 如何在Linux下通过WEB认证方式上网 ?基础知识 - redhat8死机解决一例
?基础知识 - 必不可少的4个服务 ?基础知识 - linux爱好者入门教程及相关配置 ?基础知识 - Linux的发行版制作简要过程
?基础知识 - Linux下安装和使用杀毒软件AntiVir ?基础知识 - 关于磁盘阵列,分区加载的问题 ?基础知识 - 红旗桌面4.0正式版最新使用方法和问题解答200例
?基础知识 - ext2和ext3的区别 ?基础知识 - 虚拟块硬盘,新增点swap分区空间 ?基础知识 - 配额
?基础知识 - 如何增加swap ?基础知识 - 一些比较经典的问题与解答 ?基础知识 - Linux使用技巧33条
?PHP实现文件安全下载 ?基础知识 - 使用Linux的8个小技巧 ?基础知识 - Linux应用问答
?基础知识 - Linux与Windows硬盘资源互访 ?基础知识 - label的问题 ?基础知识 - Linux简明系统维护手册
?基础知识 - 菜鸟心得(二)请共享,请指正 ?基础知识 - Linux使用技巧集锦 ?基础知识 - . - configure make make install分别是什么意思
?基础知识 - halt poweroff reboot问题 ?基础知识 - 使用mc恢复被删除文件 ?基础知识 - 用红帽子的chkconfig管理Init脚本
?基础知识 - 为linux服务器增加新分区 ?基础知识 - 一些奇怪的unix指令名字的由? ?基础知识 - Linux下文件属性
?基础知识 - 三层交换技术解析 ?基础知识 - Wiki的初步了解 ?指令大全 - gunzip
?指令大全 - vi用法 ?指令大全 - find用法 ?指令大全 - find实例
?指令大全 - hdparm ?指令大全 - xargs实例 ?指令大全 - vi编辑器
?指令大全 - mkisofs ?指令大全 - sort ?指令大全 - man实例
?指令大全 - md5sum ?指令大全 - cdrecord ?指令大全 - du
?指令大全 - shutdown,halt,reboot,init ?指令大全 - wget ?指令大全 - ping
?指令大全 - linux指令大全 ?指令大全 - vi的简单用法 ?指令大全 - ls
?指令大全 - PortTunnel ?指令大全 - mount ?指令大全 - Red Hat9实用工具
?指令大全 - linux环境下的undelete ?指令大全 - chattr ?指令大全 - sar,iostat,vmstat
?指令大全 - ps ?指令大全 - du和df ?指令大全 - netstat
?指令大全 - RPM命令大全 ?指令大全 - rpm实例 ?指令大全 - df
?指令大全 - hwclock ?指令大全 - mkdev ?指令大全 - tar实例
?指令大全 - setup实例 ?指令大全 - vim实例 ?指令大全 - fuser
?指令大全 - od ?指令大全 - locate实例 ?指令大全 - quota
?指令大全 - vi大全 ?指令大全 - 指令大全 ?指令大全 - 命令技巧大全(需分解)
?指令大全 - head,tail,sed ?指令大全 - file ?网站加速 PHP 缓冲的免费实现方法
?指令大全 - man2html ?指令大全 - 一次处理整个目录 ?指令大全 - hexed
?指令大全 - bc ?指令大全 - vmstat ?指令大全 - quota
?指令大全 - 精通RPM之安装篇 ?指令大全 - scp ?指令大全 - rz - sz
?指令大全 - fdformat ?指令大全 - redhat9键盘的快捷操作 ?指令大全 - vim中的颜色
?指令大全 - emacs ?指令大全 - 格式化软盘 ?指令大全 - RPM命令手册
?指令大全 - 全文替换以修改档案方法 ?指令大全 - Linux中文件查找技术大全 ?指令大全 - 对光驱和软驱实现Automount
?指令大全 - RPM的使用 ?指令大全 - 在Linux中限制用户空间 ?指令大全 - vim显示彩色
?指令大全 - tee ?指令大全 - 档案目录管理--cat ?指令大全 - Linux 指令篇:档案目录管理--cd
?指令大全 - Linux 指令篇:档案目录管理--chmod ?指令大全 - Linux 指令篇:档案目录管理--chown ?指令大全 - Linux 指令篇:档案目录管理--cp
?指令大全 - Linux 指令篇:档案目录管理--cut ?指令大全 - Linux 指令篇:档案目录管理--find ?指令大全 - Linux 指令篇:档案目录管理--less
?指令大全 - Linux 指令篇:档案目录管理--ln ?指令大全 - Linux 指令篇:档案目录管理--locate ?指令大全 - Linux 指令篇:档案目录管理--ls
?指令大全 - Linux 指令篇:档案目录管理--mkdir ?指令大全 - Linux 指令篇:档案目录管理--more ?指令大全 - Linux 指令篇:档案目录管理--mv
?指令大全 - Linux 指令篇:档案目录管理--rm ?指令大全 - Linux 指令篇:档案目录管理--rmdir ?指令大全 - Linux 指令篇:档案目录管理--split
?指令大全 - Linux 指令篇:档案目录管理--touch ?指令大全 - Linux 指令篇:日期时间排程--at ?指令大全 - Linux 指令篇:日期时间排程--cal
?指令大全 - Linux 指令篇:日期时间排程--crontab ?PHP中的正规表达式(二) ?指令大全 - Linux 指令篇:日期时间排程--date
?指令大全 - Linux 指令篇:日期时间排程--sleep ?指令大全 - Linux 指令篇:日期时间排程--time ?指令大全 - Linux 指令篇:日期时间排程--uptime
?指令大全 - Linux 指令篇:使用者资讯与管理--chfn ?指令大全 - Linux 指令篇:使用者资讯与管理--chsh ?指令大全 - Linux 指令篇:使用者资讯与管理--finger
?指令大全 - Linux 指令篇:使用者资讯与管理--last ?指令大全 - Linux 指令篇:使用者资讯与管理--passwd ?指令大全 - Linux 指令篇:使用者资讯与管理--who
?指令大全 - Linux 指令篇:讯息传送与信件管理--aliases ?指令大全 - Linux 指令篇:讯息传送与信件管理--mail ?指令大全 - Linux 指令篇:讯息传送与信件管理--mailq
?指令大全 - Linux 指令篇:讯息传送与信件管理--mesg ?指令大全 - Linux 指令篇:讯息传送与信件管理--newaliases ?指令大全 - Linux 指令篇:讯息传送与信件管理--talk
?指令大全 - Linux 指令篇:讯息传送与信件管理--wall ?指令大全 - Linux 指令篇:讯息传送与信件管理--write ?指令大全 - Linux 指令篇:工作行程资讯与管理--kill
?指令大全 - Linux 指令篇:工作行程资讯与管理--nice ?指令大全 - Linux 指令篇:工作行程资讯与管理--ps ?指令大全 - Linux 指令篇:工作行程资讯与管理--pstree
?指令大全 - Linux 指令篇:工作行程资讯与管理--renice ?指令大全 - Linux 指令篇:工作行程资讯与管理--skill ?指令大全 - Linux 指令篇:文件系统--fstab
?指令大全 - Linux 指令篇:文件系统--fsck ?指令大全 - Linux 指令篇:文件系统--fdisk ?指令大全 - Linux 指令篇:文件系统--exportfs
?指令大全 - Linux 指令篇:文件系统--e2fsck ?指令大全 - Linux 指令篇:文件系统--df ?指令大全 - Linux 指令篇:文件系统--dd
?指令大全 - Linux 指令篇:设备管理--setleds ?指令大全 - Linux 指令篇:设备管理--rdev ?指令大全 - Linux 指令篇:设备管理--loadkeys
?指令大全 - Linux 指令篇:设备管理--dumpkeys ?指令大全 - Linux 指令篇:设备管理--MAKEDEV ?指令大全 - Linux 指令篇:磁片工具--mkdosfs
?指令大全 - Linux 指令篇:磁片工具--mformat ?指令大全 - Linux 指令篇:磁片工具--fdformat ?指令大全 - Linux 指令篇:文件打印--lprm
?指令大全 - Linux 指令篇:文件打印--lpr ?指令大全 - Linux 指令篇:文件打印--lpq ?指令大全 - Linux 指令篇:文件打印--lpd
?指令大全 - Linux 指令篇:编码压缩打包--uuencode ?指令大全 - Linux 指令篇:编码压缩打包--uudecode ?指令大全 - Linux 指令篇:编码压缩打包--uudecode
?指令大全 - Linux 指令篇:编码压缩打包--compress ?指令大全 - Linux 指令篇:终端机管理--reset ?指令大全 - Linux 指令篇:终端机管理--clear
?指令大全 - Linux 指令篇:字串处理--tr ?指令大全 - Linux 指令篇:字串处理--expr ?指令大全 - Linux 指令篇:工作行程资讯与管理--top
?指令大全 - Linux 指令篇:DOS相容指令--mlabel ?指令大全 - Linux 指令篇:DOS相容指令--mdeltree ?指令大全 - Linux 指令篇:DOS相容指令--mdel
?指令大全 - Linux 指令篇:DOS相容指令--mcopy ?指令大全 - Linux 指令篇:DOS相容指令--mcd ?指令大全 - Linux 指令篇:DOS相容指令--mattrib
?指令大全 - Linux 指令篇:起始管理--shutdown ?指令大全 - Linux 指令篇:起始管理--reboot ?指令大全 - Linux 指令篇:起始管理--init
?指令大全 - Linux 指令篇:起始管理--halt ?指令大全 - Linux 指令篇:使用者管理--sudo ?指令大全 - Linux 指令篇:使用者管理--su
?指令大全 - Linux 指令篇:使用者管理--adduser ?指令大全 - Linux 指令篇:文件系统--sync ?指令大全 - Linux 指令篇:文件系统--swapon
?指令大全 - Linux 指令篇:文件系统--mount ?指令大全 - Linux 指令篇:文件系统--mkfs ?指令大全 - hostid
?指令大全 - 用RPM校验文件 ?指令大全 - userdel ?指令大全 - chsh
?指令大全 - chfn ?指令大全 - MIRROR ?指令大全 - man.conf
?指令大全 - man ?指令大全 - ftpaccess ?指令大全 - groupadd
?PHP中的正规表达式(一) ?指令大全 - groupdel ?指令大全 - usermod
?指令大全 - whatis ?指令大全 - groupmod ?指令大全 - losetup
?指令大全 - mkdir ?指令大全 - mkfs ?指令大全 - apropos
?指令大全 - sudo ?指令大全 - useradd ?指令大全 - shutdown
?指令大全 - PPPD ?指令大全 - rpm命令参数列表 ?指令大全 - tripwire的用法
?指令大全 - 如何在vi中做到高亮显示和彩色 ?指令大全 - 如何模拟dos下的copy con a.txt生成a.txt文件 ?指令大全 - vi中怎么去掉响铃
?指令大全 - xhost ?指令大全 - scp ?指令大全 - Linux学习手册
?指令大全 - 已经配置了hosts.equiv及.rhosts, 为何仍不能使用rcp ?指令大全 - 如何取出RPM包中的文件 ?指令大全 - vi编辑器的使用技巧
?指令大全 - vi同时编辑多个文件 ?指令大全 - ip ?shell - 打印通配结果
?shell - Bash中对变量的操作 ?shell - 列出目录树 ?shell - while循环中使用read
?shell - 将多个空格替换为一个空格 ?shell - shell ?shell - 用脚本实现分割文件
?shell - shell ?shell - 删除一个月以前的文件 ?shell - shell中循环取出文件中每一行赋予一变量的问题
?shell - 在每个文件夹下建一个.qmail文件 ?shell - shell简介 ?shell - 得到上月未日期,格式为YYYYMMDD
?shell - 实现用backup或tar命令来做目录备份 ?shell - 编写一个只允许用户执行telnet的shell ?shell - 关于awk中计算正弦90度的问题
?shell - SHELL Warming up ?shell - 时间同步 ?shell - 判断文件的访问权限是不是600
?shell - 从一个目录中提取文件的问题 ?shell - rsh ?shell - 关于KSH中select建立菜单的问题
?shell - 设shell自己的隐含变量 ?shell - 合并某些行 ?shell - sh与csh的比较
?shell - 用shell编出来的查看dbf文件的脚本 ?shell - SCO UNIX 5.0.5下通用菜单程序(用bsh制作,含源码) ?shell - "Dogs" of the linux Shell
?shell - 算青蛙的脚本 ?shell - 怎么把一个文本的一列,换成一行 ?Cookie及其使用(二)
?shell - 用awk实现删除文件 ?shell - 怎样把一字符串(在变量里)翻转过来,再存到变量里 ?shell - 关于expr的用法
?shell - 查找日期为某一天的文件 ?shell - sed用法 ?shell - 用cshell逐行读文件逐行处理
?shell - awk中如何用print输出单引号 ?shell - 长篇连载--arm linux演艺---序 ?shell - 正则表达式一例
?shell - 把csh,sh或ksh语法的脚本相互转换的程序 ?shell - shell用法 ?shell - finger统计同ip地址的tty终端数
?shell - shell计算明天和昨天日期的函数 ?shell - 合并两个文件 ?shell - 数值和字母表一一对应
?shell - 停止终端多个进程 ?shell - 调试makefile ?shell - 读文本的最后一行
?shell - 实现两次变量替代 ?shell - 用gawk分析脚本调用ping命令时ping的进程号 ?shell - awk中如何使用shell的环境变量
?shell - 什么格式才能让SHELL正确地替换这样两个变量 ?shell - 找出一个文件中出现某str的次数 ?shell - 我想每天自动执行该shell
?shell - 重定向是什么 ?shell - shell中的行和列 ?shell - 隐藏光标的方法
?shell - 当while遇到重定向----sh的陷阱 ?shell - 在SHELL程序中实现‘按任意键继续’ ?shell - 在shell程序中判断一个变量是不是由4个数字组成
?shell - 代码解释 ?shell - awk中str可不可以相加 ?shell - 正则表达式
?shell - 关于设置命令行提示符(PS1) ?shell - 非交互方式改变登录用户密码 ?shell - 去掉awk中单引号的特殊性
?shell - 登陆到多台主机上去查看相关进程返回结果 ?shell - 实现两次变量替代 ?shell - linux网络安全和优化
?shell - shell的问题 ?shell - awk文本处理 ?shell - 用date获得前一天的日期
?shell - 如何用date获得前一天的日期 ?shell - 论正则表达式的“贪婪”性 ?shell - 在awk中如何引用shell的变量
?shell - 用sh列表显示oracle数据库单条查询结果 ?shell - awk中使用shell变量疑问 ?shell - 什么格式才能让SHELL正确的替换这样两个变量
?shell - shell参数问题,linux ?shell - eval用法三例 ?shell - 大小写转化
?shell - 显示小数点后面几位 ?shell - 获得一个变量的长度 ?shell - remsh疑问
?shell - 将文件中的“" 替换成“" ?shell - 重定向 ?shell - 用sed删除由空格组成的空行
?shell - 请问如何用shell作隔行删除 ?shell - 如何判断读入字符是回车键还是方向键 ?shell - 请问如何用Shell编: 在当前目录下保留指定日期的文件,其余的全部删除?
?shell - 如何计算一个日期是星期几 ?shell - 如何用Bshell转换cgi传入的变量中的非ASCII字符(汉字) ?shell - 请问如何抽取特征字的下一行
?shell - sed中如何替换出新行来 ?shell - 请问trap的用法和其作用 ?shell - shell 编程中的信号处理(signal handling in shell programming)
?shell - 定制自己的linux应用环境 ?shell - 删除指定内容的重复行 ?shell - 测试硬盘性能
?shell - 在linux环境下启动时打开numlock ?shell - 取出文件中特定的列内容 ?Cookie及其使用(一)
?shell - 实现Hex和Dec转换 ?shell - linux Boot Scripts ?shell - 可否用SHELL实现对SQL进行查询,修改,删除等等呢
?shell - 什么是Shell ?shell - 使程序的执行结果同时定向到屏幕和文件 ?shell - $@等特定shell变量的含义
?shell - cut的用法 ?shell - 把一个shell程序编译成二进制可执行文件 ?shell - 在shell里如何限制输入的长度
?shell - 双机(多机)自动互备份方案 ?shell - 用awk显示出现在两个模式之间的内容 ?shell - 文件序列a1,a2,a3...a11,a12...a1000改成a0001,a0002...a1000?
?shell - 做到限时登录 ?shell - awk脚本一例 ?shell - Bash的环境设定
?shell - 执行脚本 ?shell - 在shell中捕捉信号的trap命令 ?shell - 禁止从一个IP登录的shell
?shell - bash简介 ?shell - 重定向一例 ?shell - passwd -d aaa时报错
?shell - eval用法三例 ?shell - xset设置的含义 ?shell - 批量建立用户
?shell - 改变UNIX终端颜色 ?shell - 很方便的两个shell script ?shell - 有关awk字段分隔符
?shell - 在等待read时如何不换行输入 ?shell - Unix系列shell程序编写 ?shell - shell脚本问题
?shell - bash ?shell - Shell递归程序设计 - 批量转换大写文件名为小写 ?shell - HANDY ONE-LINERS FOR SED
?shell - 把连你电脑的人踢出去 ?shell - 如何取消beep声音 ?shell - 一个判断文件日期的问题
?shell - ls的问题 ?shell - ORACLE自动备份并且自动FTP到备份机的SHELL脚本 ?shell - 文件名转化大小写
?shell - ASH Shell的脚本编程 ?shell - php4使用session的时候出现O_RDWR failed ?shell - 如何比较两个字符串啊
?shell - 基于PPP协议的linux与Windows CE网络 ?shell - Shell高级屏幕输出 ?shell - 在Linux Shell程序中进行身份验证
?shell - 也谈在Unix系统中杀死相关终端的进程 ?shell - FAQ ?shell - bash
?shell - 续-----一个杀死终端所有进程的 Shell ?shell - 替换文件中的文本 ?shell - bash
?shell - gawk的使用方法 ?shell - sed实例 ?shell - SED手册
?shell - 设定环境变数 ?shell - 使用命令trap来捕捉信号 ?shell - expect使用一例
?shell - 恢复缺省bash提示符 ?shell - expect用法 ?shell - 一个检测show128文件更新的shell脚本
?shell - DISPLAY变量的用法 ?shell - 一支反砍站的iptables script ?安装启动 - 一张软盘启动的linux
?安装启动 - 解决多系统的最好、最安全的方法 ?安装启动 - 如何在单个硬盘驱动器上构建双引导linux系统 ?安装启动 - 忘了root密码的解决方法
?安装启动 - linux的引导过程 ?安装启动 - lilo中把dos - windows改为缺省启动的OS ?安装启动 - 操作系统的灵活性
?安装启动 - linux安全设置手册 ?安装启动 - 让双CPU的linux机器自动关机 ?安装启动 - linux新手安装教训
?安装启动 - linux启动盘制作法 ?安装启动 - 一个硬盘上装好win98 - nt - linux ?安装启动 - linux运行级别详解
?安装启动 - linux运行级init详解 ?安装启动 - linux单用户方式 ?安装启动 - linux系统分区
?安装启动 - grub引导管理器下恢复linux的root密码 ?安装启动 - 硬盘安装rh8 ?安装启动 - 用ghost对linux系统做备份
?安装启动 - 双引导问题 ?安装启动 - 将linux硬盘ghost到另一颗去 ?安装启动 - 安装rh72如何选择引导工具
?安装启动 - win2k和linux共存(grub在mbr) ?安装启动 - linux分区配制教程 ?安装启动 - linux的安装教程
?安装启动 - 开机和关机 ?安装启动 - lilo.conf中的read-only的作用 ?安装启动 - 比lilo更强劲的多操作系统引导程序grub
?安装启动 - 装win9x后lilo失效的解决方案 ?安装启动 - 如何配置VMware来通过令牌环卡访问外部LAN ?安装启动 - 双启动型USB优盘的使用举例和注意问题
?安装启动 - 3的硬盘安装 ?安装启动 - BluePoint linux的安装过程 ?安装启动 - 我的六个系统安装方法及其应用
?安装启动 - 修改grub的安装位置 ?安装启动 - grub为什么会在访问某些scsi硬盘的时候挂起 ?安装启动 - 在grub中指定内存大小
?安装启动 - 已经装了最新的binutils,为什么grub还是不能用 ?安装启动 - 反黑行动之数据恢复 ?安装启动 - fstab文件
?安装启动 - Red Hat linux 8.0 Package List ?安装启动 - linux各项系统开机服务的功能是什么? ?安装启动 - 恢复redhat的grub
?安装启动 - 如何进入linux去查看启动记录,这启动记录存在哪里? ?安装启动 - 一个PC上同时安装37个系统 ?安装启动 - 启动过程中sendmail启动慢
?安装启动 - 恢复redhat的grub ?安装启动 - 2000与linux双系统的安装 ?安装启动 - 将装过的lilo移到MBR上
?安装启动 - xfs文件系统 ?安装启动 - 从硬盘安装rh9的朋友注意了 ?安装启动 - linux上远程启动的无盘98
?安装启动 - linux系统的自动作业控制 ?安装启动 - win - linux双系统安装grub ?安装启动 - grub安装配置及使用汇总
?安装启动 - linux上远程启动的无盘98 ?安装启动 - 装scsi硬盘 ?安装启动 - 开机简述
?安装启动 - 将分区(39G)加载到 - home上 ?安装启动 - 关于redhat linux8.0系统的备份的体会和心得 ?安装启动 - 目录解析
?安装启动 - 不用软驱也照样能启动linux ?安装启动 - 让redhat8安装时使用reiserfs ?安装启动 - 文本模式的分辨率
?安装启动 - 制作linux的优盘启动盘 ?安装启动 - 建立优盘启动盘 ?安装启动 - sun服务器上安装linux
?安装启动 - 制作启动盘 ?安装启动 - 修改登录画面 ?安装启动 - 为linux划分分区
?安装启动 - 远程安装linux ?安装启动 - dos下用grub.exe修复启动故障 ?安装启动 - grub入门
?安装启动 - 大硬盘系统上安装linux系统的问题及其解决方案 ?安装启动 - 简单实现NT或WIN2000与linux共存 ?安装启动 - grub.conf中加入一项
?安装启动 - single模式需要密码怎么办 ?安装启动 - 关于lilo和nt loader的问题 ?安装启动 - 用安装光盘来修复grub
?安装启动 - os loader引导多系统实战 ?安装启动 - winxp - windows2003,还有mandrake9.1同时一个菜单引导 ?安装启动 - boot loader
?安装启动 - 全面探讨lilo---lilo学习笔记 ?安装启动 - grub学习笔记 ?安装启动 - grub的图形配置器--grubconf
?安装启动 - 再探安装多操作系统分区,grub的设置问题 ?安装启动 - 我的分区 ?安装启动 - 升级Linux系统的硬盘
?安装启动 - 安装grub ?安装启动 - 挑食的企鹅 ?安装启动 - 我的硬盘分区[双硬盘参考篇]
?PHP的面向对象编程 ?安装启动 - grub多重启动管理器 ?安装启动 - 关于硬盘分区
?安装启动 - 小菜鸟与grub的故事 ?安装启动 - 系统安装引导盘的制作 ?安装启动 - 关于安装redhat8后,导至原win2000变慢的解决方法
?安装启动 - 解决2k与linux共存后起动慢的经历 ?安装启动 - 装Linux后win2k - xp - server启动变慢的解决之道 ?安装启动 - 无光驱软驱恢复grub一例
?安装启动 - 差点要重装机器了 ?安装启动 - 给grub加上密码锁 ?安装启动 - grub能引导sco unix505吗
?安装启动 - 灾难恢复 ?安装启动 - grub scsi硬盘 mbr ?安装启动 - gnu grub faq (简体中文版)
?安装启动 - lilo使用指南 ?安装启动 - linux引导过程 ?PHP中重新定向到另一个页面
?安装启动 - 硬盘主引导记录详解 ?安装启动 - lilo配置攻略 ?安装启动 - vmware的vmware tools安装
?安装启动 - LILO的问题 ?安装启动 - lilo.conf之中文man手册 ?安装启动 - lilo原理
?安装启动 - 启动过程跟踪 ?安装启动 - grub中的分区命名方法 ?安装启动 - 重装grub
?安装启动 - GRUB三步通 ?安装启动 - 制作启动盘 ?安装启动 - LINUX和LILO
?安装启动 - grub一例 ?安装启动 - Windows 2000 Server - FreeBSD - RedHat Advanced Server 2.1 ?安装启动 - vga选项
?安装启动 - 脆弱的grub ?安装启动 - 自己动手做一个迷你Linux系统 ?安装启动 - 非正常关机导致文件系统破坏了
?安装启动 - 无法启动系统 ?安装启动 - RedHat开机起动流程 ?安装启动 - 开机 - 关机管理
?安装启动 - 装win9x后lilo失效的解决方案 ?安装启动 - Linux远程启动 ?安装启动 - lilo大杂耍
?安装启动 - 与NT和平共处 ?安装启动 - redflag的vmware安装 ?安装启动 - Linux关机命令详解
?安装启动 - 解读LILO错误提示信息 ?安装启动 - 安装Linux无盘工作站 ?安装启动 - MBR如果被覆盖了怎麽办
?安装启动 - Linux开机过程的分析(关于bootsect.S) ?安装启动 - Debian GNU - Linux 完全安装手册 ?安装启动 - 实例讲解LILO的配置和使用
?安装启动 - 标题 ?安装启动 - 备份和修复Linux LILO指南 ?安装启动 - 深入Linux的LILO
?安装启动 - lilo ?安装启动 - Lilo.conf(LILO 配置文件)手册 ?安装启动 - 深入解剖LILO
?安装启动 - Linux下Grub开机管理程式安装简介 ?安装启动 - 主引导扇区释疑 ?安装启动 - 安装xp - freebsd - linux
?安装启动 - 制作自己的Floppy-Linux Step By Step ?安装启动 - 如何找回redhat7.2的root密码 ?安装启动 - 安装redhat9时键盘找不到
?安装启动 - RH8,9中安装后如何添加新的语言包 ?安装启动 - 硬盘改变位置之后重新安装GRUB以及修改相应文件的方法 ?安装启动 - Linux启动盘boot - root盘的制作
?安装启动 - Kickstart+HTTP+DHCP+TFTP+PXElinux实现RedHat的网络自动安装 ?安装启动 - 制作Linux启动盘的四种方法 ?安装启动 - 无软驱和光驱安装Redhat方法
?安装启动 - 自动fsck ?安装启动 - 制作Fedora DVD ISO的方法 ?安装启动 - 使用yum把内核升级到Kernel 2.6.0test9
?安装启动 - edHat 7.3 Live in CDROM HowTo ?安装启动 - 朋友给的mosix不敢独享 ?安装启动 - 朋友给的openmosix不敢独享
?安装启动 - 终结大硬盘安装linux采用lilo启动问题 ?安装启动 - 一张光盘的RedHat Linux 9.0(387兆) ?安装启动 - 如何在win2000下隐藏linux的分区
?安装启动 - 没有软驱安装不能光盘引导的RH7.0心得(VPC中) ?安装启动 - 如何clear mbr ?安装启动 - 操作系统的启动
?安装启动 - Linux关机重启流程分析 ?安装启动 - Linux只能以软盘引导方式进入之处理办法 ?安装启动 - 如何在一个硬盘上装好了WIN98 - NT - Linux
?安装启动 - 制作Linux的优盘启动盘 ?安装启动 - 自己定制软盘上的Linux系统 ?安装启动 - 用DOS命令破除UNIX系统管理员口令
?安装启动 - kickstart无人值守安装linux ?安装启动 - 多系统安装实践(Win2k Server、FreeBSD、RH Linux AS2.1) ?安装启动 - UNIX的启动和关机过程
?安装启动 - RedHat 9.0的“绿色”安装 ?长沙发上的对话(四) ?安装启动 - lilo的问题
?安装启动 - 35M的迷你linux系统 ?安装启动 - lilo.conf中文手册 ?安装启动 - lilo启动的故障判断
?安装启动 - 如何用lilo引导不同的运行级别 ?安装启动 - 备份和修复linux LILO指南 ?安装启动 - linux忘记了密码怎么办
?安装启动 - 用安装盘来修复GRUB ?安装启动 - GRUB使用说明 ?安装启动 - 关于mbr的存取控制
?安装启动 - 安装scsi硬盘 ?安装启动 - scsi硬盘的安装 ?安装启动 - 解决RH9.0自动升级出现的SSL连接错误
?安装启动 - 安装grub ?安装启动 - 引导linux的3种方法 ?xwindow - x终端的详细使用方法
?xwindow - 桌面不见了 ?xwindow - XF86Conifg文件详解 ?xwindow - 完美安装mplayer手册
?xwindow - linux上安装QQ ?xwindow - 关闭Mozilla的自动安装插件对话框 ?xwindow - 如何取消虚拟屏幕
?xwindow - 以指定的颜色深度启动xwindow ?xwindow - 在XWindows环境下阅读PDF ?xwindow - 开启多个xwindow
?xwindow - RH7.2下XDM如何起动 ?xwindow - xwindow问题 ?xwindow - Redhat8.0下XMMS播放Mp3快速解决方案
?xwindow - RH8中配置非即插即用声卡(ISA,SB16) ?xwindow - linux下DISPLAY的使用方法 ?xwindow - REDHAT 7.2安装声卡驱动
?xwindow - flash插件的安装 ?xwindow - 通过exceed使用KDE ?xwindow - 同时启动6个X控制台
?xwindow - 解决gnome-terminal里汉字花屏问题 ?xwindow - 显示卡攻略 ?xwindow - 声卡配置
?xwindow - nvidia显卡驱动程序的安装 ?xwindow - 使用Xwin32登陆Redhat7.2图形界面的问题 ?xwindow - linux下的X Server配置快速攻略
?xwindow - 设置和修改XWindow的显示模式 ?xwindow - Debian中升级到gnome2.2 ?xwindow - X-windows下设置墙纸
?xwindow - xf86config使用说明 ?xwindow - vnc一问 ?xwindow - ound Blaster AWE 32 - 64 HOWTO 如何在Linux设定声卡
?xwindow - Soundblaster 16 PnP Mini-Howto 如何在Linux设定16位PnP声卡 ?xwindow - 设置和修改 X Window 的显示模式 ?xwindow - Linux中的字型(FONTS)设定
?xwindow - 修改刷新率 ?xwindow - 远程xwindow登录 ?xwindow - 如何将.tif.rgb.gif......的图片转换成.xpm的格式
?长沙发上的对话(三) ?xwindow - xwindow的语言选择 ?xwindow - 万能声卡驱动(Alsa)的安装方法
?xwindow - 让RedHat允许从Windows上的X登陆 ?xwindow - 把PC变成X Server ?xwindow - exceed中添加中文字体
?xwindow - 在linux怎样设置双显卡 ?xwindow - 板载声卡的四种安装方法 ?xwindow - 万能声卡驱动(Alsa)的安装方法
?xwindow - mozilla中使用realplay插件以及文本阅读插件的使用 ?xwindow - Play Encoded DVDs in Xine ?xwindow - Linux中文拼音输入法全接触
?xwindow - SWT(implemented with gtk)的可视化控件的X11窗口句柄 ?xwindow - GObject对象系统 ?xwindow - Redhat Linux9 Gnome桌面上搭建C - C++IDE开发环境
?xwindow - rh9下图形登陆windows ?xwindow - 在RH7.2中装上VIA的AC97的板载声卡 ?xwindow - x-win32和exceed的简单使用 v0.3
?xwindow - fedora core1中flash插件不能用的解决办法 ?xwindow - 在Virtual PC 5.2上配置Debian的网络 ?xwindow - *NIX下远程连接X Server几个方法
?xwindow - gaim0.76+libqq0.25+ssl(MSN)简明安装 ?kde - qt的安装 ?kde - kde下的软件
?kde - kde快捷键 ?kde - KDE 2.1安装及使用介绍 ?kde - 什么是kde---基本概念介绍
?gnome - gnome下的软件 ?gnome - 桌面不见了 ?gnome - gnome的快捷键
?gnome - 什么是gnome---基本概念介绍 ?输入法类 - 安装ole ?输入法类 - 在redhat 7.3或8.0下用智能ABC
?输入法类 - 输入法 ?长沙发上的对话(二) ?输入法类 - xsim的安装
?输入法类 - redhat8.0上成功运行xsim ?美化汉化 - rh8汉字乱码 ?美化汉化 - 解决rh8汉字乱码
?美化汉化 - 美化rh8 ?美化汉化 - 我的RedHat8.0美化方案 ?美化汉化 - 关于RH 8.0汉化的另类选择
?美化汉化 - RedHat linux 7.2xmms的汉化 ?美化汉化 - XFree86 字体美化 Mini HOWTO ?美化汉化 - Magic Chinese RedHat 7.1汉化redhat
?美化汉化 - 关于Redhat7.2系统汉化 ?美化汉化 - RedHat 8.0下使用缺省英文系统语言,同时可阅读和输入中文的方法 ?美化汉化 - 完美的RH8+gnome+KDE使用simsun的方案
?美化汉化 - RH8-----懒人不汉化 ?美化汉化 - oss397h声卡驱动for redhat 9 ?美化汉化 - 在linux下制作MP3
?美化汉化 - 扮靓你的Red Hat Linux 7.2 ?美化汉化 - 彻底搞定7.3下kde字体发虚 ?美化汉化 - 解决gnome-terminal里汉字花屏问题
?美化汉化 - 谈谈redhat9KDE的汉化 ?美化汉化 - Firefly的Xft2 for Fedora下载安装 ?美化汉化 - 我的redhat8.0完全桌面设置
?美化汉化 - 我的Redhat 7.3汉化 - 美化过程 ?美化汉化 - Fedora 1.0 core 安装Nvidia显卡驱动 ?美化汉化 - 用开源唐体包来美化Fedora Redhat 8.0 9.0 AS 3.0
?美化汉化 - 中文支持问题 ?美化汉化 - Linux英文环境下的中文输入 ?网络配置 - rh8下加入静态路由
?网络配置 - 一个网卡绑定多个IP地址 ?网络配置 - 多个网卡绑定一个IP地址(bonding) ?网络配置 - 使用nfs进行网络备份
?网络配置 - Redhat安装和使用40问 ?网络配置 - redhat linux8.0安装和相关软件配置(包括mplayerQQ等) ?网络配置 - 安装Webmin
?网络配置 - 为什么用了bond反而变慢了呢 ?网络配置 - redhat7.2安装双网卡 ?网络配置 - 网卡的安装
?网络配置 - vnc远程控制linux主机 ?网络配置 - 设置好telnet服务 ?网络配置 - 阻止用户浏览使用外部代理
?网络配置 - red hat as 2.1 (linux) 串行控制台配置实例 ?网络配置 - route ?网络配置 - 允许root用户远程登录
?网络配置 - 根据NETBIOS名字查找计算机IP ?网络配置 - 某个端口现在运行什么监听程序 ?网络配置 - 只ping得通网关,访问局域网的资源不能在浏览器里访问网页
?网络配置 - 监视某个tty ?网络配置 - linux下如何接ADSL一类的宽带猫 ?网络配置 - 查找给出的MAC是属于什么厂商的
?网络配置 - 在用户idle一定时间以后就断开连接 ?网络配置 - 局域网实现VLAN实例 ?网络配置 - linux下使用Win Modem
?网络配置 - Setting up PPTPD on Red Hat 8.0 with RPM packages ?网络配置 - 在red hat 7.3版里安装3c905网卡 ?网络配置 - 修改机器名和Ip
?网络配置 - a network tools of linux neighborhood browser ?网络配置 - 了解网络接口的状态 ?长沙发上的对话(一)
?网络配置 - x-win32的简单使用 ?网络配置 - ADSL上网 ?网络配置 - 在命令行下,给网卡加第二个IP地址且重启有效

又一个发送mime邮件的类

又一个发送mime邮件的类
2004-02-26 13



// 存成 "mime_mail.inc" ?案

class mime_mail {

var $parts;
var $to;
var $from;
var $headers;
var $subject;
var $body;


/*
* void mime_mail()
* ??建?者
*/

function mime_mail() {
$this->parts = array();
$this->to = "";
$this->from = "";
$this->subject = "";
$this->body = "";
$this->headers = "";
}


/*
* void add_attachment(string message,
* [string name],
* [string ctype])
* ?附加物(附?)加入?件物件
*/

function add_attachment($message, $name = "",
$ctype = "application/octet-stream") {
$this->parts[] = array( "ctype" => $ctype,
"message" => $message,
"encode" => $encode,
"name" => $name);
}


/*
* void build_message(array part)
* 建立 multipart ?件的?息部份
*/

function build_message($part) {
$message = $part["message"];
$message = chunk_split(base64_encode($message));
$encoding = "base64";
return "Content-Type: " . $part["ctype"] .
($part["name"] ? "; name="".$part["name"].""" : "") .
"nContent-Transfer-Encoding: $encodingnn$messagen";
}


/*
* void build_multipart()
* 建立一封 multipart ?件
*/

function build_multipart() {
$boundary = "b" . md5(uniqid(time()));
$multipart = "Content-Type: multipart/mixed; " .
"boundary = $boundarynn" .
"This is a MIME encoded message.nn--$boundary";

for ($i = sizeof($this->parts) - 1; $i >= 0; $i--) {
$multipart .= "n" . $this->build_message($this->parts[$i]) . "--$boundary";
}

return $multipart . "--n";
}


/*
* string get_mail()
* ?回已?合完成的?件
*/

function get_mail($complete = true) {
$mime = "";
if (!empty($this->from))
$mime .= "From: " . $this->from . "n";
if (!empty($this->headers))
$mime .= $this->headers . "n";

if ($complete) {
if (!empty($this->to))
$mime .= "To: $this->ton";
if (!empty($this->subject))
$mime .= "Subject: $this->subjectn";
}

if (!empty($this->body))
$this->add_attachment($this->body, "", "text/plain");

$mime .= "MIME-Version: 1.0n" . $this->build_multipart();

return $mime;
}


/*
* void send()
* 寄出?封信(最後一?被呼叫的函式)
*/

function send() {
$mime = $this->get_mail(false);
mail($this->to, $this->subject, "", $mime);
}

} // ???束

?>


/*
include "mime_mail.inc";

$filename = "testfile.jpg";
$content_type = "image/jpeg";

# ?取磁碟?的 JPEG ?形
$fd = fopen($filename, "r");
$data = fread($fd, filesize($filename));
fclose($fd);

# 建立物件??
$mail = new mime_mail;

# ?定所有?目
$mail->from = "your@address.com";
$mail->to = "recipient@remote.net";
$mail->subject = "?迎!";
$mail->body = "?是真正的?子?件?息,
?然....你可以?成一行以上。";
# 加上附?
$mail->add_attachment($data, $filename, $content_type);

# 送出?子?件
$mail->send();
*/
?>

\
\
// by Hsu
if (!preg_match("!^(http://)?" . getenv("SERVER_NAME") . "!", getenv("HTTP_REFERER")) ││
!preg_match("/^.+@.+..+/", $myemail)) {

echo "
n";
echo "Your E-Mail addr: n";
echo "n";
echo "
n";

} else {

include "mime_mail.inc";

$filename = "php_logo.gif";
$content_type = "image/gif";

# ?取磁碟?的 JPEG ?形
$fd = fopen($filename, "r");
$data = fread($fd, filesize($filename));
fclose($fd);

# 建立物件??
$mail = new mime_mail;

# ?定所有?目
$mail->from = $myemail;
$mail->to = $myemail;
$mail->subject = "?迎!";
$mail->body = "?是真正的?子?件?息,n" .
"?然....你可以?成一行以上。";
# 加上附?
$mail->add_attachment($data, $filename, $content_type);

# 送出?子?件
$mail->send();
echo "?件已送出,??查您的信箱。";
}
?>
\

\

将MySQL迁移到Microsoft SQL Server 2000

将MySQL迁移到Microsoft SQL Server 2000
摘要
本白皮书描述了 Microsoft SQL Server 2000 的迁移能力,并提供了帮助开发人员将 MySQL 数据库迁移到 SQL Server 2000 的特定信息。
引言

本指南解释如何利用几个内置的 SQL Server 工具和实用程序将 MySQL 迁移到 Microsoft? SQL Server? 2000。它还提供了如何修改 MySQL 应用程序,使之与 SQL Server 2000 一起工作的指南。如果您购买了 MySQL 应用程序,您可以继续让这项投资发挥效用,同时又为应用程序结构提供了 SQL Server 2000 的高级功能。
读者对象

本白皮书的读者对象可以是刚接触 SQL Server 及其操作的人,但应非常熟悉 MySQL DBMS 和普通数据库的概念。目标读者必须具备:
一般的数据库管理知识。
足够的 MySQL DBMS 基础知识背景。
熟悉 MySQL 语言。
具有 sysadmin 固定服务器角色的成员资格。sysadmin 角色对该服务器有全权控制。要想了解登录 SQL Server 的更多信息,请参见 SQL Server 2000 联机图书的“登录”一节。

为了让说明清楚易懂,使用的基准开发和应用程序平台是 Microsoft Windows? 2000 操作系统 和 SQL Server 2000。MySQL ODBC 驱动程序与 MySQL 一起使用,MySQL 平台是使用 MySQL 3.23.37 的 Red Hat Linux 7.1。
概述

MySQL 是一个开放源代码的数据库管理系统 (DBMS)。它采用客户端/服务器结构,是一个多线程、多用户的数据库服务器。MySQL 是为高速应用设计的,因此,它并不提供关系数据库系统提供的许多功能,比如子查询、外键、引用完整性、存储过程、触发器和视图。此外,它有一个锁定机制,这对同时有不同用户进行许多写操作的数据表来说是不够的。它还缺少对软件应用程序和工具的支持。
SQL Server 2000 是一个完整的关系数据库管理系统 (RDBMS),它还包括用于 OLAP 和数据挖掘的集成分析功能。SQL Server 2000 满足最大的数据处理系统和商业 Web 站点对数据及分析的存储要求,同时可以为个人和小企业提供易用的数据存储服务。
Microsoft SQL Server 的结构支持高级的服务器功能,比如行一级的锁定、高级查询优化、数据复制、分布式数据库管理以及分析服务。Transact-SQL (T-SQL) 是 SQL Server 2000 支持的 SQL 语言。
本章中提到的结构特点只是 SQL Server 2000 提供的众多特点的一部分。SQL Server 2000 联机图书是安装应用程序时可以利用的一个有用资源。要使用联机图书,请打开 Microsoft SQL Server 程序组并单击“联机图书”。
迁移过程

本章通过列出 MySQL 和 Microsoft SQL Server 2000 的结构来介绍迁移过程。本章包括以下内容:
迁移准备
数据类型、保留字和运算符
MySQL 的数据迁移工具
Microsoft SQL Server 的数据迁移工具
直接迁移:数据转换服务 (DTS)
使用数据加载能力:查询分析程序
扩展应用程序
故障排除
迁移准备

正确的迁移规划对确保最终成功极其重要。开始迁移前,请查看待迁移 MySQL 数据库的架构。比较 MySQL 和 SQL Server 2000 的数据类型,了解二者的区别。本白皮书的“比较 MySQL 与 Microsoft SQL Server”一节提供了可比数据类型的框架。注意某些 MySQL 数据库对象可能会与 SQL Server 2000 的保留字冲突。下一节中有这些保留字。使用 DTS 迁移到 SQL Server 2000 之前应该先备份并复制 MySQL 数据库文件。
数据类型、保留字和运算符

本节介绍 SQL Server 2000 中使用的数据类型。为了顺利迁移,这里提供了一张 MySQL 和 SQL Server 2000 的数据类型对照表。同时还提供了 Microsoft SQL Server 中使用的保留字列表。它包括以下信息:
支持的 SQL Server 数据类型
比较 MySQL 与 SQL Server 2000
SQL Server 保留字
支持的 SQL Server 数据类型
数据类型
说明

BIGINT
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(整数)。

INT
从 -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647) 的整型数据(整数)。

SMALLINT
从 2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。

TINYINT
从 0 到 255 的整型数据。

BIT
非 1 即 0 的整型数据。

DECIMAL
从 -10^38 +1 到 10^38 -1 的固定精度和标度的数字数据。

NUMERIC
功能上相当于十进制数。

MONEY
从 -2^63 (-922,337,203,685,477.5808) 到 2^63 - 1 (+922,337,203,685,477.5807) 的货币型数据,精确到货币单位的万分之一。

SMALLMONEY
从 -214,748.3648 到 +214,748.3647 的货币型数据,精确到货币单位的万分之一。

FLOAT
从 -1.79E + 308 到 1.79E + 308 的浮点精度数字数据。

REAL
从 -3.40E + 38 到 3.40E + 38 的浮点精度数字数据。

DATETIME
从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确到三百分之一秒(3.33 毫秒)。

SMALLDATETIME
从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据,精确到一分钟。

CHAR
最大长度 8000 个字符的固定长度非 Unicode 字符数据。

VARCHAR
最大长度 8000 个字符的可变长度非 Unicode 字符数据。

TEXT
最大长度 2^31 - 1 (2,147,483,647) 个字符的可变长度非 Unicode 数据。

NCHAR
最大长度 4,000 个字符的固定长度 Unicode 数据。

NVARCHAR
最大长度 4000 个字符的可变长度 Unicode 数据。sysname 是系统提供的用户定义数据类型,功能上相当于 nvarchar(128),用于引用数据库对象名称。

NTEXT
最大长度 2^31 - 1 (1,073,741,823) 个字符的可变长度 Unicode 数据。

BINARY
最大长度 8,000 个字节的固定长度二进制数据。

VARBINARY
最大长度 8,000 个字节的可变长度二进制数据。

IMAGE
最大长度 2^31 - 1 (2,147,483,647) 字节的可变长度二进制数据。

CURSOR
对光标的引用。

SQL_VARIANT
存储 SQL Server 支持的数据类型(text、ntext、timestamp 和 sql_variant 除外)值的数据类型。

TABLE
用于存储结果集合供以后处理的特殊数据类型。

TIMESTAMP
整个数据库中都唯一的一个数字,随着行的每次更新而更新。

UNIQUEIDENTIFIER
全局唯一标识符 (GUID)。


详细信息请参见 SQL Server 2000 联机图书的“数据类型”主题。
比较 MySQL 与 SQL Server 2000

下表显示了 MySQL 和 SQL Server 2000 的数据类型映射关系。对于某些 MySQL 数据类型,SQL Server 中有不止一种对应的数据类型。此表包括以下信息:
数字类型
数据和时间类型
字符串类型

注意
D:用于浮点型,表示小数点后面的位数。最大值可以是 30,但至少应大于 M-2。
L:列值的实际长度
M:表示最大显示尺寸。最大有效显示尺寸是 255。
数字类型
MySQL
大小
SQL Server 2000

TINYINT
1 字节
TINYINT

SMALLINT
2 字节
SMALLINT

MEDIUMINT
3 字节


INT
4 字节
INT

INTEGER
4 字节
INT

BIGINT
8 字节
BIGINT

FLOAT(X<=24)
4 字节
FLOAT(0)

FLOAT(25<=X<=53)
8 字节
FLOAT(25)

DOUBLE
8 字节
FLOAT(25)

DOUBLE PRECISION
8 字节
FLOAT (53)

REAL
8 字节
REAL

DECIMAL
M 字节(D+2,如果 M DECIMAL

NUMERIC
M 字节(D+2,如果 M NUMERIC


日期和时间类型
MySQL
大小
SQL Server 2000

DATE
3 字节
SMALLDATETIME

DATETIME
8 字节
DATETIME

TIMESTAMP
4 字节
TIMESTAMP

TIME
3 字节
SMALLDATETIME

YEAR
1 字节
SMALLDATETIME


字符串类型
MySQL
大小
SQL Server 2000

CHAR(m)
M 字节,1<=M<=255
CHAR

VARCHAR(m)
L+1 字节,L<=M 且 1<=M<=255
VARCHAR

TINYBLOB
L + 1 字节,L<2^8
BINARY

BLOB
L + 2 字节,L<2^16
VARBINARY

TEXT
L + 2 字节,L<2^16
TEXT

MEDIUMBLOB
L + 3 字节,L<2^24
IMAGE

MEDIUMTEXT
L + 3 字节,L<2^24
TEXT

LONGBLOB
L + 4 字节,L<2^32
IMAGE

LONGTEXT
L + 4 字节,L<2^32
TEXT

ENUM (VALUE1, VALUE2, ...)
1 或 2 字节,取决于枚举值的数量(最多 65535 个值)。
无可用数据类型,但 CHECK 约束* 提供功能。

SET (VALUE1, VALUE2, ...)
1、2、3、4 或 8 字节,取决于集合成员的最大数量



* Check 约束通过限制字段中可以接受的值,强制实现数据完整性。详细信息请参见联机图书的“CHECK 约束”主题。
Microsoft SQL Server 2000 保留字
ADD
EXCEPT
PERCENT

ALL
EXEC
PLAN

ALTER
EXECUTE
PRECISION

AND
EXISTS
PRIMARY

ANY
EXIT
PRINT

AS
FETCH
PROC

ASC
FILE
PROCEDURE

AUTHORIZATION
FILLFACTOR
PUBLIC

BACKUP
FOR
RAISERROR

BEGIN
FOREIGN
READ

BETWEEN
FREETEXT
READTEXT

BREAK
FREETEXTTABLE
RECONFIGURE

BROWSE
FROM
REFERENCES

BULK
FULL
REPLICATION

BY
FUNCTION
RESTORE

CASCADE
GOTO
RESTRICT

CASE
GRANT
RETURN

CHECK
GROUP
REVOKE

CHECKPOINT
HAVING
RIGHT

CLOSE
HOLDLOCK
ROLLBACK

CLUSTERED
IDENTITY
ROWCOUNT

COALESCE
IDENTITY_INSERT
ROWGUIDCOL

COLLATE
IDENTITYCOL
RULE

COLUMN
IF
SAVE

COMMIT
IN
SCHEMA

COMPUTE
INDEX
SELECT

CONSTRAINT
INNER
SESSION_USER

CONTAINS
INSERT
SET

CONTAINSTABLE
INTERSECT
SETUSER

CONTINUE
INTO
SHUTDOWN

CONVERT
IS
SOME

CREATE
JOIN
STATISTICS

CROSS
KEY
SYSTEM_USER

CURRENT
KILL
TABLE

CURRENT_DATE
LEFT
TEXTSIZE

CURRENT_TIME
LIKE
THEN

CURRENT_TIMESTAMP
LINENO
TO

CURRENT_USER
LOAD
TOP

CURSOR
NATIONAL
TRAN

DATABASE
NOCHECK
TRANSACTION

DBCC
NONCLUSTERED
TRIGGER

DEALLOCATE
NOT
TRUNCATE

DECLARE
NULL
TSEQUAL

DEFAULT
NULLIF
UNION

DELETE
OF
UNIQUE

DENY
OFF
UPDATE

DESC
OFFSETS
UPDATETEXT

DISK
ON
USE

DISTINCT
OPEN
USER

DISTRIBUTED
OPENDATASOURCE
VALUES

DOUBLE
OPENQUERY
VARYING

DROP
OPENROWSET
VIEW

DUMMY
OPENXML
WAITFOR

DUMP
OPTION
WHEN

ELSE
OR
WHERE

END
ORDER
WHILE

ERRLVL
OUTER
WITH

ESCAPE
OVER
WRITETEXT



用于数据迁移的 MySQL 工具

MySQL 提供了几个客户端工具和实用程序,最常用的有:
mysql - 一个交互式客户程序,可以对数据库发布查询并查看结果
mysqldump - 此工具可以提取 MySQL 数据库中的架构和数据,并放到一个文件中
mysqlimport - 此工具可以读取文件中的架构和数据,并放到一个 MySQL 数据库中
mysqladmin - 此工具可以执行管理任务,比如创建数据库和删除数据库
myODBC - 一个 32 位的开放式数据库连接软件,可提供 ODBC 级别 0(有级别 1 和级别 2 的功能)驱动程序,用于将 ODBC 识别的应用程序连接到 MySQL
SQL Server 的迁移工具

SQL Server 有一组丰富的工具和实用程序,可以简化从 MySQL 的迁移。SQL Server 2000 数据转换服务 (DTS) 是一组图形化工具和可编程对象,用于从各种来源提取、转换和合并数据到一个或多个目标。
数据转换服务的功能

Microsoft SQL Server 2000 中的数据转换服务提供了从不同数据源迁移数据的方法。DTS 可以用向导程序驱动,也可以用 DTS 程序包设计器创建。DTS 向导可以快速完成数据直接复制。程序包设计器允许开发人员用多种编程语言编写自定义转换脚本。DTS 工具允许您:
将数据从 MySQL 迁移到 SQL Server 2000
在迁移前显示数据
迁移数据表、数据类型,例如文本和日期
用 MySQL 数据表迁移 MySQL 数据库
生成并查看迁移报告
自定义数据表和默认的数据类型映射规则
解决冲突,比如 SQL Server 保留字冲突
删除并重命名 SQL Server 架构模型中的对象
迁移单个数据表数据
数据转换服务术语

以下是用于描述 DTS 的术语:
DTS 程序包是一个连接、DTS 任务、DTS 转换以及工作流约束的有组织的集合,可以在 DTS 设计器中用图形化方式或用编程方式汇编在一起。
DTS 任务是一个分立的功能集合,在程序包中单步执行。每个任务都定义一个数据移动和数据转换过程中要执行的工作项目,或者一个要执行的作业。
DTS 转换是数据到达目的地之前要对它应用的一个或多个功能或操作。
DTS 程序包工作流允许数据转换服务 (DTS) 逐步运行,由优先约束对 DTS 程序包中的工作项目进行排序。您可以在 DTS 设计器中用图形方式设计 DTS 数据包工作流,也可用编程方式设计。
元数据为 DTS 提供的功能可以将程序包元数据和数据沿袭信息保存到元数据服务,并链接那些信息类型。您可以存储程序包中引用的数据库的类别元数据,以及统计与数据集市或数据仓库中特定数据行有关的历史信息。
直接迁移

将数据从 MySQL 迁移到 Microsoft SQL Server 的最直接选项是安装 myODBC 支持并创建一个 DTS 程序包,用它们将数据库从 MySQL 导入并创建到 Microsoft SQL Server。
以下是设置 Microsoft SQL Server 以迁移 MySQL 数据库的逐步操作。
安装 MyODBC 支持,它可在以下网址下载 http://www.mysql.com/
安装过程中,系统会提供以下对话框:

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
填写 ODBC 安装设置,使用如下信息:
Windows DSN 名称:

test


说明:

这是个测试数据库


MySQL 数据库:

test


服务器:

seawolf.microsoft.com


用户:

cgunn


密码:

my_password


端口:

3306


使用上述设置后,Windows DSN 名称在建立连接的计算机上必须唯一,服务器设置会完全验证域名(确保 DNS 或您提供的名称具备名称解析)或 IP 地址的有效性。
然后,执行 DTS 向导程序。从 Microsoft SQL Server 程序组中选择“Import and Export Data”,您会看到以下对话框。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
单击 Next 到下一步。
现在提供必要的数据源选择信息,此信息应该是,ODBC 数据源为 MySQL,test 为 System DSN,然后提供安全证书、用户名和密码(见下一个对话框),然后单击 Next。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
填写目标连接的详细信息,如下面的对话框所示,然后单击 Next。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
Specify Table Copy or Query 对话框让您在此选择数据源中的数据库对象选项,这里的数据源是 MySQL。在来源数据库中选择 Copy Table(s) 和 View(s)。另外需要说明的重要一点是,MySQL 不支持视图,所以选择此选项后,它将只复制数据表对象,单击 Next 继续。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
下一个是 Select Source Tables and View 对话框,您可以在这个对话框中选择来源数据表和目标数据表。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
单击椭圆按钮进行数据转换,如下面的 Column Mappings and Transformations 对话框所示。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
在这个对话框中,来源数据类型已经与目标数据类型匹配,空数据字段已经被选中。完成后,单击 OK。
然后会出现 Save, Schedule, and Replicate Package 对话框,允许您安排迁移时间,避开使用高峰期,同时允许您将 DTS 程序包用不同格式保存到不同地方。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
DTS 保存程序包对话框对 DTS 程序包提供了两类密码。第一个密码是所有者密码,允许您保护程序包内的所有用户/密码信息,而用户密码用于执行程序包和防止对 DTS 程序包的任何未授权执行,如下所示,单击 Next 继续。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
最后,Completing the DTS Import/Export Wizard 对话框会显示在 DTS 向导程序中所选选项的概要。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
单击 Finish 开始数据迁移过程。
Executing Package 对话框显示每项任务执行时的状态。绿色对钩表示任务成功完成。如果任务不能完成,有错误终止了进程,则会出现显示此错误的错误对话框。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。

现在您可以成功地将数据从 MySQL 迁移到 SQL Server 2000。
使用数据加载

您可以使用与 MySQL Server 一起提供的客户程序 mysqldump 将 MySQL 数据库的架构和数据输出到各种格式的 .sql/.txt 文件。DTS 可以使用 mysqldump 输出文件为大型数据表提供脱机数据加载能力。以下主题解释了数据加载过程:
生成 mysqldump 数据提取脚本
设置脚本传输
使用提取的脚本
生成 mysqldump 数据提取脚本

MySQL 有一个实用程序可以转储数据库和数据库集合进行备份,或者将数据传输到 SQL Server。
mysqldump 实用程序提供了创建数据库 SQL 脚本的能力。
mysqldump 最简短的语法是:
Shell> mysqldump [OPTIONS] database [tables]
本白皮书后面有 mysqldump 的可用选项信息,也可以查看 MySql 参考手册获得此信息。
使用 mysqldump 后,您会获得一个数据库的 SQL 脚本。
设置脚本传输

用 mysqldump 生成脚本后,可以将脚本传输到 SQL Server - 使用类似文件传输协议 (FTP) 的应用程序将脚本从 MySQL 主机传输到 SQL Server 2000 计算机。
通过 SQL 查询分析器使用提取的脚本

生成的脚本现在可以用于创建数据库对象和插入数据。从 MySQL 脚本构建数据库架构的比较好的方法是使用 SQL Server 2000 中的 SQL 查询分析器。
您可以直接从开始菜单运行 SQL 查询分析器,也可以从 SQL Server 企业管理器运行。也可以通过执行 isqlw 实用程序从命令行运行 SQL 查询分析器。
为了让脚本正确执行,还需要一些额外的工作,这需要对 SQL 语言进行某些更改。同样,记住逐步运行 SQL 脚本,并将数据类型更改为 SQL Server 兼容类型。下图显示了从 mysqldump 导入的一个脚本,需要说明的重要一点是,转储的是一个 ASCII 脚本文件。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
Microsoft SQL Server 2000 SQL 查询分析器允许您:
创建查询和其它 SQL 脚本并对 SQL Server 数据库执行这些脚本
用预定义脚本迅速创建常用数据库对象
迅速复制现有的数据库对象
无需知道参数就可以执行存储过程
调试存储过程
调试查询性能问题
定位数据库中的对象,或者查看并使用对象
在数据表中迅速插入、更新或删除行
为常用查询创建键盘快捷方式
将常用命令添加到工具菜单
扩展应用程序

将 MySQL 应用程序的数据管理部分移到 Microsoft SQL Server 后,您可以让 SQL Server 保护数据并维护所有引用完整性和用 Transact-SQL 编写的业务规则。
诸如 ADO、OLE DB 和 ODBC 这样的数据库应用程序编程接口 (API) 通过多种编程语言显示数据库数据。您可以用 Microsoft Visual C++、Microsoft Visual Basic 和 Microsoft Visual J++ 这样的开发系统访问这些 API。
此外,如果应用不断扩展,您不需要更改应用程序就可以将 Microsoft SQL Server 移到更大的计算机;SQL Server 能自动识别硬件配置,并因此自我调节,以获得最佳的内存、I/O 和处理器利用率。
从 Internet 访问数据

SQL Server 提供了将应用程序扩展到基于 Web 的接口的能力。这个能力使您可以随时随地访问应用程序。通过使用 IIS Web 服务器并在 Active Server Pages (ASP) 中使用 ActiveX 数据对象 (ADO),SQL Server 可以与 Microsoft Internet Information Services (IIS) 集成在一起,从而提供了一个访问 SQL Server 中所保存数据的快速、高效的用户接口。
详细信息请参见 http://www.msdn.microsoft.com
安全性

SQL Server 2000 中的数据库安全性既稳定又便于维护。不论是 SQL Server 还是 MySQL,重要的是要在两个层面考虑安全性。1) 能访问服务器,2) 能访问单个数据库。
MySQL 有一个独特的加强服务器访问安全性的方法 - 限制对数据源的访问。如果是客户端,则使用 IP 地址或完全合格的域名、通配符(如‘%’)。SQL Server 需要用户帐户,不论是由操作系统管理还是保存在 SQL Server 的 master 数据库中。
SQL Server 利用角色提供了组访问,这可以通过为用户组建立通用访问来方便数据库的管理。
以下步骤概要介绍了 Microsoft SQL Server 如何通过企业管理器工具提供对服务器和数据库的访问。
打开企业管理器,找到“Security Folder”,选择 Logins 图标,用鼠标右键单击并选择 New Login。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
出现 SQL Server Login Properties 对话框后,输入登录名称,这与 MySQL 中的用户名类似。选择 SQL Server 身份验证以提供一个对该 SQL Server 有效的安全级别。
指定默认数据库和语言。

在对话框顶部选择 Server Roles 选项卡,以提供对服务器权限的访问信息,这里突出显示的角色是 sysadmins(系统管理员),它相当于 MySQL 中的根访问。

下一个选项卡是 Database Access。这个属性页不但提供对单个数据库的访问,而且可以访问实际位于 SQL Server 上的索引数据库。选择数据库后,再设置数据库角色。默认情况下,所有用户都可访问公共角色。这个角色仍然需要分配权限。此图中还选择了另一个角色 db_owner,它只允许用户无限制访问数据库,但不能无限制访问整个 SQL Server 或者其它数据库,除非单独选择了其它数据库并分配了 db_owner 权限。

单击 OK 后,会出现输入密码的提示。


企业管理器中出现新的登录。您还会注意到此图中有一个名为“sa”的登录帐户,这个系统管理员帐户需要有密码,在安装 SQL Server 的过程中,会有一个为此登录保留空密码的选项,您应该指定这个密码。
如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
有关创建 Microsoft SQL Server 登录的详细信息,请参阅 SQL Server 联机图书的“管理安全性”主题。
数据库权限

SQL Sever 2000 也通过限制对数据库定义语言 (DDL) 以及数据操纵语言 (DML) 声明权限的访问提供了数据库安全保护能力,设置步骤与创建登录类似。使用企业管理器工具可以方便地设置 SQL Server 数据库权限。
数据操纵语言权限
打开企业管理器,找到数据库文件夹,然后选择要设置权限的数据库。选择 users 图标,然后选择数据库用户,用右键单击并选择 Properties。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
单击 permissions 按钮。

权限窗口提供了对所有数据库对象(比如数据表、视图和存储过程)设置 DML 声明的能力。选择权限后,请单击 OK。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
数据定义语言权限
要想为数据库提供 DDL 声明访问,需要选择该数据库的属性。选择数据库图标并用右键单击。选择 Properties。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
然后选择数据库属性窗口中的 permissions 选项卡。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
选择相应权限后,单击 OK。
故障排除

本章提供以下方面的故障排除方案和有关信息:
定义用户帐户
转储 MySQL 数据
优化命令行选项
定义用户帐户

当您往系统中安装 MySQL 服务器时,会默认设置一个根用户,它是拥有全部 DBA 特权的用户帐户。您应该用根用户通过 ODBC 登录到 MySQL 服务器。(注意:默认情况下,根用户只能登录对本地主机的访问,请记住允许根用户从运行 DTS 向导的计算机 IP 或 DNS 地址登录。)
转储 MySQL 数据

下面的表提供了转储 MySQL 数据和用 mysqldump 文本文件重新生成数据库时使用的语法解释。 命令
说明

mysqldump

此工具可以将 MySQL 数据库中的架构和数据提取到一个文件中。


mysql

加载 MySQL 以便您使用命令。


-u user name

MySQL 根用户名。此用户应该有全部的 DBA 特权。


-ppassword

您的 MySQL 数据库服务器的根用户密码。


--opt

优化数据表转储速度并写一个保证重载速度最快的转储文件。此选项可以启用 -add-drop-table、--add-locks、--all、--extended-insert, --quick 和 -lock-tables 选项。由 -opt 启用的选项列表请参见“MySQL 优化选项”部分。


databasename

您要将其内容转储到一个文本输出文件的数据库的名称。


<

用于重定向 UNIX 和 Windows NT/2000 中的输入的符号。


filename.sql

含有 MySQL 的文件名。



要想转储 MySQL 数据,请使用以下命令:
#> mysqldump -u user name -ppassword -opt databasename < filename.sql
若想用 mysqldump 输出文本文件重新创建数据库,请使用以下命令:
#> mysql -u user name -ppassword databasename < filename.sql
优化命令行选项

使用 -opt 可以自动在 mysqldump 命令行中启用选项。有关转储 MySQL 数据的更多信息,请参见“转储 MySQL 数据”一节。下表是 --opt 命令: 命令
说明

--add-drop-table

在每个 CREATE TABLE 语句之前添加 DROP TABLE If EXISTS 语句。


--all

包括所有 MySQL 特有的创建选项。


--extended-insert

写多个行插入语句


--quick

不缓存查询,直接转储到标准输出。如果使用此选项时您暂停了 mysqldump,您可能会干扰其它客户机,因为它会导致服务器等待。


--lock-tables

将所有表锁定为只读



MySQL 错误消息

本节提供了在 MySQL 数据库迁移到 SQL Server 2000 的过程中可能会出现的错误消息。
错误消息

用 DTS 迁移数据时,可能会出现以下错误消息: 错误消息
解决方案

无法连接 MSQL Server
您要连接的系统/或端口上是否正在运行 MySQL 服务器?

引发该错误的原因可能是:
?源端口默认设置为 3306。这个端口号指 MySQL 通讯要使用的端口。如果 MySQL 上对这个端口的定义不同,请在 MySQL ODBC 设置中更改此端口设置。
?确保用户具有访问 MySQL 服务器的相应 DBA 权限。
?确保用户名有效。


数据库中已经有一个名为“tablename”的对象

这个数据表是在执行 DTS 程序包的过程中创建的,请确保在程序包执行过程中已经删除或重新创建了该数据表。



结论

本白皮书提供了成功将数据库架构和数据从 MySQL 迁移到 Microsoft SQL Server 2000 所需的基本信息和背景知识。对应用程序来说,SQL Server 2000 更可靠、伸缩性更强、功能更多。

搜索引擎技术核心揭密(PHP)

编者按:这是一篇精彩的编程教学文章,不但详细地剖析了搜索引擎的原理,也提供了笔者自己对使用PHP编制搜索引擎的一些思路。整篇文章深入浅出,相信无论是高手还是菜鸟,都能从中得到不少的启发。

  谈到网页搜索引擎时,大多数人都会想到雅虎。的确,雅虎开创了一个互联网络的搜索时代。然而,雅虎目前用于搜索网页的技术却并非该公司原先自己开发的。2000年8月,雅虎采用了Google(www.google.com)这家由斯坦福大学学生创建的风险公司的技术。理由非常简单,Google的搜索引擎比雅虎先前使用的技术能更快、更准确搜索到所需要的信息。

  让我们自己来设计、开发一个强劲、高效的搜索引擎和数据库恐怕短时间内在技术、资金等方面是不可能的,不过,既然雅虎都在使用别人的技术,那么我们是不是也可以使用别人现成的搜索引擎网站呢?

剖析编程思路

  我们可以这样设想:模拟一个查询,向某个搜索引擎网站发出相应格式的搜索命令,然后传回搜索结果,对结果的HTML代码进行分析,剥离多余的字符和代码,最后按所需要的格式显示在我们自己的网站页面里。

  这样,问题的关键就在于,我们要选定一个搜索信息准确(这样我们的搜索才会更有意义啊)、速度快(因为我们分析搜索结果并显示需要额外的时间),搜索结果简洁(便于进行HTML源代码分析和剥离)的搜索网站,由于新一代搜索引擎Google的各种优良特性,这里我们选择它为例,来看看用PHP怎样实现后台对Google(www.google.com)搜索、前台个性化显示这一过程。

  我们先来看看Google的查询命令的构成。进入www.google.com网站,在查询栏中输入“abcd”,点击查询按钮,我们可以发现浏览器的地址栏变成:"http://www.google.com/search?q=abcd&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=",可见,Google是通过表单的get方式来传递查询参数并递交查询命令的。我们可以使用PHP中的file()函数来模拟这个查询过程。

了解File()函数

  语法: array file(string filename);

  返回值为数组,将文件全部读入数组变量中。这里的文件可以是本地的,也可以是远程的,远程文件必须指明所使用的协议。例如: result=file(“http://www.google.com/search?q=abcd&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=”),该语句将模拟我们在Google上查询单词“abcd”的过程,并将搜索结果以每行为元素,传回到数组变量 result中。因为这里读取的文件是远程的,所以协议名“http://”不能缺少。

  如果要让用户输入搜索字符进行任意搜索,我们可以做一个输入文本框和提交按钮,并将上文中的被搜索字符“abcd”用变量替换:
echo '
'; //没有参数的form,默认提交方式为get,提交到本身
echo ''; //构造一个文本输入框
echo ''; //构造一个提交查询按钮
echo '
';

if (isset( keywords)) //提交后PHP会生成变量 kwywords,即要求下面的程序在提交后运行
{
urlencode( keywords); //对用户输入内容进行URL编码
result=file("http://www.google.com/search?q=". keywords."&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=");
//对查询语句进行变量替换,将查询结果保存在数组变量 result中
result_string=join(" ", result); //将数组$result合并成字符串,各数组元素之间用空格粘和
... //进一步处理
}
?>

  上面的这段程序已经能按用户输入内容进行查询,并将返回的结果合成一个字符串变量$result_string。请注意要使用urlencode()函数将用户输入内容进行URL编码,才可以正常地对输入的汉字、空格以及其他特殊字符进行查询,这样做也是尽可能逼真地模拟Google的查询命令,保证搜索结果的正确性。

对Google的分析

  为了便于理解,现在假设我们所真正需要的东西是:搜索结果的标题。网址和简介等,这是一个简洁而典型的需求。这样,我们所要做的便是:去除Google搜索结果的台头和脚注,包括一个Google的标志、再次搜索的输入框和搜索结果说明等,并且在剩余的搜索结果各项条目中剥离原来的HTML格式标记,替换成我们想要的格式。

  要做到这一点,我们必须仔细地分析Google搜索结果的HTML源码,找到其中的规律。不难发现,在Google的搜索结果的正文总是包含在源码的第一个

标记和倒数第二个

标记之间,并且倒数第二个

标记后紧跟table字符,而且这个组合“

\在源码中也仅有一次,利用这个特点,我们可以这样去除Google的台头和脚注。

  以下所有程序均依次接续在上文程序的“进一步处理”处。

  result_string = strstr( result_string, "

"); //取 result_string从第一个

开始后的字符串,以去除Google台头
position= strpos( result_string,"

table符号的位置
result_string= substr( result_string,0, position);//截取第一个

table符号之前的字符串,以去除脚注

应用与实现

  OK,现在我们已经得到有用的HTML源码主干了,剩下的问题是如何自主地显示这些内容。我们再分析一下这些搜索结果条目,发现每个条目之间也是很有规律的用
分隔,也就是各成一个段落,按这个特点我们用explode()函数把每个条目切开:

  语法:explode(string separator, string string);

  返回一个数组,按separator切开后的各个小字串被保存在数组中。

  于是:
result_array=explode("

", result_string); //用字串"

"把结果切开

  我们就得到一个数组 result_array,其中每个元素都是一个搜索结果条目。我们所要做的仅仅是研究每个条目及其HTML显示格式代码,然后按要求替换就行了。下面用循环来处理 result_array中的每个条目。
for( i=0; i {
... //处理每个条目
}

  对于每个条目,我们也很容易找到一些特点:每个条目都由标题、摘要、简介、类别、网址等组成,每个部分都换行,即包含
标记,于是再次分割:(以下处理程序放在上文的循环中)
every_item=explode("
", result_array[ i]);

  这样我们得到一个数组 every_item,其中 every_item[0]就是标题, every_item[1]和 every_item[2]两行为摘要, every_item[3]和 every_item[4]等等的头部如果包含“简介:”、“< font size=-1 color=#6f6f6f>类别:< /font>”字符,则是简介或类别(因为有的结果条目没有该项),如果头部包含“< font color=green>”则肯定就是网址啦,这种对比判断我们常使用正则表达式(略),如果要替换也很方便,比如包含标题的$every_item[0],其本身是有链接的,我们希望修改这个链接属性,让它在新窗口打开链接:
echo eregi_replace(' {
... //处理每个条目中除去第一项(第一项为标题,已经显示)的每一项
... //更多格式修改
}

  这样就修改了链接属性,其余很多显示格式的修改、剥离、替换都能用正则替换eregi_replace()来完成。

  至此我们已经得到了每个搜索条目的每一项,并能任意修改每项的格式,甚至可以给他套上漂亮的表格。然而一个好的程序应该能适应各种运行环境的,这里也不例外,我们其实还只是讨论了搜索结果的HTML剥离的一种框架方法,真正要做得完美,还要考虑很多内容,比如要显示一共搜索出多少结果,分成多少页等等,甚至还可以刨除与Google相关的那些“类别”、“简介”等代码,让客户根本看不到原始网站。不过这些内容和要求我们都能通过分析HTML进行剥离得到。现在大家完全能自己动手,做个极富个性化的搜索引擎啦。

如何将动态页面改为用HTM格式访问(php/asp通用)

Internet上网站数量的增多,网站的宣传越来越多地依赖搜索引擎的搜索结果,怎样让搜索引擎更好地为站点服务与提高站点的访问量有着非常密切的关系。搜索引擎并非是上帝的赠送给Internet产物,搜索引擎其本身既是站点,同时也是由各个程序来建设的。而各种搜索引擎一般都使用一种称为搜索引擎机器人的技术,这种机器人会根据一定规则的在Internet上访问站点,并把有价值的页面收集到搜索引擎的缓存数据库保存。一旦有用户来搜索,那么搜索引擎会直接在其缓存中搜索结果,并将结果报给用户。

搜索机器人的查找规则比较复杂,但是其中有一个很重要的规则,就是搜索机器人对静态页面的处理能力要强于动态页面。一般情况下搜索机器人简单的把静态页面理解为扩展名成.html或者.htm的页面,而将扩展名是.ASP、.PHP及.CGI的页面理解成动态页面。换言之如果一个站点都是.html页面,那么它被搜索引擎全文搜到的可能性就要比.PHP的页面高几个数量级,当然因此而来的访问量也会高出很多。


如何把自己站点的内容全都静态页面化,最简单的做法自然是每个页面都用页面设计软件直接作成静态页面,这对小型站点不是难事,但是对页面总数上万的大中型站点,都用手工的静态页面设计就会带来高昂的成本和保存、修改上的困难。在这种情况下,资金雄厚的大网站会采用能在后台生成.html文件的内容管理(CMS)系统管理。无论是手工做的.html文件,还是后台生成的.html文件,都能实现真正意义上的静态页面。

但仍有相当数量的中型站点采用动态发布的CMS系统,动态系统对网页的更新效率很高,可在后台发排的同时在前台显示,缺点是要消耗相当量的服务器资源,同时得到一堆扩展名为.ASP.PHP的页面。要完全替换CMS系统并不容易,而且具有静态页面后台生成功能的成熟CMS系统价格都很高昂。

动态CMS系统有无简单获取.html文件扩展名的方法?当然有,采用URL重写转向功能。

对URL重写转向的支持,在Apache服务器上由一非缺省模块(mod_rewrite)来完成,这个模块的功能很强大,同时也很烦琐。而在IIS下也同样有类似的模块,分别是ISAPI REWRITE及IIS REWRITE。无论是在Apache下还是在IIS下,重写转向的语法都基于正则表达式,只有少量的不同。当然对一般的应用,没必要把所有手册和说明文档翻熟,下面以一个虚拟的http://www.siyizhu.com动态站点为例介绍一些简单的方法,读者可以根据自己网站的情况做调整。

网络栏目:http://www.siyizhu.com/content.asp?sort=3

在IIS的安装isapirewrite的情况下只须设置:RewriteRule /content/(d+).html /content.asp?sort= [N,I]

这样就将:/content/3.html 这样的请求映射成为/content.asp?sort=3

然后通过:http://www.siyizhu.com/content/3.html 同样能访问到刚才的页面。

另一个更通用的能将所有的动态页面做参数映射的表达式是:

RewriteRule (.*?.php)(?["/]*)?/(["/]*)/(["/]*)(.+?)? (?2&:?)=?5: [N,I]

这样就把http://www.siyizhu.com/foo.php?a=A&b=B&c=C表现成http://www.siyizhu.com/foo.php/a/A/b/B/c/C。

当然用URL重写转向而得的.html的URL实质上还是个动态页面,只是搜索引擎上的机器人及浏览器上的链接与正常的静态页面一摸一样,URL对用户的亲和度非常高。即便是在用模块方式运行的Apache下,这样或多或少都会有一些性能上的损失。同时如果真的把论坛这种更新非常快的内容也让Google搜索进去并不能方便用户,有时候还会带来很多负面影响。所以URL重写转向最合适的用途是一些中小型CMS动态页面发布平台,以便让搜索引擎能记录下主页内容从而让更多的人能搜索到。

用正确的小汽车对象学习和熟悉类的概念

很多书讲到类总喜欢拿小汽车来做例子,但是有些例子实在是又臭又烂误人子弟,骗人钱财,毁人前程,弱智低级到瞎编一个什么 set_color()函数来教人。实在是白白糟踏了好东西。今天在phpx.com又看到一个受害者,忍不住花了两个小时写了这个教程。

闲话少说,我们来正经的,我们的小车可不是随便让人图图颜色就完了(只能图颜色的是废车)。我们的这个小车不但能够到处乱跑,而且装备了高级GPS全球定位系统,油表,里程表。由于使用了面向对象的技术,驾驭这样的一部小汽车一点都不难。

举例子首先要提供一些背景材料。我们有一辆小汽车,可以在一个拥有xy坐标的地图上按照东南西北方向任意的行驶,你可以设定小车行驶的方向和距离,小车会向你汇报它的坐标位置。

其实学习类应该和我们学习其它事物一样,从学习使用开始,然后再学习他的原理。所以我们先来熟悉一下如何正确驾驶这样的一个小汽车:


$startPoint = & new Position(3,9); //初始一个出发点坐标x=3,y=9

$myCar = & new Car(500,$startPoint); //我得到一个新的小车,新车初始燃油 500 升,出发地点$startPoint。

$myCar->setHeading('s'); //给小车设定方向 s:南方 n:北方 w:西方 e:东方。

if($myCar->run(100)) //然后让小车跑100公里,如果顺利完成任务显示燃油量。如果半途而废,我们显示警报信息。
{
print('
小车一切正常,目前还有燃油:'.$myCar->getGas().'');//获得燃油数
}
else
{
print('
小车出问题了: '.$myCar->getWarning().'');//显示警报信息
}

$myPosition=$myCar->getPosition();//获得小车当前的位置

print('
我的小车现在
X:'.$myPosition->getX().'Y:'.$myPosition->getY());//显示小车的坐标位置
?>
先给自己制造一个小汽车,并且给他装备上一个定位对象 Position。 然后设定方向, 然后让小车奔跑。 最后检查并输出小车的方位。 复杂么?很难理解吗? 虽然这里我们用到了两个对象(类):Car 和 Position 但是我相信即使是初学者也不会觉得上面的代码很困难。

我们学会如何开车了以后,再来仔细看一看这个小车对象是怎样工作的。定义一个对象其实很简单只需要 用一个关键字class 和一对{}就可以了,所以我们这样定义这两个对象:

class Car {}
class Position{}

当然,仅仅这样的两个类什么也做不了,我们还需要给他们增加一些功能,先从小汽车开始,我们需要能够给小车设定方向并且让小车奔跑所以我们增加两个方法,也就是2个函数只不过这两个函数包含在小车对象内只有通过小车对象才可以使用。

setHeading()
run()
class Car
{
function setHeading($direction)
{

}

function run($km)
{

}
}

特别提示:设计一个良好的类的窍门是从如何使用它下手,也就是说先考虑这个对象应当有哪些方法,而不是先确定它有哪些属性。
为了更好的了解小车的状况我们还需要这些方法:
getGas() 获得小车当前的燃油数
getPosition() 获得小车当前的位置
getWarning() 警报信息
为了完成这些功能我们的小车还需要自己的油表,警报消息,和定位仪。我们把这些也添加到 Car 类中,同时我们还给这个类增加了一个初始化的函数 这个函数名字和类的名字一样,这样就有了一个大体的框架。


class Car
{
/**
* 小车的汽油量
*
*@var
*@access
*/
var $gas;

/**
* 里程记录
*
*@var
*@access
*/
var $meter;

/**
* 车的位置(由GPS自动控制)
*
*@var Object position
*@access private
*/
var $position;

/**
* 发动机每1公里耗油量,这个车是0.1升
*
*@var Integer
*@access private
*/
var $engine=0.1;

/**
* 警报信息
*
*@var
*@access
*/
var $warning;

/**
小车的初始化。新车出场当然要
1、加汽油。
2、里程表归零。
3、清除警报信息。
4、设定出发位置。
*/
function Car($gas,&$position)
{
$this->gas= $gas; //加汽油
$this->meter = 0;
$this->warning =''; //清除警报信息
$this->position = $position; //设定出发位置
}

function getWarning() //返回警报信息
{
return $this->warning;
}

function getGas() //返回汽油表指数
{
return $this->gas;
}

function &getPosition()
{
return $this->position; //返回当前小车的位置
}

function setHeading($direction='e')
{

}

/**
* 开动小汽车
*@access public
*@param INT 公里数
*/
function run($km)
{

}

}
?>
这时候最关键的两个方法 setHeading 和 run 就变得简单了,由于小车装备了 Position 对象 $this->position, 所以关于坐标定位的事情它也不用管了, 交给 Position 对象好了, 他自己只要管理好自己的油表,里程表就可以了。完成以后的 Car 类变成这个样子了:


class Car
{
/**
* 小车的汽油量
*
*@var
*@access
*/
var $gas;

/**
* 里程记录
*
*@var
*@access
*/
var $meter;

/**
* 车的位置(由GPS自动控制)
*
*@var Object position
*@access private
*/
var $position;

/**
* 发动机每1公里耗油量,这个车是0.1升
*
*@var Integer
*@access private
*/
var $engine=0.1;

/**
* 警报信息
*
*@var
*@access
*/
var $warning;


/**
小车的初始化。新车出场当然要
1、加满汽油。
2、里程表归零。
3、清除警报信息。
4、设定出发位置。
*/
function Car($gas,&$position)
{
$this->gas= $gas; //加满汽油
$this->meter = 0;
$this->warning =''; //清除警报信息
$this->position = $position; //设定初始位置
}

function getWarning() //返回警报信息
{
return $this->warning;
}

function getGas() //返回汽油表指数
{
return $this->gas;
}

function &getPosition()
{
return $this->position; //返回当前小车的位置
}

function setHeading($direction='e')
{
$this->position->setDirection($direction); //因为使用了Position 对象,小汽车不需要自己来操心XY坐标值了,交给Position 对象吧。
}

/**
* 开动小汽车
*@access public
*@param INT 公里数
*/

function run($km)
{
$goodRunFlag = true;//是否成功完成任务。
$maxDistance = $this->gas/$this->engine; //小车能够跑的最大距离。

if(($maxDistance)<$km)
{
$this->warning = '没有汽油了!';//设定警告信息,能跑多远就跑多远吧。
$goodRunFlag = false;//但是任务肯定完成不了。
}
else
{
$maxDistance=$km; //没有问题,完成任务以后就可以停下来休息了。
}
$this->position->move($maxDistance);//在坐标上移动由Position对象来完成,小汽车只要负责自己的油耗和公里表就可以了。
$this->gas -= $maxDistance*$this->engine;//消耗汽油
$this->meter += $maxDistance; //增加公里表计数
return $goodRunFlag;
}
}
?>
讲到这里我想我的这篇文章也该结束了。别着急,我当然还记得 Position 类还没有完成,但是有了上面小汽车的例子 Position 应该就非常简单了, 如果你理解了这个小汽车的类, 现在就是你一展身手的时候了, 你来完成这个Position 对象吧, 我相信你能够完成它(其实这正是面向对象和封装的美妙之处)。你需要记住先从Position 的方法开始设计比如:


getX()
getY()
move()
setDirection()
所谓类就是指某一类的事物,它可以是具体的(Car)也可以是抽象的(Position),我们通过封装简化了使用和操作就像我们使用电视,手机一样一点都不复杂。

一篇好的入门教程应该

1.生动真实的例子。
2.不但提供了正确的概念,在变量和函数命名,函数封装和调用上也值的学习。
3.即便你熟悉了面向对象编程以后也不会认为当初的例子有什么不妥之处。
4.如果你读完教程动手的话一定能够深刻体会到教程的美妙之处,大大减少了走弯路的机会。
5.好的代码是可以被人像书一样读懂,你认为呢?

PHP实现文件安全下载

  你一定会笑我"下载文件"如此简单都值得说?当然并不是想象那么简单。例如你希望客户要填完一份表格,才可以下载某一文件,你第一个想法一定是用"Redirect"的方法,先检查表格是否已经填写完毕和完整,然后就将网址指到该文件,这样客户才能下载,但如果你想做一个关于"网上购物"的电子商务网站,考虑安全问题,你不想用户直接复制网址下载该文件,笔者建议你使用PHP直接读取该实际文件然后下载的方法去做。程序如下:

  $file_name = "info_check.exe";

  $file_dir = "/public/www/download/";

  if (!file_exists($file_dir . $file_name)) { //检查文件是否存在

  echo "文件找不到";

  exit;

  } else {

  $file = fopen($file_dir . $file_name,"r"); //打开文件

  //输入文件标签

  Header("Content-type: application/octet-stream");

  Header("Accept-Ranges: bytes");

  Header("Accept-Length: ".filesize($file_dir . $file_name));

  Header("Content-Disposition: attachment; filename=" . $file_name);

  //输出文件内容

  echo fread($file,filesize($file_dir . $file_name));

  fclose($file);

  exit;}

  而如果文件路径是"http"或者"ftp"网址的话,则源代码会有少许改变,程序如下:

  $file_name = "info_check.exe";

  $file_dir = "www.easycn.net/";

  $file = @ fopen($file_dir . $file_name,"r");

  if (!$file) {

  echo "文件找不到";

  } else {

  Header("Content-type: application/octet-stream");

  Header("Content-Disposition: attachment; filename=" . $file_name);

  while (!feof ($file)) {

  echo fread($file,50000);

  }

  fclose ($file);

  }

  这样就可以用PHP直接输出文件了

用php写的进度条

用php写的进度条
iwind 2004-03-01 15


//by iwind netcool@163.com
set_time_limit("3600");
ob_end_clean();
for($i = 1;$i <= 300; $i++ ) echo(" ");
$file="jicheng.rar";//你要上传的东东
$obj="upload/website.rar";//目标文件,就是文件上传到哪里
$length="100";//进度条长度,可能不准备
$pimg="pro.gif";//进度条图片
$csize="100000";//每次拷贝的尺寸,单位字节

$size=filesize($file);
if(file_exists($obj)&&is_file($obj)){
$fsize=filesize($obj);
}
else{
$fsize="0";
}
$data=fread(fopen("$file","rb"),$size);
$nums=ceil(($size-$fsize)/$csize);
echo"";
for($i="0";$i<$nums;$i++){
$start=$fsize+$i*$csize;
$cdata=substr($data,$start,$csize);
$msize=strlen($cdata);
fwrite(fopen($obj,"ab"),$cdata);
echo"";
flush();
sleep(1);
}
echo"上传成功";

?>

Wednesday, August 17, 2005

www.canvasrus.com.au/

手头有一个项目,一个购物网站,例子:http://www.canvasrus.com.au/

这里写一个帖子,作为记录,总结,一边做一边写,希望对以后的项目有大的帮助。


已经完成的:
database design
GD libary 分割图片,参考
http://www.nyphp.org/content/presentations/GDintro/gd1.php

alpha
上传图片,储存图片路径,生成缩略图。
参考
http://www.devarticles.com/c/a/PHP/Creating-a-MultiFile-Upload-Script-in-PHP/1/

alpha1
改用 Build An Automated PHP Gallery System In Minutes
 参考 http://www.sitepoint.com/article/php-gallery-system-minutes

alpha2
图片的管理功能完全修改完毕,以适应现在的数据库
找到 shopping cart 例子
根据
Dreamweaver Article
Building a Persistent Shopping Cart with PHP and MySQL
http://www.macromedia.com/devnet/dreamweaver/articles/php_cart.html
admin部分全部完成,有log in,
(参考http://www.tutorialized.com/tutorial/Simple-login-script-with-Sessions/5288)
图片和各种产品的修改



2005-8-17
alpha3
To do:
shopping cart
根据
Dreamweaver Article
Building a Persistent Shopping Cart with PHP and MySQL
http://www.macromedia.com/devnet/dreamweaver/articles/php_cart.html
改写

改写products.php基本完毕,目前每次只能添加一个商品

2005-8-18
alpha3
To do:
完成cart.php,实现购买,查看和删除商品
给出所有product的preview链接

问题:是否要给出每次添加n个的选项?
页面间跳转注意给出的参数是否正确?
用户上传部分的具体细节要跟client讨论.

Done:
完成cart.php,实现购买,查看和删除商品
给出所有product的preview链接

出现的问题:sql的问题,已经解决

新问题:GD libray 生成的新图片偏色,不知道原因,在php user group new zealand上询问中

答案:
Okay here try this J (btw this can resize the image too)





$theImage = imagecreatetruecolor($newWidth, $newHeight);

$theSource = imagecreatefromjpeg($sourceImage);



// okay do it

imagecopyresampled($theImage, $theSource, 0, 0, 0, 0, $newWidth, $newHeight, $currentWidth, $currentHeight);

根据上面,把生成缩略图的地方也改为imageCreateTrueColor

现在整个网站基本成形

To do:
credit card gateway
user input details
write order to db
user upload image and order based on this image

beta1
解决的问题:
上传后有的文件变成一行,重新在UltraEdit新建一个空白文件,把当初最早的有回车的文件拷贝过来,另存来解决。好像是关于DOS格式的问题,也许是 /n, /r, /n/r在不同操作系统下的问题。
另一个是mysql查询的问题
DO:
$query = "SELECT * FROM table";
$result = mysql_query($query);

DO NOT:
$result = mysql_query("SELECT * FROM table");