2009年4月9日星期四

Google App Engine 开始支持 Java

Google App Engine 周年之际,终于推出了Java 版的SDK。Google 称其为 An Early Look at Java™ Language Support,并给出了一万个测试名额。

之所以称为 An Early Look 是因为对 Java 支持的开发还在进行中(原文: Our support for the Java language is still under development )。但这个 Early Look 还是足以满足广大开发者的好奇心了。

这个版本包括了 Googel 的 Java runtime、集成Google Web Toolkit、还有一个Eclipse插件。
更多信息可以参考 Google App Engine 英文站点

2009年3月7日星期六

goolge app engine 上传错误问题的解决办法

试用google app engine,开始还一切顺利。
后来不知为什么再用 appcfg.py update xxxx 的时候就一直报错。
提示信息 : ERROR appcfg.py:1235 An unexpected error occurred. 等等....

经过在 google 上的一番耕耘,终于在找到了解决办法。
首先进入用户目录 ( C:\Documents and Settings\user name )
删除 .appcfg_cookies 文件
一切恢复正常




2009年3月4日星期三

推荐免费支持外链没有广告的图片存储服务 Pict.com

Pict.com 是一家提供图片存储和分享服务的网站,相比其他一些图片存储服务 Pict.com 不限制存储空间、没有广告(这点很难得)、支持外链、不强制注册(可以不需注册直接使用他的服务)、完全免费、而且网站设计简介清爽,此外 Pict.com 还提供了 FireFox 插件,使用户可以更方便的使用优质的图片存储和分享服务。

点击下载 Pict.com FireFox 插件 (Click here to download)

Pict.com FireFox 插件的特性

  • 网站截图 (完整或选定区域)
  • 将截图保存为 jpg/png 格式 
  • 自动上传截图
  • 右键上传浏览器中的任何图片
  • 生成图片链接
  • 从本地上传图片等

2008年12月10日星期三

Yaml Builder 生成的 css 在Google Chrome 中无法正常显示的问题

Yaml Builder 是一个生成 Yaml Layout 的图形界面工具。用起来很方便,效果也不错。

试用Yaml Builder后发现,其生成的代码在Firefox、IE、和Opera下均能正常工作,但在Google Chrome下css不起作用。

