常用公共DNS服务器地址

2014-11-25

一、国外DNS服务器地址:

Google Public DNS (8.8.8.8, 8.8.4.4)

OpenDNS (208.67.222.222, 208.67.220.220)

OpenDNS Family (208.67.222.123, 208.67.220.123)

V2EX DNS (199.91.73.222,178.79.131.110)

Comodo Secure (8.26.56.26, 8.20.247.20)

UltraDNS (156.154.70.1,156.154.71.1)

Norton ConnectSafe (199.85.126.10,199.85.127.10)
二、国内DNS服务器地址:

OneDNS (112.124.47.27)

OpenerDNS(42.120.21.30)

aliDNS (223.5.5.5,223.6.6.6)

114DNS (114.114.114.114,114.114.115.115)

114DNS安全版 (114.114.114.119,114.114.115.119)

114DNS家庭版 (114.114.114.110,114.114.115.110)

使用tar备份某个日期之后的文件

2014-11-06

通常在考虑增量备份时,需要使用tar命令备份某个日期之后的文件,而tar命令的如下参数可以满足这个需求:

-N, –after-date DATE, –newer DATE
例如,

/bin/tar –newer=”2010-11-27″ -cf file.tar dir_to_backup
/bin/tar –newer 2010-11-27 -cf file.tar dir_to_backup
/bin/tar -cf file.tar dir_to_backup –newer=”2010-11-27″
如果希望备份比某一个参考文件更新的文件,则可以使用如下命令:

/bin/tar –newer=”`date -r refFile`” -cf tarFile.tar dir_to_backup
增量备份方法:

#!/bin/sh
# full and incremental backup script
# created 07 February 2000
# Based on a script by Daniel O’Callaghan <danny@freebsd.org>
# and modified by Gerhard Mourani <gmourani@videotron.ca>
# Change the 5 variables below to fit your computer/backup
COMPUTER=deep # name of this computer
DIRECTORIES=”/home” # directoris to backup
BACKUPDIR=/backups # where to store the backups
TIMEDIR=/backups/last-full # where to store time of full backup
TAR=/bin/tar # name and locaction of tar

#You should not have to change anything below here
PATH=/usr/local/bin:/usr/bin:/bin
DOW=`date +%a` # Day of the week e.g. Mon
DOM=`date +%d` # Date of the Month e.g. 27
DM=`date +%d%b` # Date and Month e.g. 27Sep

# On the 1st of the month a permanet full backup is made
# Every Sunday a full backup is made – overwriting last Sundays backup
# The rest of the time an incremental backup is made. Each incremental
# backup overwrites last weeks incremental backup of the same name.
#
# if NEWER = “”, then tar backs up all files in the directories
# otherwise it backs up files newer than the NEWER date. NEWER
# gets it date from the file written every Sunday.

# Monthly full backup
if [ $DOM = “01” ]; then
NEWER=””
$TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DM.tar $DIRECTORIES
fi

# Weekly full backup
if [ $DOW = “Sun” ]; then
NEWER=””
NOW=`date +%d-%b`
# Update full backup date
echo $NOW > $TIMEDIR/$COMPUTER-full-date
$TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES

# Make incremental backup – overwrite last weeks
else
# Get date of last full backup
NEWER=”–newer `cat $TIMEDIR/$COMPUTER-full-date`”
$TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES
fi

LVM磁盘管理

2014-11-03

