小编rol*_*lls的帖子

如何停止.+在字符的第一个实例而不是在perl中使用正则表达式的最后一个?

我想替换:

'''<font size="3"><font color="blue"> SUMMER/WINTER CONFIGURATION FILES</font></font>'''
Run Code Online (Sandbox Code Playgroud)

附:

='''<font color="blue"> SUMMER/WINTER CONFIGURATION FILES</font>'''=
Run Code Online (Sandbox Code Playgroud)

现在我的现有代码是:

$html =~ s/\n(.+)<font size=\".+?\">(.+)<\/font>(.+)\n/\n=$1$2$3=\n/gm
Run Code Online (Sandbox Code Playgroud)

然而,最终结果如下:

=''' SUMMER/WINTER CONFIGURATION FILES</font>'''=
Run Code Online (Sandbox Code Playgroud)

现在我可以看到正在发生的事情,它匹配<font size ="..... all the way up to the end of the <font colour blue">的不是我想要的,我希望它停止在第一个实例"不是最后一个,我认为那是什么把那个标记放在那里,但是我已经尝试.+.+?.*和.*?每次都有相同的结果.

任何人都有任何想法我做错了什么?

regex perl

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

如何通过 powershell 或 C# 使用本地 IP 远程更新 azure webapp 防火墙

如何使用我的本地 PC IP 地址远程更新我的 azure webapp 防火墙,以便通过 powershell 或 C# 进行管理。

我已经查看了文档,但我只能从实际服务器本身而不是远程找出如何做到这一点。

我可以让 Visual Studio 弹出并询问我是否想将我的 IP 地址随机添加到防火墙,但大多数时候它只是失败并且不问我所以我正在寻找除手动登录到 azure 之外的解决方案每当我的 IP 地址更改时,门户网站。

查找示例或指向文档的链接,以显示要使用的库。

更新:我尝试了 Tom Suns 的回答,但是我们使用的是 web 应用程序而不是 sql server,所以它不起作用。

azure.WebApps.GetByResourceGroup("resourcegroup","webapp")

返回网络应用程序,但无论如何我都找不到以编程方式访问此网络应用程序的网络下找到的“访问限制”。

我也只能访问此 Web 应用程序的主要部署槽。我需要为每个部署槽单独设置防火墙(可以通过 azure Web 界面完成)。

我尝试通过以下名称访问第二个部署槽,均返回 null。这是假设 Web 应用程序名为“webapp”,部署槽名为“slo1”

webapp-slot1 webapp_slot1 webapp/slot1

我也尝试过 GetByID 而不是 GetByResourceGroup 但是我找不到任何关于他的 ID 是什么以及在哪里可以找到的例子。我已经尝试了几乎所有可以在 azure Web UI 上找到的 ID。

最后,Tom Sun 的回答要求将硬编码凭据存储在驱动器上。这远非最佳。我更喜欢提示用户输入用户名和密码的弹出式 UI,这在旧版本的 API 中是可能的,但是我能找到的一切都表明它不再存在。我可能不得不求助于powershell。

c# powershell firewall azure azure-sql-database

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

VBA写入文本文件:运行时错误52'错误的文件名或数字'

Public Sub EdgeColor_Click()
    Dim intInFile As Integer
    intInFile = FreeFile

    Open "c:\picturename.csv" For Output As #intFileNo
    Print #intFileNo, "test"

    Close #intFileNo
End Sub
Run Code Online (Sandbox Code Playgroud)

这是我的代码,我得到运行时错误52'错误的文件名或数字'.我已经尝试做输入并使文件存在,但我得到相同的错误.

这是Proficy iFix图形中的VBA,并且不能为我的生活弄清楚我做错了什么.

vba

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

更改azure应用程序服务的IP地址

我有一个通过 cloudflare 运行的 azure 应用程序服务。由于该网站之前运行时没有使用 cloudflare,因此您可以在此处通过 DNS 历史记录找到我的网站 IP 地址 https://securitytrails.com/

知道这一点意味着攻击者可以绕过我的 cloudflare DDOS 保护。

如何更改我的 azure 应用服务的 IP 地址而不删除它?

我猜我可以添加一个公共 IP 并将所有流量从该 IP 路由到我现有的 IP,然后我可以对现有 IP 进行防火墙设置,只接受来自新 IP 的流量。当我可以在夜间更改 IP、更新 DNS 并接受喜欢凌晨 4 点工作的用户可能需要几个小时的停机时间(无)时,这似乎有点令人费解。是否可以强制改变IP?

ip dns azure cloudflare

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

SSMS“此版本的 SQL Server 不支持 Windows 登录”

