转自:http://blog.csdn.net/mapboo/article/details/49536297

CSDN博主Mapboo原创,感谢博主!

==============================

前言:

纵观国内的广告平台,比如多盟,万普,百度,腾讯,或者别的一些广告平台,真是应接不暇,但是具体接入那就自己判断了,经过一番折腾,最终还是选择了谷歌平台,理应是稳定,可靠,安全,收入颇高,但是登录网络有点问题,应该大家都懂吧,这里就不再赘述了,各自想办法吧;

准备工作:

1,首先你是Android开发者,或者至少会点Java编程基础;

2,熟悉使用Android Studio(以下简称:AS),即官方Android应用开发工具;

3,注册了http://www.google.cn/admob/ 应用,并且有个banner_ad_unit_id吧;

4,待加入横幅广告条的app;

5,可参考官方接入指南:docs/admob/android/quick-start" target="_blank">https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start

开发过程:

1,创建或打开AS 工程,本示例是新建工程;

2,打开Android SDK Manager安装Google Repository;

3,关联我们的广告SDK,这里有两种方式:

A  点击Project Structure 直接选取,如下图:

com.google.android.gms:play-services:7.8.0;

B 打开build-gradle 加入一行代码,如下图:

compile 'com.google.android.gms:play-services:6.+'

4,程序会开始自动编译,然后打开AndroidManifest.xml 文件,添加如下代码:

[java] view plain copy

print?

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3.     package="com.mapboo.adviewdemo" >
  4.    <span style="color:#ff0000;"> <uses-permission android:name="android.permission.INTERNET" />
  5.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/></span>
  6.     <application
  7.         android:allowBackup="true"
  8.         android:icon="@mipmap/ic_launcher"
  9.         android:label="@string/app_name"
  10.         android:theme="@style/AppTheme" >
  11.        <span style="color:#ff0000;"> <meta-data android:name="com.google.android.gms.version"
  12.             android:value="@integer/google_play_services_version" /></span>
  13.         <activity
  14.             android:name=".MainActivity"
  15.             android:label="@string/app_name" >
  16.             <intent-filter>
  17.                 <action android:name="android.intent.action.MAIN" />
  18.                 <category android:name="android.intent.category.LAUNCHER" />
  19.             </intent-filter>
  20.         </activity>
  21.        <span style="color:#ff0000;"> <activity
  22.             android:name="com.google.android.gms.ads.AdActivity"
  23.             android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
  24.             android:theme="@android:style/Theme.Translucent" /></span>
  25.     </application>
  26. </manifest>

 

5,打开activity_main.xml 文件,输入如下代码:

[java] view plain copy

print?

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     xmlns:ads="http://schemas.android.com/apk/res-auto"
  4.     android:layout_width="match_parent"
  5.     android:layout_height="match_parent"
  6.     android:paddingBottom="@dimen/activity_vertical_margin"
  7.     android:paddingLeft="@dimen/activity_horizontal_margin"
  8.     android:paddingRight="@dimen/activity_horizontal_margin"
  9.     android:paddingTop="@dimen/activity_vertical_margin"
  10.     tools:context=".MainActivity"
  11.     android:gravity="center_vertical">
  12.     <TextView
  13.         android:layout_width="match_parent"
  14.         android:layout_height="wrap_content"
  15.         android:text="@string/demoName"
  16.         android:gravity="center"
  17.         android:textSize="30dp"
  18.         android:layout_marginTop="150dp"
  19.         />
  20.     <com.google.android.gms.ads.AdView
  21.         android:id="@+id/adView_bottom"
  22.         android:layout_width="match_parent"
  23.         android:layout_height="wrap_content"
  24.         android:layout_alignParentBottom="true"
  25.         android:layout_centerHorizontal="true"
  26.         android:layout_gravity="bottom"
  27.         ads:adSize="BANNER"
  28.         ads:adUnitId="@string/banner_ad_unit_id" />
  29. </RelativeLayout>

 

[java] view plain copy

print?

  1. <resources>
  2.     <string name="app_name">AdViewDemo</string>
  3.     <string name="demoName">谷歌Admob广告条示例</string>
  4.     <string name="banner_ad_unit_id">ca-app-pub-8514769117499822/6386262194</string>
  5. </resources>

 

6,打开MainActivity文件,输入如下代码:

[java] view plain copy

