DFdou's Blog Life is short,Be yourself.

2802/092

Google也玩Twitter

Google的官方Twitter地址:http://twitter.com/google
Google的第1条信息是:“I'm 01100110 01100101 01100101 01101100 01101001 01101110 01100111 00100000 01101100 01110101 01100011 01101011 01111001 00001010”,这串二进制代码翻译过来则是Google搜索引擎中的“feeling lucky”,中文版对应的是“手气不错”。
WOW里边也有类似的内容,那个又长又臭的矮人副本里,就有类似的二进制卡片,我似乎一直没做完那个任务。
听说卡片上二进制的代码翻译过来是“欢迎来到魔兽世界”,话说这也是BLZ的Kuso作风之一了。

Tagged as: , , 2 Comments
2702/090

Last.fm跟TechCrunch的口水战

在cnbeta看到的消息,事件源于Techcrunch几天前的一篇日志:《Did Last.fm Just Hand Over User Listening Data To the RIAA?》,里边说到Last.fm将用户数据递交给美国唱片工业协会(RIAA)以便其找出那些收听盗版音乐的用户。
这就搞的Last.fm不爽了,于是Last.fm发布了这么一篇日志:《Techcrunch are full of shit》
话说,这也有够恶毒的,有这样骂人的嘛……
为何Last.fm的会如此急于澄清这回事呢,原因是这样的。
Last.fm在用户使用官方播放器时,会记录用户的行为,比方听过的歌曲,专辑。
如果将这个数据交给RIAA,加上用户本身的信息和IP地址,那么…RIAA就会轻而易举的找到用户,要求交版权费…
试问,真若如此,哪还有那个用户敢用Last.fm的服务?
于是乎,两边的口水战就开始了。
至于事情到底是如何,本人不知,也不想知道,旁观吧奥~

2602/092

PHP-输出RSS

其他语言的RSS输出类似,只要遵循RSS的输出规则就可以了。
PHP的代码示例如下:

< ?php
include "./config.php";//导入数据库配置文件
header("Content-type:application/xml");
//不知道为什么xml这句如果写到下边的html代码里会报错,搞不懂为什么……
echo "<?xml version='1.0' encoding='utf-8'?>\r\n";
?>
<!--rss格式开始-->
<!--rss声明-->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
<channel about="http://nwhy.org">
<!--标题-->
<title>Flash Guestbook</title>
<!--链接地址-->
<link>http://nwhy.org</link>
<!--描述-->
<description>An Easy-to-use Flash Guestbook,Powered By nwhy.org.</description>
<!--语言-->
<language></language>
<!--版权-->
<copyright>nwhy.org</copyright>
< ?php
$sql="select * from rate limit 0,30";//获取数据
$rs=mysql_query($sql);
while($row=@mysql_fetch_array($rs)){
	echo "<item>";
	echo "<title>".$row['title']."</title>";//标题
	echo "<guid>".$row['guid']."</guid>";//其他要输出的内容都可以在这里扩展
	echo "<description>< ![CDATA[".$row['description']."]]></description>";//记得使用CDATA
	echo "";
}
?>

</channel></rss>
<!--rss结束-->
Tagged as: , , 2 Comments
2502/091

Flash-JS相互通信


Demo:


Flash提供了ExternalInterface类来负责和JS的交互,基本上的使用方法,在Flash帮助文档中有详细的说明,下边是Flash部分代码:

//导入包
import flash.external.*;
//提供JS访问的函数名
var _method:String = "_postStr";
//指定本地函数中this变量的作用域,可设置为null留空
var e_area:Object = null;
//AS内部函数名
var method:Function = postStr;
//将函数注册到容器列表
var wasSuccessful:Boolean = ExternalInterface.addCallback (_method, e_area, method);
//查看注册是否成功
if (wasSuccessful) {
	txtResult.text = "函数注册成功";
} else {
	txtResult.text = "函数注册失败,请检查函数是否存在";
}
//本地函数,用以供JS调用
function postStr (txt:String) {
	txtResult.text = txt;
}
//点击btn时,将txtInput.text的值传给js里的postStr函数
btn.onPress = function () {
	ExternalInterface.call ("postStr", txtInput.text);
};
2402/093

AS3-MC的移动控制

大部分的游戏,都离不开MC的移动,下边是一个AS3的MC移动Demo:

代码部分:

//存储四个方向键是否按下的变量
var leftArrow:Boolean = false;
var rightArrow:Boolean = false;
var upArrow:Boolean = false;
var downArrow:Boolean = false;

