复制转移Android Studio工程到其它电脑后遇到The SDK directory ‘XXXX‘ does not exist.问题的解决方法

复制Android Studio 工程到其它电脑后遇到如下问题:

Error:A problem occurred configuring project ‘:app’.

> The SDK directory ‘/Users/alex/Library/Android/sdk‘ does not exist.

解决办法:

在项目的根目录下找到文件: “local.properties” ,打开并找到如下行

[redbox]sdk.dir=/Users/kangka/Library/Android/sdk[/redbox] 

改为新电脑Sdk所在的目录,比如:

[greenbox]sdk.dir=D:/Library/Android/sdk [/greenbox] 

Android Studio问题:Intel HAXM is required to run this AVD,VT-x is disabled in BIOS

这 个是什么意思呢? 就是说让Enable VT-x in your BIOS security settings (refer to documentation for your computer)   :简单点说 就是让我们进入你的BIOS系统中将BIOS中的VT-x给开启了。 就可以了

解决方法: 就是 重启的你的电脑。 按F2或其他的吧  (根据你的电脑来决定) 然后进入到BIOS中。 选择Config --cpu -- Intel-Virtualization Technology 将这个选项开启 。然后你在执行虚拟机 就没有问题了。

php阳历转阴历(农历),阴历转阳历的方法

 

由于最近一个项目设计到将阳历转阴历从而得到相应节日的算法,对这方面不是很了解,于是就在网上搜了一圈。不错,还算是找到一个比较不错的php类,实现了将阳历转换为阴历(农历),阴历转换为阳历的算法,同时还能获取干支纪年,生肖,以及相应的阴历的中文叫法等等,功能还是挺齐全的,在这里共享一下。

阅读更多

APACHE服务器出现No input file specified.的完美解决方案

启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:“No input file specified.”

原因在于使用的PHP是fast_cgi模式,而在某些情况下,不能正确识别path_info所造成的错误,Wordpress的伪静态也有一样的问题。

WordPress程序默认的.htaccess里面的规则:

[redbox]

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

[/redbox]

“No input file specified.”,是没有得到有效的文件路径造成的。

修改伪静态规则,如下:

[greenbox]

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

[/greenbox]

有没有发现不同?

其实就是在正则结果“/$1”前面多加了一个“?”号,问题也就随之解决了。

TortoiseGit(乌龟git)保存用户名密码的方法

github的windows版也用过一段时间,但还是不太习惯。所以目前仍然青睐与msysgit+乌龟git的组合。TortoiseGit在提交时总数会提示你输入用户名密码,非常麻烦。解决方案如下:

方法一:

设置 -> git 编辑本地 .git/config 增加

[greenbox]

[credential]

    helper = store

[/greenbox]

保存,输入一次密码后第二次就会记住密码了

方法二:

1. Windows中添加一个HOME环境变量,值为%USERPROFILE%

2. 在“开始>运行”中打开%Home%,新建一个名为“_netrc”的文件

3. 用记事本打开_netrc文件,输入Git服务器名、用户名、密码,并保存:

[greenbox]

machine github.com       #git服务器名称

login user          #git帐号

password pwd   #git密码

[/greenbox]

在windows上建_netrc
[greenbox]
copy con _netrc  #创建_netrc文件
#依次输入以下3行:
machine github.com    #git服务器名称
login username        #git帐号
password password     #git密码
[/greenbox]
在最后一行后输入ctrl+z,文件会自动保存并退出

再次在git上提交时就不用重复输入用户名密码了

LNMP环境中WordPress程序伪静态解决方案

LNMP环境是目前我们国内站长使用的Linux VPS配置环境中使用较多的。作为新手我们很可能会看到老左类似的”LNMP安装教程”然后依葫芦画瓢的去安装VPS。我们是否有发现环境中我们较为常用的wordpress伪静态不生效,内页出现404错误页面。这个问题很好解决,因为我们lnmp采用的是nginx,而不是apache,所以不如apache直接丢htaccess文件到网站根目录就可以生效伪静态。

首先,默认安装的lnmp环境中已经有伪静态文件wordpress.conf文件在”/usr/local/nginx/conf/wordpress.conf”中,我们可以核对一下里面的编译代码是不是为:

 

if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}

如果不是,我们需要修改成上面的代码文件用来rewrite跳转伪静态。

其次,我们需要在属于我们网站的配置文件:

/usr/local/nginx/conf/vhost/www.kangka.net.conf(自己添加域名自动命名)

我们会看到类似下面的代码,看到绿色部分是我添加进去的,你就添加进去就可以:

server {
listen 80;
server_name www.kangka.net;
index index.html index.php;
include wordpress.conf;

最后,我们用ssh登录VPS,然后用下面的命令重启lnmp

/root/lnmp restart

执行上面三步骤之后,我们是不是已经解决了伪静态问题,其他常用的CMS也是一样的,在默认的conf下基本都包含我们所需要的CMS伪静态编译脚本。

GoogleFonts To 360插件:将谷歌字体替换为360国内CDN链接

由于google在中国访问时常抽风因此,也影响到了google api和一些公共服务,

而其中现在很流行的google fonts也饱受困扰,

很多google的公共库文件访问缓慢或者根本就是无法访问, 比如:

theme.googleusercontent.com

fonts.google apis.com

ajax.google apis.com 很多网站前端以前都是直接引用google的地址,这会或多或少的影响网站打开速度。

最近360网站卫士提供的公共库资源( http://libs.useso.com/ ),效果果然提高不少。

这个插件是调用360的CDN常用前端公共库替换所有谷歌google.com域名链接。

使用后,自己的网站速度已经比以前快了很多,几乎瞬间就可以拿到Google字体了。

本来需要从美国服务器才能拿到的google字体,现在已经遍布360全国的机房了。

插件下载地址:
http://baiye.us/wp-content/uploads/2014/06/googlefontsto360.zip

android布局属性详解

RelativeLayout用到的一些重要的属性:

 

第一类:属性值为true或false
android:layout_centerHrizontal  水平居中
android:layout_centerVertical   垂直居中
android:layout_centerInparent    相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft   贴紧父元素的左边缘
android:layout_alignParentRight  贴紧父元素的右边缘
android:layout_alignParentTop    贴紧父元素的上边缘
android:layout_alignWithParentIfMissing  如果对应的兄弟元素找不到的话就以父元素做参照物

第二类:属性值必须为id的引用名“@id/id-name”
android:layout_below      在某元素的下方
android:layout_above      在某元素的的上方
android:layout_toLeftOf   在某元素的左边
android:layout_toRightOf  在某元素的右边

android:layout_alignTop   本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft  本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight  本元素的右边缘和某元素的的右边缘对齐

第三类:属性值为具体的像素值,如30dip,40px
android:layout_marginBottom              离某元素底边缘的距离
android:layout_marginLeft                   离某元素左边缘的距离
android:layout_marginRight                 离某元素右边缘的距离
android:layout_marginTop                   离某元素上边缘的距离
EditText的android:hint

设置EditText为空时输入框内的提示信息。

android:gravity
android:gravity属性是对该view 内容的限定.比如一个button 上面的text.  你可以设置该text 在view的靠左,靠右等位置.以button为例,android:gravity=”right”则button上面的文字靠右

android:layout_gravity
android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button 在linearlayout里,你想把该button放在靠左、靠右等位置就可以通过该属性设置.以button为例,android:layout_gravity=”right”则button靠右

android:layout_alignParentRight

使当前控件的右端和父控件的右端对齐。这里属性值只能为true或false,默认false。

android:scaleType:
android:scaleType是控制图片如何resized/moved来匹对ImageView的size。ImageView.ScaleType / android:scaleType值的意义区别:

CENTER /center  按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示

CENTER_CROP / centerCrop  按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)

CENTER_INSIDE / centerInside  将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽

FIT_CENTER / fitCenter  把图片按比例扩大/缩小到View的宽度,居中显示

FIT_END / fitEnd   把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置

FIT_START / fitStart  把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置

FIT_XY / fitXY  把图片不按比例扩大/缩小到View的大小显示

MATRIX / matrix 用矩阵来绘制,动态缩小放大图片来显示。

** 要注意一点,Drawable文件夹里面的图片命名是不能大写的。

android实现开机自启动服务

android

  android实现开机自启动可能是移动操作系统中最简单的了,我们只需要监听一个开机启动的Broadcast(广播)即可。首先写一个Receiver(即广播监听器),继承BroadcastReceiver,如下所示:

public class BootReceiver extends BroadcastReceiver {
    private PendingIntent mAlarmSender;
    @Override
    public void onReceive(Context context, Intent intent) {
        // 在这里干你想干的事(启动一个Service,Activity等),本例是启动一个定时调度程序,每30分钟启动一个Service去更新数据
        mAlarmSender = PendingIntent.getService(context, 0, new Intent(context,
                RefreshDataService.class), 0);
        long firstTime = SystemClock.elapsedRealtime();
        AlarmManager am = (AlarmManager) context
                .getSystemService(Activity.ALARM_SERVICE);
        am.cancel(mAlarmSender);
        am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,
                30 * 60 * 1000, mAlarmSender);
    }
} 

接下来,我们只需要在应用程序配置文件AndroidManifest.xml中注册这个Receiver来监听系统启动事件即可,如下所示:

<receiver android:name=”.service.BootReceiver”>
    <intent-filter>
    <!– 系统启动完成后会调用–>
    <action android:name=”android.intent.action.BOOT_COMPLETED”>
    </action>
    </intent-filter>
</receiver>