软件分析与设计
Pages: 1/5 First page 1 2 3 4 5 Next page Final page [ View by Articles | List ]
Dec 8
html5中的GPS定位功能主要用的是getCurrentPosition, 该方法封装在 navigator.geolocation 属性里,是 navigator.geolocation 对象的方法。

getCurrentPosition()函数简介
getCurrentPosition(successCallback,errorCallback,positionOptions)
successCallback

表示调用getCurrentPosition函数成功以后的回调函数,该函数带有一个参数,对象字面量格式,表示获取到的用户位置数据。该对象包含两个属性 coords 和 timestamp。其中 coords 属性包含以下7个值:

accuracy:精确度
latitude:纬度
longitude:经度
altitude:海拔
altitudeAcuracy:海拔高度的精确度
heading:朝向
speed:速度
errorCallback

和 successCallback 函数一样带有一个参数,对象字面量格式,表示返回的错误代码。它包含以下两个属性:

1、message:错误信息
2、 code:错误代码。

其中错误代码包括以下四个值:

1、UNKNOW_ERROR:表示不包括在其它错误代码中的错误,这里可以在 message 中查找错误信息
2、PERMISSION_DENIED:表示用户拒绝浏览器获取位置信息的请求
3、 POSITION_UNAVALIABLE:表示网络不可用或者连接不到卫星
4、TIMEOUT:表示获取超时。必须在options中指定了timeout值时才有可能发生这种错误
positionOptions

positionOptions 的数据格式为JSON,有三个可选的属性:

1、enableHighAcuracy — 布尔值: 表示是否启用高精确度模式,如果启用这种模式,浏览器在获取位置信息时可能需要耗费更多的时间。
2、timeout — 整数: 表示浏览需要在指定的时间内获取位置信息,否则触发errorCallback。
3、maximumAge — 整数/常量: 表示浏览器重新获取位置信息的时间间隔。
getCurrentPosition()函数定位应用

点击按钮,就可以回提示是否获取当前位置,允许之后,可以获取你所在位置的经纬度!
Dec 8

 对于手机网站建设,总结了如下几点注意:

1、 安卓浏览器看背景图片,有些设备会模糊。

用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢?

经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显示网页,这样字会非常小,所以苹果当初就把iPhone 4的960640分辨率,在网页里只显示了480320,这样devicePixelRatio=2。现在android比较乱,有1.5的,有2的也有3的。

想让图片在手机里显示更为清晰,必须使用2x的背景图来代替img标签(一般情况都是用2倍)。例如一个div的宽高是100100,背景图必须得200200,然后background-size:contain;,这样显示出来的图片就比较清晰了。

代码可以如下:

    background:url(../images/icon/all.png) no-repeat center center;   -webkit-background-size:50px 50px;   background-size: 50px 50px;display:inline-block; width:100%; height:50px;   

或者指定 background-size:contain;都可以,大家试试!

2、图片加载

若您遇到图片加载很慢的问题,对这种情况,手机开发一般用canvas方法加载:

具体的canvas API 参见:http://javascript.ruanyifeng.com/htmlapi/canvas.html

下面举例说明一个canvas的例子:

<li><canvas></canvas></li>  

s动态加载图片和li 总共举例17张图片!

var total=17;   var zWin=$(window);   var render=function(){      var padding=2;      var winWidth=zWin.width();      var picWidth=Math.floor((winWidth-padding*3)/4);      var tmpl ='';      for (var i=1;i<=totla;i++){       var p=padding;       var imgSrc='img/'+i+'.jpg';       if(i%4==1){         p=0;       }       tmpl +='<li style="width:'+picWidth+'px;height:'+picWidth+'px;padding-left:'+p+'px;padding-top:'+padding+'px;"><canvas id="cvs_'+i+'"></canvas></li>';       var imageObj = new Image();       imageObj.index = i;       imageObj.onload = function(){          var cvs =$('#cvs_'+this.index)[0].getContext('2d');          cvs.width = this.width;          cvs.height=this.height;          cvs.drawImage(this,0,0);       }       imageObj.src=imgSrc;      }    }   render(); 

3、假如手机网站不用兼容IE浏览器,一般我们会使用zeptojs。zeptojs内置Touch events方法,具体可以看http://zeptojs.com/#Touch events

看了一下zeptio新版的API,已经支持IE10以上浏览器,对zeptojs可以选择使用!

Mar 14
最近项目繁杂,电脑各个版本的vs ide都装了一把,可发现想做sql跟踪时打开SQL Server Profiler,死活没窗口,任务栏有程序,没有window界面,无意间发现一个方法可以解决

1、在任务栏右键调出 任务管理器
2、在SQL Server Profiler进程上右键选择“最大化”
3、在最大化的窗体上最小化后还是发现程序无法在任务栏点开,,这个时候不要最下话,点击移动窗口,缩放后最小化程序运行正常


Feb 16
https://my.oschina.net/u/1458120/blog/208857
Feb 12

熟悉IoC容器的都知道,在开发过程中,最郁闷的莫过于当你新增一个Service时,你需要对该Service进行注册,有的是使用代码注入,有的是XML配置注入,不管是哪种类型的注入,经常会出现开发人员忘记注入的情况,

如果你的页面是直接发送请求的,那么会得到类似于如下页面的错误:

image  <- _<-

 

