<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://geekplux.com</id>
    <title>GeekPlux</title>
    <updated>2026-03-15T21:19:15.888Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>GeekPlux</name>
        <uri>https://geekplux.com</uri>
    </author>
    <link rel="alternate" href="https://geekplux.com"/>
    <link rel="self" href="https://geekplux.com/cn-atom.xml"/>
    <subtitle>Data Visualization &amp; Full-stack programmer, always exploring</subtitle>
    <logo>https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/avatar.jpg?x-oss-process=style/zip</logo>
    <icon>https://geekplux.com/favicon.ico</icon>
    <rights>CC BY-NC 4.0 2026 @ GeekPlux</rights>
    <entry>
        <title type="html"><![CDATA[2018 平淡无奇]]></title>
        <id>https://geekplux.com/posts/2018-summary</id>
        <link href="https://geekplux.com/posts/2018-summary"/>
        <updated>2019-01-05T20:53:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2019/01/05/2018-summary">https://geekplux.com/2019/01/05/2018-summary </a></p>
</blockquote>
<p>2018 年对我来说是平淡无奇的一年，没什么让自己满意的成绩，有种辜负了时光的感觉。以前的总结都是以人生阶段为单位的：</p>
<ul>
<li><a href="https://geekplux.com/2014/02/02/goodbye_my_university">Goodbye，我的大学</a></li>
<li><a href="https://geekplux.com/2016/02/15/two-years-after-graduated">毕业后的两年</a></li>
<li><a href="https://geekplux.com/2018/06/01/the-summary-of-graduate-career">研究生生涯总结</a></li>
</ul>
<p>不曾想，学生生涯又结束了一次，以后打算以年为单位去总结，絮叨一下今是昨非。</p>
<p>整个 18 年，我以忙乱的搬家为始，又以慌乱的搬家为终。依稀记得 2017 年 12 月 31 号晚上我看着李亚鹏版的《笑傲江湖》跨年，一直颓废到第二天晚上，同学们都回家了，于是百无聊赖的我一个人出去吃了顿火锅，非常有仪式感地度过了元旦。2 号一大早我就出发，去云栖小镇开启找房看房之路。一天时间敲定租哪，又一天时间搬家，脚步匆忙，都没来得及和实验室的小伙伴道别就直接搬到了工作所在地，紧接着我就入职了阿里云。</p>
<h2>工作</h2>
<p>要说拿到 offer 是在去年的秋招，当时我投了两家小公司的前端岗位练手，同时找师兄师姐内推了腾讯阿里和网易。没敢投国外大公司，主要是对自己英语和算法不自信。当时的想法也很简单，如果我进不了这三家公司，那我的研究生就是彻彻底底的败局。读研之前的工作对于当时的我来说已经算不错了，如果一直工作的话，三年的时间我相信我也可以跳槽进这些大厂。而我选择了另一条读研之路，如果连这些大厂都没进去，就更别妄图抹平其他沉没成本了。</p>
<p>说实话我很讨厌面试，参加过的所有面试都没有花特别多的时间去准备，一般都是去面试...</p><a href="https://geekplux.com/posts/2018-summary">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2019 柳暗花明]]></title>
        <id>https://geekplux.com/posts/2019-summary</id>
        <link href="https://geekplux.com/posts/2019-summary"/>
        <updated>2020-01-06T20:50:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2020/01/06/2019-summary">https://geekplux.com/2020/01/06/2019-summary </a></p>
</blockquote>
<p>2019 过的比 2018 年更快一些，不知道是因为经历的少了还是因为年纪大了，翻看年初的朋友圈真是言犹在耳。很多事情求而不得又阴差阳错，如果用一句常被人道的诗来形容我的 2019，那便是：柳暗花明又一村。</p>
<h2>旅行</h2>
<p>先从喜闻乐见的旅行说起。以前觉得漫无目的的旅行就是浪费时间，今年觉得只有<strong>漫无目的</strong>地走才能有<strong>偶遇</strong>的惊喜。经常是瞧到一处景，踱过一座桥，或伫足片刻，或按下快门，或呆坐一下午。总是时隔很久才发现，原来那个阳光明媚的下午竟然不经意间打卡了某个网红景点/餐厅。没有目的的感觉，真好。</p>
<h4>云南  江西</h4>
<p>2019 年的第一天，彼时我在春城昆明。当时和女友及好友一行四人在昆明呆了四天。石林吃马肉，滇池喂海鸥。云南美食的口味较重，略辣，在朋友的盛情款待下，吃了正宗的米线与两个印象最深的食物：大救驾和豆粉。</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/2019-summary/haiou.jpg" alt="" /></p>
<p>这次旅行我带了唯一的拍照设备 <a href="https://geekplux.com/r/osmo_pocket">OSMO pocket</a> ，大疆刚发布我就买了，小且轻，装兜里没感觉，开机迅速，可拿出来直接拍，优秀的防抖治愈了我年迈的双手。当时拍了很多海鸥吃食的慢动作视频，写到这的时候翻出来看了看，真回味无穷。自从有了 OSMO pocket，我的硬盘愈发吃紧，之后可能得配一台 NAS 才能存下这些视频格式的记忆碎片。</p>
<p>踏春之际，探访江西。印象最深的是婺源漫山遍野的油菜花中间点缀着一些徽派建筑。最后一天登了久仰大名的滕王阁，不大，上去之后可以俯瞰赣江源远流长，我想它的气场大概都是由《滕王阁序》支撑起来的罢。</p>
<p>![](https://geekpluxblog....</p><a href="https://geekplux.com/posts/2019-summary">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2020 恍如隔世]]></title>
        <id>https://geekplux.com/posts/2020-summary</id>
        <link href="https://geekplux.com/posts/2020-summary"/>
        <updated>2021-01-05T18:00:00.000Z</updated>
        <summary type="html"><![CDATA[往年的总结，总是很多可讲，今年的却不知从何下笔。2020年是不平静的一年...]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址: <a href="https://geekplux.com/2021/01/05/2020-summary">https://geekplux.com/2021/01/05/2020-summary </a></p>
</blockquote>
<p>往年的总结，总是很多可讲，今年的却不知从何下笔。2020年是不平静的一年，是跌宕起伏的一年。疫情就像一场浩劫，压缩了我的空间和时间，回头看年初的照片，好似还在昨天，回顾一年做了什么，却怎么也想不起来，好像没有活过，好像只过了一天。如果不是相册里的照片，和我琐碎的日记，我真的怀疑这一年缩水了。</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/2020-summary/stand.png" alt="Standing on a peak" /></p>
<p><em>前两天用 <a href="https://1se.co/">1SE</a> 这个 APP，生成了一段我的 <a href="https://www.bilibili.com/video/BV1jA411H73J">2020 review vlog</a>，它自动把我每天拍的视频抽 1 秒出来，然后按日期再组合，竟还有点意思。我加了个配乐发布到了 <a href="https://www.bilibili.com/video/BV1jA411H73J">B站</a> 和 <a href="https://youtu.be/69a38gl9M64">YouTube</a>，有兴趣的同学可以前去观看。</em></p>
<h2>生活，无常</h2>
<p>2020 年，我的开局很美好。年初决定把家里人接到香港过年，想圆我自己带外婆旅游的梦想。外婆离不开轮椅，第一次坐飞机就是境外，可能有些兴奋也有些疲惫。我自然也是兴高采烈，带着他们逛了我工作的地方、中环、尖沙咀、铜锣湾等地方。因为外婆行动不便，母亲甚是疲累，也因为我对香港还不熟悉，所以就没有去太多的地方。在香港的那几日，新闻里已经开始报道内地疫情的爆发，我们当时出门都戴上了口罩。运气好的是，我 27 号刚从机场送走家里人，紧接着香港就开始陆续封关。</p>
<p>和内地的朋友们一样，年假结束后，我也开始了在家办公的日子。本来规律的上下班...</p><a href="https://geekplux.com/posts/2020-summary">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2023 一蓑烟雨]]></title>
        <id>https://geekplux.com/posts/2023-summary</id>
        <link href="https://geekplux.com/posts/2023-summary"/>
        <updated>2024-01-16T03:00:00.000Z</updated>
        <summary type="html"><![CDATA[2023 的开年，我以结束隔离而开始，也许从此刻就埋下了这一年峰回路转的伏笔。]]></summary>
        <content type="html"><![CDATA[<p>2023，我以结束<a href="https://geekplux.com/posts/three-years-of-covid">隔离</a>而开始，也许从此刻就埋下了这一年步步坎坷的伏笔。</p>
<p>2023 是我既 <a href="https://geekplux.com/posts/2019-summary">2019</a> 之后的又一次重启人生之旅。上一次是我单打独斗，这一次变成了拖家带口。疫情的后两年，我没有写年终总结，关注我已久的朋友可能会觉得断档了，但这也确实是如现实生活所演，地理空间的隔断让生活也变得局促。我到底是也没闲着，偷摸着当了人夫也作了人父，“时间就像一头野驴”，横冲直撞到我自己都不敢相信。</p>
<h2>探亲之旅</h2>
<p>就先从隔离说起吧，我有幸作为<a href="https://geekplux.com/posts/three-years-of-covid">最后一批入境隔离</a>的同学，在隔离酒店度过了我 2022 年最后的几天。我至今也没想明白，在香港呆了三年都没阳过的我，是如何在入住隔离酒店三天内就喜提红码。幸亏娃的身体很棒，高烧只持续了一两天，没有让我们担心太久。本来龟腚：“必须同房间内所有人健康码转绿，才能结束隔离”，但幸运的是，在隔离期间遭遇<a href="https://mp.weixin.qq.com/s/NMzklF6__PSIcs1yZQvRWQ">大赦</a>，于是隔离期满就被放出来了，好在没有影响之后的行程。</p>
<p><img src="/images/2023/IMG_4826.jpeg" alt="" /></p>
<p>其实这次回去，是我的探亲访友之旅，我们的行程安排的很满，因为马上就要远渡重洋了，所以想在走之前把所有的亲朋好友都见一遍。我只请了一个月的假，几乎每周都要转场到另一个城市。从光怪陆离的香港职场，一下回到内地亲朋好友安排的大鱼大肉中，实在是乐不思蜀。第一次在山东过年，顿顿白酒也是让我领略了什么是好客山东。</p>
<p>亲情这个词，单拎出来讲显得矫情，但冠以三年的间隔就显得弥足珍贵。</p>
<h2>忙碌的二月</h2>
<p>假期结束我就马不停蹄回到了工作，猛赶了几天工作量就是为了把之后的时间都匀出来。因为这个月我们要收拾行李、搬家、很多 p...</p><a href="https://geekplux.com/posts/2023-summary">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[即将失明，还能继续做程序员吗]]></title>
        <id>https://geekplux.com/posts/a-software-engineer-going-blind</id>
        <link href="https://geekplux.com/posts/a-software-engineer-going-blind"/>
        <updated>2020-04-20T17:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>今天早上我照例打开 Hacker News 看看有什么新奇的东西。头条的标题一下子吸引了我：<a href="https://news.ycombinator.com/item?id=22918980">I'm a software engineer going blind, how should I prepare?</a>，一个即将失明的小哥，还想继续做程序员。这个帖子大概是我 2020 年读到最温情的文字了。</p>
<p>帖子里说明了情况，小哥两年前被诊断出患有 <strong>Usher综合症</strong>，可能导致聋哑、眼部病变至完全失明等。他提出了几个真诚的问题：询问是否还能继续做前端程序员，有没有什么更适合视障人士的工种，有什么趁手的工具和哪些公司在招聘像他这样的程序员。</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/going-blind/Screen-Shot-on-Hacker-News.png" alt="Screen Shot on Hacker News" /></p>
<p>下面的评论中，很多人给出了建议和鼓励，我在此列举一下：</p>
<ul>
<li>有天生失明的程序员出来现身说法，使用 <a href="https://www.nvaccess.org/">NV Access</a>（免费开源的屏幕阅读器）阅读一切和完成电脑操作，他提到没有什么是不能通过阅读器完成的，阅读 python（一种编程语言）更不是问题。下面还有人说可以用 <a href="https://pypi.org/project/dragonfly/">Dragonfly</a> 可以语音创建指令。</li>
<li>有人说有失就有得，熟练掌握工具后阅读速度会比普通人快很多，记忆力，空间想象力会大幅提升。</li>
<li>有从贝尔实验室出来的前辈通过曾经同事的例子鼓励他，即使失明也能创造出伟大的代码。</li>
<li>有从 Apple 公司出来的程序员说当时 Apple 里面有不少失聪失明或瘫痪的工程师。</li>
<li>有同样确诊 Usher 综合症的程序员，虽然没做过前端工作，但仍能开发后端代码。</li>
<li>有人提议，可以从现在起在屏幕前遮一块布开始工作</li>
<li>有人提议应...</li>
</ul><a href="https://geekplux.com/posts/a-software-engineer-going-blind">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[复式记账、财报、量化与图论]]></title>
        <id>https://geekplux.com/posts/accounting-earnings-report-graph-theory</id>
        <link href="https://geekplux.com/posts/accounting-earnings-report-graph-theory"/>
        <updated>2020-01-16T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[不会记账何以变富]]></summary>
        <content type="html"><![CDATA[<p>不会记账何以变富。</p>
<p>如果你去搜索“为什么记账”，大概会有无数条理由。大多数会提到：记录自己的开支、寻找可削减的开支等。但我认为记账的<strong>功效</strong>不止于此，它其实是<strong>量化自己</strong>的一步，也是自身<strong>财务管理</strong>的一步。如果你想要投资炒股，那记账更是你<strong>理解公司财报</strong>的重要一步。</p>
<p>如果说金融业的本质是合理资源配置（通俗来说就是“让钱去该去的地方”）的话，那记账就是自己财富资源配置的基础。</p>
<h2>复式记账</h2>
<p>先简单说说我的记账史：我大三开始记账，一开始用一款叫 <a href="https://toshl.com">Toshl</a> 的 APP，多端同步、界面大方（现在这家公司仍活的挺好，登录上还能看到我几年前的账单）。当时它没有自动同步功能，我靠纯手动记账坚持了大概一年半。直到我的信用卡多起来，可以自动同步信用卡账单的<a href="https://qian.163.com/">网易有钱</a>进入我的视线，我在安全和便捷的博弈中倾向了便捷。靠网易有钱一直坚持记账了两年多。这期间不仅记余额、日常花销，还包括基金、股票的仓位等，让我对资产负债表慢慢有了概念。</p>
<h3>Beancount</h3>
<p>到后来我遇到 <strong>Beancount</strong>，发现这才是适合我这种强迫症的终极大杀器。同时我也接触到了<strong>复式记账</strong>这种更科学的记账方式，对<strong>资产=负债+权益</strong>也有了充分的理解。</p>
<p>珠玉在前，关于什么是 beancount、什么是资产、为什么用 beancount 记账、为什么要采用复式记账等等，都在 <a href="https://www.byvoid.com/zht/blog/beancount-bookkeeping-1">Beancount複式記賬</a>、<a href="https://wzyboy.im/post/1063.html">Beancount —— 命令行复式簿记</a>等文章中有详细介绍，我这里简单概括一下：</p>
<p><strong>复式记账</strong>就是保证每笔账都要有<strong>至少两个（复数个）<strong>账户，且这些账户的</strong>和为零</strong>的记账方式。</p>
<p>简单举个例子：我们去便利店买了一瓶可乐，那么如果按普通的记账方式，账单上的记录...</p><a href="https://geekplux.com/posts/accounting-earnings-report-graph-theory">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[给想转行作程序员的人泼一盆冷水]]></title>
        <id>https://geekplux.com/posts/advice-for-who-wanna-switch-to-programmer</id>
        <link href="https://geekplux.com/posts/advice-for-who-wanna-switch-to-programmer"/>
        <updated>2019-04-02T20:20:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2019/04/02/advice-for-who-wanna-switch-to-programmer">https://geekplux.com/2019/04/02/advice-for-who-wanna-switch-to-programmer </a></p>
</blockquote>
<p>最开始想写一篇《现在转行作程序员还来得及吗》，因为有不少朋友问我这个问题，但写着写着发现我一直在劝退，索性改了题目。</p>
<blockquote>
<p><em>*<strong>本文针对的是</strong>那些想要转行找到工作的同学，而不是纯粹兴趣想学编程的同学</em>。</p>
</blockquote>
<p>所以现在转行到底来不来得及？我觉得：<strong>来得及，但风险很大</strong>。有的朋友动力足，现在已经转行成功入职 BAT，有的半工半学，还在挣扎中；有的去了培训班，马上毕业了；有的问完继续走原路……但<strong>绝大部分都失败了</strong>。</p>
<p>转行做程序员的好处我相信你已经充分了解，要不然也不会有转行的想法，所以我就不赘述了，这里主要说几点风险（前方劝退，谨慎阅读）。</p>
<h3>学习成本低，不意味着就没有成本</h3>
<p>编程难么？说实话还是挺难的，这里我是针对大部分没有基础的人来说的，不排除有天才、大神能无师自通。很多人对编程的印象来自于电影，即使现实中有程序员朋友，你也很难 get 到他每天到底在电脑前干啥。为什么用键盘输入一句话，电脑就开始自动帮你干活了，这些你没有自己写代码之前，是没有体感的。隔行如隔山，就跟我读别的行业的文章跟天书一样，想转行，是需要付出很多的。</p>
<h3>上手门槛低，反而更难找到工作</h3>
<blockquote>
<p>已经有水泥搅拌机了，你还需要学怎么用铁锹么？</p>
</blockquote>
<p>没错，现在的编程门槛越来越低了：以前建个网站可能要 LAMP 一条龙，现在只需要拖拖拽拽一键生成；美国倡导全民编程，App Store 里也有很多少儿编程教学 App，按部就班就能开发属于自己的程序，一切看起来 so easy。但是，掌握越是容易的东西，你的竞争力就越低，大家都会的东西为什么还要给你高薪。“世之奇伟瑰怪非常之观，常在于险远，而人之所罕至焉“。</p>
<p>所以“学会”编程，和找到工...</p><a href="https://geekplux.com/posts/advice-for-who-wanna-switch-to-programmer">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Android 开发如何入门]]></title>
        <id>https://geekplux.com/posts/android_get_started</id>
        <link href="https://geekplux.com/posts/android_get_started"/>
        <updated>2013-09-02T16:34:00.000Z</updated>
        <content type="html"><![CDATA[<p>这是我在知乎上的一个回答（<a href="http://www.zhihu.com/question/21565227/answer/18691177">原文链接</a>）</p>
<hr />
<p>绝大部分人说<a href="http://developer.android.com/guide/components/index.html">官方文档和范例</a>是最好的教程，如果你英语好，且有 Java 和 XML 基础，那按照官方的<a href="http://developer.android.com/training/index.html">Training</a>一路下来就算<strong>入门</strong>了。</p>
<p>如果英语不好，可以看一些视频入门，如 Mars 的《<a href="http://www.marschen.com/forum.php?mod=forumdisplay&amp;fid=2">Android 视频教程</a>》的。最起码得先把开发平台搭建起来吧。再结合视频做一些小练习，最基础的布局先练好，不要急。</p>
<p>当然，看视频的话虽然通俗易懂，但是进度可能比较慢（即使我视频调至 2 倍速看），所以必须结合看书。但是，市面上的书大部分都跟不上 Android 最新的脚步。
不过还是推荐两本：</p>
<ul>
<li>李刚的《<a href="http://www.amazon.cn/%E7%96%AF%E7%8B%82Android%E8%AE%B2%E4%B9%89-%E6%9D%8E%E5%88%9A/dp/B00BSXRLR8/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1378109085&amp;sr=1-1&amp;keywords=android">疯狂 Android 讲义</a>》，此书大而全。</li>
<li>《[Google Android SDK 开发范例大全(第 3 版)](http://www.amazon.cn/Google-Android-SDK%E5%BC%80%E5%8F%91%E8%8C%83%E4%BE%8B%E5%A4%A7%E5%85%A8-%E4%BD%98%E5%BF%97%E9%BE%99/dp/B00647RV78/ref=sr_1_1...</li>
</ul><a href="https://geekplux.com/posts/android_get_started">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Web 前端中的增强现实（AR）开发技术]]></title>
        <id>https://geekplux.com/posts/augmented-reality-development-tech-in-web-frontend</id>
        <link href="https://geekplux.com/posts/augmented-reality-development-tech-in-web-frontend"/>
        <updated>2018-01-18T00:24:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>本文作者 <a href="http://geekplux.com/">GeekPlux</a>，首发于<a href="https://qianduan.group/posts/5a5f89cb0cf6b624d2239c65">前端外刊评论-Web 前端中的增强现实（AR）开发技术</a>，博客地址：<a href="http://geekplux.com/2018/01/18/augmented-reality-development-tech-in-web-frontend">http://geekplux.com/2018/01/18/augmented-reality-development-tech-in-web-frontend </a>。注明作者和地址即可转载。</p>
</blockquote>
<p>增强现实（以下简称 AR）浪潮正滚滚而来，Web 浏览器作为人们最唾手可得的人机交互终端，正在大力发展 AR 技术。很多 Web 前端工程师也在寻求职业转型，于是我把我近半年的相关调研结果在此汇结成文。本文力求把目前前端方向的 AR 技术都罗列一遍，细节不赘述（<em>保证文章篇幅不过长</em>），只做概括和科普（<em>因此文章中的链接很多</em>），零零散散写了一个多月（拖延症），欢迎已经在从事该领域或研究的道友前来纠正补充。</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/ar/screenshot-nexus9.png?x-oss-process=style/zip" alt="Web AR 初音未来" /></p>
<p>AR 可以简单的理解为一种实时将虚拟图像叠加在现实场景中的技术，且能交互[1]。我个人觉得 AR 比 VR 要有前景，主要因为：</p>
<blockquote>
<p>AR 的优势在于把目之所及的现实场景变成了背景，并将现实世界和数字世界无缝连接。</p>
</blockquote>
<p>当然这个“无缝”目前还谈不上，不过一直在进步。在谈 Web 前端如何做 AR 前，有必要先了解一下 AR 实现的 2 种主要方式和其关键技术：</p>
<h2>AR 实现的方式和关键技术</h2>
<p>AR 的主要实现方式有 2 种[2][3]：光学透视式 (Optical see-...</p><a href="https://geekplux.com/posts/augmented-reality-development-tech-in-web-frontend">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[数据可视化基础——数据模型]]></title>
        <id>https://geekplux.com/posts/basics-of-data-visualization-data-model</id>
        <link href="https://geekplux.com/posts/basics-of-data-visualization-data-model"/>
        <updated>2017-01-02T12:01:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>本系列「数据可视化基础」文章共三篇，介绍可视化中最基础、最重要的一些概念、理论。这篇为第二篇，主要介绍<a href="http://geekplux.com/2017/01/02/basics-of-data-visualization-data-model">数据模型</a>，另两篇则主讲<a href="http://geekplux.com/2017/01/01/basics-of-data-visualization-the-process-model">可视化流程</a>和<a href="http://geekplux.com/2017/01/03/basics-of-data-visualization-visual-encoding-principles">视觉编码</a>，建议从可视化流程看起。
原文地址：<a href="http://geekplux.com/2017/01/02/basics-of-data-visualization-data-model">http://geekplux.com/2017/01/02/basics-of-data-visualization-data-model </a></p>
</blockquote>
<p>数据说白了就是一组可定性或可量化的值。随着计算机存储能力的大幅提高，人们对于数据的关注与日俱增，「大数据」一词近几年来也被人们频频提及。而数据可视化的主要任务是将数据转换为易于感知的图形。因此，为了更准确更形象的表达数据，我们需要了解一些数据相关的概念。</p>
<h2>数据模型与概念模型</h2>
<p>为什么数据能代表我们的世界？要回答这个问题，我们得先了解数据和概念两个模型。</p>
<p><strong>数据模型</strong>是一组数字或符号的组合，它包含数据的定义、类型等，可以进行各类数学操作等。<strong>概念模型</strong>描述的是事物的语义或状态行为等。</p>
<p><strong>现实</strong> =&gt; <strong>概念</strong> =&gt; <strong>数据</strong></p>
<p>现实世界可以用概念模型来描述，而概念模型又可以用数据模型来描述。经过两层抽象，数据便可以描述我们的现实生活中的方方面面。</p>
<h2>数据类型</h2>
<p>一个东西具体归为哪一类，取决于我们用什么标准划分，数据亦然。</p>
<p>从数据在计算机中...</p><a href="https://geekplux.com/posts/basics-of-data-visualization-data-model">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[数据可视化基础——可视化流程]]></title>
        <id>https://geekplux.com/posts/basics-of-data-visualization-the-process-model</id>
        <link href="https://geekplux.com/posts/basics-of-data-visualization-the-process-model"/>
        <updated>2017-01-01T17:35:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>本系列「数据可视化基础」文章共三篇，介绍可视化中最基础、最重要的一些概念、理论。这篇为第一篇，主要介绍<a href="http://geekplux.com/2017/01/01/basics-of-data-visualization-the-process-model">可视化流程</a>，另两篇则主讲<a href="http://geekplux.com/2017/01/02/basics-of-data-visualization-data-model">数据模型</a>和<a href="http://geekplux.com/2017/01/03/basics-of-data-visualization-visual-encoding-principles">视觉编码</a>。
原文地址：<a href="http://geekplux.com/2017/01/01/basics-of-data-visualization-the-process-model">http://geekplux.com/2017/01/01/basics-of-data-visualization-the-process-model </a></p>
</blockquote>
<p>很多人认为数据可视化非常简单，无非是输入几组数据，生成简单的条形图、直线图等等。然而，这未免有点管中窥豹。其实数据可视化大致可分为<strong>信息可视化</strong>、<strong>科学可视化</strong>和<strong>可视化分析</strong>三大类，刚才提到的简单图表只是信息可视化中最常见的几种。一旦数据量增大，可视化目标改变，可视化系统的复杂度可能就会超出我们的想象。本文中涉及到的可视化流程模型适用于信息可视化和科学可视化。可视化分析的流程模型略有不同，本文暂时不进行讨论。</p>
<h2>通用的可视化流程</h2>
<p>做任何事都有一个流程，可视化也不例外。</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/basics-of-data-visualization/data-vis-process.png?x-oss-process=style/zip" alt="数据可视化流程总览" /></p>
<p>一图以蔽之。可...</p><a href="https://geekplux.com/posts/basics-of-data-visualization-the-process-model">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[数据可视化基础——视觉编码]]></title>
        <id>https://geekplux.com/posts/basics-of-data-visualization-visual-encoding-principles</id>
        <link href="https://geekplux.com/posts/basics-of-data-visualization-visual-encoding-principles"/>
        <updated>2017-01-03T20:02:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>本系列「数据可视化基础」文章共三篇，介绍可视化中最基础、最重要的一些概念、理论。这篇为第三篇，主要介绍<a href="http://geekplux.com/2017/01/03/basics-of-data-visualization-visual-encoding-principles">视觉编码</a>，另两篇则主讲<a href="http://geekplux.com/2017/01/01/basics-of-data-visualization-the-process-model">可视化流程</a>和<a href="http://geekplux.com/2017/01/02/basics-of-data-visualization-data-model">数据模型</a>，建议从可视化流程看起。
