收集一些网址

Flash类别: http://www.sonyericsson.com/cws/home?cc=cn&lc=zh 设计 http://mo-jie.blogbus.com/ 技术类: 1、http://www.chenjunlu.com/ 数据库,Google技术,android,OS,还有一些实事评论,影评

关于使用国外主机服务网站如何备案的经验

http://www.di15.com/2010/04/web-site-hosting-services-on-the-use-of-foreign-experience-in-how-to-record/

Google 开始对 Android 应用提供版权保护

http://www.chenjunlu.com/2010/08/google-provide-copy-protection-android-market-applications/ http://www.chenjunlu.com/ 经典文章

Oracle 传奇

告诉你一个真实的中国互联网:精英与草根

给一线开发人员一点小的建议

作为从事软件开发的一线程序员,我们每天都在不停地响应项目的需要,实现项目预定的功能。这些工作对刚开始作程序工作的程序员来说,可能是比较新鲜,对老程序员来说就有些枯燥乏味。老程序员感觉枯燥乏味之一,便是重复性工作。一些常用的代码写了一遍又一遍。

所以今天我给出的建议一:是将常用的代码建立一个代码库。以后如果遇到相同,或相似的功能,就从以前的代码中找。自己写过的代码是很熟悉的,所以很容易找到。直接copy后,稍加修改就OK了。其实早就听老程序员说过,写代码就是一个复制,粘贴的过程,我想他们一定是积累了大量的代码,遇到问题很容易找到相关的代码来参考。

