小编Dio*_*lor的帖子

Pymongo 在子文档中按 _id 查找

假设我的数据库的这一项:

{"_id" : ObjectID("526fdde0ef501a7b0a51270e"),
  "info": "foo",
  "status": true,
  "subitems : [ {"subitem_id" : ObjectID("65sfdde0ef501a7b0a51e270"),
                 //more},
                {....}
              ],
  //more
}
Run Code Online (Sandbox Code Playgroud)

我想找到(或 find_one,没关系)带有"subitems.subitem_id" : xxx.

我已经尝试过以下方法。它们都返回一个空列表。

from pymongo import MongoClient,errors
from bson.objectid import ObjectId

id = '65sfdde0ef501a7b0a51e270'

db.col.find({"subitems.subitem_id" : id } ) #obviously wrong
db.col.find({"subitems.subitem_id" : Objectid(id) })
db.col.find({"subitems.subitem_id" : {"$oid":id} })
db.col.find({"subitems.subitem_id.$oid" : id })
db.col.find({"subitems.$.subitem_id" : Objectid(id) })
Run Code Online (Sandbox Code Playgroud)

然而在 mongoshell 中,这个是有效的:

find({"subitems.subitem_id" : { "$oid" : "65sfdde0ef501a7b0a51e270" } })
Run Code Online (Sandbox Code Playgroud)

python mongodb pymongo

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

ListView(适配器)项可见性侦听器

是否可以在每个listview的项目上都有一个可见性监听器?喜欢:在用户看到项目时,做一些事情.项目被隐藏,做其他事情.

我想检查项目"进入"或"退出"滚动的时间,以便更新第二个列表.

另外我的ListView可能会扩展如下:

adapter.addAll(  (Collection<? extends DBObject>) events);
adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

我认为一种方法可能是使用全局监听器来检查项目,但是如果我向ListView添加更多项目(上图),我担心它会搞砸.我还没有完成任何事情

eventList.setOnScrollListener(new OnScrollListener() {

        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

        }

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {}
});
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter android-listview android-adapter

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

android:stackFromBottom ="true"似乎不能正常工作(反向ListView与适配器)

好吧,让我解释一下"不能完美运作"的含义.

我有一个没有android:stackFromBottom="true"参数的listview .我也有一个常规的ArrayAdapter getItem(position).我打电话给我的网络服务器,获取asc日期订单的数据.

这样,列表中位置0(顶部)的项目具有最小的日期.我可以滚动顶部 - >底部.好.

我添加了android:stackFromBottom,现在我看到现在你可以从bottom-> top开始scolling但是位置0的项目仍然是顶级项目并且具有最小的日期.所以适配器没有改变它的顺序.

解决此问题的唯一方法是更改getItem(getCount()-1-position)适配器内部.但是我添加并通知适配器,适配器仍然会将项目添加到底部.

我猜结构是ListView -> Adapter -> Row Views如此无论stackFromBottom价值,只有一个孩子,适配器.对?

无论如何,如何使用适配器的ListView以相反的顺序?

android android-listview android-adapter android-adapterview

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

Proguard 保留公共类、字段和方法

我使用 Kotlin 并且我有很多内部类。我想混淆和缩小所有public类之外的所有内容。

Proguard 规则:

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose

-optimizationpasses 5
-overloadaggressively
-repackageclasses ''
-allowaccessmodification

-keep public class * {
    public <methods>;
    public <fields>;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它的-keep public class *行为具有防御性并保留所有名称,也用于内部类。

proguard kotlin android-proguard

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

在 kotlin js 中加载资源文件(json)

鉴于此代码,我应该将 file.json 放在哪里才能在运行时中找到?

// path: src/main/kotlin/Server.kt
fun main() {
  val serviceAccount = require("file.json")
}
Run Code Online (Sandbox Code Playgroud)

我试着把它放在 src/main/resources/ 下,但没有运气。我还使用 Gradle 将 kotlin 编译为带有kotlin2js插件的js 。

kotlin kotlin-js-interop kotlin-multiplatform kotlin-js kotlin2js

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

使用{%static%}进行Django压缩

我正在努力使django压缩工作,但我相信它不起作用因为我的{% static %}使用.

我的模板是(我正在使用pyjade,但无关紧要):

- load staticfiles
- load compress

| {% compress css %}
link(rel="stylesheet", href="{% static 'less/bootstrap.css' %} ")
link(rel="stylesheet", href="{% static 'timepicker/css/bootstrap-timepicker.min.css'%}")
link(rel="stylesheet", href="{% static 'leaflet/addons/locatecontrol/L.Control.Locate.css' %} ")
link(rel="stylesheet", href="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.css")
link(href='//api.tiles.mapbox.com/mapbox.js/v1.3.1/mapbox.css', rel='stylesheet')
| {% endcompress %}
Run Code Online (Sandbox Code Playgroud)

还是我的settings.py的一部分:

PROJECT_DIR = os.path.dirname(os.path.realpath(__file__))

STATIC_ROOT = os.path.join(PROJECT_DIR, '../static')
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(PROJECT_DIR, 'media'),
)

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    #'django.contrib.staticfiles.finders.DefaultStorageFinder',
    'compressor.finders.CompressorFinder',
)

