软件分析与设计
Pages: 1/5 First page 1 2 3 4 5 Next page Final page [ View by Articles | List ]
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、重启安装,问题解决 
如果还有同样问题,请检查其它注册表中是否有该值存在,如有请删掉
Sep 11

软件架构(software architecture)就是软件的基本结构。

合适的架构是软件成功的最重要因素之一。大型软件公司通常有专门的架构师职位(architect),只有资深程序员才可以担任。

O'Reilly 出版过一本免费的小册子《Software Architecture Patterns》PDF), 介绍了五种最常见的软件架构,是非常好的入门读物。我读后受益匪浅,下面就是我的笔记。

一、分层架构

分层架构(layered architecture)是最常见的软件架构,也是事实上的标准架构。如果你不知道要用什么架构,那就用它。

这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。

虽然没有明确约定,软件一定要分成多少层,但是四层的结构最常见。

        
  • 表现层(presentation):用户界面,负责视觉和用户互动
  •     
  • 业务层(business):实现业务逻辑
  •     
  • 持久层(persistence):提供数据,SQL 语句就放在这一层
  •     
  • 数据库(database) :保存数据

有的软件在逻辑层和持久层之间,加了一个服务层(service),提供不同业务逻辑需要的一些通用接口。

Aug 25
IOS下日期问题(苹果浏览器Safari对JS函数库中newDate()函数中的参数的解析中不支持形如“2020-01-01”形式)
苹果浏览器safari对new Date(‘1937-01-01‘)不支持,用.replace(/-/g, "/")函数替换掉中划线即可
Pages: 1/5 First page 1 2 3 4 5 Next page Final page [ View by Articles | List ]