小编Ami*_*thi的帖子

如何使用git bisect?

我读过一些文章说这git bisect很棒,但我不是母语,我不明白为什么它很棒.

你能否在一些代码示例上展示一下它的惊人之处?它就像svn blame

git git-bisect

416
推荐指数
6
解决办法
8万
查看次数

在Scrapy中发送发布请求

我正在尝试从Google Play商店抓取最新评论,但我需要发帖请求以获取最新评论.

随着邮差它的工作,我得到了理想的回应.

在此输入图像描述

但终端中的post请求给我一个服务器错误

例如:对于此页面https://play.google.com/store/apps/details?id=com.supercell.boombeach

curl -H "Content-Type: application/json" -X POST -d '{"id": "com.supercell.boombeach", "reviewType": '0', "reviewSortOrder": '0', "pageNum":'0'}' https://play.google.com/store/getreviews
Run Code Online (Sandbox Code Playgroud)

给出了服务器错误

Scrapy只是忽略了这一行:

frmdata = {"id": "com.supercell.boombeach", "reviewType": 0, "reviewSortOrder": 0, "pageNum":0}
        url = "https://play.google.com/store/getreviews"
        yield Request(url, callback=self.parse, method="POST", body=urllib.urlencode(frmdata))
Run Code Online (Sandbox Code Playgroud)

python web-crawler scrapy python-2.7

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

MySQL"不在"Elasticsearch中的查询

我想SELECT * FROM myindex where _id not in (1, 2, 3)在Elasticsearch中实现类似的功能.一种方法是:

{
    "from": 0,
    "size": 200,
    "query": {
        "bool": {
            "must": {
                "bool": {
                    "must_not": {
                        "bool": {
                            "should": [
                                {
                                    "match": {
                                        "_id": {
                                            "query": 1,
                                            "type": "phrase"
                                        }
                                    }
                                },
                                {
                                    "match": {
                                        "_id": {
                                            "query": 2,
                                            "type": "phrase"
                                        }
                                    }
                                },
                                {
                                    "match": {
                                        "_id": {
                                            "query": 3,
                                            "type": "phrase"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这种方法不适用于大型数组,因为这将是一个巨大的查询.有一个更好的方法吗?

elasticsearch

12
推荐指数
2
解决办法
3975
查看次数

RESTful Web请求和用户活动跟踪网站

几天前有人问我这个问题我没有答案:

因为HTTP是无状态协议.当我们打开www.google.com时,它可以被称为REST呼叫吗?

我的想法:

当我们在google.com上进行搜索时,所有信息都会通过Cookie和网址参数传递.它看起来像一个无国籍的请求.但搜索结果并不独立于用户的过去请求.搜索结果特定于用户兴趣和行为.现在,它看起来不像无状态请求.

我知道这是一个老问题,我已经阅读了许多SO答案,例如为什么HTTP是无状态协议?但我仍然无法理解在谷歌或亚马逊(基于过去购买的推荐)或任何其他基于用户活动的推荐网站上跟踪用户活动时会发生什么.

它是RESTful还是RESTless?

如果我想创建一个Web应用程序,我在其中使用REST架构并仍提供特定于用户的响应,该怎么办?

rest http stateless

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

在多进程中共享异步 - 等待基于协同程序的复杂对象

我一般都知道,不应该在多进程之间共享对象以及可能由此产生的问题.但我的要求是必须这样做.

我有一个复杂的对象,其中包含所有漂亮的协同程序async-await.一个函数,它在自己的单独进程中对此对象运行长时间运行的进程.现在,我想在主进程中运行一个IPython shell,并对这个复杂对象进行操作,而长时间运行的进程正在另一个进程中运行.

为了跨进程共享这个复杂的对象,我尝试了在SO上遇到的多处理BaseManager方法:

import multiprocessing
import multiprocessing.managers as m


class MyManager(m.BaseManager):
    pass

MyManager.register('complex_asynio_based_class', complex_asynio_based_class)
manager = MyManager()
manager.start()
c = manager.complex_asynio_based_class()

process = multiprocessing.Process(
     target=long_running_process,
     args=(c,),
)
Run Code Online (Sandbox Code Playgroud)

但这会给出错误:

Unserializable message: Traceback (most recent call last):
  File "/usr/3.6/lib/python3.6/multiprocessing/managers.py", line 283, in serve_client
    send(msg)
  File "/usr/3.6/lib/python3.6/multiprocessing/connection.py", line 206, in send
    self._send_bytes(_ForkingPickler.dumps(obj))
  File "/usr/3.6/lib/python3.6/multiprocessing/reduction.py", line 51, in dumps
    cls(buf, protocol).dump(obj)
TypeError: can't pickle coroutine objects
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为对象中有协同程序.我无法想出一个更好的解决方案来让它工作,我坚持下去.

如果它不是Python,我会为长时间运行的进程生成一个线程,并且仍然可以对它进行操作.

如果我没有错,这应该是多进程应用程序运行后台进程的常用模式,以及只对它执行一些只读操作的主进程,就像我的情况一样,而不是修改它.我想知道它是如何完成的?

在多进程中如何共享无法拾取的复杂对象?

python asynchronous multiprocessing python-3.x python-asyncio

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

Python librdkafka生产者针对本机Apache Kafka生产者执行

我正在针对Python的confluent-kafka使用本地Java实现对Apache Kafka Producer进行测试,以查看哪个具有最大吞吐量。

我正在使用docker-compose部署一个包含3个Kafka代理和3个zookeeper实例的Kafka集群。我的docker撰写文件:https : //paste.fedoraproject.org/paste/bn7rr2~YRuIihZ06O3Q6vw/raw

这是一个非常简单的代码,其中包含Python confluent-kafka的大多数默认选项,并且在Java生产者中进行了一些配置更改,以匹配confluent-kafka的配置。

Python代码:

from confluent_kafka import Producer

producer = Producer({'bootstrap.servers': 'kafka-1:19092,kafka-2:29092,kafka-3:39092', 'linger.ms': 300, "max.in.flight.requests.per.connection": 1000000, "queue.buffering.max.kbytes": 1048576, "message.max.bytes": 1000000,
    'default.topic.config': {'acks': "all"}})

ss = '0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357'

def f():
    import time
    start = time.time()
    for i in xrange(1000000):
        try:
            producer.produce('test-topic', ss)
        except Exception:
            producer.poll(1)
            try:
                producer.produce('test-topic', ss)
            except Exception:
                producer.flush(30)
                producer.produce('test-topic', ss)
        producer.poll(0)
    producer.flush(30)
    print(time.time() - start)


if __name__ == '__main__':
    f()
Run Code Online (Sandbox Code Playgroud)

Java实现。配置与librdkafka中的config相同。按照Edenhill的建议更改了linger.ms和回调。

package com.amit.kafka;

import org.apache.kafka.clients.producer.*;
import org.apache.kafka.common.serialization.LongSerializer;
import org.apache.kafka.common.serialization.StringSerializer;

import java.nio.charset.Charset;
import java.util.Properties; …
Run Code Online (Sandbox Code Playgroud)

apache-kafka kafka-producer-api confluent-kafka librdkafka

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

Android getActionBar vs getSupportActionBar?

这是我的代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){

    //android.support.v7.app.ActionBar actionBar = getSupportActionBar();
    //actionBar.setTitle("Android");

    ActionBar actionBar = getActionBar();
    actionBar.setTitle("Droid");
}
Run Code Online (Sandbox Code Playgroud)

在使用getSupportActionBar()时,我的应用程序与kitkat和其他新版本运行良好,但使用getActionBar导致错误.

这是错误:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.hide()' on a null object reference
            at com.github.domain.geoquiz.QuizActivity.onCreate(QuizActivity.java:57)
            at android.app.Activity.performCreate(Activity.java:5933)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372
Run Code Online (Sandbox Code Playgroud)

为什么?来自android文档:

警告:确保从相应的包中导入ActionBar类(和相关的API):

如果支持的API级别低于11:import android.support.v7.app.ActionBar

如果仅支持API级别11及更高级别:import android.app.ActionBar

现在为什么这个应用程序崩溃了?

android android-actionbar

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

Kafka-python检索主题列表

我正在使用kafka-python,我想知道是否有办法显示所有主题.

像这样的东西:

./bin/kafka-topics.sh --list --zookeeper localhost:2181
Run Code Online (Sandbox Code Playgroud)

python python-2.7 apache-kafka apache-zookeeper

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

gob.Register方法的目的

我已经阅读了(gob)的文档,我遇到了一些问题:

现在我知道如何对结构和解码进行编码:

func main() {
s1 := &S{
    Field1: "Hello Gob",
    Field2: 999,
}
log.Println("Original value:", s1)
buf := new(bytes.Buffer)
err := gob.NewEncoder(buf).Encode(s1)
if err != nil {
    log.Println("Encode:", err)
    return
}

s2 := &S{}
err = gob.NewDecoder(buf).Decode(s2)
if err != nil {
    log.Println("Decode:", err)
    return
}
log.Println("Decoded value:", s2)
Run Code Online (Sandbox Code Playgroud)

}

但我不知道这种方法的目的是否gob.Register()有人可以解释我何时使用它以及为什么?

go gob

6
推荐指数
2
解决办法
2254
查看次数

Python - 对继承感到困惑

我用3个类编写测试代码,并使用Chain of Responsibility设计模式,下面的代码

我打印print(c._abc is b._abc),答案是真的,但我原来认为两者是不同的.

然后,在第2轮,我取消注释self._abc = kwargs并评论其他3行,答案变为False.

为什么会这样?

import abc

class A:
    __metaclass__ = abc.ABCMeta

    _abc = {}

    def __init__(self,successor=None,**kwargs):
        self._successor = successor

    @abc.abstractmethod
    def handlerRequest(self):
        pass

class B(A):

    def __init__(self,successor=None,**kwargs):
        self._successor = successor
        print(kwargs)
        # self._abc = kwargs                 # round 2<---uncomment here
        self._abc['a'] = kwargs['a']         # round 2<---comment here
        self._abc['b'] = kwargs['b']         # round 2<---comment here
        self._abc['Hello'] = 'World'         # round 2<---comment here

    def handlerRequest(self):
        if (self._successor is not None):
            self._successor.handlerRequest()

        print(self._abc)

class …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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