我即将开始在一个新工作上开展新工作,我遇到了一些问题.他们不是MVC的忠实粉丝.
这让我感到困惑的原因是,他们声称他们目前正在使用Zend Framework,而实际上并非如此.他们几乎没有使用数据库模型类,而这就是它.没有MVC,没有扩展Zend类来实现他们的目标.
我工作的最后一个项目非常重视Zend.项目完成后,我们留下了一个很好的MVC框架.非常干净的控制器,大多数重型逻辑都在它所属的模型中,并且是一个很好的模型网关系统.使用手写SQL从那里转到sphagetti代码是一种震撼.
所以,我问你,StackOverflow社区.我如何说服我的同事转向MVC框架?我觉得他们害怕使用MVC,因为这意味着两个已建立的程序员(这是一个小型创业公司)的学习曲线.我一直在考虑使用MVC和一个单独的SVN存储库中的所有Zend优点(在我自己的时间)完成当前项目的副本,并在几周内向他们展示以了解他们的想法.
关于如何将同事转换为MVC的任何想法?
我正在尝试使用Build Flow拆分一些Jenkins工作插件,这样我们就有三个"起点",而不是三个"起点",然后使用DSL来触发下游作业.我在Build Pipeline插件上选择了Build Flow,因为在不同的管道之间共享作业似乎要困难得多(即,用一个编译作业共享多个启动作业的工作区).
以前,我设置了三个工作:Project-PR,Project-DEV和Project-PROD.
只要在GitHub中发生拉取请求,Project-PR就会构建,并且只会运行我们单元测试的较小子集,这样我们就可以快速验证PR是否可以合并.
只要将功能分支在GitHub中合并到主开发分支中,Project-DEV就会构建,并且可以手动触发并给予不同的分支.它将运行整套装置 - 基本上是一个完整性检查,一切都很好.然后它将编译和缩小,并推送到QA环境进行测试,然后它将针对该QA环境运行全套集成测试.此步骤配置为参数化构建,参数是要拉,测试和推送的分支的名称.它将推动并设置特定于该分支的QA环境,以便我们可以QA多个功能而无需合并到开发(即feature-one.qa.example.com,feature-two.qa.example.com) .
Project-PROD只能手动触发,并且可以完成整个单元和集成测试套件,编译和缩小前端代码(Less,JS和CSS),并将构建的代码推送到一个特殊的"发布分支"然后可以在GitHub中部署 - 我们还没有达到Jenkins负责部署的程度.
现在,我想要设置的是将子任务分成他们自己的工作,这样就可以轻松地设置新的工作而无需复制和粘贴所有构建步骤(或复制工作并更改所有工作需要独特的事情).这可以让我们做一些事情,比如创建Project-DEV的副本,但是为一个部署到云中设置的暂存环境的作业切换上一个作业.或者轻松创建可以将测试结果报告给第三方源的作业,即将结果复制到共享网络文件夹或其他内容.或任何数量的东西.目标基本上是使用这些子任务作为构建块来让我们构建更复杂的作业,同时还可以更容易地更新构建的一部分如何工作(例如,我们可能切换到不同的编译技术,
例如,Project-PR将分为以下几种:
Project-PULL -> Project-SetupBuildEnv -> Project-PartialUnitTests
(BuildFlow) (Normal Job) (Normal Job)
Run Code Online (Sandbox Code Playgroud)
SetupBuildEnv只会提取任何NPM或Composer要求,并设置测试和构建所需的目录.然后运行PartialUnitTests,并将其结果报告给
Project-DEV可以像这样分开:
Project-DEV -> Project->SetupBuildEnv -> Project-FullUnitTests -> Project-Compile -> Project-Minify -> Project-DeployQA -> Project-FullIntegrationTests
Run Code Online (Sandbox Code Playgroud)
这样,共享的构建过程的部分(在本例中为Project-SetupBuildEnv)可以在作业之间轻松共享,减少重复,并且更容易更新构建过程中的步骤,而无需记住每个作业使用那一步.
现在,我正在使用 共享工作区插件,以便所有步骤使用相同的工作区.但是,我遇到了一个问题:它实际上并没有使用一个工作区.发生的事情是Build Flow作业将获得一个目录(例如:/ sharedspace/shared_one),并将代码从GitHub下载到那里.然后它将触发DSL,启动'SetupBuildEnv'作业.但是它不是在同一个目录中工作,而是获得一个名为"/ sharedspace/shared_one @ 2"的目录,并在那里运行构建设置任务.然后当它进行第三步(单元测试)时,它失败了,因为现在它有第三个目录(/ sharedspace/shared_one @ 3),但是该目录没有设置运行,所以所需的节点和组合器模块丢失了.什么'
问题时间:
我目前在评论系统中使用Zend_Filter_StripTags,但是当输入"<3"时,东西会中断.StripTags似乎不够聪明,没有意识到它不是HTML标记,并且将过滤器创建为"new Zend_Filter_StripTags(array('3'))"似乎也不起作用.
我应该先通过正则表达式传递输入,还是有办法让Zend_Filter_StripTags整理并飞得正确?
我不知道这是在最近版本的byobu中是否有所改变,但现在当我创建一个新屏幕时,新屏幕与我当前窗口位于同一目录中.起初这不是太烦人,一个简单的"CD~"会让我到达我想要的地方.但我一直注意到奇怪的事情.在gem安装期间,如果我创建一个新窗口,我最终会在安装gem的目录中(当使用rbenv时).
我只想让它停下来.如何设置byobu/tmux以便在我的主目录中打开所有新窗口?
我查看了一些文件,但我似乎无法看到任何导致此问题的命令(例如错误的'chdir').
我正在尝试构建一个游戏引擎,我已经转向 libconfig 来处理我的所有配置需求。我正在构建一个资产管理器,它将使用由 libconfig 解析的配置文件来加载图像、声音等。
当我尝试编译项目时遇到了一个问题。这是导致错误的代码区域:
AssetManager::AssetManager(GameEngine *engine){
_engine = engine;
_config = new Config(); // <-- ERROR ( this is line 5 )
string path = string(ASSET_DIRECTORY);
path += "assets.cfg";
try {
_config->readFile( path.c_str() ); //<-- ERROR ( this is line 11 )
} catch ( const FileIOException &fioex ){
cout << "File exception" << endl;
} catch ( const ParseException &pex ){
cout << "Parse exception" << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
这是错误:
AssetManager.o: In function 'AssetManager':
/home/sean/Code/C++/Ridiculous/src/engine/AssetManager.cpp:5: undefined reference …Run Code Online (Sandbox Code Playgroud) 而不是$this->fetchAll('email = ?',$email)->current()在模型类中使用,有没有办法做$this->fetchByEmail($email)或$this->findByEmail($email)?
已经有一个像这样的神奇方法Zend_Log,而不是$myLogger->log("Something went wrong",Zend_Log::CRIT)你只是编写$myLogger->crit("Something went wrong")并自动映射(通过方法中的一些时髦的反射__call()).
有没有人知道在任何Zend_Db课程中是否有类似的东西,或者我是否必须为我做一些事情来做这件事?