iphone开发图片尺寸

OS X MySQL-python Reason: image not found

$ sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

/usr/local/mysql/lib/libmysqlclient.18.dylib 你的mysql lib

sublime text 2 mac 总是在新窗口中打开文件问题

Preferences -> Settings – Default

// OS X only: When files are opened from finder, or by dragging onto the
// dock icon, this controls if a new window is created or not.
"open_files_in_new_window": false,

在mac osx RIV模式中使用tcpdump、wireshark抓取分析iphone数据包

一、Remote Virtual Interface
  在iOS5中新引入了“远程虚拟接口(remote virtual interface ,RVI)“的特性,可以在Mac中建立一个虚拟网络接口来作为iOS设备的网络栈,这样所有经过iOS设备的流量都会经过此虚拟接口,此虚拟接口代替了iOS设备本身的协议栈,但并没有将网络流量中转到Mac本身的网络连接上,这样所有网络连接都是iOS设备本身的,Mac电脑本身连不联网或者连接的网络类型都没有关系,而iOS设备本身可以为任意网络类型,2G/3G/WiFi等。在Mac电脑上使用任意抓包工具抓取RVI接口上的数据包就可以看到iOS设备上的所有网络数据。

二.使用方法
通过USB口将iPhone连接到Mac上。
使用Xcode的organizer工具获取到iPhone的UDID(identifier后的一长串就是)
使用rvictl命令创建RVI接口(remote virtual interface),使用iPhone的UDID作为参数。
$ rvictl -s
如果想捕获多个设备的网络包,可以使用上述命令创建多个设备的RVI,传递每个iOS设备的UDID作为参数即可。
RVI虚拟接口的命名规则为rvi0,rvi1,rvi2,…,可使用ifconfig命令查看
$ ifconfig rvi0
rvi0: flags=3005 mtu 0
使用完之后需要将创建的虚拟接口移除
$ rvictl -x

三、使用tcpdump抓包
tcpdump -i rvi0 -w capture.cap -v -vv -c 100 -X -e

四、使用wireshark打开capture.cap就可以进行分析了

mac osx使用brew安装指定版本subversion

先查看有哪些版本

cd /usr/local
brew versions subversion
1.8.4    git checkout ce669eb Library/Formula/subversion.rb
1.8.3    git checkout 9b438ce Library/Formula/subversion.rb
1.8.0    git checkout f56b641 Library/Formula/subversion.rb
1.8.1    git checkout 55577bb Library/Formula/subversion.rb
1.7.10   git checkout 0060dc3 Library/Formula/subversion.rb
1.7.9    git checkout b0e6223 Library/Formula/subversion.rb
1.7.8    git checkout f7a42d2 Library/Formula/subversion.rb
1.7.7    git checkout a6dcc41 Library/Formula/subversion.rb
1.7.6    git checkout 6b8d25f Library/Formula/subversion.rb
1.7.5    git checkout 5d5cd70 Library/Formula/subversion.rb
1.7.4    git checkout dc4245c Library/Formula/subversion.rb
1.7.3    git checkout eb97154 Library/Formula/subversion.rb
1.7.2    git checkout d89bf83 Library/Formula/subversion.rb
1.6.17   git checkout 6e2d550 Library/Formula/subversion.rb
1.6.16   git checkout 83ed494 Library/Formula/subversion.rb

然后我们要安装1.7.10版本,执行

git checkout 0060dc3 Library/Formula/subversion.rb
brew install --universal --java subversion
A universal build was requested, but neon was already built for a single arch.
You may need to `brew rm neon` first.
A universal build was requested, but sqlite was already built for a single arch.
You may need to `brew rm sqlite` first.
brew rm sqlite neon
Uninstalling /usr/local/Cellar/sqlite/3.7.10...
Uninstalling /usr/local/Cellar/neon/0.29.6...
brew install --universal neon sqlite

然后在进行安装

brew install --universal --java subversion

完成后执行

sudo mkdir -p /Library/Java/Extensions
sudo ln -s /usr/local/lib/libsvnjavahl-1.dylib /Library/Java/Extensions/libsvnjavahl-1.dylib

