联机算法 - 求最大连续子序列和

非常屌的一个算法,时间O(n),空间O(1)。只有六句,我到现在都没看明白。

//vector<int> arr;

int sum = 0;
int maxsum = INT_MIN;
for(int e : arr)
{
  sum = max(sum + e, e);
  maxsum = max(sum, maxsum);
}

cout << maxsum << endl;

这是非空的,允许为空的情况只要把第一个max第二个参数改成0就好了。

Some Extract from my Homework

Some of my courses are about information management and information system (IMIS). Last week, the teacher of information system engineering gave us some homework, to design a kind of certain system. Afterward, we should write our gain and thought in an essay. I wrote one and half one page of words reaily.

The original version was writen in Chinese. Here I translated a paragraph: After last class, I thought what difference it was between software engineering and information system engineering, or why did ISE exist. Then I looked through some material and made a conclusion. Software engineering suits tech-insensive projects, while information system engineering suits data-insensive projects. Data-insensive projects is projects in BAT, for example. These three company have poor contribution on technology unlike Google and Microsoft, whose core is data. Baidu holds data of users’ search, Alibaba holds data of trade by sellers and buyers, and Tencent holds data of QQ users and their relation. They deal with the data through existing technology and make a profit from it. Even if you can get all of source code of theirs, you cannot set up a new company over them. Only software without data is nothing. Some first party people don’t know the theory even more than us developers. They just think code is everthing, which is compeletely wrong because data is more significant for a information system.

The First Diary in English

This is my first diary written in English. Then it comes that, why is it in English? I think I can pretend to be not ‘low’ in this way. The word ‘low’ represent a small height in its original meaning, and has the meaning ‘poor performance’ in Chinese web language. I tried to write my thought in Baidu Tieba, but I feel it not well.

Another reason is that, I want more people understand me as many as posiible. I think English is a bridge connecting many people’s thought. When I use English to write, I feel relaxing, because English isn’t my mother language and I can make many sorts of mistake. I don’t care others say my essay is in Chinglish. I think Chinglish is a imprtant branch of English. In Addition, I have nothing to repair it. English teaching in Celestial classes is so impractical and useless. I can write anything I want, and write in any style, because I don’t write for scores. I hate that in my high school time, my teachers force me to write in a certain format. However, I can ignore them now.

I am a college student in Celestial Empire now. Same to many other students, I had no time to study computer knowledge and set this blog when I was in high school. Due to the cruel competition and huge pressure of CEE, I had to spent all my time in high school courses. In other word, I started late, which is one of my pities forever.

【mi5】关于米5的各种消息

一、工程机

据爆料,mi5的工程机已经处于p2阶段,如图:

mi5将走高端路线,高通810处理器,3GB RAM,2K级别屏幕。价格或许会有所提升。

二、mios

据爆料,小米自去年4月份起就开始秘密研发自主智能机操作系统mios,预计将在下一代小米手机上使用。全新的mios基于FirefoxOS深度定制的,但是经过小米的高度优化后,使用起来和目前的MIUI体验相差无几。

同时,小米为了自家mios系统,还特地收购了mios.cn和mios.com.cn两个域名。经过查询,两域名持有人同为小米公司。这个域名在96年和07年已经被人抢注了,现在小米公司拿下这两域名,想必应该是花了大价钱买过来的。

就在谷歌正在收紧最Android的控制权之际,魅族MX4全部采用基于linux的YunOS系统,从而有效脱离了谷歌的控制。小米此举应该是效仿魅族。

至于其余各手机商会不会陷入困境,安卓4.4及其之前的版本就像泼出去的水,收是收不回来了,让其余各厂商自行演化就好。

三、小米的模式及降维攻击

转自知乎@石昊的回答:

互联网思维就是基本功能免费,增值服务收费。比如QQ,比如360,基础的聊天、杀毒功能都是免费的,那什么是赚钱的?比如QQ秀,或者是腾讯游戏,或者是广告收入等。它们为什么费心在增值服务上收费,而不直接在QQ的聊天上,360的杀毒上收费呢?而要将基础功能做成免费?答案很简单,为了铺量,如果QQ的聊天,360的杀毒收费,恐怕用它们的人会很少。大家都有一个这样的想法,收费的不如免费的,收费的还要钱,万一感觉不好岂不是白花了钱?而免费的,哪怕差点,好歹免费啊,哪怕感觉不好,不用就是了,没有一点损失。所以大家都往免费的软件上凑。

