非淡泊无以明志,非宁静无以致远

Windows 桌面程序开发一些方案

开发 Windows GUI 程序的方案有很多,接触过比较流行的大概有三种,一种是 C++和 Qt,一种是 HTML5+浏览器内核,最后一种是 C#+WPF。另外古老的 WinForms 和更古老的 MFC 也不多说了。

Qt 的跨平台特性得以开发的项目可以跨平台,而且各种 C++的组件非常丰富。但是但是 Qt 本身库的并不小,我也不是很喜欢 QML 那种 JSON 的书写方式,而且 Qt Creator 用起来也不太顺手,所以一般没怎么用过这种开发模式进行桌面应用的开发。

H5 和浏览器内核是一个不错的方式,可以轻松跨平台,而且 H5+JS 可以有很快的开发速度。主流的方案有 Electron、nwjs、cef 和 wke(其中 弹幕派 所用的方案就是 wke),但是 Electron 同样体积巨大,不利于应用的分发。wke 虽小但也很久没有更新,内核很老,bug 比较多。最近志鹏同学正在研究之前 wke 开发者新开发的 miniblink 内核,相信这个方案会比较优秀。

WPF 必须依赖于.NetFramework,所以无法跨平台,而且 XP 也不自带.Net,需要用户安装。另外,XAML 虽然写起来麻烦一些,但是开发漂亮的 GUI 还是比较方便。而最新的 UWP 技术也利用了 WPF 的 XAML 进行 UI 的设计,转型起来并不困难。

起因

上周受到卤蛋同学的启发,如果需要使用 C++开发 GUI 程序难道只能用 Qt(或者北邮老师专用的 ege)?能不能使用熟悉的就技术来开发呢?于是在 Windows Dev Center 里找到了使用 C++和 XAML 开发 UWP 程序的方式。粗略看了一下,大概是使用经过微软扩展的 C++,名字叫 c++/cx,基于 Windows RT,但是不受.Net 的托管,也就是要自己处理垃圾回收(这方面理解不够深入,感觉大概是这个意思吧)。

但不管如何,可以使用 C++和 XAML 开发 Windows 应用还是让人眼前一亮,忍不住去尝试一下。所以,下面开工吧!

More Link

这是一篇受密码保护的文章,您需要提供访问密码:

https://leetcode.com/problems/valid-parentheses/description/

括号匹配的问题,记录左括号,寻找右括号是否匹配,用栈实现。

用时 62ms,时间比较慢,需要寻找更高效的办法(可能少用一些哈希表效果会比较好),明天再试试

https://leetcode.com/problems/longest-common-prefix

最长前缀匹配问题,最直观的思路的程序如下:

用时 39ms

https://leetcode.com/problems/roman-to-integer/description/

主要是掌握罗马数字和阿拉伯数字的转换规律,剩下的按照正常思路应该没啥难度

用时 162ms,感觉比平均要慢,但是除了想到缓存变量,减少判断以外想不到太好的算法上的改进方法。

https://leetcode.com/problems/palindrome-number/description/

又水了一道很简单的题,求回文数,只要记着负数肯定不是回文数就可以了。

简单从左右分别开始比较:

用时 192ms

用 Python 字符串反转的方式最简洁,一行搞定:

用时 205ms,和上一种方法几乎一样

https://leetcode.com/problems/reverse-integer/

LeetCode 最简单的题目之一,不过要好好审题。

比如题目要求—— The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

我根本没有看见粗体的 renversed,所以一直对输入是不是符合 32 位整数进行判断,结果闹了很久才明白为啥最后几个 case 没法 a。

复习:32 位有符号整数范围 -2^31~2^31-1,剩下使用 Python 应该没有任何问题。

下面的思路是将数字转换成字符串然后反转:

用时 52ms

换种思路,使用最简单的整除和取余:

因为加了循环,所以用时稍长一些,65ms

时日已至伏末,先别问秋老虎可不可怕,仅是鼻炎已经足以让我怀疑有一个连的人在想我。

话归正题,兰州在我心中的形象由两部分,一半像兰州烟上(我最喜欢吉祥兰州硬盒上的那个红色镶金的图案)那样: 悠悠兰州,九天揽秀,另一半是爽朗直接,像兰州公交车司机一样,可以跳下车跟出租车对骂。总体来讲,用人来形容就是一个很飘渺但又古朴纯净的三四十岁胡子邋遢瘦削的硬汉。总之,矛盾满满。不过这一点不想展开去说,说说最近在兰州的见闻吧。

按照惯例,每次回家都要去张掖路逛逛,每次去逛也都盼着能有点什么不一样,但又担心不一样的地方多了我会忘记之前是什么样子。不过到目前为止,我的担心都是多余的。对我来讲,上半年改变最大的大概就是共享单车了。张掖路也是如此,但不是漫山遍野的自行车。为了不让单车进入,步行街的路障间隙更小了——将将够钻进去一条腿——进去以后擦一把汗,开始感慨前些日子的减肥真他丫有效,不然老夫就要卡死在这里了。

