未来IT界只需三种英才

作者:Jason Hiner 翻译:boxi

最近几年,在许多IT专业人士中间都出现了一种普遍的焦虑。这跟还仅仅是10年前的形势形成了鲜明的对比。上世纪九十年代末的时候,IT职业人士还是最耀眼的明星。IT劳动力的短缺常常是新闻的头条,通过接受培训、考取认证、跳槽等手段,以及在很多情况下成为一个资源分散的工作市场中某个关键位置唯一合格的候选者,IT专业人士能够因此而要求优厚的薪金。 彼时,IT被当做未来职业之一,因为越来越多的最好工作都将会由人工迁移至计算机自动化执行。

不幸的是,这种对未来的想法已经消失了,或者至少转化为某种大相径庭的东西了。

还是IT专业人士名符其实的光辉岁月,随着千年危机过去而逝去了,然后发生了互联网企业的内爆。突然之间,公司不再需要雇用那么多的编码员。突然之间, 购买服务器并雇用系统管理员来运营这些服务器的初创企业少了不少。

差不多也是那个时候,美国企业普遍都对IT加以抵制。许多公司往IT下面上投入了近乎无穷尽的资金,相信技术就是所有问题的答案。由于IT在上世纪九十年代驱动了主要的生产力改进,许多公司在IT方面投资过度,步子迈得太快太远了。其结果是,非常大型非常烧钱最后却崩溃而灰飞烟灭的IT项目比比皆是。

到了2001年的衰退来袭时,大量的这些过度建设的IT部门就成为了削减预算的大型目标,其中的许多部门都遭受了沉重打击。随着衰退拖延至2002及2003年, IT专业人士大都相互告诉对方说需要安全度过难关,局势会好转起来的。但是,一件奇怪的事情发生了,IT预算仍旧逐年下滑。反弹未见发生。

弹指一挥间,时间来到2011年。大多数IT部门都化身为从前那个自我的影子。 他们已经大幅地减少了技术支持人员的数量,或者把帮助台彻底地外包出去。他们以少得多的管理员来过了网络及服务器,或者是完全把数据中心外包出去。而这些均为1999年IT专才爆发之时的工作重心。今日,虽然他们没有彻底消失,但这方面的现有人员没有出现短缺或对这些技能没有高的需求是可以肯定的。

这是因为IT环境已经发生了剧烈的变化。越来越多传统的软件已经迁移到了网上,或者至少迁移到了内部服务器上,通过web浏览器加以访问。许多婴儿潮时期出生的技术恐惧者已经离开了工作岗位,其位置已为千禧一代所替代,这一代人不仅不需要太多的技术支持,而且常常还喜欢自己选择设备,他们把IT部门视为生产力的障碍。换句话说,今天用户不想过去那样需要那么多的帮助。愤世嫉俗的IT人士也许会质疑这一切直至气急败坏,但事实就是如此。大多数工人现在运用技术已经有10年乃是以上的年头,相比于十年前要熟练得多了。此外,软件本身也变得更好了。虽然还是非常地不完美,但是要比以前好了。
继续阅读

ping的加强版fping

刚发现一个ping的加强版本–fping,非常好用
fping不是系统命令,你需要另外安装

Linux:

[root@bogon ~]#wget http://fping.sourceforge.net/download/fping.tar.gz
[root@bogon ~]#tar xvzf fping.tar.gz
[root@bogon ~]#cd fping-2.4b.2_to
[root@bogon fping-2.4b2_to]#./configure
[root@bogon fping-2.4b2_to]#make && make install

这样就安装完成了

使用:

[root@bogon fping-2.4b2_to]# fping -t 100 -g 192.168.18.1 192.168.18.10         
192.168.18.1 is alive
192.168.18.3 is alive
192.168.18.4 is alive
192.168.18.7 is alive
192.168.18.8 is alive
192.168.18.9 is alive
192.168.18.10 is alive
192.168.18.2 is unreachable
192.168.18.5 is unreachable
192.168.18.6 is unreachable

fping也有windows版本的,安装使用都很简单
这样就是不作详述了

继续阅读

PHP判断用户的操作系统

下面函数的功能就是获取用户的操作系统

< ?php
/**
 * 获得客户端的操作系统
 *
 * @access  private
 * @return  void
 */
