易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
最精确硬盘分区的算法

最精确硬盘分区的算法

最精确硬盘分区的算法如下(来自网络搜索):我是转自http://xinsync.xju.edu.cn/index.php/archives/5137

硬盘一般有255磁头,63扇区,故每柱面大小为:
512byte x 255 x 63=8225280bytes =7.84423828125 MB
如果要分40GB,那么要40×1024MB=40960MB
需要柱面数为40960÷7.84423828125=5221.66
取整数既为5222个柱面
应分M数为5222×7.84423828125=40962.6123046875MB
不管小数点后面几位都进1,也就是40963MB,windows就认为是40GB了。
这个方法NTFS和FAT32通用。

下面附10GB到200GB整10GB递增的精确计算结果:
10GB = 10245MB
20GB = 20482MB
30GB = 30726MB
40GB = 40963MB
50GB = 51208MB
60GB = 61444MB
70GB = 71681MB
80GB = 81926MB
90GB = 92162MB
100GB = 102407MB
110GB = 112644MB
120GB = 122888MB
130GB = 133125MB
140GB = 143362MB
150GB = 153606MB
160GB = 163843MB
170GB = 174088MB
180GB = 184324MB
190GB = 194561MB

此精确分区结果,在管理工具-磁盘管理界面,和Windows资源管理器里面显示的是整数,10G就是10.00GB,20G就是20.00GB,40G就是40.00GB。

PHP更改文件编码

PHP更改文件编码

PHP更改文件编码应该算是比较简单的事情,在使用uchome项目(UTF-8)的时候,发现程序的编码好奇怪,有ANSI的,和UTF-8的。
很妖的是,我在ubuntu下面打开这些ansi的文件时,由于文件中含 有中文,结果全显示乱码,编码还显示为latin1。然后拷到另外一个目录,编码显示就正常了,为CP936。
由于编辑器没有批量转换功能,固此,只能使用PHP自带的功能了。。。(关键我也不会其他语言)
由于转换的时候会需要判断一下编码,如果编码本身是UTF-8的,再使用mb_convert_encoding($data,'utf-8','gbk'),反而会导致乱码。。
所以。。。就有了以下程序
慎重申明:Dir类的rmdir有BUG,请勿使用。。。。写的时候,我没有考虑太多,如果设定了某个目录,最终是会把这个目录也会删除的,而与我事先想的。把该目录下的内容清空有误差。(当然也可以在删除后重建,但毕竟不是原来的权限了。)

代码如下:

<?php

$dirName = "./uchome";

$files = Dirs::read( $dirName , true);

foreach( $files as $fileName )
{
if( is_file( $fileName ) && in_array(Files::extension( $fileName ) , array('php','html','htm'))){
$fileData = Files::read( $fileName );
$fileType = mb_detect_encoding($fileData , array('UTF-8','GBK','LATIN1','BIG5')) ;
if( $fileType == 'CP936'){
$fileData = mb_convert_encoding($fileData ,'utf-8' , 'gbk');
if( Files::save( $fileName , $fileData )){
echo "{$fileName} convert successed";
echo "<br />";
}
}
}
}



