Use Hugo with Github Pages and CircleCI

This tutorial is to teach you how to make youre own hugo-generated static site served by Github Pages, within a single repo. Prerequisites Github & CircleCI account Newly-generated SSH key pair for safety reasons(see here) Hugo installed locally Dive in Generate site source with hugo command: hugo new site <SITE_NAME> Create a repo for your site: <SITE_NAME>.github.io(Be aware: this tutorial uses User/Organization Pages rather than Project Pages, see here), clone it, and create a new branch called source(whatever you like):
Read more →

Hello

Read more →

国内Origin下载加速

Read more →

WWDC 2018 Keynot 个人总结

文中图片来自爱范儿——苹果 WWDC 2018:最全总结在这里,不错过任何重点 开场就说 Today is all about software,本来期待一些硬件更新的我有点小失望,但问题不大🙄 iOS 12 Hotfix 首先是系统提速,确实 iPhone 感觉越用越慢,看来苹果也真正开始重视这个问题了,同时也解决了设备降速的问题,而且支持到了 5s,在我看来是有起码的诚意的。 AR 苹果发布了新的模型格式 USDZ,包含了模型和动画数据,我的猜测是应该类似于目前 Direct X 拥有的 X 文件格式,用来一站式存储单个模型或场景的所有相关数据,用于 3D 应用中的模型数据管理,也算是苹果软件生态的一部分吧,看来 Metal 说不定在游戏领域还是有出头之日的。 AR 游戏现在有多人和旁观者模式了,同学聚会和团建上又可以多一种项目选择了🤣 相册 向 Google 学习,相册变得更智能了,意味着更多的自动推荐选项,包括搜索啦,整理归档啦,这些都是小问题,更新颖的是能推荐分享内容,帮你选择比较适合分享的几张照片,而且接收方还能根据收到的照片把自己的相似的照片再分享回去,仔细想想其实这是个挺好的功能,让一次集体活动的记录视角在每个人的手机上更完整。然而在我的 iCloud 照片部分丢失后,我已经对照片这个应用不再感冒了,现在的主力照片存储在 Dropbox 上。 BTW 照片分享也是端到端加密的,苹果的安全技术我还是比较放心的。 Siri Siri 作为普遍认同的“人工智障”已经在成为语音指令助手的路上越走越远了…… 这次发布了 Shorcuts 功能,按照我的理解,就是把一个特定的功能创建成一条语音指令特例,这样在用 siri 呼出的时候,就可以基本跳过语义分析之类的流程,直接输出结果,和函数调用有点类似。 除此之外,苹果还允许用户自己创建 Workflow,说白了就是用一条指令把一系列功能捆绑到一起,方便一次性调用。 这两个功能基本是属于 Siri 自己的功能,所以像 HomePod 和 Apple Watch 这样能呼出 Siri 的设备都可以使用这项功能。我猜测这个功能在未来的智能家居上应该能有大作为。 Built-in Apps 苹果更新了自带的四个应用——新闻、股票、语音备忘录和 iBooks(已经改名为 Apple Books)——对我来说实在是鸡肋,属于从来不开的那种应用。不过值得一提的是股票应用结合了新闻,可以看到某支股票相关的财经新闻,可能方便炒股的人了解行情吧。 CarPlay CarPlay 开放了第三方导航软件,可喜可贺🎉 然而我还是没有车😶
Read more →

快速排序算法理解

从本科到现在一直没有搞懂快排的原理,直到今天学习 Haskell 看到一张图,很直观地解释了快速排序的原理,这里我将以自己的理解向各位解释快排的工作原理。 快速排序的理念非常简单: 从列表中取出一个元素,在剩下的元素中,选出所有比它小的元素放在它的左边,其余的放在右边。 此时我们会遇到一个显而易见的问题:分别在被“选中”的元素左边和右边的两个列表,各自内部依然是乱序(未经过排序)的,因为这一步可以理解为对原列表的遍历,因此元素的顺序并没有变。 在这里,才是快速排序算法的真正体现—— 对各个列表,重复第一步的操作,直到选定元素两边的列表只剩至多一个元素。 可以看出,这是一个递归操作。以数组 [5, 1, 9, 4, 6, 7, 3] 和排序函数 quicksort 为例: quicksort 开始 为了简化算法,我们直接在开始处理数组的时候,直接选择第一个元素作为被选定元素。经过筛选后,我们的结果此时变成了这样: quicksort([1, 4, 3]) ++ [5] ++ quicksort([9, 6, 7]) 中间的[5]是我们选定的元素,左边是比它小的元素数组[1, 4, 3],右边是比它大的[9, 6, 7]。可以看出,元素两侧的数组依然是乱序状态,仍然需要对其进行排序,因此上面的伪代码中写作 quicksort(Array),即对两个数组继续应用排序操作。 这里以左边的数组为例,看看递归是如何工作的: quicksort 第一层递归 对新的数组 [1, 4, 3] 重复上面的操作,选定第一个元素 1 作为被选定元素,并筛选其两边的数组,结果变成这样: quicksort([]) ++ [1] ++ quicksort([4, 3]) 左边已经成为空数组,意味着我们选定的 1 就是整个数组最小的元素了,因此没有比它更小的元素存在于它的左边位置了。这样就只剩右侧比它大的 [4, 3] 了,我们依然需要对其应用排序操作 quicksort: quicksort 第二层递归 对新的数组 [4, 3] 重复上面的操作,变成下面这样:
Read more →