如果出现Error: No available formula for serf
发现github上的serf.rb不存在了
找到一个历史版本https://raw.github.com/mxcl/homebrew/f689d5232ce824fe6dd4b64df729abfc487a6558/Library/Formula/serf.rb
放入到Library/Formula中就可以安装serf了

如果出现Error: Download failed: http://www.apache.org/dyn/closer.cgi?path=subversion/subversion-1.7.10.tar.bz2
老版本的subversion下载地址都失效了,动手修改subversion.rb对应的下载地址和sha1,superbin修改为Superenv.bin

mac apache checking whether the C compiler works... no

cd /Applications/Xcode.app/Contents/Developer/Toolchains
sudo ln -s XcodeDefault.xctoolchain OSX10.8.xctoolchain

使用git和pathogen管理你的vim插件配置

1、安装pathogen
github: https://github.com/tpope/vim-pathogen

mkdir -p ~/.vim/autoload ~/.vim/bundle; \
curl -Sso ~/.vim/autoload/pathogen.vim \

https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vim

在.vimrc中添加

execute pathogen#infect()
syntax on
filetype plugin indent on

2、移动.vimrc文件到.vim目录:

mv .vimrc ~/.vim/vimrc

3、建立连接

ln -s ~/.vim/vimrc ~/.vimrc

4、初始化git仓库,提交

cd ~/.vim
git init
git add .
git commit -m "Initial commit"

5、安装插件

cd ~/.vim
mkdir ~/.vim/bundle
git submodule add http://github.com/tpope/vim-fugitive.git bundle/fugitive
git add .
git commit -m "Install Fugitive.vim bundle as a submodule."
git push -u origin master

6、在新机器上安装

cd ~
git clone https://github.com/yseasony/xvim.git ~/.vim
ln -s ~/.vim/vimrc ~/.vimrc
ln -s ~/.vim/gvimrc ~/.gvimrc
cd ~/.vim
git submodule init
git submodule update

7、更新插件

cd ~/.vim/bundle/fugitive
git pull origin master

更新所有插件

git submodule foreach git pull origin master

实用的Linux find命令示例

除了在一个目录结构下查找文件这种基本的操作,你还可以用find命令实现一些实用的操作,使你的命令行之旅更加简易。

本文将介绍15种无论是于新手还是老鸟都非常有用的Linux find命令。

首先,在你的home目录下面创建下面的空文件,来测试下面的find命令示例。

# vim create_sample_files.sh
touch MybashProgram.sh
touch mycprogram.c
touch MyCProgram.c
touch Program.c
mkdir backup
cd backup
touch MybashProgram.sh
touch mycprogram.c
touch MyCProgram.c
touch Program.c
# chmod +x create_sample_files.sh
# ./create_sample_files.sh
# ls -R
.:
backup MybashProgram.sh MyCProgram.c
create_sample_files.sh mycprogram.c Program.c
./backup:
MybashProgram.sh mycprogram.c MyCProgram.c Program.c

1. 用文件名查找文件

这是find命令的一个基本用法。下面的例子展示了用MyCProgram.c作为查找名在当前目录及其子目录中查找文件的方法。

# find -name "MyCProgram.c"
./backup/MyCProgram.c
./MyCProgram.c

2.用文件名查找文件,忽略大小写

这是find命令的一个基本用法。下面的例子展示了用MyCProgram.c作为查找名在当前目录及其子目录中查找文件的方法,忽略了大小写。

# find -iname "MyCProgram.c"
./mycprogram.c
./backup/mycprogram.c
./backup/MyCProgram.c
./MyCProgram.c

3. 使用mindepth和maxdepth限定搜索指定目录的深度

在root目录及其子目录下查找passwd文件。

# find / -name passwd
./usr/share/doc/nss_ldap-253/pam.d/passwd
./usr/bin/passwd
./etc/pam.d/passwd
./etc/passwd

在root目录及其1层深的子目录中查找passwd. (例如root — level 1, and one sub-directory — level 2)

# find -maxdepth 2 -name passwd
./etc/passwd

在root目录下及其最大两层深度的子目录中查找passwd文件. (例如 root — level 1, and two sub-directories — level 2 and 3 )

# find / -maxdepth 3 -name passwd
./usr/bin/passwd
./etc/pam.d/passwd
./etc/passwd

