痴人说梦 小河的博客

21八/100

NetBeans 初体验

看到Yii论坛上有好多老外都说NetBeans好,忍不住也下载了尝试一把。

安装,启动,一切顺利,发现果然速度飞快(相对于ZDE for Eclipse),于是一见钟情。

正想从SVN上导入自己的项目,问题来了:NB虽然内置了SVN功能,但需要外部程序的配合,得先安装SVN客户端,于是,下载、安装。

安装之后,按NB的提示,把SVN客户端的安装目录加入PATH环境变量,然后在NB的SVN配置里填上SVN客户端的安装目录,我就晕,怎么加入环境变量了还要再填一次安装目录呢,太傻了。

不管了,先“签出”试试,填上SVN版本库地址后,点击下一步,没反应,按钮全变灰了,我晕,好歹来个提示啊,这让我怎么整。赶紧Google,发现没有任何有用的信息,郁闷,遂检查填写的SVN客户端安装目录,没有问题啊,要不我删了试试,嗯,居然删掉就好了!什么玩意嘛。。

内置的SVN功能比Eclipse相对来说差一些,不过也基本够用。后面的开发工作打算迁移到NB上了,要是用不习惯的话再换回ZDE for Eclipse。

标签: , 没有评论
21八/100

一个可以检测访问网站的手机类型的PHP类

很不错的一个玩意,当然是发布在 Google Code 上: http://code.google.com/p/php-mobile-detect/

使用方法:

包含并初始化这个类:

include("Mobile_Detect.php");
$detect = new Mobile_Detect();

检测特定的平台:

if ($detect->isAndroid()) {
    // code to run for the Google Android platform
}

可用的方法有 isAndroid(), isBlackberry(), isOpera(), isPalm(), isWindows(), isGeneric()。另外,如果你只想检查用户使用的是不是一个移动设备,而不关心具体平台的话,可以这样写::

if ($detect->isMobile()) {
    // any mobile platform
}

代码分析:

这个类使用了PHP5 的语法,使用了 __call 函数,实现方法的自动调用。具体还是看Google Code 中SVN里的代码吧。

标签: 没有评论
2六/100

Linux 下使用软盘相关的命令

对一个新的软盘,要先格式化:
$fdformat /dev/fd0

然后创建文件系统,可以是兼容windows 的 msdos 格式,或者Linux下的文件系统格式。

$mkfs.ext2 /dev/fd0 --创建EXT2文件系统

最后,挂载:
mount -t ext2 /dev/fd0 /mnt/floppy

现在就可以使用此软盘了。
用完后,可用如下命令卸载:
umount /dev/fd0

如果卸载时提示“device is busy”,先退出软盘目录,重试

23五/100

Linux/Unix 常用命令全称

pwd: Print Working Directory - 打印当期工作目录

cd: Change Directory - 改变目录

rmdir: Remove Directory - 删除目录

rm: Remove - 删除(文件)

ls: List -列出目录

cat: Catenate - 连接并查看,不是猫

ln: Link - 创建链接

chsh: Change Shell - 改变Shell

fg: Foreground - 把用Ctrl+Z暂停或使用 & 进入后台执行的程序拉回前台

du: Disk Usage - 查看磁盘使用状况

man: Manual - 查看手册

chmod: Change Mode - 修改文件模式(权限)

chgrp: Change Group - 修改所属群组

ps: Processes - 查看进程

21五/100

Linux 中的几个文件搜索命令

今天在群里一哥们说他用 ifconfig 提示找不到,我的第一反应是他没有用root用户登录,问了一下,他说是用 root 登录的,看来是环境变量PATH问题,我提示他通过 which 命令找到 ifconfig 所在的目录,然后把这个目录加入环境变量,问题解决。

linux 中常用的几个文件搜索命令如下(转载):

1.find /etc -name my.so

2.locate 是用来通过文件名搜索文件的工具,它的用法也比较简单。locate 的应用,首先要通过updatedb建立索引数据库,然后才能应用;如果您新安装了软件或者存放了新的文件,也要先运行updatedb命令,以生成最新索引库。
用法:locate 文件名
我们要先运行updatedb;
[root@localhost ~]# updatedb
举例: 我们要找vsftpd.conf文件都位于哪个位置;
[root@localhost ~]# locate my.so

3.whereis 是来寻找命令的二进制文件,同时也会找到其帮助文件;
比如我们不知道fdisk工具放在哪里,我们就可以用whereis fdisk 来查找;
[root@localhost ~]# whereis fdisk
fdisk: /sbin/fdisk /usr/share/man/man8/fdisk.8.gz
如果我们寻找grub在哪里,应该用如下命令,说明grub位于/sbin目录,他的帮助文件是grub.8.gz ,也就是man grub;
[root@localhost ~]# whereis grub
grub: /sbin/grub /etc/grub.conf /usr/share/grub /usr/share/man/man8/grub.8.gz

