小编squ*_*rel的帖子

如何在Vim中搜索打开的缓冲区?

我想在vim中当前打开的所有文件中搜索文本,并在一个地方显示所有结果.我想有两个问题:

  • 我无法将打开文件列表传递给:grep/ :vim,尤其是不在磁盘上的文件名;
  • 结果:grep -C 1 text在quickfix窗口中看起来不太好.

这是Sublime Text 2中多文件搜索的一个很好的例子:在此输入图像描述

有任何想法吗?

vim search

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

如何使用android.support.v7.preference库创建自定义首选项?

我想支持至少api 10,我希望能够很好地设置我的偏好,我希望能够有标题(或显示PreferenceScreens).似乎PreferenceActivity不完全支持AppCompat着色,不适合.所以我正在尝试使用AppCompatActivityPreferenceFragmentCompat.

public class Prefs extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (savedInstanceState == null)
            getSupportFragmentManager().beginTransaction()
                    .replace(android.R.id.content, new PreferencesFragment())
                    .commit();
    }

    public static class PreferencesFragment extends PreferenceFragmentCompat {
        @Override public void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
        }

        @Override
        public void onDisplayPreferenceDialog(Preference preference) {
            // the following call results in a dialogue being shown
            super.onDisplayPreferenceDialog(preference);
        }

        @Override public void onNavigateToScreen(PreferenceScreen preferenceScreen) {
            // I can probably …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-preferences android-support-library

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

为什么我只能在 async 函数中使用 await 关键字?

假设我有这样的代码

async def fetch_text() -> str:
    return "text "

async def show_something():
    something = await fetch_text()
    print(something)
Run Code Online (Sandbox Code Playgroud)

这很好。但后来我想清理数据,所以我做

async def fetch_text() -> str:
    return "text "

def fetch_clean_text(text: str) -> str:
    text = await fetch_text()
    return text.strip(text)

async def show_something():
    something = fetch_clean_text()
    print(something)
Run Code Online (Sandbox Code Playgroud)

(我可以清理里面的文本show_something(),但让我们假设show_something()可以打印很多东西并且不知道或不应该知道清理它们的正确方法。)

这当然是一个SyntaxError: 'await' outside async function. 但是——如果这段代码可以运行——当await表达式没有放在协程函数中时,它会在协程函数的上下文中执行。为什么不允许这种行为?

我在这个设计中看到了一位专业人士;在我的后一个例子中,你看不到show_something()的身体正在做一些可能导致其暂停的事情。但是如果我要创建fetch_clean_text()一个协程,它不仅会使事情复杂化,而且可能还会降低性能。拥有另一个本身不执行任何 I/O 的协程是没有意义的。有没有更好的办法?

python python-asyncio

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

在gevent应用程序中,如何杀死所有已启动的greenlet?

我有一个gevent应用程序,可以跨多个模块生成多个greenlet.我希望能够优雅地关闭应用程序(例如内部或通过捕获SIGTERM),允许greenlet通过捕获GreenletExit和执行finally:子句很好地终止.

如果我有一个所有正在运行的greenlets,我可以做gevent.killall(list_of_greenlets),但保持这样的列表是相当麻烦的; 此外,gevent必须以某种形式保留这个列表.

那么,我可以杀死已经启动的所有greenlets而不维护它们的列表吗?

(我在raspthon上的python 2.7上使用gevent 1.0.0)

python gevent

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

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

如何在 Python 中创建通用接口?

我想在 Python 中创建等价物:

static class Event {}

static class MyEvent extends Event {}

interface Filter<E extends Event> {
    boolean filter(E event);
}

static class MyFilter implements Filter<MyEvent> {
    @Override public boolean filter(MyEvent event) {
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的尝试(mypy-play)

from typing import TypeVar, Protocol

class Event:
    pass

class MyEvent(Event):
    pass

E = TypeVar("E", bound=Event)

class Filter(Protocol[E]):
    def filter(self, event: E) -> bool:
        raise NotImplementedError

class MyFilter(Filter):
    def filter(self, event: MyEvent) -> bool:       # should be ok
        raise NotImplementedError …
Run Code Online (Sandbox Code Playgroud)

python python-typing

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

如果子类是由构造逻辑决定的,那么将类及其父类的逻辑分开的最pythonic和优雅的方法是什么?

我想从字符串构造类,如"red apple".这将创建一个类的实例Apple,它是一个子类Fruit.事情是,color属性应该属于Fruit,而不是Apple.因此,在我看来,创建对象的自然方式是:

  1. 解析字符串
  2. 创建 Fruit(color="red")
  3. 创建 Apple()
  4. 不知何故使它成为一个单一的实体

到目前为止,我有3个选择:

  1. 一切都变成了参数

    class Fruit(object):
        def __init__(self, color):
            self.color = color
    
        def observe(self):
            print "Looks like a tasty %s fruit" % self.color
    
        @classmethod
        def fromstring(cls, string):
            color, kind = string.split()
            if kind == "apple":
                return Apple(color)
    
    class Apple(Fruit):
        def __init__(self, *args, **kwargs):
            super(Apple, self).__init__(*args, **kwargs)
            self.tasty = True
    
        def bite(self):
            print "I bite into a tasty apple"
    
    fruit = Fruit.fromstring("red apple") …
    Run Code Online (Sandbox Code Playgroud)

python inheritance class

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

即使服务正在运行,peekService()也将返回null,即使在OOM终止后由系统重新启动了服务

我正在使用开始服务

startService(new Intent(this, RelayService.class));
Run Code Online (Sandbox Code Playgroud)

然后该服务使用发出警报

AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, SyncAlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent,
    PendingIntent.FLAG_CANCEL_CURRENT);
am.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
    SystemClock.elapsedRealtime() + SYNC_EVERY_MS, SYNC_EVERY_MS, pi);
Run Code Online (Sandbox Code Playgroud)

然后BroadcastReceiver SyncAlarmReciver尝试使用获取服务

RelayServiceBinder relay = (RelayServiceBinder) 
    peekService(context, new Intent(context, RelayService.class));
Run Code Online (Sandbox Code Playgroud)

在其他应用程序需要更多内存时,在应用程序被终止后,系统重新启动该服务之前,一切正常。重新启动后,该服务使用相同的代码重新启动警报,但peekService()返回null。通过调试消息,我看到context服务和广播接收器中的内容以及RelayService对象是相同的,即这些对象是内存中的相同对象。我怎么解决这个问题?

如果有帮助,这里是指向上述三段代码的链接:主要活动服务广播接收器

PS我知道该服务正在连续运行,因为我正在密切注意该过程,发现它运行正常并且没有以任何方式重新启动,并且因为我看到在启动警报之前它已打开的连接不会被中断。

android android-service

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

如果有不同的方法来完成相同的任务,如何选择最佳的SQL查询?

我正在学习SQL(使用SQLite 3及其sqlite3命令行工具),我注意到我可以通过多种方式做一些事情,有时候不清楚哪一个更好.这里有三个查询该做同样的事情,一是通过执行intersect,另外通过inner joindistinct,最后一个类似于第二之一,但它包含过滤通过where.(第一个是由我正在阅读的书的作者和我自己写的其他人写的.)

问题是,哪些查询更好,为什么?而且,更一般地说,我怎么知道一个查询何时比另一个更好?是否有一些我错过的指南,或者我应该学习SQLite内部,尽管SQL的声明性质?

(在下面的例子中,有一些描述在一些电视剧中提到食品名称表.Foods_episodes是许多一对多连接表,而其他同季数描述食品名称和插曲的名字连在一起.请注意,所有时间的前十名正在寻找食物(基于所有系列中出现的数量),而不仅仅是季节中的顶级食物3 ... 5)

-- task
--     find the all-time top ten foods that appear in seasons 3 through 5
-- schema
--     CREATE TABLE episodes (
--       id integer primary key,
--       season int,
--       name text );
--     CREATE TABLE foods(
--       id integer primary key,
--       name text );
--     CREATE TABLE foods_episodes(
--       food_id …
Run Code Online (Sandbox Code Playgroud)

sql sqlite

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