Pages: 18/282 First page Previous page 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Next page Final page [ View by Articles | List ]
Dec 7

本文献给所有爱思考,爱阅读的人

前言

        
  • 最近去影院看了《星际穿越》,很棒。有种说法是:全体观众都看跪了,一部分是因为影片太棒了,跪了。一部分则是完全没看明白,跪了。影片中出现了牛顿定律相对论虫洞黑洞等概念,而且对这些概念的解释也是点到为止,有些概念甚至没有做任何说明,这样对不爱理科的文科生来说确实有些吃力。次日在路上一对情侣关于相对论的对话,也是让我跪了,决定拿起键盘,站在无数巨人的肩膀上,宣传科学。同时也督促那些萌妹子,碰到这样忽悠你的男生,能分就分了吧,O(∩_∩)O哈哈~
  •     
  • 相对论不是造原子弹的理论,也不是让我们高不可攀、距离我们无比遥远的理论。恰恰相反,他是我们可以理解的理论,也是和我们的世界息息相关的理论
  •     
  • 定位:只要对知识有渴望的人类都能看懂(如果有萌妹子被追求者拉着去看高智商的《星际穿越》,之后对您进行天马行空地忽悠,然后您对他产生崇拜感,并最后把您忽悠到手,如果您有这样的经历,那本文更是为您量身打造),本文力求通俗易懂,且不会对电影剧透,只是传播相对论相关的知识,目标就是传播知识,让所有人了解相对论。
  •     
  • 既然是科学,严谨必不可少,由于笔者知识有限,出现差错在所难免,所以本文也开启了标注权限,读者可以对文章进行在线标注,欢迎批评斧正,欢迎吐槽,同时可以小杨同志的微博进行交流。这么高深的理论和盖房子、做饭是不一样的,后者可以通过自己实战来总结,对于相对论我没有任何数学公式的推导或者实验的经历,所有的理论成就都归物理学家,而我只是学习归纳总结。为了更好地理解相对论,本文决定从经典物理入手,对其提出质疑,然后引出主题相对论。关系不是特别紧密的知识点将不再赘述,也希望读者能从头开始读,不要直接跳到相对论的章节,前面的铺垫真的很有必要。读完本文之后,如果萌妹子不再被骗,那绝对是令人振奋的事儿(我太邪恶了);如果您真的对相对论有所了解,并且可以解释最基本的因果关系,那我的努力真的没有白费;如果您真的明白了,并且通过扩展阅读对相对论有了更深的了解,并且加入到了科普的行列,在下感激不尽!!
  •     
  • 感谢ghosert提供了如此伟大的作业部落。更需要感谢科普斯坦汪洁《时间的形状》[^shijian],相比《时间简史》《黑洞与时间弯曲》[^xiangduilun],这是最棒的相对论入门书,也是本文的主要知识来源。
Nov 30

2014 十月底在巴黎举行的ng-europe大会上,Angular团队为与会者介绍了即将到来的AngularJS 2.0版本的细节。新版本对1.x版本进行了重大的颠覆,当前还没有任何迁移指南,此外它还是基于一个名为AtScript的新语言进行开发的。

对于熟悉Angular 1.X版本的开发者来说,他们将看到一个完全不同的框架,并且必须学习一种新的架构。在一堂关于版本2.0的变更的讲座中,Igor Minar 和 Tobias Bosch介绍了新的模板语法:

http://cdn3.infoqstatic.com/styles/i/green_border.jpg) -29px 0px repeat-y rgb(244, 244, 244);"><input type="text" [value]="firstName"><button (click)="addPerson()">Add</button>

这种新语法将数据绑定到元素的属性(property)上,而不是特性(attribute)上。这就允许你使用以下语法:

http://cdn3.infoqstatic.com/styles/i/green_border.jpg) -29px 0px repeat-y rgb(244, 244, 244);"><input type="checkbox" [checked]="someProperty">

看上去类似于标准的HTML,但这个复选框元素不会暴露出checked特性。新的模板引擎将数据绑定到元素的属性上,即使这些属性并非由DOM所暴露出的特性。