原文地址：<a href="http://geekplux.com/2017/01/03/basics-of-data-visualization-visual-encoding-principles">http://geekplux.com/2017/01/03/basics-of-data-visualization-visual-encoding-principles </a></p>
</blockquote>
<p>终于来到了最后一篇，前两篇的铺垫可能有点长，但是不种苗浇水怎能开枝散叶。可视化编码是可视化中的<strong>核心内容</strong>，本文会对其进行详细的讲解，尤其是<strong>视觉编码</strong>与<strong>视觉通道</strong>两个概念，如果其中遇到晦涩之处，不要心急，可囫囵吞枣直接往下看。</p>
<h2>什么是视觉编码（visual encoding）</h2>
<p>很多人可能看到题目的时候就有这个疑问，到底什么是视觉编码。其实视觉编码很简单，用一句话就能概括：</p>
<blockquote>
<p>视觉编码描述的是将数据映射到最终可视化结果上的过程。</p>
</blockquote>
<p>这里的可视化结果可能是图片，也可能是一张网页等等。</p>
<p>编码二字，如果说<strong>编</strong>是指设计、映射的过程，那么码呢？<strong>码</strong>其实指的是一些图形符号。</p>
<h2>图形能告诉我们什么</h2>
<p>在介绍各类图形符号之前，我们先谈谈：图形能告诉我们什么。</p>
<p>![](https://gee...</p><a href="https://geekplux.com/posts/basics-of-data-visualization-visual-encoding-principles">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何绑定独立域名]]></title>
        <id>https://geekplux.com/posts/bind_domain</id>
        <link href="https://geekplux.com/posts/bind_domain"/>
        <updated>2013-08-10T18:18:00.000Z</updated>
        <content type="html"><![CDATA[<p>前天把博客搭好之后总觉得得搞个独立域名才算「高端大气上档次」。今天把绑定的经验分享一下。</p>
<hr />
<h2><strong>购买域名</strong></h2>
<p>域名，就是你网站的网址（标识和入口），比如我的是 geekplux.com。不是说没有这一串字母就不能访问你的网站，只是用 IP 访问的话，谁愿意记那一堆数字。相比之下，还是记字母简单。</p>
<p>免费的域名有很多，但是免费的顶级域名真不多。据我所知，<code>.tk</code>是很不错的。如果你决定要长期写下去，也想让别人独一无二的网址访问你的博客，那还是买一个吧。</p>
<p>域名提供商很多，国内有<a href="http://www.net.cn/">万网</a>等，国外有<a href="http://www.name.com/">name</a>、<a href="http://www.godaddy.com/">GoDaddy</a>等。不过还是推荐你购买国外厂商的，因为国内要备案，提交各种材料等审核（<em>国外难道没有监管机制吗？呆在天朝就是安全</em>），我们只是为了有个博客，没必要这么兴师动众的。我用的是 GoDaddy 的，因为可以用支付宝支付。买的时候看个人喜好，我用的是<code>.com</code>的，也有人追求个性用<code>.me</code>、<code>.us</code>等（不信可以搜 www.fuck.me ）。不推荐<code>.info</code>的，以这个结尾的大部分是垃圾网站，容易被搜索引擎屏蔽，我想宅男都懂。</p>
<p>在 GoDaddy 选好你的域名之后，一路点 continue，到支付页面选支付宝，价钱跟你域名的好坏有关了（BTW，我在支付前特地 Google 了一下 GoDaddy 有没有优惠，结果真搜到了 GoDaddy 的优惠码，6 折买的）。。。接下来要将你的域名和 IP 绑定起来，这里涉及到一个叫<strong>DNS</strong>的东西。</p>
<h2><strong>配置 DNS</strong></h2>
<p>DNS 可以理解成一个专门破译密码的侦探，把你的域名解析成 IP 地址，所以只要把你刚买的域名在 DNS 里设置成指向你的 IP，别人就能通过域名访问你的网站了。DNS 具体的工作方式太复杂，我是小白，讲不清楚。</p>
<p>GoDaddy 默认提供了 DNS 服务，但是很不稳定，具体原因。。。这个。。。在...</p><a href="https://geekplux.com/posts/bind_domain">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[人总要有点盲目的自信]]></title>
        <id>https://geekplux.com/posts/blindly-confident</id>
        <link href="https://geekplux.com/posts/blindly-confident"/>
        <updated>2015-10-22T20:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>You can do everything. 没错，每个人都可以做到任何事情。</p>
<p>写这个标题完全是我一时兴起，因为我今天突然想到一个问题： <strong>程序员这个职业给我们最大的好处是什么</strong> ？</p>
<p>我能想到的答案有很多。比如</p>
<ul>
<li>爆棚的好奇心</li>
<li>不断学习的习惯</li>
<li>批判精神</li>
<li>能自我反省</li>
<li>有耐心</li>
<li>话少专一长得帅（程序员里会打扮的多了去了，你们不要被他们的自黑所蒙骗）</li>
</ul>
<p>以上等等。但最大的好处，莫过于让我们相信了 <strong>没有解决不了的问题</strong> 。如果说以上列举的几点给了程序猿们不断进步的武器，那这最后一点则是在程序猿心中撒了一颗种子，让他们逐渐强大。这点我和其他程序员交流过，大家都<strong>深有同感</strong>（但只有我不要脸的写出来了）。</p>
<p>在我图样图森破的时候，但凡遇到完全没有头绪的难题，我总会觉得这根本没什么解决方案。但是 Google 之后，或是请教高手之后，我又总会感叹原来 tm 这样也可以！为什么我没有想到？为什么在还没绞尽脑汁的时候就下了「无法解决」的定论？后来每当我再遇到这类情况，就不停的告诉自己是可以搞定的，即使我暂时还没什么进展，静下心来想一想总会有突破的。</p>
<p>可能是因为这种心理暗示起了作用，也有可能是 Bug 见多了，还有可能是深深折服于前人留下的知识瑰宝，总之我慢慢的觉得自己无所不能。再到后来 Boss 问我「这个功能能实现吗？」我总是回答能，感觉特别难的我会加一句「可能需要点时间」。</p>
<p>无所不能的心态慢慢从编程转移到了生活的方方面面。我刚开始把这种视为 <strong>盲目的自信</strong>, 有时候我都感觉自己变得可怕，竟然想做很多以前想都不敢想的事情。比如我练 Ukulele 时，无名指和中指特别不灵活，怎么也按不了 G 和弦。搁我以前，肯定早就放弃了，然而这次却坚持了下来，每天练十几分钟，也不求多。大概过了两个多月，突然就可以按到 G 了。</p>
<p>所以这种盲目的自信挺好的，他可以让我们迎难而上。做成一些事之后又反过来增强你的这种信心，最后形成一个正循环。而且就像上面我练琴的那个例子，它还让我学会了坚持到底。后来我每当想放弃一件事的时候，我...</p><a href="https://geekplux.com/posts/blindly-confident">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[十年博客折腾历史]]></title>
        <id>https://geekplux.com/posts/blog-history</id>
        <link href="https://geekplux.com/posts/blog-history"/>
        <updated>2018-09-26T19:52:00.000Z</updated>
        <content type="html"><![CDATA[<p>断断续续写博客也多年了，如果从当年的 QQ 空间算起，那估计是有 10 年了。想以一篇流水账记录我折腾博客的历史。</p>
<blockquote>
<p>生命在于折腾</p>
</blockquote>
<h2>第一代博客 - QQ 空间</h2>
<p>当时我还是一个沉迷于如何把 QQ 空间打扮的更好看的人，不过偶尔也写几篇贻笑大方的文章。所以 QQ 空间是我的<strong>第一代博客</strong>，后来大学毕业决定<a href="https://geekplux.com/2014/08/02/farewell_social_network">告别社交网络</a>，就把所有文章备份，然后把它彻底关闭了。</p>
<h2>第二代博客 - Farbox</h2>
<p>大约是大二，读到了一篇<a href="http://mindhacks.cn/2009/02/15/why-you-should-start-blogging-now/">《为什么你应该（从现在开始就）写博客》</a>，随即又准备起来，当时瞄准了一个工具 <a href="http://www.farbox.com/">Farbox</a>，是基于 <a href="https://www.dropbox.com/">Dropbox</a> 的，只要把文章写好，托进 Dropbox 里，博客就自动更新了。它还提供了二级域名，这样其他人就能很方便的通过域名访问你的博客。</p>
<p>当时 dropbox 还没被封，是最好用的网盘，虽然上面的步骤看起来简单，但我还是折腾了很久，而且最大的收获是学会了 markdown，了解了什么是标记语言。随后我也写了两篇博客记录了一下：<a href="https://geekplux.com/2013/08/08/write_blog_by_farbox">写博客就用 FarBox</a>, <a href="https://geekplux.com/2013/08/10/bind_domain">如何绑定独立域名</a>，不知道现在 Farbox 还能不能这么用。</p>
<h2>第三代博客 - Hexo</h2>
<p>我慢慢觉得 Farbox 太小白了，不够 Geek，于是我又萌生折腾的想法。我先是 Google 了一大圈，然后去知乎提了个问题：[如何拥有一个完全免费的博客？](https://www.zhihu....</p><a href="https://geekplux.com/posts/blog-history">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[尝试改变微信公众账号消息的推送方式]]></title>
        <id>https://geekplux.com/posts/change_wechat_push_mode</id>
        <link href="https://geekplux.com/posts/change_wechat_push_mode"/>
        <updated>2013-07-26T17:50:00.000Z</updated>
        <content type="html"><![CDATA[<p>之前我自己运营的微信公众账号一直是以**「图文消息」<strong>的模式推送，今天我尝试换成</strong>「文字+关键字回复」**的模式。</p>
<p>我的出发点是这样的：现在使用手机查看公众平台订阅内容的分为两种，一种WiFi党，一种流量党。而我的推送有时候一篇内容会夹杂着大量的图片，WiFi的当然无所谓，流量党的童鞋就苦了，可能为了看一篇文章要付出几M的流量。如果换成**「文字+关键字回复」**的模式就可以在推送时加上必要的说明，比如图多杀流量、篇幅较长、重口味慎入等等。</p>
<p>但是，用户反馈中大部分认为没有之前的体验好。有的说WiFi已经普及了，有的说文字模式他必须全部读完那一坨文字，他更喜欢图文模式的一目了然，还有的说我纯粹是多虑了（貌似确实-_-！）。。。但这会不会是反对的人更倾向于反馈感受，而喜欢的人可能就默默接受，觉得没必要反馈了。。。所以我觉得单单从今天的用户反馈来说是无法判断到底哪个模式好的，况且还有部分人说他就喜欢文字推送，清爽！</p>
<p>从我自己的角度看，图文模式整体美观，排版清晰，唯一的缺点是稍微费流量，当然还造成了像我这种有强迫症每条必点、不点不爽的痛苦。而文字模式虽简单直接，但排版不太好。<strong>用户惰性又相当高，很多用户不愿意去主动选择自己所需的内容，更倾向于被动接受。即使是愿意选择，也可能因为要多一个「回复」的操作步骤而错过了内容</strong>。</p>
<p>那么从整体上看，应该是图文模式能吸引更多的流量。互联网里掌握了流量就掌握了一切。。。好吧，一次简单的尝试果然会收获不同的领悟，得记录下来。</p>
<a href="https://geekplux.com/posts/change_wechat_push_mode">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Windows8.1 下 Cocos2d-x 环境搭建]]></title>
        <id>https://geekplux.com/posts/cocos2d-x_environment_build</id>
        <link href="https://geekplux.com/posts/cocos2d-x_environment_build"/>
        <updated>2013-10-16T17:54:00.000Z</updated>
        <content type="html"><![CDATA[<p>Cocos2d-x 是一个开源的 2d 游戏引擎，基于 Cocos2d-iPhone 设计，MIT 许可证下发布。其最明显的特点是<strong>跨平台</strong>，只需要编写一次代码，就可以无缝地部署在包括 iOS、Android、Windows、OSX 在内的许多主流游戏平台上。在移动终端多样化的今天，跨平台是大势所趋。接下来开始正题：如何搭建 Cocos2d-x 开发环境。</p>
<h2><strong>准备</strong></h2>
<ul>
<li>正确安装 Visual Studio 2012（2010 也可以，以下简称 VS）</li>
<li>官网<a href="http://www.cocos2d-x.org/download">下载 Cocos2d-x</a>（本文使用的是 C++2.2 版本）</li>
</ul>
<h2><strong>步骤</strong></h2>
<ul>
<li>解压 Cocos2d-x 压缩包：将下好的引擎解压到你认为合适的地方，比如说 D 盘或者 E 盘。</li>
<li>打开解压后的 Cocos2d-x 引擎的目录，可看到如下文件：</li>
</ul>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/cocos2dx/20131016170507.jpg?x-oss-process=style/zip" alt="" /></p>
<p>如果你装的是 VS2010，则打开 cocos2d-win32.vc2010.sln；如果你装的是 VS2012，则打开 cocos2d-win32.vc2012.sln，如上图红色框表示的。此时会自动打开 VS2012（或 VS2010），稍等片刻后你会看到 Cocos2d-x 自带的例子都已经自动加载到 VS 的工程目录下了。如下图：</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/cocos2dx/20131016215353.jpg?x-oss-process=style/zip" alt="" /></p>
<ul>
<li>加载完毕后，在 Solution 'cocos2d-win32.vc2012' （解决方案） 处右击鼠标，选择“Build solution”(生成解决方案)，如下图...</li>
</ul><a href="https://geekplux.com/posts/cocos2d-x_environment_build">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[CoffeeScript 笔记]]></title>
        <id>https://geekplux.com/posts/coffeescript_note</id>
        <link href="https://geekplux.com/posts/coffeescript_note"/>
        <updated>2014-05-15T19:06:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2014/05/15/coffeescript_note">https://geekplux.com/2014/05/15/coffeescript_note </a></p>
</blockquote>
<p>最近读了《CoffeeScript程序设计》的前半部分「核心 CoffeeScript」。对 CoffeeScript 也是有了初步的了解，本文只是我的随手笔记，并没有非常系统的总结 CoffeeScript 语法，想学习语法的同学可以看以下两份中文材料：</p>
<ul>
<li><a href="http://island205.github.io/tlboc/">CoffeeScript中文手册</a></li>
<li><a href="http://island205.github.io/coffeescript-cookbook.github.com/">CoffeeScript Cookbook</a></li>
</ul>
<h2>为什么要用 CoffeeScript？</h2>
<ul>
<li>采用了 JavaScript 中的 Good Parts，符合 JS 最佳实践</li>
<li>代码简洁清晰，有很多语法糖</li>
</ul>
<h2>一些特性</h2>
<h4>1.有意义的空格</h4>
<p>CoffeeScript 移除了所有的大括号和分号。</p>
<p>JS 会自动在行尾添加<code>;</code>，但它又没有纯粹的设计为一款不需要加分号的语言，所以有时候会引起一些蛋疼的Bug。而 CoffeeScript 会在编译出的 JS 代码里每行都加<code>;</code>，很方便。</p>
<p>CoffeeScript 和 Python、Ruby 一样，采用强制缩进（Coffee的很多地方与 ruby 类似)，这种简洁，可读性又很强的代码，让人大爱。</p>
<h4>2.变量作用域的控制</h4>
<p>JS 中的变量作用域一直让人诟病。</p>
<p>CoffeeScript 把编译生成的 JS 封装在一个匿名函数中：</p>
<pre><code class="language-javascript">(function(){
  // 这里是编译生成的代码
}).call(this);
</code></pre>
<p>这样就巧妙避免了全局作用域的污染。同时，CoffeeScript 始终在编译生成的 JS ...</p><a href="https://geekplux.com/posts/coffeescript_note">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[CoffeeScript 编码风格指南（译）]]></title>
        <id>https://geekplux.com/posts/coffeescript_style_guide</id>
        <link href="https://geekplux.com/posts/coffeescript_style_guide"/>
        <updated>2014-06-21T23:47:00.000Z</updated>
        <content type="html"><![CDATA[<p>这份指南阐述了一些 [CoffeeScript][coffeescript] 的最佳实践和编码惯例。</p>
<p>这份指南是社群驱动的，非常鼓励大家来贡献内容。</p>
<p>请注意这还是一份正在完善的指南：仍有很多地方可以改进，有些已制定的准则也不一定是社区惯用的（基于此，在适当的情况下，这些有待斟酌的准则将有可能被修改或删除。）</p>
<h2>灵感</h2>
<p>本指南中的很多细节受到了几份现有的风格指南和其他资源的启发。特别是：</p>
<ul>
<li>[PEP-8][pep8]: Style Guide for Python Code</li>
<li>Bozhidar Batsov's [Ruby Style Guide][ruby-style-guide]</li>
<li>[Google's JavaScript Style Guide][google-js-styleguide]</li>
<li>[Common CoffeeScript Idioms][common-coffeescript-idioms]</li>
<li>Thomas Reynolds' [CoffeeScript-specific Style Guide][coffeescript-specific-style-guide]</li>
<li>Jeremy Ashkenas' [code review][spine-js-code-review] of [Spine][spine-js]</li>
<li>The [CoffeeScript FAQ][coffeescript-faq]</li>
</ul>
<h2>目录</h2>
<ul>
<li><a href="#%E7%81%B5%E6%84%9F">灵感</a></li>
<li><a href="#%E7%9B%AE%E5%BD%95">目录</a></li>
<li><a href="#%E4%BB%A3%E7%A0%81%E5%B8%83%E5%B1%80code-layout">代码布局（Code Layout）</a>
<ul>
<li><a href="#tab-%E8%BF%98%E6%98%AF-%E7%A9%BA%E6%A0%BCtabs-or-spaces">Tab 还是 空格？（Tabs or Spaces?）</a></li>
<li><a href="#%E6%9C%80%E5%A4%A7%E8%A1%8C%E5%AE%BDmaximum-line-length">最大行宽（Maximum Line Length）</a></li>
<li><a href="#%E7%A9%BA%E8%A1%8Cblank-lines">空行（Blank Lines）</a></li>
<li>[结尾空白（Trailing Whi...</li>
</ul>
</li>
</ul><a href="https://geekplux.com/posts/coffeescript_style_guide">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Collapsing margins——合并的外边距]]></title>
        <id>https://geekplux.com/posts/collapsing_margins</id>
        <link href="https://geekplux.com/posts/collapsing_margins"/>
        <updated>2014-03-14T21:10:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2014/03/14/collapsing_margins">https://geekplux.com/2014/03/14/collapsing_margins </a></p>
</blockquote>
<p>昨天在写 CSS 时遇到一个小问题，困扰了我好长时间，最后 Google 之，发现早有前人踩过此坑。为免以后再掉进坑，记下来比较好。</p>
<p>昨天遇到的问题是这样的。我设置了一对父子元素如下：</p>
<pre><code class="language-html">&lt;div class=&quot;parent&quot;&gt;Parent
    &lt;div class=&quot;children&quot;&gt;Children
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;
</code></pre>
<p>它们的样式如下：</p>
<pre><code class="language-css">.parent {
    margin-bottom: 10px;
    width: 80px;
    height: 20px;
    background-color: yellow;
}
.children {
    margin-bottom: 20px;
    width: 80px;
    height: 20px;
    background-color: red;
}
.divider {
    height: 1px;
    background-color: black;
}
</code></pre>
<p>产生的效果如图所示：</p>
<p>![][1]</p>
<p>为什么分割线跑到了 Children 里面？这两个父子元素都设置了 <code>margin-bottom</code>，加起来应该是 30px，为什么现在成了 20px？种种疑问在我脑中盘旋。刚开始以为是万恶的 <code>position</code>，但是我把所有能想到的属性排列组合都设置了一遍，发现还是不行。果断 Google，才知道这个问题由来已久……</p>
<h2>collapsed margin</h2>
<p>关于 collapsing-margin，有 [W3C 的官方介绍][2]：</p>
<blockquote>
<p>In CSS, the adjoining m...</p>
</blockquote><a href="https://geekplux.com/posts/collapsing_margins">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[色盲的世界]]></title>
        <id>https://geekplux.com/posts/colorblind-world</id>
        <link href="https://geekplux.com/posts/colorblind-world"/>
        <updated>2019-12-10T20:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>上周六我去体检，不可避免地又体验了一次把所有色盲图谱全部辨认一遍的“特权”，最后医生在结果栏里干脆地写下了“红绿色盲”几个字。</p>
<p>我第一次认识到自己色盲大概是小学体检的时候，医生用看怪物的眼神让我去辨认了一张又一张的色盲测试图。眼神从奇怪到嘲笑，从期待我说对到期待我说错，最后周围的人都在笑，包括老师和同学。我倒没在意这突如其来的恶意，因为我更在意为什么别人能看出图里的图案我却看不出来。后来回家求证之后，知道自己是遗传所得，也就释然了。我特意去查过色盲的定义，我的严重程度应该算是色盲，不是色弱。</p>
<p>但是各位，<strong>这并不代表我的世界不是彩色的</strong>……不要想象得太夸张。</p>
<h2>色盲看到的世界</h2>
<p>其实在日常的生活中， 99% 的情况下我是不会意识到眼前的这个颜色是不对的，除非别人特意问我。我应该只是红绿色盲，蓝色系的我是非常敏感的。而且即使是红绿，饱和度够的话我也还是分得清的，不是说看到就是完全一个颜色……</p>
<p>我唯一有印象的能和别人体会到差异的，大概就是去景区的时候，别人感慨这个花的某某色真好看啊，我会反应一下，竟然不是粉色是紫色？平时买衣服是能分清的，如果模棱两可就去问问售货员，基本上差不太多，不会说把纯绿认成纯红。</p>
<p>红绿灯是完全分得清的，我看到大概是红灰灯（接近红白灯），因为那个红色我觉得很亮，绿色觉得很暗。炒股看 K 线图是真的分不清，完全看不出涨跌，但如果把背景色调成暗色，就立马分得清了……多谢开发者提供 Dark 模式或色盲模式，要不然也就告别投资了（挥手）……</p>
<p>每次被别人发现我认错了颜色，我都会被连续问很多次“这个是什么颜色”、“那个是什么颜色”，有的人是纯粹好奇，有的人明显的恶意。其实我何尝不知道对方是在期待我说错然后嘲笑我一番，但我心比较大，就配合配合，满足别人小小的心理，对我也无甚损失。</p>
<h2>非色盲的感觉</h2>
<p>现在有很多矫正色盲的眼镜，只要带上之后，就可以看到正常人眼中的世界。我曾经带上过一副，发现……<strong>大同小异</strong>，说实话和我平时看到的也差不多……</p>
<p>应该是只有遇上类似“色盲测试图”中的情况才是真正的视觉紊乱的时候...</p><a href="https://geekplux.com/posts/colorblind-world">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Backbone View 之间通信的三种方式]]></title>
        <id>https://geekplux.com/posts/communicating-between-views-in-backbone</id>
        <link href="https://geekplux.com/posts/communicating-between-views-in-backbone"/>
        <updated>2015-07-04T20:49:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2015/07/04/communicating-between-views-in-backbone">https://geekplux.com/2015/07/04/communicating-between-views-in-backbone </a></p>
</blockquote>
<p>掌握一个 MVC 框架，最关键的一节就是掌握如何在各个 View 之间通信。之前用 Angular 时，觉得基于事件的通信方式 ($on, $emit, $boardcast) 或者 基于 service 的方式都非常好用。转战 Backbone 之后，由于对 Backbone 的事件机制理解不够且使用非常灵活，一直没找到一个好的通信方式。直到看见这篇文章，作者通过一个简单的例子，层层深入，把 Backbone View 之间通信的三种方式讲的清晰明了。译文如下（已拿到授权）：</p>
<hr />
<p>我正在开发的这个网页主要有两部分，分别是 document 和 sidebar。</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/backbone/backbone-application.png?x-oss-process=style/zip" alt="Backbone Application" /></p>
<p>如上图所示，我设立了三个视图 (view) :</p>
<p><code>ApplicationView</code> - 作为最外层视图来包含下级视图
<code>DocumentView</code> - 展示正在编辑或浏览的内容
<code>SidebarView</code> - 展示一些和 document 相关的信息</p>
<p><code>DocumentView</code> 和 <code>SidebarView</code> 作为 <code>ApplicationView</code> 的子视图，所以整体的视图结构如下图所示：</p>
<p>![Backbone View Structure](https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/backbone/backbone-view-st...</p><a href="https://geekplux.com/posts/communicating-between-views-in-backbone">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[在美国拥有一辆 Tesla 的成本]]></title>
        <id>https://geekplux.com/posts/cost-of-tesla</id>
        <link href="https://geekplux.com/posts/cost-of-tesla"/>
        <updated>2023-12-27T21:35:00.000Z</updated>
        <content type="html"><![CDATA[<p>Tesla 是目前汽车中最受瞩目的品牌，不少程序员都想拥有一辆。我的朋友们，很多都有至少一辆 Tesla。他们人大部分都在国内，每每和我聊起用车体验都会发现国内和美国两地的成本差异很大，所以我想写一篇来捋一下在美国拥有一辆 Tesla 的成本，以供参考。</p>
<p>我自己开的是一辆 Model 3 Rear-Wheel Drive，这是最便宜的车型，我选择它的原因会在结尾提到，以下我先直接列一个表，其中 Model Y 的成本我是<strong>估算</strong>的。</p>
<p>| 成本类别 | Model 3 | Model Y |
| --- | --- | --- |
| 初始购车价格| $38990|  $43990|
| 税收激励 | 最高 $7500 | 最高 $7500 |
| 充电设备| $200 | $200 |
| 充电成本 | $500/年 | $500/年 |
| 保险费用| $3600/年 | $4000/年 |
| 维护成本 | $400/年 | $400/年 |</p>
<p><em>更新：保险我是按我自己和朋友的实际支出算的，我俩都没太长驾龄，且在交通不好的州。</em></p>
<p>接下来我逐一拆解：</p>
<h2>购车成本</h2>
<p>表中所列的是当前车价，但 Tesla 的车价调整十分频繁，每个月都不一样（<em>这里我悄悄吐槽一句，自从买了之后车价就一直跌，被马斯克背刺的好惨</em>）。</p>
<p>我是全款购买的，如果是走车贷，那得再加上利息成本，现在美国车贷利率在 6% 以上（如果是信用分在 750 以下）。</p>
<p>其次除了车价，还得加上 Destination Fee，我理解这个就是运费，无论你在美国哪里购买，这个费用都是一样的，$1390。注册费（Registration Fee）不同的州价格不同，我所在的州是 $200，但是有些州高达 $500。</p>
<p>别忘了，美国还有消费税，这个也是每个州不同，我所在的州是 7.5%。表格中提到的税收激励是指联邦政府对购买新能源汽车的补贴，最高 $7500，但是这个补贴是有条件的，如果你的收入超过一定数额，就不符合条件了...各州也有所不同，case by case...</p><a href="https://geekplux.com/posts/cost-of-tesla">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何新建一个 Cocos2d-x 项目]]></title>
        <id>https://geekplux.com/posts/create_cocos2d-x_project</id>
        <link href="https://geekplux.com/posts/create_cocos2d-x_project"/>
        <updated>2013-10-17T16:43:00.000Z</updated>
        <content type="html"><![CDATA[<p>作为一名程序猿的，凡事都得从 Hello World 开始！接下来就由我来演示一遍如何创建一个 Hello World 项目。</p>
<p><strong>要想创建一个 Cocos2d-x 项目就必须有它的模板</strong>，如果你使用过 Cocos2d-x2.1.4 以前的版本就知道其官方自带有模板安装文件，所以你可以下载 2.1.4 以前的版本（如 cocos2d-x 2.1.3），将 cocos2d-x 2.1.3\template 目录下的<code>msvc</code>文件夹复制到 cocos2d-x 2.2.0\template 下，再复制 cocos2d-x 2.1.3 目录下的文件<code>install-templates-msvc.bat</code>到 cocos2d-x 2.2.0 下，点击运行，结束后你就可以在 VS2012 的新建项目中发现有 Cocos2d-x 模板了。</p>
<p>但是新版的已经没有了，<strong>官方推荐用脚本新建项目</strong>。所以我们还是参照官方文档用最新的方法吧。一个脚本生成所有平台的项目文件，非常方便！</p>
<h2><strong>准备</strong></h2>
<ul>
<li>按照上一篇<a href="http://www.geekplux.com/2013/10/16/Windows8.1%E4%B8%8BCocos2d-x%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/">《Windows8.1 下 Cocos2d-x 环境搭建》</a>先搭建好环境</li>
<li>下载 Python<a href="http://www.python.org/download/">官网下载</a></li>
<li>安装 Python：
一路 next 就行了，安装目录默认为 <code>C:\Python27\</code></li>
</ul>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/cocos2dx/20131017155948.jpg?x-oss-process=style/zip" alt="" /></p>
<ul>
<li>配置环境变量：
这一步我相信大部分人都不陌生，新建变量名为 <code>PYTHON_HOME</code> 的系统变量，值为你 Python 的安装目录，如图：</li>
</ul>
<p>![](https://geekpluxblog.oss-cn-hongk...</p><a href="https://geekplux.com/posts/create_cocos2d-x_project">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[CSS 编写原则]]></title>
        <id>https://geekplux.com/posts/css_written_principles</id>
        <link href="https://geekplux.com/posts/css_written_principles"/>
        <updated>2014-02-20T13:57:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2014/02/20/css_written_principles">https://geekplux.com/2014/02/20/css_written_principles </a></p>
</blockquote>
<p>CSS 写的好可以让网页瞬间高大上，但是再高大上的网站如果效率很低也不行，尤其是在近几年「用户体验」这个词烂大街以后。前两天自己写了几个页面的 CSS，顺便拜读了很多关于 CSS 如何写的更好的文章，现在动手总结一下。</p>
<h2>权重</h2>
<p>CSS 中我个人觉得权重是个很需要掌握的概念。它决定哪一条样式将被应用在元素上，哪一条样式将被覆盖掉。众所周知，CSS 选择器，最基本的有三种：</p>
<ul>
<li>id 选择器</li>
<li>class 选择器</li>
<li>标签选择器</li>
</ul>
<p>还有一种<strong>内联样式</strong>( inline-style )，是指直接在 HTML 代码中添加 CSS 样式。以上四种的权重顺序是：<strong>内联样式（1000）</strong> &gt; <strong>id 选择器（100）</strong> &gt; <strong>class 选择器（10）</strong> &gt; <strong>标签选择器（1）</strong>。括号内分别是它们的<strong>权重值</strong>！。举个栗子：</p>
<pre><code class="language-html">&lt;span style=&quot;color : #fff;&quot; id=&quot;example&quot; class=&quot;demo&quot;&gt;栗子&lt;/span&gt;
</code></pre>
<pre><code class="language-css">#example {color: #000;}
</code></pre>
<pre><code class="language-css">.dome {color: red;}
</code></pre>
<pre><code class="language-css">span {color: blue;}
</code></pre>
<p>如果只有第四句来定义样式，则这个<code>&lt;span&gt;</code>是蓝色的，如果加上第三条语句，则变成了红色，第四句被覆盖掉了。如果用第二句，则变为黑色，第三句即被覆盖，以此类推如果用内联样式则<code>&lt;span&gt;</code>变成白色了。</p>
<p>像我这样的菜鸟刚开始滥用各类选择器，往往会出现想覆盖父元素样式的时候覆盖不了的情况，熟不知<strong>要想覆盖，必须让这条语句的权重值大于父元素</strong>（具体可以参考这篇文章[你应该知道的一些事情——CSS 权重](...</p><a href="https://geekplux.com/posts/css_written_principles">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[D3 force layout and WebGL integration]]></title>
        <id>https://geekplux.com/posts/d3-force-and-webgl-integration</id>
        <link href="https://geekplux.com/posts/d3-force-and-webgl-integration"/>
        <updated>2017-06-27T19:57:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2017/06/27/d3-force-and-webgl-integration">https://geekplux.com/2017/06/27/d3-force-and-webgl-integration </a></p>
</blockquote>
<blockquote>
<p>D3 是目前最流行的数据可视化库，WebGL 是目前 Web 端最快的绘制技术。由于性能问题的局限，将两者结合的尝试越来越多（如），本文将尝试用 <a href="https://github.com/d3/d3-force/">D3 的力导向图</a> 和 <a href="https://github.com/mrdoob/three.js/">Three.js</a> 和 <a href="https://github.com/pixijs/pixi.js">PixiJS</a> 结合。全文阅读完大概 5 分钟，因为你重点应该看<a href="https://github.com/geekplux/d3-force-webgl-integration-demo">代码</a>。</p>
</blockquote>
<p>做数据可视化时，必然会考虑<strong>性能</strong>的问题。早前数据可视化都是用 Qt 等 GUI，后来逐渐迁移到了迅猛发展的浏览器上展示，Web 的性能问题成了大多数可视化的局限，尤其是在三维可视化，或数据量特别大的时候。现在主流的 Web 可视化技术为三种：SVG、Canvas 和 WebGL，难易程度和性能如下图：</p>
<p><img src="https://ooo.0o0.ooo/2017/07/09/59610ee72e616.png" alt="Web visualization tech" /></p>
<p>SVG 的优点很多，编辑简单，交互便捷，灵活性极高，业内成熟的可视化工具（如 d3）都是用的 SVG。但是每个 SVG 都是一个 DOM 元素，随着它的数量上来之后，交互开始慢的难以忍受。这是因为每当修改一个 DOM 对象，只要这个对象在文档里，接着在浏览器里就会发生两个动作，一个叫 <strong>Reflow（重排，就是重新排版）</strong>，另一个叫 <strong>Repaint（重绘，就是重新渲染页面）</strong>。这两个动作不一定都会...</p><a href="https://geekplux.com/posts/d3-force-and-webgl-integration">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[那些年我打过的日结工]]></title>
        <id>https://geekplux.com/posts/daily-wage-jobs</id>
        <link href="https://geekplux.com/posts/daily-wage-jobs"/>
        <updated>2026-01-18T14:30:00.000Z</updated>
        <content type="html"><![CDATA[<p>反内卷、躺平在经济下行期恰逢其时地成为了热词。更早些年，在我的学生时代，<strong>三和大神</strong>是流传甚广的都市传说，仿佛他们不必规划未来，也活得潇洒自在。但那时的我，已经具备了一些社会判断力，深刻地知道这些生活方式背后的无奈与不易，而这些判断并不是来自于书本，而是来自于我早年打过的日结工。</p>
<p>日结工，顾名思义，<strong>工资按天结算的工作</strong>。从初中毕业开始，按时间顺序，我依次做过：</p>
<ul>
<li>洗煤厂工人</li>
<li>搬运工</li>
<li>工厂车间工人</li>
<li>酒店客房服务生</li>
<li>酒店餐厅服务生</li>
</ul>
<p>这些经历我极少与人提起，但接下来我会慢慢道来，现在回想起来它们构成了我理解社会最早的一套“底层模型”。</p>
<h2>洗煤厂工人</h2>
<p>第一次，总是印象最深刻的。</p>
<p>这里笼统的“工人”，是因为我无法准确描述我的工种。洗煤厂是我们资源大省很典型的一个产业，靠近煤矿的地方都会有洗煤厂。这是一个成熟的流水线，大卡车把煤从矿里拉到洗煤厂，车斗立起来对准一个超大型<strong>漏斗</strong>把煤炭从上面倾泻而下。</p>
<p>我当时的工资是<strong>25 元/天</strong>，你没看错。负责的工作是：在煤炭倾倒后，立刻冲到大漏斗中央，把明显不是煤的石块挑出来，并把过大的煤块敲碎，确保它们能顺利落下，从而不阻塞下一批煤。我画了个简单的示意图帮助理解。</p>
<p><img src="/images/daily-wage-jobs/job.jpeg" alt="" /></p>
<p>这个工作看似简单，但远比我想象得危险而繁重：</p>
<ul>
<li>首先，我最开始是站在煤堆上，手持一根接近擀面杖粗细的超长铁棍敲煤。铁棍很长，杠杆极大，熟练工抡得轻松，我却几乎舞不动，所以后来我基本上每次都需要肉身冲下去。</li>
<li>其次，我站在漏斗中央随时要面临下一车煤倒下来的风险。尽管有一个人协调指挥，但他经常一看不见人还在下面，二低估煤炭落下的速度，三低估人需要撤离的时长。</li>
<li>敲打煤块很费力，经常震得我虎口疼，敲完我得把锤子别在腰上，把非煤块（金属，大石块）挑到旁边，再尽可能地抱起来往煤堆上走，再把它们扔出煤堆外。</li>
</ul>
<p>所以整个过程相当于：冲刺 → 无氧运动 → 负重爬坡 → 短暂喘息 → 下一循环</p>
<p>当时和我一起工作的工友刚开始...</p><a href="https://geekplux.com/posts/daily-wage-jobs">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[不需要扫描仪，数字化归档自己的文件]]></title>
        <id>https://geekplux.com/posts/digitally-archive-your-own-files</id>
        <link href="https://geekplux.com/posts/digitally-archive-your-own-files"/>
        <updated>2019-08-27T20:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>生活中我们经常遇到需要扫描件、复印件的时候，把原件直接交给对方让人很不放心，自己跑一趟打印机又很麻烦，得经过扫描、邮件接收、下载等一系列操作，实在不优雅。而且，数字化时代了，保留实体原件远不如在电脑上保留一份扫描件更安全方便。</p>
<p>其实现在手机相机如此发达，我们完全可以坐在桌前动动手指就完成这一系列操作。想起当年自己抱着毕业证、职业资格证等一堆重要文件一张张扫描就流下了没有技术的泪水。所以本文来教你如何告别扫描仪。</p>
<h2>用 APP 达到扫描仪的效果 - PhotoScan</h2>
<p>Google 出了一款神奇的 APP，叫 <strong>PhotoScan</strong>，iOS 和 Android 都有。打开 APP 对准你要扫描的照片或文件，会出现四个圆点和一个位于中心的空心圆，依次将空心圆对准四个圆点，即可完成扫描。大概 1 秒钟，扫描完的图片就会出现在你的手机相册里了。下面左图我扫描的示例，我太懒了，就不录制动图了，大家还是亲手实验一下吧，操作十分简单。右图是我扫描得到的<strong>图片效果</strong>，是不是很棒！</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/scan/111.png?x-oss-process=style/zip" alt="" /></p>
<p>*补充：我发现微软也有自己的扫描 APP，也很好用，叫 <strong>OfficeLens</strong> *</p>
<h2>用 APP 提取文件文本内容</h2>
<p>现在 OCR 应用太多了（OCR：Optical Character Recognition，字面意思是光学字符识别，说人话就是把图片里的文字识别提取出来），其实底层算法差不多，就看哪个软件优化的好了。我试过的软件有<strong>白描</strong>、<strong>CamScanner</strong>等、但其实 iOS 自带的 <strong>Notes</strong> 就提供了扫描文本的功能，本着极简的原则，我把第三方应用都卸载了，用 <strong>Notes 完全满足了我的需求</strong>。</p>
<p>![](https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/scan/222.png?...</p><a href="https://geekplux.com/posts/digitally-archive-your-own-files">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[别当回事儿]]></title>
        <id>https://geekplux.com/posts/do_not_care</id>
        <link href="https://geekplux.com/posts/do_not_care"/>
        <updated>2011-10-18T10:17:00.000Z</updated>
        <content type="html"><![CDATA[<p>一直以来都喜欢写那种别人一看就懂的文字，也因为自己的水平比较低，写不出太深刻难懂的。但是我发现太通俗了，别人就很容易知道你的想法，然后不经意间说两句实话，就能引得不少人对号入座。就像你说了句话，当你是朋友才和你吐露心声，没想到最后传到当事人耳朵里就变的极其离谱了。这不是怪朋友哈，就怕你们又对号入座，呵呵，特此说明一下原因：1.人在转述一件事的时候会本能的夸大，本来轻若鸿毛的事情，最后以讹传讹之后，就变得重于泰山了。2.人在转述一件事情的时候还会本能的故作知情者。人内心最脆弱的就是怕别人不相信自己，所以哪怕是为了得到别人暂时的信任也会装的有模有样，可能他只是听到了风言风语。</p>
<p>人身上不知道为什么有这些奇怪的本能。还有一个最让我讨厌的本性就是“围城心理”。城里的人想出去，城外的人想进来。得不到的永远是最好的，得到了的又不珍惜。我虽然讨厌这个心理，但有时候还是老犯这个错误，江山易改，本性难移。我还慢慢的发现当人们犯这个错误的时候是不自知的，即使他内心也知道这是个错误。这时候就需要有朋友来点醒他，我很庆幸自己这样的朋友很多。</p>
<p>而且在我看来，就因为得不到，人就会强制喜欢上他得不到的。仿佛那是个没缺点的事物，然后盲目，虚荣，贪婪等等心理促使你不断的去追求它，等真正得到的那一天，你才发现这根本不是你当初想要的东西，差距太大了。</p>
<p>所以有时候反过来想想自己现在追求的东西，是不是因为双眼已经被蒙蔽了。。。人们并不知道自己现在是不是已经处于这个状态，以致于有时还得做自己厌恶的事。比如面对自己看不顺眼的人，非得使劲把自己伪装的让人家看顺眼，就算是敷衍也得敷衍的漂亮点，因为人家说灭你就直接灭了，貌似连灰都不剩。再比如跟自己不熟的人打交道，非要装作的很熟，貌似这样别人才能答应你可能本来就是合理的请求。有必要吗？心里觉得没必要，但是现实非要逼的你说有必要。中国社会是人情社会，人的力量比纸的力量大，爸的力量比法的力量大，我爸是李刚，你能拿法律惩罚我？搞笑！</p>
<p>当看完上一段，可能某些人又会对号入座，亲爱的，我真的不是说你，要不然你再仔细看看第一自然段？这...</p><a href="https://geekplux.com/posts/do_not_care">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[参加 Google Summer of Code 的体验]]></title>
        <id>https://geekplux.com/posts/experience-of-gsoc-google-summer-of-code</id>
        <link href="https://geekplux.com/posts/experience-of-gsoc-google-summer-of-code"/>
        <updated>2018-01-07T16:13:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2018/01/07/experience-of-gsoc-google-summer-of-code">https://geekplux.com/2018/01/07/experience-of-gsoc-google-summer-of-code </a></p>
</blockquote>
<p>Google Summer of Code （简称 GSoC）中文我叫它「谷歌编程夏令营」，是一年一度谷歌组织的类似暑期实习的编程活动。2018 年的申请马上就要开始了，在此我分享一下我参加 2017 年 GSoC 的体验。</p>
<h2>什么是 Google Summer of Code？它值得参加么？</h2>
<p>这个问题可以参考<a href="https://zhuanlan.zhihu.com/p/27330699">Google 编程之夏(GSoC)：海量优质项目，丰厚报酬，你竟然还不知道？</a>这篇文章，里面介绍的非常详细，还客观的论述了为什么 GSoC 值得参加。不过在此我还是简单科普一下：</p>
<p>简言之，<strong>GSoC 是一年一度谷歌组织的、全球性的学生编程活动。学生利用暑假时间给开源社区贡献代码，谷歌支付报酬给学生</strong>。</p>
<p>将 GSoC 的特点提炼一下就是：</p>
<ul>
<li><strong>针对学生</strong>。只有学生身份才能申请参加（包括本科、硕士、博士）</li>
<li><strong>一年一度</strong>。每年都能申请，3 月末开始（建议早点开始套磁）</li>
<li><strong>全球性</strong>。你可能会和世界各地的学生一起工作</li>
<li><strong>开源社区</strong>。你是为开源社区贡献代码，大部分组织在 GitHub 上，所以你的贡献都是开源的，谁都能看到</li>
<li><strong>暑假期间</strong>。6 月正式开始工作，到 9 月</li>
<li><strong>报酬</strong>。谷歌支付报酬，中国区为 3600 刀，比大厂实习工资都高</li>
<li><strong>远程工作</strong>。这点在刚才的概念介绍中没提到，你可以在你想呆的任何地方写代码，不用去办公室</li>
<li><strong>导师指导</strong>。每个项目会给你配一个导师，有的导师非常负责且是大牛，你可以跟他学到很多</li>
</ul>
<p>我相信这些点已经足够吸引一个在校学生了。</p>
<h2>GSoC 怎么申请...</h2><a href="https://geekplux.com/posts/experience-of-gsoc-google-summer-of-code">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[告别社交网络有多难]]></title>
        <id>https://geekplux.com/posts/farewell_social_network</id>
        <link href="https://geekplux.com/posts/farewell_social_network"/>
        <updated>2014-08-02T20:50:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2014/08/02/farewell_social_network">https://geekplux.com/2014/08/02/farewell_social_network </a></p>
</blockquote>
<p>我猜 QQ 空间最初应该是作为和新浪博客竞争才出现的，当时我还在初中，不会写什么 Blog，所以空间出来正迎合了我们这些学生的需求。随后「非主流」、「火星文」开始火，又是抓住了青春期学生的叛逆心理。不过我当时对非主流不是太感冒，一直很用心的经营着空间，犹记得当年幼稚的我还写了篇文章宣称空间是我的心灵归宿（正如现在矫情的我写这篇应该退出社交网络的文章）。所以从初中开始我的喜怒哀乐全在空间里，文章写了上百篇，照片更是几千张。</p>
<p>尽管后来开始沉迷微博、豆瓣、知乎等，空间一直是我割舍不下的一块，因为那里有旧友，有牵绊，这是一份长久以来捆绑着我的数据库。然而，随着认知的渐渐成熟，我越来越觉得<strong>人应该远离社交网络</strong>，不止是空间。理由也是在一次次和所谓羁绊的牵扯过程中感悟出来的：</p>
<h3>输出</h3>
<p>刚开始我天真的以为社交网络是用来分享的，后来发现并不是。社交网络沦为了一个表演的舞台，每个人在上面表演，把想展示给别人的一面展示出来。发表一段状态，分享一篇文章或视频，并不是共享他的感受，也不是觉得这段信息真的有价值，而是在传递一种他<strong>自以为很重要的自我展示的信息</strong>，翻看朋友圈或其他的 timeline，随便找一条仔细分析一下就会发现他并不是在描述他的感受，而是在展现一些信息，或者直接说是炫耀。自从「逼格」一词横空出现，更是很好的定义了这种社交网站的分享行为其实就是为了<strong>彰显逼格</strong>。收到的评论，互相的交流根本无足轻重，因为这本身就不是输入，而是变相地输出。人们渐渐的带上了面具，因为社交网站上的你，并不是真正的你，而是<strong>你想让别人看到的你</strong>。</p>
<h3>偏见</h3>
<p>每个社交网络都有它的特点。微博烹饪着毫无营养的段子只供一乐；豆瓣是文艺青年的温床；空间：不转不是中国人……在很久很久以前，社交网络分享...</p><a href="https://geekplux.com/posts/farewell_social_network">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[突闻金庸先生逝世有感]]></title>
        <id>https://geekplux.com/posts/feelings-after-jin-yong-has-gone</id>
        <link href="https://geekplux.com/posts/feelings-after-jin-yong-has-gone"/>
        <updated>2018-10-30T20:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>桃花影落，碧海潮生。突闻金庸先生逝世的消息，踟蹰许久，思绪纷飞，手中的代码终究是写不下去了。万千感慨不如成文。</p>
<p>每走一个人，大家都感慨一个时代的终结。但不管是谁给我的震撼，都没有金庸先生这次这般得猛烈，毕竟整个童年和青春都是他。</p>
<p>论起是如何接触金庸小说和武侠世界的，首先要感谢 TVB，如果不是 TVB 在 90 年代一部部制作精良的金庸小说改编电视剧，可能我是不会知道金庸是谁的。后来直到高中，我拥有了人生中第一个 mp4，便从此一头扎进了金庸先生的书海里。惭愧的是，一直看的都是各种电子书的盗版，没有真正去实体店买过正版书。</p>
<p>一路看到大学，从早看到晚，废寝忘食。看一通宵的时候也是有的，即使是看过的片段，比如萧峰三兄弟少林寺大战，比如苗人凤和胡一刀大战……第二天早上的课也不去了，中午的饭让室友带回来，整天就把着手机，完全忘了时间。这种无忧无虑的生活过了大学之后就再没有了。</p>
<p>飞雪连天射白鹿笑书神侠倚碧鸳，我只看了 9 本，其中《天龙八部》和《笑傲江湖》看的是最多的，也是最喜欢的。《雪山飞狐》的结尾太突然，《射雕》又太伟光正，《神雕》我更喜欢古天乐塑造的形象，而不是书中太古灵精怪的样子。最喜欢的人物，是令狐冲，“一见尼姑，逢赌必输”，喜欢独孤九剑“行云流水，任意所至”，令狐冲的性格也最适合练此剑法了。</p>
<blockquote>
<p>“什么狗屁规矩，一窍不通”</p>
</blockquote>
<p>喜欢一个角色，大抵是因为找到了自己的一些影子，我喜欢这种肆意恩仇，不顾一切的感觉。我那时候年纪还小，却也总感慨人生在世，匆匆一瞥，不应该被各种教条规矩限定自己，想做什么就做。金庸先生的小说给了我很多人生的启示，里面很多句子，看一遍就记住了，不用细想，也不用强背。而后随着年龄的增长，虽然不身处书中仗剑执酒的江湖，却也在这社会中随波逐流，慢慢对书中人物的决断，性格，甚至说出的一些话有了更多的品味。我想金庸先生有的书我现在读起来还不畅快，估计就是因为我的阅历还不够吧，连他老人家自己随着年纪愈大也慢慢觉得书中情节有待斟酌。</p>
<p>我常和朋友说，读金庸以正三观。武侠带给我的太多：兄弟义气，江湖道义，红...</p><a href="https://geekplux.com/posts/feelings-after-jin-yong-has-gone">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[论交友]]></title>
        <id>https://geekplux.com/posts/friendship</id>
        <link href="https://geekplux.com/posts/friendship"/>
        <updated>2020-07-29T23:23:00.000Z</updated>
        <content type="html"><![CDATA[<p>以前如果有人对我说：“你怎么会和这种人认识”，那我肯定会心生反感并加以反驳，现在只会笑而不语。因为在这种特别主观的事情上，说服别人没有任何意义。</p>
<p>我自认为自己算是一个交友广泛的人，因为我一向保持开放。非黑即白在我的世界观里是不存在的，若要分析一件事或一个人，我总是会拆成独立的因素。我相信每个人都有自己对交友的理解，这篇文章，我想写写自己对友谊、对人、对友情岁月的认识。这无疑是个复杂的命题，但我想在<strong>未来某个时间节点</strong>，也许是十年后，<strong>回顾这篇文章时看到当时的自己</strong>。</p>
<h2>交友的标准</h2>
<p>首先，人是极其复杂的、是多元的、是发展的。其次，我只看于我有影响的部分。</p>
<h3>人的复杂与多元</h3>
<p><strong>我从不把人归类，也尽可能不靠标签识人。</strong></p>
<p>小时候看电视总是天真地问父母主角到底是好人坏人，但现在已经不会再问这种幼稚的问题了，有单纯的好人吗？有纯粹的坏人吗？《<a href="https://movie.douban.com/subject/26752088/">我不是药神</a>》中，程勇（徐峥饰）为了敛财走私仿制药，却救了很多病患，是好是坏？药企售卖高价特效药，但没有足够利润如何支撑它研发更多新药来攻克更多疾病？就连药贩子张长林，最后被捕也没把程勇供出，这又是好是坏？</p>
<p>人有多面，不同角度看过去可能是不同的样子。秦始皇焚书坑儒却也统一天下，隋炀帝劳民伤财却也开通运河。视角拉回现代，某教授学术精尖却猥亵学生，你不能否定他学术贡献，也不能肯定他私德有亏，他就是两者兼而有之的个体，不可能割裂取舍。“人是一切社会关系的总和”，<strong>我们不能离开具体的事件来分析人，也不能离开其社会关系来理解人</strong>。</p>
<p>另外，很多人无意之中喜欢用标签来识人，这个我也常犯，但事后常常会反思自己。一个四川人能吃辣，就是全部的四川人能吃辣吗？一个程序员木讷寡言，就全部程序员都是呆子吗？拿刚才的教授例子来说，你能说全国上下的教授都是这么猥琐吗？显然不能。<strong>个体永远是独立于群体的，不能将一个群体的概率在单个人身上设为100%</strong>。</p>
<p>*发生在我自己身上，比较极端但最让我印象深刻的例子：之前...</p><a href="https://geekplux.com/posts/friendship">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Goodbye，我的大学]]></title>
        <id>https://geekplux.com/posts/goodbye_my_university</id>
        <link href="https://geekplux.com/posts/goodbye_my_university"/>
        <updated>2014-02-02T20:22:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2014/02/02/goodbye_my_university">https://geekplux.com/2014/02/02/goodbye_my_university </a></p>
</blockquote>
<p>不知为何，现在写文章，第一句总想感叹一下时光流逝的速度，可能确实是年纪渐长……转眼已大四，伫立在象牙塔和江湖的十字路口，也是时候总结一下了。大学四年，不得不说是我成长最快的四年，也让我充分认识了上大学的必要性。第一次这么长时间跨度的总结，注定是篇长文。</p>
<h2>改变</h2>
<h3>环境的改变</h3>
<p>环境对一个人的影响程度因人而异，但对我尤甚，因为我自制力太差。虽然当初我在走进校园大门的时已经做好了心理准备，但学校的堕落程度还是一次次刷新了我的底线。确实，在一个糟糕的环境里，<strong>合群 = 浪费时间</strong>。这并不是鼓励不合群，而是要学会<em>择其善者而从之</em>。在大一，加入学生会就是一个改变小环境的机会。在学生会两年的时间里，我认识了众多有想法的朋友。每个人都有值得我学习的地方，每次经历都让我懂得很多道理。在升为部长之后更是事事亲力亲为，希望以身作则（事必躬亲绝对是最渣的管理方式-_-||）。而当班长，也是希望能严于律己，推己及人。当时我还想和班里的每位同学都搞好关系，真是too young too simple。李开复曾说：</p>
<blockquote>
<p>用胸怀接受不能改变的事，用勇气改变可以改变的事，用智慧分辨两者的不同</p>
</blockquote>
<p>这句话，是我在大学前的暑假读到的，通俗易懂，着实是上好的鸡汤。听了导师的话，我大一大二没事就往图书馆跑，毕竟<strong>人丑就要多读书</strong>啊。一直到了大二末，我偶然得知学校有实验室这块宝地，于是心向往之。在ZW学姐（衷心感谢）的帮助下，我终于厚着脸皮混进了实验室。刚进去的两个月，绝对是我大学获取知识最密集的两个月；也是最孤独的两个月；还是最不浮躁的两个月。宿舍沦为了我睡觉的地方，翘课的频率呈指数增长，班里的同学也渐渐觉得我神出鬼没。这成了我大学生活的分水岭，后半段的大学我都是在实验室度过的。那段时间耳边总回响一句话「*如果不...</p><a href="https://geekplux.com/posts/goodbye_my_university">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[杭州最适合闲来溜达的几条路线]]></title>
        <id>https://geekplux.com/posts/hangzhou-scenic-route</id>
        <link href="https://geekplux.com/posts/hangzhou-scenic-route"/>
        <updated>2019-02-24T20:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>我应该不算宅男，一个人的时候也喜欢没事到处溜达。在杭州呆了三年半，走过了杭州无数的大街小巷，有几条路线让我印象比较深，特别适合闲来无事随机溜达，在此推荐给大家。</p>
<h2>沿着公交线路</h2>
<p>坐公交“环游城市”是很多人消遣解压的方式。我推荐的这几条似乎都经过西湖，西湖很大，如果慢慢地走，细细地游，估计得要三整天，但它真的太美了，我去了那么多次还是不能自拔。</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/hangzhou/0.jpeg?x-oss-process=style/zip" alt="" /></p>
<h3>7 路</h3>
<p>7 路是西湖北面的一条公交线路，从杭州城站火车站一路到灵隐，你可以选择中途下车，也可以一直坐着，但我推荐还是下来走走吧，因为 7 路走的那条北山街非常的堵（游客多，热门路线）。</p>
<p>在<strong>钱塘门外站</strong>下车是<strong>风波亭</strong>，传说当年岳飞将军死的地方，<strong>葛岭站</strong>下车，往东走两步是<strong>蒋经国故居</strong>和著名的<strong>断桥</strong>，沿着断桥走是白堤，一直通到<strong>平湖秋月</strong>，再往前走是省博物馆、行宫和西泠印社，可以进去转转。</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/hangzhou/1.jpeg?x-oss-process=style/zip" alt="风波亭" /></p>
<p>如果在 7 路的<strong>岳坟站</strong>下车，则往北是岳王庙，往东是曲院风荷和苏堤，往西是杨公堤。沿着苏堤（苏东坡当杭州市长的时候建造）一直走过去就是著名的<strong>雷峰塔</strong>了，听着很近，其实整个苏堤走下来估计有 2 公里。雷峰塔对面是南屏晚钟，我身为中老年歌曲爱好者，每次走过，心里都会响起：</p>
<blockquote>
<p>南屏晚钟 随风飘送
它好象是敲呀敲在我心坎中
南屏晚钟 随风飘送
它好象是催呀催醒我相思梦</p>
</blockquote>
<p>![](https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/hangzhou/2.jpeg?x-oss-process=styl...</p><a href="https://geekplux.com/posts/hangzhou-scenic-route">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[幸福，是一种能力]]></title>
        <id>https://geekplux.com/posts/happiness_is_capability</id>
        <link href="https://geekplux.com/posts/happiness_is_capability"/>
        <updated>2012-05-18T14:23:00.000Z</updated>
        <content type="html"><![CDATA[<p>我们来人世间，走走看看，眼前的景色不是我们想要的，想要的又不知道是什么，有人说那个叫幸福。是的，貌似每个人都追求幸福，可幸福到底是什么。无数人给它下过定义，综合起来就是各种感观的形容词，或者永远实现不了的名词。</p>
<p>幸福是一种只能让我们不断追寻的东西，而却无法真正拥有。那些自称幸福的人，真的得到自己想要的了吗？而事实上得不到的才是我们想要的。</p>
<p>幸福不是拥有了最好的，而是美化了相对好的。每个人的境遇都相差无几，并不是上帝青睐那些有幸福感的人，一个老生常谈的例子：同样是半杯水，乐观的人会说：还有这么多。悲观的人说：只剩下这么点了。所以有幸福感的人所拥有的生活和你是一样的。而他们之所以有幸福感，只不过是进行了不切实际的自我安慰。</p>
<p>幸福不是一种客观事实，而是你内心的感受。那些幸福的人，或者说是善于自我安慰的人，仿佛能感到叶的无声，风的低吟，鸟的歌唱，甚至能从漫无边际的杂草中找到几朵绽开的小野花。但我们不妨掩卷沉思，这些美景的出现是不是因为他们的标准降低了。可能他本来想找的是一片山花烂漫，结果只有几朵。降低标准，自我安慰之后突然发现，几朵野花貌似更有诗意……好的，他感觉幸福了。这是真正的幸福吗？我不禁自问。我们来到世上就是为了不断的降低标准吗？就是为了长大之后嘲笑自己儿时想当科学家是多么的可笑吗？这就像佛陀告诉我们要忍，忍习惯了，我们就不会觉得痛苦。</p>
<p>幸福只是一种在我们一次次放弃梦想后再自我安慰的能力。</p>
<p>我们跌跌撞撞的一直走着，脚掌直接抵触大地的苍凉。生活在你无法接受它的时候还在继续。回忆并不是一种自信的表现，低着头托着腮，终于发现，生活要的就是一份淡然，带着面具嘻嘻哈哈，能心照不宣最好，即便流泪了，也可以谎称是迷了眼，但我可能永远不会选择沉默。时间抽打着我们，让我们更好地适应这个世界。说白了就是不断的降低标准，我们还美其名曰“成长”。成长成我们不喜欢的样子，然后回过头来问“原来的我还在吗？”</p>
<p>好久没写些什么，发发牢骚。</p>
<a href="https://geekplux.com/posts/happiness_is_capability">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[我是如何管理 21 张信用卡的]]></title>
        <id>https://geekplux.com/posts/how-do-i-manage-21-credit-cards</id>
        <link href="https://geekplux.com/posts/how-do-i-manage-21-credit-cards"/>
        <updated>2019-11-12T20:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>嗯，你没有看错，21张，管理起来确实是比较头疼的。</p>
<p>这么多卡，横跨很多家银行。每张卡的额度、年费、账单日、还款日、积分计算方法都是不一样的……稍有出错就是逾期或者被反撸年费……如履薄冰，很适合我这种强迫症晚期的人。</p>
<h2>用好时间管理软件 Calendar</h2>
<p>先来看看我的 iOS Calendar（微笑脸）：</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/creditcard/calendar.png?x-oss-process=style/zip" alt="" /></p>
<p>这些都是我自己手动设置的。每天早上 9 点，只要当天有账单日或还款日，我就会收到通知，有时候一下子收到两三条（微笑脸）。这里多说一句，理想的情况是每天一两条，即每天还一张卡。</p>
<p>尽管很多银行的 APP 有提醒，短信有提醒，邮件有提醒，公众号有提醒，但我还是再加了一道<strong>防火线</strong>，在以上这些东西全部失灵的时候，我 iOS 自带的 Calendar 还是会提醒我。接下来我会介绍如何结合 iOS 自带的 Reminder 使用。</p>
<h2>用好 Excel 和 iOS Reminder</h2>
<p>因为每张卡的使用情况是并行的，卡少的时候还能用脑子算清楚，卡多就乱成一锅粥了。所以这时候就要祭出神器 Excel 了，<strong>利用 Excel 的函数，可以自动计算出哪天该还款，还多少</strong>，然后设置到 Reminder 里面，定好闹钟，这样等真正该还钱的时候，你手机就会狂震催你还钱……</p>
<p>收到闹钟通知的时候，<strong>立马</strong>打开还款的 APP 把欠款还掉，千万不要迟疑或稍等，因为有可能等一等就忘掉了，一旦错过还款日就是逾期。</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/creditcard/excel.png?x-oss-process=style/zip" alt="" /></p>
<p>Excel 的模版我分享到 Google Sheets 了，有意的自取：
[template_of_creditcard_man...</p><a href="https://geekplux.com/posts/how-do-i-manage-21-credit-cards">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[我是如何学会编程的]]></title>
        <id>https://geekplux.com/posts/how-i-learned-programming</id>
        <link href="https://geekplux.com/posts/how-i-learned-programming"/>
        <updated>2021-11-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[掌握一项技能是需要时间和实践的，降低预期，慢即是快。这篇文章我想讲讲我——作为一个普通人——学习编程的经验，主要是三次“开窍”的心路历程。]]></summary>
        <content type="html"><![CDATA[<h1>我是如何学会编程的</h1>
<p>说来惭愧，我学习编程的路径可谓艰辛，用了三四年才初窥门径。我不像很多程序员有天纵之才，也不像一些朋友很早就接触编程，无论是起步时间还是学习速度，我都落下很多，但这并不影响我最后掌握了这项技能。</p>
<p>所以这篇文章我想讲讲我——作为一个普通人——学习编程的经验，主要是三次“开窍”的心路历程。</p>
<h3>如何定义学会</h3>
<p>在我的理解中，编程是一项技能，和骑车游泳无差。<strong>学会编程，只意味着能用代码把想法变成现实</strong>，不是掌握什么高深的算法，也不是入职什么大型公司。比如有的会计朋友，学了点 <a href="https://www.excel-easy.com/vba.html">VBA</a> 使自己在 Excel 中数据处理效率更高，我认为就算是学会编程了，再比如一些公众号作者学会用 AI 生成营销文，输入几个关键字就能自动生成一篇毫无营养但能卖钱的文章，也是算学会了。<strong>所以学不学会取决于你的目标</strong>，如果你是把将来<strong>从事程序员这个职业</strong>当作学会编程的目标，那么拿到任意技术 offer 就算学会了，不必妄自菲薄。</p>
<h2>起步晚</h2>
<p>我是直到大二才懵懵懂懂开始学习编程，不像我的一些朋友，<a href="https://lutaonan.com/blog/my-coding-road/">小学就接触编程</a>。尽管我家里有电脑比较早，但一直都沉迷游戏。高中时用 PhotoShop 和一些视频剪辑软件居多，却从未想过编程，因为我<strong>完全没有编程这个概念</strong>。就像你想学一个东西，却<strong>不知道从何搜起</strong>一样。“编程”这个关键字，是没有存在于我的脑海之中的，这就是我常说的“<a href="https://zhuanlan.zhihu.com/p/127837706">我不知道我不知道</a>”的那部分知识。</p>
<p>高三填报志愿时，所有志愿的专业那栏我写的都是“计算机科学与技术”，当时虽然看了很多专业介绍，但实际上我是完全不知道这个专业是去学什么，可见我当时眼界之窄。连周边的家长们都说，这个专业没前（钱）途，“去了就是玩游戏”！</p>
<p>万万没想到一语中的......我本科大学的宿舍刚建好，根本...</p><a href="https://geekplux.com/posts/how-i-learned-programming">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何在 GitHub 上获得数百 stars]]></title>
        <id>https://geekplux.com/posts/how-to-get-hundreds-stars-on-github</id>
        <link href="https://geekplux.com/posts/how-to-get-hundreds-stars-on-github"/>
        <updated>2017-07-20T11:16:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>本文首发于「<a href="https://juejin.im/post/59701b61518825412f27a0b1">掘金专栏</a>」，地址：<a href="https://juejin.im/post/59701b61518825412f27a0b1">https://juejin.im/post/59701b61518825412f27a0b1 </a>。
本文写在 <a href="https://markvis.js.org">markvis</a> 发布后的一周，总结了在推广个人项目方面的一些经验。阅读时长 10 分钟。原文地址：<a href="https://geekplux.com/2017/07/20/how-to-get-hundreds-stars-on-github">https://geekplux.com/2017/07/20/how-to-get-hundreds-stars-on-github </a></p>
</blockquote>
<p>每个程序员都幻想过自己的代码运行在千家万户的电脑上，但如何让你的项目获得更多的关注却少有人去思考。我们把注意力放在对代码的钻研、对技术的提升，却少有人关注如何吸引别人参与你的项目。一个人的力量总是有限的，尤其是在开源社区，越多的人参与就意味着你的项目有越多的可能性。</p>
<p>我的业余小项目 <a href="https://markvis.js.org">markvis</a>(<a href="https://markvis.js.org">https://markvis.js.org </a>) 发布一天之后，在 GitHub 收获了 200 stars，爬上了 Trending 榜前十，现在一周过去已经近 1000 stars。虽然这不算什么大的成就，但让我不得不重新思考<strong>推广</strong>的意义。</p>
<p><img src="https://i.loli.net/2017/07/20/597019565f3e0.png" alt="Trending TOP 10" /></p>
<h2>对推广的偏见</h2>
<p>一般人对推广都有或多或少的偏见，从我的个人经验来说大概来自两个方面：</p>
<p>一是受「酒香不怕巷子深」的影响，总认为只要是金子就会发光的。其实不然，道理很简单，你觉...</p><a href="https://geekplux.com/posts/how-to-get-hundreds-stars-on-github">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[远程工作如何提高效率]]></title>
        <id>https://geekplux.com/posts/how-to-be-efficient-on-remote-work</id>
        <link href="https://geekplux.com/posts/how-to-be-efficient-on-remote-work"/>
        <updated>2020-02-18T22:30:00.000Z</updated>
        <content type="html"><![CDATA[<p>别看我一直上学和上班，但实际上中间穿插着不少段远程工作的经历。远程工作其实在程序员群体中，或者说在创作型工作者群体中已经流行很多年了。而这次疫情来得太突然，导致很多没有远程经验的人第一次远程办公，所以这里分享一些我个人的经验，希望能提供些许帮助。</p>
<p>我认为远程工作提效可以分成两个方面，一个是<strong>与人合作</strong>，一个是<strong>自身效率</strong>。</p>
<h2>与人合作</h2>
<p>远程工作不是单打独斗，仍是需要和人打交道的，而且沟通频率可能比在公司还高。以下四点是我在多次远程工作中得出的经验教训：</p>
<h4>1 熟悉工具</h4>
<p>如何连接远程电脑、如何登录 VPN、如何使用各类软件等等都要了解清楚并做到熟练。把工作流程全部<strong>打通</strong>，减少自己的重复劳动，也节省每次沟通前的准备时间，还保证了即使 IT 同事不在的情况下也不至于被工具卡住项目进度。远程工作时大家在线时间不是固定的，所以指望临时求助同事是对彼此都不高效的方式。</p>
<h4>2 主动沟通</h4>
<p>把做完的、正在做的、接下来要做的都要及时更新给其他人。事事有响应，件件有着落，不仅要口头通知，最好是形成一个自己的<strong>工作文档</strong>，把实时的进度更新上去，让其他人一目了然，也是给自己一个计划和交代。远程工作不比在公司，虽然在公司也是各干各的事，但是只要想沟通是可以直接够得着的，而远程沟通成本太高，所以应该<strong>尽量减少沟通次数，提高单次沟通的效率</strong>。</p>
<h4>3 主动坦白</h4>
<p>没做完就是没做完，不要硬撑着说做完了，然后暗下决心晚上加班搞定。这很容易陷入恶性循环：要面子死扛 -&gt; 带着心理负担加班 -&gt; 状态不好又没做完 -&gt; 要面子死扛。技术债务有时比赌债还可怕，一不小心就还不起了。而且这种“假性完成”还会严重影响同事和团队的进度，别人以为做完了，接下来的计划都建立在你做完的基础上，而实际没做完，等之后再推倒重来就难了，说不定给各位同事都造成影响。</p>
<p>所以大方地承认自己没做完更好，即使是因为偷懒划水没做完，也要直接坦白。其实远程工作大家的效率不一定都是满转的，所以遇到卡壳、做不完都太正常了，直接承认，说不定对方也说“我也摸鱼了...</p><a href="https://geekplux.com/posts/how-to-be-efficient-on-remote-work">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何找到时薪 80 美元的远程工作（一）]]></title>
        <id>https://geekplux.com/posts/how-to-get-jobs-pay-80-dollars-per-hour-1</id>
        <link href="https://geekplux.com/posts/how-to-get-jobs-pay-80-dollars-per-hour-1"/>
        <updated>2019-07-31T09:50:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2019/07/31/how-to-get-jobs-pay-80-dollars-per-hour-1">https://geekplux.com/2019/07/31/how-to-get-jobs-pay-80-dollars-per-hour-1 </a></p>
</blockquote>
<p>最近在家赋闲，正好有一份远程工作找上门，几番沟通下来，对方给我开出了 80 美金的时薪，算是创下了我自己时薪的新高。不过我有自己的打算，所以拒绝了长期合作，只答应临时打打短工。有朋友问我怎么能找到这样的工作，我这里就分享一下。整体其实可以分成两个问题：</p>
<ul>
<li>如何找到一份远程工作</li>
<li>如何达到时薪 80 美元</li>
</ul>
<p>我来一一回答。</p>
<h2>如何找到远程工作</h2>
<p>首先，远程工作通常有以下几种形式：</p>
<ol>
<li>做一名 freelancer（自由职业者）, 自己接活干</li>
<li>加入一个允许远程工作的公司</li>
<li>做一名独立开发者（开发应用）</li>
<li>自己创业</li>
</ol>
<p>1 和 2 还是雇员，3 和 4 已经自己当老板了，考虑的应该不是时薪的问题了 😄。（还有除这 4 种以外的其他形式，可以之后再写文章介绍）。本文讨论的范围仅限 1 和 2。首先来说说找到这种工作的渠道吧。</p>
<h3>找到远程工作的渠道</h3>
<h4>1. 通过各类接单平台。</h4>
<p>如雷贯耳的如 <a href="https://www.upwork.com">Upwork</a>、<a href="https://www.freelancer.com">Freelancer</a> 和 <a href="https://www.toptal.com">Toptal</a> 等等。Upwork 是由早年大火的 Elance 和 odesk 合并而成的，提供了各类按小时或按项目结算的远程工作。Freelancer 上比较杂，有很多除 IT 类的工作，而且 pay 比较低。Toptal 据称是针对比较高端的自由职业者的，我没接触过，据说还不错。</p>
<p>虽然现在越来越多的人参与远程工作的竞争（尤其是印度同学），但万丈高楼平地起，经历过前期积累的痛苦后面就是坦途了。我...</p><a href="https://geekplux.com/posts/how-to-get-jobs-pay-80-dollars-per-hour-1">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何找到时薪 80 美元的远程工作（二）]]></title>
        <id>https://geekplux.com/posts/how-to-get-jobs-pay-80-dollars-per-hour-2</id>
        <link href="https://geekplux.com/posts/how-to-get-jobs-pay-80-dollars-per-hour-2"/>
        <updated>2019-07-31T10:30:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2019/07/31/how-to-get-jobs-pay-80-dollars-per-hour-2">https://geekplux.com/2019/07/31/how-to-get-jobs-pay-80-dollars-per-hour-2 </a></p>