如何挂载一块从别的机器上取下的做了LVM的硬盘:
1.fdisk -l //查看新增的硬盘是否已经被识别
2.vgscan //扫描LVM卷
3.vgchange -ay
4.lvscan //如果正常则会显示出硬盘的LV状态都是 active
5.mount -t ext3 /dev/VGname/LVname /mnt/lvmdisk/
——————————————————————————————-
如何将一块新硬盘添加到现有的LVM中,以达到扩容目的:
1.fdisk -l //查看新增的硬盘是否已经被识别
2.fdisk /dev/sdb //创建一个新的分区sdb1,并使用t参数标记为8e(即Linux LVM)
>n
>t
>8e
3.pvcreate //建立物理卷
4.vgextend VolGroup00 /dev/sdb1 //将新增的屋里卷加入到卷组中去
5.lvextend -L +800G /dev/VolGroup00/LogVol00 //将新增的80G硬盘的所有空间都加到逻辑卷中去
6.RHEL4: ext2online /dev/VolGroup00/LogVol00
RHEL5: resize2fs -p /dev/VolGroup00/LogVol00
//激活新增的空间
7.df -h //此时便可以看到新增的空间了
——————————————————————————————-
如何删除一个现有的LVM:
1.umount 所有vg0下的lv
2.lvremove /dev/vg0/lv0
3.vgchange -an /dev/vg0 (休眠vg0,-ay是激活)
4.vgremove vg0 //移除vg0
——————————————————————————————-
如何删除一个现有LVM中的物理卷,以取出新增的硬盘:
1.转移数据 pvmove /dev/sdb1 [sdc1] //如果想指定转移的物理卷则在后面输入,默认是其它地方
2.pvreduce vg0 /dev/sdb1 把sdb1从卷组中删除
——————————————————————————————-
一些常用的LVM管理命令:
扩展VG: vgextend vg0(卷组名) /dev/sdb1(PV名)
扩展LV: lvextend -L +10G(空间大小) /dev/vg0/lv0(LV名)
查看信息: vgdisplay /dev/vg0 , lvdisplay /dev/vg0/lv0
数据迁移: pvmove /dev/sdb1 /dev/sdc1
——————————————————————————————-
所有命令列表:
1.extendfs 扩展一个离线文件系统
2.lvchange 改变一个逻辑卷的的属性
3.lvcreate 在卷组中创建一个逻辑卷
4.lvdisplay 显示逻辑卷的信息
5.lvextend 增加分配给逻辑卷的物理区域数
6.lvlnboot 将逻辑卷设为启动,交换或内存映像卷
7.lvmerge 将以前镜像的卷合并成一个逻辑镜像卷
8.lvreduce 减少分配给逻辑卷的物理区域数
9.lvremove 从卷组中删除一个或多个逻辑卷
10.lvrmboot 删除联接到启动,交换或内存映像卷的逻辑卷
11.lvsplit 将镜像的逻辑卷分成两个逻辑卷
12.lvsync 同步在一个或多少失效逻辑卷上的逻辑卷镜像
13.pvchange 改变卷组中的物理卷的属性
14.pvcreate 创建一个可以被卷组使用的物理卷
15.pvdisplay 显示卷组中一个或多个物理卷的信息
16.pvmove 将分配的物理区域从一个物理卷转移鲐其他物理卷
17.vgcfgbackup 保存卷组LVM配置
18.vgcfgrestore 将LVM配置恢复到卷组
19.vgchange 开关卷组的一些状态
20.vgcreate 创建一个卷组
21.vgdisplay 显示卷组信息
22.vgextend 通过添加物理卷扩展一个卷组
23.vgexport 从系统输出一个卷组
24.vgimport 向系统输入一个卷组
25.vgscan 扫描卷组的系统物理卷
26.vgreduce 通过删除一个或多个物理卷减小卷组
27.vgremove 从系统上删除一个或多个卷组的定义
28.vgsync 同步在一个或多个失效卷组上的逻辑镜像

oracle常用命令

2014-11-03

第一章:日志管理

1.forcing log switches
sql>; alter system switch logfile;
2.forcing checkpoints
sql>; alter system checkpoint;
3.adding online redo log groups
sql>; alter database add logfile [group 4]
sql>; (‘/disk3/log4a.rdo’,’/disk4/log4b.rdo’) size 1m;
4.adding online redo log members
sql>; alter database add logfile member
sql>; ‘/disk3/log1b.rdo’ to group 1,
sql>; ‘/disk4/log2b.rdo’ to group 2;
5.changes the name of the online redo logfile
sql>; alter database rename file ‘c:/oracle/oradata/oradb/redo01.log’
sql>; to ‘c:/oracle/oradata/redo01.log';
6.drop online redo log groups
sql>; alter database drop logfile group 3;
7.drop online redo log members
sql>; alter database drop logfile member ‘c:/oracle/oradata/redo01.log';
8.clearing online redo log files
sql>; alter database clear [unarchived] logfile ‘c:/oracle/log2a.rdo';
9.using logminer analyzing redo logfiles
a. in the init.ora specify utl_file_dir = ‘ ‘
b. sql>; execute dbms_logmnr_d.build(‘oradb.ora’,’c:\oracle\oradb\log’);
c. sql>; execute dbms_logmnr_add_logfile(‘c:\oracle\oradata\oradb\redo01.log’,sql>; dbms_logmnr.new);
d. sql>; execute dbms_logmnr.add_logfile(‘c:\oracle\oradata\oradb\redo02.log’,sql>; dbms_logmnr.addfile);
e. sql>; execute dbms_logmnr.start_logmnr(dictfilename=>;’c:\oracle\oradb\log\oradb.ora’);
f. sql>; select * from v$logmnr_contents(v$logmnr_dictionary,v$logmnr_parameters
sql>; v$logmnr_logs);
g. sql>; execute dbms_logmnr.end_logmnr;

第二章:表空间管理

1.create tablespaces
sql>; create tablespace tablespace_name datafile ‘c:\oracle\oradata\file1.dbf’ size 100m,
sql>; ‘c:\oracle\oradata\file2.dbf’ size 100m minimum extent 550k [logging/nologging]
sql>; default storage (initial 500k next 500k maxextents 500 pctinccease 0)
sql>; [online/offline] [permanent/temporary] [extent_management_clause]
2.locally managed tablespace
sql>; create tablespace user_data datafile ‘c:\oracle\oradata\user_data01.dbf’
sql>; size 500m extent management local uniform size 10m;
3.temporary tablespace
sql>; create temporary tablespace temp tempfile ‘c:\oracle\oradata\temp01.dbf’
sql>; size 500m extent management local uniform size 10m;
4.change the storage setting
sql>; alter tablespace app_data minimum extent 2m;
sql>; alter tablespace app_data default storage(initial 2m next 2m maxextents 999);
5.taking tablespace offline or online
sql>; alter tablespace app_data offline;
sql>; alter tablespace app_data online;
6.read_only tablespace
sql>; alter tablespace app_data read only|write;
7.droping tablespace
sql>; drop tablespace app_data including contents;
8.enableing automatic extension of data files
sql>; alter tablespace app_data add datafile ‘c:\oracle\oradata\app_data01.dbf’ size 200m
sql>; autoextend on next 10m maxsize 500m;
9.change the size fo data files manually
sql>; alter database datafile ‘c:\oracle\oradata\app_data.dbf’ resize 200m;
10.Moving data files: alter tablespace
sql>; alter tablespace app_data rename datafile ‘c:\oracle\oradata\app_data.dbf’
sql>; to ‘c:\oracle\app_data.dbf';
11.moving data files:alter database
sql>; alter database rename file ‘c:\oracle\oradata\app_data.dbf’
sql>; to ‘c:\oracle\app_data.dbf';