function get_os()
{
    if (empty($_SERVER['HTTP_USER_AGENT']))
    {
        return 'Unknown';
    }
 
    $agent = strtolower($_SERVER['HTTP_USER_AGENT']);
    $os    = '';
 
    if (strpos($agent, 'win') !== false)
    {
        if (strpos($agent, 'nt 5.1') !== false)
        {
            $os = 'Windows XP';
        }
        elseif (strpos($agent, 'nt 5.2') !== false)
        {
            $os = 'Windows 2003';
        }
        elseif (strpos($agent, 'nt 5.0') !== false)
        {
            $os = 'Windows 2000';
        }
        elseif (strpos($agent, 'nt 6.0') !== false)
        {
            $os = 'Windows Vista';
        }
        elseif (strpos($agent, 'nt') !== false)
        {
            $os = 'Windows NT';
        }
        elseif (strpos($agent, 'win 9x') !== false && strpos($agent, '4.90') !== false)
        {
            $os = 'Windows ME';
        }
        elseif (strpos($agent, '98') !== false)
        {
            $os = 'Windows 98';
        }
        elseif (strpos($agent, '95') !== false)
        {
            $os = 'Windows 95';
        }
        elseif (strpos($agent, '32') !== false)
        {
            $os = 'Windows 32';
        }
        elseif (strpos($agent, 'ce') !== false)
        {
            $os = 'Windows CE';
        }
    }
    elseif (strpos($agent, 'linux') !== false)
    {
        $os = 'Linux';
    }
    elseif (strpos($agent, 'unix') !== false)
    {
        $os = 'Unix';
    }
    elseif (strpos($agent, 'sun') !== false && strpos($agent, 'os') !== false)
    {
        $os = 'SunOS';
    }
    elseif (strpos($agent, 'ibm') !== false && strpos($agent, 'os') !== false)
    {
        $os = 'IBM OS/2';
    }
    elseif (strpos($agent, 'mac') !== false && strpos($agent, 'pc') !== false)
    {
        $os = 'Macintosh';
    }
    elseif (strpos($agent, 'powerpc') !== false)
    {
        $os = 'PowerPC';
    }
    elseif (strpos($agent, 'aix') !== false)
    {
        $os = 'AIX';
    }
    elseif (strpos($agent, 'hpux') !== false)
    {
        $os = 'HPUX';
    }
    elseif (strpos($agent, 'netbsd') !== false)
    {
        $os = 'NetBSD';
    }
    elseif (strpos($agent, 'bsd') !== false)
    {
        $os = 'BSD';
    }
    elseif (strpos($agent, 'osf1') !== false)
    {
        $os = 'OSF1';
    }
    elseif (strpos($agent, 'irix') !== false)
    {
        $os = 'IRIX';
    }
    elseif (strpos($agent, 'freebsd') !== false)
    {
        $os = 'FreeBSD';
    }
    elseif (strpos($agent, 'teleport') !== false)
    {
        $os = 'teleport';
    }
    elseif (strpos($agent, 'flashget') !== false)
    {
        $os = 'flashget';
    }
    elseif (strpos($agent, 'webzip') !== false)
    {
        $os = 'webzip';
    }
    elseif (strpos($agent, 'offline') !== false)
    {
        $os = 'offline';
    }
    else
    {
        $os = 'Unknown';
    }
 
    return $os;
}
 
?>

继续阅读

用foxmail群发邮件单显

假如你想群发邮件,但你不想别人知道你是对多个人进行发送这封邮件

一般比较麻烦的方法就是一个一个去发。这个实现起来比较麻烦

但其实foxmail里面有一个很好用的功能。

就是

菜单栏->邮件->独立发送

只要选择这个, 就相当于按收件人一个一个来发送

而且,收件人收到邮件后,在收件人栏只看到自己的邮件,并不会看到

你对其它群发的邮件地址!

继续阅读

PHP判断文件类型

有时候对上传的文件或读取的文件进行文件类型进行判断
下面这个函数非常有用,功能也写得比较全

< ?php
 
/**
 * 检查文件类型
 *
 * @access      public
 * @param       string      filename            文件名
 * @param       string      realname            真实文件名
 * @param       string      limit_ext_types     允许的文件类型
 * @return      string
 */