</blockquote>
<p>上一篇<a href="https://geekplux.com/2019/07/31/how-to-get-jobs-pay-80-dollars-per-hour-1">如何找到时薪80美元的远程工作（一）</a>主要讲了如何找到一份远程工作，这篇为续。</p>
<h2>如何拿到高薪</h2>
<p>这里讲一些小技巧，但打铁还需自身硬，所以关键还是得提升自己的知识水平。</p>
<h3>英语</h3>
<p>大部分好的远程工作机会都在国外，所以英语要好，足够日常沟通和阅读书写文档的程度就够了。这可以保证你的视野不局限在国内，真正突破地域局限，实现全球收入。想象一下你赚着美元在泰国生活的样子，真正的赚着第一世界的钱在第三世界消费。已经有很多程序员在这么做了。</p>
<h3>技能</h3>
<p>俗话说“物以稀为贵”，市场上越短缺且越火的方向往往是高薪的。根据 <a href="https://www.upwork.com/press/2019/05/14/q1-2019-skills/">Upwork 技能指数</a>，2019 年 Q1 最火的技能里，耳熟能详的技术有 Hadoop, Kubernetes, Vue.js 等。</p>
<p>所以想拿高薪可以往两个方向走：</p>
<ul>
<li>一个是把你现有的技能专精，尤其是那种快速有产出的技能。当你成为领域专家的时候，薪酬定价会围绕着你来。</li>
<li>另一个是学习当前热门的技能，这个需要不停跟风，具备快速学习能力的同学可以尝试。</li>
</ul>
<h3>效率</h3>
<p>单位时间内产出更多的人，肯定薪酬会更高。一个项目往往有不少竞争者，那么通过 interview 或者邮件沟通下来，对方发现你同样的时间可以做出印度同学两倍的工作，那他当然愿意多花一些钱雇佣你。</p>
<p>所以不断磨练自己的沟通效率和做事效率吧，关于如何提高之后可...</p><a href="https://geekplux.com/posts/how-to-get-jobs-pay-80-dollars-per-hour-2">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[数据可视化技术实现的关键点]]></title>
        <id>https://geekplux.com/posts/how-to-implement-data-visualization</id>
        <link href="https://geekplux.com/posts/how-to-implement-data-visualization"/>
        <updated>2019-10-06T17:17:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2019/10/06/how-to-implement-data-visualization">https://geekplux.com/2019/10/06/how-to-implement-data-visualization </a></p>
