关于自定义 UITableViewCell

自定义UITableViewCell的方法有很多 发现一些人都会遇到自己定义的cell里面图片错乱的问题 这个问题往往是因为没有实现prepareForReuse这个方法导致的.

UITableViewCell在向下滚动时复用, 得用的cell就是滑出去的那些, 而滑出去的cell里显示的信息就在这里出现了 解决的方法就是在UITableViewCell的子类里实现perpareForReuse方法, 把内容清空掉

比如

- (void)prepareForReuse
{
    [super prepareForReuse];
    self.myImageView.image = nil;
}

运算符优先级

http://en.cppreference.com/w/cpp/language/operator_precedence

Precedence Operator Description Associativity
1 :: Scope resolution Left-to-right
2 ++   -- Suffix/postfix increment and decrement
() Function call
[] Array subscripting
. Element selection by reference
−> Element selection through pointer
3 ++   -- Prefix increment and decrement Right-to-left
+    Unary plus and minus
!   ~ Logical NOT and bitwise NOT
(type) Type cast
* Indirection (dereference)
& Address-of
sizeof Size-of
newnew[] Dynamic memory allocation
deletedelete[] Dynamic memory deallocation
4 .*   ->* Pointer to member Left-to-right
5 *   /   % Multiplication, division, and remainder
6 +    Addition and subtraction
7 <<   >> Bitwise left shift and right shift
8 <   <= For relational operators < and ≤ respectively
>   >= For relational operators > and ≥ respectively
9 ==   != For relational = and ≠ respectively
10 & Bitwise AND
11 ^ Bitwise XOR (exclusive or)
12 | Bitwise OR (inclusive or)
13 && Logical AND
14 || Logical OR
15 ?: Ternary conditional Right-to-left
= Direct assignment (provided by default for C++ classes)
+=   −= Assignment by sum and difference
*=   /=   %= Assignment by product, quotient, and remainder
<<=   >>= Assignment by bitwise left shift and right shift
&=   ^=   |= Assignment by bitwise AND, XOR, and OR
16 throw Throw operator (for exceptions)
17 , Comma Left-to-right

Debian 网卡ip设置

配置文件位于

/etc/network/interface

如果安装时选择了DHCP分配, 配置文件是这个样子

auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

在iface下可以修改网卡的设置

iface eth0 inet static
address 192.168.1.111
netmask 255.255.255.0
gateway 192.168.1.1

改好后可通过以下命令重新加载eth0的配置

ifdown eth0 && ifup eth0

gitolite 与 smart http

gitolite 默认采用ssh公私钥的方式来验证用户,通过配合 apache 可以使用 用户名/密码 的方式来进行用户验证

在debian下需要安装apache2 和 apache2-suexec 这两个包
# apt-get install apache2 apache2-suexec
假定gitolite安装在/opt/gitolite中

安装完毕后在.gitolite.rc的定部添加
$ENV{PATH} .= ":/opt/gitolite/bin";

之后通过以下命令来查看 apache 的doc_root在哪里
/usr/lib/apache2/suexec -V
以下假定 AP_DOC_ROOT=’/var/www’


install -d -m 0755 -o git -g git /var/www/bin
install -d -m 0755 -o www-data -g www-data /var/www/git

之后在/var/www/bin中创建一个名为gitolite-suexec-wrapper.sh的脚本,权限为0700
内容如下

#!/bin/bash
#
# Suexec wrapper for gitolite-shell
#

export GIT_PROJECT_ROOT="/home/git/repositories"
export GITOLITE_HTTP_HOME="/opt/gitolite"

exec ${GITOLITE_HTTP_HOME}/gitolite-source/src/gitolite-shell

http://sitaramc.github.com/gitolite/http.html

之后需要配置 apache 来创建一个virtual host
在 /etc/apache2/sites-avaliable/ 中创建一个名为 git 的配置文件内容如下

<VirtualHost *:80>
    ServerName git.example.com
    ServerAlias git
    ServerAdmin you@example.com
    DocumentRoot /home/git/repositories
    <Directory /var/www/git>
        Options None
        AllowOverride none
        Order allow,deny
        Allow from all
    </Directory>
        SuexecUserGroup git git
        ScriptAlias /git/ /var/www/bin/gitolite-suexec-wrapper.sh/
        ScriptAlias /gitmob/ /var/www/bin/gitolite-suexec-wrapper.sh/
    <Location /git>
    AuthType Basic
    AuthName "Git Access"
    Require valid-user
    AuthUserFile /etc/apache2/git.passwd
</Location> </VirtualHost>

最后一步很重要需要在gitolite-admin/conf/gitolite.conf中把想要通过http可以访问的库加上R = daemon这个上权限

完成后在/etc/apache2/git.passwd中使用htpasswd来创建user/password

如果没有什么问题的话gitolite+smart http就搭建好了
用户可以通过 git clone http://user:pass@server/repo_name.git 来访问代码库了

权限的配置文件中的只需用户名与 git.passwd 中的用户名相匹配就可以了,并且要加上R = daemon

debian gitolite 配置

折腾了一天终于把gitolite搞定了, debian源里的gitolite没有安装成功。最后从github下载源码安装,几步就搞定了。

su git
cd
~$ git clone git://github.com/sitaramc/gitolite
~$ mkdir ~/bin
~$ gitolite/install -ln

这里使用默认选项安装到了~/bin中
需要确认在PATH环境变量中有~/bin如是没有可以通过以下方式添加

echo "PATH=$PATH:~/bin" >> ~/.bashrc

配置好后需要在客户端生成一个ssh key上传到服务器作为来验证管理员的身份,这里不能和用作登陆的ssh key相同, 以admin.pub为例
首先在客户端生成一对key并上传到服务器上

ssh-keygen -t rsa -G .ssh/admin
scp .ssh/admin.pub git@server.hostname.or.ip:

在服务器上初始化gitolite

gitolite setup -pk admin.pub

成功后会在$HOME中创建一个`repositories’

如果失败的话可以试试把$HOME下的与.gitolite相关的配置文件删掉重试下

可以在客户端的配置.ssh/config来使用admin而不是默认的id_rs

HOST repo.server
USER git
IdentityFile ~/.ssh/admin

之后检出gitolite的管理配置,这里不能带有repositories,直接hostsname:responame就可以了

git clone git@server:gitolite-admin.git

好了,现在可以通过修改配置文件来直接创建版本库了

gitolite的wiki: http://sitaramc.github.com/gitolite/master-toc.html