print?

  1. package com.mapboo.adviewdemo;
  2. import android.support.v7.app.ActionBarActivity;
  3. import android.os.Bundle;
  4. import android.util.Log;
  5. import android.view.Menu;
  6. import android.view.MenuItem;
  7. import com.google.android.gms.ads.AdListener;
  8. import com.google.android.gms.ads.AdRequest;
  9. import com.google.android.gms.ads.AdView;
  10. public class MainActivity extends ActionBarActivity {
  11.     @Override
  12.     protected void onCreate(Bundle savedInstanceState) {
  13.         super.onCreate(savedInstanceState);
  14.         setContentView(R.layout.activity_main);
  15.         /**
  16.          * 创建广告条对象
  17.          */
  18.         AdView mAdView = (AdView) findViewById(R.id.adView_bottom);
  19.         AdRequest adRequest = new AdRequest.Builder().build();
  20.         /**
  21.          * 创建一个监听,比如判断用户是不是已经点击了广告条,以此来给用户增加积分等操作;
  22.          */
  23.         AdListener listener = new AdListener() {
  24.             @Override
  25.             public void onAdClosed() {
  26.                 super.onAdClosed();
  27.                 Log.i("TAG""onAdClosed");
  28.             }
  29.             @Override
  30.             public void onAdFailedToLoad(int errorCode) {
  31.                 super.onAdFailedToLoad(errorCode);
  32.                 Log.i("TAG""onAdFailedToLoad");
  33.             }
  34.             @Override
  35.             public void onAdLeftApplication() {
  36.                 super.onAdLeftApplication();
  37.                 Log.i("TAG""onAdLeftApplication");
  38.             }
  39.             @Override
  40.             public void onAdLoaded() {
  41.                 super.onAdLoaded();
  42.                 Log.i("TAG""onAdLoaded");
  43.             }
  44.             @Override
  45.             public void onAdOpened() {
  46.                 super.onAdOpened();
  47.                 Log.i("TAG""onAdOpened");
  48.             }
  49.         };
  50.         /**
  51.          * 设置监听
  52.          */
  53.         mAdView.setAdListener(listener);
  54.         /**
  55.          * 开始载入广告条
  56.          */
  57.         mAdView.loadAd(adRequest);
  58.     }
  59.     /**
  60.      *
  61.      官方示例:https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start
  62.      
  63.      分享:安卓发布平台 http://blog.csdn.net/mapboo/article/details/49531043
  64.      应用汇:http://www.appchina.com/
  65.      安智市场:http://www.anzhi.com/
  66.      华为市场:http://appstore.huawei.com/
  67.      百度市场:http://app.baidu.com/pass/center
  68.      蒲公英:http://www.pgyer.com
  69.      N多网 :http://www.nduoa.com/developer
  70.      豌豆荚:http://developer.wandoujia.com/
  71.      360:http://dev.360.cn
  72.      QQ:http://op.open.qq.com
  73.      FIR:http://fir.im
  74.      Android中国开发者 交流QQ群:361871827 欢迎加入一起讨论技术...
  75.      */
  76. }

 

编译运行:

运行代码,就会出现Admob广告条,只要替换自己的banner_ad_unit_id就能开始赚钱了;

效果图:

本实例源代码下载地址:http://pan.baidu.com/s/1pJ3UEcr

Android中国开发者 QQ群:361871827 欢迎一起讨论技术..

http://npm.taobao.org/

淘宝 NPM 镜像

这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

  • 当前 registry.npm.taobao.org 是从 registry.npmjs.org 进行全量同步的.
  • 当前 npm.taobao.org 运行版本是: cnpmjs.org@2.0.0-beta3
  • 本系统运行在 Node.js@v0.11.14 上.
  • nodejs.org/dist 镜像: npm.taobao.org/dist
  • phantomjs downloads 镜像: phantomjs mirror
  • Node.js 文档镜像: docs/api/index.html">Node.js Document
113,488 个模块 615,221 个模块版本 7 次删除
22,867 次本日下载 474,895 次本周下载 1,792,093 次本月下载
68,299 次昨日下载 488,804 次上周下载 2,211,639 次上月下载

同步状态

This registry will sync all packages from official registry.

上次同步完成时间: Fri Nov 28 2014 13:55:10 GMT+0800 (中国标准时间)

Apache的Mod_rewrite学习(五)