</blockquote>
<p>题目想了半天，最后定了这个，也不知道有没有准确表达我的意思。其实本文主要想分享我做数据可视化这么久之后积累的一些经验，重点在<strong>技术实现</strong>这个层面。</p>
<p>在已经确定要实现一个可视化视图之前，你一定已经经历了思考和设计，拿到了一张确定的设计图或者原型图，所以这里就不赘述可视化在实现前的<a href="https://geekplux.com/2017/01/01/basics-of-data-visualization-the-process-model">那些步骤</a>了，直奔如何编程实现的主题。</p>
<h2>实现前的规划</h2>
<p>拿到一张设计图之后，和做前端切图差不多，你基本上要先做规划：</p>
<ul>
<li><strong>整个视图可以切分成几部分</strong>。<em>可能一个视图包含了条形图、折线图、热力图和非常复杂的网络图等，这些混杂在一起的时候，切分视图很重要。如何保证实现起来方便。而且由于他们之间可能还有联动，所以如何设计共享的数据状态也很重要，否则后期会出现很多硬编码的情况（例如直接全部遍历高亮改颜色之类的操作）这种动不动循环很容易时间复杂度上O(n2)及以上，影响性能。</em></li>
<li><strong>一共有多少种元素</strong>。<em>哪些元素是在上层，哪些是在下层。每种元素画出来的时候需要几种数据。比如画圆形的时候你除了考虑圆心位置还要考虑半径是表达哪个数据维度、颜色又是哪个、饱和度是哪个</em>。</li>
<li><strong>元素之间的链接，语义或位置上的联系是什么</strong>。<em>最常见的比如两个矩形之间的线段是怎么连上的，是在中心位置还是顶点位置。还有哪些元素是可以 group 在一起的等等。</em></li>
</ul>
<h4>举个例子</h4>
<p>以下图为例：</p>
<p>![visualization design demo](https://geekpluxblog.oss-cn-hongko...</p><a href="https://geekplux.com/posts/how-to-implement-data-visualization">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[数据可视化之 Sankey 桑基图的实现]]></title>
        <id>https://geekplux.com/posts/how-to-implement-sankey-diagram</id>
        <link href="https://geekplux.com/posts/how-to-implement-sankey-diagram"/>
        <updated>2018-08-28T00:17:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2018/08/28/how-to-implement-sankey-diagram">https://geekplux.com/2018/08/28/how-to-implement-sankey-diagram </a></p>
</blockquote>
<h2>什么是桑基图</h2>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/sankey/MA_Operations_2016_Sankey.png?x-oss-process=style/zip" alt="" /></p>
<p>Google 搜索桑基图，可以搜到一大堆定义。简而言之，桑基图是一种数据流图，展示了数据是如何从左到右流向最后的节点，每条边代表一条数据流，宽度代表数据流的大小。桑基图常用于流量分析，可以很清楚的看出数据是如何渐渐分流的。本文着重讲解如何实现，理论方面的东西各位可以自行了解。</p>
<h2>实现桑基图的关键点</h2>
<p>关键点有两个：</p>
<h4>1.  坐标计算</h4>
<p>桑基图要展现的数据流，算是图（拓扑类、网络型或关系型）数据的一种。实现一个数据可视化图，最重要的就是拆解元素。而实现一个图数据可视化，则最重要的是分清“节点”和“边”。</p>
<p>拆解元素之后，最重要的便是坐标的计算，这里包括点和边的坐标。而图形中，任何的元素都可以看作是点连线而成，所以元素坐标的计算实际上就成了点坐标的计算。比如桑基图中，节点是一个矩形，那么只需计算两个点（左上和右下）的坐标<code>(x0, y0),(x1, y1)</code>便可确定；边是一个带形，需要计算四个端点才能确定，带形的弧度则可由简单的三次贝塞尔曲线计算得来。</p>
<p>由此观之，实现桑基图的核心在于计算出以上的这些点坐标。其实实现任意一种可视化都是计算点的坐标。</p>
<h4>2. 减少边交叉</h4>
<p>当数据量到一定程度的时候， 桑基图中的边会出现重叠现象，造成一定的视觉混乱。如何减少可以阅读本文第二节。</p>
<h2>一、坐标计算的实现</h2>
<h3>准备工作</h3>
<h4>设计数据结构</h4>
<p>经典的图数据结构一般是邻接矩阵和邻接表，...</p><a href="https://geekplux.com/posts/how-to-implement-sankey-diagram">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何阅读一篇学术论文]]></title>
        <id>https://geekplux.com/posts/how-to-read-a-research-paper</id>
        <link href="https://geekplux.com/posts/how-to-read-a-research-paper"/>
        <updated>2016-05-31T20:49:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2016/05/31/how-to-read-a-research-paper">https://geekplux.com/2016/05/31/how-to-read-a-research-paper </a></p>
</blockquote>
<p>这是一个<strong>知识过剩</strong>的时代。大量标榜为「干货」的文章每时每刻都在不断地产出，搜索引擎的便捷似乎也让我们离这些「知识」只有一步之遥。然而，随着多年在互联网上的浸淫，我发现<strong>越是容易得到的知识，价值越不大，留存的时间也越不长</strong>。所以，相对于那些东拼西凑组成的所谓干货，一本好书或一篇好的学术论文，才是知识的结晶（单从前后两者成文的时间上就可以很好的证明这点）。</p>
<p>关于「如何阅读一本书」的讨论，已经盈千累万，而关于「如何阅读一篇学术论文」的似乎还凤毛麟角。所以这篇文章我打算写一写我在阅读论文过程中总结出的一些方法，希望能对你有帮助，当然如果你有其他更好的方法，欢迎补充。文章共分为四个部分，第一部分介绍读论文的核心要素，第二部分列出阅读单篇论文的具体步骤，第三部分是一些补充。方法论讲完之后，最后一部分将阐述为什么要阅读文献期刊。</p>
<h2>一、阅读论文的核心要素</h2>
<p>根据每个人读论文的目的不同，阅读的侧重点也会有所不同，但都不外乎要获取知识、解决问题，所以无论你的目的是什么，有<strong>三个核心要素</strong>是你在阅读一篇论文时必须掌握的：</p>
<ol>
<li>这篇论文主要表达的是什么？作者的写这篇论文的目的是什么？或者说是这篇文章做出了什么成果？</li>
<li>这篇论文的观点/成果是如何实现的？作者用了哪些论据来支持他的观点/成果？</li>
<li>相关的工作有哪些？在这篇文章之前有什么已成立/取得的观点/成果？作者的观点/成果主要是建立在哪个的基础上？作者的观点/成果比别人突出在哪里？</li>
</ol>
<p>阅读论文不能盲目的去读，要<strong>带着问题去读</strong>才有收获，只要了解了这三个核心要素，就可以对论文有一个整体的印象。</p>
<h2>二、阅读论文的步骤</h2>
<p>针对<strong>单篇</strong>论文：</p>
<ol>
<li><strong>认真</strong>地阅读标题、Abstract 和...</li>
</ol><a href="https://geekplux.com/posts/how-to-read-a-research-paper">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[双拼学习记]]></title>
        <id>https://geekplux.com/posts/learn_shuangpin</id>
        <link href="https://geekplux.com/posts/learn_shuangpin"/>
        <updated>2014-07-06T22:59:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2014/07/06/learn_shuangpin">https://geekplux.com/2014/07/06/learn_shuangpin </a></p>
</blockquote>
<p>转移到<strong>双拼</strong>阵营差不多三个星期了。现在打字真的是「飞一般的感觉」。</p>
<p>双拼是输入法的一种，绝大多数人都只听过<strong>全拼</strong>和<strong>五笔</strong>两种输入法。如果你不清楚你现在用的是什么输入法，那么基本上可以断定你用的是全拼。至于五笔，我们虽然如雷贯耳，但没有经过专门训练的话，实在是可望而不可及。双拼提供给我们一种折中的方案，使我们的<strong>学习成本和全拼一样，打字速度却和五笔一样</strong>。那么到底什么是双拼呢？维基百科这样解释：</p>
<blockquote>
<p>双拼是汉语拼音输入法的一种编码方案。相对于全拼而言，使用双拼输入汉字时只需输入一个代表声母的字母，一个代表韵母的字母，就可以打出任意一个中文单字了。</p>
</blockquote>
<p>大家都知道，我们伟大的汉字大部分都可以用一个<strong>声母</strong>加一个<strong>韵母</strong>拼出来*（少部分只有韵母构成，如 奥 ao、而 er、偶 ou 等）*，所以用双拼输入一个汉字<strong>最多按两个字母键</strong>，而全拼可能要用两个以上。举例来说，用全拼输入「天真」，可能需要「tianzhen」这么多字母，而用双拼只需要「tmvf」，字数多了之后优势更加明显。</p>
<p>由此可见，双拼的原理十分简单，而它学起来更简单。众所周知五笔打字速度很快，但是你从开始学起到最后熟练使用，中间需要几个月的时间，黄花菜都凉了。而<strong>双拼从学起到驾轻就熟只需要三周</strong>，输入量大的人一周都能炉火纯青。一般的学习流程是这样的：</p>
<ol>
<li>熟记键位</li>
<li>使用即练习</li>
<li>掌握双拼打字的节奏感</li>
</ol>
<p>在以上步骤开始之前，我们需要选择一种<strong>双拼方案</strong>。双拼有很多种输入方案供你选择，你不用害怕，这些方案只是键位不同而已，并没有本质的区别。你可以参考知乎的回答[「各双拼输入方案之间有明显的优劣之分吗？」][1]。大家各有所爱，我自己用的是[小鹤双拼][2]。接下来你就可以记小鹤的键位了，我当时并没有真的刻意去背，...</p><a href="https://geekplux.com/posts/learn_shuangpin">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[建立索引式的学习方法]]></title>
        <id>https://geekplux.com/posts/learning-by-index</id>
        <link href="https://geekplux.com/posts/learning-by-index"/>
        <updated>2015-12-08T21:53:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2015/12/08/learning-by-index">https://geekplux.com/2015/12/08/learning-by-index </a></p>
</blockquote>
<p>学习方法的重要性不必多言，相信每个人都知道。然而，并不是掌握了好的学习方法，就可以让你事半功倍，而是要找到适合自己的学习方法。<strong>索引式</strong>的学习方法就很适合我。</p>
<h2>何为索引式的学习方法</h2>
<p>索引式的学习方法是我自己起的名字，我不知道在别人那里叫什么。其要义是指<strong>在学习一项技能时，先不深究其细节，而是建立索引</strong>。这就像看书时先看目录一样，把目录多看几遍，对整本书的结构有所了解之后，再去看自己想看的章节。</p>
<h2>为什么要建立索引式的学习方法</h2>
<h3>迅速建立知识框架</h3>
<p>循序渐进，步步为营的学习方法已经不适合现在的节奏了。这我在上次的文章《入门为什么这么难》里已经提到过：<strong>掌握一项技能要迅速掌握其主干，其余的细枝末节都不去管</strong>。</p>
<p>学习一项技能时，你不能保证你目前所在学的东西将来会用到。就算用到，也可能没有你现在所探究的这么深入。那么我们<strong>只需要知道有这个东西，在脑中建立这部分知识的索引，等用到他的时候再去查阅资料重新学习就好</strong>。</p>
<h3>专注突破，实践巩固</h3>
<p>建立索引之后，其他部分的知识可以暂时地抛诸脑后，而把<strong>精力专注在当前的节点</strong>，「集中优势兵力迅速突破」。</p>
<p>表面上，因其不究细节，索引式的学习方法仿佛对知识的了解都浮于表面。但事实上，对于当前在学的、要用的它都力求扎实掌握，熟练运用。</p>
<p>不仅如此，因为索引式的学习方法强调<strong>用时才学</strong>，这就保证你现在要学的，肯定是你即将要用到的。学完之后马上运用，相当于二次学习。<strong>实践会加深对知识的理解</strong>，就像中学时做题是概念的补充一样。</p>
<h2>建立索引的核心方法</h2>
<p>如何建立索引？首先要了解怎么样才算真正的把索引建立成功。</p>
<p>建立成功索引的标准是你在<strong>遇到问题时能立马浮现出这是在运用哪一块的知识</strong>。比如需要抠图的时候，应该运用P...</p><a href="https://geekplux.com/posts/learning-by-index">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[舍本逐末的学习方式]]></title>
        <id>https://geekplux.com/posts/learning-without-hesitate</id>
        <link href="https://geekplux.com/posts/learning-without-hesitate"/>
        <updated>2019-05-31T20:00:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2019/05/31/learning-without-hesitate">https://geekplux.com/2019/05/31/learning-without-hesitate </a></p>
