小编Sam*_*ing的帖子

如何在Vimrc函数中检测大写锁定

在Vim中编辑代码时,我会在ALL CAPS中编写内容时使用大写锁定.但是,当我完成大写部分时,我常常忘记关闭大写锁定.这导致没有痛苦的结束(因为,即j向下移动,但J将当前行与下面的行连接).

通常,我想在退出插入模式时关闭大写锁定.如何在我的.vimrc中添加一些内容,以便在退出插入模式时关闭大写锁定?或者,如果我在退出插入模式时有大写锁定,我怎么能在我的.vimrc中添加一些内容以便它会提醒我(状态行?嘟嘟声?任何警报都没问题)?

谢谢!

vim capslock

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

ndb.toplevel会破坏交易吗?

以下代码按预期工作,不会触发断言:

@ndb.transactional
@ndb.tasklet
def Foo():
  assert ndb.in_transaction()
Run Code Online (Sandbox Code Playgroud)

以下代码中断,触发断言:

@ndb.transactional
@ndb.toplevel
def Foo():
  assert ndb.in_transaction()
Run Code Online (Sandbox Code Playgroud)

我尝试用ndb.transaction调用或ndb.transaction_async调用替换装饰器,但都没有工作.

ndb.toplevel和事务有错误吗?

python google-app-engine asynchronous transactions app-engine-ndb

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

如何在 EMR 上使用 Spark 在 Hive Metastore 中注册 S3 Parquet 文件

我正在使用 Amazon Elastic Map Reduce 4.7.1、Hadoop 2.7.2、Hive 1.0.0 和 Spark 1.6.1。

用例:我有一个用于处理数据的 Spark 集群。该数据作为 Parquet 文件存储在 S3 中。我希望工具能够使用在 Hive Metastore 中注册的名称来查询数据(例如,查找foo表而不是parquet.`s3://bucket/key/prefix/foo/parquet`做事的风格)。我还希望这些数据在 Hive Metastore(一个单独的 RDS 实例)的生命周期内持续存在,即使我拆除 EMR 集群并启动一个连接到同一个 Metastore 的新集群也是如此。

问题:如果我这样做sqlContext.saveAsTable("foo"),默认情况下,会在 Hive Metastore 中创建一个托管表(请参阅https://spark.apache.org/docs/latest/sql-programming-guide.html)。这些托管表将数据从 S3 复制到 EMR 集群上的 HDFS,这意味着在拆除 EMR 集群后元数据将无用。

hive elastic-map-reduce apache-spark apache-spark-1.6

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

Vim:Sudo Edit 破坏 Apache 语法突出显示

Sudo Edit (sudo -e) 允许非特权用户安全地编辑文件。为了实现此目的,它会创建要编辑的文件的临时副本,然后在编辑完成后将其复制。

当我编辑 apache 文件(例如 /etc/apache2/sites-enabled/mysite.com)时,sudoedit vim 无法确定它应该使用 Apache 语法突出显示,因此我必须手动 :set syntax=apache 。我怀疑 Vim 的语法突出显示规则依赖于文件的完整路径,并且由于 sudoedit 将文件更改为 /var/tmp/mysiteRANDOMCHARS.com 之类的内容,因此它会丢失该路径信息。

有什么办法让我自动告诉 Vim 它应该使用 apache 语法高亮吗?

谢谢!

apache vim sudo syntax-highlighting vim-syntax-highlighting

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

如何在没有终端的情况下运行Python

我想教一些学生基本的Python编程,而不必教他们如何使用终端.最近,我正在教2个小时的介绍会话,不但没有教导终端东西需要很长的时间,但它也吓倒了不少学生.我想要一个解决方案,让学生不必留下他们熟悉的图形用户界面.

我还希望解决方案让他们执行特定的Python文件(例如,不仅仅使用交互式Python解释器)并查看打印内容的输出.

谢谢!

python

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

如何通过可以为空的重复字段对 ndb 查询进行排序

我有一个具有重复属性的 ndb 模型:

class MyModel(ndb.Model):

  foo = ndb.KeyProperty(repeated=True)
Run Code Online (Sandbox Code Playgroud)

我想对 进行不等式过滤foo,这意味着我需要按以下顺序排序foo

query = MyModel.query()
query = query.filter(MyModel.foo != my_key)
# I don't actually care about doing this, but I have to because of the inequality filter.
query = query.order(MyModel.foo)
Run Code Online (Sandbox Code Playgroud)

我希望查询包含 foo 为空的实体。如果我将一个虚拟字段放入 foo 中,它会起作用:

def _pre_put_hook(self):
  if not self.foo:
    self.foo.append(ndb.Key('Dummy Kind', 'Dummy ID'))
Run Code Online (Sandbox Code Playgroud)

但这似乎不是一个干净的方法来做到这一点。有没有更好的办法?

python google-app-engine app-engine-ndb

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

如何告诉 Typescript lodash.filter() 使某些内容变为非空?

我最近开始使用 Typescript,并且使用严格模式。在很多情况下,我有一个可为空值的列表,并且我使用 _.filter() 来删除空值。例如,

const users: {id: number, name: string | null}[] = getUsers()
const lowerCaseNames = _(users)
  .filter(user => !!user.name)
  .map(user => user.name.toLowerCase())
  .value()
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为 Typescript 仍然认为 user.name 可以为 null,因此 user.name.toLowerCase() 无效。相反,我不得不将链拆分为多个变量并使用类型转换,这两者都是不幸的:

const users: {id: number, name: string | null}[] = getUsers()
const usersWithNames: {id: number, name: string}[] = _.filter(user => !!user.name) as {id: number, name: string}[]
const lowerCaseNames = _.map(usersWithNames, user => user.name.toLowerCase())
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以告诉 lodash/typescript.filter()在不进行类型转换或不破坏链的情况下摆脱空值?

谢谢!

typescript lodash

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