小编Mic*_*ter的帖子

在 Windows 上为 tomcat 设置用户环境变量

我在 Windows 2012 上运行 tomcat 8。

我有一个需要设置用户环境变量才能运行的 webapp。

我可以像这样启动 tomcat 并成功检索变量:

set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_65
set CATALINA_HOME=C:\TOOLS\apache-tomcat-8.0.30

set CATALINA_BASE=C:\Users\ULUser\tomcat\myapp
set MY_VAR=%CATALINA_BASE%
set PATH=%CATALINA_ROOT%\bin;%PATH%
set CATALINA_OPTS="-Djava.security.properties=%CATALINA_BASE%\conf\java.security.properties"

%CATALINA_HOME%\bin\catalina.bat run
Run Code Online (Sandbox Code Playgroud)

但是当我作为 Windows 服务运行时,我无法使用检索 MY_VAR 变量 System.getenv("MY_VAR");

谷歌搜索没有帮助,因为所有页面都显示了如何设置 Java 和 Tomcat 变量,但没有显示如何设置用户变量。

我无法为整台机器设置它,因为我有几个 tomcat 实例,每个实例都需要不同的环境变量。

我更喜欢一种涉及在 tomcat 配置中设置变量的方法,而不是使用 Windows 配置。

我的替代方法是在 tomcat 中使用 context.xml 文件并使用检索上下文设置的逻辑检索值。

我最初在超级用户上发布了这个,但有人建议 stackoverflow 是解决这个问题的更好地方。如果我在这里得到好的答案,我会将其从超级用户中删除。

tomcat8 windows2012

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

如何获取将在IDENTITY列上使用的下一个值

我在LUW上使用DB2 v9.

我有一个像这样定义的列:

"ID" BIGINT NOT NULL GENERATED BY DEFAULT
AS IDENTITY (START WITH 1, INCREMENT BY 1, CACHE 20,
NO MINVALUE, NO MAXVALUE, NO CYCLE, NO ORDER),

我想知道下次将记录插入表时确定ID列的下一个值的最佳方法.

我将使用此信息编写一个脚本,对IDENTITY仍然完整的表进行"健全性"检查,并且其下一个值大于ID列中的最大值.

我不想盲目地重置价值.如果表没有通过完整性检查,我希望得到通知,这样我就可以确定导致IDENTITY被"解雇"的原因.

sql db2

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

Antlr 中的令牌别名

我有看起来像这样的规则:

INTEGER           : [0-9]+;
field3     : INTEGER COMMA INTEGER;
Run Code Online (Sandbox Code Playgroud)

在解析树中,我得到一个名为 INTEGER 的列表,其中包含两个元素。

我宁愿为每个要命名的元素找到一种方法。

但如果我这样做:

INTEGER  : [0-9]+;
DOS      : INTEGER;
UNO      : INTEGER;
field3     : UNO COMMA DOS;
Run Code Online (Sandbox Code Playgroud)

我仍然得到整数数组。

我做得对吗,我只需要深入挖掘以找出问题所在?

是否有某种语法将 INTEGER 别名为 UNO 仅用于此命令(这实际上是我更喜欢的)?

antlr4

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

Python Flask中ssl_context选项之间的区别

为了在Python Flask中支持https,必须在app.run()命令中指定ssl_context选项.

记录如下:

ssl_context - 连接的SSL上下文.ssl.SSLContext,形式(cert_file,pkey_file)中的元组,字符串'adhoc',如果服务器应自动创建一个,或者无,以禁用SSL(这是默认值).

以下是枚举选项:

  1. ssl.SSLContext - 需要证书和密钥文件.
  2. 表单中的元组(cert_file,pkey_file) - 需要证书和密钥文件.
  3. 字符串'adhoc' - 看起来很简单.

这些背景中这些选项之间的区别是什么:

  1. 用户体验
  2. 安装额外的模块和文件
  3. 安全

python ssl flask

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

蓝牙连接无需配对

连接蓝牙设备的正常方式是通过配对。