</blockquote>
<p>这个题目其实也是某个深夜自己睡不着时候瞎想的，因为我发现自己近一年学的新东西太少了，究其原因大概是我陷入了一种学习的通病，我把它叫作“舍本逐末”。</p>
<h2>什么是舍本逐末的学习方式</h2>
<p>舍本逐末的学习是指<strong>明明费了好大力气，却好像什么也没学到</strong>的学习方法。学习是需要付出精力的，但舍本逐末学习法的精力都花在了准备、焦虑和犹豫上。具体有三个表现：</p>
<h3>1. 总是衡量付出回报比，纠结于值不值得学</h3>
<p>忽然想学一个东西，但是又怕自己付出了很多时间收益不大，仿佛连学习都有了“性价比”。事实上我们在学东西之前，总是容易高估自己愿意付出的努力，而由于人的惰性，我们很有可能就浅尝辄止了，或者学一半发现自己“不适合”，就及时“止损”了。</p>
<p>尽管如此，我们还是会纠结，不仅纠结学习与否，甚至纠结学习的顺序，毕竟自己“很忙”，没有时间兼顾，得先挑最重要的开始。</p>
<h3>2. 不停研究学习路径，却迟迟没有开始学</h3>
<p>决定开始学习以后，又开始研究起了学习方法。</p>
<ul>
<li>“如何快速入门水泥搅拌？”</li>
<li>“只需 10 分钟，优雅掌握挖掘机技术”</li>
<li>“学习拖拉机驾驶技术的最佳路径”</li>
</ul>
<p>类似这种标题的文章最容易吸引眼球。表面上看这些文章总结了最佳的学习方式，让你能更快的掌握想学的知识，但实际让你事倍功半，甚至充满挫败感。一方面你觉得，别人只要花 10 分钟学会的东西，我为什么花了一星期。另一方面，阅读完这类文章让你有了一种你已经学会的错觉，实际上你还是什么也不会。最严重的是：看多了这类文章后，让你以为学习东西都不需要下苦的，冬练三九夏练三伏那都是死读书的把戏，你有更快更好的“捷径”。殊不知合抱之木，生于毫末，九层之台，起于垒土，人生在勤,不索何获？</p>
<h3>3. 收集了大量的学习资料，反而不知道该从哪里开始</h3>
<p>舍...</p><a href="https://geekplux.com/posts/learning-without-hesitate">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[情似流水]]></title>
        <id>https://geekplux.com/posts/love_like_water</id>
        <link href="https://geekplux.com/posts/love_like_water"/>
        <updated>2013-04-10T10:36:00.000Z</updated>
        <content type="html"><![CDATA[<p>看来我得写篇日志了。</p>
<p>情似流水，行于当行，止于当止。而我，总是相反。</p>
<p>生物老师说当我们自以为被丘比特射中的时候，只不过是因为我们的大脑在分泌着多巴胺，在多巴胺的作用下，我们领略着爱的幸福，就如同吸毒或吸烟一样让人上瘾，欲罢不能，我们自以为在茫茫人海中，在经历了上辈子的五百次回眸之后我们终于遇到了对的人，其实这只不过是激素的力量。</p>
<p>这样说的确冷酷了一点。但是感性的我们一如既往的对爱情充满向往，哪怕那幻想的美丽泡沫被现实击碎多少次。当再次陷入恋爱之时，我们又会推翻之前的一切消极看法，认定这个人或许就是自己过尽千帆皆不是的那一个，命运终究安排我们相遇。呵呵，目光放远，万事皆悲。是啊，她的微笑，她的双眸，她的善良，她的一切与我都是那么匹配。接着，情不自己，甚至偏执的认为我们是命中注定，爱是永恒不灭。</p>
<p>情不知其所起，一往而深。一见钟情竟然在我一直坚定不移的相信下出现。我的生命也放佛因为有了对方才有了意义。偶然的相遇或邂逅，都被赋予了不同寻常的含义。既见君子，云胡不喜！人和人相遇的概率很简单可以算出来，她是那分子1，而分母的大小，你可想而知。虽然这概率小之又小，但是也验证了冥冥之中有一双神秘的手安排着这一切。如果把我们相遇相知相恋相隔的剧情串起来，发现，只要哪个环节差一点点，我们都不可能在一起。</p>
<p>爱情宿命论，无疑是一种幻觉和自我安慰。但是，我们的确遇到了一个可以让自己身心栖息的伴侣，寻求片刻的宁静或永恒。我不能想象我在她的生命中被人取代，反之亦然。我很自私。</p>
<p>错的时间遇到对的人……是不是对的人，根本无法判断。我一直相信，如果足够爱那个人，那个人就是the one。一段感情最终都是要分开的。只不过最好的情况是因为死亡才分开。如果你连这个都不懂，那么请不要用「生离死别」这个词。</p>
<p>那爱情的结果到底是什么？「不以结婚为目的的谈恋爱都是耍流氓」。各种碎片化的信息把我们渐渐洗脑。从微博上摘的只言片语，莫名戳中自己，立马向其靠拢。究其根本，这些短短的文字或许只是一厢情愿，我们应该摘掉虚伪的标签，按内心的来。</p>
<p>「不以恋爱为过程的结婚都是耍流氓...</p><a href="https://geekplux.com/posts/love_like_water">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[菜鸟级 Mac 配置（一）]]></title>
        <id>https://geekplux.com/posts/mac_configuration_1</id>
        <link href="https://geekplux.com/posts/mac_configuration_1"/>
        <updated>2014-02-26T21:14:00.000Z</updated>
        <content type="html"><![CDATA[<p>前两天我的神机 MBP 终于到手了，虽然之前我已经见过 N 台 Macbook，但拆开包装的那一刻我还是被它惊艳了。新款比以前更薄了，感觉跟 air 的厚度相差无几（这货好意思叫 pro 么）。哈哈，作为一名第一次使用 Mac 的孩纸，我果然遇到了很多菜鸟级的问题，通过不断的 Google，基本都配置好了，现在来罗列一下。</p>
<h2>基础设置篇</h2>
<ul>
<li><strong>触控板设置</strong></li>
</ul>
<p>体验了两天，MBP 的触控板真心好用，鼠标已被我打入冷宫。所以根据自己的习惯设置好触控板是第一步。我就改了两处：</p>
<ol>
<li>轻触改为单击</li>
<li>把双指滚动方向改为相反（不是自然方向）。如图：</li>
</ol>
<p>![][1]</p>
<ul>
<li><strong>Finder 设置</strong></li>
</ul>
<p>Finder—Preferences，把所有文件后缀名显示出来。（不显示出来木有安全感）</p>
<ul>
<li><strong>自带词典和发音</strong></li>
</ul>
<p>Mac 自带的词典非常好用，默认是<strong>三个手指轻触</strong>触控板就可以自动翻译选中的单词。而且，你可以通过以下的设置，如图：</p>
<p>![][2]</p>
<p>就可以按 Option + Esc 让 Mac 把你选中的单词读出来。</p>
<p>个人觉得最重要的就是这三个配置了，其它就是换了换快捷键和壁纸……当然我后来把语言换成了<strong>英文版</strong>（这后来引发了一个蛋疼的小问题，下一篇讲）。</p>
<p>只要你把 Mac 的快捷键记牢（<a href="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/mac-config/mac-shortcuts.png?x-oss-process=style/zip">参考这张图</a>），就能飞速的使用它了，真的是飞速！</p>
<h2>必备软件篇</h2>
<p>Mac 下安装软件直接把 app 文件拖到 「应用程序」文件夹下就 OK 了。卸载就直接从该文件夹下删除就行。简单的令人发指……</p>
<ul>
<li><strong>神器 Alfred</strong></li>
</ul>
<p>当初在 Win 下，我用的是 launchy 用来快速启动软件。Mac 下的 Alfred 就是此类软件的神器。在 App Store 里找到它并安装。从此启动软件再也不需要去 ...</p><a href="https://geekplux.com/posts/mac_configuration_1">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[菜鸟级 Mac 配置（二）]]></title>
        <id>https://geekplux.com/posts/mac_configuration_2</id>
        <link href="https://geekplux.com/posts/mac_configuration_2"/>
        <updated>2014-03-03T13:50:00.000Z</updated>
        <content type="html"><![CDATA[<p>这一篇该讲讲我自己搭建开发环境遇到的事了。</p>
<p>其实这第二篇我前两天就写了一大半，我明明记得随手 Command+S 了，不过，我貌似把保存好的文件给删掉了……真是自作孽不可活，只能重新写一遍 T_T。</p>
<ul>
<li><strong>Xcode</strong></li>
</ul>
<p>虽然身为一个菜鸟，但 Xcode 的大名早就如雷贯耳，毕竟是苹果亲生的，无论看起来还是用起来都非常迷人。第一次打开 App Store 就在很显著的位置看到了它，果断点了安装。结果发现有 2G 多，耐心等着下完（其实我特别想吐槽我这儿 50KB/s 的网速！）。</p>
<p>为什么 Xcode 必装？因为有编译的地方就有它。所以这里还要装一个 Command line tools，基本方法是打开 Xcode，找到 Preferences—Downloads—Components，在里面找到它并安装。如果你找不到，那可以在命令行输入：</p>
<pre><code class="language-sh">xcode-select --install
</code></pre>
<p>这时会弹出一个选项框，问你是去下载 Xcode 还是直接安装，选择安装。</p>
<ul>
<li><strong>brew</strong></li>
</ul>
<p>我以前并木有听过 Homebrew（毕竟第一次用 Mac），但我看几篇 Mac 教程都提到它，于是去下载来尝试一下。果然群众的眼光是雪亮的，自从用了 brew 感觉上五楼都不喘气了……有了它，可以方便的管理工具包，常用的命令有：</p>
<pre><code class="language-sh">brew install xxx
brew uninstall xxx
brew list
brew update xxx
</code></pre>
<p>都是一句话，非常给力。不得不佩服 Ruby 社区的大神们，简直造福人类。</p>
<p>去 Homebrew 的官网是 <a href="http://brew.sh/">bew.sh</a>，找到它的安装代码：</p>
<pre><code class="language-sh">ruby -e &quot;$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)&quot;
</code></pre>
<p>copy 到命令行，回车，搞定！</p>
<p>还有个东西叫 Homebrew-Cask，谁用谁知道。</p>
<ul>
<li>*...</li>
</ul><a href="https://geekplux.com/posts/mac_configuration_2">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[三种主流的网赚套利，躺着赚钱？]]></title>
        <id>https://geekplux.com/posts/mainstream-online-earning</id>
        <link href="https://geekplux.com/posts/mainstream-online-earning"/>
        <updated>2019-12-11T20:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>之前在《 <a href="https://geekplux.com/posts/meaning-of-getting-best-deal">薅羊毛的最大意义：保持对规则的敏感度</a> 》中立了 flag 要写一篇介绍网赚套利的文章，现在来还愿。</p>
<p>其实目前主流的网赚方法，能被公开说的，过来过去就那么几种。我把他们分成了以下几类：</p>
<ul>
<li>做任务型</li>
<li>搬运工型</li>
<li>推广运营型</li>
</ul>
<h2>方法简介</h2>
<h3>做任务型</h3>
<p>早期最广为人知的网赚，就是填调查问卷。很多平台，别人发布问卷你去填，每填一份，发布人付你一点钱，平台抽成。现在的任务则五花八门太多了，有上传照片的、写点评的、给机器学习打 label 的、听歌的、玩游戏的。是的，听一首歌和玩一会儿游戏，都有人付你钱（具体是哪些网站我就不赘述了，你可以问搜索引擎）。</p>
<p>很明显，这类任务型就是卖体力，多劳多得。而且任务型的薪水除了新兴平台一般都很少，所以很多人不去做了，但如果你善于规模化，那利润还是可观的。</p>
<h3>搬运工型</h3>
<p>东边日出西边雨，把东边伞拿到西边就能赚钱。搬运工型，就是把 A 平台的东西搬到 B 平台套利。</p>
<ul>
<li>内容搬运。洗稿一词大家肯定不陌生，就是文章搬运。洗稿可能还得有人为参与，而大部分用代码实现的搬运连洗都不洗，直接复制粘贴，简单粗暴。还有就是很多微博大 V 营销号，有的是搬国内内容平台的东西，有的是搬国外 Twitter 或 Instagram 等平台上的 top 视频，赚个信息差。</li>
<li>商品搬运：从 1688 搬到闲鱼上卖，或从国内平台搬到 Shopify 或 Amazon 卖。这些都是客户下单之后，你再直接从源网站下单，你连库存都不用，轻轻一点，钱钱到手。有些平台，你可能也点开过，商品免费但你要出邮费，那么有人就可以直接从包邮的源网站下单，发货到“领取”这些“免费”商品的用户手里，赚取邮费差价。</li>
<li>搬砖。好像大家把搬“钱”叫做搬砖。之前数字货币交易所雨后春笋，每个交易所的时价又有差别，大家于是从国内 A 交易所买，再到美国 B 交易所卖，完成一次套利。还有如薅积分，用 A 渠道买积分...</li>
</ul><a href="https://geekplux.com/posts/mainstream-online-earning">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[薅羊毛的最大意义：保持对规则的敏感度]]></title>
        <id>https://geekplux.com/posts/meaning-of-getting-best-deal</id>
        <link href="https://geekplux.com/posts/meaning-of-getting-best-deal"/>
        <updated>2019-11-05T20:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>羊毛无处不在，双十一快到了，虽然这个资本创造出的节日已经完全沦为价格歧视的工具，但大多数人还是忍不住这薅羊毛的手。与其临圈羡羊，不如退而薅毛。</p>
<p>羊毛有很多种，最常见的还有信用卡积分等等。我认为它算是套利的一种，但因为利润较小，所以称为“羊毛”吧，如果利润大，估计叫羊腿了。</p>
<p>那薅羊毛值不值得呢，我其实很早就想清楚这个问题了。</p>
<h2>成本与收益的平衡</h2>
<p>很好理解，想要羊毛，就要花时间和脑力。脑力成本我觉得还好，因为研究规则或找到漏洞的过程还挺有意思的，我当它是一种思维锻炼。</p>
<p>但时间成本可就真的很贵了！你可以简单把你一个月的工资除 176 （22个工作日乘每日8小时）就知道你的时薪了。我之前有幸时薪达到过 80 美金，如果拿它来算的话，我每花 1 分钟在薅羊毛上，我就要花将近 10 块钱……成本有点高，所以大概只有很闲的时候我才去想薅羊毛这件事。</p>
<blockquote>
<p>举个例子，比如上次在机场飞机延误，比较烦躁，一般这种时候我就开始研究我几张白金卡自带的飞机延误险。我花了大概 20 分钟分别阅读了它们的条款，发现有的卡要求必须是用本卡买票才能保险，有的卡不需要。紧接着我又发现我买机票刷的那张卡在延误 2 小时的情况下就可以返钱。所以我毫不犹豫把我的延误信息通过 APP 反馈给了客服，大约在半个月之后我收到了机票 80% 的钱，800 块，那么按我上一段的算法，我实际上花了 30 分钟赚了 500 块。感觉你如果常飞北京可以办一张这样的卡，懂得都懂……</p>
</blockquote>
<h2>对规则的敏感度</h2>
<p>另一方面，我觉得薅羊毛最大的快感和好处，其实是<strong>发现规则的漏洞</strong>。我们这个世界充满了规则：学生手册、公司奖金制度、期权协议、保险条款、各式贷款、法律等等这些都是与我们利益极其相关的。利用学生手册，你可以知道如何在逃课与毕业证之间找到平衡；利用公司奖金制度，你可以知道如何表现能获得更多年终奖，利用……总之在<strong>合规</strong>的前提下你能在“规则”之中游刃有余，就可以在这些条条框框中追求自身利益的最大化。</p>
<p>薅羊毛正是锻炼了这个思维，越大的利益越值得你花时间去“薅”，挖空心思拔光头发，...</p><a href="https://geekplux.com/posts/meaning-of-getting-best-deal">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[与人聊天的美好]]></title>
        <id>https://geekplux.com/posts/meet-strangers</id>
        <link href="https://geekplux.com/posts/meet-strangers"/>
        <updated>2022-10-19T23:50:00.000Z</updated>
        <content type="html"><![CDATA[<p>之前我在 <a href="https://twitter.com/GeekPlux/status/1571183280078331904">Twitter</a> 上发布了一个可以<a href="https://cal.com/geekplux">约我单独聊天的页面</a>，于是开启了一段每周约见（video chat）陌生人的旅程，蛮有趣的。这篇文章我想把大家问我最多的问题总结分享给大家。人懒就要做到极致，之后大家再问类似问题，我就甩这篇文章的链接过去。</p>
<h2>缘起</h2>
<p>起初是靠 <a href="https://twitter.com/FradSer/status/1526577895292141568?s=20">@Frad</a> 的启发，把 <a href="https://cal.com/geekplux">https://cal.com/geekplux</a> 的链接发到了 <a href="https://twitter.com/GeekPlux/status/1571183280078331904">Twitter</a> 上，诚邀大家找我聊天。结果当天就有好多人约我，于是加了付费的选项，到后来又把免费的约聊改成了一周一次的频率，总算形成了一个有规律的模式。我的另一个朋友 <a href="https://twitter.com/randyloop">@Randy</a> 则是做了一个叫 <a href="https://amazt.netlify.app">AMA zing Talk</a> 的网站，集中地展示了所有人的约聊页面。</p>
<p>约聊的流程其实很简单，cal.com 设计的很符合直觉，点开 <a href="https://cal.com/geekplux">https://cal.com/geekplux</a> 就一定知道怎么操作。形式则就是视频聊天，大部分同学都和我用 zoom 畅聊。可能是因为疫情三年大家已经习惯了线上见面，所以大家都毫不拘谨。当然能有勇气直接找陌生人聊天的，应该也都不是拘谨之人。</p>
<p>在一次次的聊天中，我认识了不少朋友，大部分是程序员，其他则分别有创业者、学生、设计师等。大家的履历都各有千秋，聊天风格也非常迥异，所以我在最开始的一周也花了很长时间适应。后来习...</p><a href="https://geekplux.com/posts/meet-strangers">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[迁移豆瓣读书记录到 goodreads]]></title>
        <id>https://geekplux.com/posts/migrate-douban-to-goodreads</id>
        <link href="https://geekplux.com/posts/migrate-douban-to-goodreads"/>
        <updated>2023-06-29T23:40:00.000Z</updated>
        <content type="html"><![CDATA[<p>我对个人数据一向是比较在意的，从我以前的一些博客也看得出。三年前我写了个<a href="https://github.com/geekplux/douban_read_download">小脚本</a>把之前在豆瓣上标记的读书记录都爬了下来，本意是想着用纯文本来管理，但我发现自己是个视觉动物，看到每本书漂亮的封面对我来说很重要，于是还是决定交给第三方，随即用起了 <a href="https://www.goodreads.com/geekplux">Goodreads</a>。</p>
<p>今天在 Goodreads 上闲逛，发现它竟然有 <a href="https://www.goodreads.com/review/import">Import/Export</a> 页面，无需写代码调 API，直接上传 CSV 文件即可，简直是懒人福音。我仔细阅读了它的导入规则，发现只要给之前爬好的每条记录加上 <code>ISBN</code> 就可以了，于是我就又写了个的<a href="https://github.com/geekplux/douban_read_download/blob/master/add_ISBN_for_goodreads_import.py">小脚本</a>，很快搞定了这件事。<em>顺便说一句，写这代码时全程用 GitHub Copliot 一路提示加补全，我觉得它基本上都猜出我要干啥了，真是得顺应 AI 编程的大潮了。</em></p>
<p><img src="/images/douban-goodreads/import-record.png" alt="" /></p>
<p>上传的结果也很顺利，只有 10 本没有成功，但大多数是因为本身在豆瓣已经爬不到 ISBN 了。一些数据细节可能不完美，但可以慢慢完善。</p><a href="https://geekplux.com/posts/migrate-douban-to-goodreads">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[小谈我对新技术的态度]]></title>
        <id>https://geekplux.com/posts/my-attitude-towards-new-tech</id>
        <link href="https://geekplux.com/posts/my-attitude-towards-new-tech"/>
        <updated>2020-03-26T09:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>这要从我最近的一次通宵写代码说起。</p>
<p>按理来说，我一个不再少年的人已经经不起通宵对身形的摧残，但上周末却无意识地完成了这个壮举。第二天腰不酸腿不痛，继续狂写代码一整天。所以除却中间吃饭休息了两小时，我一口气编程大概 18 小时……这种战斗力，可能只有以前打 Dota 和赶进度才有。</p>
<p>一切的原因在于我最近想做一个小工具，<strong>因为它足够简单，所以我想用上最先进最难的技术，以便于我能最小成本的学习并应用到它们</strong>。其实这也算我一直以来学习技术的一种方式：有冲动做小玩意的时候，直接用自己不熟悉的技术去做，有点像把 100 米短跑变成了 110 米栏，冲动会逼着你突破舒适圈，跨越运用新技术最初的障碍栏。</p>
<h2>态度</h2>
<p>通常这种新技术已经萦绕你耳边很久了，社区各种吹捧，朋友逢人就夸，GitHub上生态满天飞。耳濡目染让你手痒难耐，但它是否真如别人所说的性感，你还是得自己试一试。</p>
<p>我对待新技术的态度已经从当年的<strong>盲从变得谨慎</strong>，不是别人夸就好，而且就算它真的好，也得分场景。用扫地机器人去洗碗和用洗碗机去扫地，都是行不通的。而且学了就要用，如果平时都用不上的技术，了解即可，不必深究。除此之外，我通常还会让新版飞一会儿，等一两年出稳定版再学也不迟。现在前端技术百花齐放，很可能你学了一半就又有更强更新的技术出现了。</p>
<p>非颠覆概念的技术没必要花时间学。通常一个技术的学习难度是跟你自己的基本功和这项技术的革新程度有关。如果它没有出现颠覆原理或概念级别的创新，那就没必要单独分配时间去学，直接拿来用就可以，现学现用。如果你发现你学什么成本都很大，那你真正该做的是夯实你的基础。我举个例子，当年 React 出来的时候，是很明显会成为明星项目的技术，因为提出了 vitural DOM 和 if(state) = UI 等概念（当然这些概念在 GUI 领域也很久了，但在前端第一次大范围应用），那么学习它就很有必要，而且重点不是学习它的语法，而是去看看它的原理。原理搞懂，所有框架在你眼里都会雷同，只是语法不一样罢了。</p>
<h2>尾</h2>
<p>最后我感慨一下我开头所说的连续...</p><a href="https://geekplux.com/posts/my-attitude-towards-new-tech">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[浅思图数据可视化]]></title>
        <id>https://geekplux.com/posts/network-data-visualization</id>
        <link href="https://geekplux.com/posts/network-data-visualization"/>
        <updated>2019-07-16T21:21:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="http://geekplux.com/2019/07/27/network-data-visualization">https://geekplux.com/2019/07/27/network-data-visualization </a></p>
</blockquote>
<h2>Why - 图分析的价值</h2>
<p>首先，图是最能描述世界的结构。几乎所有事物都能抽象成图。有一门学科叫作“复杂网络”是专门用图这种数据结构来研究世界规律的。图一直是炙手可热的研究方向，国内复杂网络的研究不仅热门，也颇有成就。在图分析领域，已经沉淀了很多分析方法、研究模式，我们光是把这些现成的算法筛选，进而应用到我们的业务中已经很有价值了，更别说我们可以根据我们的需求去拓展图分析的边界。</p>
<h4>目前我能想到的一些场景：</h4>
<ul>
<li>分析网络中的结构。哪些节点形成了“孤岛”，哪些节点的重要性、影响力巨大</li>
<li>关键节点挖掘。关键节点就是那些能够在更大程度上影响网络的结构与功能的一些特殊节点。准确发掘出网络中的关键节点，可以帮助我们更好地控制信息的传播、精准投放商品广告、预测热门研究成果等等。</li>
<li>链路分析，链路预测。分析用户跳转的路径，分析服务器、数据库请求的路径、故障分析。预测用户可能跳转的地方，行为预测，推荐系统。</li>
</ul>
<h4>具体的场景：</h4>
<p>用户进入一个网站之后，不停的跳转，然后每个页面是一个节点，每次跳转是一条边。我能不能比较多个用户跳转图的相似性，先把他们分类，然后再比较他们的偏好不同。搞清楚用户到底是为什么点击到了这个产品，这个链路的特点是什么，等等。</p>
<h2>计算 - 图数据结构类库</h2>
<p>既然图可视化需求这么多，我觉得应该把数据作为核心，数据和视图分离，抽象出一个单独的模块用来维护、处理、计算图数据结构。比如基本的节点查找、路径查找、最小生成树算法等等。</p>
<p>这个库的作用只用来计算，输出统一结构的图数据，我们甚至可以将图数据定义标准化，这样在其他图可视化或应用到图数据结构的场景中就能通用。</p>
<blockquote>
<p>类似的轮子已经有了，我所用过最强大的是 [networkx](https://gi...</p>
</blockquote><a href="https://geekplux.com/posts/network-data-visualization">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[来美国之后，如何快速安顿下来]]></title>
        <id>https://geekplux.com/posts/new-to-us</id>
        <link href="https://geekplux.com/posts/new-to-us"/>
        <updated>2023-03-19T18:16:00.000Z</updated>
        <content type="html"><![CDATA[<p>关注我 <a href="https://twitter.com/geekplux_cn">Twitter</a> 的朋友知道，今年二月底，经过漫长的准备期，我拖家带口终于来到了美利坚。初来乍到，充满新鲜感的同时也是手忙脚乱，尽管做了很多功课，但依然显得准备不足，毕竟不是什么事都是意料之中的。不过整体来说我们 settle down 的进度还是很快，基本上两周已经搞定全部重要并紧急的事项，在此我写篇文章记录下自己走过的弯路。<em>我的方案不是最优方案，特点主要是快，另外也不一定适用于美国其他地方，毕竟美国很大</em>。“弯路”总是不可避免，仅供后人参考。</p>
<p>我个人觉得到一个陌生的地方，初期主要就五件事：</p>
<ul>
<li>身份（SSN和驾照）</li>
<li>钱（银行账户与信用卡）</li>
<li>住</li>
<li>行（在美国就是搞定车）</li>
<li>通信（电话卡）</li>
</ul>
<p>这是我多年辗转混迹多个城市积累的<a href="https://geekplux.com/posts/two-months-after-coming-to-hong-kong">经验</a>。其中最重要的是<strong>身份</strong>，但接下来我会按照准备的<strong>时间顺序</strong>来展开讲讲，因为有些事是可以在<strong>出境之前就准备</strong>的。</p>
<h2>住</h2>
<p>出去之后住哪肯定是可以最早谋划的。和香港租房买房全靠中介不同，我的体验是美国找房基本上全靠自己，有以下几个渠道：</p>
<ul>
<li>~~各种群组~~。华人肯定用的最多的是微信群，多加一些找房的微信群，里面信息还是不少的，但显然这个渠道信息获取效率太低，沟通也相当低效，还需要甄别，留学生拼房可以考虑，有家室的人建议直接放弃。</li>
<li>小红书。我之前也没想到，小红书在北美的使用频率竟然还挺高，如果你不嫌麻烦的话可以在上面发帖或搜贴，有点像我年轻的时候在豆瓣小组找房的感觉，信息质量稍高一点，上面中介不少。</li>
<li><a href="https://www.zillow.com">Zillow</a>。直接到 Zillow 上看地图筛选我觉得是<strong>最高效</strong>的找房方式。</li>
<li>找一个 broker。适用于土豪，需求明确又不想花时间的，直接找一个中介帮你看房和筛选是最好的。</li>
</ul>
<p>我个人推荐 Zillow。Z...</p><a href="https://geekplux.com/posts/new-to-us">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[操作系统总结——引论]]></title>
        <id>https://geekplux.com/posts/os_introduction</id>
        <link href="https://geekplux.com/posts/os_introduction"/>
        <updated>2013-01-03T15:29:00.000Z</updated>
        <content type="html"><![CDATA[<p>大学生活就是 期末一周 &gt;= 一学期 的状态，马上要考试，可是我怎么也静不下心复习，索性用 XMind 来构建知识框架，既好玩又有效。我一直认为要掌握一项知识，必须先在脑中构建它的框架，有了框架之后再填补每一块的具体知识点。</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/os/os-introduction.png?x-oss-process=style/zip" alt="引论思维导图" /></p>
<a href="https://geekplux.com/posts/os_introduction">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[操作系统总结——存储器管理]]></title>
        <id>https://geekplux.com/posts/os_memory_management</id>
        <link href="https://geekplux.com/posts/os_memory_management"/>
        <updated>2013-01-05T19:53:00.000Z</updated>
        <content type="html"><![CDATA[<p>存储器管理的主要任务是为多道程序的运行提供良好的环境，方便用户使用存储器，提高存储器的利用率以及能从逻辑上扩充内存。</p>
<p>接着前两篇 <a href="http://www.geekplux.com/2013/01/03/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%80%BB%E7%BB%93%E2%80%94%E2%80%94%E5%BC%95%E8%AE%BA/">《操作系统总结——引论》</a>，<a href="http://www.geekplux.com/2013/01/04/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%80%BB%E7%BB%93%E2%80%94%E2%80%94%E5%A4%84%E7%90%86%E6%9C%BA%E7%AE%A1%E7%90%86/">《操作系统总结——处理机管理》</a>，至此操作系统最主要的两个功能就总结完了（也是我们期末考试的重点^.^）。剩下的其他功能就暂不总结了，还有一周考试，抓紧看《计算机网络》《计算机组成原理》《软件工程》（三门都是高学分）了。以上四门科目，是计算机科学中的基础，也是重点，但是都比较偏理论，怎么才能把理论和实践结合起来学习呢？我感觉这样学习会更有效果。</p>
<p>图片极其不清楚，相册里也有，下载下来看吧</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/os/os-memory-summary.png?x-oss-process=style/zip" alt="存储器管理总结思维导图" /></p>
<a href="https://geekplux.com/posts/os_memory_management">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[操作系统总结——处理机管理]]></title>
        <id>https://geekplux.com/posts/os_processor_management</id>
        <link href="https://geekplux.com/posts/os_processor_management"/>
        <updated>2013-01-04T16:03:00.000Z</updated>
        <content type="html"><![CDATA[<p>接着上一篇<a href="http://www.geekplux.com/2013/01/03/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%80%BB%E7%BB%93%E2%80%94%E2%80%94%E5%BC%95%E8%AE%BA/">《操作系统总结——引论》</a>继续总结。处理机管理是操作系统最重要的两个功能之一。通过构建知识框架可以对知识有宏观上的把握，增强对知识的理解。</p>
<p>图片极其不清楚，相册里也有，下载下来看吧，明天再总结“存储器管理”吧。</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/os/os-processor-summary.png?x-oss-process=style/zip" alt="处理机管理总结思维导图" /></p>
<a href="https://geekplux.com/posts/os_processor_management">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[投资被动型指数基金正在造成下一次金融泡沫？]]></title>
        <id>https://geekplux.com/posts/passive-investing-stock-market-bubble-etf</id>
        <link href="https://geekplux.com/posts/passive-investing-stock-market-bubble-etf"/>
        <updated>2019-12-17T20:00:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2019/12/17/passive-investing-stock-market-bubble-etf">https://geekplux.com/2019/12/17/passive-investing-stock-market-bubble-etf </a></p>
</blockquote>
<blockquote>
<p><strong>声明</strong>：本文只是一家之言，不代表任何机构，亦不构成投资建议</p>
</blockquote>
<p>定投指数基金等方式在最近两年被大肆吹捧，它的实际收益表现也确实跑赢了很多股票玩家。我自己本人是很赞同定投指数基金的，当年读完<a href="https://union-click.jd.com/jdc?e=&amp;p=AyIGZRtTHQYSD1MdXRwyEAdTH1wWABEPVx9rUV1KWQorAlBHU0VeBUVNR0ZbSkdETlcNVQtHRVNSUVNLXANBRA1XB14DS10cQQVYD21XHgVVHV8SARAEXRlfJWllRjN7LEBcd3ARGQscV3ACLUFZfUQeC2UaaxUDEwdTGVkSAxM3ZRtcJUN8AVcTWh0KIgZlG18TChIGXR9YEQcUD2UcWxwyQFoLXw4WCxY3ZStYJTIiB2UYa1dsEVIFS18dARAEUB4PEFJFAgYYUhQGFA8GSA5GBEYOUB5rFwMTA1w%3D">《聪明的投资者》</a>之后，就觉得炒股不如买指数，而且我亲自实践，已经定投 1300 多天。</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/bigshort/dingtou.jpeg" alt="" /></p>
<p>但本文妄从另一个层面谈一谈投资被动型指数基金的<strong>风险</strong>。论点已在标题中指出， 文章将分三部分论述：1是谁提出这个论点；2论据；3本文作者的观点，希望你看得下去。</p>
<h2>是谁提出该论点</h2>
<p>我不知道你有没有看过影片<a href="https://movie.douban.com/subject/26303622/">《大空头》</a>，该片改编...</p><a href="https://geekplux.com/posts/passive-investing-stock-market-bubble-etf">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何管理好自己的密码]]></title>
        <id>https://geekplux.com/posts/password-management</id>
        <link href="https://geekplux.com/posts/password-management"/>
        <updated>2015-09-24T17:08:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2015/09/24/password-management">https://geekplux.com/2015/09/24/password-management </a></p>
</blockquote>
<p>最近 Xcode Ghost 席卷三大平台，有预谋有组织有纪律。很多人看到这个消息纷纷修改常用密码，但我觉得密码管理其实功在平时，一个好的密码可以大幅提升你账户的安全系数。</p>
<p>而且，现在基本上每个网站都需要注册才能享用全部服务，我自己注册了上百个网站，意味着我有上百个账号密码需要记，用脑子记根本记不住（没办法，记忆力差）。后来我慢慢摸索出自己的一套策略用来管理密码，感觉实用且不算复杂。</p>
<h2>设计方法</h2>
<ol>
<li>首先要对账号和密码进行<strong>分级分类</strong>。根据重要性、产品使用频率、产品应用场景来分。我自己分为五类：银行卡类、涉及支付类、社交账号、涉及数据存储类（各种云存储、云服务等）、其他。</li>
<li>银行卡类：<strong>单独</strong>设6位数字，每张银行卡都有各自的密码（规则自己定：比如前三位是自己想的，后三位是卡号的某几位）。</li>
<li>涉及支付类：<strong>单独</strong>设密码，方法参考5、6两点。</li>
<li>社交账号类、涉及数据存储类：<strong>着重对待</strong>，方法同样参考5、6两点。</li>
<li>密码设计方法：单独想出一句话，用这句话每个字的<strong>首字母</strong>构成密码最基本的部分。大小写和符号自己<strong>有规律</strong>地加。</li>
<li><strong>排列组合</strong>：密码太多记不住很正常。可以用两组（或多组）短语排列组合成整套密码。</li>
<li>银行、涉及支付类、重度使用产品均<strong>定期更换</strong>密码。一般密码位数不低于15位（不要以为15位很长）。</li>
</ol>
<h2>密码存储</h2>
<p>那么密码设计出来，要存到哪里去呢？</p>
<ul>
<li><strong>全部用脑子记住</strong>。这种最安全也是最高效的方法，但是需要记忆力。</li>
<li>用 1Password, Lastpass 等密码管理软件记。我觉得这个适用于上文提到的「其他类」。</li>
<li>用文本笔记、表格记录。这个也没什么不可以，但是你一定要保存好这份文件，否则后果很严重。这里有个小技...</li>
</ul><a href="https://geekplux.com/posts/password-management">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[该不该制定计划]]></title>
        <id>https://geekplux.com/posts/plan_or_not</id>
        <link href="https://geekplux.com/posts/plan_or_not"/>
        <updated>2012-10-25T18:58:00.000Z</updated>
        <content type="html"><![CDATA[<p>好久不写，对语言都生疏了。浮躁、焦虑使我的思维不能专注，写文章很容易把话题扯远，所以今天打算就「定计划」一项展开。之所以把内容限定的这么小，也是为了能让思维集中思考一个问题。</p>
<hr />
<p>生活节奏的加快让我们不得不想办法提升自己的效率。制定一个详尽的计划是大家普遍使用的一种方式。</p>
<h2><strong>制定计划的必要性</strong></h2>
<p>早在初中的思想政治课上，我们就已经深刻的认识到制定计划的重要性了，比如：目标明确、科学安排时间、提升效率、磨练意志、养成良好的习惯等等……之前还看过<a href="http://www.mifengtd.cn/">褪墨</a>上的一篇文章<a href="http://www.mifengtd.cn/articles/the-pros-of-having-a-plan.html">制定计划的好处</a>，文章里说：</p>
<blockquote>
<p>计划对于人生来说相当重要，如果你在计划上失败了，那你注定会在执行上失败。没有计划的人生杂乱无章，看似忙碌却是空缺的。</p>
</blockquote>
<p>但是我认为有 <strong>更深刻</strong> 的原因促使我们去制定它。</p>
<p>不知道从哪一天起，电视剧中插播的广告旁边多了一行字“距广告结束还有xx秒“，这句话的出现让我对广告的时间有了一个大概的掌握，我可以切到其他台去浏览一下，或者是用这段时间去上个厕所、倒杯水。如果没有这行字，我一般会有两种感受:</p>
<ol>
<li>不敢做其他事，生怕自己错过广告之后的剧情；</li>
<li>莫名地觉得这广告时间怎么这么长。</li>
</ol>
<p>这里的原因在于，没有那句话提示的话，我们无法判断这个等待什么时候才是尽头，<strong>如果有进度不断更新的提示，我们对整个过程的耗时感受会远低于实际值</strong>（相反，盲目的等待会让我们觉得时间更漫长），这样我们对完成的时间也就有了一个粗略的估计。</p>
<p>做事情也是同样的道理，善于计划的人，把要做的事情划分成一个个小目标（目标分级），再将目标划分成每段时间的 TO DO 列表（逐步完成）。比如网上流行的 GTD ，个人理解就是任务分割、任务提示，使你对目标的完成进度有一个估计。然而，在完成一件事情的时候，我们总会遇到很多困难，碰壁多次之后我们不得不选择放弃。**其...</p><a href="https://geekplux.com/posts/plan_or_not">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[轻松玩转 Ukulele]]></title>
        <id>https://geekplux.com/posts/play-ukulele</id>
        <link href="https://geekplux.com/posts/play-ukulele"/>
        <updated>2015-01-05T23:54:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2015/01/05/play-ukulele">https://geekplux.com/2015/01/05/play-ukulele </a>
知乎回答：<a href="https://www.zhihu.com/question/23935947/answer/909827986">https://www.zhihu.com/question/23935947/answer/909827986 </a></p>
</blockquote>
<p>每个人都幻想过自己拥有一身的艺术细菌，可以像各种钢琴王子一样在琴键上挥洒自如。但是由于某些不可抗力，从小到大一直没学什么乐器，或者是学了也没坚持下来。最尴尬的是选了一种鸡肋乐器，学有所成却不接地气，比如二胡（我真不是黑，因为我也学过那么两年），总不能在同学聚会激战正酣的时候拿出来即兴演奏吧……还是老老实实戴个圆框墨镜到地铁口来一曲二泉映月……</p>
<p>人生苦短，为了圆我们的音（zhuang）乐（bi）梦，Ukulele 可以说是应运而生。本文将从 what、why、how 三方面介绍如何快速玩转 Ukulele，争取把我在学习过程中遇到的坑都写出来供大家参考。</p>
<h2>What-什么是 Ukulele</h2>
<p>Ukulele 翻译为夏威夷吉他、四弦琴，音译为乌克丽丽、悠可力力、尤克里里、优可乐乐，简称 Uku、Uke……没错，这么多名字都是在说一个玩意。不要纠结到底中文叫那个名字合适，你直接用 Ukulele 一词以蔽之。</p>
<p>它是一种弦乐器，正常情况下长这样：</p>
<p>![正常的 Ukulele（图片来自网络）][1]</p>
<p>不正常情况下长这样：</p>
<p>![不正常的 Ukulele（图片来自网络）][2]</p>
<p>还有各种奇形怪状的，都非常可爱。从图上可以看出它整体和吉他非常类似，唯一的不同是少了两根弦，这就大大降低了学习成本！而且它音色清脆入耳，弹起来节奏活泼畅快，可以说是居家旅行必备之良品。如果对它的起源或背景感兴趣，可以去[百度百科-乌克丽丽][3]了解一下。</p>
<h2>Why-为什么要玩 Ukulele</h2>
<ul>
<li>**...</li>
</ul><a href="https://geekplux.com/posts/play-ukulele">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[C++指针与引用小结]]></title>
        <id>https://geekplux.com/posts/pointer_references</id>
        <link href="https://geekplux.com/posts/pointer_references"/>
        <updated>2013-01-02T15:41:00.000Z</updated>
        <content type="html"><![CDATA[<h2><strong>概念</strong></h2>
<h3><strong>引用</strong></h3>
<p><strong>引用</strong>就是某一对象（变量）的一个<strong>别名</strong>。举个例子更容易理解：</p>
<pre><code class="language-cpp">int m;
int &amp;n = m;
</code></pre>
<p>这段程序中，<code>n</code>是<code>m</code>的一个引用（reference），<code>m</code>是被引用物（referent）。
<code>n</code>相当于<code>m</code>的<strong>别名</strong>（绰号），对<code>n</code>的任何操作就是对<code>m</code>的操作。
<code>n</code>既不是<code>m</code>的拷贝，也不是指向<code>m</code>的指针，其实<code>n</code>就是<code>m</code>它自己。</p>
<h3><strong>指针</strong></h3>
<blockquote>
<p><strong>指针</strong>用于指向对象（变量）。指针提供对其所指对象的间接访问。指针用于指向单个对象。</p>
</blockquote>
<p>（这三句摘自《C++ Primer, Fourth Edition》）。再举个例子：</p>
<pre><code class="language-cpp">int m;
int *n = &amp;m;
</code></pre>
<p>第二条语句定义了一个指向<code>int</code>型的指针<code>n</code>，并初始化<code>n</code>使其指向<code>int</code>型的变量<code>m</code>。
<code>*n</code>中的 <code>*</code> 操作符表明<code>n</code>是一个指针变量（<strong><code>n</code>本质上也是一个变量，只不过这个变量的存储内容是 地址</strong>）。
<code>&amp;m</code>中的 <code>&amp;</code> 符号是<strong>取地址操作符</strong>，当此操作符用于一个对象上时，返回的是该对象的存储地址。</p>
<h2><strong>联系</strong></h2>
<ul>
<li>都是有关地址的概念。
指针指向一块内存，它的内容是所指内存的地址；而引用则是某块内存的别名。</li>
<li>都是间接访问其他对象。</li>
<li>都能用于函数参数和返回值的传递。</li>
</ul>
<h2><strong>区别</strong></h2>
<ul>
<li><strong>一、指针是一个实体（本质上就是存放变量地址的一个变量），而引用只是个别名。</strong></li>
</ul>
<p>这句话从内存分配的角度很好理解，程序会为指针变量分配内存区域，而引用不分配内存区域。</p>
<ul>
<li><strong>二、指针可变，引用不可变。</strong></li>
</ul>
<p>指针在逻辑上是独立的，它可以被改变，包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。
引用在逻辑上不独立，具有依附性，所以引用必须在一开始就被初始化，而且引用一旦和某个对象绑定后就不能再改变（从一而终）。</p>
<ul>
<li><strong>三、指针可以为空，引用不能为空。</strong></li>
</ul>
<p>即指针可...</p><a href="https://geekplux.com/posts/pointer_references">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[往返香港隔离指南]]></title>
        <id>https://geekplux.com/posts/quarantine-guide-hong-kong</id>
        <link href="https://geekplux.com/posts/quarantine-guide-hong-kong"/>
        <updated>2020-06-17T20:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>最近消失了这么久，是因为家里有点事所以从香港跑回了内地，完事后又再跑回来，来回总共需要<strong>隔离至少 28 天</strong>，所以我现在已经是一名疫情“隔离专家”。同时，我身边有和我情况类似的朋友，也有一些有急事需要往返但不知道具体流程的朋友，因此我才打算写一篇科普文……关于近期往返香港隔离的科普文……</p>
<h2>时间/口岸/流程</h2>
<ul>
<li>首先，目前来往香港的方式只有两种：一种是去深圳走<strong>深圳湾</strong>口岸（陆路），一种是飞<strong>香港机场</strong>（机票应该只有上海、北京的）。</li>
<li>从香港往内地，需要<strong>集中（酒店）隔离</strong>14天，从内地往香港，需要<strong>居家隔离</strong>14天（<em>如果你是特殊身份到香港，可以豁免隔离。具体6类特殊身份你可以自己去查，不过别想了，你不会在内的</em>）。所以如果你是持有旅游签证（只能逗留7天）想来香港的话，是根本不可能的。（<em>这里还需注意：如果从香港到内地，你的目的地不是隔离所在城市，那你需要咨询清楚是否还需要二次隔离。比如你最终目的地是山西，那么“有可能”在深圳隔离完14天后回太原还需隔离14天。</em>）</li>
<li>流程不用担心，你只要进入口岸或机场，就相当于进入了流程，每一步都有专门的工作人员看护和指导你，你需要填几张表格，扫几个二维码在线填表，不会落下任何一步，同时自己也没什么选择权（不能选酒店不能选隔离区），一步步走流程即可。</li>
</ul>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/quarantine/IMG_3699.jpeg" alt="" /></p>
<h2>从香港到内地</h2>
<p>如果是走深圳湾口岸，你会在过关之前就被<strong>随机分配</strong>到深圳的某个区隔离（我当时分配到了福田区，有朋友分配到了光明区，对比下来，光明区吃的给的多，福田区人文关怀比较多）。之后如果你体温正常就会送上大巴，座位随便坐，中间可能会换乘另一辆，但这具体看你被分配到哪个区。<strong>酒店也是随机分配</strong>，你在大巴上是全程不知道你要去哪的，到了酒店门口你下车才知道这就是你未来要呆14天的地方。</p>
<p>如果是坐飞机到上海或北京，应该是同样的流程。</p>
<p>下图为福田...</p><a href="https://geekplux.com/posts/quarantine-guide-hong-kong">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[算法优化人生之 —— 调度算法]]></title>
        <id>https://geekplux.com/posts/schedule-algorithm-and-life</id>
        <link href="https://geekplux.com/posts/schedule-algorithm-and-life"/>
        <updated>2019-03-18T20:20:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2019/03/18/schedule-algorithm-and-life">https://geekplux.com/2019/03/18/schedule-algorithm-and-life </a></p>
</blockquote>
<p>电脑就是人脑的复刻，这是我大学时学《操作系统》这门课时的感受。最近在复习调度算法，又重拾了这种感觉，他俩太像了，电脑就是模仿人脑的机制制造出来的，但现在我们可以反过来从它身上学习一些优秀的算法，反哺自身（可能早已遗忘的）做事方法。</p>
<h2>什么是调度算法</h2>
<p>调度，你就理解成<strong>安排</strong>吧，大家应该都懂，<strong>懂的同学</strong>，这一节就<strong>直接跳过</strong>吧。</p>
<p><img src="https://i.loli.net/2019/07/19/5d3176db8a15333899.jpeg" alt="" /></p>
<p>我来举个常见的栗子——电梯。据说每个程序员坐电梯的时候都会想<a href="https://www.cnblogs.com/jianyungsun/archive/2011/03/16/1986439.html">电梯调度算法</a>，我也不例外……</p>
<p>最简单的调度方法是什么呢？当然是“谁先按的谁先坐”，这个在计算机里叫<strong>先来先服务</strong>(FCFS-First Come First Serve)算法，不管你是在几楼按的电梯，电梯都是按顺序去接人、送人。你可以想象一下，一个人在 1 楼按了去 20 楼，然后第 2 个人在 2 楼按了去 5 楼，第 3 个人在 21 楼按了要去 1 楼。这时候电梯它首先会跑去 1 楼把第 1 个人送到 20 楼，再跑去 2 楼把第 2 个人送到 5 楼，最后再跑去 21 楼把第 3 个人送到 1楼。</p>
<p>是不是很蠢？它明明可以在送完第 1 个人之后去 21 楼接上第 3 个人，把他送到 1 楼后再去 2 楼接第 2 个人，这一下子能省多少电费啊！😳</p>
<p>所以有了第二种调度算法：<strong>最短寻找楼层时间优先</strong>(SSTF-Shortest Seek Time First) 算法，用人话说就是优先停到最近的楼层。...</p><a href="https://geekplux.com/posts/schedule-algorithm-and-life">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[CSS 最核心的几个概念]]></title>
        <id>https://geekplux.com/posts/several_core_concepts_of_css</id>
        <link href="https://geekplux.com/posts/several_core_concepts_of_css"/>
        <updated>2014-04-25T20:28:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2014/04/25/several_core_concepts_of_css">https://geekplux.com/2014/04/25/several_core_concepts_of_css </a></p>
</blockquote>
<p>本文将讲述 CSS 中最核心的几个概念，包括：盒模型、position、float等。这些是 CSS 的基础，也是最常用的几个属性，它们之间看似独立却又相辅相成。为了掌握它们，有必要写出来探讨一下，如有错误欢迎指正。</p>
<h2>元素类型</h2>
<p>HTML 的元素可以分为两种：</p>
<ul>
<li>块级元素（block level element）</li>
<li>内联元素（inline element 有的人也叫它行内元素）</li>
</ul>
<p>两者的区别在于以下三点：</p>
<ol>
<li>块级元素会独占一行（即无法与其他元素显示在同一行内，除非你显式修改元素的 display 属性），而内联元素则都会在一行内显示。</li>
<li>块级元素可以设置 width、height 属性，而内联元素设置无效。</li>
<li>块级元素的 width 默认为撑满父元素，而内联元素则是根据其自身的内容或子元素来决定其宽度。</li>
</ol>
<p><em>最常见块级元素应该是 <code>&lt;div&gt;</code> 吧，内联元素有 <code>&lt;span&gt;</code> <code>&lt;a&gt;</code> <code>&lt;img&gt;</code> 等等，完整的元素列表可以谷歌一下。</em></p>
<p>具体来说一下吧,</p>
<pre><code class="language-css">.example {
    width: 100px;
    height: 100px;
}
</code></pre>
<p>我们为 <code>&lt;div&gt;</code> 设置上面的样式，是有效果的，因为其是块级元素，而对 <code>&lt;span&gt;</code> 设置上面的样式是没用的。要想让 <code>&lt;span&gt;</code> 也可以改变宽高，可以通过设置 <code>display: block;</code> 来达到效果。当 display 的值设为 block 时，元素将以块级形式呈现；当 display 值设为 inline 时，元素将以内联形式呈现。</p>
<p>若既想让元素在行内显示，又能设置宽高，可以设置：</p>
<pre><code class="language-css">display: inline-...
</code></pre>
<a href="https://geekplux.com/posts/several_core_concepts_of_css">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[响应式设计简易指南（译）]]></title>
        <id>https://geekplux.com/posts/simple_guide_to_responsive_design</id>
        <link href="https://geekplux.com/posts/simple_guide_to_responsive_design"/>
        <updated>2014-04-06T22:54:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2014/04/06/simple_guide_to_responsive_design">https://geekplux.com/2014/04/06/simple_guide_to_responsive_design </a></p>
