source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是一个点符号,(从Bourne Shell而来)是source的另一名称。这两个命令都以一个脚本为参数,该脚本将作为当前shell的环境执行,即不会启动一个新的子进程。所有在脚本中设置的变量将成为当前Shell的一部分。同样的,当前脚本中设置的变量也将作为脚本的环境,source(或点)命令通常用于重新执行刚修改的初始化文件,如 .bash_profile 和 .profile 等等。例如,如果在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则可以用source命令重新执行 .bash_profile 中的命令而不用注销并重新登录。象 .bash_profile 或其它类似的Shell脚本这样,文件无需可执行权限即可用source或点命令执行。


source命令的一个妙用


在编译核心时,常常要反复输入一长串命令,如

make mrproper

make menuconfig

make dep

make clean

make bzImage

.......

这些命令既长,又繁琐。而且有时候容易输错,浪费你的时间和精力。如果把这些命令做成一个文件,让它自动按顺序执行,对于需要多次反复编译核心的用户来说,会很方便。用source命令可以办到这一点。它的作用就是把一个文件的内容当成是shell来执行。先在/usr/src/linux-2.4.20目录下建立一个文件,取名为make_command:

在其中输入如下内容:

make mrproper &&

make menuconfig &&

make dep &&

make clean &&

make bzImage &&

make modules &&

make modules_install &&

cp arch/i386/boot/bzImge /boot/vmlinuz_new &&

cp System.map /boot &&

vi /etc/lilo.conf &&

lilo -v

文件建立好之后,以后每次编译核心,只需要在/usr/src/linux- 2.4.20下输入

source make_command

就行了。这个文件也完全可以做成脚本,只需稍加改动即可。这里主要是让大家理解 source的用法。如果你用的不是lilo来引导系统,可以把最后两句话去掉。配置你自己的引导程序来引导新内核。


shell编程中的命令有时和C语言是一样的。&&表示与,||表示或。把两个命令用&&联接起来,如 make mrproper && make menuconfig ,表示要第一个命令执行成功才能执行第二个命令。对执行顺序有要求的命令能保证一旦有错误发生,下面的命令不会盲目地继续执行。

原文 :Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1451617

硅胶加热板

WEB2.0 jackxiang 2010-5-23 16:15

http://search.taobao.com/search?q=%B9%E8%BD%BA%BC%D3%C8%C8%C6%AC&from=rs&navlog=rs-2-q-%B9%E8%BD%BA%BC%D3%C8%C8%C6%AC
http://www.boost.org/
超越C++标准库:Boost库导论,
但是C++标准并没有涉及到多线程,这让程序员们开始怀疑是否可能写出多线程的C++程序。尽管不可能写出符合标准的多线程程序,但是程序 员们还是会使用支持多线程的操作系统提供的多线程库来写出多线程C++程序。但是这样做至少有两个问题:这些库大部分都是用C语言完成的,如果在C++程 序中要使用这些库就必须十分小心;还有,每一个操作系统都有自己的一套支持多线程的类库。因此,这样写出来得代码是没有标准可循的,也不是到处都适用的 (non-portable)。Boost线程库就是为了解决所有这些问题而设计的。

http://rudiments.sourceforge.net/
Rudiments is an Open Source C++ class library providing base classes for things such as daemons, clients and servers, and wrapper classes for the standard C functions for things like regular expressions, semaphores and signal handling.


----------------------------------------------------------------------------------阅读全文
就是shell脚本执行时,显示里面到底调用了哪些命令:

set -x #打开跟踪
set +x #关闭跟踪
很多求职者被问到“职业理想”的时候,给出的答案是:月薪过万,或者进入全球500强企业。

我们常认为,理想就是实现某些物质利益,比如钱、名誉或者地位。而这又基于一种心理定势,那就是我必须有钱才能快乐。我的一位同事,在认为自己赚够了钱之后,说了声“拜拜”就去享受他的环球旅行了。当时他才三十多岁。然而几个月后,他发现自己当初的决定是错的,他不用担心温饱,但并不快乐。因为真正的快乐来自于工作的过程,而不是由它获得的报酬。

所以,在确立职业理想时要考虑到这个前提:高薪并不等于职业理想。我们生命的价值不在于拥有多少钱,而在于做了多少有意义的工作。还有一些研究告诉我们,那些追求理想的人,在多年以后比那些只追求金钱的人会赚到更多钱。

从我个人的经历来看,树立理想时更应注重自己的兴趣、成就感。当初我从微软离开就是因为发现自己只是那个机器中的一个零件,工作激情逐渐消退。于是,我想自己该接受另一个挑战了。在Google这个富有创意的团队里,我看到了自我的价值、年轻的力量,这更符合我的职业理想。

