我无法找到任何记录在案的地方.默认情况下,find()操作将从头开始获取记录.我怎样才能获得mongodb中的最后N条记录?
编辑:我也希望返回的结果从最近到最近排序,而不是相反.
至少有三个流行的库用于访问和操作记录字段.我所知道的是:数据访问器,fclabels和镜头.
我个人开始使用数据访问器,现在我正在使用它们.然而最近在haskell-cafe上有一个fclabels优越的意见.
因此,我对这三个(也许更多)库的比较感兴趣.
我从升级现有的代码Rogue 1.1.8
,以2.0.0
和lift-mongodb-record
从2.4-M5 to 2.5
.
我写的MongoCaseClassField
包含scala enum 有困难,我真的可以使用一些帮助.
例如,
object MyEnum extends Enumeration {
type MyEnum = Value
val A = Value(0)
val B = Value(1)
}
case class MyCaseClass(name: String, value: MyEnum.MyEnum)
class MyMongo extends MongoRecord[MyMongo] with StringPk[MyMongo] {
def meta = MyMongo
class MongoCaseClassFieldWithMyEnum[OwnerType <: net.liftweb.record.Record[OwnerType], CaseType](rec : OwnerType)(implicit mf : Manifest[CaseType]) extends MongoCaseClassField[OwnerType, CaseType](rec)(mf) {
override def formats = super.formats + new EnumSerializer(MyEnum)
}
object myCaseClass extends MongoCaseClassFieldWithMyEnum[MyMongo, …
Run Code Online (Sandbox Code Playgroud) 假设我有以下记录ADT:
data Foo = Bar { a :: Integer, b :: String, c :: String }
Run Code Online (Sandbox Code Playgroud)
我想要一个记录并返回记录(相同类型)的函数,其中除了一个字段之外的所有字段都具有与作为参数传递的值相同的值,如下所示:
walkDuck x = Bar { a = a x, b = b x, c = lemonadeStand (a x) (b x) }
Run Code Online (Sandbox Code Playgroud)
上面的工作,但对于具有更多字段的记录(比如说10
),创建这样的函数将需要大量的打字,我觉得这是非常不必要的.
是否有任何不那么繁琐的方式做同样的事情?
我试图做一个EnumListField
在电梯/录音/ Squeryl,类似MappedEnumList
的LiftMapper
.存储类型应为Long/BIGINT.我明白,如果我定义:
def classOfPersistentField = classOf[Long]
Run Code Online (Sandbox Code Playgroud)
然后Squeryl会知道它应该创建一个BIGINT列.我知道它用于setFromAny()
设置值,传入Long.我没有得到的一件是:
它将如何读取该领域的价值?如果它使用valueBox
,它将得到一个Seq[Enum#Value]
,它将不知道如何将其变成一个龙.
我如何告诉Squeryl将我转换Seq[Enum#Value]
为Long,或者定义一个返回Long的"getter",并且不与"普通"getter冲突?
我正在尝试使用Snow Leopard上的Java Sound录制/处理来自三个usb麦克风的一些音频(但如果修复了某些内容,可以切换到Windows).问题是,当我尝试使用与usb麦克风相对应的混音器时,Java Sound告诉我该行不受支持.具体来说,它说...
可用的搅拌机:
Java声音音频引擎
USBMIC Serial#041270067
内置输入内置麦克风
Soundflower(2ch)
Soundflower(16ch)
线程"AWT-EventQueue-0"中的异常java.lang.IllegalArgumentException:Line unsupported:interface TargetDataLine支持格式PCM_SIGNED 96000.0 Hz,8位,立体声,2字节/帧,
...当我要求它选择USBMIC调音台时:
Mixer mixer = AudioSystem.
getMixer(mixerInfo[1]);
Run Code Online (Sandbox Code Playgroud)
我已经尝试将音频格式与麦克风(16位,44100Hz,立体声)的确切规格相匹配,但没有任何区别.
问题出在这里:
final TargetDataLine line = (TargetDataLine)
mixer.getLine(info);
Run Code Online (Sandbox Code Playgroud)
似乎混音器和TargetDataLine彼此不喜欢.有没有办法让这两个人"匹配"并相处?
我正在使用的麦克风确实有点奇怪.它们被用于名为SingStar的卡拉OK视频游戏中.麦克风本身具有标准的单声道输入连接器,插入一个小集线器(两个到集线器),将它们转换为单个公头usb连接器.但是,除了陌生之外,它们似乎与Audacity一起作为单独的频道完美地工作,所以用它们进行多声道录音显然是可能的,也许不是用Java.
我还考虑使用像Soundflower这样的程序,在不同程序之间共享音频.但是,我不确定这是否会起作用,因为我无法看到如何将USB麦克风输入到Soundflower,然后将它们传输到Java中.一个快速的实验告诉我,我可以从麦克风中录制Audacity中的音频,通过Soundflower将其输出,然后在我的Java程序中处理.不过,我想要做的就是让它全部用Java实现.
有人熟悉这类问题吗?
我有这个简单的声明:
SELECT idnumber FROM dbo.database WHERE number = '9823474'
Run Code Online (Sandbox Code Playgroud)
如果表中的任何位置都不存在该数字,则会失败.我想在这个声明中添加一些内容:
如果没有记录,则返回NULL,不要行.
有什么建议?
有关如何从DynamoDB表中随机选择项目/记录的任何想法?我不相信API中有任何相关规定.
我想维护一个NumericId | MyOtherKey("NumericIdTable")表,然后生成一个介于0和我拥有的记录总数之间的随机数,然后从NumericIdTable获取该项,但从长远来看它不会起作用.
欢迎思想/想法.
我创建了一个iPhone应用程序来记录我们的声音.当我尝试录制时,我收到以下声明中的错误消息.
recorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:&err];
Run Code Online (Sandbox Code Playgroud)
错误域= NSOSStatusErrorDomain代码= 1718449215"操作无法完成.(OSStatus错误1718449215.)"
如果我试图在.caf文件中记录,它工作正常.如果我尝试使用.m4a,我收到此错误消息.
请帮我解决一下.
谢谢.
基本问题:在选择使用类或使用记录(具有多态字段)时,应该遵循哪些设计原则?
首先,我们知道类和记录本质上是等价的(因为在Core中,类被去掉了字典,这只是记录).然而,存在差异:类是隐式传递的,记录必须是显式的.
更深入一点,在以下情况下,课程非常有用:
当我们(仅参数多态)只有一个数据表示时,类很尴尬,但我们有多个实例.如果我们不想打开各种麻烦的扩展(即,我们知道这些标记在运行时被删除),这导致了必须使用newtype添加额外标记(仅存在于我们的代码中,因为我们知道此类标记在运行时被删除)的语法噪音(即重叠和/或不可判定的实例).
当然,事情变得更加混乱:如果我想对我的类型有限制怎么办?让我们选一个真实的例子:
class (Bounded i, Enum i) => Partition a i where
index :: a -> i
Run Code Online (Sandbox Code Playgroud)
我可以很容易地完成
data Partition a i = Partition { index :: a -> i}
Run Code Online (Sandbox Code Playgroud)
但现在我已经失去了约束,我将不得不将它们添加到特定的功能中.
是否有设计指南可以帮助我?