首页 › 月度存档 › 三月 2010

penID with PHP

打酱油先

OpenID已经不算是新鲜事物了,不过至今 仍然是处于叫好不叫座的尴尬状态。推广的策略是一方面,从用户体验的角度来看,登录过程中会有可能跳转到OpenID网站,这是对已经习惯了普通注册登录 流程的用户一个极大的考验。所以像Facebook Connect这样 更简洁的应用反而更容易获得市场。也许OpenID想要获得广泛应用还需要不少改进之处,但OpenID的理念,毫无疑问会在未来大放异彩。

不过这些和本次的Blog并无太大关系,我只是出来打酱油的:P

想要让自己的网站支持OpenID,门槛并不算高,以下以PHP为例,记述PHP环境下OpenID登录过程的开发。

准备工作

OpenID的通讯过程已经有很多库封装好了,在OpenID Wiki里可以看到不少PHP类库,本次我们 选择JanRain的OpenID Enabled。

继续阅读 »

PHP初学者最感迷茫的PHP问题

列出了所有初学者最感迷茫的PHP问题

【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使 用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到
当然也可以修改自动全局变量为开 (php.ini改为register_globals = On);考虑到兼容性,还是强迫自己熟悉新的写法比较好。
【2】Win32下 apache2 用get方法传递中文参数会出错
test.php?a=你好&b=你也好
传递参数是会导致一个内部错误
解 决办法:”test.php?a=”.urlencode(你好).”&b=”.urlencode(你也好)
………….
继续阅读 »

使用tornado构建高性能Web应用之一

这个新系列是为了记录在python下的工作点滴,最近从微软平台突然转换到了linux平台下工作,于是.NET不怎么排得上用场,且在 python下工作多日才发现原来在.NET下的日子真是往事不堪回首月明中……当然仅仅是一家之言,纯属个人感受。总之呢,玩蛇记这个系列就是用来专门 记录python下工作的感想之用了。

在.NET下工作崇尚集成化,集成化的IDE,一体化的服务器,从操作系统到 webserver,都是ms inside。非常适合初学者,啥都不用想,也没有太多让你选的。慢慢的能力提高了,就会觉得微软提供的东西不是那么完美,当你在开发的时候,很多东西如 果不用微软内置的机制,就会让你费老大的力气去绕弯实现,比如DataGrid,很强大,但是大多数人都会在自己的blog离告诫后来者,还是回去用 repeater吧,所见即所得的编辑器里面也因为各种为了妥协而加入的代码变得面目全非,直到后来的MVC的出现才勉强解决,不过以前在webform 里积累的很多东西和技巧就付诸东流了。

在正式开篇前说了很多对.NET的不满,呵呵,小小偏题,幸亏博客园不是起点要按字数收钱。

话说回来,python很适合已经熟练掌握一种语言和平台的开发人员做拓展,比如已经熟练掌握java平台或者.NET的开发人员,当然更适合 C和C++的开发人员来偶尔玩票一下Web开发。python好玩但并不是说它就是个漂亮的玩具,而是一种在linux,unix平台下非常具备生产力的 语言。在很早的时候linux和bsd系统就默认内置python了,而现在很smart的ubuntu之类的很多集成的工具都是python编写的,而 在web开发方面,估计是因为圈子小,而很多业余玩python的人大多不是正职搞Web开发的,所以国内用python开发Web的人不多。不过最近 django之类的框架也出了书,虽然是沾了ROR的光,不过好歹也有人关注了。

继续阅读 »

PHP 抓取网页图片并且另存为

下面是源代码,及其相关解释

1 <?php 2 3 ?//URL是远程的完整图片地址,不能为空, $filename 是另存为的图片名字 4 //默认把图片放在以此脚本相同的目录里 5 ?function GrabImage($url, $filename=""){ 6 7 //$url 为空则返回 false; 8 ? if($url == ""){return false;} 9 $ext = strrchr($url, ".");//得到图片的扩展名 10 if($ext != ".gif" && $ext != ".jpg" && $ext != ".bmp"){echo "格式不支持!";return false;} 11 if($filename == ""){$filename = time()."$ext";}//以时间戳另起名 12 //开始捕捉 13 ob_start(); 14 readfile($url); 15 $img = ob_get_contents(); 16 ob_end_clean(); 17 $size = strlen($img); 18 $fp2 = fopen($filename , "a"); 19 fwrite($fp2, $img); 20 fclose($fp2); 21 return $filename; 22 23 } 24 //测试 25 GrabImage("http://www.66xing.com/UploadFile/200609082320515027.bmp", "as.gif"); 26 27 ?>

