Archive for the '杂七杂八' category

Google app engine java中文乱码

八 14 2010 Published by zdy under 杂七杂八

今天花了两个多小时在解决这个乱码问题上
1.eclipse中能调成utf的地方,改成utf8
2.项目中文件的编码使用utf8
3.最后一个,也最重要的,在appengine-web.xml文件中添加

<div id="_mcePaste"><property name="file.encoding" value="UTF-8"/></div>
<div id="_mcePaste"><property name="DEFAULT_ENCODING" value="UTF-8"/></div>

最后得到变成这个样子

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
	<application></application>
	<version>1</version>

	<!-- Configure java.util.logging -->
	<system-properties>
		<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
		<property name="file.encoding" value="UTF-8"/>
		<property name="DEFAULT_ENCODING" value="UTF-8"/>
	</system-properties>
	<sessions-enabled>true</sessions-enabled>
</appengine-web-app>

No responses yet

关于 URL 的一些不可不知的知识

八 09 2010 Published by zdy under 互联网, 杂七杂八

一个 URL 必须唯一地,永久地代表一个在线对象

URL 的最基本的使命是唯一地代表 Internet 上的一个对象,URL 必须和 Internet 上的对象一对一匹配。然而现实中,这很难实现,我们经常可以通过多个 URL 到达同一个页面,比如, http://login4.net/product/tvhttp://login4.net/product?name=tv,这种情形在现代 CMS 中更是比比皆是,针对这个问题,SEO moz 有一篇很好的文章,讲到了如何使用 Canonical URL 机制解决站点中的重复 URL 问题

URL 应该是永久的,这就要求你在站点上线前就非常严谨地规划 URL。如果有一天,你不得不更改 URL,一定使用 HTTP 301 机制,告诉浏览器和搜索引擎,你的那个 URL 所代表的对象,已经搬迁到新地址,这个机制可以保证你旧地址所获得 PR 不会被清零。

尽可能用户友好

这是 URL 设计的根本,你的 URL 应该为最终用户而设计。保持 URL 友好的一个好办法是在保证可读性的同时让它尽可能短。比如 /about 就好过 /about-acme-corp-page,当然,保持简短不能牺牲可读性, /13d2 一类的地址短则短矣,但并不友好。如果要在 Twitter, Facebook 一类的社会媒体网络分享你的 URL,可以使用 Bit.ly 一类的网址缩短工具,但这种工具产生的缩短 URL 并不友好,在 WordPress 一类的 CMS 中,可以使用 PrettyLink Pro 或 Short URL plugin 一类的可控制的地址缩短插件。

URL 的设计切忌使用一些对用户来说没有意义的内容,比如数据库的 ID 号, /products/23 这样的 URL 地址对用户是极不友好的,应当使用 /products/ballpoint-pen 一类的地址。

保持一致性

站点内的所有 URL 必须保持一致的格式和结构,这样可以为用户带来信任感,如果你必须更改 URL 格式和结构,需要使用 HTTP 301 机制。

可预测的 URL

这也是 URL 一致性的一个表现,如果你的 URL 拥有很好的一致性,用户可以根据 URL 猜测别的内容的 URL,假如 /events/2010/01 指向 2010 年 1 月份的日程内容,那

  • /events/2009/01 应当指向 2009 年 1 月的日程。
  • /events/2010 应当指向 2010 年全年的日程。
  • /events/2010/01/21 应当指向2010年1月21日的日程。

URL中的关键词

URL 中应该包含本页重点内容的关键词,比如 /posts/2010/07/02/trip-best-buy-memory-cards 一类的 URL 本身就是对页面内容的反应。在 URL 包含重点内容关键词,也可以提高 SEO 性能。SEO 的一个很重要的原则就是,在 URL 地址中包含内容关键词。 关于 URL 的技术细节

下面说的是有关 URL 的一些技术细节。

URL 不应包含 .html, aspx, cfm 一类的后缀

这类信息对最终用户是没有意义的,却占了额外的空间,一个例外是 .atom, .rss, .json 一类的特殊地址,这类地址是有特别的意义的。译者注:在某些虚拟主机式 Web 服务器,这种做法未必现实。

URL 不应包含 WWW 部分

WWW 部分并不包含任何意义,是一个额外的负担,不友好。可以使用 HTTP 301 机制,将 www.domain.com 定向到 domain.com 。

URL 的格式

URL 的格式如下:

domain.com/[key information]/[name]/?[modifiers]

Key information 部分一般代表信息的类型或类别。Modifiers 部分则属于查询字符串范畴,它不应当代表数据结构,应当代表数据的修饰。Key information 部分应当尽可能简短,同时应当表现出一种层级关系,比如http://domain.com/posts/servers/nginx-ubuntu-10.04 ,或 http://domain.com/news/tech/2007/11/05/google-anno unces-android