function check_file_type($filename, $realname = '', $limit_ext_types = '')
{
    if ($realname)
    {
        $extname = strtolower(substr($realname, strrpos($realname, '.') + 1));
    }
    else
    {
        $extname = strtolower(substr($filename, strrpos($filename, '.') + 1));
    }
 
    if ($limit_ext_types && stristr($limit_ext_types, '|' . $extname . '|') === false)
    {
        return '';
    }
 
    $str = $format = '';
 
    $file = @fopen($filename, 'rb');
    if ($file)
    {
        $str = @fread($file, 0x400); // 读取前 1024 个字节
        @fclose($file);
    }
    else
    {
        if (stristr($filename, ROOT_PATH) === false)
        {
            if ($extname == 'jpg' || $extname == 'jpeg' || $extname == 'gif' || $extname == 'png' || $extname == 'doc' ||
                $extname == 'xls' || $extname == 'txt'  || $extname == 'zip' || $extname == 'rar' || $extname == 'ppt' ||
                $extname == 'pdf' || $extname == 'rm'   || $extname == 'mid' || $extname == 'wav' || $extname == 'bmp' ||
                $extname == 'swf' || $extname == 'chm'  || $extname == 'sql' || $extname == 'cert')
            {
                $format = $extname;
            }
        }
        else
        {
            return '';
        }
    }
 
    if ($format == '' && strlen($str) >= 2 )
    {
        if (substr($str, 0, 4) == 'MThd' && $extname != 'txt')
        {
            $format = 'mid';
        }
        elseif (substr($str, 0, 4) == 'RIFF' && $extname == 'wav')
        {
            $format = 'wav';
        }
        elseif (substr($str ,0, 3) == "\xFF\xD8\xFF")
        {
            $format = 'jpg';
        }
        elseif (substr($str ,0, 4) == 'GIF8' && $extname != 'txt')
        {
            $format = 'gif';
        }
        elseif (substr($str ,0, 8) == "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A")
        {
            $format = 'png';
        }
        elseif (substr($str ,0, 2) == 'BM' && $extname != 'txt')
        {
            $format = 'bmp';
        }
        elseif ((substr($str ,0, 3) == 'CWS' || substr($str ,0, 3) == 'FWS') && $extname != 'txt')
        {
            $format = 'swf';
        }
        elseif (substr($str ,0, 4) == "\xD0\xCF\x11\xE0")
        {   // D0CF11E == DOCFILE == Microsoft Office Document
            if (substr($str,0x200,4) == "\xEC\xA5\xC1\x00" || $extname == 'doc')
            {
                $format = 'doc';
            }
            elseif (substr($str,0x200,2) == "\x09\x08" || $extname == 'xls')
            {
                $format = 'xls';
            } elseif (substr($str,0x200,4) == "\xFD\xFF\xFF\xFF" || $extname == 'ppt')
            {
                $format = 'ppt';
            }
        } elseif (substr($str ,0, 4) == "PK\x03\x04")
        {
            $format = 'zip';
        } elseif (substr($str ,0, 4) == 'Rar!' && $extname != 'txt')
        {
            $format = 'rar';
        } elseif (substr($str ,0, 4) == "\x25PDF")
        {
            $format = 'pdf';
        } elseif (substr($str ,0, 3) == "\x30\x82\x0A")
        {
            $format = 'cert';
        } elseif (substr($str ,0, 4) == 'ITSF' && $extname != 'txt')
        {
            $format = 'chm';
        } elseif (substr($str ,0, 4) == "\x2ERMF")
        {
            $format = 'rm';
        } elseif ($extname == 'sql')
        {
            $format = 'sql';
        } elseif ($extname == 'txt')
        {
            $format = 'txt';
        }
    }
 
    if ($limit_ext_types && stristr($limit_ext_types, '|' . $format . '|') === false)
    {
        $format = '';
    }
 
    return $format;
}
?>

继续阅读

判断访客是否为搜索引擎蜘蛛

下面这个函数的功能是判断访客是否为搜索引擎的蜘蛛

< ?php
 
/**
 * 判断是否为搜索引擎蜘蛛
 *
 * @access  public
 * @return  string
 */