所以,我希望所有的求职者都记住一句话:事业比金钱重要,机会比安稳重要,未来比今天重要。

职业理想不是在一天树立的

很多求职者说,刚开始找工作时还有目标,现在是越找越没有标准,感到很迷茫。我想说的是,如果大学四年(甚至更长的求学时间)里没有培养起自己的理想,那么,迷茫是正常的。

求学十几年目标就是考上大学,这是家长为你们树立的“理想”。而现在大学毕业了,面对求职,没人告诉你该做什么了,于是迷茫产生了。那么,如何摆脱这种迷茫呢?当然是做人生规划,让自己有个目标。但是,这不是一步登天的过程,理想不是一天就能树立的。

我一直建议大学四年的时间应该用来做人生规划,当然也包括树立职业理想。大一大二是理解自己的过程:你喜欢什么,适合做什么,这些问题应该得到解决。我大学时选了很多不务正业、奇奇怪怪的课,都跟自己的专业没什么关系。但是这些课让我知道了自己的兴趣在哪里,这是我最大的收获,也是我确立职业理想的基础。

到了大三大四,你们的疑惑就不该指向自己了,而应该更多地去理解外界。比如我想做的这个行业现在发展到了什么程度?有哪些公司能提供相关工作机会?如果要得到这些工作机会,我需要做哪些准备?其实在这个过程中,你就逐渐树立了自己的职业理想,而且初步探索了一条通向理想的路。

先就业再择业,
并不是理想向现实的妥协

鉴于紧张的就业形势,我建议求职者“先就业再择业”。第一份工作很重要,但尚未重要到决定终生。一个人一生换上四五份工作是正常的,很多时候,职业理想需要一个曲折实现的过程。

很多人说:“不管怎么样我一定要实现目标,做不到我也要拼命去试。”其实这不见得是件好事。我建议大家采用“两步计划”来实现职业理想。假如你设定了一个目标,不要一毕业就想马上实现,好像做不到这辈子就算完了。你应该告诉自己:这个理想很好,我实现它的可能性有多高。如果目前可能性不大,那么我应该做些什么让我能够离它更近一步。

在此,我举一个例子。有一个在美国读大学的学生,他所在的学校不算很好,他的成绩还算可以。他立志进入Google工作,问我有没有这个可能。在问了他一些基础知识后,我发现他很聪明,但专业知识不够扎实,我不认为目前的他有机会进入Google。因此我对他说:“现在还很难,但如果再努力一下就有可能。”他继续问:“我能做些什么事让这个可能性最大化呢?”于是,我建议他去读硕士,并向他推荐了Google很喜欢的一所大学——加拿大的滑铁卢大学,因为它的计算机学院教学务实,而且入学还算容易,学费也不贵。两年后他拿到了硕士学位,现在已经进入Google工作。
受挫的理想才是好理想

一蹴而就、没有经过挫折
  文/周鸿祎

  在互联网领域创业的人越来越多,但究竟怎样才能打造出成功的互联网产品,一直存在着理解的误区,也困扰着很多创业者。

  从我个人多年的实践中,我认为互联网产品有几个容易被忽视的特点:第一,互联网产品要有一个灵魂,要符合相关领域的游戏规则,能打动用户的心。如果这一点没做好,产品外观做得再华丽,后台再强大,也很难成功。打动用户的心,这好像是废话,但也最质朴,很多产品其实不是在真正满足用户需求,而是在发明或幻想用户需求,甚至逆着用户需求在做。像国内很多SNS网站都模仿Facebook,尽管很像,但都不太成功,而开心网摸对了用户的脉,中国互联网用户上SNS实际是以开心、娱乐为主,简单、容易上手、好玩的小游戏就打动了用户。

  第二,互联网产品需要不断运营、持续打磨,好产品是运营出来的,不是开发出来的。而传统的软硬件产品都有个物化的载体,不可能经常改,比较稳定。互联网产品的本质是服务,就是通过某种形式的桥梁和窗口把服务传递给用户,由于用户的需求不断在变,产品就要随时调整。早些年微软的Windows XP比较成功,因为在传统软件时代,用户需求不多,厂商很容易能了解到;到了互联网时代,闭门造车出来的Vista就不可避免的失败,用户需求变化太快了,厂商对此没有把握。

  产品一定是让人去用的,不断根据用户反馈去修正。现在很多人都在讲“以用户和市场为中心”,但实际上还是“以公司为中心”。我曾经看过一家大公司的内部报告,说要做一个IM产品打败腾讯,说可以为自身带来什么价值,可以整合内部产品等,但从头到尾没有涉及能为用户创造何种价值。这种出发点必然决定失败的结局。

  我认为自己做客户端的资历比马化腾要深,但如果真的做一个IM产品,在产品细节和技术上可能比他做得好,但很难比他成功。我们俩的背景不一样,我做传统软件出身,而腾讯的创业团队是从做传呼的润迅出来的,之前就在做服务,这一点给了马化腾很大的帮助。这是一个分水岭,马化腾很早就掌握了互联网产品的规律,把它当成服务来做,持续改进。

  无论你的想法高明与否,我认为都不如用户的选择高明。有了任何想法,不要奢望做到完美再推向市场,不如先简单地做出一点点,就拿到市场上做实验,一旦对了就迅速跟进,一旦不对调整的成本也很低。把用户作为试金石,集小胜为大胜。

  从前面两点可以推出第三个特点,大家都说产品要做到专注和极致,对于互联网产品我感觉是“伤其十指,不如断其一指”。在产品方向上,一定要先学会做减法,而不是做加法。要先找对一个点做到极致,否则你什么功能都做,最后都不突出,没有鲜明的卖点。

  如果你掌握了互联网产品的规律,可能你不用太多的人力,只要瞄准用户的需求点,同时在技术开发方面,采用“小步快跑,循序渐进,不断试错”的思路,我觉得就有可能会超过大公司。