Google News 对新闻源有一个有趣的要求,Google 要求新闻源页面的 URL 中必须包含至少 3 位唯一的数字,因为他们会忽略年份数字,因此,应该使用一个5位或5位以上的数字。另外,也应该提供 Google News 站点地图 。如果你想向 Google 提供新闻,必须按这样的结构提供 URL,当然保持一致性,可以预测性也是必需的。

使用小写字符

URL 中所有字符都应使用小写,这更容易阅读。

URL 中包含的行为元素

URL 查询字符串中可能包含一些表示行为的元素,比如 show, delete, edit 等。非破坏性的行为可以体现在 URL 中,破坏性的行为应该使用 POST 。

使用 URL 友好字符

在 URL 中体现网页标题的时候,往往会用到一些特殊字符,应当把它们转换为 URL 友好字符:

  • 全部大写字符换成小写
  • 诸如 é 一类的字符应转换成对应的 e
  • 空格使用短划线代替
  • 诸如 !, @, #, $, %, ^, &, * 一类的字符应该使用短划线代替
  • 双短划线应该使用单短划线代替

另外,没有必要的话,避免使用 %20 一类的 URL 逃逸符。

更多观点

Chris Shiflett 建议,可以使用一些类似句子的 URL,如:

chriscoyier.net/authored/digging-into-wordpress/
chriscoyier.net/has-worked-for/chatman-design/
chriscoyier.net/likes/trailer-park-boys
jacobwg.c om/thinks/this-post/is/basically-done

译者补充:URL 的长度上限

URL 的最大长度是多少?W3C 的 HTTP 协议 并没有限定,然而,在实际应用中,经过试验,不同浏览器和 Web 服务器有不同的约定:

  • IE 的 URL 长度上限是 2083 字节,其中纯路径部分不能超过 2048 字节。
  • Firefox 浏览器的地址栏中超过 65536 字符后就不再显示。
  • Safari 浏览器一致测试到 80000 字符还工作得好好的。
  • Opera 浏览器测试到 190000 字符的时候,还正常工作。

Web 服务器:

  • Apache Web 服务器在接收到大约 4000 字符长的 URL 时候产生 413 Entity Too Large” 错误。
  • IIS 默认接收的最大 URL 是 16384 字符。

No responses yet

apache下js文件下载出错

八 01 2010 Published by zdy under 杂七杂八

今天在测试页面的时候突然发现jquery.js文件在下载过程中,后半截文件被替换成上半截文件了,也就是一个文件中下了两个头部信息。
奇怪的是其他js文件又都是好的。
最后总算找到解决方法
将httpd.conf文件中,去掉下面两行的注释:
# EnableMMAP off
# EnableSendfile off

至于为什么,应该就是这个吧
# EnableMMAP and EnableSendfile: On systems that support it,
# memory-mapping or the sendfile syscall is used to deliver
# files. This usually improves server performance, but must
# be turned off when serving from networked-mounted
# filesystems or if support for these functions is otherwise
# broken on your system.

No responses yet

优化css代码,减小对系统资源的占用

七 28 2010 Published by zdy under 杂七杂八

  通过优化CSS代码,减小对系统资源的占用。自己整理出几个能减少系统资源占用的CSS写法,要优化网站的页面加载速度,这些注意点不能忽视!

  一、尽量不要使用*通配符。
  这是以前我自己一直忽视的问题,觉得使用通配符很方便,但没考虑的这是很占用系统资源的,因为这通配符就是将CSS中的所有标签都初始化了,不过用的不用的,过时的先进的,一视同仁,这样,大大的占用资源。在52CSS.com中,也对此知识点有所说明。所以尽量不要贪图方便而使用通配符,应该有选择的初始化标签的样式。

  二、尽量不要使用过小的图片做背景平铺。
  原因是,假如用1px * 1px的图片平铺出一个 300px * 300px的区域,就需要300 * 300 = 60000 次,是非常占用资源的。

  三、无边框。
  很多人经常会这样些的:border:0;其实这只是定义了边框的宽度为0,但边框样式、颜色等还是会被浏览器解析的,所以也是占用了不少的资源,尤其是有些没注意上文提到的第一问题,将所有的标签初始化都定义了border:0; 推荐的写法是:border:none;

No responses yet

互联网上的社会化网络与现实中的差别

七 10 2010 Published by zdy under 杂七杂八

No responses yet

javascript将函数的实际参数转换成数组

六 29 2010 Published by zdy under 杂七杂八

实际参数在函数中我们可以使用 arguments 对象获得 (注:形参可通过 arguments.callee 获得),虽然 arguments 对象与数组形似,但仍不是真正意义上的数组。

