关于禁用浏览器缓存设置

1.禁用IE浏览器缓存相关

  工具->internet选项->浏览历史记录->设置->
  此处可以设置检查所存网页的较新版本,有如下选项:
   (1)每次访问网页时
   (2)每次启动Internet Explorer时
   (3)自动
   (4)从不
  可以根据需要设置不同选项

2.禁用firefox缓存设置

  操作:
   工具->隐私->历史(firefox将会:)下拉列表框中的选项设置:
      (1)记录历史
      (2)从不记录历史
      (3)使用自定义历史记录设置
   可以根据需要配置自己的缓存方式,其中的‘使用自定义历史记录设置’可以更方便的保存相关信息。
另:工具->高级-网络-网络内容缓存—–此处会有立即清除选项,如需‘自动清除缓存’可以在以上的选项‘使用自定义历史记录设置’中配置
   firefox地址栏中输入:about:cache 可以查看当前的浏览器历史记录等信息
   firefox地址栏中输入:about:config 可以配置浏览器属性

浏览器清除历史记录快捷键:Ctrl+Alt+Delete

解决页面由单引号、双引号、换行符导致的问题

最近在做驴妈妈旅游网站改版时,遇到了一个关于数据在界面显示的问题。网站使用的是el表达式作为页面数据显示,但在使用过程中,如果读取的字符串中存在‘”’(引号),则会出现错误

  例子:title="海螺沟自由行,观"日照金山" 泡温泉,住逸家温泉酒店+金山饭店双人标间_双人套票(CD)"  提示信息title显示:海螺沟自由行,观

  针对该问题可以使用如下解决方案

  (1)使用替换:title="${title?if_exists?replace(‘"’,)}"

  (2)用EL表达式的自定义函数

首先写格式化字符串的方法。

01
02
03
04
05
06
07
08
09
10
11
//这里我将换行符转化为空格," 转化为 \",'转化为 \'; ,也就是转化为JS的转义格式
public static String fs(String s){
 if(s!=null && s.length()>0){
 s = s.replaceAll("(\r|\n|\r\n|\n\r)", " ");
 s = s.replaceAll("\"","\\\\"+"\"");
 s = s.replaceAll("\'","\\\\"+"\'");
 return s;
 }else{
 return "";
 }
 }

WEB-INF下创建文件夹tags,用来存放标签文件。

然后在tags文件夹下创建formatForJS.tld文件,描述自定义函数。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8" ?>
 version="2.0">
 <description>A tag library exercising SimpleTag handlers.</description>
 <tlib-version>1.0</tlib-version>
 <short-name>SimpleTagLibrary</short-name>
 <uri>/fs</uri>
<function>
<description>format string value for JS</description>
<name>fs</name>
<function-class>kyo.org.ClassName</function-class>
<function-signature>java.lang.String fs(java.lang.String)</function-signature>
</function>
  
</taglib>

配置web.xml

1
2
3
4
5
6
7
8
<jsp-config>
<taglib>
<taglib-uri>http://www.2016k.com</taglib-uri>
<taglib-location>
/WEB-INF/tags/formatForJS.tld
</taglib-location>
</taglib>
</jsp-config>

在JSP页面的应用.
1
2
3
4
<%@ taglib prefix="k"  uri="http://www.2016k.com"%>
<script type="text/javascript">
alert('${k:fs(param)}');
</script>

如果param中含有单引号,就不会报脚本错误了。
以上代码,在tomcat6下测试通过,但是如果你的应用是部署在Websphere下,则还有需要注意的地方。

互联网项目管理要点

互联网项目,会定一个计划发布日期,然而这 个项目有个隐藏的实际合理发布日期。因为软件开发并不是一个直接添加资源就可以加快速度的过程,所以这个实际合理发布日期是在现实资源合理利用前提下一个 客观存在的最可能早的完成时间。项目进展的过程,其实也是发现这个隐藏的合理发布日期的过程。

从管理的角度来讲,当然是尽可能的赶上计划的 发布时间,或者尽可能快的完成项目。但是因为多方面因素的影响,项目管理是一个欲速则不达的过程。如果这个计划发布日期早于这个实际合理发布日期,那你越 往这个不合理的日期赶,工期内积累的问题就越多导致后期收尾的时候爆发,结果反而可能连合理发布日期都赶不上。借用《让子弹飞》里面的一句话,步子迈得太 大了,容易扯着蛋。给项目组定一个个合理的看得见的小目标,步步为营,一步一步朝着看得见的并且合理的每一个小目标前行,每一个小目标的积累,才能最终走 向项目的成功。

