2012年个人总结

俨然已到这一年的最后一天,首先,为即将到来的2013年向大家道一声「新年快乐」!然后,又该总结点什么。

上半年进入一家创业公司,公司是做员工福利平台相关产品。建站,做App,销售,行政等等,团队成员个个多面手,亲力亲为。现在已有几家企业在使用(富力地产,保利地产,交行等)。从无到有,很是享受这一过程,不论结果如何,但求过程的酣畅!COME ON,Startup!

一直希望收获爱情。于它,我还真束手无策,因自卑,不主动,不争取,错失一位经同学介绍的非常好的女生。要勇敢,要担当!

2012年接触了产品,管理,移动开发等,但还是感觉很不充实,总是有一种时不我待的恐惧感。“末日”终究没来临,所以还是计划计划2013年:

1)生命的伴侣
2)务必多多写blog。(这个执行力太差!)
3)移动互联开发技术和WEB前端技术
4)搞点“物流”业务

不成文的总结一番,遗憾依旧,年年如此!

最后,祝愿朋友们在新的一年更好的实现个人价值,做的事情更有意义,同时也让自己和家人生活得更好一些。

岁月既往

不经意间,已有半年没有更新blog。只是发现,越来越不想表达。

看到这么一句话,“知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得”。安而后得,细细思!

岁月既往,不可复追。

下一站,家!

Google Analytics推出“页面分析工具”,帮助网页设计人员改进网页

今天,Google Analytics团队在官方博客上介绍了一个新功能:Browser-Size Analysis(浏览器大小分析)。该功能通过分析网页不同位置访客浏览的热度来引导网页设计人员将最重要的信息或按钮放在最显眼的位置上。

根据官方博客的解释,这项功能被开发出来是因为人们用越来越多的设备来登陆网页,设备终端的浏览器大小和屏幕分辨率参差不齐,如果网页信息和按钮分布不科学的话,访客往往找不到他想要的信息。

比如下面这张图,由于“Donate”按钮位置太低(纵坐标550像素),最终导致只有70%的人能看到这个捐赠按钮,另外30%的用户便会因为未看到此按钮而流失。

这种技术的原理和“眼球追踪热度图”类似,Google Analytics团队根据浏览器显示大小、屏幕尺寸来对网页上不同区域设置标出网站访客浏览率比例。当站长在使用Google Analytics该功能时,鼠标放在任何位置都可以看到这个地方的浏览热度,然后可以根据情况来调整页面设计,以求访客能以最快的速度找到最重要的信息,提高网站转化率和增强用户体验。

此功能属于Google Analytics “In-Page Analytics”(页面内分析)的一部分,并会在接下来的几周内陆续开放给Google Analytics用户使用。通过点击“Browser Size”按钮,可以随意查看页面任何地方被访客看到的比例。勾选“Show percentiles”(显示百分位)选项,则能看到不同比例覆盖的区域。

来源:36氪

醒时

五月,工作的一个终点,亦是一个起点。对于终点,只能说:兄弟们,相濡以沫,不如相忘于江湖~

而起点,还是听年终总结吧。很高兴能按时完成某些任务,虽然很累。

其实,一直都很幸运,但很多时候,不知是自尊还是自卑,终是郁郁寡欢。

深刻自省:珍惜!(晚了么?!)

HTML的BUTTON标签

调试一个JavaScript的程序,相当郁闷(花了不少时间),虽然问题不经意间解决(哥的运气还好~),但还不知道所以然。

简单叙述下该场景:

JS代码(Ajax):

<script>

function search(item) {
items = item.forms.elements;
Ajax.call(…..);
}

</script>

HTML代码:

<form actioin=”javascript:;” method=”post”>
<button onclick=”search(this)”>搜索</button>
</form>

以上是简化的模拟场景。一直跟踪到XMLHttpRequest的onreadystatechange方法,检查到status为0,Firefox给出的提示是:Firefox不知道如何打开此地址,因为协议(Javascript)未知任何程序关联。

