博客 (680)

页面错误!请稍后再试~

ThinkPHP V*.*.* { 十年磨一剑-为API开发设计的高性能框架 }


排查方法:查看 /runtime/log 中的 log 日志

xoyozo 12 天前
60

如果在发布的时候遇到以下错误:

资产文件“\obj\project.assets.json”没有“net6.0”的目标。确保已运行还原,且“net6.0”已包含在项目的 TargetFrameworks 中。

在发布设置中更改正确的目标框架版本即可。

xoyozo 半个月前
94

LigerShark.WebOptimizer.CoreBuildBundlerMinifier
特点

在运行时捆绑和缩小 CSS 和 JavaScript 文件

具有完整的服务器端和客户端缓存,以确保高性能

可禁用缩小

支持使用通配模式

标记帮助程序与缓存破坏

支持内联

支持 SCSS

将 CSS、JavaScript 或 HTML 文件捆绑到单个输出文件中

保存源文件会自动触发重新捆绑

支持通配模式

支持 CI 方案的 MSBuild 支持

缩小单个或捆绑的 CSS、JavaScript 和 HTML 文件

每种语言的缩小选项是可定制的

打开生成的文件时显示水印

任务运行程序资源管理器集成

命令行支持

快捷更新解决方案中所有捆绑包

禁止生成输出文件

转换为 Gulp

注入(Program.cs)

services.AddWebOptimizer();

app.UseWebOptimizer();


指定捆绑的项目在运行时自动缩小 css 和 js,也可以在 AddWebOptimizer 中自定义手动编辑 bundleconfig.json 文件来指定需要合并和缩小的文件
功能配置
{
  "webOptimizer": {
    // 确定是否应设置 HTTP 标头以及是否应支持条件 GET (304) 请求。在开发模式下禁用此功能可能会有所帮助。cache-control
    "enableCaching": true,
    // 确定是否用于缓存。在开发模式下禁用可能会有所帮助。IMemoryCache
    "enableMemoryCache": true,
    // 确定管道资产是否缓存到磁盘。这可以通过从磁盘加载 pipline 资产而不是重新执行管道来加快应用程序重新启动的速度。在开发模式下禁用可能会有所帮助。
    "enableDiskCache": true,
    // 设置资产将存储的目录 ifistrue。必须为读/写。enableDiskCache
    "cacheDirectory": "/var/temp/weboptimizercache",
    // 确定元素是否应指向捆绑路径或应为每个源文件创建引用。这在开发模式下禁用很有帮助。
    "enableTagHelperBundling": true,
    // 是一个绝对 URL,如果存在,它会自动为页面上的任何脚本、样式表或媒体文件添加前缀。注册标记帮助程序后,标记帮助程序会自动添加前缀。在此处查看如何注册标记帮助程序。
    "cdnUrl": "https://my-cdn.com/",
    // 确定捆绑包的源文件中没有内容时的行为,默认情况下,请求捆绑包时将引发 404 异常,设置为 true 以获取包含空内容的捆绑包。
    "allowEmptyBundle": false
  }
}


在 bundleconfig.json 捆绑时设置

[
  {
    "outputFileName": "output/bundle.css",
    "inputFiles": [
      "css/lib/**/*.css", // globbing patterns are supported
      "css/input/site.css"
    ],
    "minify": {
        "enabled": true,
        "commentMode": "all"
    }
  },
  {
    "outputFileName": "output/all.js",
    "inputFiles": [
      "js/*.js",
      "!js/ignore.js" // start with a ! to exclude files
    ]
  },
  {
    "outputFileName": "output/app.js",
    "inputFiles": [
      "input/main.js",
      "input/core/*.js" // all .js files in input/core/
    ]
  }
]


在开发模式中保存文件自动更新浏览器效果
VS 安装扩展,方法:菜单 - 扩展 - 管理扩展 - 联机 搜索“Bundler & Minifier
其它资料
ASP.NET 官方文档


xoyozo 24 天前
186

以 ASP.NET 6 返回 BadRequestObjectResult 为例。

public IActionResult Post()
{
    return BadRequest("友好的错误提示语");
}


axios

请求示例:

axios.post(url, {})
.then(function (response) {
    console.log(response.data);
})
.catch(function (error) {
    console.log(error.response.data);
});

error 对象:

{
  "message": "Request failed with status code 400",
  "name": "AxiosError",
  "code": "ERR_BAD_REQUEST",
  "status": 400,
  "response": {
    "data": "友好的错误提示语",
    "status": 400
  }
}


jQuery

请求示例:

$.ajax 对象形式