在第二层子目录和第四层子目录之间查找passwd文件。

# find -mindepth 3 -maxdepth 5 -name passwd
./usr/bin/passwd
./etc/pam.d/passwd

4. 在find命令查找到的文件上执行命令

下面的例子展示了find命令来计算所有不区分大小写的文件名为“MyCProgram.c”的文件的MD5验证和。{}将会被当前文件名取代。

find -iname "MyCProgram.c" -exec md5sum {} \;
d41d8cd98f00b204e9800998ecf8427e ./mycprogram.c
d41d8cd98f00b204e9800998ecf8427e ./backup/mycprogram.c
d41d8cd98f00b204e9800998ecf8427e ./backup/MyCProgram.c
d41d8cd98f00b204e9800998ecf8427e ./MyCProgram.c

5. 相反匹配

显示所有的名字不是MyCProgram.c的文件或者目录。由于maxdepth是1,所以只会显示当前目录下的文件和目录。

find -maxdepth 1 -not -iname "MyCProgram.c"
.
./MybashProgram.sh
./create_sample_files.sh
./backup
./Program.c

6. 使用inode编号查找文件

任何一个文件都有一个独一无二的inode编号,借此我们可以区分文件。创建两个名字相似的文件,例如一个有空格结尾,一个没有。

touch "test-file-name"
# touch "test-file-name "
[Note: There is a space at the end]
# ls -1 test*
test-file-name
test-file-name

从ls的输出不能区分哪个文件有空格结尾。使用选项-i,可以看到文件的inode编号,借此可以区分这两个文件。

ls -i1 test*
16187429 test-file-name
16187430 test-file-name

你可以如下面所示在find命令中指定inode编号。在此,find命令用inode编号重命名了一个文件。

find -inum 16187430 -exec mv {} new-test-file-name \;

# ls -i1 *test*
16187430 new-test-file-name
16187429 test-file-name

你可以在你想对那些像上面一样的糟糕命名的文件做某些操作时使用这一技术。例如,名为file?.txt的文件名字中有一个特殊字符。若你想执行“rm file?.txt”,下面所示的所有三个文件都会被删除。所以,采用下面的步骤来删除”file?.txt”文件。

ls
file1.txt file2.txt file?.txt

找到每一个文件的inode编号。

ls -i1
804178 file1.txt
804179 file2.txt
804180 file?.txt

如下所示:?使用inode编号来删除那些具有特殊符号的文件名。

find -inum 804180 -exec rm {} \;
# ls
file1.txt file2.txt
[Note: The file with name "file?.txt" is now removed]

7. 根据文件权限查找文件

下面的操作时合理的:

找到具有指定权限的文件
忽略其他权限位,检查是否和指定权限匹配
根据给定的八进制/符号表达的权限搜索
此例中,假设目录包含以下文件。注意这些文件的权限不同。

ls -l
total 0
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read
---------- 1 root root 0 2009-02-19 20:31 no_for_all
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read

找到具有组读权限的文件。使用下面的命令来找到当前目录下对同组用户具有读权限的文件,忽略该文件的其他权限。

find . -perm -g=r -type f -exec ls -l {} \;
-rw-r--r-- 1 root root 0 2009-02-19 20:30 ./everybody_read
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 ./all_for_all
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read
-rw-r----- 1 root root 0 2009-02-19 20:27 ./others_can_also_read

找到对组用户具有只读权限的文件。

find . -perm g=r -type f -exec ls -l {} \;
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read

找到对组用户具有只读权限的文件(使用八进制权限形式)。

find . -perm 040 -type f -exec ls -l {} \;
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read

8. 找到home目录及子目录下所有的空文件(0字节文件)

下面命令的输出文件绝大多数都是锁定文件盒其他程序创建的place hoders

find ~ -empty

只列出你home目录里的空文件。

find . -maxdepth 1 -empty

只列出当年目录下的非隐藏空文件。

find . -maxdepth 1 -empty -not -name ".*"

9. 查找5个最大的文件

下面的命令列出当前目录及子目录下的5个最大的文件。这会需要一点时间,取决于命令需要处理的文件数量。

find . -type f -exec ls -s {} \; | sort -n -r | head -5

10. 查找5个最小的文件

