2015年3月

CentOS 更改yum源(换源)

过去在ubuntu里折腾过换源,当然是可视化的,在CentOS里也少不了这一步,这次,我们用命令行了。

这里我们更换为163的源:
[1] 首先备份/etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

[2] 进入yum源配置文件所在文件夹

[root@localhost yum.repos.d]# cd /etc/yum.repos.d/

[3] 下载163的yum源配置文件,放入/etc/yum.repos.d/(操作前请做好相应备份)

[root@localhost yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

[4] 运行yum makecache生成缓存

[root@localhost yum.repos.d]# yum makecache

[5] 更新系统

[root@localhost yum.repos.d]# yum -y update

如果还没搞定,可以尝试:

yum clean all && yum clean metadata && yum clean dbcache && yum makecache && yum update

参考:
CentOS更改yum源与更新系统

Linux tar详解

-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

下面的参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

- 阅读剩余部分 -

CentOS 安装Python-pip

首先检查是否安装make:

rpm -qa|grep make
automake-1.11.1-4.el6.noarch
make-3.81-20.el6.x86_64
yum -y install gcc automake autoconf libtool make

然后一步步来吧:

yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel
wget http://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
tar xf Python-2.7.6.tar.xz
cd Python-2.7.6
./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall

最后安装pip

wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
python2.7 ez_setup.py
easy_install-2.7 pip

搞定=w=
参考:
在centos6中安装python2.7和pip
Centos 6.4 安装Python 2.7 python-pip

jQuery 获取元素位置的两个方法

offset():
获取匹配元素在当前视口的相对偏移。
返回的对象包含两个整形属性:top 和 left。此方法只对可见元素有效。
position():
获取匹配元素相对父元素的偏移。
返回的对象包含两个整形属性:top 和 left。为精确计算结果,请在补白、边框和填充属性上使用像素单位。此方法只对可见元素有效。

well,方便计算偏差和定位有木有!

使用起来:$(element).offset().top,like that

PHP 使用foreach赋值的正确姿势

过去在使用foreach时明显都是拿来输出,所以说并没有什么感觉,这次需要写一个date函数:

    function getDateArray($dateArr, $key) {
        foreach ($dateArr as &$value) {
            $value[$key] = date('Y-m-d H:i:s', $value[$key]);
//            echo $value[$key];
        }
        
        return $dateArr;
    }

如果我们使用$dateArr as $value,我们会发现在foreach外,其实$dateArr还是这点值,于是乎,可以确定,foreach只是把值传给了value,而不是引用,加上&让他传引用,完事=w=

Javascript告诉你,什么叫同步,什么叫异步

最近终于忍不住在公司里都在讲同步异步的时候自己跟个文盲一样听不懂了!然后怒查:软件编程中,什么是同步?什么是异步?,一天后……恩又忘了。

但自从这次做了项目被坑了两次之后,终于记住什么叫异步了QvQ,在上面那篇文章的一串字中先节选出我觉得最好理解的部分:

同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。

放在javascript里,故事是这样的:
首先呢,我铛铛铛的运行ajax,然后指望着ajax complete之后能传出值给后续一系列语句进行判断,然后万万没想到啊!他没等执行完,就蹬蹬蹬跑去执行后面的句子了= =!!

解决也不算难,使用callback回调,或者说后来小新告诉我$.ajax里有一个async,详情:http://api.jquery.com/jquery.ajax/,可以控制同步异步。

我默默的就去用callback啦~T^T发誓不再被坑。

PHP PDO详解攻略

在这里,有一篇名为php-使用-pdo-存取資料庫一存取步驟與常用功能介紹,感觉比大陆那些大网站们写的好多啦(* ̄︶ ̄)y y,1=^_^)y很好懂呢。

官方手册系列传送门

基本上去年在学PHP的时候也写过一篇,PHP 数据库抽象层PDO的使用

以上基本上是所有的参考文章,我们把PDO分为这样几步吧,这次我也是这么按照步骤做下来的:

  • 连接数据库
  • 编写SQL语句
  • 准备
  • 绑定相关值
  • 执行
  • (如果是查询)获取

- 阅读剩余部分 -

CSS 再来说说置于底部的footer

早在去年我们就研究过了关于footer如何写的话题:CSS 对底部应该做的处理

在这次做Microblog的时候,由于背景是通过body实现的,如果html,body设定了100%,背景就不能完全覆盖了,为此纠结了好久,不过最后还是solved了,但我觉得想到的固定footer,可以变化参照物来实现,既然body/container都不行,那参照物变成html嘛,于是给了html一个position,footer使用absolute定位到底部,get.

当然,最后的标准实现还是同那篇文章,不同的地方在于:

body {
    background: url(../img/background.jpg) no-repeat;
    background-size: cover;
    background-attachment: fixed;
    font-family: "Helvetica Neue", Helvetica, Arial, 'Microsoft Yahei', sans-serif;
}

我们这里通过background-attachment来固定背景=w=这样就不会受到body height始终100%的限制啦~

jQuery 遍历获得的json数组

我们抛给PHP一串数组,然后用json_encode()返回成json格式:

<?php
    $arr = Array(Array('id' => '1000', 'content'=>'Hello World', 'time' => '2015-2-27 14:23:20'), Array('id' => '1001', 'content'=>'今天天气不错', 'time' => '2015-2-27 18:20:21'));
    echo json_encode($arr);

?>

得到:

[{"id":"1000","content":"Hello World","time":"2015-2-27 14:23:20"},{"id":"1001","content":"\u4eca\u5929\u5929\u6c14\u4e0d\u9519","time":"2015-2-27 18:20:21"}]

于是乎,很蠢的我就不知道怎么遍历这货,其实也不难:

var array = $.parseJSON(data);
var i, message;
$.each(array, function(i, message) {
//    self.addNew(message.id, message.content, message.time, false);
});

只要使用each就好啦~。