微软不是一个令人尊敬的创新型企业,但它凭借其强大的技术背景和雄厚的资金实力,通过复制、模仿、完善竞争对手的产品,往往可以做到后来居上。Flash最大的优势在于它的技术成熟、稳定,并且已经拥有了一大批的忠实拥护者,在当前网络动画编辑领域居于绝对领先地位。微软发布的Silverlight是一个跨浏览器运行的插件,和Flash一样,可以显示矢量图形、动画和视频。

  虽然在很多方面,Silverlight表现出了比Flash更佳的性能,例如与AJAX结合更紧密,更容易动态生成,对搜索引擎更友好,开发工具集成度更高,等等。本文作者还是从以下四个方面列举了Silverlight无法取代Flash的理由。

  技术潜力

  对于一个专业开发者,在考虑选择哪门技术的时候,很重要的一个方面就是这门技术的发展潜力。包括它的改善空间、提升余地,以及你投入时间掌握这门技术后获得的经济回报。

  在短时间内,Silverlight会表现出强大的潜力。微软是一家资本雄厚的大公司,典型的微软模式就是,微软会为Silverlight砸很多钱,让人们相信这是一门值得学习的技术。我知道有许多Flash开发者已经通过开发Silverlight项目赚取了可观的收入,这些项目是由Redmond直接或间接援助的。Adobe在这个方面完全不能和微软竞争。虽然Adobe也有雄厚的资金,但还远比不上微软那样富到可以买上一个小国家。

  从长远来看,人们从Silverlight开发中学到的基本知识也不会昙花一现。但是,如果你真的对开发跨平台交互式WEB感兴趣,Silverlight技术未来将会在很大程度上把你的成功锁定在同一个平台(Windows)上。

  小结:Flash也许没有如Silverlight淘金般的发展潜力,但它是一门非常确立和成熟的技术(98%的安装基础,其中85%以上是Flash Player 9版本),它还会继续扩大它的使用范围,并在相当长的时间内在开发交互式Web领域稳定增长。当前微软在推动Silverlight发展方面投入了大量的金钱,但是在未来如果微软不再象现在这样往里面砸钱的话,Silverlight的前景就另人担忧了。

  运行时

  大多数对这两门技术的讨论都集中在其虚拟机的性能上。很正常,一个平台的成功性在很大程度上决定于它的性能。对于Silverlight,我并不是了解太多,但从现有资料看来,当前1.0beta VM基本上是SVG/WM接口。它并不支持构件(AKA controls),没有现成的语言解释器,也没有太多另人兴奋的亮点。而在新发布的α版Silverlight 1.1中这些方面有了明显的改进。但是Adobe在这方面还是处于领先地位,成熟的跨平台开发体验,对目标市场也有更深入的理解。

  接口大小和实用性也是考察的重要因素。Flash player,包括两个虚拟机、大量的功能程序,只有2MB,功能残缺不全的Silverlight1.0 beta是1.2MB(Mac上是5.3MB)。支持动态语言运行的α版Silverlight 1.1扩大到4.2MB(Mac上是10.3MB),如果要浏览Managed SilverLight的网页,就得下载这个Runtime,这对于储存空间拮据的手机系统来说,还是稍嫌庞大些。我预计将来还会更加庞大。接口大小在几年前也许还不是什么大问题,但它仍然会对接受度有很大的影响。在另一个方面说来,与网络相连的电脑上已经有98%都安装了Flash player了,它能自动更新,可以在Windows、Mac和Lunix上运行,是发布后升级最迅速的软件产品(前提是用户接受新版本)。

  小结:如果微软在这些方面继续改进,Silverlight会有非常大的潜力。不幸的是,我看到他们动作缓慢。Adobe仍大规模的领先,在实用性和普及率方面。

  开发工具

  我看过Expression suite,它给我留下了深刻印象,微软对它做了很大的改善。他们从Adobe的成功中学习长处并改进了其缺点。微软有许多开发实用开发工具的经验,这在它们的Expression工具中就可以看出。在这方面,Adobe并没有太多创建开发工具的经验。微软正在对Expression进行更新。Adobe也在做着一件深远的事,就是集成他们的开发工具创建一个凝聚性的工作流。

  从另一个角度,微软并没有开发设计工具的经验,事实上他们对设计者还不够了解。他们的工具只能在Windows平台上使用,这从一开始就切断了一半的设计者市场。在今年的微软MIX大会上,一位参会者在会间询问Lynda(Lynda.com站长),如果设计者们熟悉Expression后将如何转到Windows平台上去。她回答说她自己就是个Mac用户,但她不会转到Windows上去。我为Lynda的诚实鼓掌,我相信这也清楚的证实了微软要想让抵制者们改变原来的工具并不是一件容易的事。

  小结:微软将会建立更完善的开发工具集,并提供更佳的集成工具。但是,他们事实上是不愿意支持Macs的,他们并不能深入的理解创造性和设计者是他们的要害。Adobe对创造的流程有很深入的理解,它们对跨平台的支持性是微软不能比敌的。

  未来趋势

  虽然很容易被忽视,但这是一个非常重要的问题。为什么微软会构造Silverlight?微软的长远意图是什么?现在主要猜测是用来抢占Flash的RIA应用市场,但根据过去的观察,微软的行动一直很稳健,我想这一次也不会例外。

  微软因为其经常会在一项技术已被事实证明是成功后,再进入这个领域而臭名昭著,他们会扔进大量的金钱逐渐去扼杀竞争,一旦形成垄断,技术的发展就会遇到很大的阻碍。微软也经常会因一时的怪念头而放弃对跨平台特性的支持。确实,他们提供的很多跨平台产品到最后都会因为某种冠冕堂皇的理由被抛弃或半途而废(MAPI in Entourage, IE, VBScript in Office, Windows Media versioning and DRM, heck, 甚至Halo)。

  Adobe也不是慈善家,但他们已经证明自己的产品能够成功的支持跨平台特性,即使在交互式WEB页面开发上真正意义上的竞争者并不多,但Adobe一直在对产品进行改进。Silverlight会迫使他们做的更好。举个例子,如果没有Silverlight的出现,我们能否如此快的在Linux上看到Flash player9也将会是个疑问。

  小结:如果消灭掉了Flash,继续追求跨平台特性就不会是微软最佳利益的选择了,也很难保证持续对其革新。做为一个长期的Mac用户,我真的不能相信微软的意图,但是看到在Silverlight的压力下Adobe的持续改进也是一件另人高兴的事。

  结论:总的说来,我相信Silverlight的潜力,尤其在短期内微软砸进大量金钱的效果会比较明显。在不远的将来,微软的开发工具也可能会更加健壮,比起Adobe提供的工具有更高的集成度,但是仅仅支持Windows平台的特性会让大量的开发者和设计者与Silverlight保持距离。我相信Silverlight接口将会是一个合适的运行时程序,但它不会象Flash player那样打包到用字节计算,也决不会达到象Flash那样的安装普及率。总之,希望silverlight越走越好,因为对于程序员来说,多个选择,不是坏事。