与新架构引起的其它剧变相比,新的模板语法只是一个相对较小的改动。与会者之一的Michael Bromley描述了一些新版本的一些破坏性改动,版本2.0取消了1.X中的以下概念

        
  • 控制器(Controller)
  •     
  • (Directive定义对象)
  •     
  • $scope
  •     
  • angular.module
  •     
  • jqLite
Nov 30

 随着redis的发展,越来越多的架构用它取代了memcached作为缓存服务器的角色,它有几个很突出的特点:

1. 除了Hash,还提供了Sorted Set, List等数据结构
2. 可以持久化到磁盘
3. 支持cluster (3.0)

它的性能和memcached不相上下,再加上流行的其他组件(比如队列)也会用到redis,从架构简单出发,已经没有必要混用redis和memcached了。

写篇短文介绍一下用redis作为缓存服务器配置时候需要注意几个点。

Redis配置

作为缓存服务器,如果不加以限制内存的话,就很有可能出现将整台服务器内存都耗光的情况,可以在redis的配置文件里面设置:

# 限定最多使用1.5GB内存maxmemory 1536mb

如果内存到达了指定的上限,还要往redis里面添加更多的缓存内容,需要设置清理内容的策略:

# 设置策略为清理最少使用的key对应的数据maxmemory-policy allkeys-lru

清理策略有多种,redis的官方文档有一篇很详细的说明: http://redis.io/topics/lru-cache

Redis监控

redis提供了INFO这个命令,能够随时监控服务器的状态,只用telnet到对应服务器的端口,执行命令即可:

telnet localhost 6379info

在输出的信息里面有这几项和缓存的状态比较有关系:

keyspace_hits:14414110keyspace_misses:3228654used_memory:433264648expired_keys:1333536evicted_keys:1547380

通过计算hits和miss,我们可以得到缓存的命中率:14414110 / (14414110 + 3228654) = 81% ,一个缓存失效机制,和过期时间设计良好的系统,命中率可以做到95%以上,对于整体性能提升是很大的。
used_memory,expired_keys,evicted_keys这3个信息的具体含义,redis的官方也有一篇很详细的说明:http://redis.io/commands/info

有个ruby gem叫redis-stat,它利用INFO命令展现出更直观的信息报表,推荐:
https://github.com/junegunn/redis-stat

 

 

优化Rails的缓存配置

Rails在用redis作为缓存的时候,配置很简单,官方文档是用schema的方式来写的:

config.cache_store = :redis_store, "redis://localhost:6379/0/cache"

由于实在太简单了,很多人就直接用这个默认设置了,但实际上还有一些很有用的参数可以通过hash options的方式来写,比如压缩超过32K的数据压缩以后再放入缓存,再比如设置默认所有的key失效时间为8小时:

config.cache_store = :redis_store, {:host => 'redis.server', :port => 6379, :compress => true, :expires_in => 8.hours, :compress_threshold => 32.kilobytes}

用一个实际案例来作为例子,一台redis缓存服务器在优化配置之前,占用4.2G左右的内存,缓存命中率在70%左右。
我们先在服务器上执行BGSAVE命令,将内存dump下来,然后用 https://github.com/sripathikrishnan/redis-rdb-tools 这个工具,将dump的数据,解析成csv文件:

rdb -c memory /var/redis/6379/dump.rdb > memory.csv

用excel打开分析,按key进行排序和统计,我们可以看到哪一些类型的缓存在服务器上最多,调整这个类型缓存的失效时间和失效机制,再通过redis-stat来观察进行微调,提高整体的命中率。
通过分析占用内存比较大的key,发现有30%左右的相同类型key,用了95%的内存,这些缓存大部分是html的片段缓存,通过设置compress_threshold和compress参数,让整体内存占用从4.2G,下降到了1.3G。

Nov 30
Ruby
Quotation

ruby  [英]'ru:bɪ
[美]ˈrubi
n.  红宝石,红玉;红宝石色,深红色;英细铅字;红葡萄酒
adj.  红宝石的;红宝石色的
vt.  使带红宝石色;把…弄红;把…涂染成红色

