范畴:

OAuth的/ Twitter的认证适配器Zend框架

Steven ,星期六2011年4月23日下午03:57

工作仍在继续(缓慢地)在我的新基于Twitter的应用程序。 在接下来的几个银行假日,我希望能再次前往该项目的势头(尽管目前的好天气)。 无论如何,我的下一个任务是创建一个为Zend框架的认证适配器。 我登录执行的工作,但Zend框架在验证适配器下降似乎像一个有吸引力的的建议,所以我创造了它... ...。

(我不打算去通过OAuth的 ,或注册与Twitter您的应用程序,还有数百名导游和一个相当简单的过程,无论如何。)
继续阅读“OAuth的/ Zend框架”Twitter的验证适配器»

“登录”与Twitter使用Zend Framework

日(星期四)第17届2011年3月1:07

尽管Twitter ,在目前的仇恨,我已经设置了创建一个的基于Twitter的应用程序。 作为管理几个账户(对个人和我的慈善工作),我一直在某个时候需要一个工具,我刚开始周围的写作(在不久的将来有更多的... ...)的人。

我读过关于Zend_Oauth_Consumer如何,它可以用来获得与使用Twitter进行交互授权 OAuth的。 很好,我有我的访问密钥,我可以高高兴兴后对用户的代表。 那里有很多的资源,要做到这一点,所以我不会孔人。

下一步是让人们返回到该网站,登录和修改自己的帐户。 这是我达到了一个小问题。 在网站上使用的代码示例意味着我叽叽喳喳问我访问授权再次为每个登录,也不好。 通过扫描的框架,我看不到任何东西,这将使我只是请求验证。 这并不是说没有,但似乎没有不知道访问令牌已经可以调用是一种身份验证机制。

替代品来实现一个基于网站的日志或以某种方式存储在用户的访问令牌的客户端(当然加密)。 这些都不似乎是一个很好的/合适的解决方案。

继续阅读“”登录“与Twitter使用Zend Framework”»

Zend的认证工程师(ZCE)5.3

Steven ,2010年9月下午9:00 30日日(星期四)

随着官方发布的Zend认证工程师(ZCE)计划为5.3,我想我应该给我,我想到了考试的快速印象。

上自己的一点背景:我是第一次引入 PHP大约7年前,曾在PHP的专业自2006年以来。 我目前的工作称为一个令人兴奋的启动Brightpearl根据英国布里斯托尔 ,生产集成的客户关系管理(CRM),会计和电子商务软件。 我以前没有获得任何以前的郑州商品交易所资格。 我目前正在制定在5.2.X系列,并没有真正使用Zend Framework的任何具体的5.3功能(我等待在我的开发项目中的2和Doctrine 2)。
继续阅读“的Zend认证工程师(ZCE)5.3” »

快速启动Symfony的​​DI(依赖注入)教程

Steven (星期六)2010年八月十四日下午02:21

什么是依赖注入 (DI)?

依赖注入是一种技术,可以在软件应用程序的松耦合的对象。 一般来说,如果一个对象需要访问的另一个功能,这将是国内领先的紧密耦合的系统实例化。 通过依赖注入的实施中,我们注入准备使用所需的对象(有时也被称为控制反转 - 国际奥委会)。 看看下面的例子:

  <?PHP
类决策者{
    公共职能makeDecision(数组$参数){
         / /需要的数据库适配器
         $ DP =新DecisionParameters();
        美元parameterScore = $ DP -> getScore(参数);
         / * ... 一些更多的决策逻辑...  * /
        返回($ parameterScore> 50);
     }
 } 

这一段代码,说是紧耦合的DecisionParameters对象。 以松散耦合的方式重写上面我们会碰到这样的... ...。

  <?PHP
类决策者{
    私营美元_dp;
    公共函数__construct($ DP){
         $> _dp = $ DP;
     }
    公共职能makeDecision(数组$参数){
        美元parameterScore = $ - > _dp - > getScore(参数);
         / * ... 一些更多的决策逻辑...  * /
        返回($ parameterScore> 50);
     }
 } 

虽然松耦合的代码获得的好处,我们增加了复杂性,每次一个对象被实例化,我们也有实例它的依赖,并通过这些太。 例如:

  $选择=新的决策者();
回声$选择> makeDecision(阵列('努力'=>'低','回报'=>'高')); 

现在变成了:

  $ DP =新DecisionParameters();
 $选择=新的决策者(DP);
回声$选择> makeDecision(阵列('努力'=>'低','回报'=>'高')); 

一类的依赖关系的数量增加,这种情况变得更加痛苦,如果自己有依赖的依赖关系? 这可以非常迅速地成为一个对象管理的恶梦! 输入的依赖注入容器(或框架)... ...
继续阅读“快速启动Symfony的​​DI(依赖注入)教程”»

