我想开始使用gettext来处理我在Web项目上的翻译(PHP 5).由于它是一个广泛使用的标准,具有良好的声誉,它似乎是最好的选择.
但是,我也听到有关服务器不兼容的事情,并且它是非线程安全的.这对我使用它的项目意味着什么?由于我构建了许多人使用的东西,因此我的代码工作非常重要.
我们是在谈论小问题(比如仍在使用PHP 4的人)还是主要的问题,比如在websevers上分发和安装gettext的问题很少?
我有一个基于我的开源框架的闭源项目.我想知道如何构建我的工作流程.以下是我使用带子模块的git的最佳猜测.
从这里我可以改变:
如何处理包含私有和公共代码和子模块的repo.现在看起来我只需要维护两个单独的代码库来实现这一目标.
我正在寻找最好的答案,可以帮助一些相当新的git简化处理半开源和半私有的代码库的过程.关于它的一个好处是每个文件夹都是私有或公共文件夹,所以不用担心私有文件和公共文件在某处 - 但有些私人文件夹可能在公共文件夹中!
我可以给出的另一个例子是使用zendframework来构建你的私人公司网站,同时仍然可以每天(也许是补丁推送)到zend repo.并且还在zendframework中拉动和推送您的私人网站.
例如,想象一下这样的目录结构:
/private_folder
/public
/public_folder
/public_folder2
/private_folder
Run Code Online (Sandbox Code Playgroud)
也许我要求两个人在一个加入的repo目录中处理它们.也许没有简单的方法可以做到这一点,我应该将它们分开并在一个中完成所有公共补丁然后只需进入我的私人仓库.当然,这意味着如果我正在处理一些私有代码 - 我将不得不离开该repo并开放公共代码并使修补的代码更改,然后返回私有代码,合并,然后继续处理私有代码.
使用标准RDMS,我可以通过使用主键和外键找到关系.如果我想要最近的评论,那么我只是按日期时间排序.如果我想要用户的所有评论,那么我将获取评论属于该用户的位置.
换句话说,我可以使用索引来过滤结果.不只是主键.
但是,对于文档和键值NoSQL,我无法弄清楚如何使用它们比文本转储更多.您唯一能做的就是通过ID获取值.
我需要一些例子,说明当你不能再使用索引或过滤器时,如何在NoSQL中建模数据.你如何排序和搜索数据?
我有很多UTF-8内容,我想插入到URL用于搜索引擎优化目的.例如,我想要包含在URI(site.com/tags/id/TAG-NAME)中的帖子标签.但是,标准只允许使用ASCII字符.
URI中允许但没有保留目的的字符称为unreserved.这些包括大写和小写字母,十进制数字,连字符,句点,下划线和波浪号.
该解决方案似乎是到:
然而,这将易读(和有价值的SEO)单词转换为mumbo-jumbo.所以我想知道谷歌是否仍然足够智能处理包含编码数据的URL中的搜索 - 或者我是否应该尝试将这些非英语字符转换为半ASCII对应物(这可能有助于拉丁语言)?
我想更多地研究完整的数据设计模式.具体而言,存储,处理,缓存和检索数据的不同技术组合.换句话说,看看在facebook等大型系统中使用了多少组件.
据我所知,我们有数据库类别的RBMS和NoSQL风格.但是,许多其他技术(永久数据存储之外)对数据的实际使用至关重要 - 例如memcached.然而,我无法找到应该用于充分利用所有架构的总体设计模式.
有没有人有关于整个包装设计模式的文章的链接,这些模式可以用不同的数据库系统组件混合来完成?
这不是数据库规范化等数据库特定最佳实践的问题.关于如何最好地使用某种技术也不是一个问题.
可以使用哪些设计模式正确地混合奇怪的技术,以利用每个优势来设计完整,高效的系统?从缓存,到CRUD,到扩展,再到数据完整性.
例如,在小型共享主机上,我可以运行像SQLite这样的博客,因为几乎所有读取都没有写入.另一方面,有些项目是低端VPS,我可以使用MySQL + APC缓存(毕竟只有一台服务器),在高读/写时具有惊人的性能.有超过一个VPS memcached是冠军!
我也是MongoDB和PostgreSQL的粉丝.但是,MongoDB不使用任何形式的RAM限制,因此您应该拥有一个单独的服务器.然而,在MongoDB中存储大型对象并将剩余的重要数据留在PostgreSQL上是双赢的.
但是,这些都是非常基本的设计选择.大规模应用程序设计具有更多抽象,以促进扩展和减少故障点.
我们有SQLite for RDBMS,但是有没有基于磁盘的轻型内存使用键值数据库?换言之,一个键值存储,可以在一个运行少量的存储器具有较大的数据量.我想在没有大量可用内存的低功耗机器上使用它.
似乎BerkeleyDB和LevelDB都是选项.
我正在尝试为OAuth响应令牌返回OAuth 2响应代码.但是,我的请求返回以下错误,谷歌的结果为零.我尝试更改response_type为"令牌"而不是"代码",但这也不起作用.
OAuth 2参数只能有一个值:response_type
请求详情:
scope=https://www.googleapis.com/auth/userinfo.email
client_secret=_____
response_type=code
grant_type=authorization_code
redirect_uri=http://localhost/folder/
client_id=____.apps.googleusercontent.com
code=_____
Run Code Online (Sandbox Code Playgroud)
我正在发送这个第二步有效载荷 POST https://accounts.google.com/o/oauth2/auth
我的要求有什么问题?
我刚刚意识到https://accounts.google.com/o/oauth2/token应该使用此请求的URL.但是,更改为该URL现在提供:
HTTP/1.0 400 Bad Request
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Date: Fri, 27 Jul 2012 22:44:35 GMT
Content-Type: application/json
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
{
"error" : "invalid_request"
}
Run Code Online (Sandbox Code Playgroud)
response_type如上所述删除和更改URL解决了这个问题.
我想找到所有根级别的#text节点(或带有div父节点的节点),它们应该包含在<p>标签内.在下文中,应该有三个(甚至只是两个)最终根<p>标签.
<div>
This text should be wrapped in a p tag.
</div>
This also should be wrapped.
<b>And</b> this.
Run Code Online (Sandbox Code Playgroud)
我们的想法是将文本格式化得更好,以便将文本块分组为HTML显示的段落.但是,我一直在研究的以下xpath似乎无法选择文本节点.
<?php
$html = '<div>
This text should be wrapped in a p tag.
</div>
This also should be wrapped.
<b>And</b> this.';
libxml_use_internal_errors(TRUE);
$dom = DOMDocument::loadHTML($html);
$xp = new DOMXPath($dom);
$xpath = '//text()[not(parent::p) and normalize-space()]';
foreach($xp->query($xpath) as $node) {
$element = $dom->createElement('p');
$node->parentNode->replaceChild($element, $node);
$element->appendChild($node);
}
print $dom->saveHTML();
Run Code Online (Sandbox Code Playgroud) 由于某种原因,该AppModel->updateAll()方法不会转义传递给它的数据.查看文档,我找不到任何关于如何使用CakePHP实际转义数据的内容.
在datasources/dbo/dbo_mysql.php我找到了value()似乎只是使用的方法mysql_real_escape_string()- 但是如何在模型中从上面访问该方法?
由于我们的git repos的设置方式,我有一些可能在一个目录中的静态内容 - 以及可能在另一个目录中的其他内容.我怎样才能让nginx在两个地方搜索像样式表这样的静态文件?
我原本以为try_files有我的答案 - 但我似乎无法让它工作.
try_files $uri /dir1/static/$uri /dir2/static/$uri @missing;
Run Code Online (Sandbox Code Playgroud)