//dir
class Dirs
{
static function read ( $dirname , $recursive = false)
{
static $allInfo;
$dirname .= subStr( $dirname, -1 ) == "/" ? "" : "/";
$dirInfo = glob( $dirname . "*" );
if ( $recursive == false ){
return $dirInfo;
}else{
foreach ( $dirInfo as $info ){
if ( is_dir( $info ) ){
if ( !is_readable( $info ) ){
chmod( $info, 0777 );
}
//$allInfo['dirs'][] = $info;
$allInfo[] = $info;
self::read( $info , true);
}else{
//$allInfo['files'][] = $info ;
$allInfo[] = $info;
}
}
}
return $allInfo;
}

static function rmdir ( $dirname )
{
if ( is_dir( $dirname ) && !is_writeable( $dirname ) ){
if ( !chmod( $dirname , 0666 ) ){
return false;
}
}else if ( !is_dir( $dirname ) ){
return false;
}
$dirname .= subStr( $dirname, -1 ) == "/" ? "" : "/";
$dirInfo = glob( $dirname . "*" );
foreach ( $dirInfo as $info ){
if ( is_dir( $info ) ){
self::rmdir( $info );
}else{
unlink( $info );
}
}
@rmdir( $dirname );
}

function mkdir($dir, $mode = 0777)
{
if (!is_dir($dir)){
$ret = @mkdir($dir, $mode, true);
if (!$ret){
exit('function:mkdirs failed');
}
}
return true;
}
}
//file
class Files
{
static function read ( $filename )
{
if ( !is_readable( $filename ) ){
chmod( $filename, 0644 );
}
return file_get_contents( $filename );
}

static function create ( $filename , $mod = 0666 )
{
if ( @touch( $filename ) == false){
$fp = fopen( $filename, "a+" );
if ( $fp ){
fclose( $fp );
}
}
chmod( $filename, 0666 );
}

static function save ( $filename , $data , $append = false)
{
if ( !file_exists( $filename ) ){
self::create($filename);
$append = false;
}
if ( $append == false ){
return file_put_contents( $filename , $data );
}else{
if ( !is_writeable( $filename ) ){
chmod( $filename, 0666 );
}
return file_put_contents( $filename , $data , FILE_APPEND );
}
}

static function delete ( $filename )
{
if ( !is_array( $filename ) ){
$filenames = array($filename);
}
foreach ( $filenames as $filename ){
if ( is_file( $filename ) ){
if( !unlink( $filename ) ){
chmod( $filename , 0666 );
unlink( $filename );
}
}
}
}

static function extension( $filename ){
return strtolower(pathinfo( $filename , PATHINFO_EXTENSION ));
}
}
FF的郁闷

FF的郁闷

不记得从多久开始,我就在一直使用firefox了。

虽然从为一名WEB开发人员,不得不使用众多浏览器,但FF已经是我的默认浏览器。一般情况下,如果不是为了看网页效果或者使用网银,我是不会打开ie的。

其他的浏览器也纯粹是为了测试而使用。opera更多的是被我用来打开WAP网站,chrome则就是用来体验一下速度。(顺便说一下,chrome for ubuntu,居然不能输中文?好奇怪呀。。。。)

今天看到推送3.5,升级了一下,结果,打不开FF了。。

进程里也没有。。。

目前尚不清楚是因为插件的关系还是什么其他的关系。因为我有很多插件需要使用,暂时不做测试了。。。。

gc_enabled

难道以后可以这样用了?

<?php

$usingGC = gc_enabled();
if( $usingGC == false){
gc_enable();
$usingGC = gc_enabled();
}
if( $ucingGC == true){
gc_collect_cycles();
}

不知道效果有多明显?

杂记

既然标题为杂记当然记得东西也就比较杂一点
1、linux
刚刚装好ubuntu后,建立了一个分区,进入分区目录,想改权限为任何用户都能访问

所以进入命令行,用了chown -R nobody.nogroup /

命令中的/,前面少加了一个. ,结果。。。所有的目录权限都不正常了

重启后,无法访问。最后重装(虽然听说用simple mode登录后可以解决,但一来没时间,二来,我是新做的系统,重装速度会更快一点)

2、虚拟机

在ubuntu下面的虚拟机,好象不能设置为随系统启动而启动的。这不象在windows下面。当系统启动后,虚拟机也可以自动启动(虚拟机是server版,可以在每一个虚拟OS上指定是否随系统启动而启动)

3、虚拟机中的windows 2003登录

2003初装好是需要按ctrl+alt+delte登录的,但vmware中按ctrl+alt是退出焦点。vmserver2后,没有客户端访问程序了(需要单独安装)我感觉还不如1.x版呢。。。

所以进入后,先按Ctrl+apace,把输入法调出来,然后按着ctrl+alt,再用鼠标点击软键盘,上面的del键,进入后。gpedit.msc把登录需要ctrl+del+alt关闭

4、招行

招行登录,不能用远程连上计算机登录,只能本机登录。