Zend_Layout的裸体和Zend_View的

Steven (星期二)2010年8月10日下午11:47

在这篇文章中,我期待在一个简单的前端控制器一起使用Zend_Layout的和Zend_View的展示它是如何开始分离在您的应用程序的业务逻辑和介绍。 所有的代码是在GitHub上:
赤裸裸的Zend_Layout的和Zend_View的GitHub上。

继续阅读“裸Zend_Layout的Zend_View的”»

Zend框架的每个模块的布局设置-跟进

Steven ,2010年2月16日,星期二8:48

作为后续对我以前的帖子,每个模块的布局设置Zend框架 ,我已经更新了的代码需要很少的配置,然后前(不是,它需要更多的,在您的应用程序配置了几行!)
继续阅读Zend框架的每个模块的布局设置-按照“»

创建URL在Zend自定义视图助手

Steven 日(星期四)2010年1月28日下午11:01

这看似简单,但我是撞我的头,试图创建一个URL在一个自定义的视图助手 Zend框架。 我有路由的设置,从使用中的子域的模块,所以我不能用一个简单的硬编码的URL。

继续阅读“在Zend自定义视图助手创建”»

sitemap.xml的自定义控制器/行动的请求路由

Steven 1月6日(星期三)2010上午12:13

为了直接请求/ sitemap.xml的 ,以一个自定义的控制器和Zend Framework的应用程序在您的行动,只需在您的application.ini或替代的配置文件中添加以下(如我navigation.ini):

 resources.router.routes.sitemap.route =“sitemap.xml的”
 resources.router.routes.sitemap.defaults.controller =索引
 resources.router.routes.sitemap.defaults.action =网站地图

通过建立在适当的控制器(如我的Sitemaps索引中的控制器,地图行动)的行动,对输出的示例代码可以看出:

 < PHP
类IndexController
    延伸Zend_Controller_Action的
 {
     / **
      *呈现基于Zend_Navigation设置的一个Sitemap
      * /
    公共函数sitemapAction()
     {
    	回声$>查看 - >导航() - >网站地图();
    	 - >视图 - >布局() - > disableLayout();
    	 - > _helper ->的ViewRenderer - > setNoRender(TRUE);
     }
 }

Sitemaps的可以快速方便地使用Zend_Navigation ,会产生一个巨大的快速教程(Zend Framework的教程一般都非常有用) 是Zend的演员-动态菜单的创建一个地图和面包屑。

办公室的网格计算,使用虚拟环境-第 4部分

Steven ,星期五2009年12月4日下午11:59

简介

我的工作在我们运行的批处理作业,每天处理的数据记录数百万,我最近一直在思考所有的机器,坐在周围的每个每天做几个小时没有一个公司 如果我们能够使用这些机器,以增强我们的系统的处理能力,岂不是好? 在这组文章中,我要去看看聘用一个办公室的潜在好处电网使用虚拟环境。

在第3部分中,我们创建了虚拟加工机,并成立Windows机器成为空闲时间的工人。

运行最新的代码

不可避免地创建您的工作人员的业务逻辑后,会发生变化,会发现错误,会产生更快,更高效的代码,从而留下你的工人坐在周围处理数据使用老臭的代码。 那么,我们如何确保我们总是使用最新和最伟大的处理脚本的版本?

有几个非常容易简单的方法,我们可以做到这一点,诀窍,然而,在实现这一目标,以减少处理能力和网络流量。 让最简单的解决方案,并开始慢慢改进的迭代的情侣。

第一种方法是简单地连接到我们的作业控制服务器(通过SAMBA,FTP,或类似的),并拉下最新版本的代码。 效率不是很高,但它会做的工作。 让改善,有点,如何创建一个rsync的脚本和使用,每次来代替呢? 或者把颠覆检查代码最初我们最新的处理脚本,然后就更新我们的代码在每次运行时(使用svn update)呢?

最后,我们最终可能会与一个bash脚本(称为由cron每10分钟),它看起来像这样简单的:

  #!/ bin / sh的
如果PS AX | grep的- V GREP | grep的PHP >的/ dev / null的
然后
    回声“的工作目前正在处理,退出”
其他
    回声“作业不运行,从现在开始”
     CD /路径/ / /复制工作
     svn update会
     PHP yourJobProcessingScript.php
科幻 

现在我们可以肯定的,每次运行时,我们肯定运行最新的代码。 我们确保我们的代码库更新我们每一次都执行一个运行,并减少网络流量,只在我们的网络传输文件的区别。

在我的示范设置,我没有完全按照以上。 Subversion是我的工作处理服务器上安装,我只是把最新的代码,从一个'工人'使用“SVN更新”的分支。 我还添加了一个版本号标记到我的处理脚本,这是返回结果的一部分返回到数据库。 这样我就可以看到我的代码被更新,每次我工人分局即复制到我的树干,我肯定是运行最新的处理脚本。

