小编src*_*091的帖子

在mongodb中更新嵌套数组

我在mongodb中有一个文档,我需要更新2层深度嵌套的对象数组,如下所示:

{
    id: 1,
    items: [
        {
            id: 2,
            blocks: [
                {
                    id: 3
                    txt: 'hello'
                }
            ]
        }
    ] 
}
Run Code Online (Sandbox Code Playgroud)

如果只有一个级别的深度数组,我可以使用位置运算符来更新其中的对象,但对于第二级,我唯一的选择是使用位置运算符和嵌套对象的索引,如下所示:

db.objects.update({'items.id': 2}, {'$set': {'items.$.blocks.0.txt': 'hi'}})
Run Code Online (Sandbox Code Playgroud)

这种方法有效,但对我来说似乎很危险,因为我正在构建一个Web服务,索引号应该来自客户端,它可以发送100000作为索引,这将迫使mongodb创建一个具有空值的100000索引的数组.

有没有其他方法来更新这样的嵌套对象,我可以引用对象的ID而不是它的位置,或者可能是在查询中使用它之前检查提供的索引是否超出范围的方法?

arrays nested mongodb

44
推荐指数
2
解决办法
3万
查看次数

在Slick中查看SQL查询

有没有办法观察将由Query?生成的SQL语句?
例如,我有这个:
val q = actions.filter(v => v.actionHash === hash && v.carriedAt > past)
我可以查看其底层原始SQL吗?

sql scala slick

39
推荐指数
2
解决办法
2万
查看次数

在Scala中定期运行函数

我想每秒调用一个任意函数n.基本上我想SetInterval从Javascript中获得相同的东西.我怎样才能在Scala中实现这一目标?

scala period intervals

33
推荐指数
4
解决办法
2万
查看次数

使用Scala接收和发送电子邮件

我打算使用Scala和Akka构建一个服务,它将严重依赖于电子邮件.事实上,与我的服务进行的大多数沟通都将通过发送信件并获得回复来完成.我想这意味着我需要一个可靠的电子邮件服务器以及与Scala通信的方式.

问题是,这样做的最佳做法是什么?我应该选择哪种电子邮件服务器以及用于完成此任务的Scala解决方案?

email scala mail-server

15
推荐指数
2
解决办法
2万
查看次数

具有许多属性的类的装饰器模式

我有这个简单的课程:

public class DataBag
{
    public string UserControl { get; set; }
    public string LoadMethod { get; set; }
    public dynamic Params { get; set; }
    public int Height { get; set; }

