1 安装git
yum -y install git
2 建立git用户
useradd -s /usr/bin/git-shell git
3 创建证书登录,方便提交版本
cd /home/git/
mkdir .ssh
vi .ssh/authorized_keys
# 把本地用户的公钥加进来
chown git:git -R .ssh
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
4 创建仓库
mkdir test.git
cd test.git/
git --bare init
chown git:git -R test.git
5 本地下载并提交
6 备份本地库到远程并且添加远程库同步
yum -y install git
2 建立git用户
useradd -s /usr/bin/git-shell git
3 创建证书登录,方便提交版本
cd /home/git/
mkdir .ssh
vi .ssh/authorized_keys
# 把本地用户的公钥加进来
chown git:git -R .ssh
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
4 创建仓库
mkdir test.git
cd test.git/
git --bare init
chown git:git -R test.git
5 本地下载并提交
aquan:git hqlulu$ git clone git@server.domain:/path/to/test.git
Cloning into 'test'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
aquan:git hqlulu$ cd test/
aquan:test hqlulu$ vi a.txt
aquan:test hqlulu$ git add a.txt
aquan:test hqlulu$ git commit -m test
[master (root-commit) 14d99af] test
1 file changed, 1 insertion(+)
create mode 100644 a.txt
aquan:test hqlulu$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'git@server.domain:/path/to/test.git'
aquan:test hqlulu$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 198 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To server.domain:/path/to/test.git
* [new branch] master -> master
Cloning into 'test'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
aquan:git hqlulu$ cd test/
aquan:test hqlulu$ vi a.txt
aquan:test hqlulu$ git add a.txt
aquan:test hqlulu$ git commit -m test
[master (root-commit) 14d99af] test
1 file changed, 1 insertion(+)
create mode 100644 a.txt
aquan:test hqlulu$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'git@server.domain:/path/to/test.git'
aquan:test hqlulu$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 198 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To server.domain:/path/to/test.git
* [new branch] master -> master
6 备份本地库到远程并且添加远程库同步
#复制本地库镜像,比如这个Xcode项目刚开始只是本地git库
git clone --mirror ~/Xcode/ABC/
Cloning into bare repository 'ABC.git'...
done.
#同步文件到服务器,也可以是别的方式
rsync -av ABC.git server.domain::DIR/
#回到本地项目,添加远程库
git remote add origin git@server.domain:/path/to/ABC.git
git clone --mirror ~/Xcode/ABC/
Cloning into bare repository 'ABC.git'...
done.
#同步文件到服务器,也可以是别的方式
rsync -av ABC.git server.domain::DIR/
#回到本地项目,添加远程库
git remote add origin git@server.domain:/path/to/ABC.git
刚才看到推特上有人说起SSL证书:
SSL证书很多是需要购买的,有年费。
免费的是有使用时间限制,为了安全起见,还是有个SSL加密会比较好哦,免费的也可以使用一两年。
国内有一家 wosign 也有免费的申请,自己网站使用是没有问题的,至少是有保障。
https://buy.wosign.com/fre...
按提示申请很方便快捷,试用过正常。
startSSL也有使用步骤的说明,自己可以尝试。
wosign下载证书后,还很人性的把一些web软件需要的文件都打包了,比如nginx的
把文件上传到服务器,可以开启nginx的ssl
前提是,安装openssl和编译nginx时有包含ssl,否则会提示:
unknown directive "ssl"
安装openssl:
yum install openssl openssl-devel
nginx的编译:
这里我有个ngx_cache_purge,不需要就去掉就可以,需要是可以在官网找到的,清理缓存用
nginx配置:
文件是相对目录,或者绝对目录,找到就可以
其他php之类的配置是一样的,这里仅包括简单配置
月光博客 @williamlong
SSL证书申请机构:土豪级Verisign,屌丝级:Godaddy、Namecheap、cheapssl;免费的:startssl
SSL证书申请机构:土豪级Verisign,屌丝级:Godaddy、Namecheap、cheapssl;免费的:startssl
SSL证书很多是需要购买的,有年费。
免费的是有使用时间限制,为了安全起见,还是有个SSL加密会比较好哦,免费的也可以使用一两年。
国内有一家 wosign 也有免费的申请,自己网站使用是没有问题的,至少是有保障。
https://buy.wosign.com/fre...
按提示申请很方便快捷,试用过正常。
startSSL也有使用步骤的说明,自己可以尝试。
wosign下载证书后,还很人性的把一些web软件需要的文件都打包了,比如nginx的
把文件上传到服务器,可以开启nginx的ssl
前提是,安装openssl和编译nginx时有包含ssl,否则会提示:
unknown directive "ssl"
安装openssl:
yum install openssl openssl-devel
nginx的编译:
./configure --prefix=/Data/apps/nginx \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module \
--add-module=ngx_cache_purge-2.1 \
&& make && make install
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module \
--add-module=ngx_cache_purge-2.1 \
&& make && make install
这里我有个ngx_cache_purge,不需要就去掉就可以,需要是可以在官网找到的,清理缓存用
nginx配置:
server {
listen 443;
server_name aslibra.com;
ssl on;
ssl_certificate 1_aslibra.com_bundle.crt;
ssl_certificate_key 2_aslibra.com.key;
}
listen 443;
server_name aslibra.com;
ssl on;
ssl_certificate 1_aslibra.com_bundle.crt;
ssl_certificate_key 2_aslibra.com.key;
}
文件是相对目录,或者绝对目录,找到就可以
其他php之类的配置是一样的,这里仅包括简单配置
1. 什么是density
引用
1) density
density表示每英寸有多少个显示点(逻辑值),它的单位是dpi:dot per inch,通常屏幕大时,density就大,屏幕小时,density就小,通常
屏幕实际分辨率为240px*400px时,density=120
屏幕实际分辨率为320px*533px,density=160
屏幕实际分辨率为480px*800px,density=240
2) 分辨率
是整个屏是多少点,比如800x480,它是软件的显示单位
3) 从Android1.6版本开始支持density(对应API Level 4)
用于解决应用在屏幕大小不同的硬件上正常显示的问题
density表示每英寸有多少个显示点(逻辑值),它的单位是dpi:dot per inch,通常屏幕大时,density就大,屏幕小时,density就小,通常
屏幕实际分辨率为240px*400px时,density=120
屏幕实际分辨率为320px*533px,density=160
屏幕实际分辨率为480px*800px,density=240
2) 分辨率
是整个屏是多少点,比如800x480,它是软件的显示单位
3) 从Android1.6版本开始支持density(对应API Level 4)
用于解决应用在屏幕大小不同的硬件上正常显示的问题
普通方法弹出alert后,取消标题还会有小部分高度,这个倒会好些:
先定义一个样式 res/values/styles.xml
弹出alert时稍微修改一下:
你可以弹出一个窗体,也和alert类似的效果。
首先修改一下窗体的属性:
修改AndroidManifest.xml 文件:
这是声明样式,下面是打开activity后,oncreate时加点参数:
这样会出现背景模糊的效果。
先定义一个样式 res/values/styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="FullHeightDialog"
parent="android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
</style>
</resources>
<resources>
<style name="FullHeightDialog"
parent="android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
</style>
</resources>
弹出alert时稍微修改一下:
Dialog dialog = new Dialog(this, R.style.FullHeightDialog);
dialog.setContentView(R.layout.article_comment);
dialog.show();
dialog.setContentView(R.layout.article_comment);
dialog.show();
你可以弹出一个窗体,也和alert类似的效果。
首先修改一下窗体的属性:
修改AndroidManifest.xml 文件:
<activity android:name=".Test"
android:theme="@android:style/Theme.Dialog">
</activity>
android:theme="@android:style/Theme.Dialog">
</activity>
这是声明样式,下面是打开activity后,oncreate时加点参数:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
this.setContentView(R.layout.article_comment);
}
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
this.setContentView(R.layout.article_comment);
}
这样会出现背景模糊的效果。
程序如何把自身进行一次截图?或者对某个view对象截图?

