PHP外包开发服务网 » 经验分享

HTML5 Video视频技术

评论关闭

  HTML5是近十年来Web标准最巨大的飞跃。HTML5并非仅仅用来表示Web 内容,它也将Web带入一个成熟的应用平台,在这个平台上,视频,音频,动画,以及同电脑的交互都被标准化。随着HTML5的发展,各个浏览器都已经或即将支持HTML5。在大潮流的推动下,微软也表示将把HTML5作为IE9的核心,并将全力投入HTML5。   很多平时最喜欢上网看视频、玩游戏的朋友经常抱怨不爽,因为网上好多视频和游戏都需要安装Flash插件,并且速度也跟不上!HTML5的出现解决了这一难题。HTML5提供了音频视频的标准接口,实现了无需任何插件支持,只需浏览器支持相应的HTML5标签。怪不得都说HTML5是Flash的终结者!虽然Safari5、Firefox4和Chrome6等浏览器加入了HTML5技术,可以免除Flash插件的安装直接播放视频 ! 视频格式   当前,video 元素支持两种视频格式:    IE 8 Firefox 3.5 Opera 10.5 Chrome 3.0 Safari 3.0 Ogg √ √ √ MPEG 4 √ √ Ogg = 带有 Thedora 视频编码和 Vorbis 音频编码的 Ogg 文件   MPEG4 = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件 实例   <video src=”movie.ogg” width=”320″ height=”240″ controls=”controls”>Your browser does not support the video tag.</video>上面的例子使用一个 Ogg 文件,适用于Firefox、Opera 以及 Chrome 浏览器。   要确保适用于 Safari 浏览器,视频文件必须是 MPEG4 类型。   video 元素允许多个 source 元素。source 元素可以链接不同的视频文件。 国内浏览器的支持情况    浏览器\Video Video(element) src controls autoplay poster preload loop width height ie6 N – - – … Read More…

文章分类:经验分享

关于HTML5前沿技术探讨

评论关闭

HTML5的革命 HTML即超文本标记语言或超文本链接标示语言,是目前网络上应用最为广泛的语言,也是制作网页的主要语言。诞生于1993年的HTML,其文档制作并不是很复杂,且功能强大,支持不同数据格式的文件嵌入。 然而,HTML的最近一次升级还是1999年12月发布的HTML4。 乔布斯在檄文《关于Flash的思考》一文中说:“Flash是PC时代的产物,它是为个人电脑与鼠标发明的。”──其言外之意就是说已经不适应现在移动终端的需求。的确,诞生于上世纪末的HTML4仅是PC时代的产物(后继的XHTML语言除了语法外与HTML4几乎没有区别),在它诞生至今的10年里面,互联网世界已经发生了天翻地覆的变化:Netscape灰飞烟灭,微软的IE如今已经演化到了IE9;Firefox 从 Netscape 的死灰中诞生,重新占据了第二位;Safari和Chrome组成的Webkit(浏览器架构的一种)阵营为移动互联网世界勾画出了蓝图。 更重要的是,在如今的后Web2.0时代,人机交互、人网交互已经成为常态,对富媒体应用和本地存储的支持乏力成为现有浏览器的心腹之患。而将Web由内容平台改造为标准化的应用平台,并统一各大平台阵营的标准,正是HTML5的终极使命。 HTML5主要有以下几个特色:降低插件的重要性,简化Web开发;大幅提高对动态图像、位置服务、本地存储的支持;提高浏览器安全性。 很多业内人士认为HTML5以上特点是具有革命性的,特别是其丰富的标签体系,类似于内置了很多快捷键,将取代那些完成比较简单任务的插件,可以降低应用开发的技术门槛。 其实,由于鼓励创新,互联网在之前是非常欢迎浏览器插件的。而声音、动画及其他一些非常生动的网页,通过Adobe、 RealAudio、微软以及其他的一些公司开发的插件在网络呈现时也的确让人耳目一新。然而,问题很快就出现了,插件的接口是向所有人开放的,每个人都在尝试用自己定义的技术给网页增加新的功能,混乱不可避免。其中最有名的插件就是Flash,其他类似的插件更是数不胜数。 HTML5有望解决这一问题。举例来说,HTML5中的“video”标签使Web开发人员很容易地把视频内容与网页中的其他内容整合起来,使得Web的多媒体开发不再仅仅是使用Adobe的Flash、 微软的Silverlight和升阳的JavaFX——这些被垄断的富媒体开发工具的人员的专利。显然,这对互联网的富媒体化大有裨益。 总之,从获取到互动,从图片到视频,从云端到终端,当下互联网的复杂性,迫切需要HTML5这样的救世主出现。 其实,HTML5的诞生本身就是创新派“革命”的结果:万维网之父Tim Berners-Lee在创造出HTML的同时,建立了互联网标准化组织W3C(万维网联盟)。然而,在HTML之路上行走数年之后,W3C已经跟不上互联网时代的步伐。W3C当时认为,HTML4已经功德圆满,他们的下一步工作是语法升级的可扩展超文本置标语言XHTML。他们认为其可以将Web带入光明的未来。 然而,作为第三方的W3C组织忽略了一个重要的变量——在互联网时代崛起的科技巨头。实际上,在Netscape消失之后,IE并没有一统江湖。恰恰相反,浏览器进入了战国时代。Firefox、Opera、Safari相继诞生,而它们的背后都有着强大的支持力量。 于是,由于不满“互联网造物主”——W3C的思维僵化行为拖沓,苹果公司等新贵们自发组织成立了新的超文本语言标准工作组,这就是WHATWG(超文本应用科技工作组),其使命便是致力于HTML5的规范和普及。 现在看来,这些充满了野心和动力的科技巨擘,显然比无私的“互联网造物主”有力量的多。