COMPRESS_URL = STATIC_URL
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_STORAGE = "staticfiles.storage.StaticFileStorage"

INSTALLED_APPS = (....,'compressor',....)
Run Code Online (Sandbox Code Playgroud)

即使我$ …

django django-static django-staticfiles django-compressor

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

Mongoengine Document.update()示例

假设Venue是:

from mongoengine import *
from mongoengine_extras.fields import  AutoSlugField
class Venue(Document):
    name = StringField(required=True)
    venue_slug = AutoSlugField()
Run Code Online (Sandbox Code Playgroud)

我想根据名称更新所有的venue_slug字段.我尝试:

for v in Venue.objects():
    v(venue_slug = str(v.name)).update()
Run Code Online (Sandbox Code Playgroud)

但我得到:

v(venue_slug = str(v.name)).update()
TypeError: Error when calling the metaclass bases
'Venue' object is not callable
Run Code Online (Sandbox Code Playgroud)

我的更新功能是否正确?如果您不熟悉,AutoSlugField()可以为StringField()更新编写示例吗?

mongoengine

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

城市Geojson多边形数据库/库或API

我有一个带lat/long标记的MongoDB数据库,我需要另一个包含城市或区域级边界的数据库(或其他解决方案).如果在Geojson多边形中它会是最佳的.

我有一个名为city的字段(例如'city' : 'New York'),但我想缩小到城市的区域/社区级别,例如"Soho".以这种方式解决问题的想法是基于谷歌的新地图.如果我们输入区域或邮政编码,我们会看到该区域的红点多边形.

在此输入图像描述

我看到了Maxmind的数据库,但每个城市没有边界.

到目前为止,我最好的解决方案是使用Google的Geocoding API返回一个框的边界:

例如:http://maps.googleapis.com/maps/api/geocode/json?address = soho&_sensor = false

结果:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "SoHo",
               "short_name" : "SoHo",
               "types" : [ "neighborhood", "political" ]
            },
            {
               "long_name" : "Manhattan",
               "short_name" : "Manhattan",
               "types" : [ "sublocality", "political" ]
            },
            {
               "long_name" : "New York",
               "short_name" : "New York",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "New York", …
Run Code Online (Sandbox Code Playgroud)

google-maps geocoding polygons geojson google-maps-api-3

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

以编程方式设置textview焦点颜色/更改主题中的焦点颜色

1)是否可以以编程方式设置TextView的颜色?如果是这样,最简单的方法是什么?

我想要其他其他东西,默认4.0+浅蓝色.

我发现并尝试了以下代码但没有成功:

StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed}, new ColorDrawable(0x1A000000));
states.addState(new int[] {android.R.attr.state_focused}, new ColorDrawable(0x1A000000));

if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
    tv.setBackgroundDrawable(states);
} else {
    tv.setBackground(states);
}
Run Code Online (Sandbox Code Playgroud)

我不希望涉及任何XML.

2)我可以更改主题中的焦点颜色吗?如果有,怎么样?

XML在这里显然很好.

android textview android-layout android-view

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

docker 中的 Gitlab 运行程序 '$ yes | true' 返回并退出 1

在 .gitlab-ci.yml 中运行此命令:

task:
  script:
    - yes | true
    - yes | someOtherCommandWhichNeedsYOrN
Run Code Online (Sandbox Code Playgroud)

返回:

$ yes | true
ERROR: Job failed: exit status 1
Run Code Online (Sandbox Code Playgroud)

任何线索,为什么会发生这种情况或如何调试的想法?

设置:在 docker 中运行 Gitlab

bash shell gitlab docker gitlab-ci-runner

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