About Tom Liu

记录点滴发现,回味精彩人生

日本人教科书里的“南京大屠杀”

无耻的日本人编写的无耻“教科书”!
———————————————————————

  • 1937年12月15日,南京中山北路東側安全區附近,營業的中國人露天飲食小攤,日本兵在吃水餃

  • 1937年12月17日,從日軍手中接受點心和香煙,高興得喊叫“日本軍萬歲”的南京難民

  • 1937年12月20日,南京日軍野戰醫院,養傷的中國傷兵

……
———————————————————————
还有好几张,我不想转了,下面这张是最让人难以想象的

什么样的一个无耻民族,才会对自己所犯下的滔天罪行如此加以粉饰?!!

My ASCII Girl Firend

 


                       ..'--'............... .    'sBBBBBDDDh=(~~'-<<~~(
                       .'--'..'''.........        .+zBBBBBzzDs~~~''(<(~(
                      .'---.'''.........        . .(BBBBBBDDND<~-'-<<<((
                      .'--''''......... ..   ..    'DBBBBBNBBNs<((++<<<+
                      .--'''............. ..   .... +NNBBBBBBBh<(===+<++
                      '-'''..............   '-(+++(-'<NNBBBDBBBs(=s=+<==
                     .--'''..............-((<zDNNNND=-<NBBBBDDBhhDBz=sh+
                     .---'..... ..   .-(++zzzzDBNNNNN=-+zBBBDh=(+=zz=zh<
                     .---'..   ...'-(+++zzzsszzDBNNNNN=-(BNBDhs<<(+s=+=(
                     .~-'..  -((+++++zz++<zsDDDDBNNNNNB+-(DNBBh<((+s==h=
                      '-'. '<zzzzzzz=+++++zDBBDDDBNNNNND+-+NBDs<~-(zssBD
                      .''.-=DDssDzz<++++++zzz==zzDNNNNNBz<~sBBs+~'~=hzDB
                 .... .'.'sNDDDDDzz+++++++++++++=zBNNNNBDz(<BBz+((+szzDB
                .''.'....<NNDDzz=++++<+<++++=====zDNNNNNDz+<DNh(-<hDzDBB
            .   .'.''...~DNDDz+++++++<((+++zBBDzz+zBNNNNDsz<hNh~.<s=zBBB
            .   .. .'..'=NNDz<+++++++((+++=zz=++<<=hNNNNBsz+zNN=(=z+zBBD
            ..  .   .'.-hNBz=+<=zBD=+(((++<<(((((((zNNNNBDs+zNNDsD=+hNDs
            ..       ..(NNBz++=zhDDz+(~-~(((~-----~<BNNNNBz+zNNDs=+sBNBD
            '.        .=NNBz=+++<<<<((-'---'-''''--(DNNNNNz+zNBDs(+DBBBB
            '.        ~DNhDz+(((((((---..'--'''''--(DNNNNNh+hNBBz+sz(=BB
            '.       .(BNDBz+((-~~----'..'--'''''''(hNNNNNz=DBBBDhh=~<DB
            '.   ... .+NNNNz((----'''-'...'---''''-(hNNNNNzsBBBBBBhsszhB
            '.   .'. .zNNNNz(---''''--'...-((---'--(hNNNNDhDNBBBBBDDBDDD
            .....''. -zNNNND(---'''-(-----++(~----((zNNNNDBBBBBBBBBBDDBB
            ......'..(DNNNNB+--'''--((++(+z(---~-(((zNNNNBBBBBBDBBBBBBBB
               ..'''.+DNNNNNs---'----((+++(-'-((((((zNNNNNBBBBDBBBBBBBBB
               .'.''.(DNNNNND(-----((--((((((++(((((hNNNNNBBBDBBBBBBBBBB
               .'.''.'+BNNNNN+-----((((((+++zz+(-((+BNNNNBBBBBBBBBDDDBBD
               .'.''. '+BNNNNz~-(-((+++++((((((((((zNNNBNBBBBBBBBz=zBDBB
             ..''.'--'.'<DNNNN<---((((+((-~(((--((=NNNNBNBBBBBBBz=+zzzBB
            ..'-'..~(~~~-=NNNNh(---(--~((((((---(+DNNNBBBBBBBBBh=shh=zBB
            .'''''.-<+<~'(NNNNNs(-(----(((((----+DNNNNBBBBBBBBDsszBz=zhB
            '.''''''(+(-'-hNNNNNh((((---------~+DNNNNBBBBBBBBh====zBBs=z
            .''''''-(+(-''=NNNNNND+(((-~-----(+DNNNNBBBBBBBBBh=shzhDz=<=
            ''''--'(++<(--+NNNNNNNDz<+((---((+DNNNNNBBBBBBBBBBszBNBz===s
            '-~-~~-(+(((-'(DNNNNNNBzzz+++((+=DNNNNNBBBBBBBBBBBhzBBBz==sz
            '~~~(<(+<''~-'~zNNNNNNhzzz=++++zzDNNNNBBBBBBBBBBBBBBBBDzsssz
            ---(+===<-.--'-sNNNNNNh++=+++++=zBNNNNNNBBBBBBBBBBBBBBBBzh=+
            ''-+s===+<(~-'-sNNNNNNh++++++++=hBNNNNNNNNBBBDDBBBBBBBBBs=<<
            '~(zh==zz=+~''~hBNNNNNh++(+++++=zBNNNNNNNNNBBDDBBBBBDzDBs+=s
            '(=BBszzz=+~-'+BBBBNNNz((((((+++zDNNNBNNNNNBBDDBBBBBBDDBDs=s
            -~sBBzzzzz=~~(zBBBBNNNh+((((((++zDNNBBBBBBNNBDzBBBBBBBBDBzsz
            '-(<+=z=<=+((=BBBNNNNNh+((((((++=DNBBBBBBBBBBh<=BBBBBBBzhhzh
            -'   '(-..-~(=BBBNNNNNh+((((((((<zNBBBBBBBBBB=..<DBBBBDs=zss
            '.         -<hBBBNNNNNh((----(((+zBBBBBBBBBDh=-  ~<=DBh++=zh
            .          ~sBBBBBNNNNs~--------(=DBDBBBBBBDs=(.  .~=DBDsshB
               ..      (zBBBBBBBNh<-''------(<zDBBBBBDBDs=(.    .-+BNNBB
               ...    .<DBBBBBBBB('..'''...''-(=hDDBDDDDz=~'      .-=BNB
                      .<zDBBBBBNs-............'(+=zBDDDBBs('         -=B
                      .(zBDBBBBB<'.............-~(+sDDhBBh+-           (
            
            

 

Magic Ajax

因为做个东西,在界面上需要局部采用”无刷新”方式,因此找了不少关于Ajax的资料,今天经理推荐了个东西给我,叫Magic Ajax,是个开源的控件(开源就是好啊^_^),刚开始以为和Atlas差不多,但一上手用,就明显感觉到了Magic Ajax的”魔力”所在!

主要是AjaxPanel控件,只要你想要在页面上某个地方采用无刷新,你就可以把这个Panel拖放到那里,然后把以往需要Postback的控件都放到这个Panel里面,然后呢…………就什么都不用做了!AjaxPanel会自动获取Panel内的Postback方法,然后将其封装,再进行XmlHTTP调用,从而实现了复杂的无刷新效果!

但是我在使用中遇到了个问题(Visual Studio 2005),就是如果我把需要采用无刷新的部分做成用户自定义控件,然后在同一个页面上多次使用该控件时,似乎Magic Ajax就把这些个自定义控件里的服务器控件都认为是同一个控件了!比如我做了一个A自定义控件,A里面包括一个AjaxPanel控件,Panel里面有一个Button和一个Label控件,然后我在一个Default.aspx页面上重复使用了2个A控件(分别为A1和A2),我希望实现的效果是,当我点击Default.aspx上A1控件的Button后,A1控件里的Label自动获取数据库中的一个值。但奇怪的是,最终得到的效果是当我点击了此A1控件的Button后,A1和A2的Label都得到了值,不知道用什么办法才能解决此问题呢?头痛ing……

网上查了很久,关于Magic Ajax的中文介绍可以说是少之又少,找到一些比较实用的,先记下来:

1、修改Loading(右上角的那个,和Gmail的一样)

方法是复制CORE里面的SCRIPT文件夹到你的站点某个文件夹里,然后在web.config里加入
<magicAjax outputCompareMode="HashCode" tracing="false" scriptPath="~/aspnet_client/magicAjax" >
注意大小写,是scriptPath,不是ScriptPath。

打开里面的AJAXCALLOBJECT,直接翻到底部,修改以下的内容
function CreateWaitElement() {
var elem = document.getElementById('__AjaxCall_Wait');
if (!elem) {
elem = document.createElement("div");
elem.id = '__AjaxCall_Wait';
elem.style.position = 'absolute';
elem.style.height = 17;
elem.border = "1px";
elem.style.paddingLeft = "3px";
elem.style.paddingRight = "3px";
elem.style.fontSize = "11px";
elem.style.borderColor = "#cccccc";
elem.style.borderWidth = "1";
elem.style.borderStyle="solid";
elem.style.backgroundColor = "efefef";
elem.style.color = "darkRed";
elem.innerHTML = '数据载入中...';
elem.style.visibility = 'hidden';
document.body.insertBefore(elem, document.body.firstChild);
}
waitElement = elem;
}
// end wait element

另外一种效果,看看AjaxCallObject.js,当请求的时候,他会象GMail那样在右上脚出现一个Wait...的等待,很cool,你只要在这里做一个小更改,改CreateWaitElement那部分就能达到另外的效果。我这里把请求数据时,改成windows关机时,整个页面变灰的那种效果,类似的js如下:

<SCRIPT type="text/javascript">
<!--
function log_out()
{
ht1
= parent.frames.item(0).document.getElementsByTagName("html");
ht1[
0].style.filter = "progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)";
ht2
= document.getElementsByTagName("html");
ht2[
0].style.filter = "progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)";
if (confirm('你是否确认注销?'))
{
return true;
}
else
{
ht1[
0].style.filter = "";
ht2[
0].style.filter = "";
return false;
}
}
//-->
</SCRIPT>

很cool的Wait...的等待显示位置我已经找到修改的位置了,在这个函数里改就可以

function MoveWaitElement()
{
if (!waitElement)
CreateWaitElement();

var width = document.body.clientWidth;
waitElement.style.top = document.body.scrollTop;
waitElement.style.left = width + document.body.offsetLeft - waitElement.offsetWidth;
}

2、处理AJAXCALL

一般可以用MagicAjaxContext.Current.IsAjaxCall判断是否是AJAXCALL事件,不过,它不准确,如果事件是由客户端引发的,就没问题,但是如果是另一个WEBFORM用TRANSFER来引发的话,它就判断错误,正确的方法是用MagicAjaxContext.Current.IsAjaxCallForPage。

3、为AjaxPanel添加不会进行Ajax回调的功能

情形:有时候我们需要在一组ASP.NET控件外面包含一个AjaxPanel,唯独这组控件中的某个控件不想进行Ajax调用。
编辑源代码中的Script\AjaxCallObject.js文件。
AjaxCallObject.prototype.GetAjaxCallType = function(element)
{
…………………….
}

AjaxCallObject.prototype.GetEnabledAjaxCallAttrib = function(element)
{
var attrib = element.getAttribute(“EnabledAjaxCall”);
if (attrib != null)
if (attrib.toLowerCase() == “false”)
return false;
return true;
}
…………………
AjaxCallObject.prototype.OnFormSubmit = function()
{
………………………….

if (__PreviousOnFormSubmit != null)
if ( __PreviousOnFormSubmit() == false )
return false;

var ecbAttrib = AJAXCbo.GetEnabledAjaxCallAttrib(target);
if (!ecbAttrib)
{
AJAXCbo.ClearTracingWindows();
return true;
}

…………………………
}

// Replaces normal __doPostBack
AjaxCallObject.prototype.DoPostBack = function(eventTarget, eventArgument)
{
………………………..

// Checks the unique id and its parents until it finds a target element
// i.e. for ajaxPanel_grid:row:field it checks
// ajaxPanel_grid_row_field
// ajaxPanel_grid_row
// ajaxPanel_grid
for (var num=ids.length; num > 0; num–)
{
var elemID = “”;
for (var i=0; i < num; i++)
elemID += (i==0 ? “” : “_”) + ids[i];

target = document.getElementById(elemID);
if (target != null)
break;
}

var ecbAttrib = AJAXCbo.GetEnabledAjaxCallAttrib(target);
if (!ecbAttrib)
if (__PreviousPostBack != null)
{
__PreviousPostBack(eventTarget, eventArgument);
return;
}

……………………….
}

添加以上的蓝色代码内容。然后重新编译MagicAjax源代码,并且应用到你的工程中。

使用方法:在你的工程中,如果某个在AjaxPanel中的控件不想进行Ajax调用,则在该控件中加上如下属性:

<asp:LinkButton ID=”btnCancel” Text=”Button” runat=”server” EnabledAjaxCall=”false” />

如果是后台代码,添加如下内容:
btnCancel.Attributes.Add(“EnabledAjaxCall”, “false”);

Technorati :

Joga – from Google & NikeFootball.com

GoogleNikeFootball.com 联合推出了一个足球迷的网站 Joga.com,作为球迷,自然想领先进入其中,看看里面藏了哪些好东西,但目前这个网站还只能通过邀请才能加入,可惜呢,提交了自己的Gmail,提示说几周内便可收到邀请,”漫漫”等吧-_-!!

“欢迎光临 Joga – 为真正体现足球精神的玩家而建的社区。

Joga 旨在为您提供一个结识其他球员、分享足球体验、欣赏来自世界各地的精彩图片和视频的场所。

快来加入,一起告诉整个世界足球到底该怎么玩。

祝你玩的尽兴!”

Untitled-1.jpg

Atlas

http://www.microsoft.com/downloads/details.aspx?FamilyId=B01DC501-B3C1-4EC0-93F0-7DAC68D2F787&displaylang=en

上面的链接是微软Atlas套件最新版的下载地址,版本为March_CTP(三月社区预览版),2006-3-20发布,应该是最新的了,看了这段(mms://wm.microsoft.com/ms/uifx/asp_net_atlas.wmv)介绍在Visual Studio 2005中使用的录像,感觉Ajax越来越”平易近人”了,呵呵,不用写任何Javascript,便能实现基本的添加、删除、修改、排序等等操作,这个是大大加快了程序开发的速度呢。

Technorati :

Live Messenger现在已经不用邀请便可以使用了!

微软现在已开放了Live Messenger的使用,不再需要邀请了,只要你有一个MSN Messenger或者Passport的帐户,便能使用。Live Messenger的下载地址:

简体中文版:http://download.microsoft.com/download/b/9/e/b9e30b83-7d45-4c09-9934-afe2ace2c515/Install_Messenger_Beta.exe

不过大家不要对这个Live Messenger的”新功能”报太大的期望,我使用了几次后,感觉和以前的MSN Messenger没什么区别。

“灰镇”—-花源

因事去了趟成都花源镇,到老街吃了出名的新津黄辣丁,味道确实巴适,但这里更深印象的是”灰镇”,能见度不到20米,吃顿饭回来,头发变成了稻草一样,感觉鼻子喉咙里全是灰,就差没上呼吸道感染了-_-!!要是有相机,真该照下个写真,把好吃的黄辣丁和漫天土灰都拍下来。

准确获得页面、窗口高度及宽度的JS

function getPageSize(){

var xScroll, yScroll;

if (window.innerHeight && window.scrollMaxY) {
xScroll = document.body.scrollWidth;
yScroll = window.innerHeight + window.scrollMaxY;
} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
xScroll = document.body.scrollWidth;
yScroll = document.body.scrollHeight;
} else { // Explorer Mac…would also work in Explorer 6 Strict, Mozilla and Safari
xScroll = document.body.offsetWidth;
yScroll = document.body.offsetHeight;
}

var windowWidth, windowHeight;
if (self.innerHeight) { // all except Explorer
windowWidth = self.innerWidth;
windowHeight = self.innerHeight;
} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
windowWidth = document.documentElement.clientWidth;
windowHeight = document.documentElement.clientHeight;
} else if (document.body) { // other Explorers
windowWidth = document.body.clientWidth;
windowHeight = document.body.clientHeight;
}

// for small pages with total height less then height of the viewport
if(yScroll < windowHeight){
pageHeight = windowHeight;
} else {
pageHeight = yScroll;
}

// for small pages with total width less then width of the viewport
if(xScroll < windowWidth){
pageWidth = windowWidth;
} else {
pageWidth = xScroll;
}

arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
return arrayPageSize;
}

Technorati :