文章分类:经验分享

Shell一句话技巧

评论关闭

、$$变量保存所运行的当前进程的进程号。$0 代表脚本文件名。$# 代表参数的个数、$_变量中存放上一条命令中最后一个参数的值 2、trap 命令可以捕获控制台信号 答:利用trap可以做Ctrl+C结束脚本时需要做的清理操作如:trap “ClearPID” 1 2 3 15 3、tee将信息输出到多个文件 答:echo “ok” | tee -a a.txt >>b.txt >>c.txt 4、查看本机tcp连接状态及数目统计 答:netstat -n |awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ | sort -n -k 2 -r 5、IFS变量 答: IFS用作shell指定的缺省域分隔符。原理上讲域分隔符可以是任意字符,但缺省通常为空格、新行或tab键。IFS在分隔文件或变量中各域时很有用。下面的例子将IFS设置为冒号,然后echo $PATH变量,给出一个目录分隔开来的可读性很强的路径列表。 6、while循环中最简单写死循环的方法为 答: while : do do someting done 7、 查出目前 ip_conntrack 记录最多的前五名 IP 答:cat /proc/net/ip_conntrack | cut -d ‘ ‘ -f 10 | cut -d ‘=’ -f 2 | sort | uniq -c | sort -nr | head -n 5 8、linux bash中暂时屏蔽 alias 答:\ 对,正是这个斜线可以暂时屏蔽alias的定义,如:cp -r 就不会再有是否覆盖的提示了。 … Read More…

文章分类:经验分享

配置yum源并与公网同步更新

评论关闭

尽管sohu和163都推出了mirrors服务,但当要配置多台服务器时仍然需要占用很多公网带宽,因此配置一个本地yum源并时常与公网同步就显得非常有必要了。本文介绍的就是针对CentOS 5.4 配置yum源, 并且每日同步公网数据。每日的同步使用rsync协议,这里要注意并不是所有的mirrors站点都支持rsync协议,不过不用担心,下文有更新脚本,里面有我测试过的几个支持rsync协议的mirros站点。 配置yum源 本文要配置3个yum软件仓库,分别为:CentOS标准软件仓库、epel、以及rpmforge。经过多次尝试,定位了速度和更新频率都比较理想的几个站点。更多的mirrors站点参见以下网址: CentOS:http://www.centos.org/modules/tinycontent/index.php?id=32 epel:https://fedoraproject.org/wiki/EPEL rpmforge:http://apt.sw.be/ 同步yum源脚本 #!/bin/bash #========================================== # Program : update_yum_source.sh # Info : 定期同步官方 yum 源到本机 # Version : 2010.01.28 First Release #========================================== Date=`date +%Y%m%d` LogFile=”/data/logs/rsync_yum/$Date.log” CentOSTrunkVer=”5″ CentOSCurrentVer=”5.4″ ReceiveMail=”nathanzhou@mysite.com” RsyncBin=”/usr/bin/rsync” RsyncPerm=”-avrt –delete –exclude=debug/ –exclude=isos/” CentOS_Trunk_Ver_Path=”/data/soft/mirror.mysite.com/centos/$CentOSTrunkVer” CentOS_Current_Ver_Path=”/data/soft/mirror.mysite.com/centos/$CentOSCurrentVer” YumSiteList=”rsync://mirror.averse.net/centos” #============ epel ============== epelSite=”rsync://mirrors.sohu.com/fedora-epel/” epelLocalPath=”/data/soft/mirror.mysite.com/epel” # rpmforge rpmforgeSite=”rsync://apt.sw.be/freshrpms/pub/dag/redhat/el5/” rpmforgeLocalPath=”/data/soft/mirror.mysite.com/rpmforce” echo “—- $Date `date +%T` Begin —-” >>$LogFile # centos 5 $RsyncBin $RsyncPerm $YumSiteList/$CentOSTrunkVer/ \ $CentOS_Trunk_Ver_Path >> $LogFile # centos 5.4 $RsyncBin $RsyncPerm $YumSiteList/$CentOSCurrentVer/ \ $CentOS_Current_Ver_Path >> $LogFile # epel $RsyncBin $RsyncPerm –exclude=4/ –exclude=4AS/ –exclude=4AS/ \ –exclude=4WS/ –bwlimit=500 … Read More…