stage.addEventListener (KeyboardEvent.KEY_DOWN, keyPressedDown);
stage.addEventListener (KeyboardEvent.KEY_UP, keyPressedUp);
stage.addEventListener (Event.ENTER_FRAME, mcMove);
stage.addEventListener (Event.DEACTIVATE, missingStage);//Flash处于非活动状态时调用
//按键时的检测,左上右下分别是37,38,39,40
function keyPressedDown (_evt:KeyboardEvent) {
	if (_evt.keyCode == 37) {
		leftArrow = true;
	} else if (_evt.keyCode == 39) {
		rightArrow = true;
	} else if (_evt.keyCode == 38) {
		upArrow = true;
	} else if (_evt.keyCode == 40) {
		downArrow = true;
	}
}

//松开按键时
function keyPressedUp (_evt:KeyboardEvent) {
	if (_evt.keyCode == 37) {
		leftArrow = false;
	} else if (_evt.keyCode == 39) {
		rightArrow = false;
	} else if (_evt.keyCode == 38) {
		upArrow = false;
	} else if (_evt.keyCode == 40) {
		downArrow = false;
	}
}

//MC的移动部分
function mcMove (_evt:Event) {
        //移动的速度
	var speed:Number = 8;
	if (leftArrow) {
                //MC的位置检测,下边相同
		if (0<=mc.x) {
			mc.x -= speed;
		}
	}
	if (rightArrow) {
		if(mc.x<=stageW-mc.width-20){
		mc.x += speed;
		}
	}
	if (upArrow) {
		if(0<=mc.y){
		mc.y -= speed;
		}
	}
	if (downArrow) {
		if(mc.y<=stageH-mc.height-20){
		mc.y += speed;
		}
	}
}

//Flash处于非激活状态时
function missingStage (_evt:Event) {
	leftArrow = false;
	rightArrow = false;
	upArrow = false;
	downArrow = false;
}
Tagged as: , , 3 Comments
2302/090

Flash-AS2和AS3的加载

在AS2里,加载图片和swf,使用loadMovie/loadMovieNum或者loadClip方法即可,如:

function initList (_mc:MovieClip, numStart:Number, numEnd:Number) {
	for (var i:Number = numStart; i < numEnd; i++) {
		_mc.createEmptyMovieClip ("e_avatar" + i, 1000 + (numEnd - i));
		_mc["e_avatar" + i].createEmptyMovieClip ("loader", 1000 + i);
                _mc["e_avatar" + i].loader.loadMovie(i+".jpg");
                _mc["e_avatar" + i]._x=Math.random()*stageW;//随机摆放
                _mc["e_avatar" + i]._y=Math.random()*stageH;
	}
}

相对AS2而言,AS3更加规范,加载方法统一成了load方法,例子如下:

function initList (_evt:Event):void {
	var userXML = XML(userLoader.data);
	var userNum=userXML.children().length();
	for (var i:uint=0; i<userNum; i++) {
		var e_avatarLdr:Loader = new Loader();//建立loader对象
		var e_avatarURL:String = userXML.item[i].avatar;//载入文件名称
		var e_avatarURLReq:URLRequest = new URLRequest(e_avatarURL);//建立载入接收对象
		e_avatarLdr.load (e_avatarURLReq);//使用load方法加载e_avatarURLReq
		e_avatarLdr.contentLoaderInfo.addEventListener (Event.COMPLETE, e_avatarLoaded);//载入完成后响应
		function e_avatarLoaded (_evt:Event):void {
			userAvatar.addChild (_evt.target.content);//把载入的对象加入容器
			_evt.target.content.x=Math.random()*stageW;//随机摆放
			_evt.target.content.y=Math.random()*stageH;
		}
	}
}

从例子中我们可以发现,AS2和AS3的加载机制几乎完全不同,具体内容可以参阅Flash CS3自带的帮助文档哈。

Tagged as: , , , No Comments
2202/090

Google-Picasa

原本图片是存放在虚拟主机上,但是在上次移动主机地址后,放弃了这个想法,移动起来很累。
于是决定找个图片存放处,选择了Picasa。
国内有个提供同样服务的东西,就是Yupoo,但是隔断时间不登录就会无法显示图片,不爽。
相对来说,Picasa的WP插件和方便性都比Yupoo好,上传之后的图片大小又有很多份供选择,自然就选择了Picasa。只不过,Picasa的图片调用有些小麻烦,大小超过一个数值直接使用图片路径会无法显示,需要加上?imgmax=xxxx才行。
对了,还有Flickr也可以选择,同样WP插件也不少。
2者选择哪个,就看大家的喜好了。

Tagged as: , No Comments
2102/090

Drupal-一些权限的判断

按登录非登录判断:

< ?php
global $user;/*是否为登录用户*/
if ($user -> uid){/*如果是当前浏览者为登录用户则显示下面的内容*/
    print ;
  }