一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。
Highslide JS
Ruby 是开源的,在Web 上免费提供,但需要一个许可证。[1]
Ruby 是一种通用的、解释的编程语言。
Ruby 是一种真正的面向对象编程语言。
Ruby 是一种类似于 Python 和 Perl 的服务器端脚本语言。
Ruby 可以用来编写通用网关接口(CGI)脚本。
Ruby 可以被嵌入到超文本标记语言(HTML)。
Ruby 语法简单,这使得新的开发人员能够快速轻松地学习 Ruby。
Ruby 与 C++ 和 Perl 等许多编程语言有着类似的语法。
Ruby 可扩展性强,用 Ruby 编写的大程序易于维护。
Ruby 可用于开发的 Internet 和 Intranet 应用程序。
Ruby 可以安装在 Windows 和 POSIX 环境中。
Ruby 支持许多 GUI 工具,比如 Tcl/Tk、GTK 和 OpenGL。
Ruby 可以很容易地连接到 DB2、MySQL、Oracle 和 Sybase。
Ruby 有丰富的内置函数,可以直接在 Ruby 脚本中使用。
Quotation

完全面向对象
在Ruby语言中,任何东西都是对象,包括其他语言中的基本数据类型,比如整数
变量没有类型
Ruby的变量可以保存任何类型的数据。
任何东西都有值
不管是数学或者逻辑表达式还是一个语句,都会有值。
ruby语言很优雅,可以做到不需要注释就可以读懂。


Ruby的变量有一定的规则,以$开头的一定是全局变量,以@开头的都是实例变量,而以@@开头的是类变量。常数则以大写字母开头;这种方法,对文本编辑器的命令补全很有帮助,如在vim下先键入$及开头字母,再敲击Ctrl+p,则可专门补全本文件以及关联文件中的全局变量,perl与php亦有此优点。
已经定义的类可以在运行时修改
Ruby是动态语言,你可以在程序中修改先前定义过的类。 也可以在某个类的实例中定义该实例特有的方法,这叫做单例方法。

使用Ruby可以写出简短而又功能强大的代码
#下面的方法用来完成两个矩阵的乘积

注:ruby标准库中已包含矩阵库 Matrix
Quotation

语法简单
普通的面向对象功能(类,方法调用等)
特殊的面向对象功能(Mixin,特殊方法等)
操作符重载
错误处理功能
迭代器和闭包
垃圾回收
动态载入(取决于系统架构)
可移植性高.不仅可以运行在多数UNIX上,还可以运行在DOS,Windows,Mac,BeOS等平台上
适合于快速开发,一般开发效率是JAVA的5倍
Nov 26
Highslide JS
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。oAuth是Open Authorization的简写。
阮一峰 在他的博文中对OAuth有很好的描述,下面的附件是他博文的网页存档,也可以直接访问他的页面查看http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
百度百科:http://baike.baidu.com/view/3948029.htm?fr=aladdin
Download ( 284 downloads)

先名词解释一下:

    OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

    REST,即REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。


    OAUTH 场景说明:
Quotation
    M是一个电子商务网站,类型于京东,提供商品在线购物服务。

    W是一个SNS网站,也类型于Weibo。

    U是一个普通的购物者,C有在W网注册用户。
    U想去M网站看上了几样东西,打算购买,发现只能注册用户才能购买,但是U不想注册太多帐号;但是U发现M网站上面支持W的帐号直接登录。点击了带有W网站标示的链接,跳到了W网站,输入了帐号信息,返回到M网站上面,然后M网站自动给U登录(注册)了。在此过程中M一直不知道U的帐号信息,除M网站认为可以公开的信息,然后U完成了余下的购物流程。



    REST场景说明:
Quotation

    M是一个电子商务网站,类型于京东,提供商品在线购物服务。

    B是一个移动设备或者其他的电子商务网站(渠道)。

    B想为M拓展市场,M也同意,于是M为B向其开放数据API,有些是公开API,有些则需要安全登录信息。最终合作成功,B开发了各种移动APP,网站及其他应用。



   OAUTH和REST的区别:

   OAUTH过程中需要U同意后才能M获得W提示信息。REST场景过程中的角色没有U,只需要M同意开放权限即可。



    附上两个php的开源项目

     OAUTH : http://code.google.com/p/oauth-php/

     REST:https://github.com/philsturgeon/codeigniter-restserver
