Bower用于客户端Javascript npm用于服务器端并读取component.json文件以识别应该在部署时获取的依赖项,因此我很高兴heroku将在slug编译时运行它.
不幸的是,我无法通过heroku控制台或一次性命令(heroku run "npm help")(heroku run bash- > npm help)调用npm或bower,因为它可以使用ruby的rake.我把npm和node(latest/x版本)放在我package.json的引擎部分,而不是依赖项中.
我认为这可以通过自定义节点buildpack来解决,但我认为这对于激活一些如此明显的东西来说有点过于繁重.
我们使用Oracle Text CTXSYS.CONTEXT索引来索引包含元信息的大约50万行.信息分布在两个表中,这两个表由索引器在运行时调用的过程(功能索引)组合在一起.
当我在本地机器(简单的双核笔记本)上运行CREATE INDEX时,索引在大约3分钟内构建.在我们的数据库服务器上运行在具有8个内核和16G内存的Solaris上,需要24小时才能为相同(完全相同)的数据创建索引.
示例代码: 这是两个表和3列的索引进纸器:
create or replace procedure docmeta_revisions_text_feeder
( p_rowid in rowid , p_clob in out nocopy clob) as v_clob CLOB begin
FOR c1 IN (select DM.DID, DM.XDESCRIB || ' ' || DM.XAUTHOR AS data
from DOCMETA DM
WHERE ROWID = p_rowid)
LOOP
v_clob := v_clob || c1.data;
FOR c2 IN (
SELECT ' ' || RV.DDOCTITLE AS data
FROM REVISIONS RV
WHERE RV.DID = c1.DID)
LOOP
v_clob := v_clob || c2.data;
END LOOP;
END LOOP; …Run Code Online (Sandbox Code Playgroud) 为了支持Symfony2中的全文索引,我使用了MyISAM镜像表.我们定期将生产数据集复制到该表,并创建一个映射表结构的SearchEntity,并与真实实体相关联.因此,我们可以在SearchRepository上执行搜索查询(使用自定义MATCH AGAINST语句构建器),并通过解析关联来检索找到的实体.
现在,当我执行doctrine:schema:updateDoctrine2时,无法识别该表上的(手动添加的)索引,并希望删除它们.不幸的是,没有建议注释说"但保持这个索引完整!".
我已经尝试使用@Index与全文索引(前缀为ft_)相同的字段的注释欺骗Doctrine ,然后手动执行一些SQL以用我的FT索引替换它们但是也失败了:当Doctrine最初使用那些虚拟创建表时索引失败,因为索引键长度大于1000字节(这是MySQL中明显原因的硬限制)
问题是:我可以建议Doctrine在schema:update命令中保留它在表上找到的索引吗?有没有办法将其破解到框架中?在每次架构更新后重新创建全文索引非常麻烦:(
SearchEntity:
/**
* @ORM\Table(name="tmp_search2",options={"engine"="MyISAM"},
* uniqueConstraints={@ORM\UniqueConstraint(name="uq",columns={"language_id","product_offer_id","product_group_id","retailer_id"} )},
* indexes={@Index(name="price_idx", columns={"product_offer_price"}),
* @Index(name="started_at_idx", columns={"product_offer_started_at"}),
* @Index(name="ended_at_idx", columns={"product_offer_ended_at"}),
* @Index(name="ft_products", columns={"product_name"}),
* @Index(name="ft_product_group", columns={"product_group_name"}),
* @Index(name="ft_product_retailer", columns={"retailer_name"})
* }
* )
* @ORM\Entity(repositoryClass="SearchRepository")
*/
class SearchEntity
{
/**
* This field is only here to satisfy doctrine's need for a non-composite primary key.
* @ORM\Id
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $searchId;
/**
* @ORM\ManyToOne(targetEntity="ProductOffer")
* @ORM\JoinColumn(name="product_offer_id", referencedColumnName="id")
*/
private $productOffer; …Run Code Online (Sandbox Code Playgroud) 我们将所有与货币相关的值存储在我们的数据库中(ODM,但ORM可能会表现相同).我们使用MoneyType将面向用户的值(12,34€)转换为他们的美分表示(1234c).在典型的float精度问题就出现在这里:由于精确度不够有创造调试时仅仅是可见的舍入误差许多情况下.MoneyType会将传入的字符串转换为可能不精确的浮点数("1765"=> 1764.9999999998).
一旦你坚持这些价值观,事情就会变得糟糕:
class Price {
/**
* @var int
* @MongoDB\Field(type="int")
**/
protected $cents;
}
Run Code Online (Sandbox Code Playgroud)
将转换传入的值(浮动!),如:
namespace Doctrine\ODM\MongoDB\Types;
class IntType extends Type
{
public function convertToDatabaseValue($value)
{
return $value !== null ? (integer) $value : null;
}
}
Run Code Online (Sandbox Code Playgroud)
(整数)强制转换将剥离值的尾数而不是舍入值,从而有效地导致将错误的值写入数据库(当"1765"在内部时为1764.9999999998时,1764而不是1765).
这是一个单元测试,应该在任何Symfony2容器中显示问题:
//for better debugging: set ini_set('precision', 17);
class PrecisionTest extends WebTestCase
{
private function buildForm() {
$builder = $this->getContainer()->get('form.factory')->createBuilder(FormType::class, null, []);
$form = $builder->add('money', MoneyType::class, [
'divisor' => 100
])->getForm();
return $form;
}
// …Run Code Online (Sandbox Code Playgroud) 可能重复:
UTF-8编码和http参数
我有一个带有纯UTF8标头的UTF8编码的JSP(文本文件也编码为UTF-8)和该页面内的表单:
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head>
<body>
This is a funny German character: ß
<form action="utf.do" method="post">
<input type="text" name="p" value="${p}" />
<input type="submit" value="OK"/>
</form>
Run Code Online (Sandbox Code Playgroud)
然后我在后端有一个很好的Spring支持的@Controller:
@Controller
public class UTFCtl {
@RequestMapping("/utf.do")
public ModelAndView handleUTF(@RequestParam(value="p", required=false) String anUTFString) {
ModelAndView ret = new ModelAndView("utf");
ret.addObject("p", anUTFString);
return ret;
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,表单通过POST传输其数据.在表单字段中键入一些德语变音符会在后端产生一堆破碎的字符.因此hähöhü,在提交后,在表单字段上提交会产生hähöhü值.我使用了调试器并且var值已经被加扰,这意味着Spring/Tomcat/Servlet没有正确检测到编码,或者浏览器没有正确编码我的输入.同事们对此的通常回应是:在ISO中对德国进行编码或在传输之前使用Javascript进行编码.这不应该是必要的,不是吗?我的意思是,这是2011年,这就是UTF8的优点! …
我有一个包含集合的Backbone模型:
var Stream = Backbone.Model.extend({
defaults: {
dummyField: "1",
excludedUsers: new Backbone.Collection()
}
});
var s = new Stream;
s.get('excludedUsers').add( {name:'Stefan'} );
console.log(s.toJSON())
Run Code Online (Sandbox Code Playgroud)
收益率:
{ dummyField: '1',
excludedUsers:
{ length: 1,
models: [ [Object] ],
_byId: {},
_byCid: { c1: [Object] } } }
Run Code Online (Sandbox Code Playgroud)
而不是"预期":
{
dummyField: '1',
excludedUsers: [ {name:'Stefan'} ]
}
Run Code Online (Sandbox Code Playgroud)
因为Backbone没有深入JSONing模型.解决方法的唯一方法是在Stream的原型上覆盖toJSON方法,但这对其他情况没有帮助.是否有一般/更好的解决方案(除了沉重的Backbone.Relational插件)?
doctrine-orm ×2
php ×2
symfony ×2
backbone.js ×1
bower ×1
heroku ×1
html ×1
java ×1
javascript ×1
jsp ×1
mongodb ×1
mysql ×1
node.js ×1
oracle ×1
spring-mvc ×1
sql ×1
utf-8 ×1