15 分钟学会 R 语言[译文]

仗着自己有几门语言的基础,我在学新语言时候,都会选择一些快速入门教程。 比如 Learn X in Y minuts 就是我经常光顾的站点。

前段时间,小柒在用 R 写数据分析脚本,我就建议她把 Learn X in Y minuts 里面的 R 语言教程翻译出来。话说 Learn X in Y minuts 里面的中文贡献还是非常多的,赞。

Learn X in Y minuts 的源码托管在 Github。 小柒被我逼着把这篇 R 语言教程 翻译到 R 语言教程中文版

下面是译文,有不妥的地方可以留言或者直接去 Github 上面 Pull request。


R 是一门统计语言。它有很多数据分析和挖掘程序包。可以用来统计、分析和制图。 你也可以在 LaTeX 文档中运行 R 命令。

more ...

读《大规模Web服务开发技术》

年前看了这本书《大规模Web服务开发技术》,当时给的评价是:

很好,让我这个渣渣看的很感动,数据翔实,经历可靠,翻译的也不错,我给 4.2 分

现在经历过 Python / Django / 烂代码的阵痛,开始有更多的想法, 在整理这些粗糙的想法之前,我又把这本书翻了一遍,写个流水帐读书笔记。

大规模Web服务开发技术

《大规模Web服务开发技术》@豆瓣http://book.douban.com/subject/6758780/

规模

小规模 / 大规模 / 超大规模的侧重点各不相同:保持扩展性/保持冗余/低成本运维/开发合作方便

内存、磁盘、负载

内存快,磁盘慢,IO 速度的差异