嵌入式PHP

WEB2.0 jackxiang 2010-5-22 00:59
有人在 Zaurus 上编译了 apache 和 php ,mysql 应该也不成问题。
把apache2.0+php5.2精简成了一个10M的目录。运行正常。包含PDO,sqlite,mb_string,gd2       这大概是极限了,当然去掉这些扩展后还能再小一些,然而,一个   php5ts.dll    已经是4.5M了,没法再减了。       10M的东西可以做嵌入?
就是在arm平台上,用apache和php5的。apache1.3+php4的包要小的多。求移植apache+php+mysql到arm外挂硬盘的方法!apache、mysql已经单独交叉编译成功了。因为apache 需要支持php 和mysql ,需要有相应的支持模块
请问怎样交叉编译这些模块?移植apache1.3.34+php4.4.1到arm9+armlinux2.4.18:
本人的移植经验与大家分享,希望对大家有帮助~
编译环境:
native: redhat9
target: armlinux2.4.18
arm: arm9-s3c2410
tool:
arm-linux-gcc (verison 2.95)
apache1.3.34
cp两个apache1.3.34
一:apache1.3.34_redhat的配置
#redhat for apache1.3.34
export LD=ld
export CC=gcc
export RANLIB=ranlib
./configure
--prefix=/usr/local/apache1.3.34 --exec-prefix=/usr/local/apache1.3.34
--libexecdir=/usr/local/apache1.3.34/libexec --enable-module=so
二:apache1.3.34_arm的配置
#armv4l-unknown-linux for apache1.3.34
1.configure cross-compiling
export LD=/usr/arm-linux/bin/armv4l-unknown-linux-ld
export CC=/usr/arm-linux/bin/armv4l-unknown-linux-gcc
export RANLIB=/usr/arm-linux/bin/armv4l-unknown-linux-ranlib
./configure
--prefix=/usr/local/apache1.3.34-arm
--exec-prefix=/usr/local/apache1.3.34-arm
--libexecdir=/usr/local/apache1.3.34-arm/libexec --enable-module=so
--target=armv4l-unknown-linux
make
make (error1: generate test_char.h)
make (error2: generate uri_delims.h)
2.configure native-compiling in another dir apache1.3.34_redhat
copy apache1.3.34_redhat/src/main/test_char.h&uri_delims.h to apache1.3.34_arm/src/main/
(make sure the fileactime if newer , so to void make again)
3.make (in apache1.3.34_arm again, and success)
4.make install
5. edit http.conf
user nobody
group nobody
6.add nobody::100: in the /etc/group
7.type "hostname localhost" in arm shell@
8.run apache int your arm! (make sure the path is same with your install dir)
个人感觉其实移植的过程就是排错的过程, 而出错提示在论坛或google搜都有,很多前辈都有说明了


php4.4.1的移植还在摸索中,编译是成功了,但发现我现在用的2.4.18的核不支持loadmodule
libphp4.so(因为php要用libc-2.3的GLIBC库),这些天都在忙着弄2.6.15的核,总算是能跑起来了,还有ramdisk没解
决~~~
有人喜欢用ipwf ---> 是IPFW吧!
有人喜欢用ipf
有人喜欢用pf
有人喜欢用iptables