值得庆幸的是,我们可以通过数组的 slice 方法将 arguments 对象转换成真正的数组:

var args = Array.prototype.slice.call(arguments, 0);
对于slice 方法,ECMAScript 262 中 15.4.4.10 Array.prototype.slice (start, end) 章节有备注:

The slice function is intentionally generic; it does not require that its this value be an Array object. Therefore it can be transferred to other kinds of objects for use as a method. Whether the slice function can be applied successfully to a host object is implementation-dependent.

《Pro JavaScript Design Patterns》(《JavaScript 设计模式》)的作者 Dustin Diaz 曾指出:

instead of…
var args = Array.prototype.slice.call(arguments, 0); // 怿飞注:下称方法一
do this…
var args = [].slice.call(arguments, 0); // 怿飞注:下称方法二

但二者的性能差异真的存在吗?经过个人简单测试发现:

在 arguments.length 较小的时候,方法二性能上稍有一点点优势,而在arguments.length 较大的时候,方法一却又稍有优势。

2010年1月30日更新(测试地址):几经验证,性能差异不大,反而第一张方法性能稍优势一点,或许由于第二种方法创建新数组产生开销。

最后附上方法三,最老土的方式:

var args = [];
for (var i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}
不过对于平常来说,个人建议使用第一种方法,但任何解决方案,没有最好的,只有最合适:

var args = Array.prototype.slice.call(arguments, 0);

No responses yet

全面兼容ie6,ie7,ie8,ff的CSS HACK写法

六 29 2010 Published by zdy under 杂七杂八

<style type=”text/css”>
#body {
border:2px solid #00f;     /*ff的属性*/
border:2px solid #090\9;   /* IE6/7/8的属性 */
border:2px solid #F90\0;     /* IE8支持 */
_border:2px solid #f00;     /*IE6的属性*/
}
</style>
<div id=”body”>
<ul>
<li>FF下蓝边</li>
<li>IE6下红边</li>
<li>IE7下绿边</li>
<li>IE8下黄边</li>
</ul>
</div>

全面兼容ie6,ie7,ie8,firfox

No responses yet

Discuz 批量添加用户头像

五 17 2010 Published by zdy under 杂七杂八

$dir = './img/'; // 源图片目录
$i = 10; // 开始的导入用户uid
$size = 'big'; // 生成的图片大小 设置大小 (small,middle,big)

$files1 = scandir($dir);
foreach($files1 as $value) {
if($value!='.' && $value!='..' && $value!='Thumbs.db') {
$newdir = get_avatar($i,$size);
copyimage($dir.$value,$newdir,$size);
$i++;
}
}
//echo $i;

function get_avatar($uid, $size = 'middle', $type = '') {
$size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle';
$uid = abs(intval($uid));
$uid = sprintf("%09d", $uid);
$dir1 = substr($uid, 0, 3);
$dir2 = substr($uid, 3, 2);
$dir3 = substr($uid, 5, 2);
$typeadd = $type == 'real' ? '_real' : '';
if(!is_dir($dir1)) {
mkdir($dir1);
}
if(!is_dir($dir1.'/'.$dir2)) {
mkdir($dir1.'/'.$dir2);
}
if(!is_dir($dir1.'/'.$dir2.'/'.$dir3)) {
mkdir($dir1.'/'.$dir2.'/'.$dir3);
}
return $dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid, -2).$typeadd."_avatar_$size.jpg";
}

function copyimage($upfile,$newfile,$size = 'middle') {
if($size == 'middle'){$px = 160;}
if($size == 'small'){$px = 48;}
if($size == 'big'){$px = 200;}

$image_path=$upfile;
$image_info=getimagesize($image_path);
if($image_info[2]==2) {
$image2=imagecreatefromjpeg($image_path);
}
$image2_x=imagesx($image2);
$image2_y=imagesy($image2);

if($image2_x > $px) {
$x = $px;
$y = intval($px*$image2_y/$image2_x);
} else {
$y = $image2_y;
$x = $image2_x;
}
$image1=imagecreatetruecolor($x,$y);
imagecopyresized($image1,$image2,0,0,0,0,$x,$y,$image2_x,$image2_y);
$Img = imagejpeg($image1,$newfile);
}
?>

No responses yet

100个table样式css,附带下载

五 01 2010 Published by zdy under 杂七杂八

点击左边第一列查预览不同样式

http://icant.co.uk/csstablegallery/index.php

No responses yet

尚未发布的 iPad 应用商店的截图

三 27 2010 Published by zdy under 杂七杂八, 电子科技

尚未发布的 iPad 应用商店的截图

E文:http://www.appannie.com/blog/ipad-app-store-screenshots/

No responses yet