$.ajax({
    url: url,
    type: 'POST',
    data: {},
    success: function (data) {
        console.log(data)
    },
    error: function (jqXHR) {
        console.log(jqXHR.responseText)
    },
    complete: function () {
    },
});

$.ajax 事件处理形式(Event Handlers)jQuery 3+

$.ajax({
    url: url,
    type: 'POST',
    data: {},
})
    .done(function (data) {
        console.log(data)
    })
    .fail(function (jqXHR) {
        console.log(jqXHR.responseText)
    })
    .always(function () {
    });

$.get / $.post / $.delete

$.post(url, {}, function (data) {
    console.log(data)
})
    .done(function (data) {
        console.log(data)
    })
    .fail(function (jqXHR) {
        console.log(jqXHR.responseText)
    })
    .always(function () {
    });

jqXHR 对象:

{
  "readyState": 4,
  "responseText": "友好的错误提示语",
  "status": 400,
  "statusText": "error"
}


xoyozo 26 天前
224

下载 sqlmap:https://github.com/sqlmapproject/sqlmap

下载 python:https://www.python.org/downloads/

以 windows 版为例:

安装 python;

解压缩 sqlmap;

“在终端中打开 / 在命令行中打开” sqlmap.py 文件所在目录;

执行命令 

python sqlmap.py -u "网址" --data="POST数据" --tables

需要注意的是,sqlmap 会记录探测过的网址的结果信息,修复网站漏洞后要再次检测是否安全时,应删除缓存文件,位置在:

C:\Users\用户\AppData\Local\sqlmap\output\

image.png

xoyozo 1 个月前
215

原生判断

window.addEventListener('scroll', scroll)

function scroll() {
      const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
      const clientHeight = document.documentElement.clientHeight || document.body.clientHeight;
      const scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
      
      if (scrollTop === 0) {
        console.log('滚动到顶了');
      }
      if (scrollTop + clientHeight >= scrollHeight - 100) {
        console.log('滚动到底了');
      }
}

window.removeEventListener('scroll', scroll) // 移除滚动事件

scrollTop:文档在可视区上沿的位置距离文档顶部的距离

clientHeight:可视区的高度

scrollHeight:文档总高度

100:用于在滚动到底部之前提前加载内容(如瀑布流),提高用户体验,请自行修改数值(建议不小于 2 像素,以规避在部分浏览器上因获得值为小数时可能无法触发的问题)


jQuery 判断

window.addEventListener('scroll', scroll)

function scroll() {
    const doc_height = $(document).height();
    const scroll_top = $(document).scrollTop();
    const window_height = $(window).height();
    
    if (scroll_top === 0) {
      console.log('滚动到顶了');
    } else if (scroll_top + window_height >= doc_height - 100) {
      console.log('滚动到底了');
    }
}


xoyozo 1 个月前
194
操作系统
版本发布时间支持设备
macOS Ventura132022年10月

iMac (2017 年及后续机型)

Mac Pro (2019 年及后续机型)

iMac Pro (2017 年机型)

Mac Studio (2022 年机型)

MacBook Air (2018 年及后续机型)

Mac mini (2018 年及后续机型)

MacBook Pro (2017 年及后续机型)

MacBook (2017 年机型)

macOS Monterey122021年6月8日

iMac (2015 年末及后续机型)

Mac Pro (2013 年末及后续机型)

iMac Pro (2017 年及后续机型)

Mac mini (2014 年末及后续机型)

MacBook Air (2015 年初及后续机型)

MacBook (2016 年初及后续机型)

MacBook Pro (2015 年初及后续机型)

https://support.apple.com/zh-cn/HT212551

macOS Big Sur112020年6月23日

MacBook (2015 年或后续机型)

MacBook Air (2013 年或后续机型)

MacBook Pro (2013 年后期或后续机型)

Mac mini (2014 年或后续机型)

iMac (2014 年或后续机型)

iMac Pro (2017 年或后续机型)

Mac Pro (2013 年或后续机型)

https://support.apple.com/zh-cn/HT211238

https://support.apple.com/kb/sp833?locale=zh_CN

macOS Catalina10.152019年10月8日

MacBook (2015 年前期或之后的机型)

MacBook Air (2012 年中期或之后的机型)

MacBook Pro (2012 年中期或之后的机型)

Mac mini (2012 年后期或之后的机型)

iMac (2012 年后期或之后的机型)

iMac Pro (2017 年)

Mac Pro (2013 年后期或之后的机型)

https://support.apple.com/zh-cn/HT210222

https://support.apple.com/kb/sp803?locale=zh_CN

macOS Mojave10.142018年6月5日

