什么是 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... 阅读全文

顶级语句 顶级语句可以删除程序中不必要的代码, 以最简单的 Hello, world! 为例: using System; namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } } 如果使用顶级语句的话, 可以简化为: using System; Console.WriteLine("Hello World!"); 如果不使用 ... 阅读全文

MapBox 的 mapbox-gl-js 最近发布了 2.0 版本, 支持 3D 地形, 对于它的 3D 地形很感兴趣, 于是就研究了一下如何发布它的数据格式以及如何发布它需要的地形数据服务 (Terrain-RGB)。 Mapbox Terrain-RGB 简介 Mapbox Terrain-RGB 包含以 PNG 栅格切片编码的全球数字高程数据, 这些颜色值可以解码为以米为单位的原始高度。 您可以将 Terrain-RGB 数据用于各种视觉和分析应用程序, 从设计地形坡度和山体阴影样式到生成用于视频游戏的 3D 地形网格。 有关Terrain-RGB的一些细节: ... 阅读全文

将 Ubuntu 服务器从 18.04 升级到 20.04 , 在执行 do-release-upgrade 时提示无法检查新版本, 完整的错误信息如下: Checking for a new Ubuntu release Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings There is no development version of an LTS available. To upgrade to... 阅读全文

在 Docker 中运行的 PostgreSQL 数据库突然无法启动, 错误日志类似这样: PANIC,XX000,"could not locate a valid checkpoint record",,,,,,,,,"" LOG,00000,"startup process (PID 24) was terminated by signal 6: Aborted",,,,,,,,,"" LOG,00000,"aborting startup due to startup process failure",,,,,,,,,"" 这种情况多数情况下是在执行事务时, 数据库被强行关... 阅读全文

在 ArcGIS JS API 的开发中, FeatureLayer 可以说是让人又爱又恨, 特别是 ArcGIS JS API 4.x , FeatureLayer 从服务端加载数据的策略不可控制, 或者说默认的数据加载策略不适合所有的场景, 某些场景下, 需要从先加载数据, 然后在客户端创建 FeatureLayer 。 要在客户端创建 FeatureLayer , 根据 FeatureLayer 的文档, 这几个属性必须设置: fields 指定一个 Field 数组来描述 FeatureLayer 的架构, 并且必须包含一个类型为 oid 的字段; source 指... 阅读全文

由于项目安全评测的原因, 需要为 Postgres 数据库启用 ssl 连接, 特记录如下。 使用 openssl 生成 ssl 证书 生成证书需要 openssl 工具, 如果没有安装的话, 可以直接登录进去 Postgres 数据库的容器, 已经内置了 openssl , 而且兼容性也比较好。 生成证书的命令如下: openssl req -new -text -passout pass:abcd -subj /CN=localhost -out server.req -keyout privkey.pem openssl rsa -in privkey.pem -passi... 阅读全文

单文件应用简介 .NET Core 3.x 发布的单文件应用是自解压程序, 解压路径貌似是通过 System.IO.Path.GetTempPath() 来确定的: Windows 系统 %TEMP%\.net\ macOS 系统 /var/folders/s8/q4c00lhx3k384hngtv9pmwv40000gn/T/.net/ Linux 系统 /var/tmp/.net/ .NET Core 3.x 发布的单文件应用偶尔会出现无法运行的错误, 需要删除上面目录中对应的 app 目录, 再运行就可以了; .NET 5.0 发布的自单文件应用可以... 阅读全文

本博客基于 Tabler CSS 框架, 采用 Jekyll 模板引擎, 使用 Markdown 语法编写。

博客源代码及文章内容采用 AS-IS 协议发布,转载时请 AS-IS 。