第三章:表

1.create a table
sql>; create table table_name (column datatype,column datatype]….)
sql>; tablespace tablespace_name [pctfree integer] [pctused integer]
sql>; [initrans integer] [maxtrans integer]
sql>; storage(initial 200k next 200k pctincrease 0 maxextents 50)
sql>; [logging|nologging] [cache|nocache]
2.copy an existing table
sql>; create table table_name [logging|nologging] as subquery
3.create temporary table
sql>; create global temporary table xay_temp as select * from xay;
on commit preserve rows/on commit delete rows
4.pctfree = (average row size – initial row size) *100 /average row size
pctused = 100-pctfree- (average row size*100/available data space)
5.change storage and block utilization parameter
sql>; alter table table_name pctfree=30 pctused=50 storage(next 500k
sql>; minextents 2 maxextents 100);
6.manually allocating extents
sql>; alter table table_name allocate extent(size 500k datafile ‘c:/oracle/data.dbf’);
7.move tablespace
sql>; alter table employee move tablespace users;
8.deallocate of unused space
sql>; alter table table_name deallocate unused [keep integer]
9.truncate a table
sql>; truncate table table_name;
10.drop a table
sql>; drop table table_name [cascade constraints];
11.drop a column
sql>; alter table table_name drop column comments cascade constraints checkpoint 1000;
alter table table_name drop columns continue;
12.mark a column as unused
sql>; alter table table_name set unused column comments cascade constraints;
alter table table_name drop unused columns checkpoint 1000;
alter table orders drop columns continue checkpoint 1000
data_dictionary : dba_unused_col_tabs

第四章:索引

1.creating function-based indexes
sql>; create index summit.item_quantity on summit.item(quantity-quantity_shipped);
2.create a B-tree index
sql>; create [unique] index index_name on table_name(column,.. asc/desc) tablespace
sql>; tablespace_name [pctfree integer] [initrans integer] [maxtrans integer]
sql>; [logging | nologging] [nosort] storage(initial 200k next 200k pctincrease 0
sql>; maxextents 50);
3.pctfree(index)=(maximum number of rows-initial number of rows)*100/maximum number of rows
4.creating reverse key indexes
sql>; create unique index xay_id on xay(a) reverse pctfree 30 storage(initial 200k
sql>; next 200k pctincrease 0 maxextents 50) tablespace indx;
5.create bitmap index
sql>; create bitmap index xay_id on xay(a) pctfree 30 storage( initial 200k next 200k
sql>; pctincrease 0 maxextents 50) tablespace indx;
6.change storage parameter of index
sql>; alter index xay_id storage (next 400k maxextents 100);
7.allocating index space
sql>; alter index xay_id allocate extent(size 200k datafile ‘c:/oracle/index.dbf’);
8.alter index xay_id deallocate unused;

第五章:约束

1.define constraints as immediate or deferred
sql>; alter session set constraint[s] = immediate/deferred/default;
set constraint[s] constraint_name/all immediate/deferred;
2. sql>; drop table table_name cascade constraints
sql>; drop tablespace tablespace_name including contents cascade constraints
3. define constraints while create a table
sql>; create table xay(id number(7) constraint xay_id primary key deferrable
sql>; using index storage(initial 100k next 100k) tablespace indx);
primary key/unique/references table(column)/check
4.enable constraints
sql>; alter table xay enable novalidate constraint xay_id;
5.enable constraints
sql>; alter table xay enable validate constraint xay_id;

第六章:LOAD数据

1.loading data using direct_load insert
sql>; insert /*+append */ into emp nologging
sql>; select * from emp_old;
2.parallel direct-load insert
sql>; alter session enable parallel dml;
sql>; insert /*+parallel(emp,2) */ into emp nologging
sql>; select * from emp_old;
3.using sql*loader
sql>; sqlldr scott/tiger \
sql>; control = ulcase6.ctl \
sql>; log = ulcase6.log direct=true

第七章:reorganizing data