我正在使用 SSMS(Microsoft SQL Server Management Studio)连接到 Azure SQL 数据库。我选择了“SQL Server 身份验证”并输入了管理员登录名和密码。由于某种原因,它仍然尝试使用 Windows 身份验证,无论身份验证设置为“SQL Server 身份验证”并报告

此版本的 SQL Server 不支持 Windows 登录。(.Net SqlClient 数据提供程序)

我已经在另一台计算机上尝试过,它工作正常(也是不同的网络)。尽管服务器名称登录名和密码相同,但由于某种原因,这台新计算机无法工作。

我可以通过同一台 PC 上的 Visual Studio SQL 资源管理器连接到数据库,证明这不是防火墙问题。

为什么不使用 SQL 身份验证?

其次,我如何简单地输入 SQL 连接字符串而不是使用 GUI 进行连接?我有一个可以在 C# 代码中工作的 SQL 连接字符串,但我完全不知道如何使用 GUI。

更新

我尝试将部分(或全部)数据库连接字符串输入“附加连接参数”窗口,然后给出不同的错误:

建立连接 SQL Server 时发生与网络相关的实例特定错误。找不到服务器或无法访问服务器(提供程序:TCP 提供程序,错误:0 不知道这样的主机)。错误11001

更新 2 编辑:24 小时后,问题神奇地自行解决,电脑没有重新启动,没有任何改变。

sql-server ssms azure azure-sql-database

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

GetWindowRect在一个应用程序上返回错误的值,所有其他应用程序都是正确的

我正在使用Windows API中的GetWindowRect来获取正在运行的应用程序的边界,然后我使用这些边界来截取应用程序.

我的代码适用于我测试的大约10个程序,notepad.exe和其他一些程序,但是我想在RocLink800上使用它的一个应用程序,它会返回不正确的静态值,无论应用程序的位置如何.

代码是C#.NET

    [StructLayout(LayoutKind.Sequential)]
    public struct RECT
    {
        public int X;
        public int Y;
        public int Width;
        public int Height;
    }

    [DllImport("user32.dll", SetLastError = true)]
    static extern bool GetWindowRect(IntPtr hWnd, ref RECT Rect);

    IntPtr error = GetWindowRect(proc.MainWindowHandle, ref rect);

    ... main code
    while (error == (IntPtr)0)
    {
        error = GetWindowRect(proc.MainWindowHandle, ref rect);
    }

    int width = rect.right - rect.left;
    int height = rect.bottom - rect.top;
Run Code Online (Sandbox Code Playgroud)

现在所有应用程序返回正确的宽度和高度,roclink800返回错误值1表示成功,但无论应用程序位置如何,它都返回以下值:

rect.right = 960 rect.left = 960 rect.bottom = 600 rect.top = 600

我完全难以理解为什么会发生这种情况或如何纠正它,roclink800是一个从windows95天移植的旧程序所以也许它使用了一些奇怪的api,如果是这种情况,那么Windows …

.net c# windows winapi

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

MVVM ViewModel与View交互,是真正的MVVM吗?

让我们说例如我们有一个带有2个选项卡和一个文件菜单的WPF窗口.文件菜单有两个项目"隐藏选项卡1","显示选项卡1"

然后该程序具有以下类:MainView.xaml

MainViewModel.cs

然后将"隐藏选项卡1"菜单命令绑定到MainViewModel.cs中包含的HideTab1Command

然后,HideTab1直接与视图交互以隐藏ViewModel中的tab1.

这在技术上不是MVVM行为(更像是MVP)吗?例如,对于真正的MVVM,执行此行为的功能应完全包含在XAML代码中或MainView.xaml.cs中的"代码隐藏"中?

我看到MVVM应用程序和示例一直这样做,但它似乎打破了SRP(单一责任原则).

我看到一些其他应用程序使用HideTab1命令执行相同的操作,只需通过接口IMainView通知视图,然后调用MainView.xaml.cs中的代码

虽然我可以看到代码现在在View中,但这与第一个例子有什么不同?SRM仍然无效,ViewModel告诉View该做什么.

这些示例中的任何一个都是真正的MVVM模式,如果不是,那么实现隐藏/显示"选项卡1"的正确MVVM模式是什么.

请原谅任何对MVVM/MVP的误解,我正在尽力正确地学习这些设计模式.

示例:ShowTab1是一个命令,然后直接操作View.我一直在MVVM项目中看到这一点(许多DevExpress示例)但它似乎没有MVVM的任何好处,因为您的ViewModel直接操纵您的视图.

MainWindow.xaml

<Window x:Class="WpfApplication.MainWindow"
    ...
        <Button Content="Show hidden panels"   Command="{Binding ShowTab1}"/>
        ...
        <TabGroup>...
    ...
