2007/09/28

正在做一个好玩的fanfou应用


点击上图到安装页面,如果你无法正常在线安装,可以直接下载 fanfou.air。(先要有 AIR )

支持的功能有:
1.发布消息;
2.查看好友的消息;
3.……

更新(07/10/05/2:41):加入了“随便看看”,去掉了透明背景,修正了几处显示的 bug。
更新(08/3/15/1:05): 已经兼容最新的 AIR1.0,在线安装暂时无法使用,请直接下载 .air 文件,已经可以使用。

Labels: , ,

2007/09/26

gmail大bug?

晚上在 firefox 中死活无法写信,然后就直接选择在外部程序(IE)打开当前页,结果跑到某位老兄的 gmail 中去了,有图为证。如果真是 gmail 的 bug 太让人崩溃了。

更新:
本着不要相信妖怪的精神,找了这位老兄的邮件,发现他好像是 AIR 版 Google Analytics 的作者,而我下载试用过,可能是他使用了自己的帐号作体验用,结果在 IE 中变成默认登录的了。

Labels: ,

2007/09/25

月亮?

我也不清楚这是什么东西。
--------------------------------
提醒自己的:
上周上课只有我一个人,问题像山在那里一样等着我去提问“怎样显著地提高口语?”,然后答案就是“练习,练习,不断的练习”,答案就像问摩根弗里曼怎样演好戏一样。还有许许多多的“怎样写好程序?”,“怎样……”,对于某些活动,不断地编辑与剪辑真的是一种需要。
基础的东西很重要,设计模式、数据结构和 HTTP 协议类似的东西都很重要,需要发时间去了解熟悉。看到 Xu You 同学的的文章,写这篇 blog 提醒自己,不然很容易陷到一些奇技淫巧里面去。对基础知识的掌握有利于理解问题,而对问题的理解有利于问题的解决。这算是问题解决心理学的说法吧。

Labels: , ,

2007/09/18

尝试用as3处理XML


利用饭否的 API 生成的好友头像,因为平时没怎么用,也就没有多少好友,暂时用 Realazy 同学的好友(比较多)做测试。体验到 as3 处理 XML 的方便,基本上就是内建对 xpath 的支持,不过深度管理方面让人比较抓狂,还在琢磨中。发布成 AIR 的格式。

Labels: , , ,

2007/09/15

关于youtube flv几个有趣的东西

每次拖动播放时都会请求类似的东西:
URL=http://74.125.15.34/get_video?video_id=xjMCfDYUrgs&start=1310960&origin=chi-v122.chi.youtube.com
URL=http://cache.googlevideo.com/get_video?video_id=xjMCfDYUrgs&start=1310960&origin=chi-v122.chi.youtube.com

而 cache.googlevideo.com 的 IP 为 74.125.15.30。不清楚为什么每次都要分两种?youtube 新版的播放器出来有一段时间了,其中实现 stream 式(相比 progressive)的播放绝对是最有价值(或技术)含量的更新(虽然还是假的)。显然是请求的 URL 中的 start 参数实现的。另外,从 origin 参数来看,存视频的服务器显然不少。而 chi-v 比 archive 在不失可读性的情况下少了 2 个字节,如果请求数以亿计的话,这种小小的改变对速度或流量可能都是不可忽视的。

另:
事实上每个 youtube 的频都可以在 googlevideo 下到,比如:
http://www.youtube.com/watch?v=4l7riJ49VK8
那么它的地址便是:
http://cache.googlevideo.com/get_video?video_id=4l7riJ49VK8

Labels:

2007/09/06

如何改变 flex 默认的背景色

flex 默认的暗蓝色看多了就觉得难看,可以在编译参数里加入类似的声明:
-default-frame-rate 50
-default-background-color #FFFFFF
-default-size 800 600

如果是纯 actionscript 的话,可以在头部加入:
[SWF(width="800", height="600", frameRate="20", backgroundColor="#FFFFFF")]

Labels: ,

flex+php 实现的上传


actionscript 部分:
   public var file:FileReference;