else {/*如果是当前浏览者为非登录用户则显示下面的内容*/
    print ;
  }
?>

按用户uid判断,这个很适合把一些特定区块只显示给管理员:

< ?php
global $user;/*是否为登录用户*/
if ($user -> uid == 10){/*如果是当前浏览者登录且uid等于10则显示下面的内容*/
    print ;
  }
else {/*如果是当前浏览者uid不等于10则显示下面的内容*/
    print ;
  }
?>

按角色判断,给不同用户组显示不同的内容:

< ?php
global $user;/*是否为登录用户*/
if (in_array('vips',$user ->roles)) {/*假定有一个角色,叫做'vips',如登录用户属于该用户组,则显示以下内容*/
print ;
}
else{/*若不属于'vips';用户组则显示以下内容*/
print ;
}
?>

判断用户是否有编辑权限:

< ?php
if (node_access('update', $node)){/*如果用户有编辑当前节点的权限,则显示以下内容。*/
print ;/*通常这儿是当前节点的编辑链接*/
}
else{/*如果没有,则显示以下内容。*/
print
}
?>
2002/090

Drupal-白宫新网站Recovery.gov

呵呵,前几天已经看到Recovery.gov,点进去稍微看了下,真是打死我都没想到这个站是基于Drupal的……
不过说来也对,Drupal是免费的,按照目前的经济状况,使用开源的程序可以节省纳税人的钱,对不?
第二呢,这也说明了白宫并没有就“社区合作开发的软件对于政府部门来说不够稳定和安全”的问题作过多的争辩。
第三,按理说,Drupal正在不断进步,它在民主政治方面有很深的根基,第一次引起政界注意的是Dean Space下的基金会出现,无论在哪个州,Drupal都拥有足够多的开发者社区进行开发。
最后,Recovery.gov采用Drupal标志着白宫正和Blue State Digital一起从事开源工作,该公司是奥巴马竞选时的Internet大本营。
作为社区共建的系统,Drupal依赖于开发者对代码进行改进,虽然白宫也可以开发出一些构建和节点,但终归还是的回到Drupal世界去。
哈哈,作为最近几年连续当选为最好的CMS系统的Drupal来说,这应该是理所当然的事。
---------------------------------------------------------------------------------------------------
话说这个星期的Drupal Camp议题是UI唉,还是Drupal官方的讲师,可惜最近忙着加班,应该不会安排去上海……

1902/091

Utf8substr()修改自Discuz!的字符串截取函数

下边这段函数是从Discuz!扣出来的,是utf8的字符串截取,不会乱码,有需要的随便用,版权属于康盛~

/*
 * utf8字符安全截取函数,注1个汉字为2个字符长度,如果长度截取到的是半个中文,该字符将不显示。
 *
 * $string   要截取的字符串
 * $length 	要截取的长度
 * $dot 	截取的长度小于字符串长度时候,返回的字符串结尾加上的字符,默认为'...'
 *
 * example:
 * $test="一二><aaaa 三四)(_==*&%$";
 * echo utf8substr($test,40,"<a href='xxx.php'>more");
 * this result is:
 * 一二></aaaa><aaaa 三四)(_==*<a href="xx.php">more
 */
function utf8substr($string, $length, $dot = '...') {
	$charset='utf-8';
	if(strlen($string) < = $length) {
		$dot ="";
		return $string;
	}
	$string = str_replace(array('&amp;', '&quot;', '&lt;', '&gt;'), array('&', '"', '<', '>'), $string);
	$strcut = '';
	if(strtolower($charset) == 'utf-8') {
		$n = $tn = $noc = 0;
		while($n < strlen($string)) {
			$t = ord($string[$n]);
			if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
				$tn = 1; $n++; $noc++;
			} elseif(194 <= $t && $t <= 223) {
				$tn = 2; $n += 2; $noc += 2;
			} elseif(224 <= $t && $t < 239) {
				$tn = 3; $n += 3; $noc += 2;
			} elseif(240 <= $t && $t <= 247) {
				$tn = 4; $n += 4; $noc += 2;
			} elseif(248 <= $t && $t <= 251) {
				$tn = 5; $n += 5; $noc += 2;
			} elseif($t == 252 || $t == 253) {
				$tn = 6; $n += 6; $noc += 2;
			} else {
				$n++;
			}
			if($noc >= $length) {
				break;
			}
		}
		if($noc > $length) {
			$n -= $tn;
		}
		$strcut = substr($string, 0, $n);
	} else {
		for($i = 0; $i < $length; $i++) {
			$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
		}
	}
	$strcut = str_replace(array('&', '"', '< ', '>'), array('&amp;', '&quot;', '&lt;', '&gt;'), $strcut);
	return $strcut.$dot;
}

