NET Framework4.0注册

C:\Inetpub\AdminScripts>cd

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis.exe -i

Start installing ASP.NET (4.0.30319).

.......

Finished installing ASP.NET (4.0.30319).

Posted in Web开发 at March 29, 2016. by 傻猫 .    Views: 2687    No Comments

android平台获取手机IMSI、IMEI 、序列号和手机号的方法

android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法

1)获取运营商sim卡imsi号:
String android_imsi = telephonyManager.getSubscriberId();//获取手机IMSI号

String IMSI = android.os.SystemProperties.get(
android.telephony.TelephonyProperties.PROPERTY_IMSI);
2)获取IME标识两种方法(手机唯一的标识)
String imei = ((TelephonyManager) context.getSystemService(TELEPHONY_SERVICE)).getDeviceId();

String IMEI = android.os.SystemProperties.get(android.telephony.TelephonyProperties.PROPERTY_IMEI)

不过纯APP开发SystemProperties,TelephonyProperties汇报错误,因为android.os.SystemProperties在SDK的库中是没有的,需要把Android SDK 目录下data下的layoutlib.jar文件加到当前工程的附加库路径中,就可以Import。

如果Android Pad没有IMEI,用此方法获取设备ANDROID_ID:
String android_id = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID);

  1. 获取手机号
    TelephonyManager tm= (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
    String number = tm.getLine1Number();

如下使用例子:
public static String getIMEI() {
return ((TelephonyManager) AppXiKang.getApp().getSystemService(
Context.TELEPHONY_SERVICE)).getDeviceId();
}

public static String getAndroidId() {
return android.provider.Settings.Secure.getString(
AppXiKang.getApp().getContentResolver(),
android.provider.Settings.Secure.ANDROID_ID);
}

public static String getSimSerialNumber() {
return ((TelephonyManager) AppXiKang.getApp().getSystemService(
Context.TELEPHONY_SERVICE)).getSimSerialNumber();
}

public static String getSerialNumber1() {
return android.os.Build.SERIAL;
}

/**

  • getSerialNumber
  • @return result is same to getSerialNumber1()
    */
    public static String getSerialNumber(){
    String serial = null;
    try {
    Class<?> c = Class.forName("android.os.SystemProperties");
    Method get = c.getMethod("get", String.class);
    serial = (String) get.invoke(c, "ro.serialno");
    } catch (Exception e) {
    e.printStackTrace();
    }
    return serial;
    }

public static void displayDevice(){
String dest_imei = getIMEI();
String androidId = getAndroidId();
Log.i(TAG, "isTestDevice: "
+" \nIMEI:"+dest_imei
+" \nANDROID ID:" + androidId
+" \nSerialNumber:" + getSerialNumber()
+" \nSimSerialNumber:" + getSimSerialNumber()
);
}
运行结果示例:
IMEI:868331011992179
ANDROID ID:5a3b287f2b13bef8
SerialNumber:021YLJ212C001879
SimSerialNumber:898600810110

  1. 获取一个能唯一标识每台Android设备的序号与服务器通信

所以如果你想得到设备的唯一序号, TelephonyManager.getDeviceId() 就足够了。但很明显暴露了DeviceID会使一些用户不满,所以最好把这些id加密了。实际上加密后的序号仍然可以唯一的识别该设备,并且不会明显的暴露用户的特定设备,例如,使用
String.hashCode() ,结合UUID:

String getuniqueId(){

            TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);

String imei=tm.getDeviceId();
String simSerialNumber=tm.getSimSerialNumber();
String androidId = android.provider.Settings.Secure.getString(
getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
UUID deviceUuid =new UUID(androidId.hashCode(), ((long)imei.hashCode() << 32) | simSerialNumber.hashCode());
String uniqueIuniqueId d = deviceUuid.toString();
returnuniqueId;
}

最后的deviceID可能是这样的结果: 00000000-54b3-e7c7-0000-000046bffd97

得到设备独一无二的标识: 可以用于客户端与服务端通信的唯一标识

Posted in Web开发 at January 7, 2016. by 傻猫 .    Views: 2816    No Comments

typecho主题常用代码

typecho是一款不错的php博客系统,轻便而功能完备,也有许多的支持者;但博客除了后台功能外,最重要的应该算得上是博客外观了,可是别人所作的模版一般都不大可能完全符合自己的使用习惯、或是品味。我们有必要自己制作、或者至少:能够对已有的模版进行一些个性化的定制,那么,下面的这些小小的技巧也就是必不可少的了。你可以用它们对typecho模版进行一些人性化、个性化的改进。

1,文章title设置

使得对搜索引擎足够友好
示例一:
首页-- 名称 - 描述 - 归档 - 日期 - 名称
文章-- 标题 - 博客 - 页面 - 标题 - 名称
分类-- 分类 - 博客 - 标签 - 标签 - 名称

<title>
<?php if($this->is('index')): ?><?php $this->options->title(); ?>-<?php $this->options->description(); ?>
<?php elseif($this->is('archive')): ?><?php $this->archiveTitle('/','',' - '); ?><?php $this->options->title(); ?>
<?php else: ?><?php $this->archiveTitle('','',' - '); ?><?php $this->options->title(); ?><?php endif; ?>
</title>

示例二:
首页: 博客名称
页面:页面标题 - 博客名称
分类:分类名称 - 博客名称
标签:标签 - 博客名称
存档:存档: XXXX/XX - 博客名称
其它:(日志页)页面标题

<title>
<?php if ($this->is('index')){$this->options->title();}
elseif($this->is('page')){$this->archiveTitle('','',' - ');$this->options->title();}
elseif($this->is('category')){$this->archiveTitle('','',' - ');$this->options->title();}
elseif($this->is('tag')){$this->archiveTitle('','Tag: ',' - ');$this->options->title();}
elseif($this->is('archive')){$this->archiveTitle('年','存档: ','月 - ');$this->options->title();}
else{$this->archiveTitle('','','');}?>
</title>

或使用(默认):

<?php $this->archiveTitle('', '', ' - '); ?><?php $this->options->title(); ?>-<?php $this->options->description(); ?>

最后给出一个较全面的判断:

<?php if($this->is('index')){ ?>
    <?php $this->options->title(); ?>&#160;&#45;&#160;<?php $this->options->description(); ?>
    <?php if($this->_currentPage>1) echo '第 '.$this->_currentPage.' 页 '; ?>
<?php }  else if($this->is('category')) { ?>
    Category: <?php $this->archiveTitle(' &lt; ','',''); ?>&#160;&#45;&#160;<?php $this->options->title(); ?>
<?php } else if($this->is('tag')) { ?>   
    Tag: <?php $this->archiveTitle(' &lt; ','',''); ?>&#160;&#45;&#160;<?php $this->options->title(); ?>
<?php } else if($this->is('archive'))  { ?>   
    Keyword: <?php $this->archiveTitle(' &lt; ','',''); ?>&#160;&#45;&#160;<?php $this->options->title(); ?>
<?php } else if($this->is('attachment')) {?>
    Attachment: <?php $this->archiveTitle(' &lt; ','',''); ?>&#160;&#45;&#160;<?php $this->options->title(); ?>
<?php } else  { ?> 
    <?php $this->archiveTitle('', '', ''); ?>&#160;&#45;&#160;<?php $this->options->title(); ?>
<?php } ?>

查看更多内容...

Posted in Web开发 at April 8, 2015. by 傻猫 .    Views: 1747    No Comments

Struts2 漏洞修复方案

详见官方修复方案

360 WebSafe修复方案

Posted in Web开发 at May 28, 2014. by 傻猫 .    Views: 2527    No Comments

c#的DateTime.Now函数详解

//2008年4月24日
System.DateTime.Now.ToString("D");
//2008-4-24
System.DateTime.Now.ToString("d");
//2008年4月24日 16:30:15
System.DateTime.Now.ToString("F");
//2008年4月24日 16:30
System.DateTime.Now.ToString("f");
//2008-4-24 16:30:15
System.DateTime.Now.ToString("G");
//2008-4-24 16:30
System.DateTime.Now.ToString("g");
//16:30:15
System.DateTime.Now.ToString("T");
//16:30
System.DateTime.Now.ToString("t");
//2008年4月24日 8:30:15
System.DateTime.Now.ToString("U");
//2008-04-24 16:30:15Z
System.DateTime.Now.ToString("u");
//4月24日
System.DateTime.Now.ToString("m");
System.DateTime.Now.ToString("M");
//Tue, 24 Apr 2008 16:30:15 GMT
System.DateTime.Now.ToString("r");
System.DateTime.Now.ToString("R");
//2008年4月
System.DateTime.Now.ToString("y");
System.DateTime.Now.ToString("Y");
//2008-04-24T15:52:19.1562500+08:00
System.DateTime.Now.ToString("o");
System.DateTime.Now.ToString("O");
//2008-04-24T16:30:15
System.DateTime.Now.ToString("s");
//2008-04-24 15:52:19
System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
//2008年04月24 15时56分48秒
System.DateTime.Now.ToString("yyyy年MM月dd HH时mm分ss秒");
//星期二, 四月 24 2008
System.DateTime.Now.ToString("dddd, MMMM dd yyyy");
//二, 四月 24 ’08
System.DateTime.Now.ToString("ddd, MMM d "’"yy");
//星期二, 四月 24
System.DateTime.Now.ToString("dddd, MMMM dd");
//4-08
System.DateTime.Now.ToString("M/yy");
//24-04-08
System.DateTime.Now.ToString("dd-MM-yy");
//字符型转换转为字符串
12345.ToString("n"); //生成 12,345.00
12345.ToString("C"); //生成 ¥12,345.00
12345.ToString("e"); //生成 1.234500e+004
12345.ToString("f4"); //生成 12345.0000
12345.ToString("x"); //生成 3039 (16进制)
12345.ToString("p"); //生成 1,234,500
//本年度销售额、本季度利润、本月新增客户
 //今天
DateTime.Now.Date.ToShortDateString();
//昨天,就是今天的日期减一
DateTime.Now.AddDays(-1).ToShortDateString();
//明天,同理,加一
DateTime.Now.AddDays(1).ToShortDateString();
//本周(要知道本周的第一天就得先知道今天是星期几,从而得知本周的第一天就是几天前的那一天,要注意的是这里的每一周是从周日始至周六止
DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString();
DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString();
//如果你还不明白,再看一下中文显示星期几的方法就应该懂了
//由于DayOfWeek返回的是数字的星期几,我们要把它转换成汉字方便我们阅读,有些人可能会用switch来一个一个地对照,其实不用那么麻烦的
string[] Day = new string[]{ "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
Day[Convert.ToInt16(DateTime.Now.DayOfWeek)];
//上周,同理,一个周是7天,上周就是本周再减去7天,下周也是一样
DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek))) - 7).ToShortDateString();
DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek))) - 7).ToShortDateString();
//下周
DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek))) + 7).ToShortDateString();
DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek))) + 7).ToShortDateString();
//本月,很多人都会说本月的第一天嘛肯定是1号,最后一天就是下个月一号再减一天。当然这是对的
//一般的写法
DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "1"; //第一天
DateTime.Parse(DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "1").AddMonths(1).AddDays(-1).ToShortDateString();//最后一天
//巧用C#里ToString的字符格式化更简便
DateTime.Now.ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).AddDays(-1).ToShortDateString();
//上个月,减去一个月份
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
//下个月,加去一个月份
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(2).AddDays(-1).ToShortDateString();
//7天后
DateTime.Now.Date.ToShortDateString();
DateTime.Now.AddDays(7).ToShortDateString();
//7天前
DateTime.Now.AddDays(-7).ToShortDateString();
DateTime.Now.Date.ToShortDateString();
//本年度,用ToString的字符格式化我们也很容易地算出本年度的第一天和最后一天
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).AddDays(-1).ToShortDateString();
//上年度,不用再解释了吧
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(-1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddDays(-1).ToShortDateString();
//下年度
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(2).AddDays(-1).ToShortDateString();
//本季度,很多人都会觉得这里难点,需要写个长长的过程来判断。其实不用的,我们都知道一年四个季度,一个季度三个月
//首先我们先把日期推到本季度第一个月,然后这个月的第一天就是本季度的第一天了
DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 22)).ToString("yyyy-MM-01");
//同理,本季度的最后一天就是下季度的第一天减一
DateTime.Parse(DateTime.Now.AddMonths(22 - ((DateTime.Now.Month - 1) % 22)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
//下季度,相信你们都知道了。。。。收工
DateTime.Now.AddMonths(22 - ((DateTime.Now.Month - 1) % 22)).ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.AddMonths(6 - ((DateTime.Now.Month - 1) % 22)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
//上季度
DateTime.Now.AddMonths(-22 - ((DateTime.Now.Month - 1) % 22)).ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 22)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();

Posted in Web开发 at December 31, 2013. by 傻猫 .    Views: 2578    No Comments

WordPress已成為全球19%網站基礎平臺

過去12個月,WordPress的軟體下載量已超過4600萬次,新增了336個主題,超過去年同期的2.3倍。此外,用戶的外掛程式申請達到9334個,而WordPress已批准其中6758個。到目前為止,WordPress的外掛程式庫中已有2.6萬個外掛程式。對於移動版,過去12個月中WordPress發佈了15個更新,其中包括3個iOS更新、6個Android更新和6個Windows Phone更新。

Automattic此前還對使用者使用WordPress的情況進行了調查,共有3萬人參與了這一調查。結果顯示,31%使用者將WordPress平臺用於iOS應用,30%用於Android手機,18%用於Android平板電腦,12%用於桌面應用。

此外69%受訪者表示,主要將WordPress用作內容管理系統,20%將其同時用作博客平臺和內容管理系統,6%將其用作博客平臺,7%將其用作應用平臺。穆倫維格表示,WordPress被用作應用平臺是一個全新的情況。


面向WordPress網站的主機服務提供者WP Engine也進行了自己的調查。結果顯示,有29.3%的美國人聽說過WordPress。

穆倫維格此次還表示,WordPress平臺已成為全球18.9%網站的基礎平臺,這一數字較2012年同期增長2.2%。

Automattic正計畫發佈新的3.6版WordPress。穆倫維格表示,這一代號為“Oscar”的新版本將很快發佈,並將原生地支援視頻和音訊檔在文本行中的使用,並提供更新的版本管理功能。

穆倫維格指出,WordPress已從單純的博客平臺發展成為內容管理系統,以及進一步的應用平臺。他認為,WordPress能成為許多服務的基礎,這就像是樂高積木。為了實現這一目標,穆倫維格此次宣佈將推出一個開發者資源網站。

WordPress將於今年10月和12月發佈3.7和3.8版本,新版本將更好地支撐WordPress向這一方向發展。

Posted in Web开发 at July 28, 2013. by 傻猫 .    Views: 2814    No Comments

JS延迟加载(JS后加载)加快网页打开速度

第一,JS延迟加载

代码如下:
程序代码
<script language="JavaScript" src="" id="my"></script>
<script>
setTimeout("document.getElementById('my').src='include/php100.php'; ",3000);//延时3秒
</script>

 

第二,JS最后加载

在需要插入JS的地方插入以下代码:

程序代码
<SPAN id=L4EVER>LOADING...</SPAN>

当然,那个LOADING…你可以换成自己喜欢的小图片.看起来很有AJAX效果呢.

然后在页面最底端插入:

程序代码
<SPAN class=spanclass id=AD_L4EVER>
你的JS代码在这里!</SPAN>
<script>L4EVER.innerHTML=AD_L4EVER.innerHTML;AD_L4EVER.innerHTML="";</script>

 

第三,JS最后加载

想要显示广告的位置
<div id="guangg1"></div>

想要显示的广告内容
<div id="ggad1" style="display:none"><script language="javascript"

src="/frontpage/include/php100.js"></script></div>

判断要显示的广告位置是否存在
<script>
function chkdiv(divid){
var chkid=document.getElementById(divid);
if(chkid != null)
{return true; }
else
{return false; }
} 最后就是显示广告了
if (chkdiv('guangg1')) {
document.getElementById('guangg1').innerHTML= document.getElementById('ggad1').innerHTML;
document.getElementById('ggad1').innerHTML="";
}
</script>


Posted in Web开发 at July 23, 2013. by 傻猫 .    Views: 2744    No Comments

最新屏蔽视频网站广告方法

第一步:找到C:\WINDOWS\system32\drivers\etc里面的hosts文件,双击打开,选用记事本打开。
复制以下内容到hosts内,保存

#优酷
127.0.0.1 atm.youku.com
127.0.0.1 Fvid.atm.youku.com
127.0.0.1 html.atm.youku.com
127.0.0.1 valb.atm.youku.com
127.0.0.1 valf.atm.youku.com
127.0.0.1 valo.atm.youku.com
127.0.0.1 valp.atm.youku.com
127.0.0.1 lstat.youku.com
127.0.0.1 speed.lstat.youku.com
127.0.0.1 urchin.lstat.youku.com
127.0.0.1 stat.youku.com
127.0.0.1 static.lstat.youku.com
127.0.0.1 valc.atm.youku.com
127.0.0.1 vid.atm.youku.com
127.0.0.1 walp.atm.youku.com

查看更多内容...

Posted in Web开发,杂七杂八 at June 22, 2012. by 傻猫 .    Views: 5625    2 Comments