Yaml Builder 生成的 css 如下:
@charset "UTF-8";
@media screen, projection
{
.....

最终找到问题所在,是【@charset "UTF-8";】 这句代码导致 Google Chrome 无法显示 css 样式,把这句删除之后就可以正常显示了。

【@charset "UTF-8";】made CSS not display correctly in Google Chrome, so remove 【@charset "UTF-8";】to solve this problem.

2008年10月15日星期三

c# 根据URL定位InternetCache中文件的位置

从IE浏览器缓存中根据URL定位本地文件有很多用处,比如直接从缓存中保存浏览过的图片,避免再次下载以节省带宽,另外在显示或保存验证码图片之类每次访问都会随机改变的文件时也很有用。但是由于在本地系统中浏览器缓存的临时文件并不是用一般方式保存的(具体参加MSDN),所以处理上稍微麻烦一些。

前段时间用 c# 写一个小程序时,使用如下代码获取指定URL文件缓存在本地文件系统中的临时文件的路径。

[DllImport("Wininet.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern Boolean GetUrlCacheEntryInfo(String lpxaUrlName, IntPtr lpCacheEntryInfo, ref int lpdwCacheEntryInfoBufferSize);

const int ERROR_FILE_NOT_FOUND = 0x2;
struct LPINTERNET_CACHE_ENTRY_INFO
{
public int dwStructSize;
IntPtr lpszSourceUrlName;
public IntPtr lpszLocalFileName;
int CacheEntryType;
int dwUseCount;
int dwHitRate;
int dwSizeLow;
int dwSizeHigh;
FILETIME LastModifiedTime;
FILETIME Expiretime;
FILETIME LastAccessTime;
FILETIME LastSyncTime;
IntPtr lpHeaderInfo;
int dwheaderInfoSize;
IntPtr lpszFileExtension;
int dwEemptDelta;
}

// 返回 指定URL文件的缓存在本地文件系统中的路径
private string GetPathForCachedFile(string fileUrl)
{
int cacheEntryInfoBufferSize = 0;
IntPtr cacheEntryInfoBuffer = IntPtr.Zero;
int lastError; Boolean result;
try
{
result = GetUrlCacheEntryInfo(fileUrl, IntPtr.Zero, ref cacheEntryInfoBufferSize);
lastError = Marshal.GetLastWin32Error();
if (result == false)
{
if (lastError == ERROR_FILE_NOT_FOUND) return null;
}
cacheEntryInfoBuffer = Marshal.AllocHGlobal(cacheEntryInfoBufferSize);

result = GetUrlCacheEntryInfo(fileUrl, cacheEntryInfoBuffer, ref cacheEntryInfoBufferSize);
lastError = Marshal.GetLastWin32Error();
if (result == true)
{
Object strObj = Marshal.PtrToStructure(cacheEntryInfoBuffer, typeof(LPINTERNET_CACHE_ENTRY_INFO));
LPINTERNET_CACHE_ENTRY_INFO internetCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO)strObj;
String localFileName = Marshal.PtrToStringAuto(internetCacheEntry.lpszLocalFileName); return localFileName;
}
else return null;// file not found
}
finally
{
if (!cacheEntryInfoBuffer.Equals(IntPtr.Zero)) Marshal.FreeHGlobal(cacheEntryInfoBuffer);
}
}

2008年8月6日星期三

co.cc 难道又被封了?

我有个站用的是co.cc的免费域名,前段时间一直运行好好的,不过最近几天不能正常访问了。今天查了一下原因,发现连co.cc都ping不通了。用tor试了一下,我的网站和co.cc都可以正常访问,也就是说不出意外的话,co.cc应该是被河蟹了,不由得我想发发牢骚。网络应该是开放、自由的,不能老逼真人带着套(tor)啊。

CO.CC 提供免费二级域名注册,没有广告,支持隐藏或不隐藏原URL转发。提供完全DNS解析功能,可以修改DNS、设置A记录、CNAME记录、NS记录以及MX记录,还完全支持Google Apps企业邮局。如果给封了那实在是太可惜了,再说没几天就开奥运了,cnn都解封了,怎么能现在封co.cc呢?要封也应该等到国外的朋友们都走了不是吗?

2008年8月4日星期一

编程方式更改Tor身份——Switch TOR to a new identity

Tor 俗称洋葱路由器,用于防范流量过滤、嗅探分析,可以实现匿名对外连接、匿名隐藏服务。Tor 的代理一般在2-5层左右,加密程度也比较高。在一些需要使用代理的项目中用Tor 替代常用的代理服务器,有两个显著的好处:一是安全,二是可用代理非常多而且可靠性也很高。

在程序中使用Tor 的一个关键问题就是如何在程序中强制Tor 使用新的身份(切换代理),如果不能在程序中更换身份那使用Tor 的意义也就不大了。

Tor 默认HTTP代理端口是8118,Socket代理端口是9050,控制端口是9051。我们可以通过向Tor 控制端口发送命令来强制Tor 使用新的身份。

下面有三段代码,分别由shell、php和c#实现切换Tor 使用新的身份。

shell代码片段:
spawn telnet 127.0.0.1 9051
expect "Escape character is'^]'."
send "AUTHENTICATE\r"
expect "250 OK"
send "signal NEWNYM\r"
expect "250 OK"
send "quit\r"

php版本:
/** * Switch Tor to a new identity. **/
function tor_new_identity($tor_ip='127.0.0.1', $control_port='9051', $auth_code='')
{
$fp = fsockopen($tor_ip, $control_port, $errno, $errstr, 30);
if (!$fp) return false; //can't connect to the control port
fputs($fp, "AUTHENTICATE $auth_code\r\n");
$response = fread($fp, 1024);
list($code, $text) = explode(' ', $response, 2);
if ($code != '250')
return false; //authentication failed

//send the request to for new identity
fputs($fp, "signal NEWNYM\r\n");
$response = fread($fp, 1024);
list($code, $text) = explode(' ', $response, 2);
if ($code != '250') return false; //signal failed
fclose($fp); return true;
}
?>

c#版本代码片段:
TcpClient client = new TcpClient();
client.Connect("127.0.0.1", Convert.ToInt32(9051));
NetworkStream stream = client.GetStream();
byte[] cmd = null;
string strCmd = string.Format("AUTHENTICATE \"{0}\"\r\n",password);
cmd = System.Text.Encoding.Default.GetBytes(strCmd);
stream.Write(cmd, 0, cmd.Length);
byte[] buffer = new byte[2];
int count = 0;
string strResponse = "";
count = stream.Read(buffer, 0, buffer.Length);
strResponse += System.Text.Encoding.Default.GetString(buffer, 0, count);
while (count != 0 && stream.DataAvailable)
{
count = stream.Read(buffer, 0, buffer.Length);
strResponse += System.Text.Encoding.Default.GetString(buffer, 0, count);
if (count < buffer.Length)
break;
}
if (strResponse.IndexOf("250") == -1)
{
MessageBox.Show("AUTHENTICATE Fail!");
return;
}
buffer = new byte[1024];
strCmd = "signal NEWNYM\r\n";
cmd = System.Text.Encoding.Default.GetBytes(strCmd);
stream.Write(cmd, 0, cmd.Length);
strResponse = "";
count = stream.Read(buffer, 0, buffer.Length);
strResponse += System.Text.Encoding.Default.GetString(buffer, 0, count);
while (count != 0 && stream.DataAvailable)
{
count = stream.Read(buffer, 0, buffer.Length);
strResponse += System.Text.Encoding.Default.GetString(buffer, 0, count);
if (count < buffer.Length)
break;
}
if (strResponse.IndexOf("250") == 1)
MessageBox.Show("Switch Identity OK!");

参考文章地址:
http:// linux.chinaunix.net/bbs/thread-1014409-1-1.html
http:// w-shadow.com/blog/2008/06/20/tor-how-to-new-identity-with-php
http:// www.cnblogs.com/sxlfybb/archive/2008/07/07/1237662.html

2008年8月3日星期日

C#修改IE配置 禁止IE显示图片 禁止IE显示Flash

最近在用 C# 写程序的时候需要用编程的方式修改IE的配置属性。一是要禁止IE显示图片,二是要禁止IE显示Flash。

禁止IE显示图片,如果手动修改的话应该是取消选中 工具 -> Internet 选项 -> 高级 -> 显示图片 -> 多媒体 -> 显示图片 就可以了。
在程序中,只能通过修改注册表来实现。C# 示例代码如下:
RegistryKey regKey = Registry.CurrentUser;
string SubKeyPath = @"Software\Microsoft\Internet Explorer\Main";
RegistryKey optionKey = regKey.OpenSubKey(SubKeyPath, true);
optionKey.SetValue("Display Inline Images", "no");

禁止IE显示Flash,手动方法除了借助一些第三方工具外我还没有找到合适的方法(取消选中 工具 -> Internet 选项 -> 高级 -> 显示图片 -> 多媒体 -> 在网页中播放动画 没有效果,也许这里的动画只的不是Flash)。
一番google之后,最终的解决方案还是修改注册表,这次修改HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\ActiveX Compatibility\{D27CDB6E-AE6D-11CF-96B8-444553540000}
将其中 "Compatibility Flags" 的数值数据设为 十六进制的400也就是十进制的1024 就可以禁止IE显示Flash了。

如果注册表中没有这个Key,那么需要在
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\ActiveX Compatibility 下新建一个以 {D27CDB6E-AE6D-11CF-96B8-444553540000} 为名称的键(Key),然后再为其创建一个名称为 Compatibility Flags 的 DWORD 值,其数值数据 0 表示允许Flash,400(十六进制)表示禁止IE显示Flash。
代码与前者的不同仅在于赋值时需要指定类型RegistryValueKind.DWord,如下所示:
optionKey.SetValue("Compatibility Flags", 1024, RegistryValueKind.DWord);

2008年8月1日星期五

Myhpf 付费搜索,为你的网费买单

search for moneyMyhpf 是一家英国公司,提供付费搜索。简单说就是你用Myhpf搜索,他支付你佣金。由于Myhpf 与著名搜索引擎呀虎(yahoo)合作,所以他的搜索结果还是比较令人满意的。你完全可以用它代替你常用的搜索引擎,而且每使用一次Myhpf搜索,它将给你0.01英镑(左右)作为佣金。每天搜索次数没有限制(建议用英文做关键词来搜索),但不要为了佣金作弊,否则得不到支付。

注册之后你将会拥有一个可定制的主页,通过这个页面进行的搜索Myhpf 都将支付你佣金,你不需要安装任何浏览器插件。当然,如果你不想每次搜索都打开这个页面,Myhpf 还为你提供了浏览器插件,安装使用都非常简单。(浏览器插件如下图所示)


注册地址:点击这里注册

ps:其实只要你稍微改变一下搜索习惯,就可以让Myhpf 来给你的网费买单。你也可以把他当作一个网赚的项目来做,但不要太过,否则会被视为作弊。

2008年7月31日星期四

优秀开源项目视频教程 —— Gmip 视频教程

在网上你可以找到成千上万的开源程序或项目,从操作系统到文字处理软件,从图形编辑程序到行业工具无所不有,而且其中不乏精品。但是,对于一些比较小的项目或者社区支持的尚不完善的项目,往往很难找到开发者编写的手册之外的相关介绍文档或教程,这使得一些非程序员(开发人员)的用户感觉很难上手。即便有丰富的文档支持,一些软件由于其本身的复杂性还是给新用户的使用带来了不小的困难,好在随着开源社区的壮大出现了一批又一批的视频教程,手把手的教新用户使用软件。

"优秀开源项目视频教程"作为一个系列,每篇日志介绍一个优秀开源软件相关是视频教程。
优秀开源项目视频教程 —— Gmip视频教程

在这篇日志中我将介绍10个视频教程,他们将帮助你快速了解和熟悉Gmip的使用。Gimp 是一款著名的跨平台开源图形编辑器。它有许多功能,即可以作为简单的画图程序,也能作为专家级的照片处理程序。完成多种图像处理方面的要求,如图片润饰、图像合成、在线批处理、大批量图像渲,以及图像格式转换等。



GMIP 视频教程有:

Pop Art - 这段教程展示如何将一张普通的图片转变为艺术作品的效果。

Gmip用户界面 - 这段视频教程将给你Gmip用户界面的基本概述。

如何修改人物头发颜色 - 这段Gmip视频教程介绍如何修改照片中人物头发的颜色。

用Gimp制作素描效果 - 这段教程介绍如何照片制作成素描的基本方法。

透明文字效果 - 透明文字效果是制作 Web 2.o 网站和网站header和banner必要的效果之一,这个教程将介绍制作方法。

使用Neutral Density Filter - 中性密度滤光片(Neutral Density Filters)是摄影是常用的工具,这个教程介绍如何使用Gimp制作与照片相同的效果。

使用Gimp制作耀斑效果 - 照片中的耀斑通常是比较烦人的,但如果处理得当会有出乎意料的效果,这个教程帮助你掌握使用Gimp制作耀斑的效果。

制作水滴 - 我们经常可以看到在图片中的片叶子或花上有一滴晶莹剔透的水滴,要制作这种效果需要一些技巧,这个教程就将介绍如何制作逼真的水滴。

使用Gimp制作Web 2.o Logo - 如果你正需要制作一个Web 2.0 Logo,那么这个视频就是为你准备的。

为Web准备图片 - 这个教程是一个系列教程中的第一个,覆盖了旋转、剪切、上色等内容。

更多视频教程可以在 video.google.com 和 metacafe.com 等网站找到。

test. just test

Technorati Profile

2008年7月30日星期三

CCTV 网络电视奥运台开播

距离奥运会开幕还有近9天时间,今天发现CCTV 网络奥运电台已经正式开播。虽然有些栏目和功能还在测试与调整中,但已经可以通过CCTV网络电视奥运台观看央视一套、二套、七套以及奥运频道等。CCTV 网络奥运电台网站页面设计简洁大方,页面正中像是一堵由栏目组成的电视墙,呈圆环状排列,点击进入相应栏目。视频速度比较理想画质也不错,但使用firefox打开页面显示不正常(没有兼顾多种浏览器这点让人非常遗憾)。

可以看到网站设计引入了SNS标志性的空间、好友、圈子、游戏、地图等互动与特色栏目。用户无需注册即可进入网站,也可以使用MSN帐号登录或者注册CCTV通行证。用户在观看奥运节目的同时可以和一同观看的网友讨论交流。

CCTV网络电视奥运台作为CCTV推出的新传媒传播平台,将为用户提供奥运会期间总计三千八百小时的赛事直播和奥运历史节目,总量将超过四千小时。节目分类清晰,除开闭幕式、28个大项专题还有荣誉殿堂,名将之约,巅峰时刻,奥运历史和费德勒、姚明、郭晶晶等名运动员专题。

今天还看到了网上泄露出来的开幕式视频片段,虽然只有两分中左右但很精彩,期待8月8日的到来、祝愿奥运顺利召开。

网站地址: http://www.cctvolympics.com/

2008年7月29日星期二

6款优秀的免费软件

下面介绍的所有软件都可以从softpedia下载。

Launchy 2.0 —— launchy不仅可以快速启动(索引)你开始菜单中的程序,还可以打开你的文档、工程文件、文件夹和书签。一旦你开始使用launchy,你可能会很快忘记开始菜单、桌面图标,因为launchy用起来真的非常方便。

OneClick Cleaner —— 是一款免费的磁盘清理工具。它会扫描并清除您计算机上的垃圾文件并且安装和卸载都非常方便。

Kampachi —— 是一款下载工具。使用它,可以方便的从打开indexes选项的apache服务器上下载文件夹或文件。

RAMBooster 2 —— 监视内存和CPU的使用。它有助于您的电脑更快、更流畅的运行,有效减少电脑重启次数。它支持的高达9999MB的内存。

TyphoonPassword —— 免费的密码管理工具。它支持所有浏览器,安全保管你的密码。

Orca —— 是一个基于Firefox 3设计的浏览器。支持大概20种语言,并且拥有广告拦截、代理服务器、表单自动填写、鼠标手势等优秀功能。据说他的速度比Firefox和Opera都快。

2008年7月28日星期一

blog 访客工具(一)

大家写博客的一个主要目的就是与访客交流和沟通。那么,掌握自己博客的访问情况对于博客的发展和推广是都很有帮助的。

随着使用博客的人越来越多,针对博客的各种工具和服务业也越来越多,其中不乏精品。在这篇日志中我将介绍几个访客工具。

NiftyMaps,提供实时访客地图服务,根据你选择的地图背景样式,访问者图标会为你自动生成一段HTML代码,由于生成代码不是javascript代码,所以你可以将这段代码复制到日志中,在你的日志中生成实时的访客地图。此外,NiftyMaps 网站上写到提供的访客地图可以精确到街道的级别(Track your visitors'locations. Zoom down to the street level!)
网站地址:NiftyMaps

maps.amung.us 是由实时访问统计服务 whos.amung.us 推出的一款实时访客地图服务,通过添加一段javascript代码,在自已的Blog上挂上一个可显示访问来源世界地图,你可以轻松知道当前页面的访客来自世界上的哪个地方。它提供了两种大小的地图尺寸,并提供多种地图样式、来源点样式及颜色等可自定义项,以便附合你的Blog风格。
网站地址:maps.amung.us

FeedJIT 提供两大类服务,实时访客展示(show off your live traffic)和引导用户到你最好的内容(guide visitors to your best content)。实时访客展示,又分访客地图(其效果不如上面两个)和访客来源两部分,内容引导包括访问该页面的访客还访问了那些页面(visitors to this page also liked)和当日的热门页面(popular pages today)两部分。FeedJIT 以javascript代码的方式安装,它提供的内容引导工具非常使用。
网站地址:FeedJIT

webtomail 通过邮件浏览网页


现在有好多公司在工作时间为了提高员工的工作效率,采取了封网措施。但是,封网不一定就会提高工作效率,特别是在我们已经习惯了网络的情况下,有事儿没事google或baidu一下,离开网络很不习惯。

如果你也正在为上班时无法浏览网页而苦恼,而且公司邮箱没有封(一般公司都有自己的企业邮局且不会封) 那就来试试 WebToMail 提供的免费服务吧。只要你可以收发邮件,剩下的事情就都交给 WebToMail 来做。

WebToMail 使用非常简单,首先发送一封邮件到send@webtomail.co.cc ,这封邮件的主题(Subject)用你希望浏览的页面的URL,然后就可以等着网页以邮件的方式发回来了。

最后,WebToMail 现在的速度不是很快需要耐心等一会,不过等一会儿总比没有强得多了。

2008年7月27日星期日

PhotoFunia 轻点鼠标生成你自己的个性图片

不会ps又想拥有个性图片怎么办?找朋友帮忙还是花钱找人制作?现在都不需要了,PhotoFunia 为你提供了免费的在线图片特效编辑功能。你要做的现在只剩下上传一张待修改的图片,然后轻松点击鼠标,几十种特效任你选。

废话不说,上几张图片看看效果:先看原始图片 下面是生成的效果:

还有几十种其他效果,很有意思。

网站地址:http://photofunia.com/

2008年7月26日星期六

博客免费备份工具

首先说一下为什么备份,我们在网上写东西数据安全显得尤为重要,各种各样的攻击和意外随时都有可能发生,会让你网站的数据丢失。当然更多的时候,数据的丢失是因为我们自己的误操作造成的。经常备份你的数据,免得到数据丢失的时候后悔。

对于一个博客站点而言,需要经常备份的数据包括数据库、模板、插件、配置等等。备份周期可以根据自己的情况而定。如果你的博客更新很快,那么你备份的周期也要尽量缩短。

现在有很多方便的博客备份服务,可以大大简化你手动备份的工作。BlogBackupr 就是一个很好的在线备份工具。用户只需提供Blog地址后就可自动帮你抓取Blog文章,并定期备份,而且完全支持中文。

BlogBakcupr最大的特色在于,它对于用户用Wordpress和Blogger这两大Blog平台有着相当全面的支持,不仅可以备份整篇文章,还可备份评论及分类等。此外,它还支持自动还原备份过的Blog文章到Blog系统中,当然你必须先提供相应的用户名和密码。而对于其他的Blog系统,它目前只提供文章备份功能。除此之外,它还具备导出备份文章到TXT、HTML及RSS格式、可在线查看备份过的文章,并支持备份多个Blog等功能。更多详细情况见官方提供的FAQ

网站地址:https://blogbackupr.com/

2008年7月25日星期五

8个免费临时邮箱

10 Minute Mail 无需注册,临时邮件地址10分钟内有效,邮件单独显示,有中文界面,邮件单独显示。

GuerrillaMail 无需注册,邮件地址15分钟内有效,可延长1小时,邮件单独显示,可回复邮件。

Disposable-Email 无需注册,临时邮件地址15分钟内有效,邮件单独显示。15分钟过后可以继续延长时间。

NowMyMail 无须注册,临时邮件地址1小时内有效。进入网站点击右上角“Click here to get your disposable email”按钮就能随机得到一个临时性免费邮箱地址。

mint-email 无需注册,临时邮件地址4小时内有效,邮件单独显示。

tempinbox 无需注册,直接使用,但要记得删除邮箱中的邮件,否则它将会留在收件信箱内,其他人就会有可能看到你的邮件。

spanbog 免费临时邮箱,未读的信件保留四天、已读的信件保留两天,而Mail地址将会保留三个月,网站还提供RSS功能,让你可以随时知道是否有新的邮件。(这个网站广告有点儿多........)

Spam.la 无需注册,所有的邮件都会显示在首页,尽可能不要让邮件内出现你的帐号密码等重要信息,以免被窃取。

2008年7月24日星期四

rarhost 免费rar文件存储


host 提供针对 .rar文件的免费存储、共享服务。(空间只允许.rar文件上传)

空间特点:
  • 无限量空间
  • 单个文件大小限制在150mb
  • 30天没有被下载的文件将被删除
  • 用户使用无需注册即可使用
  • 注册用户可以管理上传的文件,并拥有双倍文件保存时间(60天)
网站地址:http://www.rarhost.com

2008年7月20日星期日

FileQube 支持外链的免费网络硬盘


FileQube提供2G的免费网络存储空间,支持外链,但流量限制仅有 256M。FileQube的上传、下载速度都还不错。

注册用户单个文件限制500M以内,支持RSS订阅输出,可以用Widget方式嵌入到你的网站、博客中。你上传的文件可也以完全共享或加密码。非注册用户仅可上传单个150M以内的文件。

网址:http://www.fileqube.com