继续阅读 »

jQuery学习及应用 —jQuery 核心函数以及 jQuery 对象

一、jQuery 核心函数

首先介绍 jQuery 的几个核心函数,在 jQuery 中它们起着至关重要的作用,在实际的前端开发过程中用到最多的也是它们。

1、jQuery(elements)

将一个或多个DOM元素转化为jQuery对象。

这个函数也可以接收XML文档和Window对象(虽然它们不是DOM元素)作为有效的参数。

返回值:jQuery 对象

参数

elements:  用于封装成 jQuery 对象的 DOM 元素

// 将当前页面的背景色设为黑色 jQuery(document.body).css( "background-color", "black" );

继续阅读 »

PHP:10 个不常见却非常有用的PHP函数

  • 1. sys_getloadavg()
  • sys_getloadavt()可以获得系 统负载情况。该函数返回一个包含三个元素的数组,每个元素分别代表系统再过去的1、5和15分钟内的平均负载。
  • 与其让服务器因负 载过高而宕掉,不如在系统负载很高时主动die掉一个脚本,sys_getloadavg()就是用来帮你实现这个功能的。 不过很遗憾,该函数在windows下无效。
  • 2. pack()
  • Pack() 能将md5()返回的32位16进制字符串转换为16位的二进制字符串,可以节省存储空间。
  • 3. cal_days_in_month()
  • cal_days_in_month()能够返回指定月份共有多少天。
  • 4. _()
  • WordPress开发者经常能见到这个函数,还有 _e()。这两个函数功能相同,与gettext()函数结合使用,能实现网站的多语言化。具体可参见PHP手册的相关部分介绍。
  • 5. get_browser()
  • 在发送页面前先看看用户的浏览器都能做些什么是 不是挺好?get_browser()能获得用户的浏览器类型,以及浏览器支持的功能,不过首先你需要一个php_browscap.ini文件,用来给 函数做参考文件。
  • 要注意,该函数对浏览器功能的判断是基于该类浏览器的一般特性的。例如,如果用户关闭了浏览器对 JavaScript的支持,函数无法得知这一点。但是在判断浏览器类型和OS平台方面,该函数还是很准确的。
  • 继续阅读 »
  • Linux文件目录权限命令操作大全:Chmod Chown chgrp

    Linux系统中的每个文件和目录都有访问许可权限,用他来确定谁能通过何种方式对文件和目录进行访问和操作。

    文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做所有的更改操作。可执行权限表示允许将该文 件作为一个程式执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要 的所有组合。

    有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。所有者能允许同组用户有权访问文件,还能将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。
    每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;和属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的周详信息时,最左边的一列为文件的访问权限。
    继续阅读 »

    原创 extjs 总结

    原创? extjs 总结
    # Ext.namespace(‘com.faceye.layout’);
    # Ext.BLANK_IMAGE_URL = ‘scripts/ext/resources/images/vista/s.gif’;
    emptyText:’请选择您喜欢的颜色’,
    user = Ext.get(‘user’);// 生成Ext element元素
    el = new Ext.Element(user);
    <button onclick=”location.href=’www.baidu.com’;”>点击链接到百度</button>
    window.location.reload(true); //重载页面
    chooser.view.on(‘contextmenu’, function(d, i, n, e){//元素加menu
    //ext 窗体操作
    //Ext.WindowMgr.each(function(w){w.hide()});//window.location.reload(true);
    layout:’fit’ ‘border’ ‘table’ ‘column’ ‘card’
    Ext.QuickTips.init();
    disabled:ture,
    hidden :true,
    closeAction: ‘hide’ //关闭按钮效果
    target=”_blank”//弹出新窗口
    render(document.body);
    renderTo: document.body,
    applyTo: ‘local-states’
    animate:true,?????????????? // 生机勃勃 特效
    layoutOnTabChange :true,??? //tabPanel doLayout
    labelAlign: ‘left’,??????? //form 标签左对齐
    hideLabel :booler????????? //隐藏标签
    contentEl :’cartT’,??????? //将元素内容读入到ext组件中。
    listeners:{check:onCheck},
    hiddenName:’server’,?????? //commbox 获取值时,返回valueField :”retrunValue”,
    //否则返回?? displayField: “displayText”,
    emptyText:’请输入标题’???? //textField为空时显示的内容
    anchor:’90%’?????????????? //占用百分之几的位置
    closable: true,?????????? //是否现实关闭按钮
    modal:true,?????????????? //是否模态方式显示窗口
    border:true,????????????? //边框宽度
    bodyBorder :true,
    bodyStyle:’padding:5px’, //边的类型设置了内补丁,空余5像素。
    collapsible:true,?? //工具条添加收缩按钮
    disabled:true,??????????? //窗体状态灰色显示,且不可用
    collapsed:coll,?????????? //窗体状态收缩、true收起–与expandOnShow一起用
    tools:tools,????????????? //工具条
    expandOnShow : false,???? //显示的时候扩张true为显示
    autoWidth:true,?????????? //自动调节宽度
    plain:true,?????????????? //将标签页头的背景设置为透明
    closable:true,??????????? //有关闭按钮
    closeAction: ‘hide’,????? //关闭按钮 隐藏窗体
    frame:false,????????????? //窗体没有背景
    header:false,???????????? //有窗体头部
    autoScroll: true,????????? //窗体自动出先滚动条
    shadow:false,???????????? //窗体影子
    draggable:false,????????? //窗体是否可拖动
    resizable:false,????????? // 窗体不可改变大小
    labelSeparator:’:’,????? //标题的分隔符号我们用中文冒号代替英文的冒号(labelSeparator:’:’)
    isVisible();????????????? //窗体显示
    maximizable:true,???????? //放大缩小窗口
    focus(); //焦点
    minWidth :30,????????????? //按钮最大宽度
    <a ext:qtip=”sssss”>ssss</a>
    buttons: [{//----------------------------------button
    id: 'ok-btn',
    text: '选择',
    handler: this.doCallback,
    scope: this
    }]
    Store 读取回调后的json数组
    ‘load’: {fn:function(s){
    s.getAt(0).get(“expHost”)

    继续阅读 »

    Python 学习笔记

    什么是 Python 语言

    Python 语言是一种计算机编程语言,作用类似于 c/c++/java/perl/VB/Delphi 等等计算机编程语言,据有非常清晰易读的语法特点,并且是一种高级面向对象的语言,用途非常广泛,并且可以进行扩展。Python 可以运行在 Windows,Linux,FreeBSD,Solaris等等几乎所有的电脑中,也可以运行在手机中,支持 Java 和 .Net 技术。 Python(派森)语言是一种面向对象的用途非常广泛的编程语言,具有非常清晰的语法特点,适用于多种操作系统,可以在Windows和Unix这样的 系统中运行。目前在国际上非常流行,正在得到越来越多的应用。Python可以完成许多任务,功能非常强大。Python核心网站是: clip_image001http://www.python.org/ ,其中你可以找到很多资料。如果您第一次使用 Python, 可以下载一个试试。

    Python 语言使用方便,不需要进行复杂的编译,用途非常广泛,可以进行各种软件的开发,比如: 网站,图形界面(GUI), 网络编程,数据库编程,图形图像处理,科学计算,手机编程等等。 clip_image002

    使用 Python 最多的应该是 Google 公司了(google的云计算平台GAE就支持默认Python),就是人们到处都可以看到的 Google 搜索引擎。微软公司也已经开始提供Python语言的软件了(其中架构在.NET 平台值上的IronPython,让一切变的更有可能)。 全球著名的手机厂商 Nokia 公司早已经开始提供基于Python语言的手机开发软件了。另外,还有很多游戏是用Python开发的。另外一个比较有名的就是 Zope 公司了,还有youtube是全部用Python开发的。国内使用Python的公司并不多,只有一些Web 2.0的公司。但是因其非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行,所以其相关技术正在飞速的发展,用户数量急剧 扩大,相关的资源非常多,随着时间的推移,很多软件公司都会开始规模的使用它。

    “Python”这个英文单词的发音似“派森”,因此中 文可以称之为派森。

    下载和安装

    · 请到 clip_image001[1]Python.org下载, 建议下载 2.5+版本,因为其3.0+版本还在测试阶段

    继续阅读 »

    学学 python 一些基础知识点

    1.#符号:单行注释,三引号(可单可双)进行多行注释

    2.逗号告诉python不要另起新行,如下
    3.每个python对象都有一个位置,一个类型,一个值。

    print "Hello",
    
    print "World"
    

    继续阅读 »