小编Mar*_*ele的帖子

Django为从Model生成的ModelForm添加额外的字段

我必须从模型生成一个FormSet,但我需要在每个表单中插入一个"额外值".

具体来说,我有一个JApplet在图像上生成一些标记和路径,并在服务器上发布它.

在我的模型中,线条由两个标记组成.但是当我发布它时,因为我正在使用从JApplet而不是从数据库生成的id,我不知道将从哪个Markers创建路径.

所以我想在表单上的Marker上插入一个"临时id",并在保存Path之前在视图中做正确的安排.

我想为标记定义一个自定义表单,但它似乎不是很干,如果我更改Marker模型,我不想再回到这个状态.

这是表格:

  class PointForm(forms.ModelForm):
    temp_id = forms.IntegerField()
    class Meta:
            model = Point

    def clean(self):
            if any(self.errors):
                    # Don't bother validating the formset unless each form is valid on its own
                    return

            ingresso = self.cleaned_data['ingresso']
            ascensore = self.cleaned_data['ascensore']
            scala = self.cleaned_data['scala']

            if (ingresso and ascensore) or (ingresso and scala) or (ascensore and scala):
                    raise forms.ValidationError("A stair cannot be a elevator or an access!!!") 
            return self

    def save(commit=True):
    # do something with self.cleaned_data['temp_id']
            super(PointForm).save(commit=commit)
Run Code Online (Sandbox Code Playgroud)

而型号:

  class Point(models.Model):

    RFID …
Run Code Online (Sandbox Code Playgroud)

django django-forms japplet

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

Spark,优化DF的度量生成

这是一个优化问题,这是我目前的(工作)情况:

  • Spark使用spark-jobserver以独立模式运行;
  • 我有一个镶木地板文件,其中约有3M行作为一张表缓存在内存中;
  • 该表是来自电子商务网站的所有数据的综合表,每行代表一个用户,但用户可以拥有更多行;

客户端请求是执行SQL查询,并将结果显示在某些表的网页上,每个表都代表一个带计数器的指标,如:

年龄=> 18-20:15位用户,21-35位:42位用户,......

国家=>美国:22个用户,GB:0个用户,......

等等.计算所有表(以及一些关于用户会话,基于活动,期间和年份生成的会话),我们目前有约200个指标.

生产中最后发布的系统使用(将df视为SQL查询产生的DataFrame):

df.rdd.aggregate(metricsMap) (

      (acc: MetricsMap, r:Row) => {
        acc.analyzeRow(r)
        acc
      },

      (acc1: MetricsMap, acc2: MetricsMap) => {
        acc1.merge(acc2)
        acc1
      }
    ) 
Run Code Online (Sandbox Code Playgroud)

其中MetricsMap是用于提取和从行聚合数据的对象.

此操作非常占用CPU,并且在服务器上从没有参数的查询中提取数据需要大约20秒(因此来自镶木地板文件中的所有数据).

我决定使用聚合,因为对于他们的统计分析,他们想要多个预期:一些指标应该由用户密钥计数,另一个指标用户名(对于网站......)和另一个按产品密钥计算.使用这种方法我只需要循环一次结果,但我不知道这是否是更好的方法......

这是更好的方法,还是存在一些其他(更快)的方法来获得相同的结果?

关于预先计算度量的问题,他们可以对数据集进行的查询没有约束,所以我不知道这是否可能......你能举个例子吗?

回答一些问题

optimization aggregate apache-spark

10
推荐指数
1
解决办法
253
查看次数

Android ListView setSelectionFromTop无效

我创建了一个动态ListView,其中从顶部添加对象.

当用户按下按钮时,listView将从数组的内容更新,然后在自定义arrayAdapter上调用notifyDataSetChanged().

现在我想在添加时保留列表位置,所以我添加了这段代码:

        // pausedCounter trace the number of objects(lines) to add to the listView
        int idx = listView.getFirstVisiblePosition() + pausedCounter;
        View first = listView.getChildAt(0);
        int position = 0;

        if (first != null)
            position = first.getTop();

        // cycle to add the new objects to the listView
        for (Tweet[] tweets1 : pausedTweets)
            super.updateTweets(tweets1);


        listView.setSelectionFromTop(idx, position);

        // reset of counter and accumulator
        pausedTweets = new ArrayList<Tweet[]>();
        pausedCounter = 0;
Run Code Online (Sandbox Code Playgroud)

此代码以这种方式运行:如果getFirstVisiblePosition返回2,并且pausedCounter为5,则在更新之后,列表将被设置为新五个元素的第3个.

我想要的是将列表的第一个可见元素设置为8.

经过进一步的测试后,我发现listView的子节点数在这段代码的运行过程中没有变化,所以我调用setSelectionFromTop 它会更新listView的大小.可能是这个问题?

android listview

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

Android在应用程序启动时以编程方式更改windowBackground

我很清楚如何使用manifest中的主题和标签windowBackground来设置Android中活动的启动.