Nov 23
Anthem.net是一种新的AJAX技术,它主要是提供了一个新控件库,库中包含了大量常用控件,如Button、Calendar、CheckBox等等,到目前为止为ASP.NET提供了24种新控件,实用于ASP.NET 1.0 和 ASP.NET 2.0 。
Anthem.net的所有技术都是开源的,源代码下载地址为http://nchc.dl.sourceforge.net/sourceforge/anthem-dot-net/anthem-1.1.0.zip
Anthem.net技术的原理简单介绍:
让每个控件都有独立的信息提交能力,
比如在一个Button的Click事件中
private void Button1_Click(object sender, System.EventArgs e)
{
TextBox1.Text = "OK";
TextBox1.UpdateAfterCallBack = true;
}
运行的页面上,你看不到刷新,TextBox1就改变了。
其实在编译的过程中,由于我们使用的是Anthem.net控件,它会自动产生大量的javascript脚本,来实现异步交互。
那么我们只需要和往常一样在后台中写每个事件下的操作,至于是不是异步交互,我们都不用管了。
不足的是,这个开源技术目前只是1.0版本,目前只有24种可用控件,自定义控件不能直接实现独立提交的接口。
和传统的ajax技术相比,它有以下优点:
1、不需要任何技术升级,以前不会使用ajax技术的人员,按照以往的编程方式就可实现异步交互
2、支持ASP.NET 1.0 和 ASP.NET 2.0
3、开源技术,如果深入研究,也能开发出自己的控件
Anthem.NET的Callback方式。
Nov 16

 http://blog.csdn.net/yanghua_kobe/article/details/17199417

 

 

项目简介

 

这是一个资产管理项目,主要的目的就是实现对资产的无纸化管理。通过为每个资产生成二维码,来联合移动终端完成对资产的审核等。这个项目既提供了Web端的管理界面也提供移动端(Andorid)的资产审核、派发等相关功能。
我们用Node.js构建该项目的Web端以及移动端的Serveice API。

项目主框架:Express 简介

 

 

Express 是一个非常流行的node.js的web框架。基于connect(node中间件框架)。提供了很多便于处理http请求等web开发相关的扩展。
Express简单的结构图:

 

Express的特性:

        
  • 基于Connect构建
  •     
  • 健壮的路由
  •     
  • 提供丰富的HTTP处理方法
  •     
  • 支持众多视图模板引擎(14+)
  •     
  • 内容协商
  •     
  • 专注于提供高性能
  •     
  • 环境基于配置
  •     
  • 快速构建可执行的应用程序
  •     
  • 高测试覆盖率

前端框架简介

Bootstrap

Bootstrap是Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师MarkOtto和JacobThornton合作开发,是一个CSS/HTML框架。Bootstrap是简洁、直观、强悍的前端开发框架,让web开发更迅速、简单。
同时,很多基于Bootstrap的开源插件也让Bootstrap社区更加活跃。
最新的Bootstrap3提供了非常强的定制化特性。包括Less,jQuery插件等。
Bootstrap 为您提供了所有这些基本的模块- Grid、Typography、Tables、Forms、Buttons和Responsiveness。
此外,还有大量其他有用的前端组件,比如Dropdowns、Navigation、Modals、Typehead、Pagination、Carousal、Breadcrumb、Tab、Thumbnails、Headers等等。
有了这些,你可以搭建一个Web 项目,并让它运行地更快速更轻松。
此外,由于整个框架是基于模块的,你可以通过定制你自己的CSS来使得它满足你的特殊需求。
它是基于几种最佳实践,我们认为这是一个很好的开始学习现代Web 开发的时机,一旦你掌握了HTML 和JavaScript/jQuery 的基本知识,你就可以在Web 开发中运用这些知识。

Pages: 18/282 First page Previous page 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Next page Final page [ View by Articles | List ]