小编Dav*_*ler的帖子

使用Jenkins部署Symfony项目:最佳实践

我在我的Jenkins服务器上管理了一些Symfony 2/3项目,我正在部署到实时服务器.这是我目前的设置:

构建

  • 使用git插件结帐
  • 删除数据库(如果存在)
  • 执行composer install(prod模式,优化自动加载器)
  • 执行bower install以获取我的资产
  • 执行gulp构建,缩小和连接css/javascript(我们不使用assetic)
  • 执行我的数据库创建
  • 执行单元测试

归档

构建后,我存档文物构建的没有vendor,node_modulesbower_components使用"文件夹作为一个zip文件压缩文物 "插件.

部署

我使用" Promoted builds "插件和" Publish over SSH "插件组合:如果我想用构建"上线",我通过SSH将工件(我的zip文件)发布到我的实时系统中的一个目录中staging_dir.文件上传后,我执行一些SSH命令:

  • 将实时系统设置为维护模式
  • 解压缩我的文件拉链 staging_dir
  • composer install在实时系统上执行(与构建期间相同的配置)
  • (bower install并且gulp构建不是必需的,因为我们使用在构建期间创建的资产)
  • 迁移数据库
  • 将当前的实时系统文件移动到backup文件夹
  • 复制来自的文件 staging_dir
  • 将实时系统设置为"生产"模式(禁用维护模式)

最佳做法?

我现在想收集部署的一些最佳实践:

  • 您是否希望将vendor文件夹转移到实时系统而不是composer install再次执行?
  • 资产怎么样?你bower installgulp重新构建实时系统,或者你使用已发布的资产?
  • 在执行实时促销时如何处理密码?
  • ......我忘记的其他事情.

symfony jenkins

17
推荐指数
1
解决办法
8937
查看次数

使main()"不可见"

我想编写一个守护程序管理器来管理所有守护程序正在运行,就像这样(简化的伪代码):

void watchMe(filename)
{
    while (true)
    {
        system(filename); //freezes as long as filename runs
        //oh, filename must be crashed. Nevermind, will be restarted            
    }
}       

int main()
{
    _beginThread(watchMe, "foo.exe");
    _beginThread(watchMe, "bar.exe");
}
Run Code Online (Sandbox Code Playgroud)

这部分已经工作 - 但是现在我面临的问题是,当观察到的应用程序 - 比如说foo.exe - 崩溃时,相应的系统调用会冻结,直到我确认这个漂亮的消息框:

错误消息

这使守护进程无用.

我认为可能是一个解决方案是使观察到的程序(我控制)的main()"不可擦除",这样他们就可以优雅地关闭而不显示这个丑陋的消息框.

像这样:

try
{
    char *p = NULL;
    *p = 123; //nice null pointer exception
}
catch (...)
{
    cout << "Caught Exception. Terminating gracefully" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为它仍然会产生此错误消息:

错误消息

("未经处理的异常...写入访问冲突......")

我已经尝试了SetUnhandledExceptionFilter和所有其他东西,但没有效果.

任何帮助将受到高度赞赏.

电贺

c++ exception-handling

4
推荐指数
1
解决办法
453
查看次数

MonoTouch:使用命令行中的mdtool构建iOS应用程序:多个配置文件

我想直接从命令行使用MonoTouch(Xamarin)的mdtool构建我的ios-apps Appstore-ready.

我使用以下命令:

'/Applications/Xamarin Studio.app/Contents/MacOS/mdtool' -v build '--configuration:AppStore|iPhone' MyAppProject.csproj
Run Code Online (Sandbox Code Playgroud)

现在,在xCode中,我设置了几个配置文件,mdtool似乎混淆了哪一个使用:

在此输入图像描述

有没有机会告诉mdtool我想用于该构建的所需配置文件?

iphone xamarin.ios jenkins mdtool xamarin

4
推荐指数
1
解决办法
2053
查看次数

从Tagger获取其他信息(主动/被动,时态......)

我正在使用Stanford Tagger来确定词性.但是,我希望从文本中获取更多信息.是否有可能获得更多信息,如句子的时态或是否处于主动/被动状态?

到目前为止,我正在使用非常基本的PoS-Tagging方法:

List<List<TaggedWord>> taggedUnits = new ArrayList<List<TaggedWord>>();

String input = "This sentence is going to be future. The door was opened.";
for (List<HasWord> sentence : MaxentTagger.tokenizeText(new StringReader(input)))
{
     taggedUnits.add(tagger.tagSentence(sentence));
}
Run Code Online (Sandbox Code Playgroud)

nlp pos-tagger stanford-nlp

4
推荐指数
1
解决办法
2892
查看次数

如何在服务工作者中保留数据

截至目前,Chrome不支持传递其他数据来推送从GCM收到的通知.因此,fetch每当收到推送通知时,我都必须从我的服务工作者执行.到现在为止还挺好.

但是:我需要在我的http请求中包含一个请求参数fetch.如何告诉服务工作者我的参数?

到目前为止我尝试过的

利用postMessage告诉我的服务人员请求参数:

var serviceWorkerData = {};

self.addEventListener('message', function (evt) 
{
    console.log('service worker received', evt.data);

    serviceWorkerData = evt.data.myData;
});

self.addEventListener('push', function(event)
{
    event.waitUntil
    (
        fetch("http://my.url", {
            method: 'post',
            body: 'myData=' + serviceWorkerData
        }).then(function(response)
        {
            //...
        })
    );
});
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用

但这并不是持久性的,即在我关闭浏览器并再次打开它之后,我serviceWorkerData就迷失了.localStorage在服务工作者中不可用,所以如何在这里获得持久性?

javascript web-worker local-storage indexeddb service-worker

4
推荐指数
1
解决办法
2330
查看次数

Javascript新的RegExp vs./pattern /和多行

为什么是/ pattern /匹配,但RegExp不是?

<div id="foo">
##content##
<h1>works!</h1>
##/content##
</div>

<script>
var str = document.getElementById("foo").innerHTML;
console.log(str);

var r = new RegExp("##content##([\S\s]*)##\/content##", "img");

console.log(r.exec(str)); //null
console.log(str.match(/##content##([\S\s]*)##\/content##/img)); //matches
</script>
Run Code Online (Sandbox Code Playgroud)

javascript regex

3
推荐指数
1
解决办法
581
查看次数

一个Debug-Print功能可以统治它们

我的情况是我的代码中有几个不同的结构,我想要打印到控制台.

三个例子(几百个):

typedef struct ReqCntrlT    /* Request control record */
{
int             connectionID;
int             dbApplID;
char            appDescr[MAX_APPDSCR];
int             reqID;
int         resubmitFlag;
unsigned int    resubmitNo;
char            VCIver[MAX_VCIVER];
int             loginID;

}   ReqCntrlT;

//---------------------------------------------   

typedef struct      /* Connection request data block */
{
    char            userID[MAX_USRID];
    char            password[MAX_PWDID];

}   CnctReqDataT;

//---------------------------------------------   

typedef struct {
    char            userID[LOGIN_MAX_USERID];
    char            closure;
    int             applVersion;
    int             authorizationDataLength;
    void            *authorizationData; }   LoginReqDataT;
Run Code Online (Sandbox Code Playgroud)

所以我想拥有的是一个调试函数,它只需要一个struct作为Parameter并输出结构的所有成员,如下所示:

LoginReqDataT* foo = new LoginReqDataT;
foo->applVersion = 123;
//...
debugPrintMe(foo);

CnctReqDataT* bar = new CnctReqDataT;
strcpy(bar->userID, "123"); …
Run Code Online (Sandbox Code Playgroud)

c++ debugging templates struct casting

2
推荐指数
1
解决办法
1881
查看次数