等于
有人喜欢红帽
有人喜欢SUSE
........

我的最爱是BSD(包括FreeBSD,OpenBSD,DragonflyBSD,NetBSD...),一个完整的系统!
开发人员中用debian的最多,其次是redhat,从全球linux各应用领域市场份额来看
无疑redhat是最多的,此外还有很多出名的发行版本,不再列举。
对于初学linux的人来说,我建议是使用redhat,原因如下:
1)现在很多书都是以redhat为例讲的,为了与书本协调一致
2)周围的人都用redhat,交流比较方便
3)redhat应用范围广,有典型性和代表性
4)它易于使用和安装,我们没有必要把时间浪费在“装系统”上
而应集中精力学习最有用的东西。

//注:现在觉得RH很死板,AS,ES等用在服务器上或许不错,
Personal desktop用mandrake,debian,suse都不错,笔者现在用Mandrake,因为她长得漂亮

如果你并不打算深入学习linux,而是有诸如适应北京市政府办公平台迁移到
linux上这种需要,那么中软,红旗等中文linux是不错的选择

我强烈建议:自己亲自动手把linux装到你的硬盘上,
你必须学会独立安装linux系统的技能,对于现在的版本来说,其实跟装WinXP一样简单

从此现在开始,请不要以windows的工作方式来考虑问题,
应该尝试挖掘linux身上的“天才unix”的气质。

三.进阶
掌握至少50个以上的常用命令
理解shell管道"|",文件流重定向">"及追加">>"等
熟悉Gnome/KDE等X-windows桌面环境操作
掌握.tgz.rpm.biz等软件包的常用安装方法
学习添加外设,安装设备驱动程序(比如modem)
熟悉Grub/Lilo引导器及简单的修复操作
熟悉系统固有目录的名称及公用
学会用mount命令访问其他文件系统
了解vi,gcc,gdb等常用编辑器,编译器,调试器
学习linux环境下的简单组网

建议:买一本不需要太厚的linux教材,大致可以满足要求
//现在的书越来越多了,还带很多图,我当时可没这么多书:)

四.高级应用

澄清一些概念:
linux的普通操作与真正的系统管理不能相提并论,后者需要很多知识

我个人认为比较重要几种linux语言
1.英语
即使你不学linux,我也强烈建议你学好英文[U.S.english]
因为实质上计算机语言就是英文和字符,所谓的多国语言只是外部包装
你必须能无障碍的阅读大量的英文技术文档
在搜索引擎找到的英文网站和网页中熟练的检索
最好能有用英文直接交流的能力,
摆脱了这个障碍,你的学习和理解速度就能快很多,你就有机会拉开和别人的差距


2.shell[sed/awk]
shell是命令解释器,是内核与用户界面交流通道,shell写的小脚本有点类似于win下的.bat
但shell比.bat强大的多,shell不只是解释命令,更是一种编程语言,有时候几百行的c用shell
几十行就能代替完成工作,因为shell的工作方式建立在系统已有的众多应用程序之上
这也是CS中的一个重要思想。
此外,shell可以实现工作自动化,这个概念也比较重要
sed,awk用来处理文本,历来很常用

3.Perl/PHP
漂亮的脚本, CGI的首选,比ASP好,应用面很广

4.C\C++
C、C++是linux/unix的核心语言,系统代码都是C写的


5.ASM
系统底层及内核,硬件,设备驱动程序,嵌入式开发都需要
//走核心路线的话,个人认为c\c++,asm最重要

6.Java,Python,Tcl,XML

*系统管理篇
在熟悉linux的基础上还需要掌握至少一种unix
我首推Solaris,其次是FreeBSD
比如运营级系统一般是Solaris+Oracle/DB2之类的
学习apache,ssh,sendmail/Qmail,proftp/vsftp,Samba,Squid,MySQL/PostgreSQL/Oracle,Bind
等各种应用服务器的构架及电子商务的应用
熟悉TCP/IP协议族,学习诸如apache+php+proftp+mysql+quota的实现以及大型局域网,分布式集群
等各种企业级应用解决方案
熟悉多用户管理,数据库管理,文件系统,逻辑存储管理,日志分析,备份与灾难数据修复
系统补丁,内核升级,以及在此基础上的防火墙构架等以保障系统安全在内的各种系统管理技能

我觉得,如果在此基础上再掌握路由/交换设备便是一个不错的系统管理员 :D

各种基于linux的解决方案可参考相关书籍和文献,必要时用google或各大linux站点站内
搜索引擎寻找最新文档,以避免错误和漏洞
有几本技术大全和技术内幕我认为都是这方面不错的书

