C++参考的翻译或校对

做新年规划的时候,我说过要翻译C++常用类的参考。C++的参考,其实别人已经翻译完了,只是部分内容需要校对。由于网站结构中大量使用了模板,同一个函数只需要翻译一个地方,所以四天就弄完了。而且我没有翻译函数层级的页面,所以比较快。

C++的参考其实最需要翻译。因为C++为了填C继承过来的坑,标准库增加了很多用于替代的设施。而国内的教程更新缓慢,这份参考如果不翻译,我估计到了2020年也不会完全普及。

以下是校对完成的类,希望大家继续参与:

更多内容

LocalStorage 的一个漏洞

LocalStorage 是 html5 的本地存储,其中的内容以文件的形式保存在本地磁盘中。

一个域(协议+域名+端口)的文件大小PC端为5~10M,移动端不大于2.5M。

但是我们可以在端口上做点手脚,因为端口是可控的,我们可以开一个服务器监听很多个端口,然后输出的页面使用iframe进行递归包含。

比如我们的页面可以嵌入以下代码:

更多内容

本人的“深入理解c++”系列规划

第一部分是标准库的新增设施,主要是结合tr1、tr2的设施,讲解如何快速高效的开发C++应用。在这一部分我会用C++的新增设施去翻写posix api或者Java的一些代码来讲解。

第二部分是底层和黑魔法。主要是底层操作、宏操作(实现属性、实现meta)、hook、dll和com互操作等。可以说互操作是C++的优势之一,其它语言的组件只能做进程级别的调用,但是C++写出来的动态库可以做模块级别的调用。

第三部分是应用,注重标准库没有的东西,比如调用webkit编写跨平台的ui,基于web框架的web开发(模板、orm、json、db、wsgi)。

由于第一部分和第三部分需要等到boost.asio完全加入标准库,还需要等个几年吧。所以近期大家就不要有太大期望了。

注意:本教程仅仅是计划中的。如果C#Native在17年之前登陆PC,或者Swift迁移到了Windows平台,则该计划作废。

为什么C语言不简单

很多人都喜欢把C语言推荐给初学者,原因就是C语言语法简单。但是C语言若是用于开发之中,却是最复杂的语言。

底层的 == 好的?

C语言提供了对底层的操作,比如指针。但是C语言跟C++最大的不同就是,C语言避不开指针,而C++和用STL和智能指针库完全避开它。也即是说,其它语言的指针只是个类型,C语言的指针就是指针。我一向认为,初学者过早接触指针是个大忌。初学者需要的是做出各种好玩的应用,以此来产生即时反馈,而不是深入研究计算机系统,因为后者只会消磨掉他们的信心。初学者就应该专注于代码逻辑,并且屏蔽掉和底层打交道的一切事物。这么做个比喻吧,如果你刚学化学的时候,就给你讲元素周期律和VSEPR模型,你会感兴趣吗?

更多内容

关于停用知乎账号一事

说实话,申请停用知乎账号很简单,只要给 i@zhihu.com 发一封邮件就可以了。

我最开始上知乎好像是找什么东西,然后没找到,慢慢就形成了刷知乎的习惯。

知乎越来越像几年前的天涯,于是我越来越反感。技术根本就是不是一个讨论技术的地方,干货没多少,段子手成群。实质性的回答顶不上去,抖机灵的段子总在最上面。然后是撕逼的现象日益严重,最开始是社科类问题,现在技术类问题也开始撕逼、秀优越。某些用户非常不友善,自己啥都不懂还在评论区瞎扯,骂人不带脏字,可见功力之深厚。

是时候把它停掉了。

您好!

根据您的申请,我们会停用您的帐号。感谢您一直以来对知乎的支持。

感谢您的来信。

知乎团队

在 2016年1月9日 下午11:24,龙 562826179@qq.com 写道:

申请停用知乎账号