胶济铁路火车相撞 不指定

Category : 杂谈 | Post on 2008/04/28 21:44 by gdgzboy | Comments:0
胶济铁路火车相撞70人死亡416人受伤

    胶济铁路28日凌晨4时41分,T195次北京至青岛四方的列车与5034次烟台至徐州的列车在山东省淄博市周村附近相撞。胶济铁路交通暂时中断。据铁道部最新统计,28日凌晨发生的胶济铁路火车相撞事故死亡人数已上升至70人。事故还造成416人受伤,其中重伤51人。受伤旅客中有4名外籍旅客。

    事故发生后,铁道部与山东省委、省政府已迅速启动紧急预案。铁道部部长刘志军立即赶赴现场组织指挥,要求全力救治受伤旅客。山东省委书记姜异康、省长姜大明等赶赴事故现场。

    记者从山东省政府应急办公室了解到,28日4时41分左右发生在胶济铁路淄博周村段的客车相撞事故导致数节车厢脱线、颠覆,伤亡人数与事故原因正在调查。

    28日凌晨4时41分左右,由北京开往青岛四方的T195次客车通过胶济铁路王村站,在铁路一个拐弯处,这列客车车尾前10-17位脱线、颠覆,造成由烟台开往山东菏泽的5034次客车与脱线、颠覆车辆相撞,5034次客车机后1-3位及机车脱线、颠覆。

    凌晨4时48分,济南铁路局发布紧急救援命令,出动救援。山东省委、省政府接报后立即启动应急预案,组织力量进行救援。事故后,山东省立即从事发地及周边地区组织公安、卫生、武警等赶赴事故现场进行救援,特别是从与淄博相邻的济南、潍坊等地组织卫生救援队伍赶赴现场投入救援。

    1904年建成通车的胶济铁路,连接着目前山东经济最为发达的济南、淄博、潍坊、青岛等大中城市,长期以来客货混跑,繁忙异常。2008年奥运会之前,历经百年沧桑的胶济铁路将告别客运历史,成为一条货运专线。一条连接济南青岛的快速客运专用铁路正在建设。

胡锦涛、温家宝就胶济铁路重大事故作出重要批示

    胶济铁路发生一起客车脱线相撞重大事故。事故发生后,党中央、国务院高度重视,中共中央总书记胡锦涛、国务院总理温家宝分别作出重要批示,并指派中共中央政治局委员、国务院副总理张德江立即赶赴现场,指导救援善后工作。目前,张德江一行已抵达事故现场开展工作。
1. XAML:用来描述界面的语言
Silverlight是用XAML语言来描述界面的。XAML是eXtensible Application Markup Language的缩写,也就是可扩展的应用程序标记语言。在WPF(Windows Presentation Foundation)中,第一次出现了XAML,用来描述.NET语言。而Silverlight中的XAML只用来对用户界面作出统一的描述,弥补HTML/CSS等在界面定制上的不足,并使开发人员和设计人员可以运用同一种语言进行交流,减少额外的工作量。因此,Silverlight XAML的语法相对WPF中的XAML相对要简单一些,也更容易上手。

虽然我们可以使用Microsoft Expression Studio的视觉化方式设计界面,但是了解XAML的基本语法可以帮助我们更好的定制自己的界面。如果想要直接编写XAML,使用Visual Studio 2008则可以提高编写的效率,因为里面有自动感应功能(Intellisense)。

2. Canvas容器和各种元素

任何Silverlight应用程序的界面描述都是以一个叫Canvas(画布)的容器为根开始的。当我们在Microsoft Expression Blend或者Visual Studio 2008中创建一个新的Silverlight项目后,总会生成一个只包含根Canvas的.xaml文件,如下所示:
<Canvas x:Name="parentCanvas"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="Page_Loaded"
x:Class="SilverlightTestProject.Page;assembly=ClientBin/SilverlightTestProject.dll"
Width="640"
Height="480"
Background="White">
</Canvas>

任何元素都必须添加在这个根Canvas容器的里面,因为一个界面里只能有一个这样的根Canvas容器。我们可以在这个根容器里加入子容器或者其他元素。每个元素都有一个标签相对应。比如在子容器中添加一个矩形,并在根容器中添加一个椭圆形:
<Canvas x:Name="parentCanvas"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="Page_Loaded"
x:Class="SilverlightTestProject.Page;assembly=ClientBin/SilverlightTestProject.dll"
Width="640"
Height="480"
Background="White">

    <Canvas>
        <Rectangle></Rectangle>
    </Canvas>

    <Ellipse></Ellipse>

</Canvas>

Silverlight定义的常见的几何图形包括矩形,椭圆,直线,多边形,多叉线(不封闭的折线),路径(可以画出任意的形状和线条,比如不封闭的曲线),等等。允许我们定制显示在界面上的文字。  

3. 附加元素属性

尝试以上代码,可以发觉我们其实看不到任何我们想要的性状,因为它们的默认的大小属性均为0。可见,仅使用这些元素标签还不足以得到我们想要得形状,我们需要在标签中设置它的属性值,确定它的大小、位置等等。

观察根Canvas,我们已经可以了解到一些属性的定制,比如只在根节点出现的定义xml名字空间(xmlns)以及自定义的xml名字空间(xmlns:x)。其中还有一些常用的属性,如宽(Width),高(Height)。在Canvas中,这两个属性既可以用像素值来表示,也可以用百分比来表示。x:Name表示该元素示例的名称,有了这个名称,我们就可以在.NET代码中操作这个元素示例。Background属性设置了背景的颜色,不设置这个值,则该元素透明。

每个元素都有属于自己的一组属性。比如,我们可以将刚才的代码改进一下:
<Canvas x:Name="parentCanvas"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="Page_Loaded"
x:Class="SilverlightTestProject.Page;assembly=ClientBin/SilverlightTestProject.dll"
Width="640"
Height="480"
Background="White">
    
    <Canvas x:Name="subCanvas" Canvas.Left="123" Canvas.Top="117" Width="53" Height="39">
    <Ellipse Fill="Yellow" Height="100" Width="200" StrokeThickness="2" Stroke="Black"/>