远程后,进入大众版会显示:非法远程登录,在询问客服后才知道。。。

5、ubuntu下为什么要装虚拟机?

你以为我想啊,可是不装,QQ功能不全,网银不能使用。支付宝也不能用。凡 是要花钱的地方,ubuntu都不支持,我该怎么办??

google mail 标签大更新

google mail 标签大更新

这,其实是一个用户体验与功能协调的问题。因为以后的项目中很可能也会采用标签(如今阿猫阿狗的网站都有标签功能,但什么样的标签最好,才是个疑问)。借机参考一下

新闻来源:http://google.org.cn/2009/07/02/gmail-drag-and-drop-labels/
恩恩,Gmail的标签功能非常好用,估计很多Gmail黑带高手都自己建立了很多过滤器来将邮件自动通过标签来分类,再加上自定义标签颜色功能,使打开的Gmail呈现一片五颜六色之势,美不胜收。今天Google宣布继续大幅增强标签功能,新功能一个赛一个的实用。 第一:标签显示的新位置

以前标签总是出现在Gmail界面的左下方,独立存在于Labels框架里,与收件箱/发件箱/加星箱(我自己起的名字……)/草稿箱什么的分开老远。现在你可以直接将Labels框架里的常用标签给拖到上面来了,跟这个箱那个箱的排列在一起。

scrapbook.rar

第二:标签的隐藏与显示

如果你设置了很细致的标签造成标签泛滥,那你Gmail的左侧会拉的很长。现在你可以选择把那些不常用的标签隐藏到more下拉菜单里。

d27a69d78dfd7983e55f83be116f9082

更棒的是你在Gmail Labs里添加的自定义标签颜色现在可以删除了。我的自定义标签里就有很多实验出来的配色不好的颜色,但我之前一直没找到怎么删,很苦恼。

53fcc29c9ecaf99d5618a356ddb95d63

你也可以为标签进行排序了,而不必在标签前面加序号/特殊字符的方式强制使一些常用的标签排到最上面去,比如什么“000最重要”、“+++女友的信”等等。

第三:拖拽

拖拽加标签,太酷了!你可以把需要加某个标签的邮件勾上,然后拖到标签上,比如这样:

bac873b4a50e69f8fc8557f714150119

也可以反其道而行之,将标签拖到某些打钩的邮件上,比如这样:

db29360b2a9a293fe634cb28d3ef306c

如果你的标签在more下拉条里,一样可以做拖拽操作。

所有这些更新意味着Gmail Labs里的Right-Side Labels该下岗了,你已经不需要它来帮助你节省屏幕空间了。

以上这些更新将很快陆续出现在你的Gmail里。现在我这里只出现了删除自定义标签颜色,其它还都没有,估计就这几个小时了。另外如果你想第一时间体验到Gmail的新功能,别忘记使用英文版而非中文版。

我知道又会有无聊的闲人留言说“腾讯快来抄哇~~~~”,咳咳,我先把这句话给说了,让你们这些没技术含量的人没的可说。

Mybase

Mybase

我是看到这个图不错,感觉好象还行。。所以转载一下。。。

原文:http://rdc.taobao.com/blog/qa/?p=2469

今天在用朋友的电脑时,无意间发现他桌面上一个很好的工具——Mybase,现在推荐给大家。Mybase是一个功能强大且可随心所欲自定义格式的通用资 料管理器,可用于管理各种各样的信息,如:各类文档、磁盘文件、资料、名片、事件、下载的精华、收集的资料等等,即使毫无规律的资料,也一样可以管理得有 条不紊。附上几张截图,供大家参考。

7f40173bc34d8cb1570ac187acca3fb6

最近好象淘宝QA团队象抽疯一样,拼命在更新博客。这也是其中的一篇。

PHP 5.3.0正式版发布

前段时间已经把5.3的新特性介绍了一下,这里不作详细介绍了

把cnbeta上的新闻原文复制一下就结束,纯粹当成新闻来看吧。

URL:http://www.cnbeta.com/articles/87653.htm

