forecho 的独立博客

把生命浪费在美好的事物上

Windows 开发利器

2015年03月01日

前言

Linux 应该是最理想的开发系统,但是 Linux 桌面系统做的很稀烂,我记得我用 Linux 开发的时候 Sublime Text 都不支持中文输入啊,想写个注释都要去记事本写好了再粘贴过来,这得多蛋疼,效率得多低。

Windows 7 系统 其实的很棒了,绝大多数公司目前用的开发系统都是 Windows,但是作为开发机 Windows 有很大的缺陷,终端薄弱、安装扩展麻烦、其他语言的不友好支持等等麻烦,让你只能停留在初级开发者的阶段。

Mac OS 最理想的开发环境,因为有这同 Linux 一样好用的终端,有精美的界面。是开发者首选。但是价格昂贵,却是值得的。

但是大部分公司给你配置的都是台式机,Windows 系统。所有下面我们来说说怎么让你的 Windows 系统开发更有效率。真正用起来的话你会觉得其实 Windows 也不错。

强化系统工具

VirtualBox + Vagrant(打造 Linux 开发环境)

最初我是在 慕课网-Web app—Rails10日谈 上看这个方法的,看完我就惊呆了,相见恨晚的感觉。这不就是我一直所追求的开发环境吗?

Vagrant 和 VirtualBox 虚拟机配合可以让你的 Windows 使用 Linux 系统。再配合一个强大的终端,那就完美了。

具体使用我就不写了,看下面的参考资料已经足够了。

参考资料:

babun + ConEmu(打造最强终端)

Windows 下面的终端我试了好几个,最后试来试去发现 babun 最好了,省时省力,集成 oh-my-zsh、git 等,算是 Cygwin 的精简版。

ConEmu 可以加强终端使用,和 babun 配合,可以开多个标签。

Clover(资源管理器扩展)

如果你喜欢 Chrome 浏览器,那么你一定会爱死这个软件了,以 Chrome 的形式来使用我们的资源管理器,多标签、书签、新标签打开、重新打开关闭之后的标签,统统没问题,快捷键都和 Chrome 一样。

Listary(文件浏览与搜索增强工具)

增强文件夹资源管理工具。免费有中文。高级版收费,保存文件的时候可以直接根据文件名搜索文件路径,你值得拥有。

Everything 也是搜索文件神器,但是 Listary 已经有搜索功能了,所有我就没有安装 Everything 了。

参考资料:

Mac PHP 环境下新增虚拟主机

2015年01月16日

注:这里只是新增,如果是第一次开启虚拟主机,请参考这篇文章

1、运行sudo vim /etc/apache2/extra/httpd-vhosts.conf,就打开了配置虚拟主机文件httpd-vhost.conf,配置虚拟主机了。增加虚拟主机代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
<VirtualHost *:80>
    DocumentRoot "/Users/[用户名]/Sites/site"
    ServerName www.site.com
    ErrorLog "/private/var/log/apache2/sites-error_log"
    CustomLog "/private/var/log/apache2/sites-access_log" common
    <Directory />
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order deny,allow
                Allow from all
    </Directory>
</VirtualHost>

2、保存退出,并重启Apache。

1
sudo apachectl restart

3、运行sudo vim /etc/hosts,打开hosts配置文件,加入「127.0.0.1 www.site.com」, 这样就可以配置完成sites虚拟主机了,访问「http://www.site.com」就相当于访问/Users/[用户名]/Sites/site文件下面的项目了。

补充:Mac默认PHP配置文件在 /private/etc/php.ini

Mac Sublime Text 实现 Chrome 快速预览

2015年01月08日

安装

按照 Tools -> Build System -> New Build System… 新建一个「Build System」文件。 写入以下代码:

1
2
3
{
    "cmd": ["open", "-a", "/Applications/Google Chrome.app", "$file"]
}

保存在「~/Library/Application Support/Sublime Text 2/Packages/User」,文件名为「Chrome.sublime-build」。

使用方法

在 Tools -> Build System 选择 Chrome,然后直接按「command+b」快捷键就自动打开 Chrome 了。

参考链接

  1. Sublime Text 2 Browser Preview(youtube 视频要翻墙)
  2. Set up Sublime Text to Preview Your Code in a Web Browser
  3. Sublime Text 2 keyboard shortcut to open file in specified browser (e.g. Chrome)

CakePHP 使用小技巧

2014年11月19日

