小编Hep*_*tus的帖子

Android:Dex无法解析版本52字节的代码

我刚刚切换到Android Studio 2.1,当尝试编译之前正在运行的应用程序时出现此错误:

Error:Error converting bytecode to dex:
Cause: Dex cannot parse version 52 byte code.
This is caused by library dependencies that have been compiled using Java 8 or above.
If you are using the 'java' gradle plugin in a library submodule add 
targetCompatibility = '1.7'
sourceCompatibility = '1.7'
to that submodule's build.gradle file.
Run Code Online (Sandbox Code Playgroud)

我已经更新了主项目的gradle.build文件以强制生成Java 1.7代码:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        apply plugin: 'java'
        sourceCompatibility = 1.7
        targetCompatibility = 1.7
    }
}
Run Code Online (Sandbox Code Playgroud)

我还更新了gradle.build模块,如下所示设置java版本:

android …
Run Code Online (Sandbox Code Playgroud)

java android maven android-studio

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

Android:mediaplayer因未处理的事件而离开

我需要获取需要从应用程序播放的一系列语音通知的音频文件的持续时间.我已将音频文件添加为资源,它们确实可以正常播放.下面的示例代码实际上完全符合其预期目的:它确实返回音频文件的持续时间.

这是代码:

float getDurationOfAudioResource(LocationEnum loc, Context context){
    float  duration = 0;
    try {
        MediaPlayer mp; 
        mp = MediaPlayer.create(context, getAudioResource(loc));
        duration = mp.getDuration();
        mp.release();
        mp = null;
    }
    catch (IllegalStateException e) {e.printStackTrace(); logError(25, "TestDescItem:Fault::Could not open mediaplayer object with audio resource.");} 
    return duration;
}
Run Code Online (Sandbox Code Playgroud)

这是奇怪的事情.此代码在Main活动中调用,该活动为给定测试准备一组音频指令.此活动中没有错误.但是一旦调用了第二个活动,我就会在logcat上遇到一长串错误.

03-07 13:23:43.820: I/ActionLogger(21435): GenTest_Info_Test #0 successfully created.
03-07 13:23:43.830: I/ActionLogger(21435): GenTest_Info_Test #1 successfully created.
03-07 13:23:43.840: I/ActionLogger(21435): GenTest_Info_Test #2 successfully created.
03-07 13:23:43.850: I/ActionLogger(21435): GenTest_Info_Test #3 successfully created.
<snip>
03-07 13:23:43.910: I/ActionLogger(21435): GenTest_Info_all tests successfully created. …
Run Code Online (Sandbox Code Playgroud)

android media-player

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

以编程方式在Android屏幕上移动鼠标指针

我正在开发一个Android应用程序,我想在Android平板电脑上移动"鼠标"指针/光标.我知道这是可能的,因为当我将鼠标(USB或BT)连接到Android平板电脑(Honeycomb +)时,会出现光标,我只能使用鼠标与平板电脑进行交互.我想在平板电脑上用Java控制那个鼠标.
我已经有了第二个可以与平板电脑通信的设备,它可以将指针坐标传递给它.
不,我不能使用蓝牙.我使用的第二个设备有WiFi但无法驱动蓝牙.我的想法是必须有一种移动鼠标指针的方法.

mouse android pointers cursor

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

使用 f 字符串格式化布尔值

我希望有人已经回答了这个问题,但我已经搜索了这个主题,但找不到答案。
使用 Python3.6+,我想使用 f 字符串将布尔变量格式化为固定宽度。我有结果表,并希望 True 和 False 值的宽度固定,所以我想要一个宽度为五个字符的格式化字符串。以下是有意义的:

print(f"X = {True:5s}")
Run Code Online (Sandbox Code Playgroud)

但是得到:

ValueError: Unknown format code 's' for object of type 'bool'
Run Code Online (Sandbox Code Playgroud)

我知道我可以强制进行字符串转换:

print(f"X = {str(True):5}")
Run Code Online (Sandbox Code Playgroud)

但是,不能使用格式说明符代码似乎很奇怪。是否有一些我缺少的语法变体?我读过PEP498,但它甚至从未提到布尔值。

python-3.x f-string

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

OKHTTP:如何测量请求和响应中的总字节数?

正在使用okhttp3到Web 服务器POSTJSON有效负载。我们想知道请求的总字节数和请求的响应POST。最终,我们想要获得数据吞吐量。这是代码:

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
    .url(url)
    .post(body)
    .build();    
mBytesSent += request.body.contentLength();  // Payload byte count
mBytesSent += request.headers().size();
mBytesSent += request.tag().toString().length();

