小编use*_*021的帖子

使用git和符号链接的基于组件的Web项目目录布局

我正在计划我的linux/apache/php web项目的目录结构,如下所示:

只会www.example.com/webroot/暴露在阿帕奇

www.example.com/
  webroot/
    index.php
    comp1/
    comp2/
  component/
    comp1/
      comp1.class.php
      comp1.js
    comp2/
      comp2.class.php
      comp2.css
  lib/
    lib1/
      lib1.class.php
Run Code Online (Sandbox Code Playgroud)

component/lib/目录将只在PHP路径.

为了使webroot目录中的css和js文件可见,我计划使用符号链接.

  webroot/
    index.php
    comp1/
      comp1.js (symlinked)
    comp2/
      comp2.css (symlinked)
Run Code Online (Sandbox Code Playgroud)

我尝试遵循以下原则:

  • 按组件和库布局,而不是按文件类型而不是"公共"或"非公共",index.php是一个例外.这是为了更容易开发.
  • 公开onle公共Web目录中的最小文件集,并使其他所有内容无法访问Web.将组件和库需要公开的文件符号化到公共位置,但仍然镜像布局.因此,组件和库结构也可以在链接中生成的html代码中看到,这可能有助于开发.
  • git的使用应该是安全的并且始终有效.可以按照一些程序将符号链接添加到git中,但是在检查完它们之后,应该安全地处理更改分支.

git如何正确处理单个文件的符号链接,有什么需要考虑的吗?

说到图像,我需要链接目录,如何用git处理?

  component/
    comp3/
      comp3.class.php
      img/
        img1.jpg
        img2.jpg
        img3.jpg
Run Code Online (Sandbox Code Playgroud)

它们应该链接在这里:

  webroot/
    comp3/
      img/ (symlinked ?)
Run Code Online (Sandbox Code Playgroud)

如果使用符号链接有缺点,我可以直接将图像移动到webroot/tree,这将打破第三个原则(git实用性).

所以这是一个git和符号链接问题.但我有兴趣听听有关php布局的评论,也许你想使用评论功能.

linux git symlink

6
推荐指数
1
解决办法
1834
查看次数

如何组织实时数据完整性测试和代码单元测试?

我有几个带代码测试代码的文件(使用"unittest"类).

后来我发现测试数据库完整性也很好.我把它放到一个单独的目录树中.(像键的格式正确,父节点和子节点指向正确等等.编辑:这是一个nosql项目,我不能依赖数据库级别检查谎言参照完整性等.)

我使用相同的unittest类进行完整性测试.

现在我想知道保持这种分离是否真的有意义.为了测试数据的完整性,我经常复制用于测试处理数据的代码的代码部分.

但它不一样.代码测试使用测试数据库(在每次测试后删除),完整性测试连接到实时数据并进行分析.我想从cron调用的完整性测试,如果实时数据库中发生了某些事情,则发送警报.

你会怎么处理?这样的设置有标准吗?你有什么经历?

我倾向于将所有内容放在同一个文件中,这将导致代码测试也由生产环境中的cron执行.

编辑:推动我的是,尝试保持项目简单,不要让单个任务或工作流程触及太多文件.没有所有的测试,我已经有了一个类文件,一个子类,一个相关的类,一些库(帮助器)文件和主代码.测试添加一个文件.它有助于我在编码时保持注意力集中,压力更小,我相信我减少了错误,我可以更快地记住并找到一个受影响的文件较少的特定代码部分.每个工作流程只有一个测试文件可以帮到这里 如果我保持它是单独的,有2个文件(数据完整性测试和代码测试),也许3个(两者的公共库).抽象会增加复杂性.

Edit2:我现在正在重构一点,只是将数据测试文件移动到代码测试所在的同一目录树中,但保留名称为"完整性"或"测试"的不同文件.我不会(还)合并这些文件,因为2个人建议反对它,我相信他们现在的经验和建议.我现在将使用代码重复.