由左至右,分别是 bt4 iv iv2 iv3
iv是屏幕截图,上半部分是黑色,下面是bt4的图
iv2填充的是未显示过的一个按钮,截取不到,呈黑色
iv3是复制bt4,跟bt4一样
上述代码包含了bitmap转换为drawable的方式
推荐阅读:
1 How-to convert a View to a Bitmap Image in our Android Application
2 Android之代码实现的截图方式
3 Android Bitmap和Canvas
4 android 保存图片 合成图片
5 Android图片总结 图片缩放和添加文字
6 Drawable、Bitmap、byte[]之间的转换
ImageView iv = (ImageView) findViewById(R.id.ImageView01);
ImageView iv2 = (ImageView) findViewById(R.id.ImageView02);
ImageView iv3 = (ImageView) findViewById(R.id.ImageView03);
//draw的方式对整屏截取,但信息栏为黑色
View cv = getWindow().getDecorView();
Bitmap b = Bitmap.createBitmap(200, 200, Bitmap.Config.RGB_565);
cv.draw(new Canvas(b));
iv.setImageBitmap(b);
//对隐藏的未画过的对象,截出的是黑色
Bitmap image = Bitmap.createBitmap(200, 200, Bitmap.Config.RGB_565);
bt3.draw(new Canvas(image));
iv2.setImageBitmap(image);
//get drawable cache , bitmap to drawable
bt4.setDrawingCacheEnabled(true);
Bitmap bitmap = bt4.getDrawingCache();
Drawable drawable = (Drawable) new BitmapDrawable(bitmap);
iv3.setBackgroundDrawable(drawable);
ImageView iv2 = (ImageView) findViewById(R.id.ImageView02);
ImageView iv3 = (ImageView) findViewById(R.id.ImageView03);
//draw的方式对整屏截取,但信息栏为黑色
View cv = getWindow().getDecorView();
Bitmap b = Bitmap.createBitmap(200, 200, Bitmap.Config.RGB_565);
cv.draw(new Canvas(b));
iv.setImageBitmap(b);
//对隐藏的未画过的对象,截出的是黑色
Bitmap image = Bitmap.createBitmap(200, 200, Bitmap.Config.RGB_565);
bt3.draw(new Canvas(image));
iv2.setImageBitmap(image);
//get drawable cache , bitmap to drawable
bt4.setDrawingCacheEnabled(true);
Bitmap bitmap = bt4.getDrawingCache();
Drawable drawable = (Drawable) new BitmapDrawable(bitmap);
iv3.setBackgroundDrawable(drawable);

由左至右,分别是 bt4 iv iv2 iv3
iv是屏幕截图,上半部分是黑色,下面是bt4的图
iv2填充的是未显示过的一个按钮,截取不到,呈黑色
iv3是复制bt4,跟bt4一样
上述代码包含了bitmap转换为drawable的方式
推荐阅读:
1 How-to convert a View to a Bitmap Image in our Android Application
2 Android之代码实现的截图方式
3 Android Bitmap和Canvas
4 android 保存图片 合成图片
5 Android图片总结 图片缩放和添加文字
6 Drawable、Bitmap、byte[]之间的转换