文章分类:经验分享

运维-MySQL监控

评论关闭

Mysql作为广泛应用的数据库系统,平时运维工作中对她的监控必不可少,现在把我对Mysql数据库的监控体会写成下文,欢迎拍砖。 无论是DBA或是SA,监控的目标都很明确,无外乎 1.快速的得到Mysql过去一段时间或者当前运行的状态 2.因硬件升级或者系统配置的改变而诊断对Mysql数据库性能影响 3.在Mysql数据库系统出现故障要能够及时收到告警 4.为日后编写运维报告提供各项数据指标供分析 5.…… 想到了再做补充。而所有以上这些目的,通过各种方法和手段都可以做到。 自从Mysql数据库系统启动并且提供服务,Mysql内部自身的一套“计数器”就开始工作,可以通过 Show Global Status , Show global variables ,Show full processlist 得到Mysql数据库系统当前各种系统变量和状态 ,并且后文介绍个各种监控工具几乎都是对这三个指令的输出 进行数据的计算和统计分析。 这里要提到的是mysqladmin这个Mysql自带的工具,除了用来做各种管理工作,还可以用来做监控 例如:每个10秒输出一次mysql的状态信息 #./mysqladmin -i 10 extended status 一。GUI 类监控工具 1.MySQL administrator Mysql公司发布管理工具,安装和使用都很方便 可以对Mysql 的状态,变量和进程监控,并且有简单图形绘制输出。 2.Cacti 用它来做系统监控的同仁相信很多,目前各种插件数量也很多,足以满足绝大多数公司监控要求。 这里要说的是Mysql监控插件teMySQL_cacti,能够对mysql做比较全面的监控, 但是我发现这个插件很长时间没有更新了。

文章分类:经验分享

CVS SVN VSS 使用对比

评论关闭