</blockquote>
<h4>为什么要使用响应式设计？</h4>
<p>我们想让我们的网站通过响应用户的行为、设备的屏幕大小和屏幕方向，从而在所有设备上都能用。</p>
<h4>一个碎片化的世界</h4>
<p>截止2013年，有成千上万种不同的设备在浏览网页，所以我们不可能设计出适应所有屏幕大小的网页。相反，我们必须得采用一种更加流畅的方式去设计。</p>
<h4>移动优先</h4>
<p>最近一个比较火的词叫移动优先。它的意思是，先为移动端设计样式，然后再根据需求去优化更大屏幕的样式。换句话说，假如你把移动端样式当成网站的默认样式，且以后不用去优化它，一步到位。那就更省事了！</p>
<blockquote>
<p>“假定默认使用一个灵活但简单的布局，你的确可以适配各种浏览器，但这还不算是完全做到了响应式布局。所以当我们谈论「移动优先」，实际上是在说「渐进增强」。” —Ethan Marcotte</p>
</blockquote>
<h2>用 Min-width 进行媒体查询（ Media Queries ）</h2>
<p>现在来介绍一种特别的布局方式。 通过 min-width 来界定不同屏幕该如何布局。它能就近检测出不同设备的屏幕大小（即 media queries，可直译为媒体查询），比在样式表末尾或一个单独文件中处理更简单。</p>
<pre><code class="language-css">/* Small screens (default) */
html { font-size: 100%; }

/* Medium screens (640px) */
@media (min-width: 40rem) {
  html { font-size: 112%; }
}

/* Large screens (1024px) */
@media (min-width: 64rem) {
  html { font-size: 120%; }
...
</code></pre>
<a href="https://geekplux.com/posts/simple_guide_to_responsive_design">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[文本数据可视化（上）——从 Wordle 谈起]]></title>
        <id>https://geekplux.com/posts/text-data-visualization-wordle</id>
        <link href="https://geekplux.com/posts/text-data-visualization-wordle"/>
        <updated>2017-04-12T10:44:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>本文首发于：<a href="https://zhuanlan.zhihu.com/p/26306683">GraphiCon 知乎专栏-文本数据可视化（上）——从 Wordle 谈起</a>。原文地址：<a href="https://geekplux.com/2017/04/12/text-data-visualization-wordle">https://geekplux.com/2017/04/12/text-data-visualization-wordle </a></p>
</blockquote>
<p>看到题目，你可能一脸懵逼，什么是 wordle？下面这幅图就是：</p>
<p><img src="https://ooo.0o0.ooo/2017/04/14/58f0320078efe.png" alt="" /></p>
<p>是不是很熟悉？大到宣传海报，小到个人名片，Wordle 如今随处可见。它可以轻松的展示出一段文字的关键词，让我们对这段话的内容一目了然。其实这属于数据可视化中的文本内容可视化，常用于社交网络中的内容分析，<em>还记得前几年微博有有个插件（现在似乎找不到了），用户可以一键生成自己的微博关键词，当时引起了大量转发，因为很多用户的关键词出乎意料，让自己都大吃一惊</em>。本文就从最简单的 Wordle 说起，说说文本内容可视化，以窥数据可视化一隅。</p>
<h2>为什么要有 Wordle？</h2>
<p>其实要回答这个问题就要回答为什么要做数据可视化。我们先看下面这段话：</p>
<blockquote>
<p>GraphiCon 取 GraphicsCon 图形控之意（类比 lolicon）。
我们会把我们觉得有趣的，好玩的，有用的图形学相关的技术，知识，想法，资讯放到 GraphiCon 这个小空间里。
GraphiCon 的 po 主们虽然遍布天涯海角，在从事着不同的事，但都是痴迷计算机图形学的小伙伴们。
只要你也对计算机图形学感兴趣，或者喜欢好玩有趣狂拽酷炫的图形项目，那么你也是 GraphiCon！</p>
</blockquote>
<p>一眼扫过去，你可能能轻松地注意到 <strong>GraphiCon</strong> 出现了 4 次。而还有个关键词「<strong>图形</strong>」，虽然出现了 5 次，但显然没有 GraphiCon 醒目。平...</p><a href="https://geekplux.com/posts/text-data-visualization-wordle">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[文本数据可视化（下）——一图胜千言]]></title>
        <id>https://geekplux.com/posts/text-data-visualization</id>
        <link href="https://geekplux.com/posts/text-data-visualization"/>
        <updated>2017-06-26T13:57:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>本文首发于：<a href="https://zhuanlan.zhihu.com/p/27449788">GraphiCon 知乎专栏-文本数据可视化（下）——一图胜千言</a>。原文地址：<a href="https://geekplux.com/2017/06/26/text-data-visualization">https://geekplux.com/2017/06/26/text-data-visualization </a></p>
</blockquote>
<p>文字是传递信息最常用的载体。在当前这个信息爆炸的时代，人们接收信息的速度已经小于信息产生的速度，尤其是文本信息。当大段大段的文字摆在面前，已经很少有耐心去认真把它读完，经常是先找文中的图片来看。这一方面说明人们对图形的接受程度比枯燥的文字要高很多，另一方面说明人们急需一种更高效的信息接收方式，文本可视化正是解药良方。「一图胜千言」我们从小就有体会，教材里的解释图、自己笔记里总结的知识结构图，一直到现在经常用的思维导图等，其实都是简单、实用的文本可视化。本文将简单介绍文本可视化的基础概念，然后重点通过各类文本可视化的案例来阐述可视化之美（多图，不过为了学到知识这点流量不算什么）。</p>
<h2>为什么要文本数据可视化</h2>
<p>虽然一般这种讲必要性的段落很多人都略过不看，虽然文本可视化的必要性大家用脚趾头估计都能想到，但我还是稍微说一说吧。文本可视化的作用有以下四点：</p>
<ol>
<li><strong>理解</strong> - 理解主旨</li>
<li><strong>组织</strong> - 组织、分类信息</li>
<li><strong>比较</strong> - 对比文档信息</li>
<li><strong>关联</strong> - 关联文本的 pattern 和其他信息</li>
</ol>
<p>简单来说就是让你更加直观迅速的获取、分析信息（所有可视化的作用都是这个）。举个例子，针对一篇文章，文本可视化能更快的告诉我们文章在讲什么；针对社交网络上的发言，文本可视化可以帮我们信息归类，情感分析；针对一个大新闻，文本可视化可以帮我们捋顺事情发展的脉络、每个人物的关系等等；针对一系列的文档，我们可以通过文本可视化来找到它们之间的联系等等。</p>
<p>一般来说，情报分析人员、网络内容分析人员、情感分析或文学研究者等相...</p><a href="https://geekplux.com/posts/text-data-visualization">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[研究生生涯总结]]></title>
        <id>https://geekplux.com/posts/the-summary-of-graduate-career</id>
        <link href="https://geekplux.com/posts/the-summary-of-graduate-career"/>
        <updated>2018-06-01T00:07:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2018/06/01/the-summary-of-graduate-career">https://geekplux.com/2018/06/01/the-summary-of-graduate-career </a></p>