MacBook (2015 年前期或之后的机型)

MacBook Air (2012 年中期或之后的机型)

MacBook Pro (2012 年中期或之后的机型)

Mac mini (2012 年后期或之后的机型)

iMac (2012 年后期或之后的机型)

iMac Pro (2017 年)

Mac Pro (2013 年后期的机型,以及支持特定 Metal 技术图形卡的 2010 年中期和 2012 年中期的机型)

https://support.apple.com/kb/SP777?locale=zh_CN

macOS High Sierra10.132017年6月5日

MacBook (2009 年后期或之后的机型)

MacBook Pro (2010 年中期或之后的机型)

MacBook Air (2010 年后期或之后的机型)

Mac mini (2010 年中期或之后的机型)

iMac (2009 年后期或之后的机型)

Mac Pro (2010 年中期或之后的机型)

https://support.apple.com/kb/SP765?locale=zh_CN

macOS Sierra10.122016年9月20日

MacBook (2009 年后期或之后的机型)

MacBook Pro (2010 年中期或之后的机型)

MacBook Air (2010 年后期或之后的机型)

Mac mini (2010 年中期或之后的机型)

iMac (2009 年后期或之后的机型)

Mac Pro (2010 年中期或之后的机型)

https://support.apple.com/kb/SP742?locale=zh_CN

OS X El Capitan10.112015年9月29日

MacBook (2015 年前期的机型)

MacBook (2008 年后期的铝金属机型以及 2009 年前期或之后的机型)

MacBook Pro (2007 年中期/后期或之后的机型)

MacBook Air (2008 年后期或之后的机型)

Mac mini (2009 年前期或之后的机型)

iMac (2007 年中期或之后的机型)

Mac Pro (2008 年前期或之后的机型)

Xserve (2009 年前期的机型)

https://support.apple.com/kb/SP728?locale=zh_CN

OS X Yosemite10.102014年10月17日

https://support.apple.com/kb/SP711?locale=zh_CN

OS X Mavericks10.92013年10月23日

iMac (2007 年中期或之后的机型)

MacBook (2008 年后期的铝金属机型、2009 年前期或之后的机型)

MacBook Pro (2007 年中后期或之后的机型)

Xserve (2009 年前期)

MacBook Air (2008 年后期或之后的机型)

Mac mini (2009 年前期或之后的机型)

Mac Pro (2008 年前期或之后的机型)

https://support.apple.com/kb/SP702?locale=zh_CN

OS X Mountain Lion10.82012年7月25日

iMac (2007 年中期或之后的机型)

MacBook (2008 年后期的铝制机型、2009 年前期或之后的机型)

MacBookPro(2007 年中期/后期或之后的机型)

Xserve (2009 年前期)

MacBook Air (2008 年后期或之后的机型)

Mac mini (2009 年前期或之后的机型)

Mac Pro (2008 年前期或之后的机型)

https://support.apple.com/kb/SP654?locale=zh_CN

OS X Lion10.72010年10月20日

https://support.apple.com/kb/SP629?locale=zh_CN

OS X Snow Leopard10.62008年6月9日

https://support.apple.com/kb/SP575?locale=zh_CN

参考资料:

使用 Mac 随附的 Mac 操作系统或兼容的更新版本

xoyozo 2 个月前
255

User-Agent 字符串不会进行更新以区分 Windows 11 和 Windows 10。

但我们可以使用 JS 进行客户端判断是否为 Windows 11:

navigator.userAgentData.getHighEntropyValues(["platformVersion"])
 .then(ua => {
   if (navigator.userAgentData.platform === "Windows") {
     const majorPlatformVersion = parseInt(ua.platformVersion.split('.')[0]);
     if (majorPlatformVersion >= 13) {
       console.log("Windows 11 or later");
      }
      else if (majorPlatformVersion > 0) {
        console.log("Windows 10");
      }
      else {
        console.log("Before Windows 10");
      }
   }
   else {
     console.log("Not running on Windows");
   }
 });

支持客户端提示 User-Agent 浏览器:

浏览器通过客户端提示 User-Agent 区别?
Microsoft Edge 94 及以上
Chrome 95 及以上
Opera
Firefox
Internet Explorer 11


M
转自 MSEdgeTeam 2 个月前
298

命令语法

grep [options] [pattern] file

-r 包含所有子目录

例:

grep -r 要找的内容 /www/


xoyozo 2 个月前
214

使用 v-pre 指令:

<span v-pre>{{ this will not be compiled }}</span>

参:https://cn.vuejs.org/api/built-in-directives.html#v-pre

xoyozo 2 个月前
246