1.using export
$exp scott/tiger tables(dept,emp) file=c:\emp.dmp log=exp.log compress=n direct=y
2.using import
$imp scott/tiger tables(dept,emp) file=emp.dmp log=imp.log ignore=y
3.transporting a tablespace
sql>;alter tablespace sales_ts read only;
$exp sys/.. file=xay.dmp transport_tablespace=y tablespace=sales_ts
triggers=n constraints=n
$copy datafile
$imp sys/.. file=xay.dmp transport_tablespace=y datafiles=(/disk1/sles01.dbf, /disk2/sles02.dbf)
sql>; alter tablespace sales_ts read write;
4.checking transport set
sql>; DBMS_tts.transport_set_check(ts_list =>;’sales_ts’ .., incl_constraints=>;true);
在表transport_set_violations 中查看
sql>; dbms_tts.isselfcontained 为true 是, 表示自包含

第八章: managing password security and resources

1.controlling account lock and password
sql>; alter user juncky identified by oracle account unlock;
2.user_provided password function
sql>; function_name(userid in varchar2(30),password in varchar2(30), old_password in varchar2(30)) return boolean
3.create a profile : password setting
sql>; create profile grace_5 limit failed_login_attempts 3
sql>; password_lock_time unlimited password_life_time 30
sql>;password_reuse_time 30 password_verify_function verify_function
sql>; password_grace_time 5;
4.altering a profile
sql>; alter profile default failed_login_attempts 3
sql>; password_life_time 60 password_grace_time 10;
5.drop a profile
sql>; drop profile grace_5 [cascade];
6.create a profile : resource limit
sql>; create profile developer_prof limit sessions_per_user 2
sql>; cpu_per_session 10000 idle_time 60 connect_time 480;
7. view =>; resource_cost : alter resource cost
dba_Users,dba_profiles
8. enable resource limits
sql>; alter system set resource_limit=true;

第九章:Managing users

1.create a user: database authentication
sql>; create user juncky identified by oracle default tablespace users
sql>; temporary tablespace temp quota 10m on data password expire
sql>; [account lock|unlock] [profile profilename|default];
2.change user quota on tablespace
sql>; alter user juncky quota 0 on users;
3.drop a user
sql>; drop user juncky [cascade];
4. monitor user
view: dba_users , dba_ts_quotas

第十章:managing privileges

1.system privileges: view =>; system_privilege_map ,dba_sys_privs,session_privs
2.grant system privilege
sql>; grant create session,create table to managers;
sql>; grant create session to scott with admin option;
with admin option can grant or revoke privilege from any user or role;
3.sysdba and sysoper privileges:
sysoper: startup,shutdown,alter database open|mount,alter database backup controlfile,
alter tablespace begin/end backup,recover database
alter database archivelog,restricted session
sysdba: sysoper privileges with admin option,create database,recover database until
4.password file members: view:=>; v$pwfile_users
5.O7_dictionary_accessibility =true restriction access to view or tables in other schema
6.revoke system privilege
sql>; revoke create table from karen;
sql>; revoke create session from scott;
7.grant object privilege
sql>; grant execute on dbms_pipe to public;
sql>; grant update(first_name,salary) on employee to karen with grant option;
8.display object privilege : view =>; dba_tab_privs, dba_col_privs
9.revoke object privilege
sql>; revoke execute on dbms_pipe from scott [cascade constraints];
10.audit record view :=>; sys.aud$
11. protecting the audit trail
sql>; audit delete on sys.aud$ by access;
12.statement auditing
sql>; audit user;
13.privilege auditing
sql>; audit select any table by summit by access;
14.schema object auditing
sql>; audit lock on summit.employee by access whenever successful;
15.view audit option : view=>; all_def_audit_opts, dba_stmt_audit_opts, dba_priv_audit_opts, dba_obj_audit_opts
16.view audit result: view=>; dba_audit_trail, dba_audit_exists, dba_audit_object, dba_audit_session, dba_audit_statement

第十一章: manager role

1.create roles
sql>; create role sales_clerk;
sql>; create role hr_clerk identified by bonus;
sql>; create role hr_manager identified externally;
2.modify role
sql>; alter role sales_clerk identified by commission;
sql>; alter role hr_clerk identified externally;
sql>; alter role hr_manager not identified;
3.assigning roles
sql>; grant sales_clerk to scott;
sql>; grant hr_clerk to hr_manager;
sql>; grant hr_manager to scott with admin option;
4.establish default role
sql>; alter user scott default role hr_clerk,sales_clerk;
sql>; alter user scott default role all;
sql>; alter user scott default role all except hr_clerk;
sql>; alter user scott default role none;
5.enable and disable roles
sql>; set role hr_clerk;
sql>; set role sales_clerk identified by commission;
sql>; set role all except sales_clerk;
sql>; set role none;
6.remove role from user
sql>; revoke sales_clerk from scott;
sql>; revoke hr_manager from public;
7.remove role
sql>; drop role hr_manager;
8.display role information
view: =>;dba_roles, dba_role_privs, role_role_privs, dba_sys_privs, role_sys_privs, role_tab_privs, session_roles

第十二章: BACKUP and RECOVERY

