Windows Forms Invoke() 泄露句柄原因之调查

有朋友问我关于 微软开源 WinForms, WPF 和 WinUI 的看法。说实话,我没什么看法。开源这个事,从来都是有兴趣的人才会 Awesome,对吃瓜群众只能是 So what。不过这则消息让我想起大概半年前维护产品客户端时遇到的一个问题,当时没有机会深入分析,现在既然 WinForm 已经开源,倒是值得深入分析一下了。

Flask 基于子域名的蓝图管理

在 Flask 中,蓝图(Blueprint)通常是基于路径进行分派的,因此我们看到典型的注册代码一般类似这样:

app.register_blueprint(home_bp, url_prefix='...')

相对少见的另一种用法是,Blueprint 也可以通过子域名来分派,这涉及到程序结构上会有一些改变,同时也会带来一些新的问题(当然都是可以解决的)。使用子域名是大型网站的常规做法,同时也使得 URL 路径更有针对性,比如提供一个 https://api.mydomain.com/... 比起所有页面都堆到 https://mydomain.com/ 下面,看上去也显得更专业一些。我自己也在尝试通过这种方式重构自己的网站,最开始尝试的是每个域名使用一个单独的 app 去管理,但很快发现如果一些比较小的功能也做成独立的网站,会带来比较多额外的管理负担。因此,把这些功能合并到一个app,对外又能通过子域名公开,是不错的做法。因此,我对这种实现做了一些尝试,并对遇到的问题和解决办法做一个记录,以供自己和其他朋友参考。

RSS 子域名上线了

虽然 RSS 技术近些年已经有式微的倾向,但我个人仍然是其重度用户。这主要是因为,大量网络阅读是我的“刚需”,在这一方面,目前没有什么技术比 RSS 更加有效。所以在看到像 RSSHub 这样的项目出现时,我的内心是欣喜的,这说明该技术仍然有像我一样的用户支持和生存空间。

在站点上启用 Let's Encrypt 通配符证书

今年早些时候,我曾在本站上尝试使用 Let's Encrypt 推出的新通配符证书,但出现了一些问题。由于网站原有的证书还在正常使用,所以这个事情的优先级并不高,加上当时还有不少别的事情,就没有再继续下去。昨天,我再次进行了测试,这次终于成功生成证书,但过程中仍然走了一些弯路。本文对此作一个记录总结,以便自己今后、以及其他朋友参考。

Qt 在 Windows 下默认字体比较丑,但是我们有办法修改它

一直觉得 Qt 在 Windows 系统上的默认字体不太好看,不过自己写程序时自己去指定字体也很方便,就没怎么在意。这几个月专门用 Qt 写了一些程序,发现这还真的是个问题,因为包括官方的 Qt Creator 在内,都没有开放给用户自定义默认字体的设置,天天看着实在不怎么舒服。本来 Windows 系统是允许用户自定义桌面字体的,Win10 不知是出于去桌面化还是什么考虑,把这个功能又拿掉了。

Solid Project:重新定义 Web?

介绍

Solid Logo

Tim Berners-Lee, Web 的奠基人,由于不满互联网日益被少数大公司所垄断的现实,目前致力于开发一个名为 Solid 的新项目,希望能把管理数据和应用的权力重新归还到用户手中。这个消息估计不少人已经听说过了。基于 Web 的开放思想,Solid 项目也一直是在公开与开源的指导原则下进行的,但直到最近,该项目才逐渐从构想转到实现,我们也终于有具体的细节信息可以一探该项目的究竟。

QT 5.11.1 nativeEvent 实现有 bug, 好在 5.11.2 已经修正了

昨天碰上一个挺郁闷的问题。我们需要在 Qt 程序里处理某些原生 Windows 消息,本来这应该是个挺简单的事情。Qt 早期版本有一个专门的 winEvent 事件,但是用新版时发现这个函数已经换成了 nativeEvent,如果不需要关注跨平台的话,这个方法也没多大差别。重写该函数后,运行时方法倒是触发了,但从参数获得的却是一些匪夷所思的消息标志,简直百思不得其解。仔细看代码也发现不了什么问题,尝试了多种不同写法,无果。通过网络搜索,发现还有另一种方法是通过消息过滤器,即从 QAbstractNativeEventFilter 继承子类。按照这个路子走倒是正常了。因为时间紧,也没来得及深入思考,把程序直接提交了事。

JetBrains Rider 介绍

概述

在 JetBrains 的产品大家族中,Rider 算是比较年轻的一款, 网络上的资料也比较少。不过,考虑到 Rider 主体程序的两大组成部分(IntelliJ Platform 和 Resharper Backend) 都已经发展了很多年,那么 Rider 也不能简单地看作一个新生儿了。如果你比较关注 JetBrains 官方信息的话,那么会发现最近一段时间 Rider 和其他产品相比出现的频率相当高,可见这个产品很受重视,开发也非常活跃。

新站点启用: 2018 年 09 月

如果您看到这篇文章,说明您已经在访问本站的新地址了。本次是一次比较大的调整,虽然内容上变化不大,但软件栈几乎全部更新了。具体的说:

  • 操作系统从 Ubuntu 16.04 更新到 18.04;
  • Python 从 3.5 更新到 3.6;
  • Django 从 2.0-pre 更新到 2.1;
  • Bootstrap 从 3.7 更新到 4.1;