Response response = client.newCall(request).execute()  

mBytesRecd += response.body().contentLength();
mBytesRecd += response.headers().toString().length();
mBytesRecd += response.message().length();
Run Code Online (Sandbox Code Playgroud)

这是 a 的完整字节数POST吗?

java okhttp3

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

AWS SAM:跨 Lambda 函数共享文件

我正在使用 AWS SAM(无服务器应用程序模型)在 API 网关设置中构建 Python 3.6 lambda 代码。因此,我有一个template.yaml创建多个 Lambda 函数的文件。它们是用 lambda 函数组织的,每个函数都在项目中各自的子目录中。lambda 还共享我保存在共享文件夹中的几个常见文件。

project-home
 -lambda_a_dir
   -lambda_a.py
 -lambda_b_dir
   -lambda_b.py
 -shared_dir
   -shared.py
Run Code Online (Sandbox Code Playgroud)

问题是,虽然 Pycharm 可以清楚地看到shared.py,SAM 不能也拒绝识别共享文件,并出现以下错误:Unable to import module 'lambdaA': No module named 'shared' 如果我将shared.py文件的副本移动到每个 lambda 目录中,Pycharm 和 SAM 都很高兴,我可以构建/部署到 AWS。
我的问题:如何使用共享目录中的共享文件构建 SAM 模板?
到目前为止,我已经尝试过:

  • 符号链接和 MacOS 别名。
  • 的各种组合CodeUri方案
  • 带有__init__和 的本地包setup.py。(我不能使用公共包,因为代码是私有的,不能放在公共存储库中。)

这是我的模板文件:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  lambdaA:
    Type: AWS::Serverless::Function 
    Properties:
      CodeUri: ./lambda_a_dir/
      Handler: lambda_a.lambda_handler
      Runtime: python3.6
  lambdaB: …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation aws-sam-cli

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

Python枚举:不区分大小写的构造函数

我有一个简单的Python2.7枚举:

from enum import Enum

class Label(enum):
    RedApple = 1
    GreenApple = 2
Run Code Online (Sandbox Code Playgroud)

我希望能够使用不区分大小写的键创建枚举对象:

fruitname = "redapple"
a = Label[fruitname]
Run Code Online (Sandbox Code Playgroud)

我试过创建一个__init__方法:

def __init__(self, key):
    super(Label, self).__init__()
    pass # do comparison here
Run Code Online (Sandbox Code Playgroud)

但一直遇到错误:

super(Label, self).__init__()
NameError: global name 'Label' is not defined
Run Code Online (Sandbox Code Playgroud)

我想做一个比较key.lower().strip().
这甚至可能吗?

python enums python-2.7

5
推荐指数
3
解决办法
2113
查看次数

Terraform:AWS Lambda 图像未更新

我们有一个新的 terraform 脚本,它将 docker 镜像推送到 AWS Lambda。该脚本运行良好,并将新图像正确连接到 Lambda。我可以通过检查 Lambda 的 AWS 控制台中显示的图像 URL 来确认这一点,它是新推送+连接的图像。然而,在测试 lambda 时,它显然正在运行之前的代码。Lambda 似乎已更新,但正在运行的内存实例未收到消息。
问题:有没有办法强制内存中的 Lambda 循环到新镜像?

这是 Lambda 的 TF 代码:

resource "aws_lambda_function" "my_lambda" {
  function_name = "MyLambda_${var.environment}"
  role          = data.aws_iam_role.iam_for_lambda.arn
  image_uri     = "${data.aws_ecr_repository.my_image.repository_url}:latest"
  memory_size   = 512
  timeout       = 300
  architectures = ["x86_64"]
  package_type  = "Image"
  environment {variables = {stage = var.environment, commit_hash=var.commit_hash}}
}
Run Code Online (Sandbox Code Playgroud)

docker aws-lambda terraform terraform-provider-aws

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

使用 Terraform 从 git 存储库加载单个文件

我们想要从 git 存储库加载文件并将其放入参数存储中。该文件包含针对多个组织帐户中的每个帐户自定义的配置数据,这些组织帐户是使用 Terraform 构建的,并且在其他方​​面是相同的。数据将存储在AWS SM Parameter Store中。例如将字符串存储为参数的 Terraform 代码是:

resource "aws_ssm_parameter" "parameter_config" {
  name  = "config_object"
  type  = "String"
  value = "long json string with configuration data"
}
Run Code Online (Sandbox Code Playgroud)