1. v$sga, v$instance, v$process, v$bgprocess, v$database, v$datafile, v$sgastat
2. Rman need set dbwr_IO_slaves or backup_tape_IO_slaves and large_pool_size
3. Monitoring Parallel Rollback
>; v$fast_start_servers , v$fast_start_transactions
4.perform a closed database backup (noarchivelog)
>; shutdown immediate
>; cp files /backup/
>; startup
5.restore to a different location
>; connect system/manager as sysdba
>; startup mount
>; alter database rename file ‘/disk1/../user.dbf’ to ‘/disk2/../user.dbf';
>; alter database open;
6.recover syntax
–recover a mounted database
>;recover database;
>;recover datafile ‘/disk1/data/df2.dbf';
>;alter database recover database;
–recover an opened database
>;recover tablespace user_data;
>;recover datafile 2;
>;alter database recover datafile 2;
7.how to apply redo log files automatically
>;set autorecovery on
>;recover automatic datafile 4;
8.complete recovery:
–method 1(mounted databae)
>;copy c:\backup\user.dbf c:\oradata\user.dbf
>;startup mount
>;recover datafile ‘c:\oradata\user.dbf;
>;alter database open;
–method 2(opened database,initially opened,not system or rollback datafile)
>;copy c:\backup\user.dbf c:\oradata\user.dbf (alter tablespace offline)
>;recover datafile ‘c:\oradata\user.dbf’ or
>;recover tablespace user_data;
>;alter database datafile ‘c:\oradata\user.dbf’ online or
>;alter tablespace user_data online;
–method 3(opened database,initially closed not system or rollback datafile)
>;startup mount
>;alter database datafile ‘c:\oradata\user.dbf’ offline;
>;alter database open
>;copy c:\backup\user.dbf d:\oradata\user.dbf
>;alter database rename file ‘c:\oradata\user.dbf’ to ‘d:\oradata\user.dbf’
>;recover datafile ‘e:\oradata\user.dbf’ or recover tablespace user_data;
>;alter tablespace user_data online;
–method 4(loss of data file with no backup and have all archive log)
>;alter tablespace user_data offline immediate;
>;alter database create datafile ‘d:\oradata\user.dbf’ as ‘c:\oradata\user.dbf”
>;recover tablespace user_data;
>;alter tablespace user_data online
5.perform an open database backup
>; alter tablespace user_data begin backup;
>; copy files /backup/
>; alter database datafile ‘/c:/../data.dbf’ end backup;
>; alter system switch logfile;
6.backup a control file
>; alter database backup controlfile to ‘control1.bkp';
>; alter database backup controlfile to trace;
7.recovery (noarchivelog mode)
>; shutdown abort
>; cp files
>; startup
8.recovery of file in backup mode
>;alter database datafile 2 end backup;
9.clearing redo log file
>;alter database clear unarchived logfile group 1;
>;alter database clear unarchived logfile group 1 unrecoverable datafile;
10.redo log recovery
>;alter database add logfile group 3 ‘c:\oradata\redo03.log’ size 1000k;
>;alter database drop logfile group 1;
>;alter database open;
or >;cp c:\oradata\redo02.log’ c:\oradata\redo01.log
>;alter database clear logfile ‘c:\oradata\log01.log';

批量转换文件编码

2014-11-03

批量转换文件编码gb2312到utf3

for i in `find ./ -type f -name *` ; do iconv $i -f gb2312 -t utf8 -o ${i}.tmp && mv ${i}.tmp $i ; done

批量转换txt文件编码gbk到utf8

for i in `find ./ -type f -name “*.htm”` ; do iconv $i -f gbk -t utf8 -o ${i}.tmp && mv ${i}.tmp $i ; done

CentOS下识别ethX对应的物理网卡

2014-10-31

ethtool -p eth0

One or more LEDs on the specific physical ethernet port are blinking now

linux只更新安全补丁

2014-10-29

1、安装yum插件:
yum install yum-security

2、检查安全更新:
yum –security check-update

3、只安装安全更新:
yum update –security

4、检查特定软件有无安全更新:
yum list-security XXX

5、列出更新的详细信息:
yum info-security XXX

惊呆了 购美国房产不保险的九大吃亏事儿

2014-10-08

最近网上流传着一个故事,“李女士卖掉她在北京的一套房子,筹得300多万人民币,在美国休斯敦买入六套房,她的算盘是:每月每套房子的租金是400多美金,不仅可以把北京的房子租回来,还能月赚1万人民币。”这个故事是国信美投总裁陆鹤壬在接受采访时讲的,该公司专门从事海外房产投资,他甚至进一步评论到,“在美国买房投资,除去房产税等各项费用,收益率可以达到8%,加之租售比比较高,六丶七年就可能收回成本;相比之下,在北京投资一套房产收回成本或许要花上100年。”

在美国投资房地产的利润真有这么高吗?这个故事有多大的可信度?美国房地产收回成本的年限究竟是多久?作为一个在美国生活近二十年的华裔丶女儿继承多套商业公寓的信托管理人,加上夫家经营着建房公司和商业公寓群,让我来详细分析一下这种投资的可能性。(以下计算是根据法律规定做的保守估算,不是严格的法律和会计分析。)
其次,在美国买房投资,真的六丶七年就可以收回成本吗?按照陆鹤壬介绍的算法,当地每月的租金大概是房屋价值的1%左右,6套房子的购房款可在8年内收回成本。但这种算法的缺陷一眼就能看出来,他把租金当成纯收入,没有考虑美国高昂的养房费用——房产税丶个人收入税丶房屋保险丶房屋维修费丶房屋空置和赖租成本……按美国人的说法是现在买房能赚钱已经是很难得的了,下面我就逐条列出各项可能的花销。

