c# 执行exe

以下是代码:

Process process = new Process();
string exePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,  "a.exe");

string s = "";
foreach (var tmpArg in args)
{
	s += tmpArg.ToString() + " ";
}
s = s.Trim();
if (string.IsNullOrWhiteSpace(s))
{
	throw new Exception("缺少参数");
}

ProcessStartInfo psi = new ProcessStartInfo(exePath , s)
{
	CreateNoWindow = true,
	UseShellExecute = false,
};
process.StartInfo = psi;

process.Start();
process.WaitForExit();

winform datagridview 自动换行

1. 设置下DefaultCellStyle属性里的WrapMode属性,默认为false,设置为true。
2. 设置下AutoSizeRowsMode属性为:DisplayedCellsExceptHeaders。

补充,调整列宽:

在DataGridView的值设置为Fill的情况下调整列宽

dataGridView1.Columns[0].FillWeight = 10; //第一列的相对宽度为10%
dataGridView1.Columns[1].FillWeight = 30; //第二列的相对宽度为30%
dataGridView1.Columns[2].FillWeight = 70; //第三列的相对宽度为70%
注意:这里的值是相对于DataGridView当前的总宽度的.所以窗体最大化和缩小的效果是不一样的.但比例不变



另一种形式:让列固定宽度
dataGridView1.Columns[0].Width = 55;

检索 COM 类工厂中 CLSID 为 {28E68F9A-8D75-11D1-8DC3-3C302A000000} 的组件失败,原因是出现以下错误: 80040154 没有注册类

根据自己是32位还是64位来选择Regsvr32,以下是用代码注册的DLL

// Assembly assembly = Assembly.LoadFile(dllPath);
// 获取CLSID
// Guid guid = new Guid(((GuidAttribute)Attribute.GetCustomAttribute(assembly, typeof(GuidAttribute))).Value);
using (Process process = new Process())
{
	string regPath = System.Environment.GetFolderPath(Environment.SpecialFolder.System);
	if (Environment.Is64BitOperatingSystem)
	{
		regPath = System.Environment.GetFolderPath(Environment.SpecialFolder.SystemX86);
	}
	regPath = Path.Combine(regPath, "regsvr32");

	string reg32DllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Lib", "OPCDAAuto.dll"); // 要注册的dll路径
	ProcessStartInfo startInfo = new ProcessStartInfo(reg32DllPath)
	{
		WindowStyle = ProcessWindowStyle.Hidden,
		FileName = regPath,
		Arguments = $" {reg32DllPath} /s ",
		Verb = "runas"
	};
	process.StartInfo = startInfo;
	process.Start();
	process.WaitForExit();
}
Console.WriteLine(reg32DllPath + "注册成功");

PHP 8.0兼容处理

PHP 8.0: ReflectionParameter::getClass())

在 php8.0中使用此方法会报弃用的错误,需要改成

// php8之前写法
$className = $reflectionParam->getClass();
// php8之后写法
$className = $reflectionParam->getType() && !$reflectionParam->getType()->isBuiltin() 
   ? new ReflectionClass($reflectionParam->getType()->getName())
   : null;

angular1.5,$scope.$apply()强制更新

改变数据,视图不刷新的情况下,请加上$scope.$apply();

$scope.$apply(function() {
    var leftNewVal = (left / 0.5 + (mouseMoveX - mouseDownX) / 0.5);
    var topNewVal = (top / 0.5 + (mouseMoveY - mouseDownY) / 0.5);
    $scope.templatePosition.index[curKeyName].left = leftNewVal;
    $scope.templatePosition.index[curKeyName].top = topNewVal;
})

$scope.$watch('templatePosition',function(obj){
     $scope.progressStyle($scope .templatePosition);
}, true);

配置Fiddler拦截iOS/Andorid的https请求

Fiddler可以配置用来拦截https请求。但默认配置下仅支持拦截PC上的请求。在移动端上的https请求会因为证书问题而失败 .

fiddler默认的证书是基于命令行工具makecert.exe,几乎所有windows客户端都接受该工具生产的证书,但是apple ios设备(iphone、ipad)和少部分的android要求根证书和服务器证书包含makecert.exe生产的证书中所没有的其他元数据。为了兼容这些设备,需要下载fiddler插件”cermaker for ios and android”

去fiddler官网 https://www.telerik.com/fiddler/add-ons

找到

安装完成后重启Fiddler。

手机端重新下载证书,以前的先删掉

安装 信任

如果发现不行,需要将pc端的fiddler关掉重新打开

kibana discover 查询日志

Kibana查询语言基于Lucene查询语法。下面是一些提示:

  • 为了执行一个文本搜索,可以简单的输入一个文本字符串。例如,如果你想搜索web服务器的日志,你可以输入关键字”chrome”,这样你就可以搜索到所有有关”chrome”的字段
  • 为了搜索一个特定字段的特定值,可以用字段的名称作为前缀。例如,你输入”status:200“,将会找到所有status字段的值是200的文档
  • 为了搜索一个范围值,你可以用括号范围语法,[START_VALUE TO END_VALUE]。例如,为了找到状态码是4xx的文档,你可以输入status:[400 TO 499]
  • 为了指定更改复杂的查询条件,你可以用布尔操作符 AND , OR , 和 NOT。例如,为了找到状态码是4xx并且extension字段是php或者html的文档,你可以输入status:[400 TO 499] AND (extension:php OR extension:html)

response:200 将匹配response字段的值是200的文档

用引号引起来的一段字符串叫短语搜索。例如,message:”Quick brown fox”  将在message字段中搜索”quick brown fox”这个短语。如果没有引号,将会匹配到包含这些词的所有文档,而不管它们的顺序如何。这就意味着,会匹配到”Quick brown fox”,而不会匹配”quick fox brown”。(画外音:引号引起来作为一个整体)

查询解析器将不再基于空格进行分割。多个搜索项必须由明确的布尔运算符分隔。注意,布尔运算符不区分大小写。

在Lucene中,response:200 extension:php 等价于 response:200 and extension:php。这将匹配response字段值匹配200并且extenion字段值匹配php的文档。

如果我们把中间换成or,那么response:200 or extension:php将匹配response字段匹配200 或者 extension字段匹配php的文档。

默认情况下,and 比 or 具有更高优先级。

response:200 and extension:php or extension:css 将匹配response是200并且extension是php,或者匹配extension是css而response任意

括号可以改变这种优先级

还可以用not

not response:200 将匹配response不是200的文档

response:200 and not (extension:php or extension:css) 将匹配response是200并且extension不是php也不是css的文档