数据分布式

  1. 使用局部分布式,热数据独立出来。
  2. Partition 分布式,按模块分割数据。
  3. 按 ID 分割,比如 a-g, h-z
  4. 按访问类型,一般请求 / feed / 图像(#毒药计划的原理)
more ...

服务器 Push 技术

服务器 Push 技术表示服务器可以主动推送消息给客户端浏览器。

实现方式

  • Comet
    • Ajax 轮询
    • iframe / htmlfile
    • script tag (不中断的连续请求)
    • Flash 通讯
  • WebSocket

Comet 本意是彗星,彗星尾巴痕迹很像长连接工作方式,所以 Comet 指代长连接。 在 Ajax 轮询的分类上,存在一些分歧,这里我把轮询认为一种 Comet 方式。

ps:「长连接」在一些场景下,是另外一种意义「HTTP: Keep alive」。不在本文讨论的范围中。

参考链接:

more ...

再读《重构》

Martin Fowler 的「重构-改善既有代码的设计」这本书,是我大学老师推荐给我的。 当时我在撰写代码过程中,发现当代码量到某个数量级时候(1000+行), 就会逐渐失去对代码的控制能力。 昆哥推荐了两本书「UML 和模式应用」和「重构」这本书。

Refactory

这本书是2年前购买的,可惜以我当时的代码感知和撰写能力,看起来颇为吃力。 半途就看得云里雾里而中断了。最近我又重新拾起这本书, 将书中所写的境况与我这两年多来遇到的问题相互印证,才感受到这本经典的力量。

Martin 其人:

ThoughtWorks 的首席科学家,当今世界软件开发领域最具影响力的五位大师之一。 他在 UML 推广普及、领域建模、企业应用开发和敏捷方法等方面建树卓著,被称为软件开发的教父。

大学时候有段时间我对 Martin 的敏捷非常痴迷。现在对技术的选择没以前那么冲动了, 但是毫不妨碍我对 Martin 的敬仰之情。

1. 重构原则

1.1. 重构的定义

对软件内部结构的一种调整,目的是在不改变 …

more ...

《卓有成效的程序员》读后感

卓有成效的程序员

《卓有成效的程序员》,上次在京东半价买了这本书,一直没来得及看, 前几周在地铁上把这本书看完了。

说实话,书里面的观点我很赞同,但是没有觉得惊艳, 因为我本身已经在尝试实践这些观点。

书中的这些观点有如下:

  • 加速法则:减少输入次数,用快捷键/方法启用常用操作
  • 专注法则:集中注意力处理工作,避免额外的信息干扰
  • 自动化法则:贯彻“懒”的原则,减少重复劳动
  • 规范性法则:DRY
  • 书中第二部分是撰写代码时候的一些意识,这些我就不复述了, 是比较常见的软件工程思想。这些思想由ThoughWorks的咨询师娓娓道来也是值得一看的。

我觉得这本书在学完第一门语言/数据结构/操作系统之后就可以开始阅读。 也就是学生在大三-大四阶段阅读,会对代码撰写规范和风格形成大有帮助。

more ...

char nchar varchar nvarchar 区别

在开发时候,发现数据库的一个字段用的是nchar(16),让我感觉很奇怪,我知道nvarchar可以变长,nchar会用空格填充,这在存取时候需要Trim( )操作,所以我一直不用nchar。而现在在产品中发现nchar的使用,不由觉得很奇怪。

私底下认为是效率的问题,一番Google之后发现一段文章详述了几种数据库文字类型存储的差异。

原文出处:char nchar varchar nvarchar 区别 - Rainbow - 博客园

联机帮助上的:

char(n)

定长

索引效率高 程序里面使用trim去除多余的空白

n 必须是一个介于 1 和 8,000 之间的数值,存储大小为 n 个字节

varchar(n)

变长

效率没char高 灵活

n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度 …

more ...

正则表达式中的零宽断言

这文是上个月开始写的,本来想深入的分析一下零宽断言,可惜工作一直忙,现在又要去转战DWR…OMG~~

起因

将要上线的系统中有一个字符规则:“13位的字符串,其中有8位连续数字”,需要用这则表达式对这个字符串进行判断。而我之前对正则的认识仅仅停留在匹配固定的字符上 ,对这个问题一筹莫展。

这时候热心的小邪出现了,我在他的博客 邪罗刹的菠萝阁 留下这个问题

image

小邪很热心的撰写了一篇文章给出回答:一个杯具和一个洗具与最近学习手记 : 邪罗刹的菠萝阁

解答

核心字符串如下: ‘/^(?!(.?d){9,})(?!(.?D){6,}).{13}$/’;

小邪的文章给了很详细的解答,比我自己解释要好得多~我就索性copy过来,如下:

小邪是这个样子解答的,首先两边的斜杠是 Perl 正则式的要求。

然后两边的 ^ 和 $ 用来表示对应的是字符串的开始和结束。

接着.{13},. 表示除了换行以外的所有字符,13 规定了匹配长度。

我们这里前面用了两次零宽断言,第一次,(?!exp)这里的 exp …

more ...

Oracle PL/SQL编程规范

学习PL/SQL不可避免遇到规范的问题,这里转载一篇比较精的文章。

当然,各个公司和个人有自己的风格和规范,甚至Oracle官方的教程代码也没有完全遵守这些规则,这里只是一个推荐和介绍。

来源:Oracle PL/SQL编程规范指南 - 51CTO.COM

更多参考:SQL,PL/SQL编程规范 - PL/SQL - IT民工杂谈

*****分割线,Google真汉子*****

一、PL/SQL编程规范之大小写

就像在SQL中一样,PL / SQL中是不区分大小写的。其一般准则如下:

关键字(BEGIN, EXCEPTION, END, IF THEN ELSE,LOOP, END LOOP)、数据类型(VARCHAR2, NUMBER)、内部函数(LEAST, SUBSTR)和用户定义的子程序(procedures, functions,packages),使用大写 …

more ...

python+django MTV框架 和php MVC框架

首先,祝福祖国60华诞,我爱这个国家。

刚才在GR读到Here Comes The SunA shorten url app,其中提到了Python下Django框架的一些问题,我很感兴趣,搜索了一下MTV模型,资料很少。但有一篇我读后很有启发,现在转载如下。

原文链接:python+django MTV框架 和php MVC框架的不同之处 - PHP+MYSQL+APACHE - ThinkPHP官方论坛

作者:乔峰

******************残酷的分割线*****************

python+django MTV框架 和php MVC框架的不同之处

最近学习了python语言和djangoMTV框架,感觉用的很爽啊。这里给大家粗略的介绍一下。

Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的设计模式,即模型M,模版T和视图控制器V。它最初是被开发来用于管理劳伦斯出版 集团旗下的一些以新闻内容为主的网站的。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的 …

more ...

编码: ASCII(ANSI), GB-2312, UNICODE, UTF-8,UTF-16

ASCII字符集

7位的编码方案,总共表示128个字符,其中包括了大小写英文字母、数字、标点符号等常用字符。英语世界已经足够应付。

ISO-8859-1字符集

也称ISO-Latin字符集,它扩展了ASCII字符集,用到了8bit字节里的最高一位,这样它就有256个字符,前128个字符和ASCII字符集相同 。有了ISO-Latin字符集,西方世界的一些其它语言,如西班牙语、法语、德语、意大利语都够用了。

GB系列字符集(GB2312,GBK,GB18030)

由于一个字节是无论如何也表达不了哪怕是最长用的汉字字符集的,所以为了用计算机存储汉字,必须使用多个字节。

多字节字符集就是使用可变长的编码长度来编码字符,有的字符用一个字节编码,比如ASCII字符,有的字符用两个字节编码,比如汉字。在VC里,多字节字符集等同于双 字节字符集,VC不支持多于2个字节编码长度的字符。GB系列的字符集和ISO-Latin字符集一样,前128个字符和ASCII字符集相同。GB系列字符集是兼容 的,相同的中文字符在这3个字符集里有相同的编码。GB2312和GBK一个字符最多2个字节表示,GB18030可多达4个字节。在这种编码里表示汉字时,需要一个 leading byte,它总是大于127,这个字节的含义是说明它和后面的字节(们)一起表示一个字符 …

more ...