</blockquote>
<p>距离上次的总结，已经时隔两年，其实早就想花时间认真总结一下自己的研究生生涯。虽然断断续续写了很久，但一直没有一个身心皆静的时间来梳理。今天得空，坐在西湖边的长椅上，思绪纷飞，将其整理成文。时间跨度比较大，不免有些啰嗦，其中每一个小标题都能写篇小议论文了。</p>
<p>如果说高中奠定了我的兴趣，大学塑造了我的三观，那么我对研究生学习的 <strong>期待</strong> 是能让我找到一个 <strong>想深入且值得研究的方向</strong>，像一片肥沃的土壤能让我这颗小苗扎根于此。两年半的青年时光，是个很大的成本，比起那些没有工作就直接升入研究生的同学，我内心多了些许压力。所幸我没有太荒废，毕业之时细数躺在 wunderlist 里的几个小目标，也实现的七七八八，对于我这个善于自我满足的人来说已经很满意了。</p>
<p>我的研究生时光可以分为两个阶段，前半程在杭师大，浑浑噩噩，后半程在浙大，马不停蹄。</p>
<h2>1. 前半程</h2>
<p>研一的一年，学校里是有课程的。工作过的我，对自己需要学什么非常明确，所以刚开始我觉得学校里的课程正好能加深我对软件工程的理解，蛮不错的。但看后来的实际情况，很多地方不尽如人意，甚至让人失望。这些情况我在入学之前都预想过，自己的选择也没必要后悔，但有时还是忍不住抱怨，<strong>退学的念头</strong>几乎是每周出现两三次。</p>
<p>无奈，毕竟是一所很一般的大学，我也不能强求什么。当初父母的建议历历在目，上司的劝导声声在耳，为了不让自己放弃工作而读研的决定显得愚蠢，我只好另找机会另辟蹊径。无论是本科还是硕士生涯，我要感谢这些当初劝我不要去的人，是你们的劝诫时刻警醒着我，让我不要就此沉沦。哈哈，开个玩笑，其实是我自己一直坚信一句话**“没有绝对正确的选择，只有让选择变得正确”** ，我觉得一定有一条出路既能抹平我内心的失望，又能让自己有所...</p><a href="https://geekplux.com/posts/the-summary-of-graduate-career">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[我获取信息的方法 2022 版]]></title>
        <id>https://geekplux.com/posts/the-ways-to-get-information-2022</id>
        <link href="https://geekplux.com/posts/the-ways-to-get-information-2022"/>
        <updated>2022-04-11T10:40:00.000Z</updated>
        <content type="html"><![CDATA[<p>五年前我曾写过一篇文章——<a href="https://geekplux.com/posts/the-ways-to-get-information">我获取信息的渠道</a>，直到今天每个月还维持着稳定的浏览量，可见大家对信息获取的焦虑一直没有消减。时过境迁，五年前的方法有些已不再适用，我这篇即为前作的 2022 更新版，不过顺序反过来，先说渠道，再说工具，不来虚的，都是实操。</p>
<h2>渠道</h2>
<p>开门见山，目前我获取信息的渠道：</p>
<ul>
<li>邮件列表（newsletter）</li>
<li>RSS</li>
<li>YouTube</li>
<li>Podcast</li>
<li>书籍</li>
<li>约人见面聊天</li>
<li>论文</li>
</ul>
<p>顺序<strong>按使用频率排序</strong>。其中除 Podcast、YouTube 和线下见面聊天外，其他四项在<a href="https://geekplux.com/posts/the-ways-to-get-information">之前那篇</a>均有提到。每项我会在下文中稍加阐述，并在最后分享出我 newsletter 和 RSS 的<a href="https://wiki.geekplux.com/#/page/information">订阅列表</a>。</p>
<h4>文字</h4>
<p>邮件列表无疑是我当前获取信息最多的渠道，这一是因为我对邮箱使用的愈加频繁与熟练，二是得益于近几年 newsletter 的大爆发。我在<a href="https://geekplux.com/posts/the-ways-to-get-information">前作</a>中提到的那些 newsletter，大部分是<strong>链接推荐型</strong>，它们不是长篇大论的文章，而是一个个链接配上简短说明，所以我把它们当作别人已经帮我筛选过一遍的信息索引。但是在疫情之后，我订阅了大量<strong>杂志型</strong>和<strong>周报型</strong>的 newsletter。前者几乎每篇都是长篇大论，但精品率高，毕竟收费也高（微笑）；后者则大部分都是流水账，每周发一篇自己这周做了什么，特别像周报。前者阅读起来费力，因为可能出自专业作者之手，语言水平略高，信息量较大，认真读完一篇都特别耗时；后者则读起来轻松愉快，有点像交了一个朋友，每周跟你 upd...</p><a href="https://geekplux.com/posts/the-ways-to-get-information-2022">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[我获取信息的渠道]]></title>
        <id>https://geekplux.com/posts/the-ways-to-get-information</id>
        <link href="https://geekplux.com/posts/the-ways-to-get-information"/>
        <updated>2017-01-14T00:10:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2017/01/14/the-ways-to-get-information">https://geekplux.com/2017/01/14/the-ways-to-get-information </a></p>
</blockquote>
<p>互联网迅猛的浪潮抹平了信息的鸿沟，却也让优质的信息变得如沧海一粟。人们常言「信息不对等」，往往在感慨<strong>有价值的信息</strong>总是被人捷足先登。正因这些信息如此重要，催生了一代又一代、各式各样的信息获取工具。</p>
<h2>我阅读工具的演化史</h2>
<p>印象中，最早的信息聚合网站，应该是叫「<a href="https://en.wikipedia.org/wiki/Golden_Pages">黄页</a>」，已经有 100 多年的历史，马云早期的创业项目就叫「中国黄页」。后来家里的 IE 首页变成了一些门户网站，这时候获取信息主要靠手动点击链接到各大网站。再之后，我接触到了 <strong>Google Reader</strong>，认识了 RSS，从此开启了一扇新的大门。</p>
<p>之前获取信息的方式是自己主动探索，而现在只需要维护好自己的 RSS 订阅列表，就会有感兴趣的信息源源不断地流进来。犹记得当时我的订阅列表很长，每天点开都是几百上千的未读，<strong>快速扫一遍，把感兴趣的随手添加到 pocket（因为 pocket 可以离线阅读），抽碎片时间打开 pocket 阅读，遇到好文章再收藏到 Evernote</strong>，这个阅读流一直沿用了一两年。即使后来 Google Reader 被 Google 遗弃我也坚持用 RSS，只是频率比以前低了不少。</p>
<p>再到后来，不少博客写手开始转战到了微信公众号，很多文章用微信直接阅读，体验也挺好，于是阅读公众号成了我当时新的阅读方式。然而好景不长，很快公众平台就被一堆营销号攻占，一些写手为了圈钱，写作质量也大幅下降。我开始慢慢取关公众号，并且意识到了一个问题：<strong>大多数的文章都是没有价值的，或者说远没有自己想象的有价值</strong>。很多文章都是东拼西凑来的，能引发思考的凤毛麟角。</p>
<p>别人的文章好似二手的知识，我们如果想获取...</p><a href="https://geekplux.com/posts/the-ways-to-get-information">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[疫情三年]]></title>
        <id>https://geekplux.com/posts/three-years-of-covid</id>
        <link href="https://geekplux.com/posts/three-years-of-covid"/>
        <updated>2022-12-27T01:30:00.000Z</updated>
        <content type="html"><![CDATA[<p>此时此刻，2022 年 12 月 27 日凌晨 00:52，我坐在<strong>隔离酒店</strong>的地板上，默默地敲着键盘...环顾四周，只听得到空调的声音，但内心却翻江倒海。</p>
<p>就在刚刚，央视官媒<a href="https://mp.weixin.qq.com/s/NMzklF6__PSIcs1yZQvRWQ">宣布</a> 1 月 8 日之后将取消海外入境隔离，也就意味着真正的通关了！看到很多游子额手称庆，我也不禁感慨：三年前谁也不曾想到回家之路竟如此艰辛。</p>
<p>我相信这三年对很多人来说都是身心煎熬。三年的时间仿佛压缩成了一瞬，原来人对时间的感知也会受到空间的影响。我是第一次深刻地理解了旅行的必要性，没有空间的变迁就无法刺激新的记忆产生，没有新的记忆也就没有“活过”的感觉。</p>
<h2>疫情中的疲与乏</h2>
<p>身在香港，内地的生活我体验不到，但心情是辗转起伏多次。尽管我是一个<strong>极度乐观</strong>的悲观主义者，也挡不住每天的消极新闻。香港有个好处是中外新闻都可尽收眼底，内地的新闻自不必说，香港本地以及国外最开始的魔幻操作也是让人目不暇接。在疫情的第一年，可能整个人类都在面临无序与慌张，我们大概知道怎么面对，却不知道是否有效；我们大概知道会最终战胜，却不知道这个期限是多久。</p>
<p>随后进入的第二年，“仰卧起坐”式抗疫让夹在中间的香港历经波折，近在咫尺的深圳湾变成了人造的天堑。多次“即将通关”又“延缓通关”，多次期望又失望，一直到不抱希望，很多港漂到后来真的放宽限制之后还得确认好几遍到底是不是官方消息。直到 Omicron 的出现，直到各个国家开始逐步放开，我们仿佛看到了曙光。令人印象深刻的是 2021 年 10 月新加坡总理李显龙发表<a href="https://youtu.be/C0cB0K1S1D4">演讲</a>称新加坡将从“清零”迈向共存，我当时听了两遍。</p>
<h2>关键的第三年</h2>
<p>但谁也想不到第三年的剧本。香港在中外之间摇摆了两年后，终于在 2022 年 3 月迎来了大爆发。彼时的香港正如 11 月底的内地，天底下没有新鲜事。</p>
<p>当时香港日增几万，眼瞅着“动态清零”就要维持不下去，随即在专家权衡之后...</p><a href="https://geekplux.com/posts/three-years-of-covid">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[一代人的博客，一代人的青春注脚]]></title>
        <id>https://geekplux.com/posts/tide-of-blogs</id>
        <link href="https://geekplux.com/posts/tide-of-blogs"/>
        <updated>2026-02-24T22:50:00.000Z</updated>
        <content type="html"><![CDATA[<p>今天和 <a href="https://lofilog.com/">lofilog</a> 约饭，聊起了独立博客。他说我的博客在他同龄人中还算有人知道，我随即说了几个在我那一代人中广为流传的博客，他却一个没听过。我当下武断地说：也许恰好是 2010–2015 年开始写博客的那批人，如今还在被人阅读。</p>
<p>但开车回来的路上，我越想越觉得这个结论过于草率。不是我踩中了某个时代节点，而是博客本身就像潮水——一阵阵涌来，又一阵阵退去。每一代人都会在自己前方的浪头上，找到属于他们的名字与偶像。当一波潮水退去，隐入烟海，下一波浪潮又会袭来。</p>
<p>对我影响最深的两位偶像分别是<a href="http://mindhacks.cn/"><strong>刘未鹏</strong></a>（http://mindhacks.cn/ ，可惜今天好像打不开了) 和<a href="https://blog.youxu.info/"><strong>徐宥</strong></a>（https://blog.youxu.info/ ） 。时至今日，我坐在桌前重读<a href="https://blog.youxu.info/2009/08/06/my-undergraduate-year/">《我的大学》</a> 这篇博客仍然是头皮发麻，夜晚黄黄的灯光映照出我感慨万千的脸。谁曾想一篇 17 年前的博客文章，会无形之中改变一个人的人生轨迹。</p>
<p>我应该是恰好在我大二的时候读到这篇，同样是黄黄的灯光，只是映照的是我在大学宿舍里迷茫和躁动的脸。花了一整个通宵读完所有徐宥的博客，第二天肾上腺素满满地冲到图书馆开始看书。而读到 MindHacks 和<a href="https://book.douban.com/subject/6709809/">《暗时间》</a>同样如此，也是一个通宵读完所有的博文，开始慢慢体会和理解怎么靠潜意识提升认知效率。多年后当我了解到人 95% 的思考和决策都靠潜意识支配，更加庆幸自己有幸能在大二的时候读过这些有用的文字。</p>
<p>相比上面提到的两位，相比那些真正影响过一代人的写作者，我的博客不值一提。我还依稀地记得那个年代，新浪博客仍在，韩寒、徐静蕾、___ 等等还经常发文针砭时弊。传统的排版和迟缓的网速让每...</p><a href="https://geekplux.com/posts/tide-of-blogs">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[接外包的一些坑和小技巧]]></title>
        <id>https://geekplux.com/posts/traps-and-tips-of-outsourcing</id>
        <link href="https://geekplux.com/posts/traps-and-tips-of-outsourcing"/>
        <updated>2020-08-01T12:10:00.000Z</updated>
        <content type="html"><![CDATA[<p>我曾经也是一个接外包小能手，有被甲方坑过的，也有坑过甲方的（对不起哈），虽然金盆洗手几年，但我相信我还是有一些经验（惨痛教训）可以分享给后来人的：</p>
<h2>1. 但凡犹豫，就不要接</h2>
<p>接外包的途径有很多，可以直接从外包平台去找，可以去论坛回帖发帖，可以有朋友牵线搭桥等等，<strong>通常最靠谱的是朋友介绍的项目</strong>。这里说的朋友，是指对你水平和技术栈都很熟悉的朋友，不是随便一个陌生人，也不是那种只知道你是程序员但是连写程序是干什么都不知道的人。</p>
<p><strong>不管你是从什么渠道收到项目需求，但凡有一点犹豫，就不要接</strong>。一般收到一个需求，你肯定会自己先对其进行一个评估：</p>
<ul>
<li>自己会不会，能不能做</li>
<li>要用多久</li>
<li>最难的部分是什么、需不需要再找人合作</li>
<li>甲方靠不靠谱</li>
</ul>
<p>等等。作为乙方，这都需要时间去想。如果甲方需要快速答复，你可以给一个大致的回复，然后把你的顾虑都明说出来，也可以请求对方把顾虑说出来，开诚布公好做生意。评估的每个环节都很重要，如果其中有一环你心里觉得别扭，就真的不要接。你接了之后也做的不开心，本来外包就是一个苦力活，如果心情不顺，<strong>会越来越后悔自己接包的决定，最后完成度和质量就会难以保证</strong>。</p>
<p><em>我曾经因为某朋友介绍项目，项目其实不咋地，但碍于朋友面子我接下了这个包，然后就被他和不懂技术的甲方两个人坑的死死的。所以我之后再也不会“碍于情面”去做什么事，基本上丑话都说在前面，如果对方都接受，我再开始。</em></p>
<h2>2. 明码标价，事先谈好</h2>
<p>首先你要对自己的“身价”有一个评估。整个项目扔过来的时候，对方报价 50000，你要能判定出你做这个项目是否不止这个价。其次项目的<strong>价钱一定要在项目开始前谈拢</strong>，保证双方都满意的前提下再开始项目，而不是开发了一半了再扯皮。</p>
<h3>估价技巧</h3>
<p>这里有个小技巧是，先把这个项目按你一个人全权负责开发需要用的<strong>工时</strong>算出来，然后<strong>乘以</strong>你的<strong>时薪</strong>。我用下来，这个方法最靠谱。然后你还需要加上一些溢价，一方面避免幺蛾子的发生，另一方面对自己是一个督促和保证。*我曾因为自己报的价太低，而导...</p><a href="https://geekplux.com/posts/traps-and-tips-of-outsourcing">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何打造真正的简历]]></title>
        <id>https://geekplux.com/posts/true-resume</id>
        <link href="https://geekplux.com/posts/true-resume"/>
        <updated>2019-07-30T10:07:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2019/07/30/true-resume/">https://geekplux.com/2019/07/30/true-resume/ </a></p>
</blockquote>
<p>简历是求职的敲门砖，是进阶的垫脚石，其重要性不言而喻。这篇文章写一下我对简历的理解。</p>
<p>简历二字，可以理解成履历的简述。很多人运用漂亮的<a href="https://github.com/geekplux/cv_resume">模版</a>、既定的结构，试图勾勒出最好的自己。但真正的简历不是一张 A4 纸，也不是一份精美的 PDF，而是由表及里，渗透在网络上方方面面的你。</p>
<h2>通俗的简历</h2>
<p>我参加过面试，也面试过别人，见过的简历大概分三种，除基本信息外：</p>
<ol>
<li>只罗列技能。这种简历的信息量为 0，你不会这些技能怎么会来投递这个职位。</li>
<li>罗列出辉煌的“成绩”、项目。看似丰满，但我无法确定你在其中具体做了些什么。</li>
<li>详细描述自己在各个项目的作用。这种简历我认为最好，但由于我对项目缺乏感知，所以得进一步了解你。</li>
</ol>
<p>综合看下来，前两种简历让我对求职者的了解仍是十分粗浅，只有<strong>第三种</strong>达到了敲门砖的目的。那么通常我会通过搜索或者约谈面试来进一步了解求职者。</p>
<h2>真正的简历</h2>
<p>刚才提到的简历我都称为通俗的简历，在当今的求职流程中是必不可少的。但真正的简历是<strong>棋在局外</strong>，双方还没落子，就应该知己知彼了。接下来我就写写具体如何打造：</p>
<h3>建立自己的品牌</h3>
<p>说白了是建立自己的影响力。统一 ID，统一头像，给人留下一致的印象。</p>
<h4>建立个人主页</h4>
<p>搭建属于自己的个人主页（或博客），让它作为你的大本营、你的信息索引，包括：</p>
<ul>
<li>展示出你做过的项目。不要总觉得自己的项目不够好就不敢放上去，总有人比你更差…… 也只有放上去才能督促你做的更好。</li>
<li>展示你的所思所想，多写博客，技术的生活的都可以。</li>
<li>汇集你所有的链接，你的社交账号、各类影响力输出平台。</li>
</ul>
<p>个人主页要精心维护，每个作品、每个项目的主页也都是你品味和能力的体现，如何排版、设...</p><a href="https://geekplux.com/posts/true-resume">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[弱冠，瞎扯]]></title>
        <id>https://geekplux.com/posts/twenty_years_old_gab</id>
        <link href="https://geekplux.com/posts/twenty_years_old_gab"/>
        <updated>2012-01-30T20:21:00.000Z</updated>
        <content type="html"><![CDATA[<p>二十岁生日，没有什么太大的感觉，只是这个数字太刺眼。按别人的话说，的确是奔三了。花季雨季不再，仿佛这个数字就意味着曾经的幼稚、鲁莽、任性、叛逆、固执、脆弱应该变成成熟、勇敢、体贴、顺从、执着、坚强。。。</p>
<p>岁月是把杀猪刀，把肉一片片割下来却轻的不让你察觉，当鲜血快要结痂的时候，又来一刀，让你血缓缓往出流却永远不停，「曾经」这个词估计也是为这把杀猪刀而作的吧。曾经笃信的不再相信，曾经坚持的也随风而去，不知道什么会是永恒。</p>
<p>以前相信爱情，现在爱情只是无聊之余的笑谈罢了，海很容易枯，石很容易烂，2012都快来了，山马上无棱，天地马上合，赶紧与君绝。</p>
<p>以前相信友情，现在旧人已失去联系，新人又匆匆走过。那种不需寒暄，开得起玩笑的朋友不知你身边还有几个。</p>
<p>以前相信历史，现在知道历史只是胜利者炫耀自己的工具。</p>
<p>以前相信正义，现在发现正义的背后往往隐藏着各种见不得人。</p>
<p>以前相信理想，现在理想只是用来推翻的。</p>
<p>以前相信爱国，现在都怀疑自己被洗脑洗成啥样了。</p>
<p>以前相信付出就会有回报，现在才知道这句话就是坑爹呢。</p>
<p>以前相信礼让一寸、得礼一尺，现在发现给脸不要脸的人都能环绕地球几圈了。</p>
<p>以前相信我为人人，人人为我，无私奉献才是好孩子，现在才知道你脑子有泡吧。</p>
<p>以前相信总有人俯首甘为孺子牛，现在才知道挤出来的都是三聚氰胺。</p>
<p>以前相信如何对待别人，别人就如何对待你，现在才知道地球已经不适合我了，我还是回火星吧。。。。</p>
<p>以上相信的，现在好像都是扯淡，相信与不信之间的深度，仿佛不是一个数字“二十”就能解释的。就用扯淡的态度面对惨淡的人生吧，这句话靠谱。</p>
<p>让我在二十岁的第一天愤青一段，也许青春已经不在了，管他呢，在或不在又有什么区别！</p>
<p>感谢生我养我的人，感谢记得我生日的每个人，感谢我自己活了下来。谢谢。。。</p>
<a href="https://geekplux.com/posts/twenty_years_old_gab">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[来香港的两个月]]></title>
        <id>https://geekplux.com/posts/two-months-after-coming-to-hong-kong</id>
        <link href="https://geekplux.com/posts/two-months-after-coming-to-hong-kong"/>
        <updated>2019-10-29T22:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>不知不觉，已经来港两月，今天来谈一下整体感受。本来想录个 vlog 讲的，发现在大庭广众讲话太羞耻了，遂放弃，还是拿起了熟悉的键盘，开唠。</p>
<h2>住行</h2>
<p>本打算常住酒店，因为来了之后我发现住酒店比租房还便宜，但由于办身份证和银行卡需要一个固定住址，所以无奈还是租了房。这边租房基本靠中介，我没纠结太久，因为房子不错就果断租了。空间和我在杭州住的差不多，窗户正对海，也算是过上了边洗澡边看海的生活。</p>
<p>看房的时候，中介说里面住了一家5口人，我当时有些震惊，进来看到上下铺顿觉人生不易。这边租房不带家具，所以床、桌子、衣柜、洗衣机等，我都一手操办，耗时半个多月才算安顿下来，不过我也不知疲，生活总要按部就班地来。</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/walk-around.jpg?x-oss-process=style/zip" alt="" />
（楼下散步随拍）</p>
<p>香港公共交通发达，我坐叮叮车、公交和地铁都可以直达上班地点，无聊了我就天天换着坐……每天通勤时间大概15-25分钟，我觉得通勤是工作疲劳的催化剂，所以超过 30 分钟的通勤时间我是受不了的。</p>
<h2>工作</h2>
<p>我现在是在金融公司做 Data Analyst，但实际上还是写代码，前后端+可视化，很惬意。尽管最近有一些 Big Day，但总体节奏还是很稳定，不会因为什么事而催你，也不加班。</p>
<p>由于节奏稳定，工作状态比在前司好了太多，每天一到公司会先规划今天要做的事，每天下班感觉正好干完，是真切的感受到了“慢慢来，比较快”这六个字。除了写代码之外，每天也会不定时 meeting，和远在其他国家的同事沟通一下工作进展，有很多时间能让我想清楚接下来要做什么，和怎么才能把手头的产品做得更好。两份工作经历，让我愈发觉得写代码变成了工作中最简单的事。</p>
<p>同事们都很 nice，不像外面传言得外企就多么生分。由于我是完全的切换了生存环境，所以问题很多，他们都耐心解答，我非常感激。我适应能力（脸皮厚度）还算可以，所以工作上目前总体都很不错啦，等我体验的时间...</p><a href="https://geekplux.com/posts/two-months-after-coming-to-hong-kong">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[来美国的两年后]]></title>
        <id>https://geekplux.com/posts/two-years-in-usa</id>
        <link href="https://geekplux.com/posts/two-years-in-usa"/>
        <updated>2025-04-12T22:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>好久不见，诸君。</p>
<p>为什么选在两年这个时间节点写一篇文章呢？一是觉得似乎达到了一个里程碑，二是总算觉得自己适应了这里的生活。遥想当年刚去香港的时候，是<a href="https://geekplux.com/posts/two-months-after-coming-to-hong-kong">两个月</a>就 settle down 了，可见这两次的难度不可同日而语。</p>
<h2>生活</h2>
<p>如何定义适应一个新地方？我个人认为是<strong>当生活中 80% 的场景不需要搜索和问询的时候</strong>，或者说有自信能处理绝大多数情况的时候，那就算是适应了。我经常喜欢用 Warcraft III 里的“战争迷雾”来比喻在新环境里的处境，每次搬家就像换了一张地图，刚来总是两眼一抹黑。</p>
<h3>衣食住行</h3>
<p>来美国之后的生活不得不说和香港、内地有很大不同。比如对移动半径的描述：在上海和香港，我可能描述的方式是“几站地铁”；在美国，我都是用“开车要多久”来衡量。其他的，随便说说衣食住行：</p>
<ul>
<li>衣：除了工作场景，没有打扮的需求。车内，没人注意你穿什么；车外，你会为大家穿着的多样性感叹。所以，只要没自我要求，那就是随便穿。<em>另外值得提一嘴的是：美国衣服的尺码都显著偏大，可能是考虑到烘干机会让你的衣服缩水 1-2 号吧😂。</em></li>
<li>食：午饭基本是速食，因为中午都在开会，没时间休息。晚饭是太太做好，回家吃现成，偶尔下馆子基本上都去吃中餐、韩餐。</li>
<li>住：那比香港是大太多了，不过也有很多问题。面积变大了，家务变多了！要维护的东西也变多了！考虑到人工很贵，很多维修工作要亲历亲为。尽管我是租房住，但在两年内我也自己修了不少东西：冰箱、水管、洗衣机、空调、车，车库门......<em>房子大了还有个副作用：买买买的欲望更强了</em></li>
<li>行：至今只在纽约坐过公共交通，扑鼻的尿骚味。</li>
</ul>
<h3>节奏</h3>
<p>除了这种穿插在日常生活中的“细节”，造成适应时间要这么久的原因我觉得还有很多，比如：</p>
<ul>
<li>语言：我的塑料英语应付工作没问题，但日常生活中还是有太多词汇不熟悉了。不过现在和同事聊的多了，慢慢也能跟人吹水了。</li>
<li>慢节奏：...</li>
</ul><a href="https://geekplux.com/posts/two-years-in-usa">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[毕业后的两年]]></title>
        <id>https://geekplux.com/posts/two-years-after-graduated</id>
        <link href="https://geekplux.com/posts/two-years-after-graduated"/>
        <updated>2016-02-15T23:03:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2016/02/15/two-years-after-graduated">https://geekplux.com/2016/02/15/two-years-after-graduated </a></p>
</blockquote>
<p>在我们 5 岁的时候，过一年相当于经历人生的 1/5，而到了 25 岁的时候，过一年却相当于只经历了人生的 1/25。时间的重要性似乎随着我们年龄的增长而变得越来越低。主观感受上我们觉得时间走的越来越快了，而实际上却是我们对时空的认知变得扭曲了。</p>
<p>所以我们需要不断整理、回顾自己的人生，就像偶尔给自己留张自拍一样，说不定哪一天就忘记自己当时长什么样了。</p>
<p>距离我上次大学毕业总结（<a href="http://geekplux.com/2014/02/02/goodbye_my_university">Goodbye，我的大学</a>）已经过去了两年。都说 20-25 岁的年纪是人生最不怕折腾的年纪，如今我躺在床上，闭眼回想自己这过去的两年，满是<strong>任性</strong>。</p>
<p><em>本文和上次总结不同，将以时（liu）间（shui）线（zhang）的方式来叙述。两年的经历可以分为六个部分，其中五和六两个部分属于持续经历，七是一些胡思乱想。如果你觉得废话太多，可以只看<strong>黑体字</strong>部分或最后的总结。</em></p>
<h2>一、初到上海</h2>
<p>这完全是一次没有计划，说走就走的求职之路，当时的我还没意识到「<strong>大学毕业后的第一份工作至关重要</strong>」这一点。</p>
<h3>只呆了一个月的公司</h3>
<p>第一家公司我只呆了一个月。由于是靠朋友关系硬塞进去的，所以我在其中的一个月没有任务，也没有要求，扮演着一个无所事事的角色。天天看 PHP 手册的工作让我很没有成就感，加之公司氛围不怎么好，我很快决定另投简历。</p>
<p><strong>人只有写简历的时候才会觉得自己有多么乏善可陈</strong>。虽然我在大学期间也实习过，但真正想找一份程序员的工作只能靠我仅有的毕设经验（一款 Android APP）。在收到的回应中，其中一个创业团队和我一见钟情。</p>
<p>在这过程中，我要感谢昊哥对我无微不至的照顾...</p><a href="https://geekplux.com/posts/two-years-after-graduated">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[初识 TDD]]></title>
        <id>https://geekplux.com/posts/understand_tdd</id>
        <link href="https://geekplux.com/posts/understand_tdd"/>
        <updated>2014-03-21T00:20:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2014/03/21/understand_tdd">https://geekplux.com/2014/03/21/understand_tdd </a></p>
</blockquote>
<p>最近团队进驻了 Innospace（一个创业孵化基地），感觉一切要走上正轨的节奏。每周 Innospace 会提供一些来自业内大牛的创业和技术方面的培训指导，活动也非常多。感谢我的实习团队，让我有机会可以学到更多的东西。今天的主题是 TDD（测试驱动开发），对我来说这个东西不仅是新鲜的，还是陌生的，所以我也是认真记了记，顺便整理成文。</p>
<h1>神马是 TDD</h1>
<p>维基百科上是这样说的：测试驱动开发（Test-driven development）是极限编程中倡导的程序开发方法，以其倡导<strong>先写测试程序，然后编码实现其功能</strong>得名。</p>
<p>好吧，上面那段翻译的真是让人捉急，人家原文是这样的：</p>
<blockquote>
<p>Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: first the developer writes an (initially failing) automated test case that defines a desired improvement or new function, then produces the minimum amount of code to pass that test, and finally refactors the new code to acceptable standards.</p>
</blockquote>
<p>看完英文应该比较好理解。通俗点就是：<strong>先写测试，再写只能让测试通过的代码，然后不停的循环这两个步骤，直到重构出满足需求的代码</strong>。以每个测试来推动整个开发的进行，这样有助于编写简洁和高质量的代码，并加速开发过程。
...</p><a href="https://geekplux.com/posts/understand_tdd">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Vega-Lite: A Grammar of Interactive Graphics]]></title>
        <id>https://geekplux.com/posts/vega-lite-a-grammar-of-interactive-graphics</id>
        <link href="https://geekplux.com/posts/vega-lite-a-grammar-of-interactive-graphics"/>
        <updated>2016-11-02T16:16:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>在 InfoVis 2016 上，<a href="http://idl.cs.washington.edu/">UW 交互数据实验室</a> 提出了一种新的交互数据可视化语法——Vega-Lite，获得了今年的 best paper，本文将根据其论文从多个角度介绍 Vega-Lite。<a href="http://idl.cs.washington.edu/papers/vega-lite/">论文地址</a>。原文地址：<a href="https://geekplux.com/2016/11/02/vega-lite-a-grammar-of-interactive-graphics">https://geekplux.com/2016/11/02/vega-lite-a-grammar-of-interactive-graphics </a></p>
</blockquote>
<h2>什么是 Vega-Lite</h2>
<p>简而言之，<a href="https://vega.github.io/vega-lite/">Vega-Lite</a> 是一种数据可视化的高级语法，能够快速定义一些基本的交互式数据可视化。</p>
<p>如果你听说过 <a href="https://vega.github.io/vega/">Vega</a>，那么光看 Vega-Lite 的名字就不难想到它们的关系。Vega-Lite 就是编译成 Vega 的更高级图形语法。</p>
<p>如下图所示，只要右边寥寥数行代码，就能定义一个散点图：</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/vega-lite/sctterplot1.png?x-oss-process=style/zip" alt="" /></p>
<h2>为什么要提出 Vega-Lite</h2>
<p>首先，Vega-Lite 的目标是：</p>
<ul>
<li>通过一种规范来快速的表达你的可视化设计。</li>
<li>提供了简洁的语法和图元便于你快速切换设计。</li>
</ul>
<p>以前的东西做不到吗？其实也不是做不到，只是在有些方面还有很大的提升空间，Vega-Lite 就是在这个方向上很大的一步棋：</p>
<ul>
<li>低等级的可视化语法有更高的自由度，但往往高等级的可视化语言更受偏...</li>
</ul><a href="https://geekplux.com/posts/vega-lite-a-grammar-of-interactive-graphics">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Vim - 适合自己的，才是最好的]]></title>
        <id>https://geekplux.com/posts/vim-those-fit-yourself-are-the-best</id>
        <link href="https://geekplux.com/posts/vim-those-fit-yourself-are-the-best"/>
        <updated>2015-06-06T20:28:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2015/06/06/vim-those-fit-yourself-are-the-best">https://geekplux.com/2015/06/06/vim-those-fit-yourself-are-the-best </a></p>
</blockquote>
<p>Vim 被称为编辑器之神，是我用过之后才体会到的，用之前实在不敢对它做出什么评价。在大学时代，Vim 的大名就已如雷贯耳，但由于它陡峭的学习曲线，一直望而却步。等真正开始学习之后，发现并没有想象中的复杂，也没有所谓的瓶颈，只要在实际写代码中强迫自己使用就可以了，无形中就会形成习惯。最初的不适，换来的是效率的飞升。这和我当初学习<a href="http://www.geekplux.com/2014/07/06/learn_shuangpin">双拼</a>的感觉一样。下图是我的 Vim 界面：</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/vim.png?x-oss-process=style/zip" alt="我的 Vim 界面" /></p>
<h2>学习方式</h2>
<p>我一开始也是看了很多教程，这里我就不说具体的学习方法了，因为 Google 上一搜一大堆。</p>
<p>我只想谈一点：很多「过来人」告诫新手，一开始使用 Vim 一定不能使用插件，<strong>要从最纯净的 Vim 开始练习</strong>。他们认为一上手就使用别人的配置，很容易被别人影响，不能领会到自己配置 Vim，这种从无到有的感觉。虽然我也很喜欢折腾的感觉，但这对于学习、入门一个工具来说有点<strong>南辕北辙</strong>，我们学习一个工具就是为了用好它，或者<strong>用它来为我们服务</strong>。为什么要我们去适应它呢？也许这不符合 Vim 的哲学，但是我觉得：</p>
<ul>
<li>Vim 存在这么多年，已经有很多优秀的 Vim 配置（比如：<a href="https://github.com/spf13/spf13-vim">spf13-vim</a>），可以为我们节省很多折腾的时间。不过如果你非常喜欢折（zuo）腾（si），那也可以从头开始。</li>
<li>对...</li>
</ul><a href="https://geekplux.com/posts/vim-those-fit-yourself-are-the-best">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[超过十个人的微信群根本没有价值]]></title>
        <id>https://geekplux.com/posts/wechat-group-has-no-value</id>
        <link href="https://geekplux.com/posts/wechat-group-has-no-value"/>
        <updated>2016-03-14T20:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>标题似乎有点标题党，10 这个数字是我胡诌的，不过我认为<strong>非小众</strong>的微信群确实没什么价值。</p>
