杂七杂八

外部调用字体文件实现字体嵌入

为了能在客户浏览器上准确显示设计者设计使用的字体,需要将字体文件嵌入到程序中,实现起来分为 字体文件编译进swf 和 外部调用字体文件两种。

编译进swf中会导致swf文件体积骤然增大,让swf文件调用外部的字体文件则更加适用(此时的字体文件为swf格式的文件)

步骤一    创建swf格式的字体文件。创建外部css文件,定义嵌入字体@font-face{ src:url(“…./xxx/xxx/MSYHBD.TTF”)   font-family:XXX   };

在管理器窗口右键点击该css文件选择“将css编译为SWF”,执行编译,bindebug中会生成与该css同名的swf文件,此乃包含MSYHBD字体的文件,供其他程序调用。

步骤二    注意先将之前“将css编译为SWF”设置的勾选去掉,在程序代码中使用方法 styleManager.loadStyleDeclarations(“…./xxx/xxx/XXX.swf”)来调用;   编译运行。

END

[娱乐ZT] 菊花文转换

近来由于敏感词的原因, 大家开始用菊花文了. 看起来很有趣,但是实际上很使用的.
原理其实就是按照简单的规则转换了字符而已.

Read More »

优秀程序员的45个习惯

转自   http://news.csdn.net/a/20100212/217004.html

优秀来自好的习惯。怎样成为优秀的开发人员?图灵公司最近热销的《高效程序员的45个习惯》一书给出了很好的解答,非常值得一读。

这本书的英文原版荣获了有软件奥斯卡之称的Jolt生产效率大奖,在Amazon上也是好评如潮。第一作者Venkat Subramaniam博士是Agile Developer公司创始人,敏捷开发方面的权威人士,精通各种开发技术。第二作者Andy Hunt更是大名鼎鼎的人物,是敏捷宣言的创始人,著名图书出版公司Pragmatic Programmers的创始人。他有两本书大家应该都是知道:经典的Ruby教程《Programming Ruby》还有许多开发人员的最爱《程序员修炼之道》。

译者团队则由著名的敏捷咨询公司ThoughtWorks咨询师钱安川和InfoQ中文站敏捷社区首席编辑、《程序员》杂志前副主编郑柯组成,可以信赖。

值得一提的是,这本书很像《程序员修炼之道》在敏捷时代的续篇。风格和写法都很神似。下面是从书中摘出的45个习惯标题,每个标题下面的文字是我读此书的笔记摘要。另外,图灵公司还在官方博客上提供了几个章节免费阅读(下面给出了链接)。

强烈推荐大家将这些打印出来,贴在自己的办公桌旁边的墙上,学习实践。

态度篇

1. 做实事

不要抱怨,发牢骚,指责他人,找出问题所在,想办法解决。对问题和错误,要勇于承担。

2. 欲速则不达

用小聪明、权宜之计解决问题,求快而不顾代码质量,会给项目留下要命的死角。

3. 对事不对人

就事论事,明智、真诚、虚心地讨论问题,提出创新方案。

4. 排除万难,奋勇前进

勇气往往是克服困难的唯一方法。

学习篇

5. 跟踪变化

新技术层出不穷并不可怕。坚持学习新技术,读书,读技术杂志,参加技术活动,与人交流。要多理解新词背后的所以然,把握技术大趋势,将新技术用于产品开发要谨慎。

6. 对团队投资

打造学习型团队,不断提高兄弟们的平均水平。

7. 懂得丢弃

老的套路和技术,该丢,就得丢。不要固步自封。

8. 打破砂锅问到底

不断追问,真正搞懂问题的本质。为什么?应该成为你的口头禅。

9. 把握开发节奏

控制好时间,养成好习惯,不要加班。

开发流程篇

10. 让客户做决定

让用户在现场,倾听他们的声音,对业务最重要的决策应该让他们说了算。

11. 让设计指导而不是操纵开发

设计是前进的地图,它指引的是方向,而不是目的本身。设计的详略程度应该适当。

12. 合理地使用技术

根据需要而不是其他因素选择技术。对各种技术方案进行严格地追问,真诚面对各种问题。

13. 让应用随时都可以发布

通过善用持续集成和版本管理,你应该随时都能够编译、运行甚至部署应用。

14. 提早集成,频繁集成

集成有风险,要尽早尽量多地集成。

15. 提早实现自动化部署

16. 使用演示获得频繁反馈

17. 使用短迭代,增量发布

18. 固定价格就意味着背叛承诺

估算应该基于实际的工作不断变化。

用户篇

19. 守护天使

自动化单元测试是你的守护天使。

20. 先用它再实现它

测试驱动开发其实是一种设计工具。

21. 不同环境,就有不同问题

要重视多平台问题。

22. 自动验收测试

23. 度量真实的进度

在工作量估算上,不要自欺欺人。

24. 倾听用户的声音

每一声抱怨都隐藏着宝贵的真理。

编程篇