今天,PHP官方已经放出了下一个开发系列5.3.0正式版的下载。按照惯例,还要过一段时间才会发布正式声明。我们可以先用为快。
从去年8月初放出alpha1到现在将近一年,经过3个alpha,一个beta,4个RC.5.3.0正式版已经完成。这个版本主要新加了命名空间,延迟绑定,匿名函数等新功能。一会放出官方完全新特性。

访问:http://cvs.php.net/viewvc.cgi/php-src/UPGRADING?revision=PHP_5_3
下载:http://us2.php.net/distributions/php-5.3.0.tar.bz2

linux命令vmstat介绍

还是来自于淘宝QATEAM,linux命令vmstat介绍

原文如下:
通过STATSPACK收集服务器信息,主要通过收集VMSTAT的信息来展现服务器状况。VMSTAT工具是最常见的UNIX监控工具,可以展现给定时间间隔的服务器的状态值。
一般VMSTAT工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。如:
[oracle@localhost oracle]$vmstat 2
procs ———–memory———- —swap– —–io—- –system– —-cpu—-
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 195804 3812 40616 1598656 0 0 0 0 1024 66976 0 0 100 0
0 0 195804 3812 40616 1598656 0 0 0 12 1048 66961 0 0 100 0
0 0 195804 3812 40616 1598656 0 0 0 28 1054 67067 0 0 100 0
0 0 195804 3812 40616 1598656 0 0 0 0 1020 66988 0 0 100 0
(注:目前系统几乎空闲,并且不同操作系统VMSTAT输出内容有所不同)
目前说来,对于服务器监控有用处的度量主要有:
r(运行队列)

pi(页导入)

us(用户CPU)

sy(系统CPU)

id(空闲)
(如果r经常大于4 ,且id经常少于40,表示cpu的负荷很重。)

(如果bi,bo 长期不等于0,表示内存不足)

通过VMSTAT识别CPU瓶颈
r(运行队列)展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了

获得CPU个数的命令(LINUX环境):
cat /proc/cpuinfo|grep processor|wc -l
当r值超过了CPU个数,就会出现CPU瓶颈,解决办法大体几种:
1. 最简单的就是增加CPU个数
2. 通过调整任务执行时间,如大任务放到系统不繁忙的情况下进行执行,进尔平衡系统任务
3. 调整已有任务的优先级

通过VMSTAT识别CPU满负荷
首先需要声明一点的是,vmstat中CPU的度量是百分比的。当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU 满负荷工作并不能说明什么,UNIX总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定CPU瓶颈的还是r(运行队列)的值。

通过VMSTAT识别RAM瓶颈
数据库服务器都只有有限的RAM,出现内存争用现象是Oracle的常见问题。
首先察看RAM的数量,命令如下(LINUX环境):
[oracle@oracle-db02 ~]$ free
total used free shared buffers cached
Mem: 2074924 2071112 3812 0 40616 1598656
-/+ buffers/cache: 431840 1643084
Swap: 3068404 195804 2872600

当然可以使用top等其他命令来显示RAM。
当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAP DISK的特殊磁盘段上,这样会 出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,但页导入操作就表明了服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回RAM,导致服务器速度变慢。

解决的办法有几种:
1. 最简单的,加大RAM
2. 改小SGA,使得对RAM需求减少
3. 减少RAM的需求(如:减少PGA)

Linux查看系统配置常用命令

Linux查看系统配置常用命令

前两天刚刚转载完老王的Linux杂记 ,结果淘宝QA团队也来了一个Linux查看系统配置常用命令,当然,对于这些命令来说我是多多益善。
虽然不一定记得住,但,作为我的参考还是有用的。

系统 # uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量 资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载 磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况 网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息 进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态 用户
# w # 查看活动用户
# id # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户 # cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务 服务
# chkconfig –list # 列出所有系统服务
# chkconfig –list | grep on # 列出所有启动的系统服务 程序
# rpm -qa # 查看所有安装的软件包

看到最后的rpm,估计淘宝QA们用的是redhat系列的产品线了,什么RH、fedora,centos吧?
估计是,哈哈