今天给出我的建议二:做为一名代码开发人员,为自己建立一个常用工具类包。这个包就像工人的一个工具箱,医生的药箱。里面放着常用到的类。比如说String工具类,日期工具类,File工具类,XML工具类等。在开发自己的项目时直接将这个包加进来。在遇到问题是直接从这些工具类里面找API。比如说我在平时工作中就遇到要将数据从Excle,XML等转到数据库中的工作,所以我就将这个问题总结下来,专门做了一个程序包([数据格式转换工具 dataCross](http://datacross.3gstdy.com/ "数据格式转换"))

代码库是解决一些相同或相似的特殊问题的。而工具类是解决一些常见的小问题的。自己的代码是自己最熟悉的,利用好它们,能帮助你快速解决工作中的一些问题,不管是代码库还是工具类,都是一个长期积累的过程。需要在平时工作中不断完善。

Red Hat的版本号代表什么含义

Linux是GNU/Linux的缩写,通常指各种Linux发行版的通称。常见的Linux厂家主要有Redhat/Novell等。 Redhat有两大Linux产品系列,其一是免费的Fedora Core系列主要用于桌面版本,提供了较多新特性的支持。另外一个产品系列是收费的Enterprise系列,这个系列分成:AS/ES/WS等分支。 Advanced Server,缩写即AS。AS在标准Linux内核的基础上,做了性能上的增强,并提高了可靠性,集成了众多常见服务器的驱动程序。可轻松识别IBM/DELL/HP等常见机架式服务器的磁盘阵列卡等设备。 AS主要版本2.x/3.x/4.x,也就是我们所说的AS3/AS4每一个版本还有若干个升级,例如最早推出的AS4后,遇到了一些更新此时就会发 布AS4 Update1,以后还会陆续有AS4 Update2/Update3等出现简称AS4u1/AS4u2/AS4u3等。这和微软的发布形式也是非常类似的,微软的Windows NT4 从SP1出到SP6,Windows2000从SP1出到SP4。。。。 AS这些Update版本所包含的主要程序包版本都有一定差别,最好不要混用,否则很容易出现问题。Prima和Plesk的安装包,对于各种发行版都有了针对性的设计,在下载页面上,通常都会标识出来,支持哪些版本和哪些update的系统。 ES,是AS的精简版本。他与常见的AS系列的区别是,AS支持到4路以上CPU,而ES只能支持两路CPU。AS和ES在大多数程序包上并无区别, 只在内核等少数软件包上有差异。AS和ES的售价差别比较大,通常ES用在随服务器一同购买的OEM版本中。例如购买DELL服务器,搭配的Linux会 是ES系列。如果要搭配AS系列,则需要多花数千元。 WS,是ES的进一步简化版,主要针对企业内部的桌面办公市场,国内较少采用。 Redhat的Fedora Core Linux和Enterprise Linux,都需要遵循GNU协议即需要发布自己的源代码。 所以,对于免费的Fedora Core Linux,从Redhat网站上可以直接下载ISO刻盘,还能下载到SRPM的ISO,即程序包源码光盘。对于收费的Enterprise Linux系列,是一款商业产品,所以网站上不能下载到ISO文件,需要购买正式授权方可。由于Enterprise Linux也需要遵循GNU协议,故必须发布源代码。所以在Redhat的网站上,可以获得AS/ES/WS系列的SRPM源码ISO文件。这些文件可以 被自由的下载,修改代码,重新编译使用。 一个名为Community Enterprise Operating System的项目诞生了。他的缩写既是CentOS。CentOS社区将Redhat的网站上的所有源代码下载下来,进行重新编译。重新编译后,由于 AS/ES/WS是商业产品,必须将所有Redhat的Logo和标识改成自己的CentOS标识。比如将AS4原版的SRPM源码编译后,就成为了 CentOS 4.0。AS4Update1的源码编译后,就成为了CentOS4.1。AS4Update2的源码编译后,就成为了CentOS4.2。同 理,CentOS的3.x/4.x都对应着相应的版本。 所以我们说,CentOS就是Redhat的AS/ES/WS的免费版本。使用CentOS,可以获得和AS/ES相同的性能和感受。CentOS除 了提供标准的编号1~4或者1~5的若干张ISO以外,还提供了最小化1CD的Server光盘。用Server光盘安装好的系统,就是一个最小化的 Linux内核加上常用的httpd/mysql等包不包含Xwindows桌面等对于服务器无用的软件。 Prima、Plesk、Virtuozzo和都可以安装在CentOS上。 CentOS 中国科学技术大学(USTC)镜像站点(每小时更新一次)下载地址:http://centos.ustc.edu.cn/ CentOS-5.2-i386-bin-DVD.iso CentOS-5.1-i386-bin-DVD.iso CentOS-5.1-x86_64-bin-DVD.iso CentOS-5.5-i386-bin-DVD.iso CentOS-5.5-i386-LiveCD.iso CentOS-5.5-i386-netinstall.iso CentOS-5.5-x86_64-bin-DVD-1of2.iso CentOS-5.3-i386-bin-DVD.iso CentOS-5.3-x86_64-bin-DVD.iso CentOS-5.4-i386-bin-4of6.iso CentOS-5.4-i386-bin-1of6.iso CentOS-5.4-i386-bin-2of6.iso CentOS-5.4-i386-bin-3of6.iso CentOS-5.4-i386-bin-5of6.iso CentOS-5.4-i386-bin-6of6.iso CentOS-5.4-i386-bin-DVD.iso CentOS-5.4-x86_64-bin-DVD.iso red Hat 官方下载地址 https://rhn.redhat.com/rhn/software/downloads/AllISOs.do

关于视频会议项目开发前的一些话

任何一个项目的开发都不是一帆风顺的。同样这个项目今后也将面临这样或那样的问题,也许我们的项目会因为种种原因中断,所以,我们要做好思想准备。既不能冒进,也不能保守。 当遇到困难时不要轻易放弃,我们要有长期为之工作的思想准备,也许几个月,也许要几年。 我们也不能凭借一时的冲动,计划在很短的时间内完成很多模块,往往期望越高失望越大。正所谓乐极生悲,物极必反! 总之,我们不要一时的火焰三丈,而是要持续的温暖! 罗马不是一天建成的,我们一直在努力!

Android 2.4将与iPhone 5今夏同台竞技

北京时间1月13日早间消息,消息人士透露,Android下一个版本2.4将于今年夏天发布。届时,Android 2.4将与预计6月发布的iPhone 5同台竞技。 Android 2.4将与iPhone 5同台竞技 据报道,Android 2.4代号为Ice Cream或Ice Cream Sandwich,发布时间为今年5月或6月。 “iPhone 5将于今年6月发布,与此同时Android 2.4手机将十分常见,”科技行业分析师罗恩·恩德勒(Ron Enderle)表示,“双方将打得难分难舍。他们将不得不加大营销攻势。” 尼尔森最新统计数据显示,Android和iOS在美国智能手机市场份额不相上下。据去年6月到11月的数据,苹果以28.6%的份额稍稍领先,Android市场份额则为25.8%。 RIM黑莓市场份额为26.1%。在新购买设备中,Android则以40%份额领先,而苹果和黑莓的份额分别为27%和19%。 苹果的市场份额令人印象深刻,因为iOS操作系统目前仅运行在一款智能手机上,绑定一家美国运营商。而Android手机则拥有众多制造商,运行在所有主要运营商网络之上。这也是苹果拥有的一个营销优势。 “谷歌的问题在于产品太多,无法集中于其中任何一款,而苹果只需集中精力于一款设备。”恩德勒说,“消费者常常对Android产品线感到困惑。” “蜂巢”VS iPad 2 另一场谷歌苹果大战将在几个月之后的摩托罗拉及其他品牌平板与iPad 2之间上演。iPad 2可能最早下月发布。 Android 3.0是第一个要求双核处理器的版本,现有的单核设备将无法升级至这一版本。 “普遍的预期是,苹果应该能在iPad 2推出之前准备好双核处理器。”恩德勒表示,“但微处理器并非苹果的核心业务,他们有可能会错过双核解决方案。” 谷歌发言人兰德尔·萨拉法(Randall Sarafa)表示,“根据各大制造商的计划,Android 3.0还将出现在其他众多设备中。Android 3.0毫无疑问就是Android的未来。”

鲜为人知–3G技术竟由一位好莱坞艳丽女星创立

1942年美国女演员‘海蒂.拉玛’和她的作曲家丈夫提出一个Spectrum(频谱)的技术概念,这个被称为“展布频谱技术”【也称码分扩频技术】的技术理论在此后带给了我们这个世界不可思议的变化,就是这个技术理论最终演变成我们今天的3G技术,展布频谱技术就是3G技术的根本基础原理。 海蒂.拉玛 海蒂.拉玛经典黑白照 海蒂.拉玛最初研究这个技术是为了帮助美国军方制造出能够对付纳粹德国的电波干扰或防窃听的军事通讯系统,因此这个技术最初的作用是用于军事。二战结束后因为暂时失去了价值,美国军方封存了这项技术,但它的概念已使很多国家对此产生了兴趣,多国在 60年代都对此技术展开了研究,但进展不大。 直到1985年,在美国的圣迭戈成立了一个名为’高通‘的小公司(现成为世界五百强),这个公司利用美国军方解禁的’展布频谱技术‘开发出一个被名为’CDMA‘的新通讯技术,就是这个CDMA技术直接导致了3G的诞生。现在世界3G技术的3大标准.美国CDMA2000,欧洲WCDMA,中国TD-SCDMA,都是在CDMA的技术基础上开发出来的,CDMA就是3G的根本基础原理,而展布频谱技术就是CDMA的基础原理。 海蒂.拉玛,一个美丽而伟大的女演员,没有人知道她当时将这项技术送给美国政府时,希望能够对当时正如火如荼进行中的二次大战有帮助。可是美国军方的科学家完全不把她的研究当一回事。美国军方甚至认为海蒂如果想要帮助美国,还不如多利用她的美貌和明星的地位帮助美国多卖一些政府公债。事实上,海蒂真的帮忙卖了七百万美金的公债,而她和丈夫乔治的伟大发明,则一直处於被冷冻的状态。 但最终1942年8月她还是得到了美国的专利,在美国的专利局,曾经尘封着这样一份专利:专利号为2,292,387的“保密通信系统”专利,这个专利的通过时间是1942年8月11日,申请时间是1941年6月10日, 展布频谱技术(扩频技术)Spread Spectrum:。美国国家专利局网站上的存档 这个技术专利最初是用于军事用途的。 这份专利拥有者:第二个人,她的丈夫乔治.安塞尔是当时小有名气的作曲家,而居于第一位的就是好莱坞历史上号称最富姿色的绝世女星——曾经以50岁高龄活跃在屏幕上的艳星, 海蒂.拉玛(她用了半个世纪的艺名,真名就是图中的Hedy Kiesler Markey,但人们只记住了她的艺名)。 海蒂.拉玛出生于奥地利,她的丈夫是和她一样痛恨希特勒和墨索里尼的作曲家’乔治.安塞尔‘。 1938年3月纳粹正式进入奥地利,随后,她也逃到伦敦,以远离她失败的婚姻和众多的纳粹“朋友”。顺便也把纳粹无线通信方面的“ 军事机密”带到了盟国。这些机密主要是基于无线电保密通信的“指令式制导”系统,用于自动控制武器,精确打击目标,但为了防止无线电指令被敌军窃取,需要开发一系列的无线电通信的保密技术――受过良好教育的她偷偷地吸收了许多极具价值的前瞻性概念。 上帝的确是太偏爱这个女人了,除了惊人的美貌,更有惊人的头脑。她出身富贵,受过良好的教育,学的是通讯专业。她精力过人,在好莱坞打拼之余,竟有了如此发明,令人莫明震惊! 海蒂.拉玛一生在娱乐杂志封面出现已经是司空见惯,这一回却出现在了科技杂志封面上。真是科技与美的完美结合!

Android应用界面设计原则

Android的官方开发者博客发了一份幻灯片,介绍了一些Android UI设计的小贴士,Roger在这里以看图说话的形式发出来,有兴趣的读者就继续往下翻吧。整个PPT共分5个部分,Part I 翻译的是前两个部分。 作为开发者,为啥我们要关心UI,前面的一堆通通可以忽略掉,直接跳到最后一条。因为好的UI设计可以帮助我们卖出更多拷贝,赚到更多钱^_^ 这个PPT 包含5个部分: 1>该做什么,不该做什么 2>设计哲学和考量 3>你必须了解的 UI 框架特性 4>新的UI 设计模式 5>图标和准则 Don’t: 1>不要照搬你在其它平台的UI设计,应该让用户感觉是在真正使用一个 Android 软件,在你的商标显示和平台整体观感之间做好平衡 2>不要过度使用模态对话框 3>不要使用固定的绝对定位的布局 4>不要使用px单位,使用dp或者为文本使用sp 5> 不要使用太小的字体 Do: 1> 为高分辨率的屏幕创建资源(缩小总比放大好) 2> 需要点击的元素要够大 3> 图标设计遵循 Android 的准则 4> 使用适当的间距(margins, padding) 5> 支持D-pad和trackball导航 6> 正确管理活动(activity)堆栈 7> 正确处理屏幕方向变化 8> 使用主题/样式,尺寸和颜色资源来减少多余的值 9>和视觉交互设计师合作!!! 设计哲学: 1> 干净而不过于简单 2> 关注内容而非修饰 3> 保存一致,让用户容易投入其中,可附加少许变化 4> 使用云端服务(存储和同步用户资料)来加强用户体验 优秀界面的设计准则: 1> 关注用户 2> 显示正确的内容 3> 给予用户适当的回馈 4> 有章可循的行为模式 5> 容忍错误 Android应用界面设计官方指导文档 关注用户: 1> 了解你的用户(年龄,技能,文化,对你的应用的需求,使用的设备,何时何地如何使用设备) 2> ‘用户优先’的设计心态 (用户通常是任务导向的行为模式) 3> 更早,更频繁的由真实用户来测试 Android应用界面设计官方指导文档 显示正确的内容: 1> 最常用的操作需要最快被用户看到并且可用 2> 不太常用的功能可以放到菜单里面 Android应用界面设计官方指导文档 给予用户适当的回馈: 1> 交互式的UI元素最少需要反映出4种不同的状态 (default,disabled,focused,pressed) 2> 保证操作的结果是清晰可见的 3> 多给予用户进度提示,但是不要干扰他们当前的操作 Android应用界面设计官方指导文档 Android应用界面设计官方指导文档 有章可循的行为模式: 1> 行为模式遵循用户的期望(正确的操作活动堆栈,显示用户期望看到的信息和动作) 2> 使用合适的方式来加强功能可见性(可点击的元素就应该看起来是可以点击的) 3> 如果用户完成一项任务需要复杂的操作,重新思考你的设计!!!

Android应用界面设计官方指导文档 容忍错误: 1> 只允许有意义的操作(适当禁用一些按钮) 2> 尽量减少不可回退的操作 3> 允许回退(undo)比使用确定对话框更好(实际上,应该尽量少用确定对话框,它对用户是一种干扰) Android应用界面设计官方指导文档 如果错误是可能发生的,那它就一定会发生。 Android应用界面设计官方指导文档 设计考量: 1>屏幕的物理尺寸 2>屏幕密度 3> 屏幕的方向(竖向和横向) 4>主要的UI交互方式(触屏还是使用D-pad/trackball) 5>软键盘还是物理键盘 6>了解不同设备之间的相异之处是非常重要的! 7>阅读CDD,学习设备可能差异的地方 8>了解屏幕尺寸和密度分类 Android应用界面设计官方指导文档

横竖屏切换或按返回时要注销相关监听

今天一个网友给我发来一段异常日志,说是在横竖屏切换时或在按返回时会报出异常如下: Activity com.app.phone.jjclDialog has leaked IntentReceiver com.app.phone.jjclDialog$SmsState@4468af70 that was originally registered here. Are you missing a call to unregisterReceiver()? 我看了一下,问他在Activity中都做了什么业务,他说在其中有注册监听。我了解到在横竖屏切换时会重新启动Activity,我想可能是没有注销这些监听。所以我提醒他在onDestory中注销相关监听。结果就好了。

Google Map应用开发

大家知道Google地图开放的地理信息平台,在Android开发使用Google的地图十分方便,因为在Android中Google给出了相应的组件MapView。 下面我简要的介绍一下MapView的使用方法: 一、准备工作:生成apiKey,要使用Google Map必须指定一个apiKey。生成方式如下: 1. 首先先要获取你的debug keystore位置: 打开Eclipse—>Windows—>Preferences—>Android—>Build 查看默认的debug keystore位置,我的是C:Documents and SettingsMYNAME .androiddebug.keystore 2. 在cmd中执行: keytool -list -keystore ~/.android/debug.keystore 或者是: keytool -list -alias androiddebugkey -keystore “路径debug.keystore “ -storepass android -keypass android 双引号中的为你keystore位置, 注意,你的双引号一定要有,否则就会报错:keytool error: java.lang.RuntimeException: Usage error, and is not a legal command 执行结果: androiddebugkey, May 4, 2009, PrivateKeyEntry, Certificate fingerprint (MD5): XX:XX:XX:XX:XX:XX:XX:XX…………. 这里的XX:XX:XX:XX:XX:XX:XX:XX………….就是你的认证指纹 3. 打开http://code.google.com/intl/zh-CN/android/maps-api-signup.html 填入你的认证指纹(MD5)即可获得apiKey了,结果显示如下: 感谢您注册 Android 地图 API 密钥! 您的密钥是: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 4. 使用得到的apiKey: 在layout中加入MapView android:id=”@+id/mapview” android:layout_width=”fill_parent” android:layout_height=”fill_parent” android:apiKey=”XXXXXXXXXXXXXXXXXXXXXXXXXXXX” /> 第二、创建一个Android工程使用带有Google API的SDK. 在AndroidManifest.xml的application标签中加入以下代码,表明要使用的地图库 第三、创建View的XML文档 <com.google.android.maps.MapView android:id=”@+id/mapView” android:layout_width=”fill_parent” android:layout_height=”fill_parent” android:apiKey=”0sO38cxd8r3Wfv4_fjXis25jM5WDuFv9BqDgSng” /> 第四、创建一个继承MapActivity的Activity public class GoogleMap extends MapActivity implements View.OnClickListener{ private MapView mapView = null; private MapController mapCtrl; private GeoPoint geoPoint; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.googlemap); } @Override protected boolean isRouteDisplayed() { return false; } @Override public void onClick(View arg0) { } } 第五、设置地图视图 在onCreate方法中设置地图 mapView = (MapView)findViewById(R.id.mapView); mapView.setEnabled(true);//开启地图 mapView.setClickable(true);// 允许通过触摸拖动地图 mapView.setBuiltInZoomControls(true);// 可以多点触摸放大 mapView.setSatellite(true);// 使用卫星图 mapCtrl = (MapController) mapView.getController(); mapCtrl.setZoom(15); geoPoint = new GeoPoint((int) ((36.68717 + 0.00010) 1000000), (int) ((117.10398 + 0.00641) 1000000)); mapCtrl.setCenter(geoPoint); mapCtrl.animateTo(geoPoint);// 通过动画方式移动到指定坐标 六、结果 帖一图片作为结果吧

网站开发人员应该知道的62件事

在我的印象中,关于网站开发,这样全面的概述性文章非常少见,因此也就非常有用。大家不妨看看,62件事情中你做到了多少? 界面和用户体验(Interface and User Experience)

  • ● 知道各大浏览器执行Web标准的情况,保证你的站点在主要浏览器上都能正常运行。你至少要测试以下引擎:Gecko(用于Firefox)、Webkit(用于SafariChrome和一些手机浏览器)、IE(你可以利用微软发布的Application Compatibility VPC Images进行测试)和Opera。同时,不同的操作系统,可能也会影响浏览器如何呈现你的网站。
  • ● 除了浏览器,网站还有其他使用方式:手机、屏幕朗读器、搜索引擎等等。你应该知道在这些情况下,你的网站的运行状况。MobiForge提供了手机网站开发的一些相关知识。
  • ● 知道如何在基本不影响用户使用的情况下升级网站。通常来说,你必须有版本控制系统(CVS、Subversion、Git等等)和数据备份机制(backup)。
  • ● 不要让用户看到那些不友好的出错提示。
  • ● 不要直接显示用户的Email地址,至少不要用纯文本显示。
  • ● 为你的网站设置一些合理的使用限制,一旦超过门槛值,就自动停止服务。(这也与网站安全相关。)
  • ● 知道如何实现网页的渐进式增强(progressive enhancement)。
  • ● 用户发出POST请求后,总是将其重导向(redirect)至另外一个网页。
  • ● 不要忘记网站的可访问性(accessibility,即残疾人如何使用网站)。对于美国网站来说,有时这是法定要求WAI-ARIA有一些这方面很好的参考资料。

安全性(Security

  • ● 阅读《OWASP开发指南》,它提供了全面的网站安全指导。
  • ● 了解SQL注入(SQL injection)及其预防方法。
  • ● 永远不要信任用户提交的数据(cookie也是用户端提交的!)。
  • ● 不要明文(plain-text)储存用户的密码,要hash处理后再储存。
  • ● 不要对你的用户认证系统太自信,它可能很容易就被攻破,而你事先根本没意识到存在相关漏洞。
  • ● 了解如何处理信用卡
  • ● 在登录页面及其他处理敏感信息的页面,使用SSL/HTTPS
  • ● 知道如何对付session劫持(session hijacking)。
  • ● 避免”跨站点执行“(cross site scripting,XSS)。
  • ● 避免”跨域伪造请求“(cross site request forgeries,XSRF)。
  • ● 及时打上补丁,让你的系统始终跟上最新版本。
  • ● 确认你的数据库连接信息的安全性。
  • ● 跟踪攻击技术的最新发展,以及你使用的平台的最新安全漏洞。
  • ● 阅读Google的《浏览器安全手册》(Browser Security Handbook)。
  • ● 阅读《网络软件的黑客手册》(The Web Application Hackers Handbook)。

性能(Performance)

  • ● 只要有可能,就使用缓存(caching)。正确理解和使用HTTP cachingHTML5离线储存
  • ● 优化图片。不要把一个20KB的图片文件,作为重复出现的网页背景图案。
  • ● 学习如何用gzip/deflate压缩内容(deflate方式更可取)。
  • ● 将多个样式表文件或脚本文件,合为一个文件,这样可以减少浏览器的http请求数,以及减小gzip压缩后的文件总体积。
  • ● 浏览Yahoo的Exceptional Performance网站,里面有大量提升前端性能的优秀建议,还有他们的YSlow工具。Google的page speed则是另一个用来分析网页性能的工具。两者都要求安装Firebug
  • ● 如果你的网页用到大量的小体积图片(比如工具栏),就应该使用CSS Image Sprite,目的是减少http请求数。
  • ● 大流量的网站应该考虑将网页对象分散在多个域名(split components across domains)。
  • ● 静态内容(比如图片、CSS、JavaScript、以及其他cookie无关的网页内容)都应该放在一个不需要使用cookie的独立域名之上。因为域名之下如果有cookie,那么客户端向该域名发出的每次http请求,都会附上cookie内容。这里的一个好方法就是使用”内容分发网络”(Content Delivery Network,CDN)。
  • ● 将浏览器完成网页渲染所需要的http请求数最小化。
  • ● 使用Google的Closure Compiler压缩JavaScript文件,YUI Compressor亦可。
  • ● 确保网站根目录下有favicon.ico文件,因为即使网页中根本不包括这个文件,浏览器也会自动发出对它的请求。所以如果这个文件不存在,就会产生大量的404错误,消耗光你的服务器的带宽。

搜索引擎优化(Search Engine Optimization,SEO)

  • ● 使用”搜索引擎友好”的URL形式,比如example.com/pages/45-article-title,而不是example.com/index.php?page=45。
  • ● 不要使用”点击这里”之类的超级链接,因为这样等于浪费了一个SEO机会,而且降低了”屏幕朗读器”(screen reader)的使用效果。
  • ● 创建一个XML sitemap文件,它的缺省位置一般是/sitemap.xml(即放在网站根目录下)。
  • ● 当你有多个URL指向同一个内容时,在网页代码中使用
  • ● 使用Google的Webmaster Tools和Yahoo的Site Explorer
  • ● 从一开始就使用Google Analytics(或者开源的访问量分析工具Piwik)。
  • ● 知道robots.txt的作用,以及搜索引擎蜘蛛的工作原理。
  • ● 将www.example.com的访问请求导向example.com(使用301 Moved Permanently重定向),或者采用相反的做法,目的是防止Google把它们当做两个网站,分开计算排名。
  • ● 知道存在着恶意或行为不正当的网络蜘蛛。
  • ● 如果你的网站有非文本的内容(比如视频、音频等等),你应该参考Google的sitemap扩展协议

技术(Technology)

  • ● 理解HTTP协议,以及诸如GET、POST、sessions、cookies之类的概念,包括”无状态”(stateless)是什么意思。
  • ● 确保你的XHTML/HTMLCSS符合W3C标准,使得它们能够通过检验。这可以使你的网页避免触发浏览器的古怪行为(quirk),而且使它在”屏幕朗读器”和手机上也能正常工作。
  • ● 理解浏览器如何处理JavaScript脚本。
  • ● 理解网页上的JavaScript文件、样式表文件和其他资源是如何装载及运行的,考虑它们对页面性能有何影响。在某些情况下,可能应该将脚本文件放置在网页的尾部
  • ● 理解JavaScript沙箱(Javascript sandbox)的工作原理,尤其是如果你打算使用iframe。
  • ● 知道JavaScript可能无法使用或被禁用,以及Ajax并不是一定会运行。记住,”不允许脚本运行”(NoScript)正在某些用户中变得流行,手机浏览器对脚本的支持千差万别,而Google索引网页时不运行大部分的脚本文件。
  • ● 了解301重定向和302重定向之间的区别(这也是一个SEO相关问题)。
  • ● 尽可能多得了解你的部署平台(deployment platform)。
  • ● 考虑使用样式表重置(Reset Style Sheet)。
  • ● 考虑使用JavaScript框架(比如jQueryMooToolsPrototype),它们可以使你不用考虑浏览器之间的差异。

解决bug

  • ● 理解程序员20%的时间用于编码,80%的时间用于维护,根据这一点相应安排时间。
  • ● 建立一个有效的错误报告机制。
  • ● 建立某些途径或系统,让用户可以与你接触,向你提出建议和批评。
  • ● 为将来的维护和客服人员撰写文档,解释清楚系统是怎么运行的。
  • ● 经常备份!(并且确保这些备份是有效的。)除了备份机制,你还必须有一个恢复机制。
  • ● 使用某种版本控制系统储存你的文件,比如SubversionGit
  • ● 不要忘记做单元测试(Unit Testing),Selenium之类的框架会对你有用。