2016 新的展望

  • 首先就是翻译几个项目的文档。目前计划是orm2,ejs,nw.js(明明是中国人写的干嘛不提供中文文档),intelij。前面这些都是短小精悍的。还有一个备选项,c++(cplusplus.com),这个的参考手册实在是太长,我就挑常用类翻译好了。其实我觉得一定有必要翻译c++文档,特别是c++11新出来的util,比如时间、复数、随机数、原子和线程、正则,因为有助于推广新的标准。现在vs2015对11的标准支持已经相当不错了,就是国内的教程上面还差点。c++已经有了并发、容器、text、io、fs(tr2)、网络(tr2),还差个进程就能召唤神龙了。
  • 然后打算写一篇web开发的教程,初步拟定用flask,原因是配置简单,框架较小又能满足全部要求。这个想法是受5天学会一种 web 开发框架的启发,非IT人士需要实现的想法其实也挺多的,特别是他们可以结合自身领域设计出那个领域的应用,但是,由于他们不懂编程,无法专注于业务逻辑,也免不了和计算机底层打交道的麻烦,所以我就按照web开发的六要素(router,req handler,模板,orm,util,部署)来讲解web开发中抽象的、共性的部分,让他们以后迁移到其他框架时也得心应手。这个如果由于上面那条而没有时间,就拖到明年。
  • 接下来就是重新捡起来逆向,我以前是玩逆向的,不过那时候玩的是win32,顶多再加上点msil。现在呢,移动应用这么火,对移动应用的逆向分析也变得火了起来。整天搞开发有些无聊,玩玩逆向可以爽一下。
  • 毕业之后回到北京,也有时间和条件练琴了,希望空闲时间能弹弹琴。
  • 毕业设计之后,我决定不再碰任何数据分析/挖掘的东西。数据这个岗位,就算以后没有培训班,也有大量统计学的人来竞争,更何况薪资比不上开发(其实也差不多),还要学一大堆数学相关的东西。总之这是个坑,早弃早超生。
  • 再有就是戒掉知乎,给前面的安排腾出时间。
  • 再有就是把身体养好。我现在的功率大概是以前的50%吧。

学了四年,最大的感受就是,开发绝对是个保命的技能,是硬通货。你可以说他很low,但是你如果学了编程,学2~3门语言就可以把oo这块通吃了,然后又因为oo是大流,你在哪儿都能找到工作。你可以研究底层啊,图形啊,这类高深的东西,但它们的应用在所有互联网公司里占不到1%。创业公司,也就是需要技术岗来开发一些应用,别的高科技它用不到。你可以研究别的,但是开发这种保命的东西,绝对不可以丢弃。

给计算机大一新生的建议给计算机大一新生的建议

1. 核心课 (数据结构算法、组原、os、编译、网络(tcp/ip、http部分))一定要弄懂。最好写相关的项目,比如写个parser或者内核什么的都是极好的。

2. 不要追新的技术,而是追业界普遍使用的技术。比如你追了c#,却发现业界不少由c#转java的;你追了xamarin,也说发现人家还是用java+as开发应用。其实业界还是喜欢久经考验的稳定技术。语言学精一个,了解多个。每种类型的框架(比如前端css,前端js,后端orm,后端mvc,模板引擎)先学一个,其他的需要了边学边用。

3. 早点去leetcode刷题,国内公司特别爱装逼考算法,不少都是原题,切记。

4. 注重面向对象,注重架构方面的东西,特别是设计模式,不仅仅是为了可维护性。你以后代码可能是给别人提供支持的,你写的接口很难用的话,天天会被人问候祖宗。

5. 技术问题学会抛弃百度,使用goole,使用github,使用stackoverflow。学会使用bash和git,特别是后者,备份恢复的时候你就明白了。

6. 英语达到能阅读原版文档的水平。

7. 多写代码,有些东西做的多了才能从理性认识向感性飞跃。但不是让你写一万行hello world,也不是让你写一大堆app。你每学一个新的知识,都写个相关的demo出来。你想想你自己写了个http server,虽然实际业务中用不到,面试的时候这么说,然后解释一下自己怎么做的,是不是很爽。

8. 看书之前先去豆瓣看书评,不要看国产的一些烂书。多看最佳实践,比如effective系列。你一个学生没啥项目经验,又不看别人的最佳实践,写出来的代码能用?