作者存档

linux 终端下的常用快捷键

2013年1月13日 没有评论

使用linux的少不了玩命令行,掌握一下快捷键可以让你做事达到事半功倍的效果。用的最多的应该是属于Tab键,功能是自动补齐。主要用在命令本身名字和进入目录查看文件,有了它就不需要一字一字的输出命令的完整名字,只要输入前面几个字符,然后Tab一下就可以了,如果存在多个它会全部提示出来;进入一个很深的目录时候,使用Tab也能快速进入。下面列举一些我常用的组合快捷键。

  • ctrl + a  回到命令行的行首
  • ctrl + e  回到命令行的行尾
  • ctrl + c  取消当前行输入的命令,并重新到下一行
  • ctrl + r  出现命令历史记录搜索提示,输入字符后会自动匹配命令
  • ctrl + b  向后退一个字符,相当于向左方向键
  • ctrl + f  向前进一个字符,相当于向右方向键
  • alt  + b  向后跳一个字
  • alt +  f  向前进一个字
  • ctrl + p  向上翻以前的输入命令,相当于向上方向键
  • ctrl + n  向下翻以前的输入命令,相当于向下方向键
  • ctrl + w  从光标位置向后删除一个字
  • ctrl + y  粘贴最后一个删除的字
  • ctrl + d  删除当前光标位置的一个字符
  • ctrl + u  从光标当前位置删除所有字符至行首
  • ctrl + k  从光标当前位置删除所有字符至行尾,相当于长按ctrl + d
分类: Linux 标签:

linux nohup用途

2013年1月12日 没有评论

玩过Linux的人应该都知道,如果想让一个程序在后台运行,只要在执行命令的末尾加上一个&符号就可以了。但是这种方式不是很保险,有些程序当你登出终端后它就会停止。那么如何让一个程序真正永远在后台执行呢。答案就是使用 nohub 命令,格式为:

nohup 执行程序的命令 &

如果程序有输出,它会试着把输出写入执行上述命令的当前文件夹下的 nohup.out 文件中,当写入失败,就会写当前用户的$HOME目录下的nohup.out 中。

分类: Linux 标签:

php 直接输出图片

2013年1月10日 没有评论

前段时间看 google analytics 移动版,发现可以直接通过php来输出一个1×1像素的图片。以前的我的做法是php中执行了处理逻辑后,然后通过header 进行一个 302 转跳到一个已有的图片上,看来是多此一举了。下面是图片输出的示例代码:

<?php
function writeGifData() {
    $GIF_DATA = array(
        chr(0x47),chr(0x49),chr(0x46),chr(0x38),chr(0x39),chr(0x61),
        chr(0x01),chr(0x00),chr(0x01),chr(0x00),chr(0x80),chr(0xff),
        chr(0x00),chr(0xff),chr(0xff),chr(0xff),chr(0x00),chr(0x00),
        chr(0x00),chr(0x2c),chr(0x00),chr(0x00),chr(0x00),chr(0x00),
        chr(0x01),chr(0x00),chr(0x01),chr(0x00),chr(0x00),chr(0x02),
        chr(0x02),chr(0x44),chr(0x01),chr(0x00),chr(0x3b)
    );

    header("Content-Type: image/gif");
    header("Cache-Control: " . "private, no-cache, no-cache=Set-Cookie, proxy-revalidate");
    header("Pragma: no-cache");
    header("Expires: Wed, 17 Sep 1975 21:32:10 GMT");

    echo join($GIF_DATA);

    exit;
}

writeGifData();
?>

受到启示,也可以通过下面的方式来输出图片

<?php
function writeGifData() {
    //服务器图片真实路径
    $file = dirname(__FILE__) . '/1x1.gif';
    readfile($file);

    exit;
}

writeGifData();
?>

另外,如果觉得.php作为图片的扩展名不好看,可以在服务器上通过urlrewrite来改造一下,这样用户看到的是图片扩展名,但是服务器真是处理的是一个php脚本,既然是php脚本,就可以做很多其他的事,这种方式在网站统计、广告系统等广泛应用。

分类: PHP 标签:

MBP 突然没有声音

2013年1月9日 没有评论

今天打开MBP,插上耳机突然发现没有一点声音,然后不使用耳机,也没有声音,确定声音是处于开启状态的。这就比较奇怪,昨天晚上还是好好的,以前从来没有出现这样的情况,回想一下,昨天晚上是在没有使用电源的情况使用了几个小时,后来直接合盖休眠的,这是和以前唯一的区别。准备重启一下机器,看到自己已经38天没有关机,想继续延续这个不关机的时间,遂决定google一把,发现有这样问题的人还不少。大致有三种方案,一是重启机器,二是插上耳机然后拔掉再插上,三是使用killall命令干掉声音的那个进程。方案二对我的情况测试下来无效;方案一没有试;方案三成功了。具体操作是在实用工具中找到“终端”程序并打开,然后执行:

sudo killall coreaudiod

执行命令时可能会提示你输入密码,这里的密码就是你当前登陆到系统的密码

分类: 其它 标签:

提交表单时去掉无用的信息

2013年1月9日 没有评论

html中使用form来提交信息到服务器,方式可以是POST或GET。你通过firebug、httpfox等类似工具查看提交的信息,可能会注意到,你的提交按钮也作为信息的一部分给提交给服务器,这个信息我想绝大部分是不会使用到的。

那如何在提交表单的时候让浏览器不发送这个信息呢?其实非常简单,只需要把不想发送信息的input的name属性去掉就可以了。例如:

<input type="submit" value="登陆">

这样,你就不会看到提交的信息中有”登陆”了。

分类: web前端 标签:

crontab 指定执行用户

2013年1月8日 没有评论

linux下可以通过配置crontab来定时执行任务,执行体可以是一条系统命令或自己写的一个脚本,同时可以指派用户来执行。配置crontab有两种方法。
方法1、使用crontab命令,例如添加一个新的或编辑已有的,使用:

crontab -e

就可以进入配置文件。此时配置crontab的执行者是当前登入用户,如果当前用户是root,需要为其他用户配置,可以使用

crontab -e -u 用户名

或
su 用户名
crontab -e

这种方法有一个缺点,就是当前系统中配置的crontab不在一个配置文件中,让管理员不方便查询系统到底有多少个crontab。

方法2、直接在/etc/crontab文件中添加,不过需要是root身份。打开文件,应该会看到类似下面的信息


SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

要添加新的crontab,只需要在文件最后增加即可。注意这里面需要指定用户名;而方法1中则不需要,如果指定了,它会认为是命令的一部分,从而可能导致crontab执行失败。

如果服务器都是有root来管理,建议添加crontab使用方法2,这样系统中的所有计划任务都在一起,一目了然。

分类: Linux 标签: ,

新年快乐

2013年1月1日 没有评论

新的纪年开始,今天顺利申请成功了Amazon的云服务、根据以前的Blog笔记顺利的搭建好环境、同时很顺利的把Blog从朋友的VPS迁移到AWS EC2上,所有的一切一切都是无比的顺利。希望新的一年自己在家庭、工作等一切上都顺顺利利。把同样的祝福也送给所有人。

分类: 其它 标签:

PHP curl 获取响应的状态吗

2012年12月23日 没有评论

PHP curl可以从服务器端模拟一个http请求,例如抓取网页、模拟登陆等。根据选项设置,可以在curl_exec的返回结果中获取到响应头和body,但这没有响应的状态吗。想要获取状态吗,需要在执行curl_exec后再通过curl_getinfo来获取。例如:

$ch = curl_init ();
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com.hk');
curl_setopt($ch, CURLOPT_TIMEOUT, 200);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_NOBODY, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');

curl_exec($ch);
$httpCode = curl_getinfo($ch,CURLINFO_HTTP_CODE);

另外curl_getinfo还可以获取很多其他信息,具体请参考:http://php.net/manual/en/function.curl-getinfo.php 。

分类: PHP 标签:

Mac Mail客户端彻底删除Gmail邮件的方法

2012年12月21日 没有评论

自从换了Mac笔记本,就一直在用Mac下的邮件客户端Mail,感觉蛮好用的。通过IMAP方式添加了Gmail邮箱,有一个问题为删除邮件总是无法彻底删除。当直接通过收件箱中删除Gmail邮件,此时收件箱是没有了,但是通过查找,还是能找到,发现邮件还在“所有邮件”,那怕在“所有邮件”中把他删除,同步后又会下载下来。以前的解决办法是通过网页登陆Gmail进行删除操作,今天无意中发现其实可以通过Mail客户端来操作的,在要删除邮件上点邮件,在出来的菜单中要选“删除”,而是选“移动”到该邮箱的“删除邮件”中,如果曾经执行过一次,以后就可以通过选“再次拷贝到“已删除邮件””这项,同样,也可以通过拖动的方式把邮件拖到“已删除邮件”中,操作完成后,可以在“已删除邮件”中发现刚才删除的邮件,此时只要删除“已删除邮件”中的邮件,就能真正删除掉邮件了,如果不手动删除也无所谓,Gmail服务器会在30天后自动永久删除的。

另外,彻底删除草稿箱、已发邮件中的邮件也需要采用上述方式。

分类: 其它 标签:

使用PHPMailer发送邮件

2012年12月20日 2 条评论

PHPMailer是别人封装好的一个发送邮件的库,用起来很方便。其支持mail、sendmail和smtp的方式。官网地址:http://phpmailer.worxware.com/,可以到https://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list去下载最新版本的。下面通过gmail smtp发送邮件为例来说明smtp使用方法。

function sendMail($subject, $body, $to, $ccs = array()) {
    require_once './class.phpmailer.php';

    $mail  = new PHPMailer();
    //设定邮件编码,默认ISO-8859-1,也可以直接去源代码中修改
    $mail->CharSet = 'UTF-8';
    // 使用smtp的方式发送
    $mail->IsSMTP();
    //smtp服务器需要认证
    $mail->SMTPAuth = TRUE;
    //安全协议 gmail 是采用ssl的
    $mail->SMTPSecure = "ssl";
    //smtp服务器
    $mail->Host = 'smtp.gmail.com';
    //smtp服务器端口,普通是25
    $mail->Port = 465;
    //smtp 认证用户名和密码
    $mail->Username = 'yourgmailaccount@gmail.com';
    $mail->Password = "yourpassword";
    //发件人地址和名字,名字可以省略
    $mail->SetFrom('yourgmailaccount@gmail.com', 'display name');
    // 邮件标题
    $mail->Subject = $subject;
    // 邮件内容,支持HTML格式
    $mail->MsgHTML($body);
    // 收件人地址
    $mail->AddAddress($to);
    // 抄送人
    foreach ($ccs as $cc) {
        $mail->AddCC($cc);
    }

    if(!$mail->Send()) {
        echo "error info:" . $mail->ErrorInfo;
    }
}
分类: PHP 标签:

无觅相关文章插件,快速提升流量