\n\n

我们需要以非正常方式连接到设备:仅使用蓝牙 MAC 地址。我们不希望系统提示输入 PIN。

\n\n

我们知道该设备支持此技术,但我们找不到在 Android 上执行此操作的方法。

\n\n

缩写代码如下所示:

\n\n
  String mac_address = \xe2\x80\x9c00:11:22:33:44:55\xe2\x80\x9d\n  BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();\n\n  BluetoothDevice bluetoothDevice = mBluetoothAdapter.getRemoteDevice(mac_address);\n\n  Method m = bluetoothDevice.getClass().getMethod("createRfcommSocket", \n           new Class[] {int.class});\n  BluetoothSocket socket = (BluetoothSocket) m.invoke(device, 1);\n\n  socket.connect();\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题是,系统socket.connect()会提示我们输入 PIN 码。此设备不需要 PIN,因此我们不希望系统提示输入 PIN。

\n\n

我们不需要知道 PIN 码的原因是:

\n\n
    \n
  1. 我们制造该设备并编写固件。
  2. \n
  3. 我们可以使用 Windows 上用 C# 编写的程序连接到它。
  4. \n
\n\n

我们如何修改代码,使其不会提示输入 PIN 码?

\n\n

[编辑测试评论中的建议]

\n\n

我们测试了 createInsecureRfcommSocketToServiceRecord 方法,如下所示:

\n\n
ParcelUuid list[] = device.getUuids();\nBluetoothSocket  socket = bluetoothDevice.createInsecureRfcommSocketToServiceRecord(list[0].getUuid());\n …
Run Code Online (Sandbox Code Playgroud)

android bluetooth android-bluetooth

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

<iframe src="file.pdf"> 现在正在下载而不是显示

截至今天早上,我们的旧网站上有一些用户的行为发生了变化。

我们的 HTML 看起来像这样:

<iframe id="I1" style="HEIGHT: 495px" name="I1" marginWidth="0" 
        marginHeight="0" frameBorder="no"
        width="100%" height="500"></iframe>
Run Code Online (Sandbox Code Playgroud)

javascript 看起来像这样:

document.getElementById('I1').src = Request.QueryString("p").Item(1);
Run Code Online (Sandbox Code Playgroud)

该代码通过如下 URL 启动:

https://example.com/DisplayPDF.aspx?p=../Images/TMP_1234.pdf&l=673&ver=3.1.1.33
Run Code Online (Sandbox Code Playgroud)

该代码的目的是在 iframe 中显示 .pdf 文件。

多年来一直如此。

今天早上,一些用户会弹出“查看下载”对话框,并要求保存或打开文件。人们可以“保存”或“打开”,但这种行为变化让我们技术不太精通的用户感到困惑。

明显的嫌疑是 Windows/浏览器更新;系统管理员告诉我他取消了更新。

对我来说,如果它是由更新引起的,那是无关紧要的,我需要为那些将要更新但没有办法取消更新的用户找出解决方案。

我使用浏览器以 F12 模式运行以查看是否存在任何问题。没有什么异常。该网站在 Chrome 中运行良好。

以下是我们看到的行为:

  1. Chrome - 在浏览器弹出窗口中始终快速打开。
  2. IE 11 - HTML 弹出窗口打开,但保持空白。将打开“查看下载”窗口,我可以在其中查看 .pdf 文件。
  3. IE 11 - HTML 弹出窗口打开并保持空白。不会打开“查看下载”窗口。
  4. IE 11 - HTML 弹出窗口打开,需要相当长的时间才能填充 .pdf 文件。

我将其发布在堆栈上,因为我希望有一个代码解决方案可以使其在所有浏览器上工作。我猜我投了反对票,因为这可能被视为不适合堆栈。

html javascript

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

命名空间 system.web 中不存在 mvc

我正在使用 Visual Studio 2017 并收到此错误:

命名空间“System.Web”中不存在类型或命名空间名称“Mvc”(您是否缺少程序集引用?)