知道主键 ID 更新一条数据,代码示例:

1
2
$this->Order->id = $id;
$this->Order->saveField('status', $status);

点赞的时候需要+1,如何更新数据库?

1
2
3
4
$this->Widget->updateAll(
    array('Widget.numberfield' => 'Widget.numberfield + 1'),
    array('Widget.id' => 1)
);

如何通过主键最简单的方式获取到一条数据?

1
2
3
4
// 只获取name字段信息
$this->User->read('name', $id);
// 获取所有信息
$this->User->read(null, $id);

安装 Python Pip

2014年11月18日

Windows 安装

  1. 先下载 get-pip.py
  2. 再运行python get-pip.py执行安装程序
  3. 添加环境变量到计算机,例如:C:\Python27\Scripts

Ubuntu安装

  1. 在终端运行sudo apt-get install python-pip

解决asciii码错误

使用Yii的 CMenu

2014年11月17日

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
$this->widget('zii.widgets.CMenu',array(
    'activeCssClass'=>'当前热点元素的样式',
    'firstItemCssClass'=>'第一个元素的样式',
    'lastItemCssClass'=>'最后一个元素的样式',
    'htmlOptions'=>array('class'=>'默认样式'),
    'items'=>array(
        array(
            'label'=>'网站概况',
            'url'=>array('/admin'),
            'itemOptions'=>array(
                'class'=>'li_status'
            ),
            'active'=>$this->id=='admin'?true:false
        ),
        array(
            'label'=>'图片管理',
            'url'=>array('/picture'),
            'template'=>'{menu}<span>this is additional infomation</span>',
            'itemOptions'=>array('class'=>'li_picture'),
            'active'=>$this->id=='picture'?true:false,
            'visible'=>true
        ),
        array('label'=>'管理员管理',
            'url'=>array('/manager'),
            'itemOptions'=>array('class'=>'li_manager'),
            'submenuOptions'=>array('class'=>'subclass'),
            'active'=>($this->id=='manager' && $this->action->id!='changepswd')?true:false,
            'visible'=>false
        ),
        array(
            'label'=>'密码修改',
            'url'=>array('/manager/changepswd'),
            'linkOptions'=>array('target'=>'_blank'),
            'itemOptions'=>array(
                'class'=>'li_changepswd'
            ),
            'items'=>array(
                array('label'=>'子栏目')
            ),
            'active'=>($this->id=='manager' && $this->action->id=='changepswd')?true:false,
            'visible'=>true
        ),
        array(
            'label'=>'登陆',
            'url'=>array('/site/login'),
            'itemOptions'=>array('class'=>'li_login'),
            'visible'=>Yii::app()->user->isGuest
        ),
        array(
            'label'=>'退出 ('.Yii::app()->user->name.')',
            'url'=>array('/site/logout'),
            'itemOptions'=>array('class'=>'li_login'),
            'visible'=>!Yii::app()->user->isGuest
        )
    ),
));

说明:

PHP MySQL 表非主键自增长

2014年11月13日

场景

一个活动表,一个活动记录表,活动记录表要根据活动 ID,记录每个人的活动分数和时间等用户参与信息,其中活动记录表有一个字段是用户的编号,每个活动的记录都要从1开始自增。现在的问题是怎么实现这个自增的效果?

表结构如下:

主要说一下活动记录表 activity_records 的 主要字段结构:

字段 注释
id 主键自增
activity_id 活动ID
user_id 用户 ID
number 活动记录编号

解决方案

MacBook 升级 Yosemite 之后 PHP 环境修复

2014年10月19日

Yosemite 终于发布了,我第一时间升级了。但是没想到 PHP 环境受到影响了,直到现在终于修复好了。 一、修复 Apache Apache 好像是换新版本了,升级完系统之后项目打不开了。之前设置好的虚拟主机都无效了。 首先打开 sudo vim /etc/apache2/httpd.conf  这个文件, 1. 开启虚拟主机功能,去掉下面代码的「#」注释:

#Include /private/etc/apache2/extra/httpd-vhosts.conf

改过的代码如下:

Include /private/etc/apache2/extra/httpd-vhosts.conf

2. 如果想开启伪静态,去掉下面代码的「#」注释:

#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

改过的代码如下:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

3. 如果想使用系统自带的 PHP 版本的话,去掉下面代码的「#」注释:

#LoadModule php5_module libexec/apache2/libphp5.so

改过的代码如下:

LoadModule php5_module libexec/apache2/libphp5.so

  以上操作完了之后记得要重启Apache:

sudo apachectl restart

  二、修复虚拟主机 现在我们虽然能用虚拟主机了,但是好像不能解析 PHP 了,打开 /private/etc/apache2/extra/httpd-vhosts.conf 文件在每一个配置里面添加一行下面的代码就可以了: Require all granted 示例如下:

<Directory "/Users/$USER/Sites/">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Require all granted
</Directory>

记得要重启 Apache:

sudo apachectl restart

三、安装 PHP Mcrypt 扩展 这个花费我很长时间,主要是我本来还想用 brew 安装的,省事,但是还是没效果,最后没办法还是编译安装了。

cd ~/Downloads
wget https://github.com/php/php-src/archive/PHP-5.5.14.zip
unzip PHP-5.5.14.zip
cd php-src-PHP-5.5.14/ext/mcrypt/
/usr/bin/phpize
./configure
make
sudo make install

然后拷贝一份 php.ini 配置文件,重装系统这个文件没了:

sudo cp /etc/php.ini.default /etc/php.ini

然后记得在 php.ini 文件里面添加这个扩展,如下面代码: extension = mcrypt.so   以上操作完之后你的 PHP 环境应该又回来了。:) -—————-update 2014年11月02日—————- Yosemite 自带编译安装之后的 PHP 环境 GD 库不支持 png 和 FreeType ,会导致各种验证码出不来,坑。 一键解决办法如下(重新编译使用 PHP5.6):

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6

  参考文章: Apache, MySQL & PHP on OS X Yosemite How to Manually Build & Install php-mcrypt on Mac OS X Installing and Configuring Apache, PHP and MySQL on OSX 10.10 Yosemite After upgrade, PHP no longer supports PNG operations

Comments

王晓: hi 博主,我用你上述所说的一键安装GD库,代码已经执行,可是半小时了,为什么还停留在这个界面?

王晓: 上图

ForEcho: 刚开始我也很疑惑,等了半天没反应,后来我发现那个包要100多兆,比较大而且这个服务器是放在国外的,条件允许的话,最好翻墙。

baocaixiong: 用brewHome保平安。

alinwei: 大神,在本地搭建hexo 然后,hexo s 可以正常访问,然后推送到github后,也是正常的,但是二级域名一直是404,等了一天还是,不知道问题出现在哪里,希望大神有时间帮看哈。项目地址:https://github.com/missyun/alinwei.github.io 感谢!!

Mac 升级 Yosemite 之后 PHP 环境修复

2014年10月19日

Yosemite 终于发布了,我第一时间升级了。但是没想到 PHP 环境受到影响了,直到现在终于修复好了。

修复 Apache

Apache 好像是换新版本了,升级完系统之后项目打不开了。之前设置好的虚拟主机都无效了。

首先打开 sudo vim /etc/apache2/httpd.conf 这个文件,

开启虚拟主机功能,去掉下面代码的「#」注释:

1
#Include /private/etc/apache2/extra/httpd-vhosts.conf

改过的代码如下:

1
Include /private/etc/apache2/extra/httpd-vhosts.conf

如果想开启伪静态,去掉下面代码的「#」注释:

1
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

改过的代码如下:

1
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

### 如果想使用系统自带的 PHP 版本的话,去掉下面代码的「#」注释:

1
#LoadModule php5_module libexec/apache2/libphp5.so

改过的代码如下:

1
LoadModule php5_module libexec/apache2/libphp5.so

以上操作完了之后记得要重启Apache:

1
sudo apachectl restart

修复虚拟主机

PHP 裁剪数组

2014年09月05日

  • 用 array_splice 可以裁剪,原来的数组会被改变,键值会重组
  • 用 array_slice ,原来的数组不会改变,键值可以不用重组

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
echo '<pre>';
$arrayRaw = array('2' => 'c','3' => 'd', '4' => 'e', '5' => 'f');
echo "0", PHP_EOL;
print_r(array_splice($arrayRaw, 2));
echo "1", PHP_EOL;
print_r($arrayRaw);

$arrayRaw = array('2' => 'c','3' => 'd', '4' => 'e', '5' => 'f');
array_slice($arrayRaw, 0, 2, true);
echo "2", PHP_EOL;
print_r(array_slice($arrayRaw, 0, 2, true));
echo "3", PHP_EOL;
print_r($arrayRaw);
echo '</pre>';