今天主要列出一些例子。由于有些例子是针对特殊路径或特别情况的,列出供大家在思路上参考。因为它们就是些例子。

目标 重写设置 说明
规范化URL RewriteRule ^/~([^/>+)/?(.*) /u/$1/$2 [R] 将/~user重写为/u/user的形式
RewriteRule ^/([uge])/([^/>+)$ /$1/$2/ [R] 将/u/user末尾漏掉的/补上
规范化HostName RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC] 域名不合格
RewriteCond %{HTTP_HOST} !^$ 不空
RewriteCond %{SERVER_PORT} !^80$ 不是80端口
RewriteRule ^/(.*) http://fully.qualified.domain.name:%{SERVER_PORT}/$1 [L,R] 重写
RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://fully.qualified.domain.name/$1 [L,R]
URL根目录转移 RewriteEngine on
RewriteRule ^/$ /e/www/ [R] 从/移到/e/www/
末尾目录补斜线 RewriteEngine on
(目录范围内) RewriteBase /~quux/
RewriteRule ^foo$ foo/ [R] /~quux/foo是一个目录,补/
RewriteEngine on
RewriteBase /~quux/
RewriteCond %{REQUEST_FILENAME} -d 如果请文件名是个目录
RewriteRule ^(.+[^/>)$ $1/ [R] URL末尾不是斜线时补上
Web集群 RewriteEngine on
RewriteMap user-to-host txt:/path/to/map.user-to-host 用户-服务器映射
RewriteMap group-to-host txt:/path/to/map.group-to-host 组-服务器映射
RewriteMap entity-to-host txt:/path/to/map.entity-to-host 实体-服务器映射
RewriteRule ^/u/([^/>+)/?(.*) http://${user-to-host:$1|server0}/u/$1/$2 用户均衡
RewriteRule ^/g/([^/>+)/?(.*) http://${group-to-host:$1|server0}/g/$1/$2 组均衡
RewriteRule ^/e/([^/>+)/?(.*) http://${entity-to-host:$1|server0}/e/$1/$2 实体均衡
RewriteRule ^/([uge])/([^/>+)/?$ /$1/$2/.www/
RewriteRule ^/([uge])/([^/>+)/([^.]+.+) /$1/$2/.www/$3\
URL根目录搬迁 RewriteEngine on
RewriteRule ^/~(.+) http://newserver/~$1 [R,L] 到其它服务器
所用户名首字母分 RewriteEngine on
RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/.www$3 内一层括号为$2
NCSA imagemap移 RewriteEngine on
植为mod_imap RewriteRule ^/cgi-bin/imagemap(.*) $1 [PT]
多目录查找资源 RewriteEngine on
# first try to find it in custom/...
RewriteCond /your/docroot/dir1/%{REQUEST_FILENAME} -f
RewriteRule ^(.+) /your/docroot/dir1/$1 [L]
# second try to find it in pub/...
RewriteCond /your/docroot/dir2/%{REQUEST_FILENAME} -f
RewriteRule ^(.+) /your/docroot/dir2/$1 [L]
# else go on for other Alias or ScriptAlias directives,
RewriteRule ^(.+) - [PT]
据URL设置环境变量 RewriteEngine on
RewriteRule ^(.*)/S=([^/>+)/(.*) $1/$3 [E=STATUS:$2]
虚拟主机 RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.[^.]+\.host\.com$ 基于用户名
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^www\.([^.]+)\.host\.com(.*) /home/$1$2
内外人有别 RewriteEngine on
RewriteCond %{REMOTE_HOST} !^.+\.ourdomain\.com$ 基于远程主机
RewriteRule ^(/~.+) http://www.somewhere.com/$1 [R,L]
错误重定向 RewriteEngine on
RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f 不是regular文件
RewriteRule ^(.+) http://webserverB.dom/$1
程序处理特殊协议 RewriteRule ^xredirect:(.+) /path/to/nph-xredirect.cgi/$1 \ Xredirect协议
[T=application/x-httpd-cgi,L]
最近镜像下载 RewriteEngine on
RewriteMap multiplex txt:/path/to/map.cxan 顶级域名与最近ftp服务器映射
RewriteRule ^/CxAN/(.*) %{REMOTE_HOST}::$1 [C]
RewriteRule ^.+\.([a-zA-Z]+)::(.*)$ ${multiplex:$1|ftp.default.dom}$2 [R,L] 据顶级域名不同提供不同的FTP服务器
基于时间重写 RewriteEngine on
RewriteCond %{TIME_HOUR}%{TIME_MIN} >0700
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900
RewriteRule ^foo\.html$ foo.day.html 白天为早晚7点间
RewriteRule ^foo\.html$ foo.night.html 其余为夜间
向前兼容扩展名 RewriteEngine on
RewriteBase /~quux/
# parse out basename, but remember the fact
RewriteRule ^(.*)\.html$ $1 [C,E=WasHTML:yes]
# rewrite to document.phtml if exists
RewriteCond %{REQUEST_FILENAME}.phtml -f 如果存在$1.phtml则重写
RewriteRule ^(.*)$ $1.phtml [S=1]
# else reverse the previous basename cutout
RewriteCond %{ENV:WasHTML} ^yes$ 如果不存在$1.phtml,则保持不变
RewriteRule ^(.*)$ $1.html
文件改名(目录级) RewriteEngine on 内部重写
RewriteBase /~quux/
RewriteRule ^foo\.html$ bar.html
RewriteEngine on 重定向由客户端再次提交
RewriteBase /~quux/
RewriteRule ^foo\.html$ bar.html [R]
据浏览器类型重写 RewriteCond %{HTTP_USER_AGENT} ^Mozilla/3.*
RewriteRule ^foo\.html$ foo.NS.html [L]
RewriteCond %{HTTP_USER_AGENT} ^Lynx/.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[12].*
RewriteRule ^foo\.html$ foo.20.html [L]
RewriteRule ^foo\.html$ foo.32.html [L]
动态镜像远程资源 RewriteEngine on
RewriteBase /~quux/
RewriteRule ^hotsheet/(.*)$ http://www.tstimpreso.com/hotsheet/$1 [P] 利用了代理模块
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^usa-news\.html$ http://www.quux-corp.com/news/index.html [P]
反向动态镜像 RewriteEngine on
RewriteCond /mirror/of/remotesite/$1 -U
RewriteRule ^http://www\.remotesite\.com/(.*)$ /mirror/of/remotesite/$1
负载均衡 RewriteEngine on 利用代理实现round-robin效果
RewriteMap lb prg:/path/to/lb.pl
RewriteRule ^/(.+)$ ${lb:$1} [P,L]
#!/path/to/perl
$| = 1;
$name = "www"; # the hostname base
$first = 1; # the first server (not 0 here, because 0 is myself)
$last = 5; # the last server in the round-robin
$domain = "foo.dom"; # the domainname
$cnt = 0;
while (<STDIN>) {
$cnt = (($cnt+1) % ($last+1-$first));
$server = sprintf("%s%d.%s", $name, $cnt+$first, $domain);
print "http://$server/$_";
}
##EOF##
静态页面变脚本 RewriteEngine on
RewriteBase /~quux/
RewriteRule ^foo\.html$ foo.cgi [T=application/x-httpd-cgi]
阻击机器人 RewriteCond %{HTTP_USER_AGENT} ^NameOfBadRobot.*
RewriteCond %{REMOTE_ADDR} ^123\.45\.67\.[8-9]$
RewriteRule ^/~quux/foo/arc/.+ - [F]
阻止盗连你的图片 RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC] 自己的连接可不能被阻止
RewriteRule .*\.gif$ - [F]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !.*/foo-with-gif\.html$
RewriteRule ^inlined-in-foo\.gif$ - [F]
拒绝某些主机访问 RewriteEngine on
RewriteMap hosts-deny txt:/path/to/hosts.deny
RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR]
RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND
RewriteRule ^/.* - [F]
用户授权 RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend1@client1.quux-corp\.com$
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend2@client2.quux-corp\.com$
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend3@client3.quux-corp\.com$
RewriteRule ^/~quux/only-for-friends/ - [F]
外部重写程序模板 RewriteEngine on
RewriteMap quux-map prg:/path/to/map.quux.pl
RewriteRule ^/~quux/(.*)$ /~quux/${quux-map:$1}
#!/path/to/perl
$| = 1;
while (<>) {
s|^foo/|bar/|;
print $_;
}
搜索引擎友好 RewriteRule ^/products$ /content.php
RewriteRule ^/products/([0-9]+)$ /content.php?id=$1
RewriteRule ^/products/([0-9]+),([ad]*),([0-9]{0,3}),([0-9]*),([0-9]*$) /marso/content.php?id=$1&sort=$2&order=$3&start=$4

参考文献:
URL Rewriting Guide
http://httpd.apache.org/docs/misc/rewriteguide.html

mod_rewrite: A Beginner's Guide to URL Rewriting
http://www.sitepoint.com/article/910

ORA-12705: invalid or unknown NLS parameter value specified

一,解压缩Oracle9204的安装文件
1. Oracle 9iR2 (9.2.0.4)
(1) 简化过程(以oracle登录,释放安装文件,使用更少的磁盘空间,速度更快)
在安装LINUX时最好分一个区/orasetup,这样一来即使系统坏了,也只是重装系统,而无须重新拷贝数据库安装文件.
zcat ship_9204_linux_disk1.cpio.gz | cpio –idmv &&
zcat ship_9204_linux_disk2.cpio.gz | cpio –idmv &&
zcat ship_9204_linux_disk3.cpio.gz | cpio –idmv
(2) 解包和解压过程中,自动创建了3个包含安装文件的目录:
Disk1
Disk2
Disk3
之后就可以安装Oracle9iR2了。
二,安装前的检查和准备工作;# rpm -qa | grep ****
1, 查看这些开发包是否已安装;
安装需要的软件包和补丁包:
p4198954_21_linux.zip 在运行 runInstaller 之前打.
p3238244_9204_LINUX.zip 修复agent错误的补丁.
p2617419_210_GENERIC.zip 打3238244补丁所需要的补丁.
compat-db-4.1.25-9
compat-gcc-32-3.2.3-47.3
compat-gcc-32-c++-3.2.3-47.3
compat-oracle-rhel4-1.0-3
compat-libcwait-2.0-1
compat-libgcc-296-2.96-132.7.2
compat-libstdc++-296-2.96-132.7.2
compat-libstdc++-33-3.2.3-47.3
gcc-3.4.3-9.EL4
gcc-c++-3.4.3-9.EL4
gnome-libs-1.4.1.2.90-44
gnome-libs-devel-1.4.1.2.90-44
libaio-devel-0.3.102-1
libaio-0.3.102-1
make-3.80-5
openmotif21-2.1.30-11
xorg-x11-deprecated-libs-devel-6.8.1-23.EL
xorg-x11-deprecated-libs-6.8.1-23.EL
其中compat-oracle-rhel4和compat-libcwait可以在如下网站:
http://oss.oracle.com/projects/compa.../files/RedHat/
# rpm -qa | grep ‘compat’

http://www.chinaunix.net

 

目的:

 

安装配置一个proftpd,达到以下要求

1  不允许匿名访问。

2  开放一个帐号,只有在upload目录有上传权限,可以续传,不能改名和删除。

 

操作:

0  切换到root帐户

[code:1:de92f96787]   su root //输入root的密码。

[/code:1:de92f96787]

1  下载proftpd

地址:www.proftpd.org。这里我们下载了1.2.9版本

[code:1:de92f96787]    wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.9.tar.gz

[/code:1:de92f96787]

2  安装proftpd

切换到下载目录,假设为/tmp/proftpd,然后

[code:1:de92f96787]    tar zxvf proftpd-1.2.9.tar.gz //解压

    cd proftpd-1.2.9

    ./configure --prefix=/var/proftpd --sysconfdir=/etc  //设置安装目录/var/proftpd,配置文件目录/etc

    make

    make install

[/code:1:de92f96787]

3  新建ftp专用帐号

就是上面目的中提到的那个专用帐号,这里以skate/skate(u/p)为例。

[code:1:de92f96787]    groupadd skate

    useradd  skate -g skate -d /var/ftp  -s /sbin/nologin //设置/var/ftp目录为ftp的目录

    passwd skate //设置skate用户的密码

   mkdir /var/ftp/upload

    chown skate.skate /var/ftp/upload  //设置upload目录skate用户可写

[/code:1:de92f96787]

4  设置proftpd

proftpd的配置文件就一个,就是/etc/proftpd.conf

[code:1:de92f96787]    vi /etc/proftpd.conf //打开proftpd.conf

[/code:1:de92f96787]

[code:1:de92f96787]

####具体配置如下######

ServerName                      "Test ftp server..."

ServerType                      standalone

DefaultServer                   on

#端口

Port                            21

Umask                           022

#最大线程数

MaxInstances                    30

User                            skate

Group                           skate