记录从 MacBook Pro 2015 迁移到 MacBook Pro 2021 M1 时进行的一系列的折腾。 安装常用软件的 Arm 版本 虽然借助苹果的 Rosetta 转译程序, 可以直接运行原来的 x64 应用, 但是效率不高, 因此安装对应的 Arm 版本的软件才是最佳的选择。 从 AppStore 上下载的应用, 基本上已经都是通用 (Universal) 应用了, 只需要在新电脑上重新下载即可。 而不是在 AppStore 上下载的软件, 则只能自己去官方网站上寻找对应的 Arm 版本。 Rosetta 在最近几年内还是需要的, 毕竟有很多旧的软件还不支持 Arm... 阅读全文

最近有需要在 AspNet Core 应用中读取当前请求的请求体 (Request.Body) , 本来以为是很简单的事情, 没想到居然有坑, 因此记录如下。 动作方法 (Action Method) 没有参数的情况下, 可以用正常读取请求体的, 代码如下: [HttpPost("")] public async Task<ActionResult> Post() { var result = await Request.BodyReader.ReadAsync(); var message = string.Empty; if (result.I... 阅读全文

GeoServer 使用 Jetty 作为服务容器, 但是默认的下载的 GeoServer 并没有包含 JNDI 相关的 Jetty 模块, 而在 GeoServer 的配置界面是支持使用 JNDI 连接数据库的,这就前后矛盾了。 不过最坑的是 GeoServer 关于 JNDI 的文档 只有那么一小段, 居然还是基于 Tomcat 服务容器的, 真是太过分了。 添加 JNDI 支持 下载与 GeoServer 中的 Jetty 版本一致的完整包, 以最近发布的 GeoServer 2.20.0 为例, 内置的 Jetty 为 9.4.36.v20210114 。 添加 JNDI 支... 阅读全文

ArcGIS Enterprise 发现安全漏洞 ArcGIS Enterprise 使用 Apache Tomcat 作为 HTTP 服务器, 在最近的服务器安全漏洞扫描中被发现存在大量的安全漏洞, 如下图所示: 在 ArcGIS 知乎 上也有一些关于安全漏动的讨论, Apache-tomcat远程代码执行漏洞(CVE-2016-8735)漏洞是否会对ArcGIS for Server产生影响? , 结局似乎不了了之。 查询 Apache Tomcat 的 安全报告 得知, 针对这些安全问题, Apache Tomcat 已经发布一系列的安全更新来解决这些安全问题。 但是 A... 阅读全文

Rollup 简介 Rollup 是一个 JavaScript 模块打包器, 可以将小块代码编译成大块复杂的代码, 例如类库或应用程序。 Rollup 使用 JavaScript 标准的 ES6 模块, 而不是以前的 CommonJS 或者 AMD 模块。 和 Webpack 相比, Rollup 一个显著的优势是可以输出 ES6 模块,非常的简洁, 现代化的浏览器都可以直接加载, 跨项目重用也非常的方便。 而 Webpack 的输出则必须的依赖晦涩的 Webpack 运行时, 同时也很难跨项目重用。 Rollup 也是非常的流行, npm 上 大部分 JavaScript 类库... 阅读全文

修改默认端口 (可选) 启动注册表编辑器 (在“搜索”框中键入 regedit); 导航到以下注册表子项:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp ; 查找端口号 (PortNumber) ; 单击“编辑”>“修改” ,然后单击“十进制” ; 键入新端口号,然后单击 “确定”; 关闭注册表编辑器, 然后重新启动计算机; 下次使用远程桌面连接连接到此计算机时,必须键入新端口。 如果正在使用防火墙,请确保将防火墙配置... 阅读全文

ES 模块简介 ES Module 是 JavaScript 模块化的官方标准, 目前主流的浏览器已经实现,不依赖任何第三方加载器 (Loader) 即可使用。 点击此链接查看最新的浏览器支持情况 在浏览器中, 可以这样使用原生 ES 模块化的 JavaScript 脚本: // my_func.js export function my_func() { /* function content goes here */ } <script type="module"> import { my_func } from './my_func.js';... 阅读全文

什么是 ANTLR ? ANTLR 是功能强大的解析器生成器,用于读取,处理,执行或翻译结构化文本或二进制文件。它被广泛用于构建语言,工具和框架。ANTLR从语法中生成一个解析器,该解析器可以构建和遍历解析树。 ANTLR 语法库 ANTLR 为常见的语言构建了语法文件, 可以直接下载使用 https://github.com/antlr/grammars-v4 。 如果需要在程序中处理常用的语言, 可以先来这里找一下。 如何在 .NET 中使用 ANTLR ? ANTLR 被广泛应用与大数据分析、 人工智能等领域的语法分析, 网上的相关资料确实非常多, 但是 .NET 相关的... 阅读全文

矢量切片简介 矢量切片是 MapBox 定义的一种开放的 矢量地图标准 , 已经成为开放地理联盟 (OGC) 的标准之一。 个人认为矢量切片的主要优点有: 服务端只关注数据, 无需进行繁琐的配图; 网络传输快, 因为只有括矢量数据; 客户端渲染, 服务端的一套矢量数据, 在客户端可以有多种的表现形式; 充分利用客户端硬件 适配客户端屏幕, 根据屏幕解析度进行高精度矢量渲染; 利用 OpenGL/WebGL 实现海量空间数据渲染; 目前制作矢量切片的方式主要有: 使用 ArcGIS Pro 生成矢量切片包... 阅读全文

Autocasting 简介 Autocasting 是 ArcGIS API for JavaScript 4.x 的一个新特性, 将 json 对象转换成对应的 ArcGIS API for JavaScript 类型实例, 而不需要导入对应的 js 模块。 在下面的示例代码中, 为 FeatureLayer 创建一个 SimpleRenderer 需要导入 5 个模块: require([ 'esri/Color', 'esri/symbols/SimpleLineSymbol', 'esri/symbols/SimpleMarkerSymbol', 'esr... 阅读全文

PostgreSQL 数据库中的角色 PostgreSQL 使用角色 (role) 来体现用户账户, 和其它数据库系统的用户概念不同: 通常, 如果一个角色能够登录到数据库, 则被视为一个登录角色 (Login Role), 和其它数据库中的用户的等价; 当一个角色包含了其它角色时, 则被视为组角色 (Group Role) ; 创建角色的语句为 create role name [ [ with ] option [ ... ] ]; 可选的 option 有: login password superuser createdb 等 要创建一个... 阅读全文

使用 NHibernate 创建 Asp.Net Core 应用 ASP.NET Core Identity 拥有完整的的用户认证、角色以及授权、开放认证的接口规范, 并且默认使用自家的 EntityFramework 进行了实现。 NHibernate 是 .NET 平台上老牌的对象关系映射 (ORM) 类库, 成熟度很高, 也实现了 ASP.NET Core Identity 的认证支持。 Identity 定义了一套完善的、可扩展的数据表结构, 存储用户、角色、权限等信息, 以及一套完善的用户/角色/权限管理 API 。 根据 NHibernate.AspNetCore... 阅读全文