使用最新的数据

如果你的作业处理使用的数据源,然后在一些点,这些都将被更新。 除非你调用数据源的一个非常罕见的基础上,你将大量的交通网络,一旦你的工人开始运行陷入瘫痪带来的一切。 对于我的解决方案,我决定,我想我与我的虚拟机移动的数据源。

保持你马有!如果我的数据源是巨大的? 嗯,这真的是我们谈论了多少数据的情况下? 这可能是更具成本效益的一个额外的更大的硬盘驱动器安装到每一台机器,而不是购买一个额外的处理服务器。 这是一个预算的问题,并决定。 也许您的数据源是如此之大,它只是不可行保持在您的工作机器的数据量。 在这种情况下你会做什么? ,那么我们可以看看调用本地的数据服务器,但是这可能会导致网络问题。 在这种情况下,像这样的网格系统可能会变得不现实的,包括在您的办公环境。 这也可能是,你可以看看替代性的运行策略,例如,只调用你的员工之间的晚上八时及上午06时每天晚上和/或节流数据源的请求。

上移动100GB的数据,可以说我们的数据源量。 井是相当多的数据位左右移动网络上的更新。 我们如何确保我们在这种情况下,最新的数据复制? Rsync是一种可能性,但我个人认为,作业处理服务器上运行您最新的数据源,并设置作为复制主(有一个漂亮的长斌日志)可能要走的路:

复制 通过设置作为一个奴隶的每个工人的作业控制服务器更新您的数据源将涓滴,不需要在网络活动的大幅增加,您的工作人员(即除非您执行一个庞大的数据和更新您的所有工人踢一次)。 这已经超过rsync的优势,你不会得到一个长时间的停顿每个作业前,对数据库的更新, MySQL在守护您的工作将不断更新其数据,同时继续处理。

这是如何设置我的演示服务器。 设置复制,我跟MySQL的网站上的指南 (复制),并在20分钟内,我有我的头文字工作者,复制作业控制服务器的数据集。 复制设置和过程,对于每个额外的工作,每次工作时被复制的VM。

摘要

在本节的文章中,我们是让您的处理代码using rsync或subverion(SVN)做的工作,并减少网络流量,在相同的time.Â多么容易和无痛看着我们还讨论了如何允许它涓滴每个工人保持你的数据源的信息最新。 因此,我们面积,确保我们保持在我们的办公室电网系统的业务逻辑和信息。 显然是无数的替代品来执行这些任务,但这里是两个简单的例子来说明多么容易的解决方案来。

下一次

在这个系列中,恰当地命名为的第5部分的最后一部分,我们将讨论部署这一系统。 我会总结了什么教训和我设法创造。

办公室的网格计算,使用虚拟环境-第 3部分

Steven (星期五)2009年12月4 23:37

简介

我的工作在我们运行的批处理作业,每天处理的数据记录数百万,我最近一直在思考所有的机器,坐在周围的每个每天做几个小时没有一个公司 如果我们能够使用这些机器,以增强我们的系统的处理能力,岂不是好? 在这组文章中,我要去看看聘用一个办公室的潜在好处电网使用虚拟环境。

在第2部分 ,我们看着一台服务器将运行的工作,工作应该如何进行配置,以达到最大的处理量,同时确保每个作业是没有失败处理的。

设置你的工人 - ,或跛行服务器

在这个过程中的下一步是设立虚拟的工人。 为此,我将使用安装使用VirtualBox的CentOS的。 我要安装MySQLPHP的服务器,又称跛行马钱,M ySQL,P惠普)SERVERA(我可能有该名称最多)。

  • 你的Windows机器上安装的VirtualBox(以下链接)
  • 下载并安装CentOS的范围内创建的虚拟机(当前版本5.3)

有没有我这点有可能是千“有伟大的教程(OK,这里有一个: 创建和Managing CentOS的虚拟机下的VirtualBox )。 我想最重要的一点是,我叫我的虚拟机GridMachine。

至于我的选择客户端的虚拟化和操作系统有没有什么大的每一个选择的令人信服的理由。 VirtualBox是我用我的家用机,是由三个主要的操作系统支持的东西。 我选择了CentOS的作为其良好的稳定的操作系统,我用我自己的Web服务器上。 我是一个伟大的信徒为工作的合适的工具(虽然我申请“为您使用最快和最简单”的心态),因此,如果作业系统X运行你的代码更快,更有效地使用,而不是: )

重要的是确保你的虚拟机使用DHCP,为每一个新的虚拟机,否则就需要单独配置,这是我们不want.By使用DHCP我们不需要工人机器配置网络设置单独的东西,DHCP将手你出去的IP地址。 因此您可以复制您的虚拟机有关Office无需担心设置每一个(这可以提高可伸缩性和降低工人管理)。