如果该服务是用于AJAX请求实用的,那么你就悲剧了,因为页面只是没反应,只有查看错误日志了。

Feb 7
问题:
Quotation

项目上线后发现一个问题,项目记录流水的时间是取自本地的时间new Date(),之前一直正常,最近发现异常
经过日志发现时终端设备时区设置异常,但诡异的是终端APPrequest提交的时间戳是正常的……
撸一撸chun
日志中显示记录流水时间是:2017-02-07 08:16:55,为伦敦时间,
而正确的时间应该是2017/2/7 16:16:55,这就导致终端APP界面显示异常,
但request提交的是时间转换的时间戳:Math.round(new Date("2017-02-07 08:16:55".replace(/-/g, '/')).getTime()/1000)


why

什么是时间戳(timestamp)?它和时区(timezone)又有什么关系?初学者可能一开始很难搞懂时间戳这个概念,就像这期《程序员的日常》漫画中的主人公一样。

Highslide JS
漫画注释

从漫画中举的例子来看,这里的时间戳,指的就是Unix时间戳(Unix timestamp)。它也被称为Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。因此,严格来说,不管你处在地球上的哪个地方,任意时间点的时间戳都是相同的。这点有利于线上和客户端分布式应用统一追踪时间信息。

Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。但是,这并不意味着目前的时间戳规范会一直持续使用下去。 因为到2038年1月19日时,Unix时间戳就会因为32位内存溢出(32-bit overflow)而无法继续使用。因此,在这一天之前,上千万的网络应用要么采用新的时间戳规范,要么迁移到64位系统,后者可以给时间戳争取“一点”时间。


Jan 5

let no="u0000u0000u0000u0000u0000u0000u0000Ou0000u0000u0000u0000u0000u0000u0000u0000"
no = no.replace(/\u0000/g,"");

  \u0000是unicode表示的一个特殊字符,也就是二进制的0,在c里面用这个字符作为字符串结束的标志。
正是因为这个原因,造成调用某些方法的时候字符串被截断。例子:
<textarea id="ff"></textarea>
<script>
var x = 'xxx\u0000yyy';
alert(x);
alert(x.length);
var elm = document.getElementByIdx('ff');
elm.value = x;
y = x.replace('\u0000', ' ');
alert(y);
alert(y == 'xxx\u0000yyy');
alert(y == 'xxx yyy');
alert(elm.value.length);
alert(elm.value == 'xxx\u0000yyy');
alert(elm.value == 'xxx yyy);
</script>
本身声明这个字符串的时候是可以接受\u0000的,所以长度什么的都对
但是通过alert调用的时候,字符串就被截断,认为到\u0000就结束了
同样当作一个字符串赋值给一个textarea的时候,也被截断了(IE6)。
对于firefox,不被截断,textarea.value的值就是'xxx\u0000yyy'
Oct 1

 前一段时间想装一下sqlserver,但是一直装不上。搞得我很郁闷,我重装了一下系统。但是还是没有装上。 

     正好今天有时间,所以就尝试着把sqlserver装上。弄了半天,百度了很长时间,终于弄出来了。估计以后大家可能也会遇到,我也加深一下印象,所以记录了下来: 
      大致出错信息如下: 
    RebootRequiredCheck 检查是否需要挂起计算机重新启动。挂起重新启动会导致安装程序失败。 失败 需要重新启动计算机。必须重新启动计算机才能安装 SQL Server。
 
检查出错:
 
Microsoft SQL Server 2008 Setup - System Configuration Check Report
 
Computer Name(s): JH 
Report Date/Time: 2010/11/25 19:16
Saved to Directory: C:Program FilesMicrosoft SQL Server100Setup BootstrapLog20101125_191528SystemConfigurationCheck_Report.htm
 
Rule Name
Rule Description
Result
Message/Corrective Action
 
GlobalRules: 针对规则组“GlobalRules”的 SQL Server 2008 安装程序配置检查
 
RebootRequiredCheck
检查是否需要挂起计算机重新启动。挂起重新启动会导致安装程序失败。
失败
需要重新启动计算机。必须重新启动计算机才能安装 SQL Server。
 
AclPermissionsFacet
检查 SQL Server 注册表项是否一致。
通过
SQL Server 注册表项是一致的,可以支持 SQL Server 安装或升级。
 
MediaPathLength
检查 SQL Server 安装媒体是否太长。
通过
SQL Server 安装媒体不太长。
 
OsVersionCheck
检查计算机是否满足最低操作系统版本要求。 
通过
该操作系统版本满足此产品的最低要求。
 
ThreadHasAdminPrivilegeCheck
检查运行 SQL Server 安装程序的帐户是否具有计算机的管理员权限。
通过
运行 SQL Server 安装程序的帐户具有计算机的管理员权限。
 
WmiServiceStateCheck
检查 WMI 服务是否已在计算机上启动并正在运行。
通过
Windows Management Instrumentation (WMI) 服务正在运行。
 
 
解决步骤:
a 、重启机器,再进行安装,如果发现还有该错误,请按下面步骤 
b、在开始->运行中输入regedit 
c、到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager 位置 
d、在右边窗口右击PendingFileRenameOperations,选择删除,然后确认 
e、重启安装,问题解决 
如果还有同样问题,请检查其它注册表中是否有该值存在,如有请删掉
Pages: 1/5 First page 1 2 3 4 5 Next page Final page [ View by Articles | List ]