*深入学习linux

我个人理解的读linux内核需要的基础:
在此之前,希望先把应用层的东西学一下,那样会比较好理解
1.C
如果学过潭浩强的大学教科书(除了编几个数学模型好像什么也做不了的那种),
建议再看一下
《The C Programming Language》Second Edition这本圣经
/*如果想学缓冲区溢出,这点C的功力可能是不够的*/
还有,<C陷阱与缺陷>,<C专家编程>,<C\C++深层探索>
反正经典书看多了是没有坏处的:)

2.asm (AT&T语法,保护模式)
保护模式下的比较复杂,基本上每本讲内核的书都会有介绍
有80x86 Intel语法的基础就行,
有兴趣可以看看Intel的官方白皮书

3.数据结构(离散数学)
计算机专业的核心课程,重要性我就不说了

4.操作系统原理
看懂这个再去读linux吧

5.微机原理/组成原理(数字电路)
底层直接和硬件打交道,所以这个也要

6.了解linux/unix
我想至少你要会操作吧,了解unix的API

7.软件工程/编译原理

这方面的经典书去www.china-pub.com可以搜到很多
我觉得APUE这种书不适合初学者,还是先看看UPE之类的吧

APUE:
《advanced programming in the unix environment》
《unix环境高级编程》
作者:W.Richard.Stevens共有6本经典书,尊为“圣经”
他的书为全世界黑客所拜读!

UPE:《unix programming environment》
《unix编程环境》比较适合初学者的,深入浅出,
其中有一些比较重要的思想
另外,介绍linux下应用层编程的书也有很多,比如
<GNU\Linux编程指南>,redhat,redflag出的书...........
经典书还有很多很多......
操作系统:设计与实现 //交大的考研参考书目,讲Minix的
unix操作系统设计
4.4BSD操作系统设计与实现
昂莱氏unix源代码分析
ulk:understanding the linux kernel (2nd)深入理解linux内核
linux设备驱动程序 (2nd)
linux内核源代码情景分析
保护方式下的80386及其编程(次书已绝版,只有超星的电子版,如果谁能搞到纸书,清一定告诉我一下,非常感激!!!)


在这里你能明白"黑客"及"haching"一词所代表的真正意义
希望我写的这篇文章能造就更多的黑客,而不是骇客

五.一些资源
www.linuxforum.net //国内最高水平GNU站点
www.chinaunix.net //unix、系统管理的不错
www.linuxeden.com //下载软件不错
www.linuxaid.com.cn
www.linuxsir.org

其实还有很多,包括国外的

以上内容是转载别人的
这些是关于linux的
至于嵌入式的学习,需要很高深的硬件知识
对编程和系统移植有很深的认识才行
嵌入式是一种包括了DSP及arm等最小系统板的统称
其结构也各不相同,有些是传统的冯诺依曼结构,在DSP领域大部分用的是改进的哈佛结构
学嵌入式一定要学linux,这个是很关键的环节
Flashbug 是一个 Firebug 的 Flash 扩展,用来显示所有运行的 swf 文件的调试输出信息,该扩展需要 Flash 播放器调试器的支持,同时可以显示来自服务器的AMF数据,要求 Firebug 1.4 或者更新版本。
请教检测表单与submit按钮的onsubmit事件的控制问题!

检测表单的function check()函数:

在表单中的语句为:

表单按钮为提交按钮submit按钮。
当运行当前页面,在没有输入任何文字的前提下按提交按钮,弹出提示窗口"输入的主题不能为空!",按确定后,表单的数据居然已经提交上去了!晕!!请问,如何控制以确保要在文本区域不为空的情况下才可以提交表单数据,否则鼠标定位在要输入的文本区域!
恳请各位高手建议!谢谢!
回答:
...onSubmit="return check()">

<form action="index.jsp" method="post" onsubmit="return submitTest();">


原因:
onsubmit属性就像是这个html对象的一个方法名,其值(一个字符串)就是其方法体,默认返回true;
用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,
至于为什么没有这个文件而MySQL却也能正常启动和作用,在点有两个说法,
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动,
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于rpm包安装的MySQL,
解决方法,只需要复制一个/usr/share/mysql目录下的.cnf文件到/etc目录,并改名为my.cnf即可。





查看源rmp安装文件如下信息:

[root@localhost ~]# rpm -ql MySQL-server-community-5.1.22-0.rhel4 | grep cnf  
/usr/share/doc/MySQL-server-community-5.1.22/my-huge.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-innodb-heavy-4G.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-large.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-medium.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-small.cnf
/usr/share/mysql/my-huge.cnf
/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-small.cnf