private var
upNum:Number;
public function
selectFile():void
{


file = new FileReference();
file.addEventListener(Event.SELECT, fileSelected);
file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadDataComplete);
file.addEventListener(Event.COMPLETE, uploadComplete);
file.addEventListener(ProgressEvent.PROGRESS, progressHandler);
file.addEventListener(IOErrorEvent.IO_ERROR, handleError);
file.browse(getTypes());
}

private function
getTypes():Array {
var
allTypes:Array = new Array(getImageTypeFilter(), getTextTypeFilter());
return
allTypes;
}

private function
getImageTypeFilter():FileFilter {
return new
FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png");
}

private function
getTextTypeFilter():FileFilter {
return new
FileFilter("Text Files (*.txt, *.rtf)", "*.txt;*.rtf");
}

public function
progressHandler(event:ProgressEvent):void{
trace
("progressHandler name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
upNum=Math.floor((event.bytesLoaded/event.bytesTotal)*100);
probar.label= "uploading" + " " + upNum+ "%";
probar.setProgress(upNum,100);
}

public function
handleError(event:IOErrorEvent):void
{

status_txt.text = 'ERROR: ' + event.text + '\n';
}

public function
fileSelected(event:Event):void
{

file = FileReference(event.target);
file_txt.text = file.name;
status_txt.text = 'upload file: '+ file.name + '\n';
var
request:URLRequest = new URLRequest();
request.url = "theupload.php";
file.upload(request);
}

public function
uploadDataComplete(event:DataEvent):void
{

var
result:XML = new XML(event.data);
status_txt.text += 'Upload Data Complete\n'
status_txt.text += 'RESULT: ' + result.toString() + '\n'
status_txt.text += 'STATUS: ' + result.status + '\n';

status_txt.text += 'MESSAGE: '+ result.message;
}

public function
uploadComplete(event:Event):void
{

status_txt.text += 'Upload complete\n';
}

Labels: ,

greader 终于可以搜索了

greader 的搜索功能呼声相当高,终于出来了。今天在另一台电脑用得还挺爽,回来发现又不见了,把浏览器存的信息都删掉还是不出来。跑去 blog search 一番以为要设置什么,最后到 greader 的论坛一看,有人把 firefox 关了再开就出现了,差点把刚喝的水都吐出来。

2007/09/05

对摄像头颜色的捕捉


(点击图片打开,需要摄像头)
下面是文档中对 threshold() 的解释,经常用 PS 的人对 thresold 应该不会陌生。
根据指定的阈值测试图像中的像素值,并将通过测试的像素设置为新的颜色值。通过使用 threshold() 方法,您可以隔离和替换图像中的颜色范围,并对图像像素执行其它逻辑操作。
阈值测试的逻辑如下所示:
if ((pixelValue & mask) operation (threshold & mask)) then
set pixel to color
else
if (copySource) then
set pixel to corresponding pixel value from sourceBitmap

Labels: ,

2007/09/03

还是Seam Carving

图书馆
经过优化的代码,数学,数学……

Labels: ,

如何避免flash遮住其它内容

如果页面中有 flash 的话,一般的 z-index 对它是不起作用的,flash 始终会在最上面,解决办法是把它的背景设为透明,不过会带来一些其它问题,更多可参考顶尖设计师 Veerle 的文章。如果你和我一样,使用 swfobject 来嵌入 flash 的话,加入
 so.addParam("wmode", "transparent");
就可以了。

Labels: ,

Seam Carving


许多网页的内容可以根据设备或窗口大小改变布局,比如文字环绕图片随窗口缩小而流动;不过单纯的图片,一般只有死板的几种变换方式,挤压、等比例缩放或是裁剪,无法针对不同的设备自适应。而 Seam Carving 便是应此而生的,在最大限度保持图片信息的情况下删除或是补充图片的像素。

这是老赵同学在经过 Seam Carving 后的效果

Labels: ,

2007/09/01

两个东西

Flashdevelop3.0 beta 3 出来了,基本是现在最好的 actionscript 编辑器,新加了类似 firefox 的搜索,好用的软件都是相似的;
flickr 在 static.flickr.com 的根目录下加了 crossdomian.xml,意味着可以对 flickr 所有的图片进行 bitmap 水平的操作,最常用的估计就是平滑处理( 来自 yahoo flash blog 的例子)了。

Labels: , ,