function is_spider($record = true)
{
    static $spider = NULL;
 
    if ($spider !== NULL)
    {
        return $spider;
    }
 
    if (empty($_SERVER['HTTP_USER_AGENT']))
    {
        $spider = '';
 
        return '';
    }
 
    $searchengine_bot = array(
        'googlebot',
        'mediapartners-google',
        'baiduspider+',
        'msnbot',
        'yodaobot',
        'yahoo! slurp;',
        'yahoo! slurp china;',
        'iaskspider',
        'sogou web spider',
        'sogou push spider'
    );
 
    $searchengine_name = array(
        'GOOGLE',
        'GOOGLE ADSENSE',
        'BAIDU',
        'MSN',
        'YODAO',
        'YAHOO',
        'Yahoo China',
        'IASK',
        'SOGOU',
        'SOGOU'
    );
 
    $spider = strtolower($_SERVER['HTTP_USER_AGENT']);
 
    foreach ($searchengine_bot AS $key => $value)
    {
        if (strpos($spider, $value) !== false)
        {
            $spider = $searchengine_name[$key];
 
            if ($record === true)
            {
                $GLOBALS['db']->autoReplace($GLOBALS['ecs']->table('searchengine'), array('date' => local_date('Y-m-d'), 'searchengine' => $spider, 'count' => 1), array('count' => 1));
            }
 
            return $spider;
        }
    }
 
    $spider = '';
 
    return '';
}
 
?>

继续阅读

PHP获得浏览器名称和版本

有时候假如你想统计访客的信息,
如使用哪一种浏览器来访问自己的网站,
下面这个函数可以帮到忙

< ?php
/**
 * 获得浏览器名称和版本
 *
 * @access  public
 * @return  string
 */
function get_user_browser()
{
	if (empty($_SERVER['HTTP_USER_AGENT']))
	{
		return '';
	}
 
	$agent       = $_SERVER['HTTP_USER_AGENT'];
	$browser     = '';
	$browser_ver = '';
 
	if (preg_match('/MSIE\s([^\s|;]+)/i', $agent, $regs))
	{
		$browser     = 'Internet Explorer';
		$browser_ver = $regs[1];
	}
	elseif (preg_match('/FireFox\/([^\s]+)/i', $agent, $regs))
	{
		$browser     = 'FireFox';
		$browser_ver = $regs[1];
	}
	elseif (preg_match('/Maxthon/i', $agent, $regs))
	{
		$browser     = '(Internet Explorer ' .$browser_ver. ') Maxthon';
		$browser_ver = '';
	}
	elseif (preg_match('/Opera[\s|\/]([^\s]+)/i', $agent, $regs))
	{
		$browser     = 'Opera';
		$browser_ver = $regs[1];
	}
	elseif (preg_match('/OmniWeb\/(v*)([^\s|;]+)/i', $agent, $regs))
	{
		$browser     = 'OmniWeb';
		$browser_ver = $regs[2];
	}
	elseif (preg_match('/Netscape([\d]*)\/([^\s]+)/i', $agent, $regs))
	{
		$browser     = 'Netscape';
		$browser_ver = $regs[2];
	}
	elseif (preg_match('/safari\/([^\s]+)/i', $agent, $regs))
	{
		$browser     = 'Safari';
		$browser_ver = $regs[1];
	}
	elseif (preg_match('/NetCaptor\s([^\s|;]+)/i', $agent, $regs))
	{
		$browser     = '(Internet Explorer ' .$browser_ver. ') NetCaptor';
		$browser_ver = $regs[1];
	}
	elseif (preg_match('/Lynx\/([^\s]+)/i', $agent, $regs))
	{
		$browser     = 'Lynx';
		$browser_ver = $regs[1];
	}
 
	if (!empty($browser))
	{
		return addslashes($browser . ' ' . $browser_ver);
	}
	else
	{
		return 'Unknow browser';
	}
}
 
 
?>

继续阅读

PHP判断来自电脑还是手机的用户

前段时间写了一个判断浏览器来自电脑还是手机的功能,
假如是手机的话,就自动跳转到wap网站。这种情况在各大网站中
应用还是比较觉见。如凡客等

原理是靠$_SERVER[“HTTP_ACCEPT”]来判断
下面直接贴代码了:

 
< ?php
/**
 * 判断客户端是来自电脑还是手机
 * @author Lok 2011-07-02
 */
 
$wap_str = "text/vnd.wap.wml";
 
if (strpos($_SERVER["HTTP_ACCEPT"], $wap_str)) {
	// 来自手机的用户
} 
else {
	// 来自电脑的用户
}
?>

继续阅读