编辑3:我忘了提到每次运行的测试选择不是由这种情况下的树结构决定的.测试在主文件中枚举,因此我目前有2个主文件"完整性"和"代码测试",并且测试可以存在于相同的直接结构中.

也许会有更多人回答.到目前为止,感谢您提供宝贵的意见,这已经帮助我开发了最终的结构!

编辑4:我现在做了更多的重构.我似乎应该保留2个文件,但目的略有修改.一个针对生产服务器上的计划监视.另一个用于开发.但在这两个文件中都可以进行完整性测试或代码测试.在两个文件中,可以在测试数据库(在测试之后擦除)和永久数据库(每个都有永久数据库,生产服务器和开发服务器)上执行操作.还有一件重要的事情:我发现自己将大量常用代码从测试文件移到了类文件中.所以这些课程也获得了仅用于测试的能力.到目前为止我喜欢这个,感觉很干净.我还没有(还)创建一个在两个测试前端之间共享的测试库,这段代码已经转到了现在正在考虑的obejct的类文件中.

请注意,我在下面的评论是用"user89021"签名的,但是我是karlthorwald.我无能为力.

database automated-tests unit-testing data-integrity nosql

5
推荐指数
1
解决办法
952
查看次数

如何在Ubuntu Karmic上安装LFE?

Erlang已经安装:

$dpkg -l|grep erlang
ii  erlang                          1:13.b.3-dfsg-2ubuntu2            Concurrent, real-time, distributed function
ii  erlang-appmon                   1:13.b.3-dfsg-2ubuntu2            Erlang/OTP application monitor
ii  erlang-asn1                     1:13.b.3-dfsg-2ubuntu2            Erlang/OTP modules for ASN.1 support
ii  erlang-base                     1:13.b.3-dfsg-2ubuntu2            Erlang/OTP virtual machine and base applica
ii  erlang-common-test              1:13.b.3-dfsg-2ubuntu2            Erlang/OTP application for automated testin
ii  erlang-debugger                 1:13.b.3-dfsg-2ubuntu2            Erlang/OTP application for debugging and te
ii  erlang-dev                      1:13.b.3-dfsg-2ubuntu2            Erlang/OTP development libraries and header
[... many more]
Run Code Online (Sandbox Code Playgroud)

Erlang似乎有效:

$ erl
Erlang R13B03 (erts-5.7.4) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.4  (abort with ^G) …
Run Code Online (Sandbox Code Playgroud)

lisp erlang lfe

5
推荐指数
1
解决办法
668
查看次数

如何识别需要在git中合并的分支

我制作了很多bugfix和功能分支,最后将它们全部合并到一个候选版本(rc)中.但是当我测试rc时,我不确定我是否已经合并了所有分支机构.如何找出缺少哪些分支?

我试过gitk,但它似乎只显示已经合并在我所在的分支中的分支.但我对未合并的分支感兴趣.

在github("网络")上有一个很好的显示所有分支,但它总是落后,所以它没有那么有用.

git merge branch

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

如何在watir中获取元素的id或名称?

Watir可以在页面上找到文本:

<span id="i1" name="n1>Some Text</span>

e.text.include?("Some Text")
Run Code Online (Sandbox Code Playgroud)

但是当我只知道"Some Text"时,我怎么能得到跨度的名称或id

e.text.findInPage("Some Text").parentElement.id (should be "i1")
e.text.findInPage("Some Text").parentElement.name (should be "n1");
Run Code Online (Sandbox Code Playgroud)

这样的东西存在于watir中?

watir

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

是否有关于Google代码的所有代码项目的概述?

是否有关于Google代码的所有代码项目的概述?我可以访问的URL是什么?

我的项目未包含在https://www.google.com/dashboard/的信息中心内

google-code

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

编写一个shell脚本find-greps并输出1行的文件名和内容

要查看包含"abc"的所有php文件,我可以使用这个简单的脚本:

find . -name "*php" -exec grep -l abc {} \;
Run Code Online (Sandbox Code Playgroud)

我可以省略-l,我将提取内容的一部分而不是文件名作为结果:

find . -name "*php" -exec grep abc {} \;
Run Code Online (Sandbox Code Playgroud)