1丶房产税
美国的房产税每年都要支付。休斯敦房产年税率较低的是老社区,约2.6%,新社区大多在2.9%—3.1%,个别新区的税率甚至可能高达3.2%。我取中线2.9%计算,每个月的房产税合(300万*2.9%/12)= 0.725万元。

2丶管理费
由于投资人在中国,就需要专业的物业管理公司来打理出租的相关事项,收费至少是租金总数的10%。

3丶房屋保险
美国房子必须买保险,否则自然灾害丶火灾发生时所有的财产便会化为乌有。休斯敦地区飓风发生概率较高,因此房屋年保险比较贵,自住的房子大约是房价值的0.7%左右,商业出租的房子保险更高,就按1%算吧,如此每个月的房屋保险至少需要支付(300万*1%/12)= 0.25万元。

4丶房屋修缮和维护
美国养房贵,主要是因为人工昂贵,这和中国不同。比如,独立房的房顶丶外墙都要定期检查,时间长了要翻新;房子每年要高压水清洗;院子要剪草,花园游泳池要打理,每月还要喷洒防虫害喷剂;地毯得常洗,视磨损情况及时更新;管道漏水堵塞要找水管工,这是特别贵的,还有数不完的其他情况。若是联栋房丶公寓房,房内的消费自己承担,房外的维修虽不用花钱请人做,但要交物业费,每个月一丶两百美元。还有,中央空调丶冰箱丶洗碗机丶洗衣机等电器都是业主要提供的,坏了就得更新。总之,保守估算李女士的这六套房子平均每个月的修缮费要200美元。

5丶房屋空置以及赖租等成本
租房是有空置期的,我家商用公寓好的时候每套每年平均空置一个月,租得不好时就难说了。另外还有赖房客的成本,美国租房一般都要查租客的信用记录,但也可能百密一疏,遇到赖租的,只有花钱打官司才能把房客“请出去”,不仅要花时间花精力,还可能拖到输掉半年的租金。因此,考虑到房屋的空置期和赖租等成本,保守地看,每个月收入的折扣大约在0.25万元。

6丶律师丶公共会计师等费用
保证投资合法,这个暂且提一下,因为下面一项中还会提到。

7丶个人收入所得税
按照美国税法,不居住在美国的非美国公民在美国投资房地产的收入不受中美两国合约(treaty)豁免,收入需要交税,若房地产是唯一的投资而不挂靠其他商业投资时,全部租金都要交税,税率30%。好在休斯敦没有州税,美国大多数的州都有(不过休斯敦的销售税很高,房子要卖的时候这个税就要缴纳了)。当然这部分税收可以通过聘请专业税法律师减免部分,但税法律师也不便宜,如我家夫君的小时费用是250美元,“不交钱给山姆大叔就得交给律师”,美国这句俚语的意思就在这里。我已经看到有中国投资者逃避这部分税收被国税局发现的报道,要记住美国房地产交易时所有信息都会上报国税局,不缴税要不了多久就会被发现,到时不仅要用美国地产收入来抵债,严重的还会触犯法律。
写到这里,除去各种消费,每个月收进来的3万租金大约只剩下15%了,即0.445万。很显然,按每个月0.5万的净剩要收回资金至少需要50年,而且这还是对各项消费非常保守的估算,额外花费的陷阱还有。

8丶增值税
在持有房屋时若房屋增值了,不需要支付增值税,但整个地产的升值会导致政府对持有房屋的估价升高,地产税会水涨船高。一旦房子出手,增值的部分就要交税了,美国居民第一套自住屋的增值不需要缴税,以后的都要交;外国人投资的租住屋,即便是第一套也不免增值税。很显然,增值税虽不体现在每个月的收入或成本上,但会影响套现,继而影响收回成本的时间和投资回报率。

9丶继承和遗产税
这是绝少中国投资者会想到的问题,我们最近就帮助了一个自称“走投无路”的中国家庭处理了一件相关的事情。小L的父母在美国买了一套五十多万美元的房子作为度假屋,小L上学后由妈妈陪他在美国读书。不料想在小L十几岁时突发惨剧,父母双亡,小L成了这套房子的唯一继承者,但由于小L是未成年人,再加上父母没有留下美国能承认的正式遗嘱,这套房产要经过美国法庭的“遗嘱检验”(probate)放到小L的信托(trust)里,但小L是常住美国的非公民,他接受遗产时只有25万美元是免税的(美国公民是五百万美元免税,不常住美国的外国人是6万美元),剩下的近30多万美元需要交遗产税,税率几乎达50%。小L的中国监护人听说后难以置信,辗转找到我和丫爸询问是否被敲诈了,丫爸解释说这是法律,现在没有办法了,若在买房时做了财产计划(Estate Planning)也许可以省一些税,但彻底绕过这项法律是不可能的,除非把继承者变成美国公民。

