最近启动了刷 LeetCode 的进程,Accepted 了几道题,但两天不到就忘了,即使是留了注释,想想写写笔记还是蛮有必要的,但我不希望不经思考整理就贴一堆代码,把博客搞的乱糟糟的,像 XSDN 一样,所以也只是想把一些印象深刻的部分,留个笔记。

过去的我过于年少轻狂,把某些高级语言当成了全部,并未好好去用 C/C++ 写过点什么。忽视了那些底层的基础的后果便是,现在在写一些很简单的东西,在需要保证代码质量的时候,要纠结许久去思考某一段代码需要消耗的代价才能下决定。用 C 语言写代码有个好,通过它可以让你弄清楚,计算机底层可以给你什么基本能力,什么能力是需要通过这些基本的东西通过封装的方式实现的,也相当于顺便强化计算机基础了,所以我也打算就用 C 来刷这一套算法题。


题目:

3.Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters.

Examples:

Given "abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", the answer is "wke", with the length of 3. Note
that the answer must be a substring, "pwke" is a subsequence and not a
substring.

程序需要统计输入字符串的最长无重复子串的长度。最初想到的是,从第一个字符开始,遍历这个字符的字符,直到出现重复的字符,统计此时的字符串长度,然后从第二个字符开始,重复这个过程,取最大的一个,直到最后一个字符为止,其中因为边界的问题的处理,折腾了许久,不过还是实现了下面的第一版的代码:




阅读全文 »

11.11,是程序员通宵赶代码的节日~

偶然打开自己的 Github 的主页发现,当初高三的时候啥也不懂靠着移植大佬主题插件蹭了点星星的我,真正意义上从头到尾写的小项目竟然突破了 200 Stars,小小的感慨一下下。

IMG_20181111_014844_194.jpg

看着旁边搁置了两年多一直没花时间更新的插件也渐渐涨到100多颗星星,有点心情复杂,也对不起那些对它寄予厚望的网友们。。。隔壁 DIYgay 大佬都更新到v1.10.1了,我的还用着他的 v1.4.6 =_=

其实如果当初能静下心来做点事情该多好,就不会像现在这么脱节了

把自己慢慢调整过来,希望有朝一日能真的把它们捡回来吧。。。

之前好多东西随手编辑完之后,没有过多的思考就发到了朋友圈,想一想还是得整理一下。朋友圈的东西几天就会被忘却,记录在 blog 上,至少在未来,我还能看见过去那个思考着的自己。

最近过了一段时间基本脱离微信的生活,越来越觉得,微信的很多功能仅仅只是只能满足浅层的需要,并不足以承载重度的需求~

把一个定位在浅层需要的应用重度应用在需要深度的工作中,大概是灾难的开始。

脑洞开了一下,一个应用能给我们提供服务,并能保持长久,我们必然要付出某些代价去平衡这个应用提供服务的过程中所付出的成本,这个代价有可能是我们购买应用付出的价格,也可能是我们在使用它的时候付出的时间、看的广告、通过它承载社会关系和隐私。

最鸡贼的是,后者往往背后隐藏着巨大的价值,等我们醒悟过来的时候,已经依赖于其中无法自拔了。人是有惰性的,对于绝大多数普通用户来说,能用一个应用解决的问题,即使这个过程有些繁琐,没达到一种忍无可忍的程度,是不会想着学习使用更好的工具的。以国内的厂商的尿性,它在承载你的某种需要的时候,它并不会积极地为你的需求而改善它的功能,而是处处设障,阻止用户的流失。毕竟,对于网络有自己的把握的人并不占多数,对于资本家来说,谁会和钱过不去,去满足小众的需要而得罪大部分人?用户是大爷,想要求用户学习?门都没有,这么做,就是给其它应用填补这部分需求的空间。

大概就是“免费的就是最贵的”吧,在面对一个应用之前,或许我们应该思考,我们在享受它提供的服务的时候,究竟为它付出了什么。

https://www.zhihu.com/question/293253813/answer/504207390
IMG_20181103_133952_557.jpg

从大一开始用 Ubuntu 16.04 LTS 作为主力系统开始,我一直用着搜狗输入法的 Linux 版本来输入中文,一直以来都相安无事,除了偶尔搜狗会崩溃一下之外。最近在网上发现 有人把 Deepin 的 wine QQ 打包整合了一个脚本,可以实现在 Deepin 以外的 Linux 发行版上安装 QQ 等 Windows 软件,看到之初有点小激动,从此我也在 Ubuntu 用上了心心念念的 TIM,尝试了一段时间,体验几乎完美!

当然,在 Linux 桌面的世界中,“完美”这个词是相对的,在使用 wine TIM 的过程中,常常遇到中文不能输入的问题。经过多次观察发现,每当搜狗的 sogou-qimpanel 进程崩掉,自动重启以后,wine 下运行的 TIM 也不能输入中文了。刚好最近我也了解到 RIME 输入法引擎,在 Windows 虚拟机试用了一段时间,被它的轻便和灵活深深地吸引,也寻思着用 RIME 换掉 Ubuntu 下的搜狗。

在 RIME 官网的介绍页面发现,这个输入法主要是基于 ibus 输入法框架的,在搜狗崩了那么多次的经验中,我了解到这是个基于 Fcitx 框架的输入法,至于它究竟有什么关系,我并不清楚,加之不确定当时装系统的我为了跑起搜狗输入法究竟干了些什么,所以暂时没敢动。搜索资料发现,我们是可以直接在系统的设置里面切换输入法框架的,所以我也有了折腾它的勇气。

运行 sudo apt install ibus-rime ,在系统语言设置把输入法框架切换到 ibus,重启,新的输入法并没有出现,折腾许久未果,天知道装搜狗的时候我改了什么,所以最后放弃了这种方式,选择用 Fcitx 版本。

阅读全文 »

也许你没有听说过侯捷老师,没关系,在此之前,我也没有了解过。经过两次无意中与侯捷老师写的书的邂逅,这个名字已经开始深深地印在了我的脑海中。大概,侯捷老师也会是一个像贺利坚老师,Barbara Oakley 教授一样,影响着我未来的人生轨迹的人呢。

今年的上半年有一段时间我在做一个用 VBA 自动化处理 Office 文档的项目,当时为了弄明白 Word 和 Excel 的对象模型,还有 Word 的各种域(Field)的操作,翻阅了无数的 Office 文档,我也开始对 MS Office 的文档模型产生了兴趣。平时常常与班里一直很仰慕的学霸 johnbanq 聊最近在搞的事情,五月的某一天,我们恰好提起了 Office 的对象模型的话题,学霸推荐了侯捷老师的《Word排版艺术》。

阅读全文 »