所以务实的项目经理应该认识到如下几点:

1. 项目组可以以快节奏的步伐在前行,但是项目经理本身一定要清晰的认识到,我们明面上是在赶那个计划发布日期,但是项目组实际的目标应该是那个客观存在的合理发布时间。

2. 随着项目的进行,那个客观存在的合理发布时间会逐渐明朗。它与计划发布时间的差异也逐渐显示出来。此时有些项目经理往往会通过加资源的方法来尝试缩短这个 合理发布时间。但是真实的情况是,除非你前期的资源配置不合理,不然在这种情况下加资源,对项目帮助不大。这个地方无须多说,有疑问的人,去看一下《人月 神话》就知道了。

3. 项目经理必须有一些坚持。领导或者业务部门经常会有一些压力下来,要求赶那个计划发布时间,同时要求你想尽任何办法去赶上这个计划发布时间。而现实状况 下,如果你能够调整一些需求的范围,你还是有戏。不然,你要嘛此时报喜,后期报忧,要嘛此时报忧,后期不忧。掩盖问题往往可以让人开心,但是不代表问题不 存在。

4. 项目经理能做好的其实就5点:

 a. 控制好了需求;

 b. 及早的发现问题,报告出来并解决;

 c. 不出现资源空闲的状态;

 d. 利用好每个资源去做擅长的事,快速有效的推进各种任务;

 e. 不浪费资源去做一些对项目目标总体没有帮助的工作,或者一些后期会推翻的需求。

基于这样的认识下,本文有如下几个要点:

互联网项目管理要点

#项目责任感

项目经理应该有这个的责任感,你要为这个项目的任何一件事情负责,因为这个事情会影响到整个项目的工期,而你为整个工期负责。

一个例子,我发现现在的项目有一个紧急的问题需要项目组外的人帮忙解决。于是我把邮件发出去,通知Wendy赶紧处理这件事情。

几天过去了,Wendy还没有处理。我想,我已经把问题说出去了,接下去就是Wendy的事情。

那个问题还是没有解决,我的整个工期受影响了。

事后追究起来,我说,我已经发出邮件了,是Wendy没有及时处理。

Wendy说,我事情那么多,我怎么知道这件事情这么急。

项目工期受影响了,谁的责任?Wendy吗?不,是我自己。

作为一个对整个项目负责的项目经理,没有人会比你更在意项目的进展。让一个不负具体负责的人去帮你推进你的项目,远远不如你自己用心推进来得有效。

#项目经理是打杂的

项目组里面的每个专业成员,他们都有擅长的领域,做他们擅长的事情是他们的快乐。而不属于他们擅长的事情,对他们来说就算是杂事一般。

项目经理一定要有一个这样的意识:

项目经理就是打杂的,帮助项目组成员把杂事处理掉,让他们可以专心的做他们擅长的事情,这样对项目组来说才是高效的。

一个简单的例子,测试人员Tracy在测试某个功能的时候,突然发现她需要一个账号,同时开通这个账号的某些特定的权限,同时她需要一些服务器的信息,比如主机名,某些功能文件夹存放的路径。但是她不清楚这个账号和权限要找谁开通,这些服务器的信息谁有。

Tracy是个喜欢做测试的人,但是她不喜欢跟项目组外的人沟通,特别是还要到其他部门去找人问人。这些对她来说就是杂事,而且她对其他部门的人也不熟,一个一个问明显效率不高。

你可以自己去帮她找到需要的信息,也可以找一个对这方面比较熟的人去解决,但是你绝对不能让她自己去做。

“为什么我的手下不能解决这么简单的问题?如果连这种事情都要我来帮忙的话,那我这个项目经理做来干什么?她当项目经理得了。“这种想法千万是不可取的。

你当这个项目经理的目的并不是管人,指使这人做什么那人做什么。你的目标只是把项目快速推进完成。

#控制需求

在所有因素当中,需求对项目的影响力,至少占50%以上。能够控制好需求,项目就成功了一半。控制需求,有如下几点:

1. 必须有人能够当好产品经理这个角色

一 个项目组当中,其实人人都可以影响需求。但是管理需求的,是产品经理这个岗位。如果你的项目组当中已经有一个很好的产品经理,恭喜你,项目经理可以轻松很 多。但是世间事不会如此幸运,因为现实生活中,并不是所有的产品经理都这么棒。作为一个对项目完成负责的项目经理,当你们组没有一个好的产品经理的时候, 你必须意识到,你至少要扮演好一半的产品经理,除非你本身对项目的完成也没什么责任感。

2. 管理需求的人要平衡工期和功能友好程度

需求其实有两个极端,一个是尽善尽美,尽可能的让功能更友好,用户体验更佳;一个是尽早交付,一切改善性的需求都可以牺牲。

只满足前者,项目工期可能会不断的拖延,因为很多功能的工作量其实是在细节的优化,而不是主要流程的完成。只满足后者,很可能会出现一个让用户很不满意的产品。

一个有经验或者产品意识很好的产品经理,可以很好的平衡好这两点。如果产品经理不能平衡好,那只好依赖项目经理来平衡。这点,如果产品经理或项目经理不是天才的话,只能通过经验来学习。

比 如我们在做一个注册的页面,里面有个城市的输入框。城市的输入框可以做得很友好。如果要项目尽早完成,那么这个输入框我们只要让用户自己输入就行。一个比 较好的设计就是两个下拉环框,一个选择省份,然后再选择城市。但是一个更好的设计是让用户既可以选择,也可以自由的在这个输入框里面输入拼音首字母,汉 字,然后系统就会自己显示相匹配的城市让用户选择。后两者的改进肯定会花时间,但是如果这两种改进都不做,让用户只是自由输入的话,后期维护的时候就会出 现用户输入不标准的城市数据,如果我们需要用户的城市数据做一些其他功能,就会有错误数据的风险。

3. 懂

从Oracle迁移数据到MySql方法大全

最近工作需要从Oracle迁移大量数据到MySql,由于涉及不深,便网上学习了很多的方法,现总结Oracle迁移大量数据到MySql如下:

一,使用mysql工具迁移数据

1. MySQL Administrator —— MySQL 服务器的管理利器。这个工具解决了MySQL管理的很多问题,譬如:可以让你简单通过GUI界面模式选择热备份数据库计划,或者是冷备份,你可以方便的选择备份时间,每周或是每日的什么时候进行。
2.MySQL Query Browser —— 查询工具,使用起来也很简单,而且支持调试等功能。
3.MySQL Migration Kit —— 管理工具
4.Navicat for MySQL —— 数据库管理工具

推荐使用Navicat for MySQL功能强大,简单方便(2018/12/18更新)效果如下

oracletomysql

 

二,从oracle导数据到mysql,使用命令
(1)在使用pl/sql developer生成的sql文件然后插入到mysql时由于to_date()和chr()问题,insert时会失败。
(2)phpmyadmin里面有个SQL compatibility mode 的 Oracle选项,具体作用还未知。
(3)DBA高效数据迁移方法:先导出成文本,然后LOAD DATA 命令直接导入。
建议用

select u_id||’&’||u_pid||’&’||str_1||’&’ ||str_2||’&’ ||str_3||’&’||tm_create_time   from table_foo

这样的形式,在sql plus里面导出用&分割的数据,然后在mysql里面用

load data local infile ‘~/table_foo’ into table tbl_gbase_inf fields terminated by ‘&’;

导入。

如果str里面包含多行文本,而默认是文本文件里一行对应数据库里一行数据的,多行文本被误认为是多行数据,格式就不对,导入出错。可以在pl/sql developer里面进行以下查询:

select t.*,’$’ from tbl_foo t

用$作为一行数据的结束符,这样即使遇到回车,mysql仍然能够正确处理了。然后把结果全选,右键菜单导出结果到TSV文件(”导出结果”->”TSV 文件”)。这个文件的格式就是一行一项数据的文本文件了,而且字段之间是用tab分隔的,正好就是load data命令的默认分隔符。
在select语句里加了一个’$’作为最后一个域,也就是说在文本文件里,它前面会有一个tab,后面会有一个回车换行。所以要用ultraedit把’\t\$\r\n'(Ultredit正则)都替换成’$’,这样一搞,文本文件基本上没法看了,但在load edit眼里,它就是一个正好合胃口的美味的数据源了。用如下命令导入:

load data local infile ‘~/table_foo’ into table tbl_gbase_inf lines terminated by ‘%’;show warnings;

回车搞定。可以在文件名和into之间插上replace关键字,自动替换掉原有数据。 注意,load data可能不是立即生效的,可以show processlist;看看是否被delay了,过一段时间表没人访问应该就会插进去了。  另外,如果插入的中文显示出来是乱码,就用
show   variables   like   “%char%”;

看看结果是不是长这样的:

+————————–+—————————-+
| Variable_name            | Value                      |
+————————–+—————————-+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+————————–+—————————-+

如果database或server的字符集不是utf8,用set 命令将其改为utf8,然后重新load data,应该就不会是乱码。

三,牛人编写的Oracle到MySQL的数据迁移工具

从Oracle迁移数据到MySQL的小程序,ora2mysql下载 ora2mysql
使用方法如下:
D:\>ora2mysql user1=scott/tiger user2=/@localhost:3306:test table=emp
0 rows processed at 2011-04-02 15:03:08.
2 rows processed at 2011-04-02 15:03:08.

在速度方面,由于不支持Array操作,因此速度比较慢,希望Oracle能让SQL * Plus也能连接MySQL库,或改造一下MySQL客户端,增加Array接口。

D:\>ora2mysql user1=scott/tiger user2=/@::test table1=emp_bak table2=emp
0 rows processed at 2011-04-02 19:48:51.
100000 rows processed at 2011-04-02 19:49:17.
200000 rows processed at 2011-04-02 19:49:42.
300000 rows processed at 2011-04-02 19:50:07.
400000 rows processed at 2011-04-02 19:50:32.
500000 rows processed at 2011-04-02 19:50:57.
600000 rows processed at 2011-04-02 19:51:23.
700000 rows processed at 2011-04-02 19:51:48.
800000 rows processed at 2011-04-02 19:52:14.
900000 rows processed at 2011-04-02 19:52:39.
1000000 rows processed at 2011-04-02 19:53:03.
1100000 rows processed at 2011-04-02 19:53:29.
1200000 rows processed at 2011-04-02 19:53:56.
1300000 rows processed at 2011-04-02 19:54:24.
1400000 rows processed at 2011-04-02 19:54:53.

目前还不支持BLOB类型, 也不支持字符集的设置

作者地址:http://www.anysql.net/tools/oracle-mysql-data-migration-tool.html/comment-page-1#comment-4146

 

Microsoft.Jet.OLEDB.4.0异常解决方案

在使用火车采集器的过程中,火车采集器打开后自动关闭,网上查了很多资料,缺一直没有一个很好的解决方案。仔细查看了一下,排除了一般性的问题,猜想发生无法使用火车采集器的原因可能是由于他使用access数据库而引起的。出现这样的错误为:”未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 提供程序”

下面是在网上找的相关资料,以后在其他应用中可能会遇到相似情况,边收集如下
网上的解决方式大概如下,但是行不通:
需要注意的问题和解决方法:
1.Microsoft.Jet.OLEDB.4.0不要写成Miscrosoft.Jet.OLEDB.4.0,;
2.Data Source不要写成“Data Sourse”,
3.检查是否安装了Office
4.重新安装注册MDAC28.exe (一般你的安装目录里有或者到微软的官方网站上下)

5.如果是64位平台,也可能出现这种情况;解决方法:生成->配置管理器->平台->点击Any Cpu选项卡->新建->新建平台->X86

因为程序原先在 Windows 2003 下是行的,连接串本身应该没错,Office 2010 我安装了, MDAC28我下下载了,打开执行时解压缩窗口就没了,不知道有没有安装,而微软官方说MDAC28支持X86,似乎不支持64位系统,我现在是64位系统

1、怎么解决”未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 提供程序”这个问题?
2、怎么查看我有没有安装“Microsoft.Jet.OLEDB.4.0”?

火车采集器启动后自动关闭的解决方案:下载Jet40SP8_9xNT.exe(网上查询一下很多下载地址,我在微软下载)后安装即可。

地址:http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=4335216c-8cdd-4168-a030-46f815d3f5cd&DisplayLang=zh-cn