用了好多test确保程序无误,但在以上情况下就通不过。当快要绝望的时候,我把button这个HTML标签,加个type=”button”。噢嘢!运行成功。坑爹的!

PS:<button> 控件 与 <input type=”button”> 相比,提供了更为强大的功能和更丰富的内容,所以一开始用了button,没想到这里被“调戏”了下~

.NET 中的哈希碰撞漏洞

哈希冲突攻击的方法是试图将大量数据填充到哈希表内,导致其键值可能存在重复的问题。这些键值的碰撞,大大减缓对哈希表的操作,并且足够多的元素也导致服务器处理它们需要花很多的时间,几分钟(甚至几小时)。这可以阻止Web服务器处理来自其他用户的请求,并导致拒绝服务(这意味着该网站变得反应迟钝或缓慢)。

微软如何处理这个问题呢?

微软在2011年12月29日发布一个更新补丁,该补丁可限制每个 HTTP POST 请求最多包含 1000 个表单域。一旦你更新了这个补丁,那么你的表单不能过超过1000个表单字段,如果超过将会抛出如下异常:

System.Web.HttpException:
The URL-encoded form data is not valid. ---> System.InvalidOperationException: Operation is not valid due to the

current state of the object.
   at System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded()
   at System.Web.HttpValueCollection.FillFromEncodedBytes(Byte[] bytes, Encoding encoding)
   at System.Web.HttpRequest.FillInFormCollection()
   --- End of inner exception stack trace ---
   at System.Web.HttpRequest.FillInFormCollection()
   at System.Web.HttpRequest.get_Form()

关键内容是 ThrowIfMaxHttpCollectionKeysExceeded. 如果你发现有这个字符串表示表单域超出了限制,你可通过修改 web.config 来修改这个限制值:

<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="some number here"/>
</appSettings>

英文原文,OSCHINA原创翻译

PHP客户端使用.NET发布的WEB服务

Web服务相关知识在此不叙述,还有保证PHP SOAP扩展已开启。

.NET发布Web服务相当容易。步骤简单叙述如下:

1)在Visual Studio环境(2010为例)的资源管理器,右键点击网站项目,然后选“添加web引用”,弹出如下图框:

2)因为本地测试,选择“此解决方案中的Web服务”,然后选择已经建立好的.asmx文件(在此以Service.asmx为例)。

3)到此便建立好Web Service服务。例:http://localhost:3395/WebSite2/Service.asmx

App_Code/Service.cs代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