1902/092

AS2-Discuz!用户列表Flash效果

前天跟一朋友谈天的时候讲到一款Flash星空的效果,想了一下,准备试着把Discuz!的用户做成这种效果,努力了一下,现在差不多是可以了。
Demo:http://www.wanplus.com/userlist/
先是Flash的主要代码:

function initList (_mc:MovieClip, numStart:Number, numEnd:Number) {
	for (var i:Number = numStart; i < numEnd; i++) {
		_mc.createEmptyMovieClip ('e_avatar' + i, 1000 + (numEnd - i));
		_mc['e_avatar' + i].createEmptyMovieClip ('loader', 1000 + i);
		_mc['e_avatar' + i].createTextField ('txtUName', 1, 0, 50, 50, 50);
		loadAvatar (mcAvatar, numStart);
	}
}
//加载函数
function loadAvatar (_mc:MovieClip, num:Number) {
	_mcLoader.loadClip (xmlRoot.childNodes[num].attributes['avatar'], _mc['e_avatar' + num].loader);
	_mc['e_avatar' + num]._x = Math.random () * (stageW - 130) + 50;
	_mc['e_avatar' + num]._y = Math.random () * (stageH - 130) + 50;
	_mc['e_avatar' + num].url = xmlRoot.childNodes[num].attributes['url'];
	_mc['e_avatar' + num].onRelease = function () {
		getURL (this.url);
	};
}
1802/092

ChapterIV:Fear – 微点的逆袭

以下内容来自网络:

3年前,北京警方破获“全国首例故意传播网络病毒案件”,称微点公司“在软件研制过程中,违规在互联网上下载、运行多种病毒”,“致使计算机病毒在互联网 上大量传播,严重危害网络安全,造成重大经济损失 ”.该新闻轰动一时.微点公司副总后来被警方关押11个月.日前,真相大白于天下,杀毒软件巨头瑞星公司当时为了扼杀微点这个新生的杀毒公司,请托北京市公安局网监处处长于兵通过假报案、假损失、假鉴定的手法陷害竞争对手.目前于兵已被北京市纪委立案调查,瑞星副总裁赵四章已被批捕.

一桩计算机杀毒业最大丑闻曝光,处于暴风眼中的瑞星成为了众矢之的,当IT商业新闻网的记者联线了瑞星副总裁毛一丁,电话那头的毛一丁对此显得十分无奈,“我不知道”成为毛一丁最常用的答复,当记者询问毛一丁如何评价东方微点主动防御杀毒技术时,毛一丁称“我不是专业技术人才,我不懂”,而谈及此事件会对瑞星的影响时,毛一丁一连用了“我代表不了瑞星”、“没授权,我不能说”,当记者继续追问时,毛一丁用了一句“别人爱说什么就说什么吧”,也许这句话正是此时此刻瑞星副总裁毛一丁内心最真实的流露.

"微点事件"已经过去3年了,还真是快,如今瑞星这个天杀的公司估计是快挺不住了,所谓墙倒众人推,现在知道舆论的厉害了吧……

1802/090

Flash CS3-Autoformat Bug自动套用格式Bug

发现这个Bug的同时G了一下,发现不少人都碰到这个问题,而且,目前Flash CS3也没解决这个问题,当然也有可能是因为使用的盗版的Flash CS3的关系……
大家碰到的问题以括号丢失或者括号嵌套出错居多,下边是一个例子:

function test1 (num:int):int {
	return (num - 1) * 2;
}

在自动套用格式后,会变成下边这个样子:

function test1 (num:int):int {
	return num - 1 * 2;
}

唉,返回的完全不是需要的结果。
还有其他的Bug,等着大家去挖掘……依个人之见,在CS3里,还是尽量少用自动套用格式吧,阿弥豆腐。

1802/092

AS3-Poker Deal 发牌效果

Demo:

想法跟素材都来自Windows的红心大战...
Core Codes:

1702/090

Discuz7!批量上传失败的解决办法

发现论坛最近批量上传附件总是提示框显示成功,上传处显示失败!而单个附件上传却是没有问题,甚至有些用户可以正常批量上传!真是莫名其妙的问题?!文件都是官方的没有做过修改,谁能告诉我,这是啥情况?
G来G去,没有结果,去官方论坛搜索,呀,似乎有个有用的办法:

模板文件的post.htm
'src', 'images/common/upload.swf?site=misc.php',
改成
'src', 'images/common/upload.swf?site={$boardurl}misc.php',

唉,莫名其妙的奇怪,我又没改过这个文件。。碰到同样的问题,可以试试这个法子,或许有用。

Page 1 of 41234