<p>以前有人鼓吹微信群的价值超过公众号和朋友圈，因为其黏性更大，传达更直接等等，我承认它的这些特点，但不承认它的价值。</p>
<p>既然讨论这个命题，首先就得抛出这个「价值」的定义。我觉得一个社群有价值体现在<strong>能获取到想获取的东西</strong>（可以是知识、技能、经验、朋友、倾诉、发泄等）。这应该算是最基本的需求了吧，我相信就算是为了潜水、看别人聊天，也是符合这个定义的。</p>
<p>我被朋友拉进过不少微信群，自己也主动加过、建过。体验一番下来，除了人数极少的小众群之外，很少有群满足这个基本需求。其中有 90% 的群最后根本没人说话了，间歇性有人发发广告；10% 的群里只有少数几个人在聊，其他人一言不发。这和刚才提到的直接、黏性仿佛背道而驰。<em>当然如果你是为了入群把所有人都加一遍好友，上面的话当我没说</em>。</p>
<p>之所以微信群出现这种由「热恋期」到「平淡期」到最后「分手」的局面，我想大概是以下两大原因：</p>
<h4>不能畅所欲言</h4>
<p>一个热闹的微信群，不一定人数是少量的，但最起码是彼此熟悉的，每个人没有嫌隙，能畅所欲言。而随着人数的增多，总会有一部分不熟悉的人。出于礼貌，你可能说话会彬彬有礼；出于自我保护，你可能不会表现出自己的真实观点。</p>
<p>所以<strong>聊天止于表面</strong>，没有深层次的交谈自然不会迸发出有趣的观点（深层次的言论容易引起争议，为了避免争论人们也会欲言又止）。聊天浮于表面自然就不会有什么有价值的讨论。</p>
<h4>没有共同主题</h4>
<p>如果一个群没有明确的创建理由，入群的人可能会有种有力无处使的感觉，表面上其乐融融，其实都是自说自话。</p>
<p>而就算一个群有一个明确的聊天主题，可能也挡不住人数增加后的鱼龙混杂。说不定一两个人开始表情大战，其他人就会莫名加入。。。更别提红包雨这类微信特有的现象。</p>
<p>群里的人其实也很无奈，一部分人可能因为是好友拉进来的不太好意思退，另一部分人可能觉得说不定这个群将来会有用，只要把通知关掉就好。还有一部分人可能喜欢静静的看着你们装 X。</p>
<p>所以说不要...</p><a href="https://geekplux.com/posts/wechat-group-has-no-value">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Markvis - 在 markdown 中生成可视化图表]]></title>
        <id>https://geekplux.com/posts/what-is-markvis-md</id>
        <link href="https://geekplux.com/posts/what-is-markvis-md"/>
        <updated>2017-07-14T20:56:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>本文首发于「GraphiCon图形控」公众号，微信号 GraphiCon，<a href="http://t.cn/RKmrRn9">原文地址</a></p>
</blockquote>
<p>今天在这里给大家分享一个 markdown-it 插件，能让你在markdown 中通过几行代码就生成一个可视化图表📊。</p>
<ul>
<li>项目主页： <a href="https://markvis.js.org/">https://markvis.js.org/ </a></li>
<li>在线编辑器体验一下： <a href="https://markvis-editor.js.org/">https://markvis-editor.js.org/ </a></li>
<li>源码： <a href="https://github.com/geekplux/markvis">https://github.com/geekplux/markvis </a></li>
</ul>
<p><img src="https://i.loli.net/2017/07/14/59687d0c743bd.jpeg" alt="home" /></p>
<h2>背景介绍</h2>
<p>Markdown 现在被越来越多的人熟悉，它是一个标记语言，只要你在每句话之前加一些符号，编辑器就能自动排版。markdown-it 是一个 markdown 的解析器，易扩展，很多人给它写插件，比如有个插件是让它支持可爱的 emoji 表情。markvis 也是一个插件，通过两行代码就能生成条形图折线图等，如下图：</p>
<p><img src="https://i.loli.net/2017/07/13/5966c9acb6509.png" alt="preview" /></p>
<h2>为什么要做这个工具</h2>
<p>有时候写文章需要插入一些数据来增强说服力，但是单纯的数字又不直观，所以可视化图表是必须的。紧接着就会出现一个问题：如何把图表添加到文章中。通常的做法是用一些现成的工具生成图片，然后把图片贴到文章中。这样一来就非常繁琐，尤其是用markdown写作时你还得把图片先上传到一个图床中。另一方面，访客阅读文章时，图片的加载比网页元素肯定更耗时。一旦加载过慢就会给阅读造成非常不好的体验。</p>
<p>Markvis 相当于抓住了这个痛点，开发出了直接在 Markdown ...</p><a href="https://geekplux.com/posts/what-is-markvis-md">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[我为什么从阿里巴巴离职]]></title>
        <id>https://geekplux.com/posts/why-i-leave-alibaba</id>
        <link href="https://geekplux.com/posts/why-i-leave-alibaba"/>
        <updated>2020-01-07T20:00:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>本文摘自<a href="https://geekplux.com/2020/01/06/2019-summary">我的 2019 年终总结</a></p>
</blockquote>
<p>在我离职阿里前跟上司沟通了很多次，有次他说：“人生 1/3 的时间都是工作，工作是生命中很重要的一部分，你不想工作，还想做什么”，没错，工作是真的很重要，我把它视为“正事”，但我对工作的认知有自己的一套准则。</p>
<p>如果看过我<a href="https://geekplux.com/2019/01/05/2018-summary/">去年的总结</a>就知道我在阿里的状态并不是很好。阿里是一家很棒的公司，给予员工的自由度、资源和对员工的培养方式都很好，但前提是你是一个会 leverage 这些的人。你不会利用这些，那阿里赋予你的优势也就毫无意义。我直到离职都没有找到一个合适的方式驱动自己，无论是每次和前辈们的聊天还是深夜中的自我反省，我都在思考我应该如何在这家公司更好地工作和成长，但长期的水土不服导致挫败感愈发严重，其实归根到底是我与公司理念的冲突。</p>
<p><em>在此我要先把范围缩小到我们所在的团队，因为在任何一家大公司，你不能单靠个人的言论去判断整体的公司环境。尤其在阿里，各团队各自为战，尽管从上至下有严谨的管理层级、尽管不同团队间互有合作，但说实话跨团队间的了解并不多，哪怕坐在同一楼层的同一排，你也可能对隔壁团队在干嘛知之甚少。通常的情况是财年初团队老板划一个大致方向，下面的所有人自发地策划今年该干什么，只要跟这个方向沾边即可。由于自由度很大、单兵作战能力又强，导致团队内部遍地开花，跨团队间又相互渗透，指不定哪天就互相蚕食。正是由于这样的做事方式，导致你的绩效，或者说你一年中产生的价值可大可小。假如老板划的方向和你的兴趣正好吻合，同时你也很擅长，那么你很容易想出一个点子为团队做贡献、为公司产价值。相反你则很难在其中倒腾出什么花样来。</em></p>
<h2>在阿里的后半程及我自己的问题</h2>
<p>我在阿里的时间里，心累远大于身累。之前有同事评价另一个很优秀的同事说：“这（某）件事交给咱们团队里任何一个人都能做，每个人都不差，但能做到这么漂亮的只有他了”...</p><a href="https://geekplux.com/posts/why-i-leave-alibaba">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[为什么我喜欢写代码]]></title>
        <id>https://geekplux.com/posts/why-i-like-coding</id>
        <link href="https://geekplux.com/posts/why-i-like-coding"/>
        <updated>2015-11-13T23:04:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2015/11/13/why-i-like-coding">https://geekplux.com/2015/11/13/why-i-like-coding </a></p>
</blockquote>
<p>我知道很大一部分的程序员，最初都是游戏爱好者。因为喜欢游戏，进而喜欢电脑，研究它，想知道怎么制作个游戏，怎么破解一个游戏等等。这部分因为喜欢一件事进而喜欢上鼓捣代码的人，算作一类。另一类就是我这种，一开始并不知道自己真正喜欢的是什么，甚至不知道什么是代码，但接触了编程之后，就停不下来的人。</p>
<p>虽然我在高考填志愿的时候，专业一栏都写的是「计算机科学与技术」，但我对这个专业的了解比对女性生理结构的了解还少。大一的课程终于接触到了真正的代码，我却没有因此产生浓厚的兴趣。而后来，当运行成功一个自己编写的程序时，那种头皮发麻，一股电流从背脊击穿头部的感觉，让我瞬间明白了这才是我该做一辈子的事。</p>
<h2>编程的反馈很快</h2>
<p>编程之所以有趣，最主要的原因是它能即时反馈。你写下一行代码，立即就能知道它的对错；你写完一个程序，一运行就能知道成功与否；如果做的是界面，那就更明显了，代码一变，界面立马就变。</p>
<p>所以编程学起来也特别快，它能给你立马呈现出你这两个小时到底学到了什么。成就感的积攒，又会推动你进行下一步的学习，不停迭代。</p>
<p>人总是喜欢能更快得到回报的东西。</p>
<h2>痛并快乐着</h2>
<p>众所周知，程序员最讨厌八阿哥（Bug)。除非是当天任督二脉被打通，一般情况下程序员写出的代码都会有 Bug。有时候找 Bug 找的真的想撞墙，人都快崩溃了。我至今忘不了当初我上司，每次点击运行之后，大喊一声「决战吧，代码！」的样子。</p>
<p>但只要 Bug 一被解决，整个人都会「羽化而登仙」。。。被摧残过后的成果最令人兴奋。（不过我在这里友情提醒各位，如果你看到一个程序员眉头紧锁，千万不要去打扰他，不要问我为什么）</p>
<h2>编程很实用，且容易出作品</h2>
<p>好的程序员「笔落惊风雨,诗成泣鬼神」，分分钟能做出一个优秀的网站、APP 或实用的小工具。虽然说要做出颠覆世界...</p><a href="https://geekplux.com/posts/why-i-like-coding">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[为什么文章写得好的人都很厉害]]></title>
        <id>https://geekplux.com/posts/why-those-who-write-great-articles-is-so-powerful</id>
        <link href="https://geekplux.com/posts/why-those-who-write-great-articles-is-so-powerful"/>
        <updated>2015-10-27T22:22:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2015/10/27/why-those-who-write-great-articles-is-so-powerful">https://geekplux.com/2015/10/27/why-those-who-write-great-articles-is-so-powerful </a></p>
</blockquote>
<p>首先定义什么是好文章。我觉得 <strong>能让读者领悟自己想表达的</strong> 就叫好文章。换种说法就是 <strong>能达到自己写作目的</strong> 的文章就叫好文章。</p>
<p>每个人写作的目的不同，有的人抒情，有的人叙事，有的人论证，但这最终的目的都是为了 <strong>让读者理解</strong> 。即使你的目的是故弄玄虚（或者让别人猜不透自己），本质上也是让别人把你的文章解读成你想让他解读的样子。</p>
<p>所以，能写出好文章的人，具备两个重要的能力。</p>
<ul>
<li><strong>能恰如其分表达自己想法的能力</strong></li>
<li><strong>能让对方理解自己想法的能力</strong></li>
</ul>
<p>这两点看起来易如反掌，一般人也以为自己都做到了，但实际的情况是： <strong>我说的和我脑子里想的不太一样，你理解的和我说的不太一样</strong> 。</p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/think-say.jpg?x-oss-process=style/zip" alt="" /></p>
<p>要做到第一点，首先要对自己脑子中的想法有很好的把握，其次要对文字运用的很熟练。这样写出来的文章才结构清晰，逻辑通顺，言简意赅（说白了就是简单简单再简单）。文字的运用取决于多年来对语言的积累，对想法的把握则需要多了解自己的思维方式，锻炼思维能力……我相信你也知道，我们 9 年义务教育都在锻炼一种叫思维能力的东西。</p>
<p>要做到第二点，则要照顾到对方的理解能力。比如很多博士写出来的论文，读者根本看不懂，因为读者无法站在和他一样的高度去理解他的文章。继而导致他的文章不流行。而有一个人，他既能理解原作者的文章，又有很好的文字功底，把原文改写的通俗易懂再发出来。大家一看就懂，于是觉得这个人很厉害。其实很多所谓的畅销...</p><a href="https://geekplux.com/posts/why-those-who-write-great-articles-is-so-powerful">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[为什么要用 Emacs]]></title>
        <id>https://geekplux.com/posts/why-use-emacs</id>
        <link href="https://geekplux.com/posts/why-use-emacs"/>
        <updated>2016-12-03T15:22:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>本文仅从作者个人感受上谈一下自己使用 Emacs 的理由和感受，通篇无干货。原文地址：<a href="https://geekplux.com/2016/12/03/why-use-emacs">https://geekplux.com/2016/12/03/why-use-emacs </a></p>
</blockquote>
<p>Emacs 和 Vim 这两大编辑器，一直让前赴后继的工具党难以取舍。到底学哪一个？哪一个学了之后能如虎添翼？最初的我也是纠结了许久，仿佛本科时纠结到底该主学 C++ 还是主学 Java 一样。而事实上正如前辈们说的：<em>不要纠结学哪个，反正迟早都要学</em>。</p>
<h2>使用 Emacs 的若干好处</h2>
<p>从我个人的角度讲，我认为学习和使用 Emacs 有以下几个好处：</p>
<ul>
<li><strong>掌握了一个几乎能完成任何事，又可以随心所欲修改的编辑器</strong></li>
<li><strong>入了 lisp 的门</strong></li>
<li><strong>混进了一个牛人众多的社区</strong></li>
</ul>
<p>搜索过 Emacs 的人对前两点应该都有所耳闻，但百闻不如一见，真正使用之后才知道 Emacs 多强大。就我个人来说，除了将 Emacs 作为多种编程语言的编辑器，还用来管理自己的<a href="http://geekplux.com/wiki">学习笔记</a>、To-Do List。社区里很多道友还用它来记账、管理文献、写论文等等（<em><a href="https://emacs-china.org/t/emacs/61">大家都用 Emacs 做什么？</a></em>）。如果你对 Emacs 没兴趣，那么至少应该了解一下 <a href="http://orgmode.org/">Org-Mode</a>，由于 Org-Mode 的强大，有人甚至用它来<a href="http://doc.norang.ca/org-mode.html">管理自己的一生</a>（*类似[《奇特的一生》](https://union-click.jd.com/jdc?e=&amp;p=AyIGZRtSFQASAVIfXxIyFQJRElsQBRsFURprUV1KWQorAlBHU0VeBUVNR0ZbSkdETlcNVQtHRVNSUVNLXANBRA1XB14DS10c...</p><a href="https://geekplux.com/posts/why-use-emacs">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[我的 Workspaces 十年进化史]]></title>
        <id>https://geekplux.com/posts/workspaces</id>
        <link href="https://geekplux.com/posts/workspaces"/>
        <updated>2023-10-15T16:30:00.000Z</updated>
        <content type="html"><![CDATA[<p>周末大阴天，坐沙发上翻看自己的相册。Apple Photos 总是能找出一些已经尘封的照片直铺在你面前，看到我以前的 workspace 照片，忽然陷入了回忆的漩涡，于是我把自己的桌面照片都整理了出来。仔细回看，竟是自己一路走来的历程，从工位到宿舍，从香港到美国，照片这个发明真好，定格了时空，也定格了过去的自己。</p>
<p>第一张图，是梦开始的地方。2013，还没毕业，那是我第一次去上海，也是买到人生第一台 MacBook Pro，刚开始学习前端，读的第一本书是《JavaScript DOM 编程艺术》。我很清晰地记得这张照片拍摄于我拿到 Macbook 的当天，几个实习生在这家创业公司的小房间里打工，开箱的时候我印象特别深刻，旁边来自台湾的运营实习生一直说：“恭喜你啊，zei台肯定不会是你最后一台麦布，你一定会拿它写出超棒的软体，然后到赚好多好多台”。不得不说那时候的 MacBook 质量真好，这台电脑我一直用到 2021 年都不卡，直到不小心进水烧坏了主板才报废。另外，光明的这个风味发酵乳真好喝，那时候学着同事一天喝一大桶。</p>
<p><img src="/images/workspaces/IMG_0007.jpeg" alt="" /></p>
<p>第二张照片应该是 15 年，那是我第一次去办公室上班，也是第一次有外接显示器。开始使用 Vim，代码写的是 Backbone...真是恍如隔世。尽管时隔<a href="https://geekplux.com/posts/two-years-after-graduated">两年</a>，但办公楼仍在南京西路，所以上海我最熟的就是南京西路到吴江路这片了。</p>
<p><img src="/images/workspaces/IMG_0017.jpeg" alt="" /></p>
<p>接下来去<a href="https://geekplux.com/posts/the-summary-of-graduate-career">读研</a>了，还是 15 年，第一张图是在实验室的工位，很简陋，键盘用的是某宝上 300 块买的不知名青轴。第二张图是当时在宿舍，每天其实更喜欢呆在宿舍里，一个人静悄悄地写代码，这时候主力编辑器刚换成 Spa...</p><a href="https://geekplux.com/posts/workspaces">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[写博客就用 FarBox]]></title>
        <id>https://geekplux.com/posts/write_blog_by_farbox</id>
        <link href="https://geekplux.com/posts/write_blog_by_farbox"/>
        <updated>2013-08-08T15:12:00.000Z</updated>
        <content type="html"><![CDATA[<p>早就在 V2EX 上看到 FarBox，之前一直没用，今天试了试，果然很清爽简洁，非常对我胃口，所以以后写文章，就靠你了！</p>
<hr />
<h2><strong>FarBox 是什么玩意</strong></h2>
<p>FarBox 可以理解为一个简单的博客搭建程序。一般我们搭建一个博客基本上要经历以下三个主要步骤：</p>
<ul>
<li>购买域名</li>
<li>购买虚拟主机（或 VPS）</li>
<li>安装博客程序</li>
</ul>
<p>说着简单，做起来对于没有基础的人来说还是有点困难。而现在 FarBox 给你提供了一个非常简单的解决方案，你只需要：</p>
<ul>
<li>拥有一个 Dropbox（Dropbox 都没用过？赶紧注册吧，这个可是世界上最好的个人云存储服务。最好用上我的<a href="http://db.tt/yBybDNfd">邀请码</a>，<strong>两人都可以获赠</strong>500M 空间。）</li>
<li>安装 FarBox，将 Dropbox 与 FarBox 绑定，并授权 FarBox 权限。</li>
</ul>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/farbox.jpg?x-oss-process=style/zip" alt="" /></p>
<p>具体怎么配置，很简单，请自行 Google。配置好后，Dropbox 仿佛成了你的虚拟主机，只需把写好的文章或照片同步进 Dropbox 就可以在你的博客显示了。如果你有独立域名，还可以进行绑定（<a href="http://www.geekplux.com/2013/08/10/%E5%A6%82%E4%BD%95%E7%BB%91%E5%AE%9A%E7%8B%AC%E7%AB%8B%E5%9F%9F%E5%90%8D/">如何绑定独立域名</a>）。</p>
<h2><strong>装修你的博客</strong></h2>
<p>爱美之心人皆有之，怎么说也得让自己的小窝卖相好点。这个简直不用担心。首先 FarBox 给你提供了简洁的默认模板。不满意？那就看看<a href="http://www.farbox.com/sites.md">别人的博客</a>，看到下面有<code>Clone Template</code>或者<code>Clone Theme</code>等等，就说么你可以克隆他的模板，克隆完后你的博客和他一模一样，只需要设置一些自己的资料就 OK 了。只要是托管于 FarBox 的博客你都可以克隆（仅限于使用，源码不可修改...</p><a href="https://geekplux.com/posts/write_blog_by_farbox">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[写文章的小技巧]]></title>
        <id>https://geekplux.com/posts/writing-skills</id>
        <link href="https://geekplux.com/posts/writing-skills"/>
        <updated>2015-10-28T18:24:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2015/10/28/writing-skills">https://geekplux.com/2015/10/28/writing-skills </a></p>
</blockquote>
<p>既然是小技巧，那么就不敢班门弄斧，只简单说说自己平时遵循的几条写作原则：</p>
<h2>尽量用短句</h2>
<ul>
<li>写作以表达清晰为首要宗旨，所以 <strong>尽量用短句</strong> 。长句会增加理解成本，尤其是对于中文来说。中文的定语是放在被修饰词前面的，不像英语通常放在后面，用从句很容易扩展。中文你要用从句，还 <strong>不如直接另起一句话</strong> 。</li>
</ul>
<p>而且能一句话说清楚的，不要绕来绕去解释。</p>
<ul>
<li>在句语句之间 <strong>多用连接词</strong> ，一方面表明其联系，一方面增强连贯性。</li>
<li><strong>不要用晦涩难懂的词</strong> 。我们不是在写高考作文。</li>
<li><strong>对标点的使用要尽量规范。</strong> 尽量少用感叹号。</li>
</ul>
<h2>文章逻辑要清晰</h2>
<h3>分段、分点说明</h3>
<p>众所周知，我们现在看到长篇大论的文章都难以下咽。但如果在文中加几个段落标题，效果就大大不同。
同样的，在遇到排列句的时候，每句单独成行，比一整段要清晰的多。</p>
<p>这些措施一方面是在排版上进行改进，提升了阅读体验。更重要的一方面是这样使你的文章逻辑更加清晰。
<strong>写文章和做数学证明题一模一样。每一段都证明一个小问题，下一段的证明，依赖于上一段的结论。</strong> 所以每段有个主题，就比胡乱写强很多。</p>
<h3>要有重点</h3>
<p>无论说话还是写作，都最忌没有重点。如果读完一篇文章，你不知道这篇文章的主旨是什么；读完一段话，你不知道这段话是在讲什么。那这篇文章就太失败了。
用粗体把重点标注出来，很容易吸引眼球。</p>
<h2>随时记录</h2>
<p>想题目恐怕是世界上最难的事情了。其实日常生活中，很多时刻会有想写的冲动。尤其是发呆的时候，脑子里估计都写了一大段了，但一被打断，又忘得一干二净。等真正要写文章的时候，只能拔剑四顾心茫然。
所以我们 <strong>平时一旦有点小思路，就拿手机记下来</strong> 。反正手机不离身，记东西很方便。不用记太细，记些关键字也行，整个过程耗时不会超过一分...</p><a href="https://geekplux.com/posts/writing-skills">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[YouTube 观看历史数据分析]]></title>
        <id>https://geekplux.com/posts/youtube-watch-history-analytics</id>
        <link href="https://geekplux.com/posts/youtube-watch-history-analytics"/>
        <updated>2020-01-03T22:30:00.000Z</updated>
        <content type="html"><![CDATA[<p>我现在看视频主要集中在 YouTube 和 Bilibili 两个网站。前者的观看体验比后者更胜一筹，基本上一回家我就打开 YouTube 了，即使不看也放着当生活的背景音。</p>
<p>昨晚看到自己订阅的博主有篇新文章——<a href="https://wangyi.ai/blog/2019/12/22/er-ling-yi-jiu-nian-youtube-guan-kan-zong-jie/">YouTube 观看历史分析</a>，里面对 YouTube 优势的阐述和对视频这种信息获取方式的一些观点简直是和我不谋而合。</p>
<p>但最有意思的是他对自己观看记录进行了<strong>数据分析</strong>，知道了自己时间具体分配到了哪些频道。我看完几乎是没有丝毫等待，就按他的方法操练起来了。之后在他的基础上，我自己画了个 Wordle（词云），可以清晰的看出自己对某类视频的钟爱……</p>
<h2>分析结果可视化</h2>
<p>数据的收集、存储、分析，都已经在<a href="https://wangyi.ai/blog/2019/12/22/er-ling-yi-jiu-nian-youtube-guan-kan-zong-jie/">Yi's Blog</a>提供，按照他的步骤可得到以下结果：</p>
<h4>观看时长分布</h4>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/youtube-analytics/watch_time.svg" alt="" /></p>
<p>左图可以清晰的看出从 2017 年开始我在 YouTube 上花费的时间<strong>每年翻一倍</strong>，2019 年看了接近 3500 个视频……</p>
<p>再看右图，简直可以看出我 2019 年的作息习惯：</p>
<ul>
<li>每天 20 点基本上就是吃完饭回到家坐在电脑前了</li>
<li>从 20 点到 24 点期间，可能会做一些自己的事，做完才打开 YouTube</li>
<li>0 点到 2 点是我彻底放松的时间，观看 YouTube 时长最长，偶尔会一路熬夜到凌晨 5 点（请大家珍惜生命）</li>
</ul>
<h4>视频时长分布</h4>
<p>![](https://geekpluxblog.oss-cn...</p><a href="https://geekplux.com/posts/youtube-watch-history-analytics">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何在不规则多边形内均匀撒点的算法]]></title>
        <id>https://geekplux.com/posts/how-to-picking-uniform-points-in-irregular-polygon</id>
        <link href="https://geekplux.com/posts/how-to-picking-uniform-points-in-irregular-polygon"/>
        <updated>2018-03-16T23:55:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>原文地址：<a href="https://geekplux.com/2018/03/16/how-to-picking-uniform-points-in-irregular-polygon">https://geekplux.com/2018/03/16/how-to-picking-uniform-points-in-irregular-polygon </a></p>
</blockquote>
<blockquote>
<p>给定一个不规则的多边形（可能是凹多边形，可能是凸多边形），在其中要显示拓扑网络数据，要求节点不重合、不超出边界。</p>
</blockquote>
<h2>该问题出现的场景：</h2>
<ul>
<li>在地图上撒点</li>
<li>在未知画布上生成初始的拓扑布局</li>
</ul>
<h2>解决方案：</h2>
<h3>方法一 随机撒点</h3>
<p>取凸多边形的外接矩形，在矩形中<strong>随机撒点</strong>，如果落在凸多边形外，再次随机撒点，直至落在凸多边形内。
这个方法比较<strong>暴力</strong>，可以通过计算期望来控制撒点次数，撒点次数应该符合泊松分布。</p>
<h3>方法二 把不规则多边形切割成若干三角形</h3>
<p>可以看作方法一的改进。切成多个三角形之后，问题转化为了如何在多个三角形内撒点。</p>
<p>参考：<a href="https://beta.observablehq.com/@scarysize/finding-random-points-in-a-polygon">https://beta.observablehq.com/@scarysize/finding-random-points-in-a-polygon </a>
切割库：<a href="https://github.com/mapbox/earcut">https://github.com/mapbox/earcut </a></p>
<p><img src="https://geekpluxblog.oss-cn-hongkong.aliyuncs.com/picking-points/d21d62d4-7411-4ec9-8b33-99357ee16c12.png?x-oss-process=style/zip" alt="earcut 切割效果" /></p>
<p>三角形是凸多边形，如何在三角形内均匀撒点可参考：[http://mathw...</p><a href="https://geekplux.com/posts/how-to-picking-uniform-points-in-irregular-polygon">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何搭建一个私人网盘]]></title>
        <id>https://geekplux.com/posts/how-to-setup-a-personal-cloud</id>
        <link href="https://geekplux.com/posts/how-to-setup-a-personal-cloud"/>
        <updated>2016-10-25T22:13:00.000Z</updated>
        <content type="html"><![CDATA[<blockquote>
<p>文章主要讲了为什么要搭建私有网盘，以及如何用 docker + ownCloud 搭建。原文地址：<a href="https://geekplux.com/2016/10/25/how-to-setup-a-personal-cloud">https://geekplux.com/2016/10/25/how-to-setup-a-personal-cloud </a></p>
</blockquote>
<p>前两天，360 云盘宣布将停止个人服务。一石激起千层浪，关于如何选择网盘，如何应对网盘关闭的讨论一下子又变得此起彼伏。没办法，目前的现状是，网盘很难有大的盈利空间，还面对严苛的内容审查和隐私保护，虽然于用户来说提供了便利，但于公司来说实在是一件出力不讨好的事情。</p>
<h2>之前的网盘方案</h2>
<p>国外的网盘我一直是三家一起用，分别是 Dropbox 存储代码和一些重要或私密文件；Google Drive 存储一些大文件和私密文件；OneDrive 存储一些电子书（同步太慢了）。国内的网盘我之前只用两家，一是坚果云，放一些个人常用的小文件，包括一些文档和软件配置文件；另一个是百毒云，放一些各处转存来的大文件、自己的照片和学习资料，一方面因其空间大，另一方面因其同步流畅。然而，百毒云前段时间把我的网盘<strong>全面封掉</strong>了，丢失了很多大学时的照片（其它文件要不不重要，要不有备份），申诉无果，实属无奈。</p>
<h2>搭建一个只属于自己的网盘</h2>
<p>所以我决定搭建一个只属于自己的网盘。考察了几种方案（包括买 RAID 或 NAS 等），发现已有人在这方面做了努力，提供了像 <a href="https://www.seafile.com/home/">Seafile</a> 和 <a href="https://owncloud.org/">ownCloud</a> 这样的产品。接下来对比了两个软件，我决定选择用 ownCloud，主要出于以下几点考虑：</p>
<ul>
<li>可以设置是否加密，保证数据安全。</li>
<li>ownCloud 可以用于同步日程、联系人、浏览器书签等，最重要的是<strong>密码管理</strong>，这对于目前有无数密码需要记的我们非常实用。ownCloud 还有个应用商店...</li>
</ul><a href="https://geekplux.com/posts/how-to-setup-a-personal-cloud">Continue to read</a>]]></content>
        <author>
            <name>GeekPlux</name>
            <uri>https://geekplux.com</uri>
        </author>
    </entry>
</feed>