虽然在美国地产投资比较保险,但从不是一个能够短期回报的领域,也因此美国人更愿意投资股市或其他。在美国做地产投资的人,多数是利用给美国公民的低息贷款丶税收优惠政策等,做长线规模投资,同时用地产的消费来抵消其他领域投资的收入,比如我夫家当初做商业公寓楼投资是为了减免建房公司获利而需要缴纳的税收。以上这些优惠,中国投资者是享受不到的。相对中国,美国经济发展比较均衡,买房投资属性并不高,房产的回报率更不像国内一些机构宣传的那么乐观,房产出售变现难度也远比国内大,中国投资者若按国内的投资思维和惯性,肯定会吃亏。来自中国外国专家局专家丶离岸资产配置专家丶房产投资财商教育传播者Victor Liu (刘磊)先生这样说:“ 纵观美国国民的财富汇聚历史, 占到国民平均金融资产第一位的不是房地产,而是股票;特别是美国国民通过401K的股票和基金投资组合来实现了在美国的富裕养老生活,而且股票是个人财富中占比最高的金融资产(高达43%)。因此,美国人的创富历史是以股票市场作为主战场的;而作为房地产投资市场,基于以上谈及的诸多费用涉及,更多的美国人是把房产作为传承工具来看待的(自住房),而不是”钱多人傻“的中国土豪作为短期炒作和快速获利的产品。因此,选择对的市场,应用对的工具,才能成就离岸资产的持续累计;否则,很可能是乘兴而来,却败兴而归。“

开发人员必须知道的8个Linux命令

2014-04-11

注意:以下的命令都有很多扩展的文档,博客里提出的知识我最常用的命令,用法。如果你不了解Linux命令,这个帖子会给你一点指导。

我们以一些文本举例。假设我们有2个文件,里面有订单关于第三方的放置地点和发送回应。

order.out.log
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99

order.in.log
8:22:20 111, Order Complete
8:23:50 112, Order sent to fulfillment
8:24:20 113, Refund sent to processing

cat

–追加文件并在标准输出上打印

jfields$ cat order.out.log
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99

正如他的名字所说的,你可以串联多个文件

jfields$ cat order.*
8:22:20 111, Order Complete
8:23:50 112, Order sent to fulfillment
8:24:20 113, Refund sent to processing
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99

看到效果了,但我们可以提高其可读性。

sort

–对文本文件进行行排序,这里使用排序是不错的选择

jfields$ cat order.* | sort
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:22:20 111, Order Complete
8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99
8:23:50 112, Order sent to fulfillment
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:24:20 113, Refund sent to processing

上面显示了我们想要看到的效果,但是这只是小文件。而真实的数据是很大的,有些是你不想要的数据怎么办?

grep

grep, egrep, fgrep–进行匹配输出

假设我只关心给PofEAA的订单,使用grep就可以做到。

jfields$ cat order.* | sort | grep Patterns
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99

假设订单113里面发生了一些问题,你想看到关于113的所有订单信息。没错,grep能帮你。

jfields$ cat order.* | sort | grep “:\d\d 113, ”
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:24:20 113, Refund sent to processing

你会发现在表达式里面不止有113,这是因为113也可能出现在价格里面,或者产品里面,这样做是严格限制其查找结果。

现在我们已经发出退货订单的信息,我们每日也要给会计发送销售统计。他们要求每个PofEAA的项目,但他们只关心数量和价格,我们要把
不需要的部分删减掉。

cut

–从文件的每一行删除一部分

还是要先使用grep。

jfields$ cat order.* | sort | grep Patterns
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99
jfields$ cat order.* | sort | grep Patterns | cut -d”,” -f2,5
1, 39.99
-1, 39.99

我们已经减少了数据,让会计一目了然。

假设会计想要把订单ID做为参考,把它放在每一行的最后,并用单引号。

sed

–流编辑器。用来处理文本转换。

下面的示例演示怎样使用它来做到我们想要的数据。

jfields$ cat order.* | sort | grep Patterns \
>| sed s/”[0-9\:]* \([0-9]*\)\, \(.*\)”/”\2, ‘\1′”/
1, Patterns of Enterprise Architecture, Kindle edition, 39.99, ’111′
-1, Patterns of Enterprise Architecture, Kindle edition, 39.99, ’113′
lmp-jfields01:~ jfields$ cat order.* | sort | grep Patterns \
>| sed s/”[0-9\:]* \([0-9]*\)\, \(.*\)”/”\2, ‘\1′”/ | cut -d”,” -f1,4,5
1, 39.99, ’111′
-1, 39.99, ’113′

这是一个正则表达式,但没什么复杂的。做以下事情
1.删除时间
2.捕获订单号
3.删除逗号和订单号后面的空格
4.捕获此行的其余部分

一旦我们看到了我们需要的数据,可以使用\1&\2让输出数据符合我们的格式要求。

uniq

–去除重复行

下面的示例演示如何grep的唯一相关的交易,削减不必要的信息,并获得计数。

jfields$ cat order.out.log | grep “\(Kindle\|Hardcover\)” | cut -d”,” -f3 | sort | uniq -c
1 Joy of Clojure
2 Patterns of Enterprise Architecture

jfields$ cat order.out.log | grep “\(Kindle\|Hardcover\)” | cut -d”,” -f3 | sort | uniq
Joy of Clojure
Patterns of Enterprise Architecture

find

–在目录里找文件

