我正在设置一个LAMP服务器,并希望将Apache的umask设置设置为002,以便所有Apache创建的文件都设置了组写权限位(因此同一组的成员可以覆盖这些文件).
有谁知道如何做到这一点?我知道在Ubuntu上,您可以使用/ etc/apache2/envvars文件来配置umask,但服务器正在运行CentOS.
更新 此问题与我刚才提到的另一个问题有关(Linux用户和组用于LAMP服务器).如果愿意,请更新这个其他问题,以便在可以编辑apache用户创建的文件的服务器上拥有开发人员用户的最佳设置.
我很欣赏数据库表中NULL值的语义含义,不同于false和空字符串''.但是,当字段可以为空时,我经常阅读有关性能问题的内容,并建议在NULL实际上在语义上正确的情况下使用空字符串.
什么情况适合使用可空字段和NULL值?有什么权衡取舍?简单地避免完全使用NULL并简单地使用空字符串,false或0表示缺少值是明智的吗?
UPDATE
好的 - 我理解'和NULL之间的语义差异以及NULL是适当的字段值的(性能不可知)情况.但是,让我扩展一下暗示的性能问题.这是来自Schwartz,Zeitsev等人的优秀"高性能MySQL" http://www.borders.co.uk/book/high-performance-mysql-optimization-backups-replication-and-more/857673/:
MySQL更难以优化引用可空库存的查询,因为它们使索引,索引统计和值比较更加复杂.可空列使用更多存储空间,并且需要在MySQL内部进行特殊处理.当索引可空列时,每个条目需要一个额外的字节,甚至可以在MyISAM中将固定大小的inded(例如单个整数列上的索引)转换为可变大小的列.
更多信息: Google图书预览
这很可能是明确的答案 - 我只是在寻找前线的第二意见和经验.
这对我来说听起来像是一个查找手册的问题,但我找不到它.假设我们有一个在它的文件和目录不应该是版本控制之下,而是应该忽略列表上的存储库(如Eclipse文件.settings
,.project
,生成的文档文件-不应该被添加并承诺在第一件事情地点).从存储库中删除这些文件并将它们直接移到忽略列表中的最佳方法是什么?
更新: 下面接受的答案详细说明了设置本地subversion存储库以避免上述问题的好方法.但是,如果您仍然需要解决这个问题,那么您似乎必须进行一些手动调整以将文件/文件夹从存储库中取出并放到忽略列表中.
例如,对于该.settings
文件夹,首先将其添加到全局忽略列表,然后运行以下命令:
$REMOVE=".settings"
cp -r "$REMOVE" /tmp/ && \
svn rm "$REMOVE" && \
svn commit -m "Moving to ignore list" "$REMOVE" && \
mv "/tmp/$REMOVE" .
Run Code Online (Sandbox Code Playgroud)
这会将文件/文件夹复制到临时位置,然后将其从SVN中删除并提交删除 - 最后将文件/文件夹复制回来,但由于它现在位于忽略列表中,因此SVN将忽略它.
我喜欢使用支持彩色输出的UNIX/bash命令.因此,我定义了一些别名,这些别名会自动启用我知道支持此选项的命令的彩色输出.但是,我确信有数百个支持彩色输出的命令 - 我想知道它们是什么.
我~/.bash_aliases
文件中的那些是:
ls --color=auto
grep --color
phpunit --ansi
Run Code Online (Sandbox Code Playgroud)
那里还有什么?是否有支持彩色输出的所有命令的某个列表?或者更好的是,有一些命令用于grepping我的本地手册页并删除相应的命令名称.
我真的很喜欢VIM - 它是我遇到过的少数应用程序之一,让你感到内心温暖和模糊.但是,对于PHP开发,我仍然使用PDT Eclipse,尽管我很乐意切换.
我现在不能完全理解的是我非常依赖的CTRL + SPACE代码辅助功能 - 它非常有用,特别是在类型提示或使用PHPDoc变量注释块时.
我知道有很酷的VIM插件可以复制这个功能,然后一些 - 但它们是什么?
对于组成另一个对象作为其实现的一部分的对象,编写单元测试的最佳方法是什么,只有主要对象才会被测试?琐碎的例子:
class myObj {
public function doSomethingWhichIsLogged()
{
// ...
$logger = new logger('/tmp/log.txt');
$logger->info('some message');
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我知道可以设计对象以便可以注入logger对象依赖项并因此在单元测试中进行模拟,但情况并非总是如此 - 在更复杂的场景中,您需要组合其他对象或调用静态方法.
由于我们不想测试logger对象,只有myObj,我们如何进行?我们用测试脚本创建一个stubbed"double"吗?就像是:
class logger
{
public function __construct($filepath) {}
public function info($message) {}
}
class TestMyObj extends PHPUnit_Framework_TestCase
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
这对于小对象来说似乎是可行的,但对于更复杂的API而言,这将是一个痛苦,其中SUT依赖于返回值.另外,如果你想测试对依赖项对象的调用,你可以使用模拟对象吗?有没有办法模拟由SUT实例化的对象而不是传入?
我已经阅读了关于模拟的手册页,但它似乎并没有涵盖这种依赖是由组合而不是聚合的情况.你怎么做呢?
根据linux用户和组设置LAMP服务器的最佳做法是什么?如果在同一服务器上托管多个站点,最好是让一个用户拥有与apache在同一组中的所有站点源文件(和上载),或者为每个站点拥有不同的用户(以便每个站点都有自己的crontab)?或完全不同的东西?
出于某种原因,这个问题似乎从未在我遇到过的PHP/MySQL/Linux书籍中得到解决.
我想开始计算网页被查看的次数,因此需要某种简单的计数器.这样做的最佳可扩展方法是什么?
假设我有一个表Frobs,其中每行对应一个页面 - 一些明显的选项是:
在Frobs表中有一个unsigned int NumViews字段,它使用每个视图进行更新UPDATE
Frobs SET NumViews = NumViews + 1
.简单但不太擅长缩放,因为我理解它.
有一个单独的表FrobViews为每个视图插入一个新行.要显示视图数,您需要做一个简单的操作SELECT COUNT(*) AS NumViews FROM FrobViews WHERE FrobId = '%d' GROUP BY FrobId
.这不涉及任何更新,因此可以避免MyISAM表中的表锁定 - 但是,如果要显示每个页面上的视图数量,读取性能将受到影响.
你怎么做呢?
这里有一些很好的建议:http: //www.mysqlperformanceblog.com/2007/07/01/implementing-efficient-counters-with-mysql/ 但我想听听SO社区的观点.
我目前正在使用InnoDb,但我对InnoDb和MyISAM的答案感兴趣.
用于检查给定文件的多个文件夹位置的mod_Rewrite规则是什么.例如,如果我有一个文件夹结构:
public/
css/
library1/
css/
library2/
css/
Run Code Online (Sandbox Code Playgroud)
我希望请求/css/somefile.css
首先检查public/css/
目录,然后级联到public/library1/css/
那时public/library2/css/
,如果在任何目录中找不到资产,则返回404.
我在思考:
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond library1%{REQUEST_URI} -f
RewriteRule ^(.*)$ library1$1 [L]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond library2%{REQUEST_URI} -f
RewriteRule ^(.*)$ library2$1 [L]
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用 - 我不确定如何在动态生成的路径上检查文件是否存在.
我有一个Django模型的客户经理,它覆盖了该create
方法以保存一些相关对象:
class CustomManager(models.Manager):
def create(self, amount, user, description):
txn = self.get_query_set().create(user, description)
txn.budget_transactions.create(amount)
return txn
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何模拟调用txn.budget_transactions.create
以引发异常?
对象的budget_transactions
属性txn
是.的实例django.db.models.fields.related.RelatedManager
.使用mock.patch
嘲笑,因为它是动态地宣布这一类不工作-它不能直接进口.
有谁知道如何做到这一点?
对于单服务器LAMP站点(通常负载很高),使用memcache的最佳方法是什么?
在与应用程序相同的服务器上运行memcache守护程序是否有意义,或者只是从MySQL中获取宝贵的内存,从而导致净性能损失.在这种情况下使用memcache是否有意义 - 或者是始终为memcache提供专用服务器的最佳解决方案?
我很欣赏前后分析网站需要真正回答这个问题,但我宁愿不在现场网站上这样做.特别是当那里的人肯定知道他们头顶的答案.
我希望能够编写一个运行Selenium测试的Django LiveServerTestCase,该测试已使用Selenium IDE保存为HTML.代码可能如下所示:
from django.test import LiveServerTestCase
from selenium.webdriver.firefox.webdriver import WebDriver
class TestUserStories(LiveServerTestCase):
@classmethod
def setUpClass(cls):
cls.selenium = WebDriver()
super(MySeleniumTests, cls).setUpClass()
def test_registration(self):
# Note - 'run_html_test' doesn't exist
self.selenium.run_html_test('selenium/registration.html')
Run Code Online (Sandbox Code Playgroud)
这将允许我们的QA团队(不会说python)使用Firefox Selenium IDE编写测试并将其另存为HTML.这可能吗?
据我所知,HTML是保存测试的最佳格式,因为它允许稍后在IDE中进行编辑 - 导出到python不允许这样做,并且还生成需要转换为使用Django的python LiveServerTestCase.
是否可以在"django-oscar"中完全禁用'oscar.apps.catalogue.reviews'应用程序的功能?
正如我所看到的那样,它在许多地方使用,所以简单的删除INSTALLED_APPS
工作不起作用,也许最简单的方法就是将其隐藏在模板中.有更好的解决方案吗?
apache ×3
django ×3
linux ×3
php ×3
lamp ×2
mysql ×2
python ×2
bash ×1
caching ×1
colors ×1
django-oscar ×1
e-commerce ×1
eclipse ×1
eclipse-pdt ×1
ls-colors ×1
memcached ×1
mocking ×1
mod-rewrite ×1
null ×1
phpunit ×1
qa ×1
selenium ×1
shell ×1
svn ×1
testing ×1
unit-testing ×1
unix ×1
vim ×1