而用在手机上是怎样呢?那就是手机这个硬件免费,靠增值服务,比如各种配件、手机软件、互联网服务收费。可手机硬件成本不像软件的成本,摊在每个人头上非常低,手机成本实实在在的需要材料,目前很难通过各种增值服务弥补硬件成本,那么怎么办呢?有办法,我手机贴近成本价发售,这样也可以大量铺量,并且可以靠各种增值服务赚钱,这样就安全多了。

小米模式就是这样,简单的说,靠接近成本价的手机等硬件大量铺量,并且在硬件上搭建软件和互联网服务,同时出售各种周边产品,靠这些来赚钱。所以说,小米不(仅仅)是一家手机企业,它是互联网企业。他想做的是互联网行业的巨头,而不是手机行业的巨头,手机只是用来铺量的手段而已,等到手机的量达到一定的层次,就可以靠手机里面的各种软件和互联网服务赚钱了。就像腾讯的QQ,本身不赚钱,但是用QQ的人太多了,于是腾讯靠各种增值服务,比如游戏,比如QQ秀,会员等增值服务赚钱。QQ只是用来获取用来获取用户流量的手段而已。

...

所以,小米接下来会怎么做?小米接下来会将这一思维贯彻下去,硬件接近成本价销售,随着元器件价格下跌。一有利润,马上让硬件降价,再接近成本价销售。这样由于硬件很便宜,就会有很多人买,一旦miui用户有了好几亿,那么,搭载在miui当中的软件和互联网服务就可以大展拳脚赚钱了。而软件和互联网服务赚钱,可以拿出一部分,补贴硬件成本。让硬件价格再次下跌,硬件价格一旦下跌,那么性价比会更突出,就会有更多的miui用户。有更多的miui用户,软件和互联网服务赚的钱就越可观,软件和互联网服务赚的钱越多,硬件价格就可以进一步下降。这是一个良性循环。那么,最终,小米模式会演变成怎样?

那就是硬件完全免费!靠软件和互联网服务赚钱!

试想一下,假设小米硬件完全免费,靠软件和互联网服务赚钱。那么这时,小米的软件和互联网生态一定是极其完善。那么,一台免费,而且服务非常完善的手机和其他要钱、而且服务比不上小米手机的手机,你会买哪一个?

这就是三体中的降维打击!一旦小米真的能做到这一步,基本上天下无敌了。硬件都免费了,其他硬件企业还怎么和小米对抗啊?如果谁都用小米家的硬件,那么也非常容易通过小米家的硬件用小米家的软件和互联网服务,那么,这样一个变态的互联网企业,其他互联网企业又怎样和小米对抗?

其实小米的这个现象马云之前也提到过,当时他说的是跨界竞争:

我看最彻底的竞争是跨界竞争,你认为收费的主营业务,一个跨界的进来,免费,因为人家根本不靠整个赚钱,你美滋滋的活了好多年,结果到最后不知道怎么死的。

只不过小米把它付诸实施了而已。凭这一点,我看好小米的模式,希望有朝一日移动互联网能够惠及千家万户,有更多企业能做得出大部分人都能用得起的电子产品。

【Quora】以下哪个地方诞生了更优秀的计算机工程师,清华,斯坦福还是MIT?

我不了解斯坦福(因为只是短暂访问过几次那里),不过我对MIT和清华都比较熟悉。MIT是我的母校,而我的朋友有很多都来自清华。说实话,我觉得很难比较这两个学校的优劣。

在校园文化方面,这两个学校有很多本质的差别。而属于清华的很多特点大多并不源于这个学校本身。很多人问我为什么来自清华的创业公司寥寥无几,而来自MIT的创业公司又那么多?综合考虑所有因素,我认为其中最大的因素是自由。

清华每天晚上要熄灯。网络连接也被严格的限制着。每栋宿舍楼的入口处都有警卫。在清华,总体上的校园文化是学习最重要。在Larry Zhang这个回答中可以看到亚洲人持有一个普遍的观点,即:“MIT学生的成功有赖于他们的勤奋学习”。这个观点和事实相差万里。