版本控制系统里团队开发不免要用上CVS SVN VSS ClearCase等工具。至于选择上,则是根据开发团队搭建的平台,使用的编程语言相关联。 如果用.net平台开发,VSS无疑首选,尽管它曾经有不经时事的诟病,现在发展的功能也蛮强的。如果有服务器linux系统,则CVS,SVN都可以选择。现在SVN大有取代CVS之势。然而很多古老的程序员还是对CVS情有独钟。 如下节选一些网上的对比说明,我作以综述。当然,真正要弄懂这些版本控制系统,还是要花费巨大工夫学习研究,不可能在baidu或者google几下就能完成的。 一、Subversion包含绝大部分CVS功能 Subversion 作为CVS 的重写版和改进版,其目标就是作为一个更好的版本控制软件,取代目前流行的CVS。Subversion 的主要开发人员都是业界知名的CVS 专家。Subversion支持绝大部分的CVS 功能/命令;Subversion 的命令风格和界面也与CVS 非常接近。当然,不同的地方正是对CVS 的改进。 二、全局性的版本编号 一个新的版本,并得到一个自增量的版本号N+1,该版本号并不针对某个特定的文件,而是全局性的、针对整个版本库的。因此,我们可以将Subversion 的版本库看作是一个文件系统或文件目录树的数组。 从技术的角度来说,在Subversion 中,”文件foo.c 的第5 版本”这个说法是错误的;正确的说法应该是:”文件foo.c 在版本库被修改了5 次,即执行5 次commit 后是什么样子?”。显然,在Subversion 中,版本库被修改5 次后foo.c 的内容,和被修改了6 次后foo.c 的内容很可能完全一样,因为版本库的第6 次修改很可能只修改了版本库的其他部分,而并没有对foo.c 的进行修改。相反,在CVS 中,文件foo.c 的第1.1 版本和第1.2 版本总是不同的。 Subversion 的全局性版本编号为Subversion 带来了诸多的优势:如对目录或文件执行拷贝,无论涉及多少文件,Subversion 不需要对单个文件依次执行拷贝命令,仅仅需要建立一个指向相应的全局版本号的一个指针即可。 三、目录的版本控制 CVS 只能对文件进行版本控制,不能对目录进行版本控制,因此CVS 没有任何关于文件”移动”(move)操作的概念。当人为进行文件移动操作时,CVS 只能注意到,一个文件在一个位置被删除了,而在一个新位置创建了另外一个文件。由于它不会连接两个操作,因此也很容易使文件历史轨迹丢失。设置 CVS 存储库时,必须非常谨慎地为每个文件选择准确的位置,因为在设置之后,几乎就要一直使用这个位置了。 同样由于CVS 不记录目录的版本历史,CVS 不支持对文件的”重命名”(rename),人为的对文件进行重命名会使得命名前后的文件失去历史联系,而记录历史本来是版本管理的主要目的。 还有,CVS 不支持对文件的”拷贝”(copy),人为的拷贝对CVS 而言,只能看到新的文件的增加,而不能记录拷贝源文件和目标文件之间的联系。 综上所述,缺乏对文件”移动”、”重命名”、”拷贝”的支持的根源在于CVS 不能记录目录的版本历史,而这些操作在当前的软件开发过程中经常发生,这正是Subversion被开发并取代CVS 的主要原因之一。 Subversion 将目录作为一类特殊的文件来处理(事实上,从文件系统的角度来看,目录确实是一类特殊的文件,当目录中的子目录/文件被删除、重命名、或新的子目录/文件被创建时,目录的内容将发生改变)。因此,Subversion 象记录普通文件的修改历史一样记录对目录的修改历史,当发生文件/目录的移动、重命名或拷贝操作时,Subversion 能够准确记录操作前后的历史联系。同样,象对文件的不同历史版本进行比较一样,Subversion支持对目录的不同历史版本的比较,清晰展现目录的变化历史。 四、原子性提交 从使用者的角度来看,CVS 和Subversion 都支持对多个文件修改的批量提交,但二者在实现方式上存在本质的区别。 CVS 采用线性、串行的批量提交,即依次地,一个接一个地执行提交,每成功提交一个文件,该文件的一个新的版本即被记录到版本库中,提交时用户提供的日志信息被重复地存储到每一个被修改的文件的版本历史中。 CVS 串行批量提交模式的弊端在于 -当任何原因造成批量操作的中断时(典型原因包括:网络中断、客户端死机等),版本库往往处于一个不一致的状态:原本应该全部入库的文件只有一部分入库,很有可能版本库中的最新版本不能顺利编译,更为严重的是,随着其他的用户执行cvs update 操作,该不一致性将迅速在开发团队中扩散,从而严重影响团队的开发效率,并存在质量隐患。另外,假如该批量提交的中断没有被及时发现,开发团队往往要花更多的时间进行软件调试和排错。 CVS 即使在批量提交不发生中断时也会造成不一致:假设用户A 启动一个需要较长时间才能完成的批量提交;与此同时,用户B 执行cvs update 操作。此时,用户B 很有可能得到一个不一致的更新,即用户B 通过”更新”操作,得到用户A 的部分修改文件。 Subversion 彻底消除了CVS 的以上弊端。无论批量提交包含多少文件修改,只有当全部文件修改都成功入库,该提交才变得有效,才对其他用户可见;否则,无论任何原因造成中断,Subversion 都会自动执行”回滚”(rollback)操作。换一个说法,Subversion 保证所有的修改要么全部入库生效,要么一个也不入库,即对版本库不作任何的修改。这就是Subversion 的原子性提交(atomic commit)。 由于Subversion … Read More…

文章分类:经验分享

关于系统运维自身修养

评论关闭