应力求实现的过程中,你将获得一个新的物理机,安装的VirtualBox,然后非常没有很多其他部署虚拟映像。 这可能是明智的设置上不同的子网中的所有工人,这样你至少可以看到有多少台机器运行。 您还需要设立您的机器上长期租赁或无限租用DHCP。

如何运行作业工人

这是一个有趣的领域,有几个有效的方法处理工人的工作。 这里,我将只讨论两个最明显的:

  • 永久运行脚本:一个脚本,它是一个shell脚本,或PHP脚本执行一次工人,作为一个无限循环的一部分运行。 我贴现作为一个脚本崩溃这种方法,可能你的工人将停止运行没有某种干预。
  • cron的脚本执行:cron守护进程每隔X分钟揭开序幕,以你的脚本调用事情。 如果没有一些检查,这可能会导致很多工人脚本运行的副本。

我的决定是用cron去揭开序幕shell脚本每10 minutes.Â我的shell脚本执行以下任务:

  1. 获取进程列表和grep“PHP”。 如果没有找到,那么继续。
  2. 打电话给你的工作代码,在我的情况,这将是基于PHP
  3. 工人的脚本完成其运行
  4. 准备再次去下一个合适的呼叫

我的bash脚本看起来像下面这样:

  #!/ bin / sh的
如果PS AX | grep的- V GREP | grep的PHP>的/ dev / null的
然后
    回声“的工作目前正在处理,退出”
其他
    回声“作业不运行,从现在开始”
     PHP yourJobProcessingScript.php
科幻 

注:回声的是几乎完全没有意义的,但可能有助于在未来的人来一起尝试和编辑。

这结论成立工人虚拟机,快速,简单,容易复制到每个接收到的新硬件。 电网系统的“聪明”还真是不可视化操作系统,其所有与创建过程中作业,作业的配置,并在确保作业运行在适当的时候(即当主机处于闲置状态的代码)。

设置Windows初始化工人

第一个任务是工作需要从Windows命令行运行的虚拟机的命令。 如果你已经安装在默认位置VirtualBox和你命名的工人 GridMachine然后命令需要加载您的工作是:

  “C:\ Program Files文件\ Sun \中的VirtualBox \ VBoxManage.exe”startvm GridMachine 

然而,运行在一个“无头”状态,我们需要使用脚本:

  “C:\ PROGRAM FILES \ Sun \中的VirtualBox \ VBoxHeadless.exe”startvm GridMachine - VRDP = OFF 

这将启动虚拟机,并​​没有GUI允许它优雅地保存状态。 第二个参数关闭的RDP,所以它不会与Windows RDP冲突,或给你一个消息监听端口3389。虚拟机的名称是大小写敏感的

下一步,我们将需要设置Windows揭开序幕我们的工人VM,一旦机器被闲置。 要做到这一点(在Windows XP),你需要去开始 - >所有程序 - >附件 - >系统工具 - >预定任务如下:

预定任务

然后点击“添加计划任务”浏览添加一个自定义程序。 导航到您的VBoxManage脚本,然后单击确定。 你的任务时间表的任何选项(变化,我们将在一分钟内),并继续。 跳过下一个屏幕后,Windows会问你是谁你想运行此任务,我建议无论是“管理员”或创建一个新的特权用户。 请记住我们不想干涉任何一点与机器上的标准的人员占。 单击下一步,然后检查显示此任务的高级选项。

运行文本框的末尾添加“startvm GridMachine”字符串,并确保运行,只有当记录在左unticked。 访问计划任务和变化的时间表下拉选项“空闲时”,选择你想要的机器,然后再移动到下一个标签闲置的时间。

最后勾去掉,选择哪些国家,如果它已经运行X的时间停止任务,但打勾的选项,以停止任务,如果机器不再闲置。

计划

这是它为Windows主机设置!

摘要

在这一部分中,我们已经成立了一个虚拟机作为一个工人,以及在我们调用,并执行我们的工作处理脚本(为自己的PHP脚本)。 从这里,我们来看看如何建立我们的Windows副本,在headless模式启动虚拟机时,计算机将成为闲置,并保存其状态,当用户恢复机器的使用。 希望在这一点上,你看到的是多么简单设立这样一个系统,并渴望得到一些实验自己!

下一次

第4部分中,我们将着眼于使用工具,以确保您正在运行最新版本的代码和数据源,使得到的结果总是与最新的商业信息和逻辑的最新的。













全景主题 Themocracy

9访客在线现在
8位客人,1机器人,0成员
最大游客今日:22 06:15 AM UTC
本月:24-08-2011 5点40日23时许UTC
今年:130于28-03-2011 10:40 PM UTC
所有时间:130于28-03-2011 10:40 PM UTC