我的PayPal IPN脚本运行得很好.当我使用我的沙箱帐户进行测试时,付款会立即进行,但是当我使用客户的企业电子邮件时,我会在IPN日志调用中将其payment_status作为"待定",并将其pending_reason作为"单边".
我的客户的电子邮件已在PayPal上确认.所以有人能告诉我为什么我会遇到这个问题吗?
我正在试图弄清楚如何为Scala抽象类型调用构造函数:
class Journey(val length: Int)
class PlaneJourney(length: Int) extends Journey(length)
class BoatJourney(length: Int) extends Journey(length)
class Port[J <: Journey] {
def startJourney: J = {
new J(23) // error: class type required but J found
}
}
Run Code Online (Sandbox Code Playgroud)
这甚至可行吗?我熟悉Scala清单,但我不清楚它们如何在这里提供帮助.同样,我无法弄清楚如何对伴侣对象的apply()构造函数做同样的事情:
object Journey { def apply() = new Journey(0) }
object PlaneJourney { def apply() = new PlaneJourney(0) }
object BoatJourney { def apply() = new BoatJourney(0) }
class Port[J <: Journey] {
def startJourney: J = {
J() // error: …Run Code Online (Sandbox Code Playgroud) 我正在实现一个RESTful API,它将Orders作为资源公开,并通过结果集支持分页:
GET /orders?start=1&end=30
Run Code Online (Sandbox Code Playgroud)
分页的订单按ordered_at时间戳排序,降序排序.这基本上是REST Web应用程序中 SO问题分页的方法#1 .
如果用户请求订单的第二页(GET /orders?start=31&end=60),则服务器只需重新查询订单表,ordered_at DESC再次排序并返回位置31到60的记录.
我遇到的问题是:如果在用户查看记录时结果集发生变化(例如添加了新订单)会发生什么?在添加新订单的情况下,用户将在第二页结果的第一个位置看到旧订单#30(因为相同的订单现在是#31).更糟糕的是,在删除的情况下,用户在第二页(#31)的第一个位置看到旧订单#32,并且根本看不到旧订单#31(现在#30).
如果不以某种方式使RESTful服务器有状态(urg)或为每个客户端构建一些分页智能,我无法看到解决方案......有哪些已建立的技术可以解决这个问题?
为了完整性:我的后端是在Scala/Spray/Squeryl/Postgres中实现的; 我正在构建两个前端客户端,一个在backbone.js中,另一个在Python Django中.
我的问题是,如何@XmlSchema在Scala中使用JAXB 注释?
这是我到目前为止所提出的:
// File src/main/scala/co/orderly/prestasac/representations/wrappers.scala
package co.orderly.prestasac.representations
// JAXB
import javax.xml.bind.annotation._
@XmlSchema(xmlns = Array(@XmlNs(prefix = "xlink", namespaceURI = "http://www.w3.org/1999/xlink")))
package object wrappers {
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会引发错误:
/home/alex/Development/Orderly/prestashop-scala-client/src/main/scala/co/orderly/prestasac/representations/wrappers/wrappers.scala:18: illegal start of simple expression
[error] @XmlSchema(xmlns=Array(@XmlNs(prefix = "xlink", namespaceURI = "http://www.w3.org/1999/xlink")))
[error] ^
Run Code Online (Sandbox Code Playgroud)
如果有一个不需要的解决方法@XmlSchema,我将解释我正在尝试做什么 - 基本上我正在尝试解组一个看起来像这样的XML表示:
<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<products>
<product id="11" xlink:href="http://www.myshop.com/api/products/11"/>
<product id="12" xlink:href="http://www.myshop.com/api/products/12"/>
...
</products>
</prestashop>
Run Code Online (Sandbox Code Playgroud)
我相信我需要用来@XmlSchema为href链接定义"xlink"-prefixed命名空间...
我一直在阅读关于Java,JavaScript和Scala中的OO'流畅的界面'方法,我喜欢它的外观,但一直在努力寻找如何在Scala中使用更基于类型/功能的方法来协调它.
给出一个非常具体的例子:我编写了一个API客户端,可以像这样调用:
val response = MyTargetApi.get("orders", 24)
Run Code Online (Sandbox Code Playgroud)
返回值get()是一个Tuple3名为的类型RestfulResponse,在我的包对象中定义:
// 1. Return code
// 2. Response headers
// 2. Response body (Option)
type RestfulResponse = (Int, List[String], Option[String])
Run Code Online (Sandbox Code Playgroud)
这工作正常 - 我真的不想牺牲元组返回值的功能简单性 - 但我想用各种'流畅'方法调用来扩展库,可能是这样的:
val response = MyTargetApi.get("customers", 55).throwIfError()
// Or perhaps:
MyTargetApi.get("orders", 24).debugPrint(verbose=true)
Run Code Online (Sandbox Code Playgroud)
如何将get()返回类型元组(或类似元组)的功能简单性与为我的API添加更多"流畅"功能的能力相结合?
我是SQLAlchemy ORM的新手,我正在努力在多个表上完成复杂的查询 - 我发现在Doctrine DQL中相对简单的查询.
我有城市的数据对象,属于国家.一些城市也有县ID,但不是全部.除了必要的主键和外键之外,每个记录还有一个text_string_id,它链接到TextStrings表,该表存储不同语言的City/County/Country的名称.TextStrings MySQL表如下所示:
CREATE TABLE IF NOT EXISTS `text_strings` (
`id` INT UNSIGNED NOT NULL,
`language` VARCHAR(2) NOT NULL,
`text_string` varchar(255) NOT NULL,
PRIMARY KEY (`id`, `language`)
)
Run Code Online (Sandbox Code Playgroud)
我想为每个城市构建一个面包屑,形式如下:
country_en_name> city_en_name OR
country_en_name> county_en_name> city_en_name,
取决于是否为此城市设置了县属性.在Doctrine中,这将是相对简单的:
$query = Doctrine_Query::create()
->select('ci.id, CONCAT(cyts.text_string, \'> \', IF(cots.text_string is not null, CONCAT(cots.text_string, \'> \', \'\'), cits.text_string) as city_breadcrumb')
->from('City ci')
->leftJoin('ci.TextString cits')
->leftJoin('ci.Country cy')
->leftJoin('cy.TextString cyts')
->leftJoin('ci.County co')
->leftJoin('co.TextString cots')
->where('cits.language = ?', 'en')
->andWhere('cyts.language = ?', 'en')
->andWhere('(cots.language = …Run Code Online (Sandbox Code Playgroud) 我想从 Amazon Kinesis 流中获取最新记录。我打算从该记录中提取时间戳,并将其与消费者应用程序检查点的最后一个记录的时间戳进行比较,以检查消费者是否落后。
我无法使用最新的分片迭代器类型。这是因为 LATEST 指向最近的记录之后,因此它不能用于访问最新的记录。
有没有简单的方法获取最新记录?
我正在考虑的一种方法是获取消费者最近处理的记录的序列号的分片迭代器,使用该分片迭代器发出 GetRecords 请求,从请求的结果中获取下一个分片迭代器,然后重复直到GetRecords 请求不返回任何记录。
这种方法将涉及读取自消费者检查点以来的所有记录,这似乎不必要地浪费。有什么办法可以请求所有这些记录吗?
我正在使用Scala的JAXB,我的编组代码如下所示:
def marshalToXml(): String = {
val context = JAXBContext.newInstance(this.getClass())
val writer = new StringWriter
context.createMarshaller.marshal(this, writer)
writer.toString()
}
Run Code Online (Sandbox Code Playgroud)
然后,对于我的可空元素,我使用注释@XmlElement(nillable = true)按照JAXB编组使用空字段.这给了我像这样的XML输出:
<name>Alex Dean</name>
<customerReference xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<quantity>1</quantity>
<createdAt>2011-05-14T00:00:00+03:00</createdAt>
Run Code Online (Sandbox Code Playgroud)
这是一个良好的开端,但我真正想为这些领域编组的是:
<name>Alex Dean</name>
<customerReference nil="true"/>
<quantity type="integer">1</quantity>
<createdAt type="datetime">2011-05-14T00:00:00+03:00</createdAt>
Run Code Online (Sandbox Code Playgroud)
换句话说,我想删除命名空间属性和前缀,并为除字符串之外的所有字符串添加显式XML数据类型属性.它可能很简单,但我似乎无法在JAXB文档中找到它.
任何帮助感激不尽!
我正在阅读"如何让孩子们参与编程"的答案,微软Kinect因缺席而引人注目.然而,"Kinect for Windows" 主页确实谈到了使用它来教育学生.
据推测,API仍在不断发展并且相对复杂 - 但是让年轻观众(例如10-15岁)使用该技术是多么可行?我问,因为我认为来自传感器的物理反馈回路对于儿童编程来说将是一个非常类似Mindstorms的体验.
有关于让孩子们使用Kinect的书籍,软件"培训轮"或在线资源吗?
scala ×5
jaxb ×2
avro ×1
backbone.js ×1
doctrine ×1
java ×1
kinect ×1
paypal ×1
paypal-ipn ×1
python ×1
rest ×1
sqlalchemy ×1
stream ×1
uuid ×1