</Canvas>

<Rectangle x:Name="myRect" Canvas.Top="20" Canvas.Left="20" Width="100" Height="100" Fill="Blue" Stroke="Red" StrokeThickness="3" />

</Canvas>

则可以看到以下效果:

点击在新窗口中浏览此图片

其中Fill指定了填充色,Stroke和StrokeThickness定制了形状的轮廓线条的颜色和粗细。我们可以看到根Canvas下的子元素(包括子容器Canvas)的位置属性均表示相对上一级Canvas的坐标位置。值得注意的是这里虽然矩形myRect超出了subCanvas定义的边界范围,但它并不会被subCanvas剪裁,且仍属于subCanvas中的元素。

顺便一提,目前我们只有Canvas一种容器,在不久的将来,Silverlight将会提供更多的容器,使布局管理更方便。

4. 对象模型

在WPF中,XAML是.NET代码的xml表现形式;而在Silverlight中,我们同样有与XAML相对应的.NET语言编程方式。其中,每一个元素对应一个对象,元素属性在其.NET对象中都有对应的属性。例如先前一个例子中的矩形就可以用以下C#语言来表示:
Rectangle myRect = new Rectangle();
myRect .SetValue(Canvas.TopProperty, 117);
myRect .SetValue(Canvas.LeftProperty, 123);

myRect .Width = 100;
myRect .Height = 100;

SolidColorBrush brushBlue = new SolidColorBrush();
brushBlue.Color = Colors.Blue;
myRect .Fill = brushBlue;

SolidColorBrush brushRed = new SolidColorBrush();
brushRed.Color = Colors.Red;
myRect .Stroke = brushRed;

myRect .StrokeThickness = 3;

这里SolidColorBrush对象派生自Brush,是画刷的一种。Silverlight里定义了好几种不同的画刷对图形进行填充。属性Fill的默认画刷是SolidColorBrush,因此可以在.xaml文件中可以直接给Fill属性赋值,但在.NET语言中则必须明确指出画刷的类型。有关画刷的具体内容我们会在以后介绍。

刚才用C#定义出来的矩形还是独立的,如果要把它在界面上表示出来,则需要在其后加上下面这句代码将矩形加入上一级Canvas中:


Children.Add(myRect);

