博客

  • Open current folder in iTerm

    看到一个Alfred workflows,在终端中打开finder当前目录,依样画葫芦撸了个在iTerm中打开finder当前目录。
    Alfred workflows下载地址:
    https://github.com/hisway/workflows/raw/master/Open%20iTerm%20At%20Current%20Finder%20Path.alfredworkflow

  • 使用 Vagrant 搭建跨平台开发环境

    Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用。可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员,成员可以在自己的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行。

    安装步骤1. 安装 VirtualBox

    虚拟机还是得依靠 VirtualBox 来搭建,免费小巧。
    下载地址:https://www.virtualbox.org/wiki/Downloads

    2. 安装 Vagrant

    下载地址:http://downloads.vagrantup.com/ 根据提示一步步安装。

    此外,还得下载官方封装好的基础镜像:
    Ubuntu precise 32 VirtualBox http://files.vagrantup.com/precise32.box
    Ubuntu precise 64 VirtualBox http://files.vagrantup.com/precise64.box

    其他系统的镜像下载:http://www.vagrantbox.es/

    3. 添加镜像到 Vagrant

    假设我们下载的镜像存放路径是 ~/box/precise64.box,在终端里输入:
    $ vagrant box add ubuntu64 ~/box/precise64.box

    ubuntu64 是我们给这个 box 命的名字,~/box/precise64.box 是 box 所在路径

    4. 初始化开发环境

    创建一个开发目录(比如:~/dev),你也可以使用已有的目录,切换到开发目录里,用  ubuntu64 镜像初始化当前目录的环境:
    $ cd ~/dev # 切换目录
    $ vagrant init  ubuntu64 # 初始化

    $ vagrant up # 启动环境

    你会看到终端显示了启动过程,启动完成后,我们就可以用 SSH 登录虚拟机了,剩下的步骤就是在虚拟机里配置你要运行的各种环境和参数了。
    $ vagrant ssh # SSH 登录
    $ cd /vagrant # 切换到开发目录,也就是宿主机上的 `~/dev`

    ~/dev 目录对应虚拟机中的目录是 /vagrant

    5. 其他设置

    Vagrant 初始化成功后,会在初始化的目录里生成一个 Vagrantfile 的配置文件,可以修改配置文件进行个性化的定制。

    Vagrant 默认是使用端口映射方式将虚拟机的端口映射本地从而实现类似 http://localhost:80 这种访问方式,这种方式比较麻烦,新开和修改端口的时候都得编辑。相比较而言,host-only 模式显得方便多了。打开 Vagrantfile,将下面这行的注释去掉(移除 #)并保存:
    config.vm.network :private_network, ip: “192.168.33.10”

    重启虚拟机,这样我们就能用 192.168.33.10 访问这台机器了,你可以把 IP 改成其他地址,只要不产生冲突就行。

    6. 打包分发

    当你配置好开发环境后,退出并关闭虚拟机。在终端里对开发环境进行打包:
    $ vagrant package
    打包完成后会在当前目录生成一个 package.box 的文件,将这个文件传给其他用户,其他用户只要添加这个 box 并用其初始化自己的开发目录就能得到一个一模一样的开发环境了。

    7. 常用命令
    $ vagrant init # 初始化

    $ vagrant up # 启动虚拟机

    $ vagrant halt # 关闭虚拟机

    $ vagrant reload # 重启虚拟机

    $ vagrant ssh # SSH 至虚拟机

    $ vagrant status # 查看虚拟机运行状态

    $ vagrant destroy # 销毁当前虚拟机

    更多内容请查阅官方文档 http://docs.vagrantup.com/v2/cli/index.html

    8. 注意事项

    使用 Apache/Nginx 时会出现诸如图片修改后但页面刷新仍然是旧文件的情况,是由于静态文件缓存造成的。需要对虚拟机里的 Apache/Nginx 配置文件进行修改:
    # Apache 配置添加:

    EnableSendfile off

    # Nginx 配置添加:
    sendfile off;

  • Virtualbox虚拟机Linux Guest的Additions安装方法

    如果是windows做Guest,直接单击菜单栏 “Insert Guest Additions CD Image… ” 就可以将 Additions CD 自动加载到Guest里的虚拟光驱里,但是Linux是不行的,因为Linux需要root权限才可以mount CD Image。

    做法是在Guest里打开终端,输入:
    sudo mount /dev/sr0  /media/cdrom
    把sr0挂载到 /media/cdrom 里,如果没有cdrom,可以先mkdir一个,挂载到其他位置也可以。

    然后查看一下
    [web@doco6-lamp ~ ]$ ls /mnt/cdrom
    32Bit        autorun.sh  runasroot.sh              VBoxWindowsAdditions-amd64.exe
    64Bit        cert        VBoxLinuxAdditions.run    VBoxWindowsAdditions.exe

    AUTORUN.INF  OS2         VBoxSolarisAdditions.pkg  VBoxWindowsAdditions-x86.exe

    里面有 VBoxLinuxAdditions.run 这一项,直接运行即可。

    sudo sh ./VBoxLinuxAdditions.run

    尝试 sh ./VBoxLinuxAdditions.run 报错:

      Installing the Window System drivers …fail!
      (Could not find the X.org or XFree86 Window System.)

    搜到以下命令:
    sudo apt-get install xserver-xorg xserver-xorg-core

    以上是重装过程,全部解决。

    安装后,reboot一下就可以了。

  • 获取 ajax return 的返回值

    function check_phone (phone) {
    $.ajax({

    url:URL,//请求的url地址

    dataType:”json”, //返回格式为json

    timeout: 10000,

    async:ture,//请求是否异步,默认为异步

    data:{phone:phone}, //参数值

    type:”POST”, //请求方式

    beforeSend:function(){

    },

    success:function(req){

    if(req.status == 0){

    return false;

    }else{

    return true;

    }

    },

    complete:function(){

    },

    error:function(XMLHttpRequest, textStatus, errorThrown){

    return false;

    }

    });

    }

    上面的函数,想返回true和false,在执行alert(check_phone(phone))时候是undefined,感觉在ajax中返回实际上函数没有返回值,应该在ajax外面执行return操作。

    function check_phone (phone) {

    var res = false;

    $.ajax({

    url:URL,//请求的url地址

    dataType:”json”, //返回格式为json

    timeout: 10000,

    async:false,//请求是否异步,默认为异步

    data:{phone:phone}, //参数值

    type:”POST”, //请求方式

    beforeSend:function(){

    },

    success:function(req){

    if(req.status == 0){

    res=false;

    }else{

    res=true;

    }

    },

    complete:function(){

    },

    error:function(XMLHttpRequest, textStatus, errorThrown){

    return false;

    }

    });

    return res;

    }

    注意:async:false。设置为同步的,必须等ajax执行完,返回相应返回值,否则直接return初始的var res=false了。

  • Laravel requires the Mcrypt PHP extension.

    I am trying to use the migrate function in Laravel 4 on OSX, however I am getting the error

    ​Laravel requires the Mcrypt PHP extension.

    What is wrong, and how can I fix it?

    (更多…)

  • 最近博客动态

    1,博客从国外移到了腾讯云,响应时间大大缩短,访问速度明显加快。

    2,启用了多说评论插件代替wp自带评论,方便管理。

    3,使用了七牛镜像云存储插件,CDN 加速js|css|png|jpg|jpeg|gif|ico,缓解服务器压力。

  • mac下安装oci8扩展来支持php连接oracle

    下载oci8扩展包:
    http://pecl.php.net/package/oci8

    cd到解压目录执行phpize,发现错误,

    错误提示:
    Cannot find autoconf. Please check your autoconf installation and the
    $PHP_AUTOCONF environment variable. Then, rerun this script.

    解决方法:
    curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-latest.tar.gztar xzf autoconf-latest.tar.gz
    cd autoconf-*./configure –prefix=/usr/local
    make
    sudo make install

    (更多…)

  • SVN命令忽略文件/文件夹的方法

    1. svn propedit svn:ignore dir

    注意:dir为忽略路径(可以cd到某个目录,用.表示当前目录),因为不能循环执行,所以子目录也要重设,如果报错请看下面

    2. 打开的文件就是忽略列表文件了(默认是空的),每一行是一项,在该文件中输入忽略的文件,保存退出

    如果在svn propedit svn:ignore .时报错:svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and no ‘editor-cmd’ run-time configuration option was found

    (更多…)

  • 通过传递session_id解决uploadify上传PHP中丢失SESSION值的问题

     

    由于uploadify通过flash提交上传的文件,会导致在接收文件的PHP端出现获取SESSION值为空的情况,如果你要在PHP端验证用户的登录状态或验证用户输入的验证码是否正确你就需要解决SESSION取值的问题,下面给出uploadify上传中获取SESSION的方法:

    (更多…)

  • 修复OpenSSL被爆出的严重安全漏洞

    OpenSSL被爆出严重的安全漏洞,具体请看OpenSSL官网4月7日发布的公告:http://www.openssl.org/news/secadv_20140407.txt

     

    漏洞检测工具:http://filippo.io/Heartbleed/

     

    该漏洞可能暴露密钥和私密通信,应尽快修补!!!

     

    存在此漏洞的版本情况:

    1. OpenSSL 1.0.1 和OpenSSL 1.0.2-beta存在此漏洞

    2. 更老版本OpenSSL(1.0.0和0.9.8)不受影响

    (更多…)