没错,MIT的学生学习是很勤奋。但是这并不意味这它能培养出优秀的计算机工程师。我们中间的很多人并不是为了学习而来到这里。这些人来到MIT是想要过来hack我们所能看到的一切东西。在我的本科宿舍里,我们有焊接设备,有木材切割设备,电子仪器,备用的混凝土和木材堆放在走廊。我们很容易就能进入到器材室或者机械五金店,拿到我们所需要的所有设备。而这一切都是为了非学术的私人用途。我们有个叫Reuse的邮件列表,你可以在学校里面到处跑去收集各种别的实验室不需要的奇怪设备,包括挂载机柜的服务器和老旧的杜瓦瓶。我们也有一个没有任何端口限制的开放网络,免费的静态ip地址,全双工的千兆网络接通到每间宿舍。MIT鼓励我们使用这些资源来最大程度的满足我们对未来的想象力。在虚拟化技术普及之前,我自己的宿舍里面放了15台机器。我对门宿舍的哥们弄到了一个工业级激光器自己做了一个激光切割设备。另外一个哥们在忙着搞一个山寨的RF芯片识别设备试图找到地铁和学校的读卡器安全漏洞。还有人在宿舍自己弄了一个二层阁楼,还有人花了200美元把一个相机发射到了太空中只是为了证明这并非不可能,还有人做了个3D显示器,有人在折腾虚拟现实头盔,有人没事自己改linux 内核……

这些东西都是什么时候做的?半夜。此刻的清华断掉了他们学生的电。我已经很难想象能有比强行断掉这个国家最聪明的一批学生的电力供应更能阻碍这个国家技术前进的方法了。没有电,你怎么做自己的项目?怎么在项目早期运行自己的服务器?而在MIT,我们的公司脱胎于学生宿舍,卧室即是数据中心和实验室。

我们为此牺牲了学习的时间吗?当然。我们中的很多人来MIT本来就不是为了学习,我们来是为了做东西。

我们为此打破了很多规章制度吗?向来如此!但幸运的是MIT从来不会监督我们,没人到处盯梢,没有监视摄像头,没人告诉我们什么该做什么不该做,除非我们真的做了些对人身安全造成危险的事情。这样我们才能把整个校园(不仅仅是宿舍)变成一个高科技恶作剧的试验场,正是这些让我学到了从Python到RF设计的所有知识。而在清华,他们甚至不让我在里面照相。在每栋大楼的入口出都有一个静默严肃的保安看守。真希望清华的学生们在那里也能愉快的hack。

这些MIT的校友们现在何处?一部分成了主流计算机工程和软件公司的CEO,一部分正准备从硅谷公司辞职实现自己的下一个伟大创意。计算机工程技能首要并且本质上来自于实践经验,而不是课堂。这正是我们在那么多阴暗的夜晚里面学到的事情。

请不要误解我的话,清华的学生极其聪明,聪明,还是聪明。他们对于创造未来的渴望并不输于我们。我去过那里很多次,我的很多朋友都毕业于清华。真正的问题不在于学生,而在于学校和学校的氛围,传统的亚洲学术评估制度,以及其他一切阻碍了他们放弃学业投身实现梦想和未来的事物。

嘛,我准备去看一眼他们这学期开的新课,虽然我只是打算把它扔一边然后去搞我自己的app……

原文链接:https://www.quora.com/Who-produces-better-computer-engineers-Tsinghua-University-Stanford-or-MIT

Hexo 入门指南(七) - 评论 & 分享

评论

hexo默认集成了disqus,但是在天朝明显多说更受欢迎一点。

首先到多说官网去注册一个账号。然后点击进入添加站点页面,填写所有信息。注意,多说域名的前缀就是站点的短网址,下面要用到,这里假设为short_name。

在_config.yml中添加多说的配置:

1
duoshuo_shortname: short_name

修改themes\\layout_partial\article.ejs,把第38行到41行的如下代码:

1
2
3
4
5
6
7
<% if (!index && post.comments && config.disqus_shortname){ %>
<section id="comments">
<div id="disqus_thread">
<noscript>Please enable JavaScript to view the <a href="//disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</div>
</section>
<% } %>