    public DataBag(string Control, 
        object vars, string lm)
    {
        UserControl = Control;
        LoadMethod = lm;
        Params = vars;
        Height = 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我想为它创建一个装饰器,它会添加一堆自己的属性.问题是提供访问装饰属性的最简洁和优雅的方法是什么?

到目前为止,我有两个选择:要么我提供了一个get-set在装饰一对,每四个装饰性(至极似乎tideous和拗口,基本上这是我想避免的)或我继承DataBagDynamicObject,然后以某种方式管理使用获得装饰性TryGetMember方法(这是动态的,似乎不是在C#中做事的正确方法.

有什么建议?

c# properties decorator

11
推荐指数
1
解决办法
7527
查看次数

通过拨打号码启动活动

我已经创建了一个合适的BoradcastReceiver,注册它Manifest.xml,这是我的问题:如果我的应用程序已经启动并挂在后台,那么拨打一个数字会把它带到前面.如果尚未启动,则拨打号码将无效.
我怎样才能解决这个问题?如果这很重要的话,我会在小米Mi4上用MIUI6进行测试.

这是代码(我使用Scala):

manifest.xml文件:

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
...
<receiver android:name="DialerGate" android:enabled="true" android:exported="true">
            <intent-filter android:priority="1">
                <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
            </intent-filter>
        </receiver>
Run Code Online (Sandbox Code Playgroud)

广播接收器:

class DialerGate extends BroadcastReceiver {
  def onReceive(context: Context, intent: Intent) =
    if (intent.getAction equals Intent.ACTION_NEW_OUTGOING_CALL) {
      val phoneno = intent.getExtras getString Intent.EXTRA_PHONE_NUMBER
      val prefs = context.getSharedPreferences("prefs", Context.MODE_PRIVATE)
      val number = prefs.getString(AbstractKit.LAUNCH_NUMBER, null)

      Log.d("WALLET-PHONE", s"Dialed number: $phoneno, saved number: $number")
      Log.d("WALLET-PHONE-OK", (number == phoneno).toString)

      val i = new Intent
      i.setClassName("com.app.wallet", "com.app.wallet.MainActivity")
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP)

      val appContext = …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver

9
推荐指数
1
解决办法
1772
查看次数

通过连接包含的元素合并两个Json.NET数组

我有两个JToken代表JSON对象数组,我想合并它们.JToken有一个方法,但当我尝试使用它时Concat它会产生null结果.

Action<JToken> Ok = (x) =>
{
    Debug.WriteLine(x);
    /* outputs
    [
      {
        "id": 1,
      },
      {
        "id": 2,
      }
    ]
    */

    x = (x).Concat<JToken>(x) as JToken;
    Debug.WriteLine(x); // null
};
Run Code Online (Sandbox Code Playgroud)

我怎样才能使它工作?

c# json json.net

7
推荐指数
2
解决办法
1万
查看次数

我可以传递任意数量的命名参数来在C#中运行吗?

**kwargs在C#中是否存在某种类似Python的东西?我希望能够将可变数量的命名参数传递给functon,然后将它们作为类似于字典的内部函数并循环遍历它们.

c# function named-parameters

6
推荐指数
1
解决办法
4814
查看次数

封装在ScrollViewer中时,LongListSelector的性能非常糟糕

我有一个UserControl需要在顶部和LongListSelector下面包含一堆控件.整体的总高度UserControl可能(并且几乎总是会)超过屏幕高度,在这种情况下,整体UserControl必须是可滚动的.

我目前的设置如下:

<staff:UserContentControl 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:controls="clr-namespace:MyApp.Controls"
    xmlns:staff="clr-namespace:MyApp.Helpers"
    x:Class="MyApp.Controls.RemoteHomePage"

    DataContext="{Binding RelativeSource={RelativeSource Self}}"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}">

    <ScrollViewer>
        <ScrollViewer.Content>
            <StackPanel>
                <TextBlock Txt="Text1" Sign="@" />
                <TextBlock Txt="Text2" Sign="#" />
                <controls:Divider />

                <TextBlock Txt="Text3" Sign="~" />
                <TextBlock Txt="Text4" Sign="~" />
                <controls:TextDivider Text="Divider text" />

                <phone:LongListSelector ItemsSource="{Binding Items}">
                    <phone:LongListSelector.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Title}" />
                        </DataTemplate>
                    </phone:LongListSelector.ItemTemplate>
                </phone:LongListSelector>
            </StackPanel>
        </ScrollViewer.Content>
    </ScrollViewer>
</staff:UserContentControl>
Run Code Online (Sandbox Code Playgroud)

这个解决方案满足了我的需求,但也存在一个很大的问题:LongListSelector当它包含的项目数量相当大时,目前需要花费很多时间来加载.处理300个项目需要8秒钟,在此期间整个UI都被阻止.如果我删除所有内容,但是LongListSelector,如下:

<staff:UserContentControl 
    ...>

    <phone:LongListSelector ItemsSource="{Binding Items}">
        <phone:LongListSelector.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding …
Run Code Online (Sandbox Code Playgroud)

performance xaml longlistselector windows-phone-8

5
推荐指数
1
解决办法
1863
查看次数

LongListMultiSelector中项之间的空格

在我LongListMultiSelector,我如何在项目之间设置一个垂直空间,使其不被选择矩形覆盖?只需在下面的XAML中添加一个边距,就会有矩形覆盖的边距.

<toolkit:LongListMultiSelector ItemsSource="{Binding Items}">
    <toolkit:LongListMultiSelector.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="Some Text" Margin="0,0,0,50" />
        </DataTemplate>
    </toolkit:LongListMultiSelector.ItemTemplate>
</toolkit:LongListMultiSelector>
Run Code Online (Sandbox Code Playgroud)

我尝试选择项目时显示其行为方式的图片.(注意蓝色矩形) 在此输入图像描述

下面是一个标准邮件应用程序的示例,其中项目有一些空间,但选择矩形不覆盖它.(这就是我要的)
在此输入图像描述

xaml windows-phone-8

5
推荐指数
1
解决办法
2598
查看次数