从今天开始,让我们系统的了解一下如何用.NET语言来开发Silverlight的应用程序。这个入门系列会包含用.NET语言(这里主要使用C#语言)开发Silverlight应用程序的各个方面,如UI控制、自定义控件、与HTML及Script语言的集成应用、HTTP网络存取等等。如果大家有什么感兴趣的话题也可以提出来。由于Silverlight 1.1还处于Alpha版本,.NET语言中关于Silverlight的一些API可能会与将来的正式版本中有些出入,但是大多数基本的东西还是不变的。

使用.NET语言开发Silverlight应用程序入门之一:了解项目结构

今天先让我们从Silverlight应用程序的.NET项目结构开始,看一下这样的一个项目中包含了些什么文件,这些文件分别是用来做什么的。了解这些内容有助于我们将来根据自己的需要制作更为复杂的项目内容。在开始介绍之前,请务必安装Silverlight 1.1 Alpha Refresh。


无论是Silverlight 1.0还是1.1版本,一个Silverlight项目总是包含以下几种文件:



  1. 嵌入Silverlight应用程序的html文件。
  2. 用来执行Silverlight应用程序载入工作的JavaScript文件。
  3. 定义和描述应用程序界面的XAML文件。

如果是.NET的项目,界面描述中所定义的新类型都包含在程序集(assembly)文件中。


我们可以用Microsoft Expression Blend 2 (目前最新的预览版本是September Preview)或者Visual Studio 2008 Beta2 (需安装好Silverlight Tool Alpha)来创建一个新.NET的项目。创建成功后,我们就可以看到一个Silverlight的.NET项目包含了如下的目录结构:



  1. References目录
    查看该目录,我们可以看到其中包含了许多 (.dll)文件,这些文件定义了项目中所引用的各托管类型。如果我们要使用其他自定义的类型,就可能需要手动添加包含该类型定义的.dll文件。 若Silverlight插件中没有包含项目所引用的某些程序集文件,则应用程序用户需要下载这些程序集文件到本地。
  2. Page.xaml
    项目默认的主界面的XAML描述文件。

    • Page.xaml.cs
      每个xaml文件之后都有一个对应的.NET语言文件。由于我们创建的是C#项目,所以其对应的文件为.cs文件。这个文件对.xaml文件中的所引用的.NET类型做了定义。 通过编译之后,项目会生成程序集文件,供.xaml文件引用,且该程序集文件会随Silverlight应用程序一起下载到用户本地。

  3. Silverlight.js
    该文件包含了运行Silverlight应用程序之前所必需的各种操作,主要检查用户是否安装了符合版本需求的Silverlight。如果没有安装,则Silverlight应用程序所在的页面将会显示图标,提示用户先安装插件。这里我们不建议Silverlight的开发设计人员改变该.js文件的内容。
  4. TestPage.html(Blend 2中创建的文件名为Default.html)
    该文件为项目的默认主页,文件中引入了Silverlight的脚本文件来载入Silverlight应用程序。

    • TestPage.html.js(Blend 2中的文件名为Default_html.js)
      该文件中定义了TestPage.html中调用的CreatSilverlight()方法来载入Silverlight应用程序。

让我们再具体的看一看其中一些文件所包含的内容:



  • TestPage.html

<html>
<head>
    <title>Silverlight Project Test Page </title>
    <script type="text/javascript" src="Silverlight.js" mce_src="Silverlight.js"></script>
    <script type="text/javascript" src="TestPage.html.js" mce_src="TestPage.html.js"></script>
    <style type="text/css">
    <!--设置应用程序在html页面中显示的大小,也可以用百分比表示,设置为100%则应用程序为自适应大小-->
        .silverlightHost { width: 640px; height: 480px; }
    </style>
</head>


<body>
    <!--以下的ID用来标示DIV,尤其当页面总有多个Silverlight实例时,这个ID就成为了标示每个Silverlight应用程序的重要标志-->
    <div id="SilverlightControlHost" class="silverlightHost" >
        <script type="text/javascript">
            createSilverlight();
        </script>
    </div>
</body>
</html>



  • TestPage.html.js

//creatSilverlight函数用来执行载入Silverlight应用程序的操作及相关属性
function createSilverlight()
{
Silverlight.createObjectEx({
  //指定了初始化载入的应用程序页面
  source: "Page.xaml",
  parentElement: document.getElementById("SilverlightControlHost"),
  id: "SilverlightControl",
  properties: {
   width: "100%",
   height: "100%",
   version: "1.1",
   enableHtmlAccess: "true"
  },
  events: {}
});
    
// 下面的函数是默认将键盘焦点集中在Silverlight应用程序上
    document.body.onload = function() {
      var silverlightControl = document.getElementById('SilverlightControl');
      if (silverlightControl)
      silverlightControl.focus();
    }
}



  • Page.xaml

<!--Canvas是一个包含了各种控件和元素的容器,每个Silverlight应用程序都有一个XAML的根文件,每个XAML文件的根都是一个Canvas容器,且只能有一个作为根元素的Canvas容器-->
<Canvas x:Name="parentCanvas"
        xmlns="
http://schemas.microsoft.com/client/2007"
        xmlns:x="
http://schemas.microsoft.com/winfx/2006/xaml"
       <!--指定当Load事件发生时所要载入的方法-->
        Loaded="Page_Loaded"
       <!--指定该.xaml文件中的托管类进入点,以及所涉及到的引用(程序集)的位置,一般项目编译生成的程序集文件都位于项目中的ClientBin文件夹中-->
        x:Class="SilverlightProjectStructure.Page;assembly=ClientBin/SilverlightProjectStructure.dll"

        Width="640"
        Height="480"
        Background="White"
        >
</Canvas>



  • Page.xaml.cs

public partial class Page : Canvas
    {
    
   //载入应用程序时的初始化方法,该方法中包含了所有页面初始化是所要做的操作
        public void Page_Loaded(object o, EventArgs e)
        {
           // 初始化变量时,以下方法必不可少
            InitializeComponent();


           //接下来指定其他所需的初始化操作……
      
}
    }

    "青年"的年龄上限是多少?

   山中问答:我看到报纸上说,14到28周岁的青年可以在“五四青年节”那天放半天假。刚看到的时候我很高兴,又能休息了。但是转而一想我就想哭了,明年我就29岁了,不能再享受“五四青年节”假期了。这是不是说明,明年我就是“中年人”了?

   Q友质疑:29岁就到中年?

    “山中问答”的话引来Q友一片“口水”。记者了解到,大部分人对“五四青年节”放假的新规表示欢迎。Q友“YY”说,以前上学的时候,每到“五四青年节”这天都要上课,让人感觉不到这个节日跟青年人有什么关系。虽说现在只放半天假,但总能抽空休息一下,好歹也像个节日了。

    但“14到28周岁的青年”才可以享受“五四青年节”待遇,这一年龄限制却受到不少Q友的质疑:这一年龄划分是按虚岁还是实岁,划分的依据是什么?

    Q友“小呆”说,“如果按虚岁来算,今年29岁的人正好是1980年出生的,那么他们就属于中年人了?没想到‘80后’也开始步入中年时代了。”另一位Q友也有疑问,如果公司里有两个人今年都是28岁,一个是5月3日出生的,一个是5月5日生的,那么5月3日生的那个人算不算青年呢?

    同时,由于现代社会的生活节奏快,很多人到28岁、29岁时还没有结婚,他们都认为自己还很年轻。这正如Q友“多多”说的,他今年也刚好29岁,以前总觉得自己很年轻,没想到因为青年节的放假规定,他一夜之间变成了“中年人”。他认为,把青年的年龄上限定在28岁太低了,应该放宽上限。

    “青年上限”说法不一

     究竟哪个年龄区间的人才能算是青年?面对Q友是质疑,查询了相关资料,发现对青年的年龄上限规定不一。

    记者翻阅资料了解到,《中国共产主义青年团团章》里所界定的青年年龄为14岁-28岁;世界卫生组织认为,14岁-44岁的人是青年;而根据中华全国青年联合会的相关规定,青年应在18岁-40岁之间。

    而在福建省、厦门市举办的各类青年比赛中,对参赛青年的年龄上限规定也不尽相同。2006年,厦门团市委和厦门市多部门联合举办的厦门市首届“十大杰出创业青年”评选活动中规定,参赛者年龄在18周岁-45周岁。2007年,第九届福建省优秀青年企业家评选活动中规定,参赛者年龄不超过45周岁。而刚刚结束的厦门市第四届“十佳进城务工青年”评选活动则要求参评者的年龄在18周岁-35周岁。  

    记者从厦门市统计局获悉,该局在做人口调查时,一般按照青少年(0岁-14岁)、成年人(15岁-64岁)以及老年人(65岁及以上)来划分,并没有单独划出“青年”年龄段。

    部门声音:

    将再次公布青年节放假适用人群年龄

    “青年”的年龄上限问题,不仅在商报Q群里引发了讨论,更是在网上引发热议。许多网友都认为青年的年龄上限应该提高。    

    从相关网站获悉,团中央以及国务院法制办正在收集关于“青年节”放假的不同公众声音,他们将与相关部门沟通,于近日内再次公布青年节放假适用人群年龄。
  首先,不可否认的说:PHP确实十分容易编写。但是PHP也有一些十分严重的缺陷。

  下面我会给出我的理由,为什么PHP不适合于比小型业余网站更大的网站。

  1. 对递归的不良支持

  递归是一种函数调用自身的机制。这是一种强大的特性可以把某些复杂的东西变得很简单。有一个使用递归的例子是快速排序(quicksort)。不幸的是,PHP并不擅长递归。Zeev,一个PHP开发人员,说道:“PHP 4.0(Zend)对密集数据使用了栈方式,而不是使用堆方式。也就是说它能容忍的递归函数的数量限制和其他语言比起来明显少。”见bug 1901。这是一个很不好的借口。每一个编程语言都应该提供良好的递归支持。

  2. 许多PHP模块都不是线程安全的

  在几年前,Apache发布了Web服务器的2.0版。这个版本支持多线程模式,在这个模式下,软件一个一部分可以同时运行多个。PHP的发明者说PHP的核心是线程安全的,但是非核心模块不一定是。但是十次有九次,你想要在PHP脚本中使用这种模块,但这又使你的脚本不能合适Apache的多线程模式。这也是为什么PHP小组不推荐在Apache 2 的多线程模式下运行PHP。不良的多线程模式支持使PHP常被认为是Apache 2依然不流行的原因之一。

  请阅读这篇讨论: Slashdot: Sites Rejecting Apache 2?.

  3. PHP 由于商业原因而不健全

  通过使用缓存,PHP的性能可以陡增500%[见基准测试]。那么为什么缓存没有被构建在PHP中呢?因为Zend——PHP的制造者,它在销售自己的Zend Accelerator,所以当然,他们不想抛弃自己的商业产品这块肥肉。

  但是有另一个可选择的: APC. (Zend后来推出Zend Optimizer,免费的加速器——译者)

  4. 没有命名空间

  设想某个人制作了一个PHP模块用来阅读文件。模块中一个函数叫做read。然后另一个人的模块可以读取网页的,同样包含一个函数read。然后我们就无法同时使用这两个模块了,因为PHP不知道你要用哪个函数。 但是有一个很简单的解决方法,那就是命名空间。曾经有人建议PHP5加入这个特性,但不幸得是他没有这么做。现在,没有命名空间,每个函数都必须加上模块名作为前缀,来避免名称冲突。这导致了函数名恐怖得长,例如xsl_xsltprocessor_transform_to_XML让代码难于书写和理解。

  5. 不标准的日期格式字符

  很多程序员对 日期格式字符 都很熟悉,它是从UNIX和C语言中来的。其他一些编程语言采用了这个标准,但是很奇怪的,PHP有它自己的一套完全不兼容的日期格式字符。在C中,“%j”表示一年中的当天,在PHP中他表示一个月中的当天。然而使事情更混乱的是:Smarty (一个很流行的PHP模版引擎)的 strftime 函数和 date_format 函数,却使用了C/UNIX的格式化字符。

  6. 混乱的许可证

  你也许认为PHP是免费的,所有的在手册中提到的PHP模块也是免费的。错了!例如,如果你想在PHP中生成PDF文件,你会在手册中发现两个模块:PDF 和 ClibPDF。但是这两个都是有商业许可证的。所以,你所使用的每个模块,你都要确保你同意他的许可证。

  7. 不一致的函数命名规则

  有些函数名称是有多个单词组成的。一般有三种单词组合的习惯:

  直接拼接:getnumberoffiles

  用下划线分开:get_number_of_files

  骆驼法则:getNumberOfFiles

  大部分语言选择其中一中。但是PHP都用到了。

  例如,你想要把一些特殊字符转换成HTML实体,你会使用函数htmlentities (直接拼接单词)。如果你要使用相反的功能,你要用到它的小弟弟html_entity_decode。由于某些特殊的原因,这个函数名是由下划线分隔单词。怎么能这样呢?你知道有一个函数叫strpad。或者他是str_pad?每次你都要查看一下到底这个符号是什么或者直接等他出现一个错误。函数是不分大小写的,所以对于PHP来说rawurldecode 和RawUrlDecode之间没有什么区别。这也很糟糕,因为两个都使用到了同时他们看上去还不一样,混淆了阅读者。

  8. 魔法引用的地狱

  魔法引用(Magic quote)可以保护PHP脚本免受SQL注入攻击。这很好。但是出于某些原因,你可以在php.ini中关闭这个配置。所以你如果要写出一个有弹性的脚本,你总要检查魔法引用是开启还是关闭。这样一个“特性”应该让编程更简单,而事实上变得更复杂了。

  9. 缺少标准框架

  一个成长中的网站没有一个整体框架,最终会变成维护的噩梦。一个框架可以让很多工作变得简单。现在最流行的框架模型时MVC-模型,在其中表现层、业务逻辑和数据库访问都分离开了。

  很多PHP网站不使用MVC-模型。他们甚至没有一个框架。甚至现在有一些PHP框架同时你都可以自己写一个,关于PHP的文章和手册没有提高框架的一个字。同时JSP-开发人员使用像Struts的框架、ASP开发人员使用.net,看起来好像这些概念都广泛被PHP开发人员所了解。这就说明了PHP实际上到底是多专业。

  总结

  什么问题?

  对于非常小的项目,它可以是一个十分符合人意的编程语言。但是对于较大的和更为复杂的项目,PHP就显出他的薄弱了。当你不断地摸索之后,你会发现我提到的某些问题的解决方案。所以,当解决方案已知之后,为什么不能修正他呢?另外为什么这些修补不在手册中提到呢? 一个开源的语言十分流行是一件好事。但不幸得是,它不是一个伟大的语言。我希望所有的问题能有一天得到解决(也许在PHP6?),然后我们就将拥有一个开源语言,他既开源,又好用。

  到现在,当你要启动一个多于5个脚本页面的项目的时候,你最好考虑C#/ASP.NET或者 Java/JSP或者也许Python同样是一个更好的选择。

    看完了,你还是只钟情于PHP吗?或者说,已经找到了更好的选择呢?
  相信打过CS的朋友都知道,当子弹射进脑袋,那叫爆头,代表脑袋被打爆了,不过今天这篇文章所说的,保证你会不相信……不过不相信也就算了,千万别买根枪自己实验啊。

  美国女子眉心中弹 头盖骨竟碰碎子弹片

  核心提示:美国佛罗里达州里弗维尤市42岁女子玛丽4月12日驱车经过坦帕市时,遭到几名暴徒的袭击,一名暴徒拿起手枪,朝她的眉心开了一枪。然而令人意想不到的是,射进玛丽眉心的子弹撞上坚硬的头盖骨后裂成了三片,子弹碎片接着弹出头骨,并从她的脸颊皮肤上穿了出来。

点击在新窗口中浏览此图片

  眉心中枪,竟然只须缝合伤口

  美国佛罗里达州里弗维尤市42岁女子玛丽4月12日驱车经过坦帕市时,遭到几名暴徒的袭击,一名暴徒拿起手枪,朝她的眉心开了一枪。然而令人意想不到的是,玛丽非但没有当场身亡,反而奇迹般地大难不死,眉心有个子弹洞的她竟然还能神智清醒地和医生说话,将救援医生惊得目瞪口呆。原来射进玛丽眉心的子弹撞上坚硬的头盖骨后裂成了三片,子弹碎片接着弹出头骨,并从她的脸颊皮肤上穿了出来。医生称他们一辈子也没见到过这种奇事。

  街上遭袭眉心被射中

  4月12日,玛丽和男友以及22岁的女儿到坦帕市消夜后,准备驱车回家。然而当他们的汽车在坦帕市第50大街行驶时,两辆尼桑车突然驶到了他们的车旁,其中一辆车上坐着两名男子,另一辆车上坐着4名男子。当三辆汽车在一处红灯前停下时,两辆尼桑车上的男子开始朝玛丽的汽车叫嚷,他们一边口吐脏话,一边用手做出下流的手势。

  当绿灯亮起、三辆汽车又开始前行时,那两辆车仍然紧紧地跟随在玛丽的汽车旁,试图撞他们的车。当玛丽朝他们愤怒地谴责时,对方一名男子射出的一枚子弹不偏不倚正好击中了玛丽的眉心。两辆汽车随后加速逃逸而去。

  坐起讲话惊呆医生

  一开始,玛丽压根没有意识到自己中弹,直到她发现鲜血正从她的脑袋上喷涌而出时,她才知道自己的脑袋被子弹击中了。玛丽回忆说:“我以为自己就要死了,但我仍然拥有清醒的意识。”

  玛丽的女儿随后拨打911电话报警求助,玛丽被送到医院后,竟然还能从担架上坐起来和医生说话,将救援医师布拉德·佩克勒惊得目瞪口呆,佩克勒说:“我们全都被惊呆了,充满怀疑地看着她,因为你并不是每一天都能遇到一个人双眼之间中了大口径枪伤后,不但还能活着,而且还能神智清醒地和你讲话。”

  坚硬脑壳弹出子弹

  医生为玛丽进行检查后发现,原来那枚子弹射中她的眉心后,撞到了坚硬的头盖骨,竟然裂成了三片,子弹碎片随后弹出头盖骨,继续在玛丽的额部皮肤下穿行,一直穿过面颊皮肤从耳朵附近射出。医生认为,他们唯一需要为玛丽做的事,就是为她缝好脸上的伤口。当玛丽脸部的伤口被缝好后,她就自己步行走出了医院。玛丽说:“我的男友对我说,我是世界上最幸运的人,我现在应该去购买彩票。”当地警方目前仍在追寻那几名行凶暴徒的下落。他们相信暴徒们当时一共射出了3枚子弹,其中一枚击中了玛丽的眉心,警方相信暴徒使用的是一把.44口径的手枪。
Tags:
深更半夜,女人的哭喊声又惊动了整个村庄,村子里的人一听这撕心裂肺的声音,就觉得又是阿O打老婆了。除了阿O家,全村早都杜绝了家庭暴力。于是不少村民披着衣服趿拉着鞋就都聚到阿O家门外。

“开门,开门!”

听到门外的喊声,阿O从屋里冲出来,气呼呼地说:“嚷什么嚷,又没死人,干嘛围住我家!想找茬是不是?”

“你又打你老婆了?”

“谁说的?你们谁看见我打她了?!”

“那你老婆哭喊什么?”

“她哭不哭管你们什么事啊,狗咬耗子——多管闲事,反正我没打她!”

“让我们进去看看她伤得怎么样”

“凭啥?我的家凭啥让你们进去!我老婆凭啥让你们看?你们这帮女人是不是嫉妒我老婆长得漂亮啊?你们这些男人是不是对我老婆图谋不轨呀!让你们进来,万一家里东西丢了咋办?你们又没看到我打她,怎么就说她受伤了?!这不是有意栽赃陷害我吗?你们居心何在?你们才几天不打老婆,就教训起我来了!看我结婚晚,就欺负到我头上来了?不想我有个幸福的家是吧,眼红了是不是?”

阿O的老婆听到外面来人了,就大呼救命。阿O便回到屋里恶狠狠地训斥老婆:“丢不丢人啊,让邻居知道我打你了,显得我们家很光彩吗?只丢我一个人的脸吗?你也没脸见人!家丑不可外扬!懂不懂?我看还是教训得轻!”

阿O的老婆便不再言语,众人只得散去。

第二天,村民捎信给阿O老婆的娘家,希望她娘家人能来管管阿O。谁料她娘家人却说:“嫁出去的女儿如泼出去的水;嫁鸡随鸡,嫁狗随狗;嫁了官当娘子,嫁给杀猪的就翻肠子。我女儿就是这个命,我们也没办法。再说了,假若我们的女儿不嫁给阿O,他的生活会更悲惨,人也会更狠更暴力,你们村不定谁倒霉呢!”

村民无奈,但也不能任由阿O一个人打老婆败坏全村人的名声,于是就一直想找机会教训他一下。

几个月后,阿O的老婆给阿O生了个小O,可把阿O高兴坏了,他给全村人报喜,请大家在孩子满月时去喝喜酒。

机会来了,村民就商议不去阿O家喝喜酒,请客没人去,让他难堪,看他知道悔改不!

消息传到阿O的耳朵里,他却辩说道:“老婆是我的,打不打老婆是我的事;满月的是我儿子,又不是我,喜酒是我儿子的事。怎么能把儿子的事与老子的事混为一谈呢?我儿子刚出生,他又没打老婆,又没做伤天害理的事,又没辱没村风,你们怎么能不喝他的喜酒呢?”

阿O的老婆听说邻居不打算来喝喜酒,也劝大家:“来吧,阿O又没打你们,他打我是家务事,用不着你们去管。清官都难断家务事,你们管得了吗?再说了,等小O长大了,知道自己的满月酒没人来喝,他也会觉得脸上无光的,你们这不是把他也得罪了吗?何必和一个刚出生的孩子作对呢?”


小O的满月酒到底该不该喝?全村人陷入了争论和沉思……

以上故事想深一层,结合当前中国的事件,可以想到:阿O(中国)打老婆(阿达)大家(全世界)该不该喝小O(奥运)的满月酒

以上喻体,来自广东落伍群
大话西游看过了吧……

里面星爷不是出现几次的下体(JJ)着火了,星爷不是被狂踩吗?但是看他的样子,好象很爽哦。

而现实社会中,有人继承了星爷的风格,缔造了真实版的下体被狂踩……请看图……

点击在新窗口中浏览此图片

强悍吧?

个人觉得他绝对比星爷厉害……毕竟星爷是拍戏……虽然很搞笑……但也比不上这个人……勇于挑战事实……绝对是星爷的接班人……

赞一下……有兴趣的可以自己试试……可以联系我做帮忙灭火的人……

从ngacn.com被盗看域名的安全性 不指定

Category : 杂谈 | Post on 2008/04/21 13:05 by gdgzboy | Comments:0
[此文来源于互联网,牛C网只负责收集整理]

  《魔兽世界》这款网络游戏,因其内蕴丰富注重平衡而成功。针对这款游戏的爱好者站点也同样有因内蕴丰富用户众多得以成功的,Ngacn.com艾泽拉斯国家地理网站就是其中的代表。

  近日我们突然得知消息,Ngacn.com艾泽拉斯国家地理网站的主域名ngacn.com被人利用域名注册代理商的漏洞劫持成功。看来我们国内的这些域名注册代理商应该引起注意了,虽说一个域名的注册费用只有几十元人民币,但是对于拥有这个域名的网站来说,可能就意味着上百甚至上千万的价值。这个管理上的漏洞必须得堵住,域名转手这样的大事可不能因为一时的方便说干就干。

  喜欢泽拉斯国家地理网站的读者们目前可以通过ngacn.cc临时访问,我们相信,问题终会很好的解决。

  以下是艾泽拉斯国家地理网站的公告:

  
引用
关于NGACN.COM域名被盗事件的说明

  接下来简要向大家说明一下事件的重点

  1 有人伪造了ediart的身份证,在我们的域名注册商,万网,在ediart毫不知情的情况下将ngacn.com的一系列域名转手到其他人名下
  2 现在ngacn.com的一系列域名不受我们的控制,你们使用ngacn.com系列域名访问到的可能不是ngacn网站
  3 在我们发布公告取回宣布这个域名之前请勿再使用ngacn.com系列域名访问(包括ngacn.com bbs.ngacn.com atlas.ngacn.com wiki.ngacn.com dkp.ngacn.com db.ngacn.com)
  4 我们启用了一个新的临时域名ngacn.cc系列(ngacn.cc bbs.ngacn.cc atlas.ngacn.cc wiki.ngacn.cc dkp.ngacn.cc db.ngacn.cc 既把所有的.COM换成.CC),大约在2008 04 18生效,将会通过九城发布这一消息
  5 我们正在试图通过和万网交涉来解决此事,并希望有关方面的热心朋友能够帮助艾泽拉斯国家地理取回这个域名(请联络miaom),目前已知的事实有假冒ediart的人取回域名管理密码时使用的身份证复印件是伪造的,与ediart现在所持的身份证信息不同。


  不知道各位站长看到这样的消息,会有何感想呢?

    曾经听说,域名过户有多难多难,现在一看,好象就这么简单吧。呵呵。

Google网站管理员工具(Webmaster Console)中的robots.txt分析工具很早就提供了对robots.txt中的sitemap引用的分析功能。

但是中文用户似乎没有成功的——至少我没有见到有朋友在这个工具中通过了验证,大多数人都遭遇到了“检测到无效的 Sitemap 引用”的错误提示。这个问题在Google的 sitemap论坛也曾经被人多次提及。

经过测试,发现导致错误的,其实是网站管理员工具的语言版本的问题,但不知道是不是国内不支持Sitemap呢?

Google网站管理员工具没有提供更改语言版本的功能,但是我们可以构造如下URL:

https://www.google.com/webmasters/tools/siteoverview?hl=en-us

进入英文版的网站管理员工具界面。

果然不出所料,在英文版中,本站的sitemap (xml和gz)均能识别为:

Valid sitemap reference detected

按照英文提示,证明该标签已经生效了,但是国内是否支持这个标签,就不得而知了。

反正,加上再说吧。应该不会有什么影响的吧。
现在已经是2008年的4月了……很快,90后将成为社会的生力军了……但是,某些90后的所作所为,真的让人担忧让人愁……

不禁感叹道:祖国的未来,难道就是由这些人创造的?

引用一篇文章:
引用

文章标题:70后、80后、90后的区别
文章地址:http://www.niuc.net/post/1049/


当中总结出90后的特质:过于自我,不工作,不学习,不学无术……

而近日的一则新闻,另人对90后的状况,更是担忧:

引用
  近百“东方兄弟”齐落网

  4月16日晚上9时30分,佛山警方集结160多名警察,经过预伏后,突然袭击了位于禅城区东方广场西侧的一家地下溜冰场,截至记者昨晚发稿时止现场共抓获99名盗抢嫌疑人,现场缴获一批作案工具以及摇头丸、K粉等毒品。记者昨晚随警行动看到,在这些嫌疑人中,大多数是20岁左右的青年人,他们晚上聚集在该溜冰场,涉嫌多宗持刀砍人抢劫案件。

  晚上9时30分,随着指挥人员的一声号令,早已布控在东方广场附近的警察迅速对西侧一地下溜冰场展开抓捕行动。为抓捕这群疑犯,佛山市刑警支队、市打“两抢”专业队、禅城公安分局等调派了警队精英,携带警犬进入现场抓捕。警方从昨天傍晚开始预伏,确认大多数疑犯来到该溜冰场后,便立即展开抓捕行动。

  警方到达该溜冰场时,里面乌烟瘴气,200多名穿着奇装异服,或留着长发、或染发的青少年正在尽情玩耍,高声吆喝。警方控制该溜冰场后,逐一辨认揪出犯罪嫌疑人。截至10时30分,警方已从现场控制的青少年中抓出了99名嫌疑人进行调查,其中13名女青年。经初步调查,这些嫌疑人多数跟随父母到佛山后,或辍学或无所事事。

  今年春节前后,禅城区东方广场一带连续发生拦路抢劫案。经跟踪侦查,发现他们是一群十几岁的90后,穿着打扮标新立异,追求潮流,喜欢溜冰、上网、泡吧。共同的“爱好”使他们经常纠集在一起,称兄道弟,因以东方广场一带为“地盘”作案,号称“东方兄弟”。


看了这一则新闻,大家又有何感想。

虽然不能一棍打死一船人,但是以上这些90后的特质,在90后人群之中流传甚广。

醒醒吧,那些不学无术的90后。
其实,这是一个平凡的故事,是一个歹徒(看样子也不算歹徒吧),与警察发生冲突的几个镜头...

但是由这几个镜头所产生的效果,真的会让你意向不到...一起看看...

真实原图:
点击在新窗口中浏览此图片
对峙

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片
开始攻击

好了...原图就这么多了...看看接下来的事吧...恶搞开始了...

点击在新窗口中浏览此图片
对峙之Adidas广告版

点击在新窗口中浏览此图片
对峙之中国移动版

点击在新窗口中浏览此图片
对峙之IPOD版

点击在新窗口中浏览此图片
对峙之IBM商务版

点击在新窗口中浏览此图片
对峙之Nike版

点击在新窗口中浏览此图片
对峙之美特斯·邦威版

点击在新窗口中浏览此图片
对峙之电影海报版

点击在新窗口中浏览此图片
对峙之philips剃须刀版

点击在新窗口中浏览此图片
对峙之可口可乐“要砸由自己”版

点击在新窗口中浏览此图片
对峙之喜力啤酒版

点击在新窗口中浏览此图片
对峙之中国移动SIM卡版

点击在新窗口中浏览此图片
对峙之新东方版

点击在新窗口中浏览此图片
对峙之三精蓝瓶版

点击在新窗口中浏览此图片
对峙之鲁迅版

一个平凡的人,在不知不觉,就成了网络红人,是该赞叹当今网络的好呢,还是该批判当今网络的坏呢。

值得深思。
[ISAPI_Rewrite]
CacheClockRate 3600
RepeatLimit 32

RewriteRule ^(.*)/post/([0-9]+)/?([0-9]+)?/?([0-9]+)?/?$ $1/read\.php\?entryid=$2&page=$3&part=$4 [I]
RewriteRule ^(.*)/page/([0-9]+)/([0-9]+)/?$ $1/index\.php\?mode=$2&page=$3 [I]
RewriteRule ^(.*)/starred/([0-9]+)/?([0-9]+)?/?$ $1/star\.php\?mode=$2&page=$3 [I]
RewriteRule ^(.*)/category/([^/]+)/?([0-9]+)?/?([0-9]+)?/?$ $1/index\.php\?go=category_$2&mode=$3&page=$4 [I]
RewriteRule ^(.*)/archiver/([0-9]+)/([0-9]+)/?([0-9]+)?/?([0-9]+)?/?$ $1/index\.php\?go=archive&cm=$2&cy=$3&mode=$4&page=$5 [I]
RewriteRule ^(.*)/date/([0-9]+)/([0-9]+)/([0-9]+)/?([0-9]+)?/?([0-9]+)?/?$ $1/index\.php\?go=showday_$2-$3-$4&mode=$5&page=$6 [I]
RewriteRule ^(.*)/user/([0-9]+)/?$ $1/view\.php\?go=user_$2 [I]
RewriteRule ^(.*)/tags/([^/]+)/?([0-9]+)?/?([0-9]+)?/?$ $1/tag\.php\?tag=$2&mode=$3&page=$4 [I]
RewriteRule ^(.*)/component/id/([0-9]+)/?$ $1/page\.php\?pageid=$2 [I]
RewriteRule ^(.*)/component/([^/]+)/?$ $1/page\.php\?pagealias=$2 [I]

#Customized URL
RewriteRule ^(.*)/alias/([^/]*)\_?([0-9]+)?\_?([0-9]+)?/?$ $1/read\.php\?blogalias=$2&page=$3&part=$4 [I]

#Force redirection for old rules
RewriteRule ^(.*)/post/([0-9]+)\.htm$ $1/post/$2/ [R]
RewriteRule ^(.*)/post/([0-9]+)\_([0-9]+)\.htm$ $1/post/$2/$3/ [R]
RewriteRule ^(.*)/post/([0-9]+)\_([0-9]+)\_([0-9]+)\.htm$ $1/post/$2/$3/$4/ [R]
RewriteRule ^(.*)/index\_([0-9]+)\_([0-9]+)\.htm$ $1/page/$2/$3/ [R]
RewriteRule ^(.*)/star\_([0-9]+)\_([0-9]+)\.htm$ $1/starred/$2/$3/ [R]
RewriteRule ^(.*)/category\_([0-9]+)\.htm$ $1/category/$2/ [R]
RewriteRule ^(.*)/category\_([0-9]+)\_([0-9]+)\_([0-9]+)\.htm$ $1/category/$2/$3/$4/ [R]
RewriteRule ^(.*)/archive\_([0-9]+)\_([0-9]+)\.htm$ $1/archiver/$2/$3/ [R]
RewriteRule ^(.*)/archive\_([0-9]+)\_([0-9]+)\_([0-9]+)\_([0-9]+)\.htm$ $1/archiver/$2/$3/$4/$5/ [R]
RewriteRule ^(.*)/showday\_([0-9]+)\_([0-9]+)\_([0-9]+)\.htm$ $1/date/$2/$3/$4/ [R]
RewriteRule ^(.*)/showday\_([0-9]+)\_([0-9]+)\_([0-9]+)\_([0-9]+)\_([0-9]+)\.htm$ $1/date/$2/$3/$4/$5/$6/ [R]


如何配置PHP环境及安装isapi_write请看Windows 2003 IIS下配置MySQL+PHP+ISAPI_Rewrite+Zend+Xcache...

要使该规则生效,请首先修改inc/url.php...

修改方法: 打开inc/url.php(不要用记事本打开,用支持utf-8去BOM的编辑工具打开),然后找到

function getlink_entry ($id, $alias, $page=null, $part=null) {}


函数里的
{$alias}/
,并修改为
"alias/{$alias}/"


然后重启IIS,看看别名是否生效了...别名会显示成http://www.niuc.net/alias/isapi-rewrite-rule-for-bo-blog/

如果不喜欢这种URL样式,可以修改成其他的...把规则里的

[code]#Customized URL
RewriteRule ^(.*)/alias/([^/]*)\_?([0-9]+)?\_?([0-9]+)?/?$ $1/read\.php\?blogalias=$2&page=$3&part=$4 [I]

前面的RewriteRule ^(.*)/alias/([^/]*)\_?([0-9]+)?\_?([0-9]+)?/?改成其他的样式,然后对应修改alias/{$alias}/样式就可以了...

此修改只推荐有编写正则表达式能力的用户,如果你不知道URL REWRITE规则,或者不知道怎么写正则表达式,请不要盲目修改...

有需要的用户,可以留言,把你想要修改的样式告诉我,我帮你修改...

修改好的代码文件下载:

下载文件 (已下载 22 次)


有问题,请留言联系...
声明:本插件是基于别人的插件制作,来源如果没记错的话,应该是这里"http://bbs.bo-blog.com/viewthread.php?tid=16460&highlight=viewstat"...

引用
本修改版功能更新:
1.改进界面:包括美化,及颜色
2.增加在线用户最后动作提示与追踪(模仿discuz)
3.增加在线用户来路提示与追踪(应http://bbs.bo-blog.com/viewthread.php?tid=16460&page=1#pid511809楼"人仔"的要求制作的)
4.把inc目录里的wry.dat更新为08年4月15日的纯真IP库,以后想更新的人请自行到http://www.cn88.net中下载,下载后把IP库名字改为wry.dat,复制到inc目录,并覆盖同名文件即可...注意:此inc目录为/plugin/viewstat/inc,非/inc目录...


在线演示...估计没法做到...只有出个截图看看...

点击在新窗口中浏览此图片

下载:

下载文件 (已下载 48 次)

下载文件 (已下载 58 次)


引用
安装方法:解压文件...接着进入后台->插件管理,把viewstat插件删除.然后用解压出来的global.php文件覆盖bo-blog根目录下的global.php,然后进入bo-blog的data文件夹,删除online.php,然后把解压出来的plugin目录直接复制到bo-blog根目录下,覆盖同名目录,然后进入后台->插件管理,在"插件位置: plugin/"后面填入viewstat,点击确定即可...
分页: 6/515 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]