///
///MyWebService 的摘要说明
///
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService {
    public Service () {
        //如果使用设计的组件,请取消注释以下行
        //InitializeComponent();
    }

    [WebMethod(Description = "This is a test"]
    public string getName(string name) {
        return "This is " + name;
    }
}

 

现在由PHP SOAP扩展使用该Web服务:

$wsdl = "http://localhost:3395/WebSite2/Service.asmx?wsdl";
$client = new SoapClient($wsdl, array('trace' => true));

// 传递函数
$params = array('name' => 'php');
$ret = $client->__soapCall('getName', array('parameters' => $params));

echo $ret->getNameResult  // 最后打印: This is PHP

因为不同的程序通信,这里必须用soapCall()方法调用一个SOAP操作。调用后可以在WSDL(http://localhost:3395/WebSite2/Service.asmx?wsdl)查找其自动产生的属性或方法。

萌然心动

这年,不觉中已过了一半的一半。在不知短暂还是漫长的时间里,依然迷茫地穿过,却很是期待。

有了等待,有些事,有些人,终会忘却。

有言,该懂的会懂,不相信这个“必然”,却也希望着。但如果有选择,一定有所 改变。

这些天结束了迷蒙湿淋的天气,虽然没有刺眼的阳光,心情还是灿烂。清明已过,下来气清景明,用心感受生活中每一抹深深浅浅的萌然心动……

SQL Server 2012 的12个激动人心的功能

微软已经发布了众所期待的 SQL Server 2012,让我们来看看这个新版给我们带来了什么激动人心的功能吧。

1. AlwaysOn – 这个功能将数据库的镜像提到了一个新的高度。用户可以针对一组数据库做灾难恢复而不是一个单独的数据库。

2. Windows Server Core 支持 – Windows Server COre 是命令行界面的 Windows,使用 DOS 和 PowerShell 来做用户交互。它的资源占用更少,更安全,支持 SQL Server 2012。

3. Columnstore 索引 – 这是 SQL Server 独有的功能。它们是为数据仓库查询设计的只读索引。数据被组织成扁平化的压缩形式存储,极大的减少了 I/O 和内存使用。

4. 自定义服务器权限 – DBA 可以创建数据库的权限,但不能创建服务器的权限。比如说,DBA想要一个开发组拥有某台服务器上所有数据库的读写权限,他必须手动的完成这个操作。但是 SQL Server 2012 支持针对服务器的权限设置。

5. 增强的审计功能 – 现在所有的 SQL Server 版本都支持审计。用户可以自定义审计规则,记录一些自定义的时间和日志。

6. BI 语义模型 – 这个功能是用来替代“Analysis Services Unified Dimentional Model”的。这是一种支持 SQL Server 所有 BI 体验的混合数据模型。

7. Sequence Objects – 用 Oracle 的人一直想要这个功能。一个序列(sequence)就是根据触发器的自增值。SQL Serve 有一个类似的功能,identity columns,但是现在用对象实现了。

8. 增强的 PowerShell 支持 – 所有的 Windows 和 SQL Server 管理员都应该认真的学习 PowderShell 的技能。微软正在大力开发服务器端产品对 PowerShell 的支持。

9. 分布式回放(Distributed Replay) – 这个功能类似 Oracle 的 Real Application Testing 功能。不同的是 SQL Server 企业版自带了这个功能,而用 Oracle 的话,你还得额外购买这个功能。这个功能可以让你记录生产环境的工作状况,然后在另外一个环境重现这些工作状况。

10. PowerView – 这是一个强大的自主 BI 工具,可以让用户创建 BI 报告。

11. SQL Azure 增强 –  这和 SQL Server 2012 没有直接关系,但是微软确实对 SQL Azure 做了一个关键改进,例如 Reporint Service,备份到 Windows Azure 。Azure 数据库的上限提高到了150G。

12. 大数据支持 – 这是最重要的一点,虽然放在了最后。去年的 PASS(Professional Association for SQL Server)会议,微软宣布了与 Hadoop 的提供商 Cloudera 的合作。一是提供 Linux 版本的 SQL Server ODBC 驱动。主要的合作内容是微软开发 Hadoop 的连接器,也就是 SQL Server 也跨入了 NoSQL 领域。

SQL Server 2012 对微软来说是一个重要产品。微软把自己定位为可用性和大数据领域的领头羊。

原文链接,OSChina.NET 原创编译

MySQL自带的帮助文档

利用好MySQL自带的帮助文档,可以快捷的解决些问题(不必大动作的在MySQL官方网上查询):比如,当前版本是否支持某个功能,哪些函数;某个字段类型的取值范围;甚至忘了某个操作语法。以下举例说明下。

1) 按层次看帮助。

比如,显示所有可供查询的分类:

mysql> ? contents

这里列出的分类,又可以按“? 类别名称”对其内容进一步的查看。比如,支持哪些数据类型:

mysql> ? data types

在这列出的类型中,又可以进一步查看具体类型的具体介绍。比如:

mysql> ? char

以上看出,可以通过“? 类别名称”有层次性查找自己所有关心的主题内容。

2) 按关键字看帮助

mysql> ? show  // 可以列出show命令能查看什么

mysql> ? create table   // 可以查看create table的具体语法