Tencent:~ # rpm -ql mysql-client-5.0.26-12.8
/etc/mysqlaccess.conf
/usr/bin/msql2mysql
/usr/bin/mysql
/usr/bin/mysql_client_test
/usr/bin/mysql_find_rows
/usr/bin/mysql_tableinfo
/usr/bin/mysql_waitpid
/usr/bin/mysqlaccess
/usr/bin/mysqladmin
/usr/bin/mysqlbinlog
/usr/bin/mysqlcheck
/usr/bin/mysqldump
/usr/bin/mysqlimport
/usr/bin/mysqlshow
/usr/bin/perror
/usr/bin/replace
/usr/share/man/man1/msql2mysql.1.gz
/usr/share/man/man1/mysql.1.gz
/usr/share/man/man1/mysqlaccess.1.gz
/usr/share/man/man1/mysqladmin.1.gz
/usr/share/man/man1/mysqlbinlog.1.gz
/usr/share/man/man1/mysqlcheck.1.gz
/usr/share/man/man1/mysqldump.1.gz
/usr/share/man/man1/mysqlimport.1.gz
/usr/share/man/man1/mysqlshow.1.gz
/usr/share/man/man1/perror.1.gz
/usr/share/man/man1/replace.1.gz
http://mirror.centos.org/centos/5/isos/
CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定开放的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件. N\ nr  
+3B^e%`NPm  
现在已经可以通过yum update 或者 yum upgrade升级了: http://mirror.centos.org/centos/5/isos/
CentOs5.5 i386:
http://centos.candishosting.com.cn/5.5/isos/i386/

来源:

http://www.icentos.net/read-htm-tid-40.html
http://wiki.centos.org/zh/Manuals/ReleaseNotes/CentOS5.5?action=show&redirect=Manuals%2FReleaseNotes%2FCentOS5.5%2FChinese
无限分类的方法很多,现在比较流行的是使用父ID来实现,而使用父ID一般是使用递归来实现,以下我用两种方法来实现。

首先我们先建立以下数据表:(sort表)



id                     pid                 name
int(主键)           int                  varchar


先说明一下这个数据表的意义,id是唯一的,而pid就是父分类的id,name就是分类的名称。

我们首先约定一下,当pid为0的时候就是顶级分类,而不为0的时候就是子分类。

第一种实现方法:
第一种实现方法的思路是把pid为0的分类取出来,然后再以这些顶级分类的id作为父id来取得他们的子分类,然后再以他们的子分类id作为父id,如此一直循环下去,直到把所有的分类都取完。代码如下:



<?php
$conn = mysql_connect(‘localhost’, ‘root’, ‘123456’);//连接数据库
function get_sort_list($pid) {
global $conn;
$sql = “SELECT * FROM sort WHERE pid=‘0’”;
$query = mysql_query($sql, $conn);
While ($row = mysql_fetch_array($query)) {
echo $row[‘name’];
get_sort_list($row[‘id’]);
}
}
get_sort_list(0);//以pid为0作为开始
?>


上面的代码我们使用了递归的方法来实现,不过当我们运行的时候会发现分类没有分层,全部都是在一个层次,一点都不美观,所以我们可以添加一个级别给他,怎么做呢?


<?php
$conn = mysql_connect(‘localhost’, ‘root’, ‘123456’);//连接数据库

function get_sort_list($pid, $leven) {
global $conn;
$sql = “SELECT * FROM sort WHERE pid=‘0’”;
$query = mysql_query($sql, $conn);
While ($row = mysql_fetch_array($query)) {
for ($i = 0; $i < $leven; $i++) {
echo ‘&nbsp;&nbsp;&nbsp;’;
}
echo $row[‘name’];
get_sort_list($row[‘id’], $leven + 1);
}
}

get_sort_list(0, 0);//以pid为0, leven为0作为开始调用函数
?>


这样修改之后我们会发现分类分层了。

第二种实现方法:
我们发现在第一种方法中,每次取得一个分类都要查询一次数据库,如果分类多的话(好似淘宝那样)速度是非常不乐观的,那我们怎么来重构他呢?

我们可以先一次把所有的分类都取出来,然后再用PHP去处理他。而原理跟第一种方法差不多,都是根据pid去获得子分类。实现方法如下:



<?php
$conn = mysql_connect(‘localhost’, ‘root’, ‘123456’);//连接数据库
$query = mysql_query(“SELECT * FROM sort”);
$sorts = array();
//取出所有分类
While($row = mysql_fetch_array($query)) {
$sorts[] = $row;
}

function get_sort_list($pid, $leven) {
global $sorts;
foreach ($sorts as $sort) {
if ($sort[‘pid’] == $pid) {//如果当前分类的pid等于要获取的pid
for ($i = 0; $i < $leven; $i++) echo ‘&nbsp;&nbsp;&nbsp;’;
echo $sort[‘name’];
get_sort_list($sort[‘id’], $leven + 1);
}
}
}

get_sort_list(0, 0);//以pid为0, leven为0作为开始调用函数
?>


好了,现在只查询一次数据库就可以实现第一种方法了。
使用方法:
        
<script language="JavaScript" type="text/javascript">
swf_load('index','index.swf','1024','650','','opaque');
</script>


embededflash.html:
function swf_load(fileid, filename, widths, heights, fvs, wmd)
{
    this.FlashVars = (fvs != undefined)? fvs :'';
    this.Wmod = (wmd != undefined)? wmd :'';

    var strSwf = "";

    strSwf += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';
    strSwf += 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"';
    strSwf += 'width="'+widths+'" height="'+heights+'" id="'+fileid+'" >';
    strSwf += '<param name="movie" value="'+filename+'" />';
    strSwf += '<param name="quality" value="high" />';
    strSwf += '<param name="menu" value="false" />';
    strSwf += (FlashVars != null) ? '<param name="FlashVars" value="'+FlashVars+'">' : '';
    strSwf += (Wmod != null) ? '<param name="wmode" value="'+Wmod+'">' : '';
    strSwf += '<embed';
    strSwf += (FlashVars != null) ? ' FlashVars="'+FlashVars+'"' : '';
    strSwf += (Wmod != null) ? ' wmode="'+Wmod+'"' : '';
    strSwf += ' src="'+filename+'" quality="high" menu="false" pluginspage="http://www.macromedia.com/go/getflashplayer"';
    strSwf += 'type="application/x-shockwave-flash" width="'+widths+'" height="'+heights+'"  name="'+fileid+'" ></embed>';
    strSwf += '</object>';

    document.write(strSwf);
}
做技术的出路是
1、踌躇不前-》该行-》过上幸福生活
2、坚定代码-》身体扛不住-》挂掉
3、坚定代码-》身体倍儿棒-》穷死
做为技术人员,大家都觉得工资高,工作稳定,还能学到很多的东西。是大部份走出校门或性格内向,或希望过平静生活的人的必然选择。其实,你们有没有问过自己,这条路到底走对了吗?
    一个刚毕业的大学生,从事销售和从事技术两种不同的工作,可能工资的差距会达到数倍之远。对于初出校门的人来说,不无一种极端的诱惑力。刚毕业的年青人,当然会果断的选择技术之路。
    两年后,我们再看看,由于经验的积累,做业务的积累了部份客户资源,做技术的积累了好的经验,在各自的领域内都大展开了手脚,收入也基本接近了。
    再以后呢,技术之路越来越难走,毕竟做技术需要的大量的时间和精力,否则就跟不上现在时代的技术更新了,做业务的呢,客户群越来越大,经验越来越丰富,谁的收入会更高?
    两种不同的职业,它们有着各自不同的特点,技术行业是个撑不死,饱不了的地方,而销售行业则是没有尽头的发展之路。
    过了三十岁,大家会选择什么呢,结婚、生子,人生的一条老路,做技术的大多都成为了技术部门的负责人,职位不错;做销售的呢?可能还是个业务员,毕竟做大量的业务都集中在少数人手里。古往今来,财富的集中是如此的相似!但是观察两个职业成功人士的比较,是不是相差太远了?
    学到死,做到死、发不了财的技术,有什么值得人留恋的!
    到了三十岁,你还有自信面对繁重的工作吗?你有刚出社会的人的活力吗?你能和他们比工作时间,玩命地在老板面前表现吗?你能丢下妻儿出差一、两个月吗?能被小你十来岁的小孩命令来命令去吗?
    我不能。。。。。。
    有人会说,我有了技术!
    技术经验是什么?一些老的,过去了的东西,他代表着你所留恋的过去,你所放不下的那一部份,你会以经验来判别事物,选择工作方法。在新老技术交替的时间内,经验可以起到承前启后的作用,让你威风八面。可是,你还会用到多少两年以前的经验呢?
    大家所掌握的技术终会过时,脑子僵化的时候总会到来。那时,你何去何从?
    如果你的目标只是买个狗窝,摆个小烟摊,请不要再往下看了。“知足者常乐”也是一种人生的境界,我羡慕那些五台山上的和尚,我做不到!
    到处是高级住宅,我为什么只住10平的小屋?满大街跑的小车,我为什么要天天挤公交?我要为三十岁后不再挤公交车而奋斗!
    转型------技术人的必须选择!
    转型做什么呢?
    技术的优势在于什么?前些年是不是白干了?
    如何转型?
    让我们分析一下职业,什么样的工作能让我们越老越是宝。
    干部!
    不用说就是第一名,看看中央领导人就知道了嘛。
    财务
    每个老总都喜欢用年龄大点的,稳重嘛!大部份公司还要请个老头子之类的做财务总监。只拿工资不打卡。无它,做假帐的高手。我家老头子每到年底可是按天拿钱。
    教师
    好工作啊,老教授嘛,不老怎么成得了教授。取老婆的重点发展目标。嫁嘛?就算了。
    上面所说的几个职业,技术人是很难有机会了,毕竟大多数人没有办法再转这么大个弯。
    我们的出路,只有两个方面:销售和技术型管理!
    先说说做销售。
    大家是不是有这种感觉,做销售的人天天都在说现在的客户难打交道。而你是不是感觉客户其实人很好,很容易成为朋友。这就是你的优势!
    你先前的技术基础,己经让他们很容易的接受你了。而你和他们有着很多的话题,能真正的为他们解决很多实际的问题。经常站在他们的角度为他们着想,你说出来的话能令他们信服。这样的业务人员,哪个客户不爱呢?
    做销售,最难的怎么和客户取得第一次的联系,你己经可以依靠技术突破这一点了,你还怕什么。只要心不太黑,客户永远都是你的朋友。
    只要多学学心理学,好好锻炼一下自己的口材、勤减一下肥。碰几次壁、吃几次亏后你哪点不像是业务高手。
    再说技术型管理。
    你己经有了技术,有了那么多经验。只要把它们全部拿出来,做事、培训新人。你会发现别人看你的眼睛都是仰视的。其实,你不过是剥夺了他们实际动手的机会,也许还会让他们顺着你的思路,成为你延长了的手。成为你表现能力的更大的舞台。那时,一切的功劳都是你的,老板怎么会不重视你,你的职位又怎会不上升了?
    不过,这只是下乘之道。
    上乘之道在于攻心。。。。。。
    首先在于攻自己的心。
    第一步,树立起自己的目标,多少时间内,工资上涨多少、职位到什么。不管你的直属上司是老板还是谁。如果己经觉得到头了,就离开吧。寻找新的目标。不要犹豫。
    第二步,拿出自己的所有能力,展现给其它人看,尽心尽力做好每一件事情。也许,伯乐的眼睛正在这时候盯着你。
    第三步,提升自己技术和管理能力,我所指的技术能力不是要你再不停的追求最新的技术,你没有那么多时间了。应该反过头来,寻求技术的本源,掌握了他,技术再怎么发展,你只需要花一点点时间就能掌握最新的。
    对于管理能力,只要不损害老板的利益,该管的尽量去管,不该管的尽量提意见,无论对错,无论成败,对你来说,都是经验的积累。
    第四步,敢于担起责任,不管事情的结果是否会失败。一个有勇气承担失败责任的人,更会让人尊敬。而且,失败了你又会损失多少了,最大不过是走人罢了。
    其次攻他人的心
    无论是对上还是对下,都应该是有勇有谋,利用技术的理性分析能力,把握住事物的关键,“知己知彼”的结果,绝大部份都是“百战不殆”。
    对下,应该尽量的去关心他们,因难自己背;好事让点出来,名声让出来一点,反正你的名声也不少了,他们做得好,别人也会说你带得好;他们做错了,你再出马搞定,就不是一点点名声了。
    对于属下和同事,也不要保留技术,我们不是靠手艺吃饭,不是收藏古董,为什么非要等到变成垃圾了才拿出来丢人现眼呢。尽力去做吧!让大家都成为你的徒弟。你的人气自然就来了。
    总之,还有很多很多。。。。。。
    我想,最辉煌的时间总会过去的,在这个充满了金钱的社会,谁不是天平上的的砝码。同样大小的黄金,总要重过铁吧!
    在这里,我一直在想着,想着以后我应该走的路,同时也祝各位住自己的房子,开自己的车子,花自己的票子,摆自己的面子。  

         同样之前我也是做技术的,觉得这篇文章分析的很好,其实你三年前的选择决定了你今天的结果,而你今天的选择决定着你三年后的结果,相信大家都知道选择大于努力,为了自己的梦想,为了自己更美好的生活,让我们共同选择自己创业,建立自己的事业!

来源:http://apps.hi.baidu.com/share/detail/1220816
分页: 163/272 第一页 上页 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 下页 最后页 [ 显示模式: 摘要 | 列表 ]