为什么念念不忘的是张掖路?除了之前总在这里买些衣服鞋子,让我逐渐摸清哪家店的沙发睡觉舒服以外,就是人多。我喜欢这里,总能让我沾沾人气儿,但又不必拘束自己。我喜欢看这里的人。

有吹着口哨吊儿郎当的“小社会”,有大包小包打招呼都腾不出手的时尚 girl,有大胆往前走绝不向两边看的外卖小哥,也有讲着今儿鸡蛋多少钱亚欧超市是不是减价的大妈大爷,更多的是手扣着手面色红润的小情侣们。手里拎本儿 Kindle,眼睛像磕睡狗一样眯起来望着这条街的,可能就只我一个了。

看着,我突然发现一个大问题——每个人,他们,居然,都,在讲话!成群结队成双成对的人在互相讲话,独自一个的人要么在讲电话,要么不知嘴里在嘟囔着什么。“怎么会这样”我自言自语。

为什么人人都会说话,为什么人人都在说话,人人都在说什么话?想回答这几个问题,着实有些难度,也很难在一篇小记中去讲。但培根问我的一个问题很有意思:“很多科学实验证明,猩猩也有语言,那么它跟人有什么不一样呢?它们有意识么?”这个问题就更有意思了。我认为解答这个问题的关键大概在于大猩猩有没有形成判断动词——是,也就是英文中的 be 动词。如果没有,那么它们还不能领会“存在”,只能通过语言表达诸存在者。在这个角度看,它们没有存在意义上的意识。再来看人类,就很有意思了。他们不仅仅可以领会经验上的存在物,更能领会超验的东西。比如——金钱、国家、社会、甚至是爱情。这些存在者的存在,没有意识,是无法领会的。

话又说回到爱情。之前看过一个理论,如果情侣之前无话可说,就很难有幸福感可言。说明充分的交流沟通是人与人之间构成伴侣的一个非常重要的条件。回过神看见商圈门前的一对对们,虽然高矮胖瘦形态各异,甚至肤色都有所不同。但都可以相爱——他们的十指都紧扣在一起,开心地讲着什么事情。

说的也巧,最近从臻那边听到了两个真实的故事。

More Link

好电影是值得多看几遍的。

说实话,这几个月我都没有进电影院,更没有看过最近有争论所谓的这些国产烂片或者说是美国大片。对这部电影,虽然没有对比,但不能阻碍我认为它是一部好片。

虽然两次看的是同一部电影,但我每次的关注点一定是完全不同的。第一遍是随着影片的进程,不去思考过多,而是把自己融入电影之中,心情和大脑都去主动跟随剧情的发展,完全按照导演和编剧的思路欣赏。如果这是一部好片,那么心情一定会起起伏伏,倘若恰巧情节还比较紧凑,那么一场电影看下来必定是淋漓大汗。第二遍呢,我会选择从片中走出来,在看的时候去思考人物的性格、导演对情节的安排以及场内观众们的表现,看完后必定会有许多新的发现,有时候或许还能看出哪里是被引入的时候经过剪裁的,人物应该在哪里可以更活。

首刷的时候,我大概和其他观众一样,随着两个小姑娘的视角,内心跟随她们一起成长,一起对父亲肃然起敬,甚至国歌响的那一刹那,我也跟随她们一起感动。

二刷的时候,我注意到了几个有趣的细节。

More Link

这个周就要立夏了,在这个夏天我要战胜它,也战胜自己。

周末和老弟遛弯聊天,他跟我谈及一个严肃而单纯的问题:既然毒品能给人带来快感,那为什么不人人都去吸毒呢?

我假装成一副胸有成竹的模样,“好问题!不过先别讲这个,我要和你谈谈音乐。我还记得上次和你去国家大剧院听新年音乐会时候你的表现。”

为什么谈音乐呢?我无非是希望引导他去认识到音乐之美,而审美判断是“无利害而生愉悦”,从而认识到有比毒品更自由的获得快瑟之感的方式——艺术或者说是道德。

我几乎成功了。

“那么这种愉悦和那种愉悦有何区别?”这个话题绕不开道德。

“而且你刚刚在讲,美的理想和道德的理念是同一的。那么假设一个人没有(像我们世人一样的)道德,那么他是不是也无法感受到艺术之美,那么他只能从毒品之类的东西中获得物质的快感?而凭什么人人都有这样的道德呢?”

我再令他去想为什么国家和法律如此“暴力”:道德次序的维持需要暴力,暴力保证了次序,也保证了减少暴力。所以毒品和问题需要暴力解决。

“但是,道德又有什么意义呢?你用暴力去维系道德又有什么意义呢?”

“因为人需要自由。人向往自由。音乐可以让人获得自由,道德可以,而毒品不行!”

但自由又有什么意义呢?什么才是自由呢?

我有些歇斯底里,不过在五月份,话题也总是绕不开它。

“你说向往自由,但是佛陀获得了自由,所以他领会到了空。但是空,不会太无聊点了么?”

“所以你想要的意义不就是来自于欲望,这能让你不那么无聊。”

“ 但是欲望和自由是不是就矛盾了?”

所以人生大概就是痛苦的吧。