方法同查找5个最大的文件类似,区别只是sort的顺序是降序。

find . -type f -exec ls -s {} \; | sort -n | head -5

上面的命令中,很可能你看到的只是空文件(0字节文件)。如此,你可以使用下面的命令列出最小的文件,而不是0字节文件。

find . -not -empty -type f -exec ls -s {} \; | sort -n | head -5

11. 使用-type查找指定文件类型的文件

只查找socket文件

find . -type s

查找所有的目录

find . -type d

查找所有的一般文件

find . -type f

查找所有的隐藏文件

find . -type f -name ".*"

查找所有的隐藏目录

find -type d -name ".*"

12. 通过和其他文件比较修改时间查找文件

显示在指定文件之后做出修改的文件。下面的find命令将显示所有的在ordinary_file之后创建修改的文件。

ls -lrt
total 0
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all
---------- 1 root root 0 2009-02-19 20:31 no_for_all

# find -newer ordinary_file
.
./everybody_read
./all_for_all
./no_for_all

13. 通过文件大小查找文件

使用-size选项可以通过文件大小查找文件。

查找比指定文件大的文件

find ~ -size +100M

查找比指定文件小的文件

find ~ -size -100M

查找符合给定大小的文件

find ~ -size 100M

注意: – 指比给定尺寸小,+ 指比给定尺寸大。没有符号代表和给定尺寸完全一样大。

14. 给常用find操作取别名

若你发现有些东西很有用,你可以给他取别名。并且在任何你希望的地方执行。

常用的删除a.out文件。

alias rmao="find . -iname a.out -exec rm {} \;"
# rmao

删除c程序产生的core文件。

alias rmc="find . -iname core -exec rm {} \;"
# rmc

15. 用find命令删除大型打包文件

下面的命令删除大于100M的*.zip文件。

find / -type f -name *.zip -size +100M -exec rm -i {} \;"

用别名rm100m删除所有大雨100M的*.tar文件。使用同样的思想可以创建rm1g,rm2g,rm5g的一类别名来删除所有大于1G,2G,5G的文件。

alias rm100m="find / -type f -name *.tar -size +100M -exec rm -i {} \;"
# alias rm1g="find / -type f -name *.tar -size +1G -exec rm -i {} \;"
# alias rm2g="find / -type f -name *.tar -size +2G -exec rm -i {} \;"
# alias rm5g="find / -type f -name *.tar -size +5G -exec rm -i {} \;"

# rm100m
# rm1g
# rm2g
# rm5g

多svn 同步 svnsync

1、svnsync init
初始化,建立目标库和源库之间的同步关系
svnsync init 目标库URL 源库URL

2、svnsync sync
真正的同步
svnsync sync 目标库URL 源库URL

在目标库中的hooks中创建pre-revprop-change

#!/bin/sh
exit 0

chmod +x pre-revprop-change

linode centos6.2 iptables Setting chains to policy ACCEPT: security raw nat[FAILED]filter

今天刚买了一个linode玩,在启动iptables时,出现了Setting chains to policy ACCEPT: security raw nat[FAILED]filter
google一搜找到了解决办法

vi /etc/init.d/iptables 找到

for i in $tables; do
        echo -n "$i "
        case "$i" in
            raw)
                $IPTABLES -t raw -P PREROUTING $policy \
                    && $IPTABLES -t raw -P OUTPUT $policy \
                    || let ret+=1
                ;;

加入以下内容到“case "$i" in”下面:

 security)
        $IPTABLES -t filter -P INPUT $policy \
            && $IPTABLES -t filter -P OUTPUT $policy \
            && $IPTABLES -t filter -P FORWARD $policy \
            || let ret+=1
        ;;

结果

    for i in $tables; do
        echo -n "$i "
        case "$i" in
            security)
                $IPTABLES -t filter -P INPUT $policy \
                    && $IPTABLES -t filter -P OUTPUT $policy \
                    && $IPTABLES -t filter -P FORWARD $policy \
                    || let ret+=1
                ;;
            raw)
                $IPTABLES -t raw -P PREROUTING $policy \
                    && $IPTABLES -t raw -P OUTPUT $policy \
                    || let ret+=1
                ;;

保存后,重启则可
service iptables restart

return top