替换成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<% if (!index && post.comments && config.duoshuo_shortname){ %>
<section id="comments">
<!-- 多说评论框 start -->
<div class="ds-thread" data-thread-key="<%= post.layout %>-<%= post.slug %>" data-title="<%= post.title %>" data-url="<%= page.permalink %>"></div>
<!-- 多说评论框 end -->
<!-- 多说公共JS代码 start (一个网页只需插入一次) -->
<script type="text/javascript">
var duoshuoQuery = {short_name:'<%= config.duoshuo_shortname %>'};
(function() {
var ds = document.createElement('script');
ds.type = 'text/javascript';ds.async = true;
ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js';
ds.charset = 'UTF-8';
(document.getElementsByTagName('head')[0]
|| document.getElementsByTagName('body')[0]).appendChild(ds);
})();
</script>
<!-- 多说公共JS代码 end -->
</section>
<% } %>

之后,找到第27到29行:

1
2
3
<% if (post.comments && config.disqus_shortname){ %>
<a href="<%- post.permalink %>#disqus_thread" class="article-comment-link">Comments</a>
<% } %>

替换成:

1
2
3
<% if (post.comments && config.duoshuo_shortname){ %>
<a href="<%- url_for(post.path) %>#comments" class="article-comment-link">留言</a>
<% } %>

分享

hexo默认提供的那四个在国内也被墙了。这里替换成百度一键分享。

找到themes\landscape\layout_partialarticle.ejs26行:

1
<a data-url="<%- post.permalink %>" data-id="<%= post._id %>" class="article-share-link">分享</a>

替换成:

1
2
<a data-url="<%- post.permalink %>" data-id="<%= post._id %>" class="article-share-link bdsharebuttonbox" data-cmd="more">分享</a>
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"1","bdMiniList":false,"bdPic":"","bdStyle":"2","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>

之后打开themes\landscape\source\js\script.js,35~86行全部注释掉。

后记

仅以此教程,悼念Aaron Swartz,RSS和Markdown的联合创始人。没有他,开源博客界就不会有今天。

Hexo 入门指南(六) - sitemap、rss 和部署

sitemap & rss

切换到blog根目录下,输入:

1
2
$ npm install hexo-generator-feed
$ npm install hexo-generator-sitemap

之后重启博客,访问/atom.xml和/sitemap.xml,会发现已经生成了。可以把sitemap提交到搜索引擎的站长平台来增加收录。

部署

首先按照前面教程(一)的gitcafe部分建立好代码仓库,这里假设你的用户名是your_name。由于ssh配置比较麻烦,这里采用https方式提交。

找到配置文件中# Deployment一节,修改:

1
2
3
type: github
repository: https://gitcafe.com/your_name/your_name.git
branch: gitcafe-pages

之后输入:

1
hexo deploy --generate

或者

1
$ hexo generate --deploy

hexo会自动生成并部署。

如果之前已经生成过了,直接输入:

1
$ hexo deploy

部署即可。

当然,这个命令还有一些bug,比如windows下不能用cmd而是用gitshell。我自己一般会手动敲git代码覆盖提交。

Hexo 入门指南(五) - 搬家 & 备份

搬入hexo

首先,需要拿到原博客数据的xml文件。

wordpress的话,后台“工具->导出”就可以生成。点点和lofter也支持类似操作。如果遇到不支持导出xml的博客,先用http://www.diandian.com/transfer/转到点点,再用http://www.diandian.com/backup导出XML文件。

之后,安装hexo-migrator-wordpress这个插件

1
npm install hexo-migrator-wordpress --save

运行

1
hexo migrate wordpress wordpress.xml

xml中的数据就导入到source中了。最后的工作是修复链接什么的。

搬出hexo

没有什么好的办法。可以写个脚本遍历public文件夹,之后post到指定目录或者制作成xml文件。

备份

有句话说得好,数据恢复的最佳方案永远是“备份备份再备份”。

个人建议,分别备份站点配置和文章。站点配置包括blog根目录除了source和public文件夹的所有内容,文章就是source文件夹的全部内容。站点配置不经常变的话可以不用经常备份。