最近,一位客户表示要"根据白天的某些事件更改启动画面".我几乎可以肯定它无法完成,但我决定用这段代码来试一试:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        int random = (int) Math.abs(System.currentTimeMillis() % 3);

        switch (random) {

            case 0:
                setTheme(R.style.FullscreenTheme1);
                break;

            case 1:
                setTheme(R.style.FullscreenTheme2);
                break;

            default:
                setTheme(R.style.FullscreenTheme3);
                break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

显然这不起作用.

有人已经试图帮助这个或有更好的主意吗?

谢谢

编辑:

创建一个虚假的活动或片段以显示为启动画面将很容易,但在应用程序启动时会留下令人不快的白色(或黑色取决于主题)闪烁.

这个问题是关于以编程方式更改启动画面的可行性,其结果与在清单中对其进行硬编码相同.

android splash-screen

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

将 MySQL 表转换为镶木地板时出现 Spark 异常

我正在尝试使用 spark 1.6.2 将 MySQL 远程表转换为镶木地板文件。

该过程运行 10 分钟,填满内存,然后从以下消息开始:

WARN NettyRpcEndpointRef: Error sending message [message = Heartbeat(driver,[Lscala.Tuple2;@dac44da,BlockManagerId(driver, localhost, 46158))] in 1 attempts
org.apache.spark.rpc.RpcTimeoutException: Futures timed out after [10 seconds]. This timeout is controlled by spark.executor.heartbeatInterval
Run Code Online (Sandbox Code Playgroud)

最后失败并出现此错误:

ERROR ActorSystemImpl: Uncaught fatal error from thread [sparkDriverActorSystem-scheduler-1] shutting down ActorSystem [sparkDriverActorSystem]
java.lang.OutOfMemoryError: GC overhead limit exceeded
Run Code Online (Sandbox Code Playgroud)

我使用以下命令在 spark-shell 中运行它:

spark-shell --packages mysql:mysql-connector-java:5.1.26 org.slf4j:slf4j-simple:1.7.21 --driver-memory 12G

val dataframe_mysql = sqlContext.read.format("jdbc").option("url", "jdbc:mysql://.../table").option("driver", "com.mysql.jdbc.Driver").option("dbtable", "...").option("user", "...").option("password", "...").load()

dataframe_mysql.saveAsParquetFile("name.parquet")
Run Code Online (Sandbox Code Playgroud)

我将最大执行程序内存限制为 12G。有没有办法强制将镶木地板文件写入“小”块以释放内存?

apache-spark parquet apache-spark-sql

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

GeoDjango PointField输入

这可能是一个愚蠢的问题,但我还没有找到答案.我实现了GeoDjango和一个PointField,所以在管理页面我尝试创建一个新对象,但它总是告诉我坐标不正确,页面上有一个像textfield这样的字段,但我不知道是哪种格式适合坐标.

我必须隐藏此字段以插入来自谷歌地图的坐标,但如果我不知道格式......那就很难了.

对所有人都有好感.

django point geodjango

4
推荐指数
1
解决办法
2909
查看次数

Ruby on rails,cancan和默认角色分配

我已经构建了一个小的ruby webservice,在此我已经实现了cancan授权.

我按照本教程.问题是,当他们向我的网站注册基本角色级别时,我找不到向用户分配的方式.

我发现用复选框做这个,但这不是我想要的.我的想法是将这个赋值直接放入registrations_controller中,但是我没能保存这个角色.

我希望有人可以帮助我.

谢谢.

default roles role cancan ruby-on-rails-3

3
推荐指数
1
解决办法
3321
查看次数

如何在两个其他点之间找到地理点

对于我的应用程序,我必须在谷歌地图上找到一个点的位置,只知道它位于其他2个点和捕获坐标的时间(以毫秒为单位)之间.

在我的代码中,假设A和B为给定点,X为要查找的点,I:

  1. 计算A和B之间的距离

  2. 根据时间我发现从A到B的速度(以微米/毫秒为单位)

  3. 我找到了从A点到X点的距离(使用时间和速度)

  4. 使用类似的三角形规则,我从点A计算点X的纬度和经度

此工作流程会在地图上显示错误,因此,X标记通常不在A和B标记之间.

我怎样才能使它更好用?它是地球球形的一个问题吗?

谢谢你们.

这是代码:

    int ax = oldPoint.getLatitude();
    int ay = oldPoint.getLongitude();

    int bx = currentPoint.getLatitude();
    int by = currentPoint.getLongitude();

    long at = oldPoint.getDataRilevamento(); //get time first point
    long bt = currentPoint.getDataRilevamento(); // get time second point
    long xt = x.getDate(); // time of point to find

    int c1 = bx-ax;
    int c2 = by-ay;
    double hyp =  Math.sqrt(Math.pow(c1, 2) + Math.pow(c2, 2));

    double vel = hyp / (bt-at);

    double pos = vel*(xt - …
Run Code Online (Sandbox Code Playgroud)

java maps android latitude-longitude

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

Django NoReverseMatch 5

我收到了这个错误,我不知道为什么:

  Reverse for 'buildings.views.generate' with arguments '()' and keyword arguments '{'new_id': -1}' not found.
Run Code Online (Sandbox Code Playgroud)

这是我的urls.py(的一部分):

  url(r'^buildings/generate/new_building(?P<new_id>\d+)', 'buildings.views.generate'),
Run Code Online (Sandbox Code Playgroud)

风景:

  @login_required
  def generate(request, new_id):
          session = {}

          if new_id == -1:
                  other_buildings = Building.objects.filter(utente=request.user, pronto=False)

                  if other_buildings.length > MAX_TEMPORARY_BUILDINGS:
                          return redirect('buildings.views.index')
                  else:
                          building = Building(utente=request.user, pronto=False)
                          building.save()
                          return redirect('buildings.views.generate', building_id=building)

          elif new_id >=0:

                  building = Building.objects.filter(pk=new_id)

                  if building.utente != request.user:
                          raise Http404
                  elif building.pronto:
                          return redirect('buildings.views.detail', building_id=new_id)
                  elif building.nome == None:
                          buildings= Building.objects.filter(pronto=True).order_by('utente')
                          session['buildings'] = buildings

                  session['building'] = building                        
          else:
                  raise Http404 …
Run Code Online (Sandbox Code Playgroud)

django reverse

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