我知道 Terraform 有一个file()操作员(参考),并且我知道 TF 可以从远程 git 存储库加载文件,但我不确定是否可以将所有这些整合在一起。

terraform terraform-provider-aws aws-parameter-store

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

Android枚举:从整数值以编程方式设置枚举

我想将java枚举序列化/反序列化为int.我正在使用Android Wear可穿戴数据层API在Wear和Phone设备之间传输枚举设置.这意味着我需要将我的枚举转换为int并以编程方式返回枚举.请注意,我不需要创建新的枚举,只匹配现有的枚举.我担心的是,尽管我可以使用枚举方法轻松设置值,但似乎我可以轻松设置不存在的值.

public enum Color {
    Undefined (0), Red(1), Yellow(2), Blue(3), Green(4), Black(5);
    private int mValue;
    private Color(int value) { this.mValue = value;} // Constructor
    public int id(){return mValue;}                  // Return enum index
    public void setValue(int i){mValue = i;};        // Set index
}
Run Code Online (Sandbox Code Playgroud)

因此,我可以做到以下几点:

Color color = Color.Red;
int   index = color.id();
putDataMapReq.getDataMap().putInt("color",index);          
Run Code Online (Sandbox Code Playgroud)

这个值可以作为int传输,我想重新构建如下,但我不能让setValue()方法可访问:

int newindex = dataMap.getInt ("color");
Color newColor = Color.Undefined;
newColor.setValue(newIndex);
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?有没有办法验证新索引值是否合法?

java enums android

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

如何在 Jenkins 中设置“资源根 URL”

我们正在设置一个新的 Jenkins 实例,发现“资源根 URL”默认为空。我已经阅读了关于这个的 Jenkins 文档和(少数)stackoverflow 响应,但我仍然不清楚如何填写这个字段。在我们的例子中,我们使用的是一个租用的服务器实例,它有一个专用的外部 IP 地址(一个点四边形),但没有域名。顺便说一句,“Jenkins URL”似乎已正确设置为我们的外部点分四组地址。

  1. 格式正确的“资源根 URL”是什么样的?
  2. 如何设置没有域名的“资源根 URL”?
  3. 该文档提到 CSP(内容安全策略)应该是其中的一部分。它是什么以及如何设置它?
  4. 综上所述,为 Jenkins 构建“资源根 URL”的步骤是什么?

谢谢!

jenkins

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

PyQtGraph:图例不起作用

我将 PyQtGraph 0.10 与 Py3.6 一起使用,并且在使用以下代码时遇到问题。
我有两个问题:

1)addLegend()五个图中的每一个都只显示一个空的小盒子,并且

2)该showLabel(show=False)命令被忽略(我只想在底部图上有一个标签)。

self.win   = pg.GraphicsWindow()
self.win.clear()
for figIdx, devid in enumerate(self.norm_data.keys()):
    plot = self.win.addPlot()
    plot.plot(x=self.norm_time[devid],       y=self.norm_data[devid]      , name=devid         , pen=pg.mkPen('b', width=2), connect="finite")
    plot.plot(x=self.pkt_starts[devid].time, y=self.pkt_starts[devid].data, name="Packet start", pen=None, symbol='x' ,symbolSize=8, symbolPen="c")
    plot.plot(x=self.bad_gaps  [devid].time, y=self.bad_gaps  [devid].data, name="Seq gap"     , pen='r' , symbol=None, connect="finite")
    plot.addLegend()                   # Try to add legend
    plot.setLabel('left', "Data")
    plot.setRange(yRange=[0, 5])
    plot.setRange(xRange=[0, self.time_end])
    lr = pg.LinearRegionItem([5, 10])  # This is a mouse-draggable window on the plot
    lr.setZValue(-10)
    lr.sigRegionChanged.connect(updateRegion)
    self.region_list.append(lr) …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pyqtgraph

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

如何在四开文档中插入硬换行符

我正在使用 Quarto 文档准备系统,使用 Python 以编程方式生成大型文档。也就是说,我没有使用 RStudio 或类似的编辑器。所有文本都必须生成为 Python 字符串。

我有一个简单的表格,其中一个单元格有几行内容,我认为我可以在单元格内添加换行符。我知道简单的表格不能包含标准换行符 ( \n),但我想知道是否有一种方法可以在单元格中插入所谓的“硬换行符”。用户手册提到了它们,但指出只有编辑器可以插入它们。是否可以在 Markdown 源文本中使用字符串操作来做到这一点?

除此之外,是否有一种简单的方法可以在表格的单元格内换行?

quarto

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