假设这2个文本文件存在于我们的主目录,我们不必知道他们的全名。

jfields$ find /Users -name “order*”
Users/jfields/order.in.log
Users/jfields/order.out.log

当然还有很多选项,但99%的情况下我这么做。

less

–在一个文件里面向前向后移动

让我们回到最简单的cat|sort的例子。你可以向前搜索使用”/”,向后使用”?”,2者都可以使用正则表达式。

jfields$ cat order* | sort | less

你可以试试/113.*,这将突出显示订单113。你可以使用?.*112,也将突出显示订单112,你可以用’q’退出。

寓言:丛林法则下的市场与民主

2014-02-25

丛林里讲实力,统治力最强的狮子成为了实际的王者,狮子让一只豹子管理10只狼,并给他们分发能够捕获食物的领地管理权。豹子得到权力之后,把领地平均分成了11份,自己要了一份,其他给了10只狼。
这10只狼都感觉自己分的少,合起伙来跟豹子唱对台戏。虽然一只狼打不过豹子,但10只狼豹子却没法应付了,狼群从来都是讲团结和集体利益的,群狼齐心,豹子的管理陷入了巨大的危机。
  豹子灰溜溜的找狮子辞职。狮子说,你搞大锅饭平均主义的计划经济,当然不行,看我搞民主下的市场经济怎样运作。
  狮子把森林分成分成了11份领地,大小不一,自己先挑了最大的一份,然后傲然对其他狼说:给你们民主的权利,每一只狼都有充分的狼权,你们自己讨论这些领地的占有权怎么分。
  为了争夺到大点的领地,狼群沸腾了,恶狠狠的互相攻击,全然不顾自己连平均的那点领地都没拿到。
  豹子钦佩的问狮子,这是什么办法? 狮子微微一笑,听说过人类市场经济的绩效工资吗?……
  第二天
  在与时俱进的情况下狮子宏观调控重新划分领地,领地依然分成11块,自己却挑走了2块,然后傲然对其他狼说:发扬民主,你们自己讨论这些领地的占有权怎么分。
  10只狼看了看9块领地,飞快的抢夺起来,为了占有一块领地狠狠的咬曾经的同伴,直到最后留下一只弱小的狼伤痕累累的没有占到领地,因此没有食物倒在地上奄奄一息。
  豹子钦佩的问狮子,这是什么办法?
  狮子微微一笑,听说过市场经济的末位淘汰法吗?……
  第三天
  狼群不满原有的划分要求改革,狮子再次重新划分领地,把领地分成2块,自己却挑走了1块,然后傲然对其他狼说:你们对于分配有充分的民主投票权,你们自己讨论领地应该怎么分。
  群狼争夺起来,最后一只最强壮的狼打败所有狼,成为狼王,大摇大摆的开始管理他的领地。这只狼吃饱以后才允许其它狼再来吃,这些狼都成了它的小弟,恭敬的服从它的管理,按照顺序来享用它的残羹。
  从此狮子只需管理一只狼王,只需分配给它一定的领地,其它的再不操心。豹子钦佩的问狮子,这是什么办法?狮子微微一笑,听说过民主选举下的竞争上岗吗?这就是代议制政府的精髓,政府总统是代理人啊!……
  第四天
在狼群普遍对于狼王不满的情况下,狮子按照狼群的民主要求废除狼王,狮子废除狼王的统治当然要占有狼王的领地,把所有可以成为领地的丛林全占了,狮子把这个叫做打破铁饭碗和废除狼王独裁制。
虽然狼王被废除了,但其他狼一点领地也没有得到,狮子然后让狼去开发新的领地资源或者给狮子打工。狼群不答应狮子就让狼饿着,狼群的民主混乱不堪。狮子告诉豹子这是有特色的市场经济初级阶段。
第五天
由于狼群在之前只讲狼权而不讲狼群的集体合作,狼王被干掉群龙无首再也组织不起来了,个体无法对抗狮子,饥饿下于是只好不关心领地怎样分的民主,完全的政治冷感了,他们都乖乖的在狮子的领地上给狮子打工了。
豹子钦佩的问狮子,这是什么办法? 狮子微微一笑,听说过市场经济劳动力自由选择和市场的自我调节吗?市场经济下大家都是不关心领地怎样分的政治,只关心自己挣钱的……
第六天
因为之前的竞争,狼群虽然已经无力再战了,但狼群依然不满,主要矛头又逐步指向了狮子,狮子当然不愿意当靶子,就制定民主规则,让驴和象竞选总经理,让狼群去选择,狮子退到了幕后,制定规则确保自己的利益和统治地位,狮子也轻松了,狮子取得了主动放弃权利的美誉。
最后一天
对于狮子建立的驴与象的竞选机制,狼群可以对它们发泄不满,搞他们的拉链门,而驴或者象面对群狼却要把最大利益分配给狮子和豹子等,分配利益时常被攻击,把驴或者象都吓得躲进了笼子,狮子得意的告诉豹子,这就是人类社会最伟大的成就,成功的把统治者关进了笼子。
从此,狮子统治下的民主社会和市场经济建设大功告成。


关注

每发布一篇新博文的同时向您的邮箱发送备份。