4.which 和where 相似,只是我们所设置的环境变量中设置好的路径中寻找;比如;
[root@localhost ~]# which fdisk
/sbin/fdisk

20五/100

CentOS 中环境变量相关设置及使用

1.CentOS 中环境变量的处理文件是 /etc/profile,是一段程序,如果要把某个目录位置添加到PATH 变量,可以编辑此文件,在适当的位置加一个 pathmunge 就可以了。例如:

pathmunge /usr/local/bin/convert

2. 如需临时性修改环境变量,在重启后复原,则需使用 export 命令,此命令详情如下:

功能说明:设置或显示环境变量。

语  法:export [-fnp][变量名称]=[变量设置值]

补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。

参  数:
-f  代表[变量名称]中为函数名称。
-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p  列出所有的shell赋予程序的环境变量。

19五/100

CentOS 5.4 下安装 ProFTPD 1.3.3 记录

折腾了一晚上+半上午,Google了几十次,撞墙十几次,总算把 ProFTPD 搞的有点眉目了。整理了一下安装过程,如下:

1. 下载 ProFTPD :

ftp://ftp.servus.at/ProFTPD/distrib/source/proftpd-1.3.3.tar.gz

因为我装的CentOS没有图形界面,就用了 ftp 工具下载的,用到的几个命令有:

# ftp ftp.servus.at  -- 连接到FTP站点

# ftp> get ProFTPD/distrib/source/proftpd-1.3.3.tar.gz  --下载文件,默认保存到当前目录

# ftp> bye  -- 断开连接

2. 安装:

# tar -xjvf proftpd-1.3.3.tar.gz

# cd proftpd-1.3.3

# ./configure  --第一次安装,没带任何参数,使用默认吧,等以后熟悉了再说

到这一步结果提示:

error: no acceptable C compiler found in $PATH See `config.log' for more details.

意思是没有找到C编译器,于是再安装 gcc, yum install gcc ,过程略

装好 gcc 后再次 ./configure, 通过,然后:

# make

刷……一大片

# make install

安装完成,按照 INSTALL 安装说明文件里的说明,接下来要进行测试:

# sh sample-configurations/PFTEST.install  --创建测试配置文件

Sample test files successfully installed in /tmp/PFTEST.  -- 成功

# ./proftpd -n -d 5 -c /tmp/PFTEST/PFTEST.conf  -- 使用刚创建的测试配置文件启动 ProFTPD

再另一个窗口,使用FTP工具登录测试:

% ftp -n -d

ftp> open <hostname> 2021

ftp> user proftpd

---> USER proftpd

331 Password required for proftpd.

Password: [proftpd]

---> PASS proftpd

230 User proftpd logged in.

ftp> bye

---> QUIT

221 Goodbye.

测试完成,Goodbye ,到此为止安装已成功。接下来是配置。

3.配置

#vi /usr/local/etc/proftpd.conf  --打开修改proftpd配置文件

把:Group                           nogroup

改为:Group                          nobody

添加如下的日志设置行:

ExtendedLog        /var/log/proftpd/access.log WRITE,READ default  ← 记录连接日志到相应日志文件

ExtendedLog        /var/log/proftpd/auth.log AUTH auth  ← 记录认证日志到相应日志文件

添加如下一行,设置被动模式使用的端口范围:

PassivePorts 49152 65534

保存退出。
因为安装默认使用的是 standalone 模式,这儿需要向init.d中添加服务配置:
# cp contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd  --把安装包中带的文件复制过去就可以了。
终于可以启动了:
#/etc/rc.d/init.d/proftpd start
设置为开机默认启动:
# chkconfig proftpd on
搞定。
//--------------------------------------------------------------------------
如果安装后在非本机无法连接,要在 iptables 中开启相应端口,默认的21,以及passive 端口,这个有时间我得再整理一下。
另外还有权限问题,也得整理一下。要学的东西很多,但是很好玩。一点点搞吧。
18五/100

Linux 关机命令

曾经在学校里蹭课学的Linux都还给石老师了,连最基本的关机命令都记不太清了,只记得一个 init 0,还是重新整理一下吧:

以下文字转自:http://fanqiang.chinaunix.net/a1/b1/20020130/21030661.html

在linux下一些常用的关机/重启命令有shutdown、halt、reboot、及init,它们都
可以达到重启系统的目的,但每个命令的内部工作过程是不同的,通过本文的介绍,希望你可以更加灵活的运用各种关机命令。

1.shutdown

shutdown命令安全地将系统关机。 有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的。因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失﹐使系统处于不稳定的状态﹐甚至在有的系统中会损坏硬件设备。 而在系统关机前使用shutdown命令﹐系统管理员会通知所有登录的用户系统将要关闭。 并且login指令会被冻结﹐即新的用户不能再登录。直接关机或者延迟一定的时间才关机都是可能的﹐还可能重启。这是由所有进程〔process〕都会收到系统所送达的信号〔signal〕决定的。这让像vi之类的程序有时间储存目前正在编辑的文档﹐而像处理邮件〔mail〕和新闻〔news〕的程序则可以正常地离开等等。

shutdown执行它的工作是送信号〔signal〕给init程序﹐要求它改变runlevel。
Runlevel 0被用来停机〔halt〕﹐runlevel 6是用来重新激活〔reboot〕系统﹐
而runlevel 1则是被用来让系统进入管理工作可以进行的状态﹔这是预设的﹐假定没有-h也没有-r参数给shutdown。要想了解在停机〔halt〕或者重新开机〔reboot〕过程中做了哪些动作﹐你可以在这个文件/etc/inittab里看到这些runlevels相关的资料。

参数说明:
[-t] 在改变到其它runlevel之前﹐告诉init多久以后关机。
[-r] 重启计算器。
[-k] 并不真正关机﹐只是送警告信号给每位登录者〔login〕。
[-h] 关机后关闭电源〔halt〕。
[-n] 不用init﹐而是自己来关机。不鼓励使用这个选项﹐而且该选项所产生的后果往
往不总是你所预期得到的。
[-c] cancel current process取消目前正在执行的关机程序。所以这个选项当然没有时间参数﹐但是可以输入一个用来解释的讯息﹐而这信息将会送到每位使用者。
[-f] 在重启计算器〔reboot〕时忽略fsck。
[-F] 在重启计算器〔reboot〕时强迫fsck。
[-time] 设定关机〔shutdown〕前的时间。

2.halt----最简单的关机命令

其实halt就是调用shutdown -h。halt执行时﹐杀死应用进程﹐执行sync系统调用﹐文件系统写操作完成后就会停止内核。
参数说明:
[-n] 防止sync系统调用﹐它用在用fsck修补根分区之后﹐以阻止内核用老版本的超
级块〔superblock〕覆盖修补过的超级块。
[-w] 并不是真正的重启或关机﹐只是写wtmp〔/var/log/wtmp〕纪录。
[-d] 不写wtmp纪录〔已包含在选项[-n]中〕。
[-f] 没有调用shutdown而强制关机或重启。
[-i] 关机〔或重启〕前﹐关掉所有的网络接口。
[-p] 该选项为缺省选项。就是关机时调用poweroff。

3.reboot

reboot的工作过程差不多跟halt一样﹐不过它是引发主机重启﹐而halt是关机。它
的参数与halt相差不多。

4.init

init是所有进程的祖先﹐它的进程号始终为1﹐所以发送TERM信号给init会终止所有的用户进程﹑守护进程等。shutdown 就是使用这种机制。init定义了8个运行级别(runlevel),init 0为关机﹐init 1为重启。关于init可以长篇大论﹐这里就不再叙述。另外还有telinit命令可以改变init的运行级别﹐比如﹐telinit -iS可使系统进入单用户模式﹐并且得不到使用shutdown时的信息和等待时间。

//-----init 运行级别说明------------------------------------------------

# 0 - 停机(千万不能把initdefault 设置为0 )
# 1 - 单用户模式
# 2 - 多用户,没有 NFS
# 3 - 完全多用户模式(标准的运行级,我装的CentOS默认就是这个运行级别 囧)
# 4 - 没有用到
# 5 - X11 (xwindow)
# 6 - 重新启动 (千万不要把initdefault 设置为6 )

GFW!  die! die! die!

18五/100

CentOS 5.4 中设定可使用 su 命令的用户组

在 一般情况下,一般用户通过执行“su -”命令、输入正确的root密码,可以登录为root用户来对系统进行管理员级别的配置。但是,为了更进一步加强系统的安全性,有必要建立一个管理员的 组,只允许这个组的用户来执行“su -”命令登录为root用户,而让其他组的用户即使执行“su -”、输入了正确的root密码,也无法登录为root用户。在UNIX下,这个组的名称通常为“wheel”

—— from http://www.centospub.com/make/newenv.html

在CentOS5.4中的配置方法如下:

#usermod -G wheel fanbin 将用户fanbin加入wheel组

#vi /etc/pam.d/su 用vi编辑器打开配置文件

取消下面这行前的#注释:
auth required pam_wheel.so use_uid

保存退出

现在,不在wheel组中的用户就无法使用 su 切换到root身份了。

另外,如果在 /etc/pam.d/su 文件中取消下面这行的注释:
auth sufficient pam_wheel.so trust use_uid

则wheel组中的用户使用su时无需输入密码即可登陆root,方便,但不安全,慎用。

再另外,/etc/pam.d/su 文件中的 pam_wheel.so 省略了路径,在部分Linux发行版中,此文件使用的是完整的路径: /lib/security/$ISA/pam_wheel.so

//---------------------------------------
sufficient:
adj.
1. 足够的; 充足的2. 【逻辑学】(条件)必然的
n.
1. 充足,足量

17五/100

在虚拟机上装了个 CentOS

最简安装,没有图形界面,打算配成一个HTTP服务器。

   下一页