X.d 笔记

小Web,大世界

0%

这里说的 autocomplete 是 HTML 的 form表单里面 autocomplete 属性,并不是什么 jquery 插件什么来的,今天看到这个属性不错,来研究研究。

比如登录163邮箱时,肯定会有这样的提示

autoComplete

不管你保不保存,下次输入账号时都可以看到曾经输过的帐号了。

autoComplete

Ajax登录

比如一个简单登录页面的代码可能是这样的:

<form action="/login">
<label for="account">account</label><input type="text" name="account" />
<label for="passowrd">account</label><input type="passowrd" name="passowrd" />
<input id="submit" type="submit" value="submit" />
</form>
阅读全文 »

在 Java 中怎么获取多少用户同时在线,怎么只允许一个用户在线,怎么强行把一个用户T下线?现在常用的几种框架好像没有提供相应API,所以自己使用 ServletListener 做一个

想法

一般有这样的需求时马上会想到下面两点:

  1. HTTP是无状态的,怎么记录在线人数,下线了怎么办?
  2. HTTP只能客户端向服务端发请求,不能服务器推信息给客户端,怎么T用户下线?

理论上肯定是不可行的。好吧,办法目前能想到的只有利用session了。在web.xml里面可以有这样的配置

<session-config>
  <session-timeout>5</session-timeout>
</session-config>

这里设置的是Session超过5分钟就会过期。Tomcat默认是30分钟,用来统计用户数的话,越小越精确,但如果是一个需要正常登录才能访问而且信息都在Session里面,也要考虑用户忍耐度-_-!

用户每创建一个Session都会有产生唯一的SessionId,如果没有过期,后续与服务器的交互SessionId是不会变的,就利用SessionId来实现这个需求。

监听器

首先,在web.xml里面加入监听器,监听器的作用是维护一个全局的在线用户列表

阅读全文 »

HTML5 规范定义了 File Api,可以和以往 Flash 上传一样,读取选择的文件信息,还可以监听上传进度显示在页面上。

跨域

使用flash实现时,若文件上传到的地址和当前上传的页面不在同一个域下面,则要加入 crossdomain.xml 跨域允许文件,Flash 会先去取上传地址上的文件看当前域是否得到许可,如果可以则执行上传。

HTML5 上传也有安全机制,一般情况下是不允许跨域上传的,上传前会先去使用http options方法探测有没有权限,地址为上传地址,所以要在上传地址里面加入允许。

在 Java 中,上传地址一般是 Servlet,需要在doPost和doOptions加上Header

doPost主要用于上传,doOptions用于上传过程中监听进度。也就是说没有加doOptions跨域允许也是可以上传的,只无法获取上传的进度,和表单上传没有什么区别。

阅读全文 »

各种主流语言一般都讲究个面向对象,虽然不知道面向对象的各种好处是不是向介绍里面鼓吹的那样,但程序猿可能都习惯了。

所以一般程序猿们用过一段时间 JavaScript 后,就会感觉一片恶心,享受便利的同时又总是吐槽几名不爽。那让JavaScript面向对象是不是会爽点?

阅读全文 »

有数据库的地方就少不了连接池。当然现在你导入的框架,包什么的都包含了连接池的相关工具,但最近做的项目特小,半个包都不想用,就自己写一个算了。

开始动手几经反转后终于成功写出一个简单的连接池,功能没有 jar 包里面的 DBConnectionPool强大,但足已经满足我的需求了,而且只有100行代码,简单方便!

下面是我的最终代码,朋友们拿去使用时请改为自己的配置

阅读全文 »

简单写个在java里面通过反射功能使字符串转对象的方法。

首先对象很简单,只有一个id与name:

public class DataInfo {
    private String id ="";
    private String name = "";
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    } 
}

转换方法如下:

阅读全文 »

今天看了一篇反面模式,感觉很有趣,说中了工作中的相当多的问题,转载一下:
原文出自:维基百科

反面模式,转至wikipedia

软件工程中,一个反面模式(anti-pattern或antipattern)指的是在实践中明显出现但又低效或是有待优化的设计模式,是用来解决问题的带有共同性的不良方法。它们已经经过研究并分类,以防止日后重蹈覆辙,并能在研发尚未投产的系统时辨认出来。

Andrew Koenig在1995年造了_anti-pattern_这个词[3],灵感来自于GoF的《设计模式》一书。而这本书则在软件领域引入了“设计模式”(design pattern)的概念[4]。三年后antipattern因《AntiPatterns》这本书而获得普及,而它的使用也从软件设计领域扩展到了日常的社会互动中。按《AntiPatterns》作者的说法,可以用至少两个关键因素来把反面模式和不良习惯、错误的实践或糟糕的想法区分开来:

  • 行动、过程和结构中的一些重复出现的乍一看是有益的,但最终得不偿失的模式
  • 在实践中证明且可重复的清晰记录的重构方案
    很多反面模式只相当于是错误、咆哮、不可解的问题、或是可能可以避免的糟糕的实践,它们的名字通常都是一些用反话构成的词语。有些时候陷阱(pitfalls)或黑色模式(dark patterns)这些不正式的说法会被用来指代各类反复出现的糟糕的解决方法。因此,一些有争议的候选的反面模式不会被正式承认。

这个概念很容易推广到工程学以及工程以外需要人们付出努力去争取的领域。尽管在工程学以外很少用到这个术语,但其概念是通用的。

由于内容实在太多,就简单看看描述!分别从社会和组织结构软件工程 两大类分析

阅读全文 »

HTML5规范新出的很多标签,比如header,footer等。先前,一般页面查看源代码时,使用看到满屏的DIV,HTML5的这些新标签实际上就相当于是有语义的div,在合适的位置,在合适的位置取代div,会使页面结构看起来更舒服。对SEO 也更友好。

还有一些标签如 time、source、mark 等,也可以认为是有语义的 span,不过支持HTML5的浏览器已经过这些标签做了处理,可以富显示。

除了一些画布,音乐视频等标签不算,有语义的标签如下

<header>    定义 section 或 page 的页眉。
<footer>    定义 section 或 page 的页脚。
<nav>    定义导航链接。
<section>    定义 section。
<article>    定义 article。
<aside>    定义页面内容之外的内容。

<details>    定义元素的细节。
<figcaption>    定义 figure 元素的标题。
<figure>    定义媒介内容的分组,以及它们的标题。
<hgroup>    定义有关文档中的 section 的信息。
<mark>    定义有记号的文本。
<source>    定义媒介源。
<summary>    定义 details 元素的标题。
<time>    定义日期/时间。

这些标签在Chorme,FireFox,Safari等浏览器中都已经支持,在IE9或以上的版本也支持,如果想兼容IE9以下的浏览器,可以插入一个JS去兼容,然后就可以放心的使用HTML5的新标签进行编码了.

  • header/footer 标签:比较适合页头尾,或是一个文章的头尾使用
  • nav 标签: 比较适合头部或侧面导航,分页等地方使用
  • article : 代表一篇文章或一个评论等。
  • aside : 可以用于显示与文章无关的东西,比如广告
  • section : 一个片断,可自由发挥,片段里面的内容大体都是描述同一类的东西。或是文章的一个小片段。
阅读全文 »