</Window>
Run Code Online (Sandbox Code Playgroud)

MainWindowViewMode.cs

public class MainViewModel 
{
    IMainView mainView;
    public MainViewModel()
    {
        ShowTab1 = new ShowTab1Command(this);
        mainView = ... (set this to a reference to the view)
    }

    public ICommand ShowTab1 { get; set; }
}

public class ShowTab1Command: ICommand
{
    private readonly MainViewModel _model;
    public ShowTab1Command(MainViewModel model)
    {
        _model = model;            
    }
    void ICommand.Execute(object parameter) …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvp design-patterns mvvm

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

为什么 C# 编译器不内联 MSIL 代码?

我的问题是为什么 C# 编译器不允许内联 C# MSIL 函数。我知道在某些情况下 JIT 会内联实际的 X86 程序集,但我询问的是实际的 MSIL“程序集”代码。

为什么 C# 编译器不提供这些类型的优化?

是不是因为收益很小甚至没有收益?或者它根本没有实施?

c# optimization jit cil inline-assembly

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

从 Windows 10 内核模式驱动程序记录到 txt 文件

我希望从 Windows 10 内核模式驱动程序 (C) 进行一些日志记录。我在驱动程序内部有很多日志记录,但是在这种情况下,我无法附加内核调试器,因此我想将调试字符串转储到 txt 文件(甚至事件日志)。

例如,这是一个例子

#include <stdio.h>
#include <stdlib.h>
VOID Log(char * text) {
    FILE *f = fopen("c:\\temp\\logger.txt", "a+");
    if (f == NULL) return;

    fprintf(f, "%s\n", text);

    fclose(f);
}
Run Code Online (Sandbox Code Playgroud)

不过我得到

driver.obj : error LNK2019: unresolved external symbol fclose referenced in function Log
driver.obj : error LNK2019: unresolved external symbol fopen referenced in function Log
tdriver.obj : error LNK2019: unresolved external symbol fprintf referenced in function Log
Run Code Online (Sandbox Code Playgroud)

我已经包含了 stdio.h,我还需要做些什么才能链接到它吗?

或者是因为这是一个内核驱动程序,我无法使用这些库,并且必须执行不同的低级过程才能写入日志文件?

编辑:看来我无法从内核驱动程序使用 fopen 。

我尝试了这个,但是没有任何内容写入文件。我基于这个例子编写了代码:

https://support.microsoft.com/en-us/help/891805/how-to-open-a-file-from-a-kernel-mode-device-driver-and-how-to-read-fr

我所做的更改是将标志设置为 FILE_OPEN_IF …

c linker logging windows-kernel

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

在C中定义函数之前使用函数时的隐式声明,为什么编译器无法解决这个问题呢?

正如标题所说,我知道导致此错误的原因,但我想知道为什么编译器会在这种情况下提供它.

例如:

main.c中

void test(){
    test1();
}

void test1(){
   ...
}
Run Code Online (Sandbox Code Playgroud)

会给出一个隐式声明警告,因为编译器在读取它的声明之前会调用test1(),我可以看到这个明显的问题(不知道返回类型等),但为什么编译器不能做一个简单的传递获取所有函数声明,然后编译删除这些错误的代码?这看起来很简单,我不相信我在其他语言中看到过类似的警告.

在这种情况下,有人知道这个警告是否有特定目的我忽略了吗?

c gcc compiler-warnings gcc-warning

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

snprintf随机溢出并将垃圾打印到文件中.救命

这是我的代码,基本上是我测试过的4台计算机,它们都可以完美地处理非常大的数据大小,例如大小达500mb的文本文件,但是当我在服务器上运行它们时,真正的数据甚至小到6mb的文件似乎在某处溢出并将垃圾写入我的文件末尾.

这是整个功能的来源,因此人们可以有更深入的外观

/** Reads values from tagname between start_time and end_time which are strings in the format 
 of 01/01/1970-12:00, a null string is treated as 01/01/1970, values are stored in
 "tagname".csv */
int ReadValues(char * tagname, char * start_time, char * end_time, char * working_directory, char * new_tag_name)
{
 long lRet;
 int  number_of_samples;
 int     loop;
 IHU_DATA_SAMPLE  * pSamples=NULL;
 IHU_TIMESTAMP  StartTime;
 IHU_TIMESTAMP  EndTime;
 FILE *stream;
 char outputFileName[200];
 char szQuality[100];
 char    newTempTagName[100];
 int  Year;
 int  Month;
 int  Day;
 int  Hour;
 int  Minute; …
Run Code Online (Sandbox Code Playgroud)

c printf programming-languages

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