运维工作师需要什么样的技能及素质 做为一名运维工程师需要什么样的技能及素质呢,首先说说技能吧,运维是一个集多IT工种技能与一身的岗位,对系统->网络->存储->协议->需求->开发->测试->安全等各环节都需要了解一些,但对于某些环节需熟悉甚至精通,如系统(基本操作系统的熟悉使用,*nix,windows..)、协议、开发(日常很重要的工作是自动运维化相关开发、大规模集群工具开发、管理)、通用应用(如lvs、ha、web server、db、中间件、存储等。。。)、网络(至少要对应用所处网络环境非常了解); 运维工程师的职责         1、保证服务达到要求的线标准,如99.9%;保证线上稳定,如,网络/系统运维工程师对网络、系统稳定负责,那应用运维就需对线上应用的稳定负责。   2、不断的提升应用的可靠性与健壮性、性能优化、安全提升;这方面非常考验主动性、和创新思维   3、网站各层面实时状态的监控、统计的覆盖度;软件、硬件、运行状态,能监控的都需要监控统计,避免监控死角、并能实时了解应用的运转情况。   4、通过创新思维解决运维效率问题;目前各公司大部份运维主要工作还是依赖人工操作干预,需要尽可能的解放双手   5、运维知识的积累与沉淀、文档的完备性,运维是一个经验性非常强的岗位,好的经验与陷阱都需积累下来,避免重复性范错。   6、成本控制;通过技术手段提升硬件承载、架构优化,如虚拟化技术,节省硬件开支。   7、自动化运维;能对日常机械化工作进行提炼、设计并开发成工具、系统,能让系统自动完成的尽量依靠系统;

文章分类:经验分享

一件小事

评论关闭

现在是23点26分左右,显然已经进入深夜,我和往常一样,还在网上转悠,想起来挂一下QQ,突然发现大概在20分钟前我们公司财务给我留言,说今天犯了个错误:把一张非常重要也非常紧急的发票没盖章就寄出了! 就这个事情来说,确实耽误事情了,本来计划下周一客户收到发票,这样一来,就算是重新寄出,这一来一回,好几天了。因为票面数额不小,所以处理起来比较麻烦。 财务刚到时间不长,出点小差错也可以原谅,重要的是,一般这个时候她是不会上线的,这么晚还上来和我说一句,我想今天晚上她是要难眠了。而且情况以及发生了,明天再补寄呗。 这件小事我想表达的是:只要惦记着工作,不管什么时候反思自己的失误,工作定能越做越好,公司也越做越好。不过,虽然如此,还是要少犯错误,特别是重要而且简单的“小事”。

文章分类:经验分享

关于流程改革过程中一个问题的思考

评论关闭

最近一直在做流程改革,发现了一个新问题,比较烦心。表现出来的现象就是,经常有同事跑到另外一个同事面前喊:这事情不该交给我! 例如:同事小Z负责测试工作,发现几个问题后,反馈给小J,小J说,这事情如果是这样情况应该给小X,否则就应该给另外一个小Z,反正不应该交给他。小Z也很无奈。 这个问题在以前的管理方式情况下,几乎不会发现,因为以前是一人负责制,什么时候都找这一个人就好,所以目的简单。但是以前单人负责制的弊端我就不说了,太多,太多。所以,走回头路是不可能,那么摆在我面前只有两个选择:1,把小J臭骂一顿,让他以后什么事情都扛下。2,给解决问题的出路明确化,让小Z把需求投对人。 问题分析到这里,明显应该选择第二条措施了,但是,我觉得还不够。原因很简单:我们必须有一套详尽的规则来约束投递人和解决人,否则我们不可能把日常的所有问题都发现,并一一对应。还有,是人总会犯错,如果还是投错了,怎么办?还有,测试的同事如果看到的东西根本不知道谁在处理怎么办?如果需求上没有,怎么办? 对,想好了,就这样办了: 1,首先力求需求明确化,把每个工作落实到每个人的头上,或者某几个人的头上,这样出来问题可以直接转到某个同事。 2,如果是新需求,之前没有分配,就先转到对应项目负责人,由项目负责人进行扭转。 3,项目负责人把不能确定的部分与相关人员(总监或者客户等)进行讨论,决定如何处理。 4,如果还是直接转给了其他同事,但是错了,那么这位同事也不要去找发出人,而是把问题转给项目负责人,项目负责人按照第三条模式进行处理。 总结:应该要求所有人员抱着同样一个心态:解决问题,而不是推卸责任。不管遇到什么事情,都要想办法解决,都要有个结果。

文章分类:经验分享
PHP外包开发服务网 苏ICP备09025214号 联系邮件:ask@china-php.com 返回顶部