25. 代码要清晰地表达意图(免费样章链接

代码是给人读的,不要耍小聪明。

26. 用代码沟通

注释的艺术。

27. 动态地进行取舍免费样章链接

记住,没有最佳解决方案。各种目标不可能面面俱到,关注对用户重要的需求。

28. 增量式编程

写一点代码就构建、测试、重构、休息。让代码干净利落。

29. 尽量简单

宁简勿繁。如果没有充足的理由,就不要使用什么模式、原则和特别的技术。

30. 编写内聚的代码

类和组件应该足够小,任务单一。

31. 告知,不要询问

多用消息传递,少用函数调用。

32. 根据契约进行替换

委托往往优于继承。

调试篇

33. 记录问题解决日志(免费样章链接

不要在同一地方摔倒两次。错误是最宝贵的财富。

34. 警告就是错误

忽视编译器的警告可能铸成大错。

35. 对问题各个击破(免费样章链接

分而治之是计算机科学中最重要的思想之一。但是,要从设计和原型阶段就考虑各部分应该能够很好地分离。

36. 报告所有的异常

37. 提供有用的错误信息(免费样章链接

稍微多花一点心思,出错的时候,将给你带来极大便利。

团队协作篇

38. 定期安排会面时间

常开会,开短会。

39. 架构师必须写代码(免费样章链接

不写代码的架构师不是好架构师。好的设计都来自实际编程。编程可以带来深入的理解。

40. 实行代码集体所有制

让开发人员在系统不同区域中不同的模块和任务之间轮岗。

41. 成为指导者

教学相长。分享能提高团队的总体能力。

42. 让大家自己想办法(免费样章链接

指引方向,而不是直接提供解决方案。让每个人都有机会在干中学习。

43. 准备好后再共享代码

不要提交无法编译或者没有通过单元测试的代码!

44. 做代码复查

复查对提高代码质量、减少错误极为重要。

45. 及时通报进展与问题(免费样章链接

主动通报,不要让别人来问你。

在你的网页中嵌入行情,炒股炒股,哈哈!

把这个swf嵌入你的网页就行,从招商证券那看见的,呵呵
因为看见这个好像不需要验证用户的,所以估计可以从里面看出点门道做一些实时的证券分析应用

flasher们,别执着于游戏制作了,试试做些商业应用吧!

https://etrade.newone.com.cn/qianxun/hq/socketHQ.swf?flashvars=logoUrl=companyLogo_sd.gif&ip=119.145.12.80|119.145.12.81|119.145.12.82&port=443|443|443&zqdm=

IOC(DI) in Flex

IOC:Inversion of Control(反转控制)

DI:Dependency Injection(依赖注入)

IOC一词来源于Martin Fowler发表的一篇文章,《Inversion of Control Containers and the Dependency Injection pattern》

那是什么被反转控制了?实际上指的是对象之间的依赖关系被反转控制了,原本由类自身维护所需对象实例的创建现在转由外部的IOC容器来维护。这种维护对象实例化的负责方被反转了。而依赖注入(DI)呢?意思更加明确,即获得所依赖对象的方式是由IOC容器从外部直接注入进来,而非我们通常的使用new的方式在类中来完成。

在JAVA中,大家熟知的Spring框架其核心内容便是反转控制及依赖注入。

使用IOC(DI)有什么好处?大致来说有两点:

1、类或模块之间的耦合度降低了,代码更易重用和维护

2、更加便于编写可测试的代码

随着面向对象的Actionscript3.0的推出,尤其是Flex在企业级应用中越来越多的应用,Flex(Flash)应用框架也越来越多,也有不少框架实现了IOC的功能,当然也包括一些独立的IOC容器框架。

在as3中实现IOC,核心是使用as3中的反射来完成的,相对来说,as3中的反射比起Java来说确实弱了不少,主要是利用describType返回的属性XML进行解析,而这样对性能会有一定的影响,若在as3中大量使用反射的话,一定要考虑到这一点. 另外,关于使用的配置文件,有以XML来进行的,有以MXML来实现的,也有两都均支持的,需注意的是以XML来实现的好外是我们可以直接更改外部XML而不需要重新编译相应源文件,而若使用MXML的话当你更改配置的话需要重新进行编译.

当然,目前以as3实现的IOC也有很多了,主要两在块:

  • 独立的IOC容器:

Flicc

smartypants-ioc (名字取得不错,呵呵)

SwiftSuspenders (比较小巧)

  • 实现了IOC功能的完整框架:

Spring Actionscript(原名:Prana,此框架现已归入Springsource,几乎是Spring IOC实现的as3翻版,熟悉Spring的Java开发人员几乎不需要什么过渡就能理解)

Swiz(也属于比较成熟的框架了)

Robotlegs(MVCS框架,可集成使用其它任何DI容器,最初建立在smartypants-ioc,目前自身使用SwiftSuspenders)

Parsley(由PowerFlasher开发,个人比较喜欢这个框架,本站前面由Daniel也写了一篇Parsley的入门文章,很不错~~~严格意义上来说它不算一种MVC框架,属于一套Toolkit,你完全可以使用自己的MVC方式来组织)

另外这里一份代码,一个Sample,以不同的IOC框架来实现,应该对大家学习比较有用:

http://code.google.com/p/flex-ioc-examples/

希望大家能找到适合自己项目使用的IOC容器^_^

12月1号,欢乐聚会

借着Adobe开发者日的东风,天地会黒羽总陀主,达达和Kenshin来到广州,古墓大哥盛情做东,召集了一班广东的朋友,大家谈天说地,共同畅饮了一番!
黒羽透露了下个月淘宝将会有重量级的产品推出,我们都一个劲猜是不是给基于淘宝的App Store以及相应的分成方案呢!
再一次感谢古墓大哥的盛情,期待下一次的欢聚!

Adobe开发者技术日_2009.12.02_前夜晚宴
感谢Y-boy为大家进行了标注!

再附上11月21号北京方面朋友的腐败聚会照片
bjcnflex

Lokoo的拼图游戏

Lokoo是个好同志,给我们分享了他练手的拼图游戏的代码
点击下载代码

安装方法:
1.解压文件
2.打开flex builder
3.”File”->”Import”->”Other”->在弹出菜单选”Existing Project Into Workspace”
4.选择刚才的解压目录导入项目
5.运行puzzleDemo.as文件

IT草民群:47388222
作者QQ: 深圳_Lokoo(6818248)

Read More »

广州点点乐网络科技有限公司招聘

重点是flex开发工程师,如果合适,待遇至少5000以上,联系ljponline@gmail.com

Flex视频开发工程师
岗位职责:
公司Web IM产品的设计、开发、维护和优化。
任职要求:
1、2年以上的AS3编程经验,熟练使用Flex SDK3.2或Flex Build进行开发;
2、精通Flash Player10 客户端与后台服务端的P2P通讯交互;
3、熟悉Adobe Stratus Service及RTMFP协议,能够开发实现基于Stratus的P2P视频语音服务;
4、精通Openfire服务器,熟悉XMPP协议;
5、熟悉FMS、Red5流媒体服务器;
6、有Web IM开发经验或产品者优先。

Read More »

多nginx单php-fpm的配置方法

用php fastcgi和nginx搭配的形式是很常见的,在很BT的需求下,可能会需要多个nginx走不同的端口,而进程只用一个php-fpm。

本文所讲的环境比上述一句话还要BT,存在一个php-fpm,而且每个nginx都以一个非超级用户所有来进行运行。

这样就存在了一个BT的情况,php-fpm默认不能以root权限运行,而普通用户来运行的话,对其他用户的目录,php-fpm将没有权限,页面在运行php的时候,会提示404。 Read More »

Hostmonster上创建SVN

本文大部分参考自徐明的博客,结合自己的实际操作,方便自己以后参考。

1. 申请SSH登录,在hostmonster那提交一个ticket,粘贴上自己的身份证复印件,通常一天内搞定
2. 登录SSH,执行以下操作

$ mkdir tools
$ cd tools
$ wget http://subversion.tigris.org/downloads/subversion-1.6.6.tar.bz2
$ wget http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.bz2
$ tar xjf subversion-1.6.6.tar.bz2
$ tar xjf subversion-deps-1.6.6.tar.bz2
$ mkdir svn
$ cd subversion-1.6.6
$ ./configure -prefix=$HOME/tools/svn -with-expat=builtin -with-pic -with-ssl
$ make
$ make install

经过上面几步,subversion就安装到了 $HOME/tools/svn 里面去了
然后修改$HOME目录下的“.bashrc”文件

vi .bashrc

添加一行,方便登录后在任何地方都可以执行到svn的命令

export PATH=~/python/bin:~/tools/svn/bin:$PATH

在tools目录下创建svn仓库:

# mkdir svnrep
# cd svnrep
# svnadmin create eshop

3. 在Windows中访问SVN目录
安装了TortoiseSVN后,打开TortoiseSVN的settings面板,在左边的功能导航选择Network,修改右边的SSH Client设置

C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe -l yoursshloginaccount -pw yourpassword

这里需要填写你的hostmonster的登录用户名和密码

选择一个空白工作目录,在资源管理器中用鼠标右键点击打开“SVN Checkout…”,填写

svn+ssh://yoursshloginaccount@yourdomain.com/home2/yoursshloginaccount/tools/svnrep/eshop/

确认后,这个空白目录就会变成一个和你的SVN仓库关联起来的svn工作目录,可以往这个目录中添加文件,提交到SVN仓库中去。

4. 在SSH中check out代码仓库的内容
通常php或别的脚本语言开发,我们的操作是在本地对代码进行测试开发测试,然后提交上SVN仓库,服务器端应用的发布目录就直接从SVN仓库中进行代码检出。

....假设当前目录有一个magento的程序,导入程序进SVN代码仓库
$ svn import -m "init import" magento file://$HOME/tools/svnrep/eshop/trunk/
$ cd
....把magento的内容导出到www目录进行发布
$ svn co file://$HOME/tools/svnrep/eshop/trunk/ www