我现在想要的是同时执行这两个版本但同一行的版本.

预期产量:

path1/filename1: lorem abc ipsum
path2/filename2: ipsum abc lorem
path3/filename3: non abc quod
Run Code Online (Sandbox Code Playgroud)

或多或少喜欢grep abc *.

编辑:我想将它用作一个简单的shell脚本.如果输出在一条线上会很棒,因此可以进一步加倍.但是脚本没有必要只有一行,我还是把它放在一个bash脚本文件中.

编辑2:后来我找到了"ack",这是一个很棒的工具,我现在在大多数情况下使用它而不是grep.它完成了所有这些以及更多.http://betterthangrep.com/您可以写信ack --php --nogroup abc以获得所需的结果

bash shell grep find

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

如何以交互方式使用PHP命令行?

有没有以交互方式使用PHP命令行的方法?

我发现了很多关于运行文本文件中的脚本的问题,但实际上并没有关于带有我输入命令的提示符的shell:

$ php -a
Interactive shell

php > echo "hello world";
hello world
php > $a = 1;
php > echo $a;
1
php > exit;
$
Run Code Online (Sandbox Code Playgroud)

当我进入Linux shell并运行时,php -a我得到了PHP shell.我可以加载存在于文件中的类吗?这里的规则是什么?

php shell

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

您可以推荐哪个用于mysql访问的javascript库?

我使用的是独立的JavaScript,而不是在浏览器中运行.

我想连接到在同一主机上运行的mysql服务器.

有一个JavaScript库吗?

编辑:我看了一下Jaxer.它具有mysql功能,但它已融入框架中.

javascript mysql

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

Javascript对象/功能问题

我有一个日志类"logger"的实例,这个类有一个函数"log(txt)",它的工作原理.

现在我声明了一个不同的类"Runner",我将它传递给构造函数中的logger实例.一切正常,直到第5行,但第7行不写入日志:

var Runner = function (logger) {
  // constructor:
  logger.log("this way it works");
  this.logger = logger; //line 4
  this.logger.log("this also works"); //line 5
  this.logf = this.logger.log; //create a shorthand for logging
  this.logf("this is not written to log. why? i thought i can create a var for a function"); //line 7
};

var logger = new Logger(); //class not shown here
var runner = new Runner(logger);
var otherinstancce = new OtherClass(logger) //line 12
Run Code Online (Sandbox Code Playgroud)

你能解释一下我的错误吗?

javascript functional-programming

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

为什么我不能在Internet Explorer中使用JavaScript动态地将行添加到HTML表中?

在Firefox中它可以工作,在我的Internet Explorer 6或7中它没有:

<html>
<head>

    <script type="text/javascript">
      function newLine() {
        var tdmod = document.createElement('td');
        tdmod.appendChild(document.createTextNode("dynamic"));

        var tr = document.createElement('tr');
        tr.appendChild(tdmod);

        var tt  = document.getElementById("t1");
        tt.appendChild(tr);
      }     

    </script>
</head>
<body>

    <a href="#" onclick="newLine()">newLine</a>

      <table id="t1" border="1">
        <tr>
          <td>
          static
          </td>  
        </tr>
      </table>

</body>
Run Code Online (Sandbox Code Playgroud)

用户单击链接"newLine",新行应添加到表中.

如何在IE中使这项工作?

编辑:感谢接受的答案,我改变了它,现在它的工作原理:

  <table border="1">
   <tbody id="t1">
    <tr>
      <td>
      static
      </td>  
    </tr>
   </tbody>
  </table>
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer

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

如何从内部关闭cherrypy?

我正在开发樱桃,我从python脚本开始.

为了更好的开发,我想知道在主进程中阻止cherrypy的正确方法是什么(而不是使用ctrl-c或SIGTERM从外部阻止).

我假设我必须从主应用程序注册一个回调函数,以便能够从工作线程中停止樱桃主进程.

但是如何从内部停止主流程呢?

python cherrypy

0
推荐指数
1
解决办法
3539
查看次数