在这行代码中:

using System.Web.Mvc;
Run Code Online (Sandbox Code Playgroud)

SelectListItem在这行代码上解析需要使用:

public static List<SelectListItem> VerificationMethod
Run Code Online (Sandbox Code Playgroud)

我希望添加程序集引用可以轻松解决问题。

这是我尝试过的......

我尝试通过右键单击项目并选择Add -> Reference. System.Web.Mvc不在要添加的参考文献列表中。

其他一些 SO 帖子引用包Microsoft.Aspnet.Mvc来解决这个问题。那个包裹也不可用。

我在 nuget 控制台上试过这个:

PM> Install-Package System.Web.mvc
Install-Package : Unable to find package 'System.Web.mvc'
At line:1 char:1
+ Install-Package System.Web.mvc
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [Install-Package], Exception
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

PM> Install-Package Microsoft.aspnet.mvc
Package 'Microsoft.aspnet.mvc.5.2.6' already exists in project 'MySite'
Time Elapsed: 00:00:00.0549251
PM> 
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

update-package -reinstall Microsoft.AspNet.Mvc …
Run Code Online (Sandbox Code Playgroud)

c#

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

为什么gitlab图标会变色

我注意到 gitlab 有不同的图标阴影,我不知道是什么使图标发生变化。

左边的是比较常见的标志。

右边的是我几个月前注意到开始出现的阴影。

gitlab 图标示例

浅色阴影图标代表什么?

gitlab

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

返回 JSON 和文件

如何返回 JSON 响应和文件响应:

现在我这样做:

runNumber = "A0001"
response = None
try:
    response = make_response("Line One\r\nLine Two\r\n")
    response.headers["Content-Disposition"] = "attachment; filename=" + runNumber + ".txt"
except MyCustomException as e:
    response = jsonify(error=e.value, runnumber=runNumber)
except:
    raise
return(response)
Run Code Online (Sandbox Code Playgroud)

但这仅允许我返回 JSON 或文件。在某些情况下,我想同时返回两者。

[编辑:] 我想返回 JSON 和文件的情况是当有关于用户在使用文件之前应该检查的文件内容的警告时。

如果这是不可能的,我会将警告添加到文件的内容中。

python flask

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

将带有复杂参数的批处理文件命令转换为 PowerShell

我在 .bat 中有以下内容(这有效):

"%winscp%" /ini=nul ^
           /log=C:\TEMP\winscplog.txt ^
           /command "open scp://goofy:changeme@10.61.10.225/ -hostkey=""ssh-rsa 2048 d4:1c:1a:4c:c3:60:d5:05:12:02:d2:d8:d6:ae:6c:5d""" ^
           "put ""%outfile%"" /home/public/somedir/somesubdir/%basename%" ^
           "exit"
Run Code Online (Sandbox Code Playgroud)

我试图将其复制到这样的 powershell 脚本中:

& $winscp "/ini=nul" `
           "/log=C:\TEMP\winscplog.txt" `
           "/command" 'open sftp://goofy:changeme@10.61.10.225/ -hostkey="ssh-rsa 2048 d4:1c:1a:4c:c3:60:d5:05:12:02:d2:d8:d6:ae:6c:5d"' `
           "put `"" + $outfile + "`" /home/public/somedir/somesubdir/" + $basename `
           "exit"
Run Code Online (Sandbox Code Playgroud)

当我运行 .bat 脚本时,文件将上传。

当我运行 .ps1 脚本时,我得到 Host key does not match configured key ssh-rsa

我怀疑我没有在 powershell 中正确格式化命令,并且在 winscp 看到它时主机密钥已经损坏。

我检查了日志,显示的只是来自主机的主机密钥。它没有显示我正在使用的密钥。我通过更改我的主机并注意到它没有出现在日志中来确认这一点。我比较了 .bat 和 .ps1 之间的日志,不同之处在于 ps1 以上述错误终止。

winscp 是一个 sftp 实用程序。

syntax powershell winscp

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